zl-code 0.0.29 → 0.0.30

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 (87) hide show
  1. package/dist/bin.mjs +309 -192
  2. package/dist/client/assets/{DiffPanel-tsulV-t0.js → DiffPanel-DPeVDy87.js} +2 -2
  3. package/dist/client/assets/FilePreviewPanel-CoSSgo5p.js +1777 -0
  4. package/dist/client/assets/PreviewPanel-y0Pign2e.js +1 -0
  5. package/dist/client/assets/{angular-html-B4hfmCJp.js → angular-html-C7-uPMFl.js} +1 -1
  6. package/dist/client/assets/{angular-ts-C2k80k6N.js → angular-ts-xNhvCrgW.js} +1 -1
  7. package/dist/client/assets/{apl-DNqpu2W9.js → apl-Cbzu1Nmg.js} +1 -1
  8. package/dist/client/assets/{astro-BK2hVT9q.js → astro-BcXGqCfF.js} +1 -1
  9. package/dist/client/assets/{blade-DN6rmDjV.js → blade-DXoD1tq3.js} +1 -1
  10. package/dist/client/assets/{c-D5f5j_Qx.js → c-ww9DT4H9.js} +1 -1
  11. package/dist/client/assets/{cobol-BJMwkr-1.js → cobol-Uf0pxp3c.js} +1 -1
  12. package/dist/client/assets/{coffee-CeAh-9Qa.js → coffee-CNtx8SYp.js} +1 -1
  13. package/dist/client/assets/{cpp-CoNR-I7i.js → cpp-CNtAvTB0.js} +1 -1
  14. package/dist/client/assets/{crystal-BzulqQXm.js → crystal-B_GNKS-f.js} +1 -1
  15. package/dist/client/assets/{css-C8qqEQAz.js → css-EjGGwsxM.js} +1 -1
  16. package/dist/client/assets/{edge-DDiQaJBP.js → edge-FdFiwuuE.js} +1 -1
  17. package/dist/client/assets/{elixir-CqkRX5se.js → elixir-DDsnq8Pt.js} +1 -1
  18. package/dist/client/assets/{elm-D-Ak7Uuf.js → elm-ZpE4zkBa.js} +1 -1
  19. package/dist/client/assets/{erb-BaHYBNMy.js → erb-B-Z8312X.js} +1 -1
  20. package/dist/client/assets/{fileCommentAnnotations-HmnWWCqP.js → fileCommentAnnotations-BBQH2v2a.js} +1 -1
  21. package/dist/client/assets/{git-rebase-BM3tCX5K.js → git-rebase-CGEmx0LI.js} +1 -1
  22. package/dist/client/assets/{glimmer-js-Dxp43H6G.js → glimmer-js-COOoKt3i.js} +1 -1
  23. package/dist/client/assets/{glimmer-ts-CyIjQWjx.js → glimmer-ts-D1F8OsDX.js} +1 -1
  24. package/dist/client/assets/{glsl-DSrEzxBe.js → glsl-DJH58HGE.js} +1 -1
  25. package/dist/client/assets/{graphql-CRTEzgy6.js → graphql-DiNe2tpe.js} +1 -1
  26. package/dist/client/assets/{hack-Bzalgqzl.js → hack-Dekeh7e5.js} +1 -1
  27. package/dist/client/assets/{haml-BfRnAeIE.js → haml-BVSoeu2x.js} +1 -1
  28. package/dist/client/assets/{handlebars-CQs0rhbU.js → handlebars-k1nk8eCR.js} +1 -1
  29. package/dist/client/assets/{html-CpQ2QAUg.js → html-DL9dLLUO.js} +1 -1
  30. package/dist/client/assets/{html-derivative-ysmGsd5_.js → html-derivative-CUKIwoBz.js} +1 -1
  31. package/dist/client/assets/{http-C88ROAv2.js → http-imAz0kdM.js} +1 -1
  32. package/dist/client/assets/{hurl-DByjE9Tq.js → hurl-DmtXySiF.js} +1 -1
  33. package/dist/client/assets/index-CxcYRXaB.js +577 -0
  34. package/dist/client/assets/index-lDvh6gd9.css +1 -0
  35. package/dist/client/assets/{java-DctzPP6j.js → java-C_iicb65.js} +1 -1
  36. package/dist/client/assets/{javascript-CkjpkDgp.js → javascript-BB2uj7le.js} +1 -1
  37. package/dist/client/assets/{jinja-DiCQkkWB.js → jinja-CN975xAC.js} +1 -1
  38. package/dist/client/assets/{jison-D5jMyA1z.js → jison-DgcPoUOY.js} +1 -1
  39. package/dist/client/assets/{json-EFYaxuvv.js → json-Ddi2d9VD.js} +1 -1
  40. package/dist/client/assets/{jsx-Dr0yRiaR.js → jsx-DYU0gI8H.js} +1 -1
  41. package/dist/client/assets/{julia-ChZidwp6.js → julia-DhqSTpmP.js} +1 -1
  42. package/dist/client/assets/{just-BEml4liD.js → just-h3se1pga.js} +1 -1
  43. package/dist/client/assets/{latex-Dfj8_m7Q.js → latex-BS-rXA6Q.js} +1 -1
  44. package/dist/client/assets/{liquid-DgqZo45B.js → liquid-DHdObD9D.js} +1 -1
  45. package/dist/client/assets/{lua-CcmaHiBA.js → lua-BGB4Nt27.js} +1 -1
  46. package/dist/client/assets/{marko-DOPk6Il-.js → marko-Bx2nm-_y.js} +1 -1
  47. package/dist/client/assets/{mdc-BTTPgMof.js → mdc-1G1Pxvit.js} +1 -1
  48. package/dist/client/assets/{nginx-Cm8kmfAJ.js → nginx-BmU1aBWa.js} +1 -1
  49. package/dist/client/assets/{nim-wiz8yoEt.js → nim-45VoVczs.js} +1 -1
  50. package/dist/client/assets/{perl-ByZR7XC0.js → perl-DGeP60Eh.js} +1 -1
  51. package/dist/client/assets/{php-Dkz8UNzZ.js → php-BOvK9gQB.js} +1 -1
  52. package/dist/client/assets/{pug-DvwMZlYj.js → pug-C3v1lq7N.js} +1 -1
  53. package/dist/client/assets/{qml-BGTv1Bri.js → qml-D4WEnAWk.js} +1 -1
  54. package/dist/client/assets/{r-BvdoDiGs.js → r-chkD_kWf.js} +1 -1
  55. package/dist/client/assets/{razor-CDbQtNI-.js → razor-D5zg9w6m.js} +1 -1
  56. package/dist/client/assets/{regexp-Cg8wASZF.js → regexp-Br_6RjDB.js} +1 -1
  57. package/dist/client/assets/{rst-CGJGl0XM.js → rst-BozCtIg9.js} +1 -1
  58. package/dist/client/assets/{ruby-BV5Xv3Ba.js → ruby-CGjgsblc.js} +1 -1
  59. package/dist/client/assets/{sas-dynhi3mz.js → sas-CVxWda8Q.js} +1 -1
  60. package/dist/client/assets/{scss-AkI8EyHf.js → scss-DeFuqIK_.js} +1 -1
  61. package/dist/client/assets/{shellscript-CWCjWzzV.js → shellscript-C6Q7qkUD.js} +1 -1
  62. package/dist/client/assets/{shellsession-C5QB2cRQ.js → shellsession-WLo6A5mg.js} +1 -1
  63. package/dist/client/assets/{soy-C1TnCrD_.js → soy-BcVC4qYp.js} +1 -1
  64. package/dist/client/assets/{sql-BSlHLxvN.js → sql-ZjNem-IK.js} +1 -1
  65. package/dist/client/assets/{stata-DQWl1ugW.js → stata-BZ73C6JZ.js} +1 -1
  66. package/dist/client/assets/{surrealql-BpisvbXS.js → surrealql-CR43JrBJ.js} +1 -1
  67. package/dist/client/assets/{svelte-NmZYVIhS.js → svelte-BpXqMiBr.js} +1 -1
  68. package/dist/client/assets/{templ-CNf2Z3RO.js → templ-DSw5UMTq.js} +1 -1
  69. package/dist/client/assets/{tex-DntGVni7.js → tex-DaHKjnWo.js} +1 -1
  70. package/dist/client/assets/textarea-nMqSOy-S.js +44 -0
  71. package/dist/client/assets/{ts-tags-CsnM6KgL.js → ts-tags-SZ8IZlNT.js} +1 -1
  72. package/dist/client/assets/{tsx-_mrOymnM.js → tsx-CwwA7B6A.js} +1 -1
  73. package/dist/client/assets/{twig-HkqeGEpv.js → twig-B_ebiDih.js} +1 -1
  74. package/dist/client/assets/{typescript-3OUGMlDk.js → typescript-DO3j7XZx.js} +1 -1
  75. package/dist/client/assets/{vue-DfZZRv3m.js → vue-B8Sj9crw.js} +1 -1
  76. package/dist/client/assets/{vue-html-LDEwJDT-.js → vue-html-DOid4MmJ.js} +1 -1
  77. package/dist/client/assets/{vue-vine-DsKt9e5E.js → vue-vine-CZ-OLWJd.js} +1 -1
  78. package/dist/client/assets/{xml-Dev0NAD_.js → xml-CQ7Xk9af.js} +1 -1
  79. package/dist/client/assets/{xsl-Bafi7lpn.js → xsl-CNh6rw4f.js} +1 -1
  80. package/dist/client/assets/{yaml-BakHNYXp.js → yaml-BkM14TZe.js} +1 -1
  81. package/dist/client/index.html +4 -4
  82. package/package.json +1 -1
  83. package/dist/client/assets/FilePreviewPanel-XaXCHGIv.js +0 -1777
  84. package/dist/client/assets/PreviewPanel-Cdl736_J.js +0 -1
  85. package/dist/client/assets/index-Bv8spXkZ.css +0 -1
  86. package/dist/client/assets/index-zd5b5MHc.js +0 -577
  87. package/dist/client/assets/textarea-z0DHLDaT.js +0 -44
package/dist/bin.mjs CHANGED
@@ -115,6 +115,7 @@ import * as RcMap from "effect/RcMap";
115
115
  import { FileFinder } from "@ff-labs/fff-node";
116
116
  import * as LayerMap from "effect/LayerMap";
117
117
  import * as Order from "effect/Order";
118
+ import * as SubscriptionRef from "effect/SubscriptionRef";
118
119
  import { McpSchema, McpServer, Tool, Toolkit } from "effect/unstable/ai";
119
120
  import * as FetchHttpClient$1 from "effect/unstable/http/FetchHttpClient";
120
121
  import * as Headers$1 from "effect/unstable/http/Headers";
@@ -133,7 +134,7 @@ const closeServer = (server) => {
133
134
  * NetService - Service tag for startup networking helpers.
134
135
  */
135
136
  var NetService = class extends Context.Service()("@zl-tools/shared/Net/NetService") {};
136
- const make$77 = () => {
137
+ const make$78 = () => {
137
138
  /**
138
139
  * Returns true when a TCP server can bind to {host, port}.
139
140
  * `EADDRNOTAVAIL` is treated as available so IPv6-absent hosts don't fail
@@ -242,10 +243,10 @@ const make$77 = () => {
242
243
  })
243
244
  };
244
245
  };
245
- const layer$73 = Layer.sync(NetService, make$77);
246
+ const layer$74 = Layer.sync(NetService, make$78);
246
247
  //#endregion
247
248
  //#region package.json
248
- var version = "0.0.28";
249
+ var version = "0.0.30";
249
250
  //#endregion
250
251
  //#region ../../packages/contracts/src/baseSchemas.ts
251
252
  const TrimmedString = Schema$1.String.pipe(Schema$1.decodeTo(Schema$1.String, SchemaTransformation.transformOrFail({
@@ -637,7 +638,15 @@ const ExecutionEnvironmentCapabilities = Schema$1.Struct({
637
638
  /** Server can improve composer drafts through an isolated text-generation
638
639
  request (`assist.promptEnhancement.*`). Absent means the composer does
639
640
  not offer prompt improvement. */
640
- promptEnhancement: Schema$1.optionalKey(Schema$1.Boolean)
641
+ promptEnhancement: Schema$1.optionalKey(Schema$1.Boolean),
642
+ /** Server publishes its opt-out npm release advisory (`serverVersion.*`).
643
+ Absent means the WebUI must not subscribe or show an update notice. */
644
+ serverVersionAdvisory: Schema$1.optionalKey(Schema$1.Boolean),
645
+ /** Server accepts an explicit user-triggered npm advisory refresh
646
+ (`serverVersion.refreshAdvisory`). Deliberately separate from
647
+ `serverVersionAdvisory`: servers that shipped the stream first do not
648
+ implement this later unary method. */
649
+ serverVersionManualRefresh: Schema$1.optionalKey(Schema$1.Boolean)
641
650
  });
642
651
  const ExecutionEnvironmentDescriptor = Schema$1.Struct({
643
652
  environmentId: EnvironmentId,
@@ -6619,6 +6628,7 @@ const AgentProcessPrioritySettings = Schema$1.Struct({
6619
6628
  const DEFAULT_AUTOMATIC_GIT_FETCH_INTERVAL = Duration.seconds(30);
6620
6629
  const ServerSettings = Schema$1.Struct({
6621
6630
  enableAssistantStreaming: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(false))),
6631
+ enableServerVersionChecks: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(true))),
6622
6632
  enableProviderUpdateChecks: Schema$1.Boolean.pipe(Schema$1.withDecodingDefault(Effect.succeed(true))),
6623
6633
  automaticGitFetchInterval: Schema$1.DurationFromMillis.pipe(Schema$1.withDecodingDefault(Effect.succeed(Duration.toMillis(DEFAULT_AUTOMATIC_GIT_FETCH_INTERVAL)))),
6624
6634
  defaultThreadEnvMode: ThreadEnvMode.pipe(Schema$1.withDecodingDefault(Effect.succeed("local"))),
@@ -6710,6 +6720,7 @@ const OpenCodeSettingsPatch = Schema$1.Struct({
6710
6720
  });
6711
6721
  const ServerSettingsPatch = Schema$1.Struct({
6712
6722
  enableAssistantStreaming: Schema$1.optionalKey(Schema$1.Boolean),
6723
+ enableServerVersionChecks: Schema$1.optionalKey(Schema$1.Boolean),
6713
6724
  enableProviderUpdateChecks: Schema$1.optionalKey(Schema$1.Boolean),
6714
6725
  automaticGitFetchInterval: Schema$1.optionalKey(Schema$1.DurationFromMillis),
6715
6726
  defaultThreadEnvMode: Schema$1.optionalKey(ThreadEnvMode),
@@ -6902,6 +6913,33 @@ const ServerProviderVersionAdvisory = Schema$1.Struct({
6902
6913
  checkedAt: Schema$1.NullOr(IsoDateTime),
6903
6914
  message: Schema$1.NullOr(TrimmedNonEmptyString)
6904
6915
  });
6916
+ const ServerVersionAdvisoryStatus = Schema$1.Literals([
6917
+ "disabled",
6918
+ "unknown",
6919
+ "current",
6920
+ "behind_latest"
6921
+ ]);
6922
+ /**
6923
+ * A display-only update advisory for the independently installed server.
6924
+ * Versions here must never be used as a client/server compatibility gate;
6925
+ * that boundary is `ExecutionEnvironmentDescriptor.protocolVersion`.
6926
+ */
6927
+ const ServerVersionAdvisory = Schema$1.Struct({
6928
+ status: ServerVersionAdvisoryStatus,
6929
+ currentVersion: TrimmedNonEmptyString,
6930
+ latestVersion: Schema$1.NullOr(TrimmedNonEmptyString),
6931
+ updateCommand: Schema$1.NullOr(TrimmedNonEmptyString),
6932
+ checkedAt: Schema$1.NullOr(IsoDateTime)
6933
+ });
6934
+ var ServerVersionCheckError = class extends Schema$1.TaggedErrorClass()("ServerVersionCheckError", { reason: Schema$1.Literals([
6935
+ "invalid_current_version",
6936
+ "registry_unavailable",
6937
+ "invalid_registry_version"
6938
+ ]) }) {
6939
+ get message() {
6940
+ return "Could not check the npm registry for a Zettai Labs Code server update.";
6941
+ }
6942
+ };
6905
6943
  const ServerProviderUpdateStatus = Schema$1.Literals([
6906
6944
  "idle",
6907
6945
  "queued",
@@ -8664,6 +8702,8 @@ const WS_METHODS = {
8664
8702
  serverRemoveKeybinding: "server.removeKeybinding",
8665
8703
  serverGetSettings: "server.getSettings",
8666
8704
  serverUpdateSettings: "server.updateSettings",
8705
+ subscribeServerVersionAdvisory: "serverVersion.subscribeAdvisory",
8706
+ serverRefreshVersionAdvisory: "serverVersion.refreshAdvisory",
8667
8707
  userStateSetThreadPinned: "userState.setThreadPinned",
8668
8708
  userStateMarkThreadRead: "userState.markThreadRead",
8669
8709
  userStateMarkThreadUnread: "userState.markThreadUnread",
@@ -9185,6 +9225,17 @@ const WsSubscribeServerLifecycleRpc = Rpc.make(WS_METHODS.subscribeServerLifecyc
9185
9225
  error: EnvironmentAuthorizationError,
9186
9226
  stream: true
9187
9227
  });
9228
+ const WsSubscribeServerVersionAdvisoryRpc = Rpc.make(WS_METHODS.subscribeServerVersionAdvisory, {
9229
+ payload: Schema$1.Struct({}),
9230
+ success: ServerVersionAdvisory,
9231
+ error: EnvironmentAuthorizationError,
9232
+ stream: true
9233
+ });
9234
+ const WsServerRefreshVersionAdvisoryRpc = Rpc.make(WS_METHODS.serverRefreshVersionAdvisory, {
9235
+ payload: Schema$1.Struct({}),
9236
+ success: ServerVersionAdvisory,
9237
+ error: Schema$1.Union([ServerVersionCheckError, EnvironmentAuthorizationError])
9238
+ });
9188
9239
  const WsSubscribeAuthAccessRpc = Rpc.make(WS_METHODS.subscribeAuthAccess, {
9189
9240
  payload: Schema$1.Struct({}),
9190
9241
  success: AuthAccessStreamEvent,
@@ -9197,7 +9248,7 @@ const WsSubscribeProviderUsageRpc = Rpc.make(WS_METHODS.subscribeProviderUsage,
9197
9248
  error: Schema$1.Union([ProviderUsageError, EnvironmentAuthorizationError]),
9198
9249
  stream: true
9199
9250
  });
9200
- const WsRpcGroup = RpcGroup.make(WsAnalyticsGetTurnRpc, WsAnalyticsGetThreadRpc, WsAnalyticsGetThreadDigestRpc, WsAnalyticsGetThreadTurnBadgesRpc, WsAnalyticsGetOverviewRpc, WsAnalyticsGetActivityRpc, WsStarterSuggestionsGetRpc, WsPromptEnhancementGenerateRpc, WsPromptEnhancementCancelRpc, WsServerProbeRpc, WsServerGetConfigRpc, WsServerResetProductAnalyticsIdentityRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsServerRemoveKeybindingRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsUserStateSetThreadPinnedRpc, WsUserStateMarkThreadReadRpc, WsUserStateMarkThreadUnreadRpc, WsServerDiscoverSourceControlRpc, WsServerGetTraceDiagnosticsRpc, WsServerGetProcessDiagnosticsRpc, WsServerGetProcessResourceHistoryRpc, WsServerSignalProcessRpc, WsProviderUsageGetRpc, WsProviderUsageGetConfigurationRpc, WsProviderUsageUpdateInstanceRpc, WsProviderUsageUpsertSourceRpc, WsProviderUsageDeleteSourceRpc, WsProviderUsageTestSourceRpc, WsProviderUsageRefreshRpc, WsCloudGetRelayClientStatusRpc, WsCloudInstallRelayClientRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsProjectsListEntriesRpc, WsProjectsReadFileRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsAssetsCreateUrlRpc, WsAssetsCreateRemoteImageUrlRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsReviewGetDiffPreviewRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsPreviewOpenRpc, WsPreviewNavigateRpc, WsPreviewResizeRpc, WsPreviewPresentRpc, WsPreviewRefreshRpc, WsPreviewHistoryRpc, WsPreviewHumanInputRpc, WsPreviewCloseRpc, WsPreviewListRpc, WsPreviewReportStatusRpc, WsPreviewAutomationConnectRpc, WsPreviewAutomationRespondRpc, WsPreviewAutomationFocusHostRpc, WsSubscribePreviewEventsRpc, WsSubscribePreviewFramesRpc, WsSubscribeDiscoveredLocalServersRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsSubscribeProviderUsageRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationSearchThreadMessagesRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc);
9251
+ const WsRpcGroup = RpcGroup.make(WsAnalyticsGetTurnRpc, WsAnalyticsGetThreadRpc, WsAnalyticsGetThreadDigestRpc, WsAnalyticsGetThreadTurnBadgesRpc, WsAnalyticsGetOverviewRpc, WsAnalyticsGetActivityRpc, WsStarterSuggestionsGetRpc, WsPromptEnhancementGenerateRpc, WsPromptEnhancementCancelRpc, WsServerProbeRpc, WsServerGetConfigRpc, WsServerResetProductAnalyticsIdentityRpc, WsServerRefreshProvidersRpc, WsServerUpdateProviderRpc, WsServerUpsertKeybindingRpc, WsServerRemoveKeybindingRpc, WsServerGetSettingsRpc, WsServerUpdateSettingsRpc, WsUserStateSetThreadPinnedRpc, WsUserStateMarkThreadReadRpc, WsUserStateMarkThreadUnreadRpc, WsServerDiscoverSourceControlRpc, WsServerGetTraceDiagnosticsRpc, WsServerGetProcessDiagnosticsRpc, WsServerGetProcessResourceHistoryRpc, WsServerSignalProcessRpc, WsProviderUsageGetRpc, WsProviderUsageGetConfigurationRpc, WsProviderUsageUpdateInstanceRpc, WsProviderUsageUpsertSourceRpc, WsProviderUsageDeleteSourceRpc, WsProviderUsageTestSourceRpc, WsProviderUsageRefreshRpc, WsCloudGetRelayClientStatusRpc, WsCloudInstallRelayClientRpc, WsSourceControlLookupRepositoryRpc, WsSourceControlCloneRepositoryRpc, WsSourceControlPublishRepositoryRpc, WsProjectsListEntriesRpc, WsProjectsReadFileRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsShellOpenInEditorRpc, WsFilesystemBrowseRpc, WsAssetsCreateUrlRpc, WsAssetsCreateRemoteImageUrlRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsVcsListRefsRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsReviewGetDiffPreviewRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsPreviewOpenRpc, WsPreviewNavigateRpc, WsPreviewResizeRpc, WsPreviewPresentRpc, WsPreviewRefreshRpc, WsPreviewHistoryRpc, WsPreviewHumanInputRpc, WsPreviewCloseRpc, WsPreviewListRpc, WsPreviewReportStatusRpc, WsPreviewAutomationConnectRpc, WsPreviewAutomationRespondRpc, WsPreviewAutomationFocusHostRpc, WsSubscribePreviewEventsRpc, WsSubscribePreviewFramesRpc, WsSubscribeDiscoveredLocalServersRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeServerVersionAdvisoryRpc, WsServerRefreshVersionAdvisoryRpc, WsSubscribeAuthAccessRpc, WsSubscribeProviderUsageRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationSearchThreadMessagesRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc);
9201
9252
  //#endregion
9202
9253
  //#region ../../packages/shared/src/oauthScope.ts
9203
9254
  const OAUTH_SCOPE_TOKEN = /^[\u0021\u0023-\u005b\u005d-\u007e]+$/u;
@@ -9264,8 +9315,8 @@ var ServerConfig = class extends Context.Service()("@zl-tools/server/config/Serv
9264
9315
  /** @deprecated Import and use `layerTest` from this module. */
9265
9316
  static layerTest = (cwd, baseDirOrPrefix) => layerTest$2(cwd, baseDirOrPrefix);
9266
9317
  };
9267
- const make$76 = (config) => ServerConfig.of(config);
9268
- const layer$72 = (config) => Layer.succeed(ServerConfig, make$76(config));
9318
+ const make$77 = (config) => ServerConfig.of(config);
9319
+ const layer$73 = (config) => Layer.succeed(ServerConfig, make$77(config));
9269
9320
  const deriveServerPaths = Effect.fn(function* (baseDir, devUrl) {
9270
9321
  const { join } = yield* Path.Path;
9271
9322
  const stateDir = join(baseDir, devUrl !== void 0 ? "dev" : "userdata");
@@ -10401,7 +10452,7 @@ const issueHeadlessServeAccessInfo = Effect.fn("issueHeadlessServeAccessInfo")(f
10401
10452
  //#endregion
10402
10453
  //#region src/auth/EnvironmentAuthPolicy.ts
10403
10454
  var EnvironmentAuthPolicy = class extends Context.Service()("@zl-tools/server/auth/EnvironmentAuthPolicy") {};
10404
- const make$75 = Effect.gen(function* () {
10455
+ const make$76 = Effect.gen(function* () {
10405
10456
  const config = yield* ServerConfig;
10406
10457
  const publicUrl = yield* Config.url("ZL_CODE_PUBLIC_URL").pipe(Config.option);
10407
10458
  const isRemoteReachable = Option.isSome(publicUrl) || isWildcardHost(config.host) || !isLoopbackHost(config.host);
@@ -10421,7 +10472,7 @@ const make$75 = Effect.gen(function* () {
10421
10472
  };
10422
10473
  return EnvironmentAuthPolicy.of({ getDescriptor: () => Effect.succeed(descriptor).pipe(Effect.withSpan("EnvironmentAuthPolicy.getDescriptor")) });
10423
10474
  });
10424
- const layer$71 = Layer.effect(EnvironmentAuthPolicy, make$75);
10475
+ const layer$72 = Layer.effect(EnvironmentAuthPolicy, make$76);
10425
10476
  //#endregion
10426
10477
  //#region src/persistence/Errors.ts
10427
10478
  function summarizeSchemaIssue(issue) {
@@ -10551,7 +10602,7 @@ function toPersistenceSqlOrDecodeError$6(sqlOperation, decodeOperation, correlat
10551
10602
  cause
10552
10603
  });
10553
10604
  }
10554
- const make$74 = Effect.gen(function* () {
10605
+ const make$75 = Effect.gen(function* () {
10555
10606
  const sql = yield* SqlClient.SqlClient;
10556
10607
  const createPairingLinkRow = SqlSchema.void({
10557
10608
  Request: CreateAuthPairingLinkInput,
@@ -10686,7 +10737,7 @@ const make$74 = Effect.gen(function* () {
10686
10737
  getByCredential
10687
10738
  };
10688
10739
  });
10689
- const layer$70 = Layer.effect(AuthPairingLinkRepository, make$74);
10740
+ const layer$71 = Layer.effect(AuthPairingLinkRepository, make$75);
10690
10741
  //#endregion
10691
10742
  //#region src/auth/PairingGrantStore.ts
10692
10743
  var UnknownBootstrapCredentialError = class extends Schema$1.TaggedErrorClass()("UnknownBootstrapCredentialError", {}) {
@@ -10780,7 +10831,7 @@ const DESKTOP_BOOTSTRAP_TTL_HOURS = Duration.hours(24);
10780
10831
  const PAIRING_TOKEN_ALPHABET = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
10781
10832
  const PAIRING_TOKEN_LENGTH = 12;
10782
10833
  const PAIRING_TOKEN_REJECTION_LIMIT = Math.floor(256 / 32) * 32;
10783
- const make$73 = Effect.gen(function* () {
10834
+ const make$74 = Effect.gen(function* () {
10784
10835
  const crypto = yield* Crypto.Crypto;
10785
10836
  const config = yield* ServerConfig;
10786
10837
  const pairingLinks = yield* AuthPairingLinkRepository;
@@ -10977,7 +11028,7 @@ const make$73 = Effect.gen(function* () {
10977
11028
  consume
10978
11029
  });
10979
11030
  });
10980
- const layer$69 = Layer.effect(PairingGrantStore, make$73).pipe(Layer.provideMerge(layer$70));
11031
+ const layer$70 = Layer.effect(PairingGrantStore, make$74).pipe(Layer.provideMerge(layer$71));
10981
11032
  //#endregion
10982
11033
  //#region src/auth/ServerSecretStore.ts
10983
11034
  const secretStoreErrorContext = {
@@ -11044,7 +11095,7 @@ const isSecretStoreError = Schema$1.is(SecretStoreError);
11044
11095
  const isPlatformError = (value) => Predicate.isTagged(value, "PlatformError");
11045
11096
  const isSecretAlreadyExistsError = (error) => "cause" in error && isPlatformError(error.cause) && error.cause.reason._tag === "AlreadyExists";
11046
11097
  var ServerSecretStore = class extends Context.Service()("@zl-tools/server/auth/ServerSecretStore") {};
11047
- const make$72 = Effect.gen(function* () {
11098
+ const make$73 = Effect.gen(function* () {
11048
11099
  const crypto = yield* Crypto.Crypto;
11049
11100
  const fileSystem = yield* FileSystem.FileSystem;
11050
11101
  const path = yield* Path.Path;
@@ -11114,7 +11165,7 @@ const make$72 = Effect.gen(function* () {
11114
11165
  remove
11115
11166
  });
11116
11167
  });
11117
- const layer$68 = Layer.effect(ServerSecretStore, make$72);
11168
+ const layer$69 = Layer.effect(ServerSecretStore, make$73);
11118
11169
  //#endregion
11119
11170
  //#region src/persistence/AuthSessions.ts
11120
11171
  const AuthSessionClientMetadataRecord = Schema$1.Struct({
@@ -11226,7 +11277,7 @@ function toPersistenceSqlOrDecodeError$5(sqlOperation, decodeOperation, correlat
11226
11277
  cause
11227
11278
  });
11228
11279
  }
11229
- const make$71 = Effect.gen(function* () {
11280
+ const make$72 = Effect.gen(function* () {
11230
11281
  const sql = yield* SqlClient.SqlClient;
11231
11282
  const createSessionRow = SqlSchema.void({
11232
11283
  Request: CreateAuthSessionInput,
@@ -11360,7 +11411,7 @@ const make$71 = Effect.gen(function* () {
11360
11411
  setLastConnectedAt
11361
11412
  };
11362
11413
  });
11363
- const layer$67 = Layer.effect(AuthSessionRepository, make$71);
11414
+ const layer$68 = Layer.effect(AuthSessionRepository, make$72);
11364
11415
  //#endregion
11365
11416
  //#region src/auth/SessionStore.ts
11366
11417
  var MalformedSessionTokenError = class extends Schema$1.TaggedErrorClass()("MalformedSessionTokenError", {}) {
@@ -11594,7 +11645,7 @@ function toAuthClientSession(input) {
11594
11645
  current: false
11595
11646
  };
11596
11647
  }
11597
- const make$70 = Effect.gen(function* () {
11648
+ const make$71 = Effect.gen(function* () {
11598
11649
  const crypto = yield* Crypto.Crypto;
11599
11650
  const serverConfig = yield* ServerConfig;
11600
11651
  const secretStore = yield* ServerSecretStore;
@@ -11890,7 +11941,7 @@ const make$70 = Effect.gen(function* () {
11890
11941
  markDisconnected
11891
11942
  });
11892
11943
  });
11893
- const layer$66 = Layer.effect(SessionStore, make$70).pipe(Layer.provideMerge(layer$67));
11944
+ const layer$67 = Layer.effect(SessionStore, make$71).pipe(Layer.provideMerge(layer$68));
11894
11945
  //#endregion
11895
11946
  //#region ../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/cryptoNode.js
11896
11947
  /**
@@ -17494,7 +17545,7 @@ function parseDpopToken(request) {
17494
17545
  const token = header.slice(5).trim();
17495
17546
  return token.length > 0 ? token : null;
17496
17547
  }
17497
- const make$69 = Effect.gen(function* () {
17548
+ const make$70 = Effect.gen(function* () {
17498
17549
  const policy = yield* EnvironmentAuthPolicy;
17499
17550
  const bootstrapCredentials = yield* PairingGrantStore;
17500
17551
  const sessions = yield* SessionStore;
@@ -17700,9 +17751,9 @@ const make$69 = Effect.gen(function* () {
17700
17751
  issueStartupPairingUrl
17701
17752
  });
17702
17753
  });
17703
- const layer$65 = Layer.effect(EnvironmentAuth, make$69).pipe(Layer.provideMerge(layer$69), Layer.provideMerge(layer$66), Layer.provideMerge(layer$71));
17704
- const storageLayer = Layer.mergeAll(layer$68, layerConfig);
17705
- const runtimeLayer = layer$65.pipe(Layer.provideMerge(storageLayer));
17754
+ const layer$66 = Layer.effect(EnvironmentAuth, make$70).pipe(Layer.provideMerge(layer$70), Layer.provideMerge(layer$67), Layer.provideMerge(layer$72));
17755
+ const storageLayer = Layer.mergeAll(layer$69, layerConfig);
17756
+ const runtimeLayer = layer$66.pipe(Layer.provideMerge(storageLayer));
17706
17757
  //#endregion
17707
17758
  //#region src/cliAuthFormat.ts
17708
17759
  const newline = "\n";
@@ -18881,7 +18932,7 @@ const runWithEnvironmentAuth = (flags, run, options) => Effect.gen(function* ()
18881
18932
  const minimumLogLevel = options?.quietLogs ? "Error" : config.logLevel;
18882
18933
  return yield* Effect.gen(function* () {
18883
18934
  return yield* run(yield* EnvironmentAuth);
18884
- }).pipe(Effect.provide(Layer.mergeAll(runtimeLayer).pipe(Layer.provide(layer$72(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)))));
18935
+ }).pipe(Effect.provide(Layer.mergeAll(runtimeLayer).pipe(Layer.provide(layer$73(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)))));
18885
18936
  });
18886
18937
  const ttlFlag$1 = Flag.string("ttl").pipe(Flag.withSchema(DurationFromString), Flag.withDescription("TTL, for example `5m`, `1h`, `30d`, or `15 minutes`."), Flag.optional);
18887
18938
  const jsonFlag$1 = Flag.boolean("json").pipe(Flag.withDescription("Emit JSON instead of human-readable output."), Flag.withDefault(false));
@@ -19391,7 +19442,7 @@ const makePairServerConfig = Effect.fn("pair.makePairServerConfig")(function* (i
19391
19442
  const { baseDir, variant, state } = input.target;
19392
19443
  const devUrl = state.devUrl !== void 0 ? new URL(state.devUrl) : void 0;
19393
19444
  const derivedPaths = yield* deriveServerPaths(baseDir, variant === "dev" ? DEV_VARIANT_PLACEHOLDER_URL : void 0);
19394
- return make$76({
19445
+ return make$77({
19395
19446
  logLevel: input.logLevel,
19396
19447
  traceMinLevel: "Info",
19397
19448
  traceTimingEnabled: false,
@@ -19473,7 +19524,7 @@ const mintPairingLink = Effect.fn("pair.mintPairingLink")(function* (input) {
19473
19524
  label: Option.getOrElse(input.label, () => "zl-code pair"),
19474
19525
  ...Option.isSome(input.ttl) ? { ttl: input.ttl.value } : {}
19475
19526
  });
19476
- }).pipe(Effect.provide(runtimeLayer.pipe(Layer.provide(layer$72(input.config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, input.config.logLevel)))));
19527
+ }).pipe(Effect.provide(runtimeLayer.pipe(Layer.provide(layer$73(input.config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, input.config.logLevel)))));
19477
19528
  });
19478
19529
  const ttlFlag = Flag.string("ttl").pipe(Flag.withSchema(DurationFromString), Flag.withDescription("Token TTL, for example `5m`, `1h`, or `15 minutes`. Defaults to 5 minutes."), Flag.optional);
19479
19530
  const labelFlag = Flag.string("label").pipe(Flag.withDescription("Optional label shown in the server's connections list."), Flag.optional);
@@ -21509,7 +21560,7 @@ function stringToBytes$3(value) {
21509
21560
  function bytesToString$4(value) {
21510
21561
  return new TextDecoder().decode(value);
21511
21562
  }
21512
- const make$68 = Effect.gen(function* () {
21563
+ const make$69 = Effect.gen(function* () {
21513
21564
  const crypto = yield* Crypto.Crypto;
21514
21565
  const httpClient = (yield* HttpClient$1.HttpClient).pipe(HttpClient$1.filterStatusOk);
21515
21566
  const secrets = yield* ServerSecretStore;
@@ -21620,7 +21671,7 @@ const make$68 = Effect.gen(function* () {
21620
21671
  clear: revokeAndClear
21621
21672
  });
21622
21673
  });
21623
- const layer$64 = Layer.effect(CloudCliTokenManager, make$68);
21674
+ const layer$65 = Layer.effect(CloudCliTokenManager, make$69);
21624
21675
  //#endregion
21625
21676
  //#region src/cloud/relayTracing.ts
21626
21677
  const relayClientTracingConfig = resolveRelayClientTracingConfig();
@@ -21896,12 +21947,12 @@ const runProcessCore = Effect.fn("processRunner.runProcessCore")(function* (spaw
21896
21947
  stderrTruncated: stderr.truncated
21897
21948
  };
21898
21949
  });
21899
- const make$67 = Effect.fn("ProcessRunner.make")(function* () {
21950
+ const make$68 = Effect.fn("ProcessRunner.make")(function* () {
21900
21951
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
21901
21952
  const run = (input) => finalizeRunProcess(runProcessCore(spawner, input), input);
21902
21953
  return ProcessRunner.of({ run });
21903
21954
  });
21904
- const layer$63 = Layer.effect(ProcessRunner, make$67());
21955
+ const layer$64 = Layer.effect(ProcessRunner, make$68());
21905
21956
  //#endregion
21906
21957
  //#region src/environment/ServerEnvironmentLabel.ts
21907
21958
  const ServerEnvironmentLabelCommandProbe = Schema$1.Literals(["macos-computer-name", "linux-pretty-hostname"]);
@@ -22033,7 +22084,7 @@ function platformArch(architecture) {
22033
22084
  default: return "other";
22034
22085
  }
22035
22086
  }
22036
- const make$66 = Effect.gen(function* () {
22087
+ const make$67 = Effect.gen(function* () {
22037
22088
  const fileSystem = yield* FileSystem.FileSystem;
22038
22089
  const path = yield* Path.Path;
22039
22090
  const serverConfig = yield* ServerConfig;
@@ -22089,7 +22140,9 @@ const make$66 = Effect.gen(function* () {
22089
22140
  userStateProfiles: true,
22090
22141
  starterSuggestions: true,
22091
22142
  promptEnhancement: true,
22092
- remoteImageProxy: true
22143
+ remoteImageProxy: true,
22144
+ serverVersionAdvisory: true,
22145
+ serverVersionManualRefresh: true
22093
22146
  }
22094
22147
  };
22095
22148
  return ServerEnvironment.of({
@@ -22102,7 +22155,7 @@ const make$66 = Effect.gen(function* () {
22102
22155
  * state. It intentionally has no fallback Layer.succeed value: callers must
22103
22156
  * provide the external platform services and a ServerConfig.
22104
22157
  */
22105
- const layer$62 = Layer.effect(ServerEnvironment, make$66).pipe(Layer.provide(layer$63));
22158
+ const layer$63 = Layer.effect(ServerEnvironment, make$67).pipe(Layer.provide(layer$64));
22106
22159
  //#endregion
22107
22160
  //#region src/cli/cloud.ts
22108
22161
  const jsonFlag = Flag.boolean("json").pipe(Flag.withDescription("Emit JSON instead of human-readable output."), Flag.withDefault(false));
@@ -22219,7 +22272,7 @@ const disconnectCloud = Effect.fn("cloud.cli.disconnect")(function* (options) {
22219
22272
  const runCloudCommand = (flags, run, options) => Effect.gen(function* () {
22220
22273
  const config = yield* resolveCliAuthConfig(flags, yield* GlobalFlag.LogLevel);
22221
22274
  const minimumLogLevel = options?.quietLogs ? "Error" : config.logLevel;
22222
- const runtimeLayer$1 = Layer.mergeAll(layer$68, layer$64.pipe(Layer.provide(layer$68)), layerCloudflared({ baseDir: config.baseDir }), runtimeLayer, layer$62, headlessRelayClientTracingLayer).pipe(Layer.provideMerge(FetchHttpClient.layer), Layer.provideMerge(layer$72(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)));
22275
+ const runtimeLayer$1 = Layer.mergeAll(layer$69, layer$65.pipe(Layer.provide(layer$69)), layerCloudflared({ baseDir: config.baseDir }), runtimeLayer, layer$63, headlessRelayClientTracingLayer).pipe(Layer.provideMerge(FetchHttpClient.layer), Layer.provideMerge(layer$73(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)));
22223
22276
  return yield* run.pipe(Effect.provide(runtimeLayer$1));
22224
22277
  });
22225
22278
  const cloudLoginCommand = Command.make("login", { ...projectLocationFlags }).pipe(Command.withDescription("Authorize the ZL Cloud CLI without enabling remote access."), Command.withHandler((flags) => runCloudCommand(flags, Effect.gen(function* () {
@@ -27309,7 +27362,7 @@ const resolveRepositoryIdentityFromCacheKey = Effect.fn("RepositoryIdentityResol
27309
27362
  rootPath: cacheKey
27310
27363
  }) : null;
27311
27364
  });
27312
- const make$65 = Effect.fn("RepositoryIdentityResolver.make")(function* (options = {}) {
27365
+ const make$66 = Effect.fn("RepositoryIdentityResolver.make")(function* (options = {}) {
27313
27366
  const processRunner = yield* ProcessRunner;
27314
27367
  const repositoryIdentityCache = yield* Cache.makeWith((cacheKey) => resolveRepositoryIdentityFromCacheKey(cacheKey).pipe(Effect.provideService(ProcessRunner, processRunner)), {
27315
27368
  capacity: options.cacheCapacity ?? DEFAULT_REPOSITORY_IDENTITY_CACHE_CAPACITY,
@@ -27324,7 +27377,7 @@ const make$65 = Effect.fn("RepositoryIdentityResolver.make")(function* (options
27324
27377
  });
27325
27378
  return RepositoryIdentityResolver.of({ resolve });
27326
27379
  });
27327
- const layer$61 = Layer.effect(RepositoryIdentityResolver, make$65()).pipe(Layer.provide(layer$63));
27380
+ const layer$62 = Layer.effect(RepositoryIdentityResolver, make$66()).pipe(Layer.provide(layer$64));
27328
27381
  //#endregion
27329
27382
  //#region src/orchestration/Layers/ProjectionSnapshotQuery.ts
27330
27383
  const decodeReadModel = Schema$1.decodeUnknownEffect(OrchestrationReadModel);
@@ -28939,7 +28992,7 @@ const OrchestrationLayerLive = Layer.mergeAll(OrchestrationInfrastructureLayerLi
28939
28992
  * @module ConfigFileWatcher
28940
28993
  */
28941
28994
  var ConfigFileWatcher = class extends Context.Service()("@zl-tools/server/configFileWatcher") {};
28942
- const make$64 = Effect.fn("ConfigFileWatcher.make")(function* (watchDirectory) {
28995
+ const make$65 = Effect.fn("ConfigFileWatcher.make")(function* (watchDirectory) {
28943
28996
  const { configDir } = yield* ServerConfig;
28944
28997
  const changes = yield* PubSub.unbounded();
28945
28998
  const context = yield* Effect.context();
@@ -28964,8 +29017,8 @@ const make$64 = Effect.fn("ConfigFileWatcher.make")(function* (watchDirectory) {
28964
29017
  return ConfigFileWatcher.of({ changesFor: (fileName) => Stream.fromPubSub(changes).pipe(Stream.filter((changedPath) => changedPath === fileName), Stream.map(() => void 0)) });
28965
29018
  });
28966
29019
  const watchConfigDirectory = (path, options, listener) => NodeFS.watch(path, options, listener);
28967
- const layerWith = (watchDirectory) => Layer.effect(ConfigFileWatcher, make$64(watchDirectory));
28968
- const layer$60 = layerWith(watchConfigDirectory);
29020
+ const layerWith = (watchDirectory) => Layer.effect(ConfigFileWatcher, make$65(watchDirectory));
29021
+ const layer$61 = layerWith(watchConfigDirectory);
28969
29022
  //#endregion
28970
29023
  //#region ../../packages/shared/src/keybindings.ts
28971
29024
  const DEFAULT_KEYBINDINGS = [
@@ -29439,7 +29492,7 @@ function mergeWithDefaultKeybindings(custom) {
29439
29492
  * Keybindings - Service tag for keybinding configuration operations.
29440
29493
  */
29441
29494
  var Keybindings = class extends Context.Service()("@zl-tools/server/keybindings") {};
29442
- const make$63 = Effect.gen(function* () {
29495
+ const make$64 = Effect.gen(function* () {
29443
29496
  const { keybindingsConfigPath } = yield* ServerConfig;
29444
29497
  const configFileWatcher = yield* ConfigFileWatcher;
29445
29498
  const fs = yield* FileSystem.FileSystem;
@@ -29692,7 +29745,7 @@ const make$63 = Effect.gen(function* () {
29692
29745
  }))
29693
29746
  };
29694
29747
  });
29695
- const layer$59 = Layer.effect(Keybindings, make$63);
29748
+ const layer$60 = Layer.effect(Keybindings, make$64);
29696
29749
  //#endregion
29697
29750
  //#region src/observability/EventLoopLag.ts
29698
29751
  /**
@@ -30072,7 +30125,7 @@ const launchEditorProcess = Effect.fn("externalLauncher.launchEditorProcess")(fu
30072
30125
  cause
30073
30126
  }));
30074
30127
  });
30075
- const make$62 = Effect.gen(function* () {
30128
+ const make$63 = Effect.gen(function* () {
30076
30129
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
30077
30130
  const fileSystem = yield* FileSystem.FileSystem;
30078
30131
  const path = yield* Path.Path;
@@ -30083,7 +30136,7 @@ const make$62 = Effect.gen(function* () {
30083
30136
  launchEditor: (input) => provideCommandResolutionServices(Effect.flatMap(resolveEditorLaunch(input), (launch) => launchEditorProcess(launch).pipe(Effect.provideService(ChildProcessSpawner$1.ChildProcessSpawner, spawner))))
30084
30137
  });
30085
30138
  });
30086
- const layer$58 = Layer.effect(ExternalLauncher, make$62);
30139
+ const layer$59 = Layer.effect(ExternalLauncher, make$63);
30087
30140
  //#endregion
30088
30141
  //#region src/orchestration/Services/OrchestrationReactor.ts
30089
30142
  /**
@@ -30101,7 +30154,7 @@ var OrchestrationReactor = class extends Context.Service()("@zl-tools/server/orc
30101
30154
  //#endregion
30102
30155
  //#region src/serverLifecycleEvents.ts
30103
30156
  var ServerLifecycleEvents = class extends Context.Service()("@zl-tools/server/serverLifecycleEvents") {};
30104
- const make$61 = Effect.gen(function* () {
30157
+ const make$62 = Effect.gen(function* () {
30105
30158
  const pubsub = yield* PubSub.unbounded();
30106
30159
  const state = yield* Ref.make({
30107
30160
  sequence: 0,
@@ -30125,7 +30178,7 @@ const make$61 = Effect.gen(function* () {
30125
30178
  }
30126
30179
  };
30127
30180
  });
30128
- const layer$57 = Layer.effect(ServerLifecycleEvents, make$61);
30181
+ const layer$58 = Layer.effect(ServerLifecycleEvents, make$62);
30129
30182
  //#endregion
30130
30183
  //#region src/serverSettings.ts
30131
30184
  /**
@@ -30245,7 +30298,7 @@ function stripDefaultServerSettings(current, defaults) {
30245
30298
  }
30246
30299
  return Object.is(current, defaults) ? void 0 : current;
30247
30300
  }
30248
- const make$60 = Effect.gen(function* () {
30301
+ const make$61 = Effect.gen(function* () {
30249
30302
  const { settingsPath } = yield* ServerConfig;
30250
30303
  const configFileWatcher = yield* ConfigFileWatcher;
30251
30304
  const fs = yield* FileSystem.FileSystem;
@@ -30458,7 +30511,7 @@ const make$60 = Effect.gen(function* () {
30458
30511
  }
30459
30512
  };
30460
30513
  });
30461
- const layer$56 = Layer.effect(ServerSettingsService, make$60);
30514
+ const layer$57 = Layer.effect(ServerSettingsService, make$61);
30462
30515
  //#endregion
30463
30516
  //#region src/diagnostics/ProcessDiagnostics.ts
30464
30517
  const PROCESS_QUERY_TIMEOUT_MS = 1e3;
@@ -30753,7 +30806,7 @@ function assertDescendantPid(pid) {
30753
30806
  }));
30754
30807
  }));
30755
30808
  }
30756
- const make$59 = Effect.gen(function* () {
30809
+ const make$60 = Effect.gen(function* () {
30757
30810
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
30758
30811
  const read = Effect.gen(function* () {
30759
30812
  const readAt = yield* DateTime.now;
@@ -30797,7 +30850,7 @@ const make$59 = Effect.gen(function* () {
30797
30850
  signal
30798
30851
  });
30799
30852
  });
30800
- const layer$55 = Layer.effect(ProcessDiagnostics, make$59);
30853
+ const layer$56 = Layer.effect(ProcessDiagnostics, make$60);
30801
30854
  //#endregion
30802
30855
  //#region src/process/AgentProcessPriority.ts
30803
30856
  /**
@@ -31206,7 +31259,7 @@ const serversEqual = (left, right) => {
31206
31259
  }
31207
31260
  return true;
31208
31261
  };
31209
- const make$58 = Effect.gen(function* PortDiscoveryMake() {
31262
+ const make$59 = Effect.gen(function* PortDiscoveryMake() {
31210
31263
  const net = yield* NetService;
31211
31264
  const processRunner = yield* ProcessRunner;
31212
31265
  const hostPlatform = yield* HostProcessPlatform;
@@ -31357,7 +31410,7 @@ const make$58 = Effect.gen(function* PortDiscoveryMake() {
31357
31410
  unregisterTerminal
31358
31411
  });
31359
31412
  }).pipe(Effect.withSpan("PortDiscovery.make"));
31360
- const layer$54 = Layer.effect(PortDiscovery, make$58);
31413
+ const layer$55 = Layer.effect(PortDiscovery, make$59);
31361
31414
  //#endregion
31362
31415
  //#region src/terminal/Manager.ts
31363
31416
  /**
@@ -32035,7 +32088,7 @@ function normalizedRuntimeEnv(env) {
32035
32088
  if (entries.length === 0) return null;
32036
32089
  return Object.fromEntries(entries.toSorted(([left], [right]) => left.localeCompare(right)));
32037
32090
  }
32038
- const make$57 = Effect.fn("TerminalManager.make")(function* () {
32091
+ const make$58 = Effect.fn("TerminalManager.make")(function* () {
32039
32092
  const { terminalLogsDir } = yield* ServerConfig;
32040
32093
  const ptyAdapter = yield* PtyAdapter;
32041
32094
  const portDiscovery = yield* PortDiscovery;
@@ -32999,7 +33052,7 @@ const makeWithOptions$1 = Effect.fn("TerminalManager.makeWithOptions")(function*
32999
33052
  listSessionPids
33000
33053
  });
33001
33054
  });
33002
- const layer$53 = Layer.effect(TerminalManager, make$57()).pipe(Layer.provide(layer$63));
33055
+ const layer$54 = Layer.effect(TerminalManager, make$58()).pipe(Layer.provide(layer$64));
33003
33056
  //#endregion
33004
33057
  //#region src/telemetry/Identify.ts
33005
33058
  const TelemetryIdentitySource = Schema$1.Literal("anonymous");
@@ -33208,7 +33261,7 @@ var AnalyticsService = class AnalyticsService extends Context.Service()("@zl-too
33208
33261
  resetIdentity: Effect.succeed(true)
33209
33262
  }));
33210
33263
  };
33211
- const make$56 = Effect.gen(function* () {
33264
+ const make$57 = Effect.gen(function* () {
33212
33265
  const telemetryConfig = yield* TelemetryEnvConfig;
33213
33266
  const httpClient = yield* HttpClient$1.HttpClient;
33214
33267
  const serverConfig = yield* ServerConfig;
@@ -33315,7 +33368,7 @@ const make$56 = Effect.gen(function* () {
33315
33368
  resetIdentity
33316
33369
  });
33317
33370
  });
33318
- const layer$52 = Layer.effect(AnalyticsService, make$56);
33371
+ const layer$53 = Layer.effect(AnalyticsService, make$57);
33319
33372
  AnalyticsService.layerTest;
33320
33373
  //#endregion
33321
33374
  //#region src/provider/Services/ProviderSessionReaper.ts
@@ -33460,7 +33513,7 @@ const maybeOpenBrowser = (target) => Effect.gen(function* () {
33460
33513
  yield* (yield* ExternalLauncher).launchBrowser(target).pipe(Effect.catch(() => Effect.logInfo("browser auto-open unavailable", { hint: `Open ${target} in your browser.` })));
33461
33514
  });
33462
33515
  const runStartupPhase = (phase, effect) => effect.pipe(Effect.annotateSpans({ "startup.phase": phase }), Effect.withSpan(`server.startup.${phase}`));
33463
- const make$55 = Effect.gen(function* () {
33516
+ const make$56 = Effect.gen(function* () {
33464
33517
  const serverConfig = yield* ServerConfig;
33465
33518
  const keybindings = yield* Keybindings;
33466
33519
  const orchestrationReactor = yield* OrchestrationReactor;
@@ -33594,7 +33647,7 @@ const make$55 = Effect.gen(function* () {
33594
33647
  enqueueCommand: commandGate.enqueueCommand
33595
33648
  };
33596
33649
  });
33597
- const layer$51 = Layer.effect(ServerRuntimeStartup, make$55);
33650
+ const layer$52 = Layer.effect(ServerRuntimeStartup, make$56);
33598
33651
  //#endregion
33599
33652
  //#region src/workspace/WorkspacePaths.ts
33600
33653
  /**
@@ -33665,7 +33718,7 @@ function expandHomePath$3(input, path) {
33665
33718
  if (input.startsWith("~/") || input.startsWith("~\\")) return path.join(NodeOS.homedir(), input.slice(2));
33666
33719
  return input;
33667
33720
  }
33668
- const make$54 = Effect.gen(function* () {
33721
+ const make$55 = Effect.gen(function* () {
33669
33722
  const fileSystem = yield* FileSystem.FileSystem;
33670
33723
  const path = yield* Path.Path;
33671
33724
  const statWorkspaceRoot = Effect.fn("WorkspacePaths.statWorkspaceRoot")(function* (workspaceRoot, normalizedWorkspaceRoot, phase) {
@@ -33722,7 +33775,7 @@ const make$54 = Effect.gen(function* () {
33722
33775
  resolveRelativePathWithinRoot
33723
33776
  });
33724
33777
  });
33725
- const layer$50 = Layer.effect(WorkspacePaths, make$54);
33778
+ const layer$51 = Layer.effect(WorkspacePaths, make$55);
33726
33779
  //#endregion
33727
33780
  //#region src/cli/project.ts
33728
33781
  const isEnvironmentHttpCommonError = Schema$1.is(EnvironmentHttpCommonError);
@@ -33828,7 +33881,7 @@ const projectCommandUuid = Crypto.Crypto.pipe(Effect.flatMap((crypto) => crypto.
33828
33881
  operation: "generateProjectCommandId",
33829
33882
  cause
33830
33883
  })));
33831
- const ProjectCliRuntimeLive = Layer.mergeAll(layer$50, OrchestrationLayerLive.pipe(Layer.provideMerge(layer$61), Layer.provideMerge(layerConfig)));
33884
+ const ProjectCliRuntimeLive = Layer.mergeAll(layer$51, OrchestrationLayerLive.pipe(Layer.provideMerge(layer$62), Layer.provideMerge(layerConfig)));
33832
33885
  const PROJECT_CLI_LIVE_SERVER_TIMEOUT = Duration.seconds(1);
33833
33886
  const withProjectCliSessionToken = (environmentAuth, run) => Effect.acquireUseRelease(environmentAuth.issueSession({
33834
33887
  scopes: AuthAdministrativeScopes,
@@ -33919,7 +33972,7 @@ const runProjectMutation = Effect.fn("runProjectMutation")(function* (flags, run
33919
33972
  });
33920
33973
  yield* Console.log(output);
33921
33974
  }));
33922
- const offlineRuntimeLayer = ProjectCliRuntimeLive.pipe(Layer.provide(layer$72(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)));
33975
+ const offlineRuntimeLayer = ProjectCliRuntimeLive.pipe(Layer.provide(layer$73(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)));
33923
33976
  return yield* Effect.gen(function* () {
33924
33977
  const snapshot = yield* getOfflineSnapshot();
33925
33978
  const orchestrationEngine = yield* OrchestrationEngineService;
@@ -33930,7 +33983,7 @@ const runProjectMutation = Effect.fn("runProjectMutation")(function* (flags, run
33930
33983
  });
33931
33984
  yield* Console.log(output);
33932
33985
  }).pipe(Effect.provide(offlineRuntimeLayer));
33933
- }).pipe(Effect.provide(Layer.mergeAll(runtimeLayer, layer$50).pipe(Layer.provideMerge(FetchHttpClient.layer), Layer.provide(layer$72(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)))));
33986
+ }).pipe(Effect.provide(Layer.mergeAll(runtimeLayer, layer$51).pipe(Layer.provideMerge(FetchHttpClient.layer), Layer.provide(layer$73(config)), Layer.provide(Layer.succeed(References.MinimumLogLevel, minimumLogLevel)))));
33934
33987
  });
33935
33988
  const projectAddCommand = Command.make("add", {
33936
33989
  ...projectLocationFlags,
@@ -34939,7 +34992,7 @@ function extractIconHref(source) {
34939
34992
  return null;
34940
34993
  }
34941
34994
  const optionOnNotFound$1 = (effect) => effect.pipe(Effect.map(Option.some), Effect.catchTags({ PlatformError: (error) => error.reason._tag === "NotFound" ? Effect.succeed(Option.none()) : Effect.fail(error) }));
34942
- const make$53 = Effect.gen(function* () {
34995
+ const make$54 = Effect.gen(function* () {
34943
34996
  const fileSystem = yield* FileSystem.FileSystem;
34944
34997
  const path = yield* Path.Path;
34945
34998
  const workspacePaths = yield* WorkspacePaths;
@@ -35002,7 +35055,7 @@ const make$53 = Effect.gen(function* () {
35002
35055
  });
35003
35056
  return ProjectFaviconResolver.of({ resolvePath });
35004
35057
  });
35005
- const layer$49 = Layer.effect(ProjectFaviconResolver, make$53);
35058
+ const layer$50 = Layer.effect(ProjectFaviconResolver, make$54);
35006
35059
  //#endregion
35007
35060
  //#region src/assets/AssetAccess.ts
35008
35061
  const ASSET_ROUTE_PREFIX = "/api/assets";
@@ -35340,10 +35393,10 @@ const resolveAsset = Effect.fn("AssetAccess.resolveAsset")(function* (token, rel
35340
35393
  //#endregion
35341
35394
  //#region src/observability/BrowserTraceCollector.ts
35342
35395
  var BrowserTraceCollector = class extends Context.Service()("@zl-tools/server/observability/BrowserTraceCollector") {};
35343
- const make$52 = (sink) => BrowserTraceCollector.of({ record: (records) => Effect.sync(() => {
35396
+ const make$53 = (sink) => BrowserTraceCollector.of({ record: (records) => Effect.sync(() => {
35344
35397
  for (const record of records) sink.push(record);
35345
35398
  }) });
35346
- const layer$48 = (sink) => Layer.succeed(BrowserTraceCollector, make$52(sink));
35399
+ const layer$49 = (sink) => Layer.succeed(BrowserTraceCollector, make$53(sink));
35347
35400
  //#endregion
35348
35401
  //#region src/providerUsage/ProviderUsageMetrics.ts
35349
35402
  const METRIC_PREFIX = "ai_usage_";
@@ -35457,11 +35510,11 @@ const makeTextGenerationFromRegistry = (registry) => TextGeneration.of({
35457
35510
  generateStarterSuggestions: (input) => resolveInstance(registry, "generateStarterSuggestions", input.modelSelection.instanceId).pipe(Effect.flatMap((textGeneration) => textGeneration.generateStarterSuggestions(input))),
35458
35511
  generatePromptEnhancement: (input) => resolveInstance(registry, "generatePromptEnhancement", input.modelSelection.instanceId).pipe(Effect.flatMap((textGeneration) => textGeneration.generatePromptEnhancement(input)))
35459
35512
  });
35460
- const make$51 = Effect.gen(function* () {
35513
+ const make$52 = Effect.gen(function* () {
35461
35514
  const registry = yield* ProviderInstanceRegistry;
35462
35515
  return makeTextGenerationFromRegistry(registry);
35463
35516
  });
35464
- const layer$47 = Layer.effect(TextGeneration, make$51);
35517
+ const layer$48 = Layer.effect(TextGeneration, make$52);
35465
35518
  //#endregion
35466
35519
  //#region src/textGeneration/TextGenerationUtils.ts
35467
35520
  const isTextGenerationError$2 = Schema$1.is(TextGenerationError);
@@ -56937,7 +56990,7 @@ const makeTerminationError$1 = (handle) => Effect.match(handle.exitCode, {
56937
56990
  //#endregion
56938
56991
  //#region ../../packages/effect-codex-app-server/src/client.ts
56939
56992
  var CodexAppServerClient = class extends Context.Service()("effect-codex-app-server/client/CodexAppServerClient") {};
56940
- const make$50 = Effect.fn("effect-codex-app-server/CodexAppServerClient.make")(function* (stdio, options = {}, terminationError) {
56993
+ const make$51 = Effect.fn("effect-codex-app-server/CodexAppServerClient.make")(function* (stdio, options = {}, terminationError) {
56941
56994
  const requestHandlers = /* @__PURE__ */ new Map();
56942
56995
  const notificationHandlers = /* @__PURE__ */ new Map();
56943
56996
  let unknownRequestHandler;
@@ -57004,7 +57057,7 @@ const make$50 = Effect.fn("effect-codex-app-server/CodexAppServerClient.make")(f
57004
57057
  const layerChildProcess$1 = (handle, options = {}) => Layer.effect(CodexAppServerClient, makeChildProcessClient(handle, options));
57005
57058
  const makeChildProcessClient = Effect.fn("effect-codex-app-server/CodexAppServerClient.makeChildProcessClient")(function* (handle, options) {
57006
57059
  yield* Stream.runDrain(handle.stderr).pipe(Effect.ignore, Effect.forkScoped);
57007
- return yield* make$50(makeChildStdio$1(handle), options, makeTerminationError$1(handle));
57060
+ return yield* make$51(makeChildStdio$1(handle), options, makeTerminationError$1(handle));
57008
57061
  });
57009
57062
  //#endregion
57010
57063
  //#region src/provider/Layers/CodexProvider.ts
@@ -63325,7 +63378,7 @@ const makeTerminationError = (handle) => Effect.match(handle.exitCode, {
63325
63378
  //#endregion
63326
63379
  //#region ../../packages/effect-acp/src/client.ts
63327
63380
  var AcpClient = class extends Context.Service()("effect-acp/client/AcpClient") {};
63328
- const make$49 = Effect.fn("effect-acp/AcpClient.make")(function* (stdio, options = {}, terminationError) {
63381
+ const make$50 = Effect.fn("effect-acp/AcpClient.make")(function* (stdio, options = {}, terminationError) {
63329
63382
  const coreHandlers = {};
63330
63383
  const notificationHandlers = {
63331
63384
  sessionUpdate: {
@@ -63483,7 +63536,7 @@ const make$49 = Effect.fn("effect-acp/AcpClient.make")(function* (stdio, options
63483
63536
  const layerChildProcess = (handle, options = {}) => {
63484
63537
  const stdio = makeChildStdio(handle);
63485
63538
  const terminationError = makeTerminationError(handle);
63486
- return Layer.effect(AcpClient, make$49(stdio, options, terminationError));
63539
+ return Layer.effect(AcpClient, make$50(stdio, options, terminationError));
63487
63540
  };
63488
63541
  //#endregion
63489
63542
  //#region ../../packages/shared/src/toolActivity.ts
@@ -63948,7 +64001,7 @@ function isNonInteractiveAuthMethodUnavailableError(error) {
63948
64001
  return isAcpRequestError$2(error) && error.errorMessage === "ACP agent does not advertise the required non-interactive authentication method.";
63949
64002
  }
63950
64003
  var AcpSessionRuntime = class extends Context.Service()("@zl-tools/server/provider/acp/AcpSessionRuntime") {};
63951
- const make$48 = (options) => Effect.gen(function* () {
64004
+ const make$49 = (options) => Effect.gen(function* () {
63952
64005
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
63953
64006
  const runtimeScope = yield* Scope.Scope;
63954
64007
  const eventQueue = yield* Queue.unbounded();
@@ -64261,7 +64314,7 @@ const make$48 = (options) => Effect.gen(function* () {
64261
64314
  notify: acp.raw.notify
64262
64315
  };
64263
64316
  });
64264
- const layer$46 = (options) => Layer.effect(AcpSessionRuntime, make$48(options));
64317
+ const layer$47 = (options) => Layer.effect(AcpSessionRuntime, make$49(options));
64265
64318
  function sessionConfigOptionsFromSetup(response) {
64266
64319
  return response?.configOptions ?? [];
64267
64320
  }
@@ -64629,7 +64682,7 @@ function buildCursorDiscoveredModelsFromAvailableModelsResponse(response) {
64629
64682
  }
64630
64683
  const makeCursorAcpProbeRuntime = (cursorSettings, environment) => Effect.gen(function* () {
64631
64684
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
64632
- const acpContext = yield* Layer.build(layer$46({
64685
+ const acpContext = yield* Layer.build(layer$47({
64633
64686
  spawn: {
64634
64687
  command: cursorSettings.binaryPath,
64635
64688
  args: [...cursorSettings.apiEndpoint ? ["-e", cursorSettings.apiEndpoint] : [], "acp"],
@@ -65078,7 +65131,7 @@ function buildCursorAcpSpawnInput(cursorSettings, cwd, environment) {
65078
65131
  };
65079
65132
  }
65080
65133
  const makeCursorAcpRuntime = (input) => Effect.gen(function* () {
65081
- const acpContext = yield* Layer.build(layer$46({
65134
+ const acpContext = yield* Layer.build(layer$47({
65082
65135
  ...input,
65083
65136
  spawn: buildCursorAcpSpawnInput(input.cursorSettings, input.cwd, input.environment),
65084
65137
  authMethodId: "cursor_login",
@@ -66520,7 +66573,7 @@ function resolveGrokAuthMethodId(environment) {
66520
66573
  return environment?.[GROK_API_KEY_ENV$1]?.trim() ? GROK_AUTH_METHOD_API_KEY$1 : GROK_AUTH_METHOD_CACHED_TOKEN$1;
66521
66574
  }
66522
66575
  const makeGrokAcpRuntime = (input) => Effect.gen(function* () {
66523
- const acpContext = yield* Layer.build(layer$46({
66576
+ const acpContext = yield* Layer.build(layer$47({
66524
66577
  ...input,
66525
66578
  spawn: buildGrokAcpSpawnInput(input.grokSettings, input.cwd, input.environment),
66526
66579
  authMethodId: resolveGrokAuthMethodId(input.environment),
@@ -68354,7 +68407,7 @@ const makeOpenCodeRuntime = Effect.gen(function* () {
68354
68407
  };
68355
68408
  });
68356
68409
  var OpenCodeRuntime = class extends Context.Service()("@zl-tools/server/provider/opencodeRuntime") {};
68357
- const OpenCodeRuntimeLive = Layer.effect(OpenCodeRuntime, makeOpenCodeRuntime).pipe(Layer.provide(layer$73));
68410
+ const OpenCodeRuntimeLive = Layer.effect(OpenCodeRuntime, makeOpenCodeRuntime).pipe(Layer.provide(layer$74));
68358
68411
  //#endregion
68359
68412
  //#region src/textGeneration/OpenCodeTextGeneration.ts
68360
68413
  const OPENCODE_TEXT_GENERATION_IDLE_TTL = "30 seconds";
@@ -71268,7 +71321,7 @@ function sourceFromRow(row) {
71268
71321
  };
71269
71322
  }
71270
71323
  var ProviderUsageStore = class extends Context.Service()("@zl-tools/server/providerUsage/ProviderUsageStore") {};
71271
- const make$47 = Effect.gen(function* () {
71324
+ const make$48 = Effect.gen(function* () {
71272
71325
  const sql = yield* SqlClient.SqlClient;
71273
71326
  const listSnapshots = Effect.gen(function* () {
71274
71327
  const rows = yield* sql`
@@ -71404,7 +71457,7 @@ const make$47 = Effect.gen(function* () {
71404
71457
  deleteSource
71405
71458
  });
71406
71459
  });
71407
- const layer$45 = Layer.effect(ProviderUsageStore, make$47);
71460
+ const layer$46 = Layer.effect(ProviderUsageStore, make$48);
71408
71461
  //#endregion
71409
71462
  //#region src/providerUsage/scheduler.ts
71410
71463
  const MAX_EXPONENTIAL_BACKOFF_SECONDS = 1800;
@@ -71525,7 +71578,7 @@ function mergeCanonicalWindows(previous, incoming) {
71525
71578
  return Array.from(byKey.values());
71526
71579
  }
71527
71580
  var ProviderUsageService = class extends Context.Service()("@zl-tools/server/providerUsage/ProviderUsageService") {};
71528
- const make$46 = Effect.gen(function* () {
71581
+ const make$47 = Effect.gen(function* () {
71529
71582
  const store = yield* ProviderUsageStore;
71530
71583
  const serverSettings = yield* ServerSettingsService;
71531
71584
  const serverConfig = yield* ServerConfig;
@@ -72289,7 +72342,7 @@ const make$46 = Effect.gen(function* () {
72289
72342
  streamSnapshots: Stream.fromPubSub(changes)
72290
72343
  });
72291
72344
  });
72292
- const layer$44 = Layer.effect(ProviderUsageService, make$46);
72345
+ const layer$45 = Layer.effect(ProviderUsageService, make$47);
72293
72346
  //#endregion
72294
72347
  //#region src/cloud/traceRelayRequest.ts
72295
72348
  const traceRelayRequest = (effect) => effect.pipe(withRelayClientTracing);
@@ -72501,7 +72554,7 @@ const layerNode = Layer.effect(HttpResponseCompression, Effect.gen(function* ()
72501
72554
  }));
72502
72555
  const layerBun = Layer.succeed(HttpResponseCompression, { gzip: (body, options) => HttpServerResponse$1.raw(new Response(body).body.pipeThrough(new CompressionStream("gzip")), options) });
72503
72556
  /** Selects the runtime implementation the same way the HTTP server layer does. */
72504
- const layer$43 = Layer.unwrap(Effect.sync(() => typeof Bun !== "undefined" ? layerBun : layerNode));
72557
+ const layer$44 = Layer.unwrap(Effect.sync(() => typeof Bun !== "undefined" ? layerBun : layerNode));
72505
72558
  //#endregion
72506
72559
  //#region src/httpCors.ts
72507
72560
  const browserApiCorsAllowedMethods = [
@@ -74509,7 +74562,7 @@ const classifyNonZeroExit = (command, stderr) => {
74509
74562
  if (command === "gh" && (normalized.includes("could not resolve to a pullrequest") || normalized.includes("repository.pullrequest") || normalized.includes("no pull requests found for branch") || normalized.includes("pull request not found")) || command === "glab" && (normalized.includes("merge request not found") || normalized.includes("not found") || normalized.includes("404")) || command === "az" && normalized.includes("pull request") && (normalized.includes("not found") || normalized.includes("does not exist"))) return "not-found";
74510
74563
  return "command-failed";
74511
74564
  };
74512
- const make$45 = Effect.gen(function* () {
74565
+ const make$46 = Effect.gen(function* () {
74513
74566
  const processRunner = yield* ProcessRunner;
74514
74567
  const run = Effect.fn("VcsProcess.run")(function* (input) {
74515
74568
  const baseError = {
@@ -74566,7 +74619,7 @@ const make$45 = Effect.gen(function* () {
74566
74619
  });
74567
74620
  return VcsProcess.of({ run });
74568
74621
  });
74569
- const layer$42 = Layer.effect(VcsProcess, make$45).pipe(Layer.provide(layer$63));
74622
+ const layer$43 = Layer.effect(VcsProcess, make$46).pipe(Layer.provide(layer$64));
74570
74623
  //#endregion
74571
74624
  //#region src/vcs/VcsDriver.ts
74572
74625
  var VcsDriver = class extends Context.Service()("@zl-tools/server/vcs/VcsDriver") {};
@@ -75017,12 +75070,12 @@ const makeVcsDriver = Effect.gen(function* () {
75017
75070
  const driver = yield* makeVcsDriverShape();
75018
75071
  return VcsDriver.of(driver);
75019
75072
  });
75020
- const make$44 = Effect.gen(function* () {
75073
+ const make$45 = Effect.gen(function* () {
75021
75074
  const git = yield* makeGitVcsDriverCore();
75022
75075
  return GitVcsDriver.of(git);
75023
75076
  });
75024
75077
  Layer.effect(VcsDriver, makeVcsDriver);
75025
- const layer$41 = Layer.effect(GitVcsDriver, make$44);
75078
+ const layer$42 = Layer.effect(GitVcsDriver, make$45);
75026
75079
  //#endregion
75027
75080
  //#region src/vcs/VcsProjectConfig.ts
75028
75081
  const ProjectVcsConfigJson = fromLenientJson(Schema$1.Struct({
@@ -75054,7 +75107,7 @@ const logVcsProjectConfigError = (error) => Effect.logWarning(error).pipe(Effect
75054
75107
  configPath: error.configPath,
75055
75108
  errorTag: error._tag
75056
75109
  }));
75057
- const make$43 = Effect.gen(function* () {
75110
+ const make$44 = Effect.gen(function* () {
75058
75111
  const fileSystem = yield* FileSystem.FileSystem;
75059
75112
  const path = yield* Path.Path;
75060
75113
  const findConfigPath = Effect.fn("VcsProjectConfig.findConfigPath")(function* (cwd) {
@@ -75095,7 +75148,7 @@ const make$43 = Effect.gen(function* () {
75095
75148
  });
75096
75149
  return VcsProjectConfig.of({ resolveKind });
75097
75150
  });
75098
- const layer$40 = Layer.effect(VcsProjectConfig, make$43);
75151
+ const layer$41 = Layer.effect(VcsProjectConfig, make$44);
75099
75152
  //#endregion
75100
75153
  //#region src/vcs/VcsDriverRegistry.ts
75101
75154
  const DETECTION_CACHE_CAPACITY = 2048;
@@ -75115,7 +75168,7 @@ function parseDetectionCacheKey(key) {
75115
75168
  cwd: key.slice(separatorIndex + 1)
75116
75169
  };
75117
75170
  }
75118
- const make$42 = Effect.gen(function* () {
75171
+ const make$43 = Effect.gen(function* () {
75119
75172
  const projectConfig = yield* VcsProjectConfig;
75120
75173
  const git = yield* makeVcsDriver;
75121
75174
  const drivers = { git };
@@ -75172,7 +75225,7 @@ const make$42 = Effect.gen(function* () {
75172
75225
  resolve
75173
75226
  });
75174
75227
  });
75175
- const layer$39 = Layer.effect(VcsDriverRegistry, make$42).pipe(Layer.provide(layer$40));
75228
+ const layer$40 = Layer.effect(VcsDriverRegistry, make$43).pipe(Layer.provide(layer$41));
75176
75229
  //#endregion
75177
75230
  //#region src/checkpointing/CheckpointStore.ts
75178
75231
  /**
@@ -75192,7 +75245,7 @@ const layer$39 = Layer.effect(VcsDriverRegistry, make$42).pipe(Layer.provide(lay
75192
75245
  */
75193
75246
  /** Service tag for checkpoint persistence and restore operations. */
75194
75247
  var CheckpointStore = class extends Context.Service()("@zl-tools/server/checkpointing/CheckpointStore") {};
75195
- const make$41 = Effect.gen(function* () {
75248
+ const make$42 = Effect.gen(function* () {
75196
75249
  const vcsRegistry = yield* VcsDriverRegistry;
75197
75250
  const resolveCheckpoints = Effect.fn("CheckpointStore.resolveCheckpoints")(function* (operation, cwd) {
75198
75251
  const handle = yield* vcsRegistry.resolve({ cwd });
@@ -75231,7 +75284,7 @@ const make$41 = Effect.gen(function* () {
75231
75284
  deleteCheckpointRefs
75232
75285
  });
75233
75286
  });
75234
- const layer$38 = Layer.effect(CheckpointStore, make$41);
75287
+ const layer$39 = Layer.effect(CheckpointStore, make$42);
75235
75288
  //#endregion
75236
75289
  //#region src/checkpointing/CheckpointDiffQuery.ts
75237
75290
  /**
@@ -75253,7 +75306,7 @@ function buildTurnDiffResult(input, diff) {
75253
75306
  diff
75254
75307
  };
75255
75308
  }
75256
- const make$40 = Effect.gen(function* () {
75309
+ const make$41 = Effect.gen(function* () {
75257
75310
  const projectionSnapshotQuery = yield* ProjectionSnapshotQuery;
75258
75311
  const checkpointStore = yield* CheckpointStore;
75259
75312
  const getTurnDiff = Effect.fn("getTurnDiff")(function* (input) {
@@ -75389,7 +75442,7 @@ const make$40 = Effect.gen(function* () {
75389
75442
  getFullThreadDiff
75390
75443
  });
75391
75444
  });
75392
- const layer$37 = Layer.effect(CheckpointDiffQuery, make$40);
75445
+ const layer$38 = Layer.effect(CheckpointDiffQuery, make$41);
75393
75446
  //#endregion
75394
75447
  //#region src/orchestration/Normalizer.ts
75395
75448
  const canonicalizeClientCommandTimestamps = (command, receivedAt) => {
@@ -75705,7 +75758,7 @@ function makeUpdateState(input) {
75705
75758
  output: input.output ?? null
75706
75759
  };
75707
75760
  }
75708
- const make$39 = Effect.fn("ProviderMaintenanceRunner.make")(function* () {
75761
+ const make$40 = Effect.fn("ProviderMaintenanceRunner.make")(function* () {
75709
75762
  const providerRegistry = yield* ProviderRegistry;
75710
75763
  const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
75711
75764
  const httpClient = yield* HttpClient.HttpClient;
@@ -75820,7 +75873,7 @@ const make$39 = Effect.fn("ProviderMaintenanceRunner.make")(function* () {
75820
75873
  });
75821
75874
  return ProviderMaintenanceRunner.of({ updateProvider });
75822
75875
  });
75823
- const layer$36 = Layer.effect(ProviderMaintenanceRunner, make$39());
75876
+ const layer$37 = Layer.effect(ProviderMaintenanceRunner, make$40());
75824
75877
  //#endregion
75825
75878
  //#region src/mcp/McpInvocationContext.ts
75826
75879
  var McpInvocationContext = class extends Context.Service()("@zl-tools/server/mcp/McpInvocationContext") {};
@@ -76035,7 +76088,7 @@ const operationError = (operation, cause, threadId, tabId) => new PreviewBrowser
76035
76088
  ...tabId === void 0 ? {} : { tabId },
76036
76089
  cause
76037
76090
  });
76038
- const make$38 = Effect.gen(function* BrowserRuntimeMake() {
76091
+ const make$39 = Effect.gen(function* BrowserRuntimeMake() {
76039
76092
  const fileSystem = yield* FileSystem.FileSystem;
76040
76093
  const path = yield* Path.Path;
76041
76094
  const config = yield* ServerConfig;
@@ -76760,7 +76813,7 @@ const make$38 = Effect.gen(function* BrowserRuntimeMake() {
76760
76813
  events: Stream.fromPubSub(eventsPubSub)
76761
76814
  });
76762
76815
  }).pipe(Effect.withSpan("BrowserRuntime.make"));
76763
- const layer$35 = Layer.effect(BrowserRuntime, make$38);
76816
+ const layer$36 = Layer.effect(BrowserRuntime, make$39);
76764
76817
  //#endregion
76765
76818
  //#region src/preview/Manager.ts
76766
76819
  /**
@@ -77158,8 +77211,8 @@ const makeWithBrowser = Effect.fn("PreviewManager.make")(function* (browser) {
77158
77211
  subscribeEvents: PubSub.subscribe(eventsPubSub)
77159
77212
  });
77160
77213
  });
77161
- const make$37 = makeWithBrowser();
77162
- Layer.effect(PreviewManager, make$37);
77214
+ const make$38 = makeWithBrowser();
77215
+ Layer.effect(PreviewManager, make$38);
77163
77216
  const layerServerHosted$1 = Layer.effect(PreviewManager, Effect.gen(function* () {
77164
77217
  const browser = yield* BrowserRuntime;
77165
77218
  return yield* makeWithBrowser(browser);
@@ -77181,7 +77234,7 @@ const SERVER_OPERATIONS = /* @__PURE__ */ new Set([
77181
77234
  "waitFor"
77182
77235
  ]);
77183
77236
  var ServerPreviewAutomation = class extends Context.Service()("@zl-tools/server/preview/ServerPreviewAutomation") {};
77184
- const make$36 = Effect.gen(function* ServerPreviewAutomationMake() {
77237
+ const make$37 = Effect.gen(function* ServerPreviewAutomationMake() {
77185
77238
  const manager = yield* PreviewManager;
77186
77239
  const browser = yield* BrowserRuntime;
77187
77240
  const invoke = Effect.fn("ServerPreviewAutomation.invoke")(function* (request) {
@@ -77331,7 +77384,7 @@ const make$36 = Effect.gen(function* ServerPreviewAutomationMake() {
77331
77384
  invoke
77332
77385
  });
77333
77386
  });
77334
- const layer$33 = Layer.effect(ServerPreviewAutomation, make$36);
77387
+ const layer$34 = Layer.effect(ServerPreviewAutomation, make$37);
77335
77388
  //#endregion
77336
77389
  //#region src/mcp/PreviewAutomationBroker.ts
77337
77390
  var PreviewAutomationBroker = class extends Context.Service()("@zl-tools/server/mcp/PreviewAutomationBroker") {};
@@ -77719,8 +77772,8 @@ const makeWithServerHosted = Effect.fn("PreviewAutomationBroker.make")(function*
77719
77772
  invoke
77720
77773
  });
77721
77774
  });
77722
- const make$35 = makeWithServerHosted();
77723
- const layer$32 = Layer.effect(PreviewAutomationBroker, make$35);
77775
+ const make$36 = makeWithServerHosted();
77776
+ const layer$33 = Layer.effect(PreviewAutomationBroker, make$36);
77724
77777
  const layerServerHosted = Layer.effect(PreviewAutomationBroker, Effect.gen(function* () {
77725
77778
  const serverHosted = yield* ServerPreviewAutomation;
77726
77779
  return yield* makeWithServerHosted(serverHosted);
@@ -77872,7 +77925,7 @@ const waitForScan = (cwd, finder, onFailure) => Effect.try({
77872
77925
  timeout: WORKSPACE_INDEX_SCAN_TIMEOUT
77873
77926
  })
77874
77927
  }), Effect.withSpan("WorkspaceSearchIndex.waitForScan"));
77875
- const make$34 = Effect.fn("WorkspaceSearchIndex.make")(function* (cwd) {
77928
+ const make$35 = Effect.fn("WorkspaceSearchIndex.make")(function* (cwd) {
77876
77929
  const finder = yield* Effect.acquireRelease(createFinder(cwd), (finder) => Effect.try({
77877
77930
  try: () => finder.destroy(),
77878
77931
  catch: (cause) => new WorkspaceSearchIndexDestroyFailed({
@@ -77946,9 +77999,9 @@ const make$34 = Effect.fn("WorkspaceSearchIndex.make")(function* (cwd) {
77946
77999
  * workspace root. WorkspaceSearchIndexMap owns memoization and idle cleanup;
77947
78000
  * using a default cwd here would mix resources from different workspaces.
77948
78001
  */
77949
- const layer$31 = (cwd) => Layer.effect(WorkspaceSearchIndex, make$34(cwd));
78002
+ const layer$32 = (cwd) => Layer.effect(WorkspaceSearchIndex, make$35(cwd));
77950
78003
  var WorkspaceSearchIndexMap = class extends LayerMap.Service()("@zl-tools/server/workspace/WorkspaceSearchIndexMap", {
77951
- lookup: layer$31,
78004
+ lookup: layer$32,
77952
78005
  idleTimeToLive: WORKSPACE_INDEX_IDLE_TTL
77953
78006
  }) {};
77954
78007
  //#endregion
@@ -78010,7 +78063,7 @@ const resolveBrowseTarget = Effect.fn("WorkspaceEntries.resolveBrowseTarget")(fu
78010
78063
  if (!input.cwd) return yield* new WorkspaceEntriesCurrentProjectRequiredError({ partialPath: input.partialPath });
78011
78064
  return path.resolve(expandHomePath$1(input.cwd, path), input.partialPath);
78012
78065
  });
78013
- const make$33 = Effect.gen(function* () {
78066
+ const make$34 = Effect.gen(function* () {
78014
78067
  const path = yield* Path.Path;
78015
78068
  const workspacePaths = yield* WorkspacePaths;
78016
78069
  const workspaceSearchIndexes = yield* WorkspaceSearchIndexMap;
@@ -78084,7 +78137,7 @@ const make$33 = Effect.gen(function* () {
78084
78137
  search
78085
78138
  });
78086
78139
  });
78087
- const layer$30 = Layer.effect(WorkspaceEntries, make$33).pipe(Layer.provide(WorkspaceSearchIndexMap.layer));
78140
+ const layer$31 = Layer.effect(WorkspaceEntries, make$34).pipe(Layer.provide(WorkspaceSearchIndexMap.layer));
78088
78141
  //#endregion
78089
78142
  //#region src/workspace/WorkspaceFileSystem.ts
78090
78143
  /**
@@ -78153,7 +78206,7 @@ Schema$1.Union([
78153
78206
  ]);
78154
78207
  /** Service tag for workspace file operations. */
78155
78208
  var WorkspaceFileSystem = class extends Context.Service()("@zl-tools/server/workspace/WorkspaceFileSystem") {};
78156
- const make$32 = Effect.gen(function* () {
78209
+ const make$33 = Effect.gen(function* () {
78157
78210
  const fileSystem = yield* FileSystem.FileSystem;
78158
78211
  const path = yield* Path.Path;
78159
78212
  const workspacePaths = yield* WorkspacePaths;
@@ -78285,7 +78338,7 @@ const make$32 = Effect.gen(function* () {
78285
78338
  writeFile
78286
78339
  });
78287
78340
  });
78288
- const layer$29 = Layer.effect(WorkspaceFileSystem, make$32);
78341
+ const layer$30 = Layer.effect(WorkspaceFileSystem, make$33);
78289
78342
  //#endregion
78290
78343
  //#region ../../packages/shared/src/projectScripts.ts
78291
78344
  function projectScriptRuntimeEnv(input) {
@@ -78330,7 +78383,7 @@ var ProjectSetupScriptProjectNotFoundError = class extends Schema$1.TaggedErrorC
78330
78383
  };
78331
78384
  Schema$1.Union([ProjectSetupScriptOperationError, ProjectSetupScriptProjectNotFoundError]);
78332
78385
  var ProjectSetupScriptRunner = class extends Context.Service()("@zl-tools/server/project/ProjectSetupScriptRunner") {};
78333
- const make$31 = Effect.gen(function* () {
78386
+ const make$32 = Effect.gen(function* () {
78334
78387
  const projectionSnapshotQuery = yield* ProjectionSnapshotQuery;
78335
78388
  const terminalManager = yield* TerminalManager;
78336
78389
  const runForThread = Effect.fn("ProjectSetupScriptRunner.runForThread")(function* (input) {
@@ -78388,7 +78441,7 @@ const make$31 = Effect.gen(function* () {
78388
78441
  });
78389
78442
  return ProjectSetupScriptRunner.of({ runForThread });
78390
78443
  });
78391
- const layer$28 = Layer.effect(ProjectSetupScriptRunner, make$31);
78444
+ const layer$29 = Layer.effect(ProjectSetupScriptRunner, make$32);
78392
78445
  //#endregion
78393
78446
  //#region src/sourceControl/SourceControlProvider.ts
78394
78447
  const MAX_ERROR_TRANSPORT_VALUE_LENGTH = 256;
@@ -78691,7 +78744,7 @@ function decodeAzureDevOpsJson(raw, schema, operation, cwd) {
78691
78744
  cause
78692
78745
  })));
78693
78746
  }
78694
- const make$30 = Effect.gen(function* () {
78747
+ const make$31 = Effect.gen(function* () {
78695
78748
  const process = yield* VcsProcess;
78696
78749
  const execute = (input) => process.run({
78697
78750
  operation: "AzureDevOpsCli.execute",
@@ -78833,7 +78886,7 @@ const make$30 = Effect.gen(function* () {
78833
78886
  }).pipe(Effect.asVoid)
78834
78887
  });
78835
78888
  });
78836
- const layer$27 = Layer.effect(AzureDevOpsCli, make$30);
78889
+ const layer$28 = Layer.effect(AzureDevOpsCli, make$31);
78837
78890
  //#endregion
78838
78891
  //#region src/sourceControl/SourceControlProviderDiscovery.ts
78839
78892
  function firstNonEmptyLine(text) {
@@ -79036,7 +79089,7 @@ function toChangeRequest$3(summary) {
79036
79089
  isCrossRepository: false
79037
79090
  };
79038
79091
  }
79039
- const make$29 = Effect.gen(function* () {
79092
+ const make$30 = Effect.gen(function* () {
79040
79093
  const azure = yield* AzureDevOpsCli;
79041
79094
  return SourceControlProvider.of({
79042
79095
  kind: "azure-devops",
@@ -79128,7 +79181,7 @@ const make$29 = Effect.gen(function* () {
79128
79181
  })))
79129
79182
  });
79130
79183
  });
79131
- Layer.effect(SourceControlProvider, make$29);
79184
+ Layer.effect(SourceControlProvider, make$30);
79132
79185
  //#endregion
79133
79186
  //#region src/sourceControl/bitbucketPullRequests.ts
79134
79187
  const BitbucketRepositoryRefSchema = Schema$1.Struct({
@@ -79442,7 +79495,7 @@ function responseError(operation, response) {
79442
79495
  responseBodyLength: body.length
79443
79496
  }))));
79444
79497
  }
79445
- const make$28 = Effect.gen(function* () {
79498
+ const make$29 = Effect.gen(function* () {
79446
79499
  const config = yield* BitbucketApiEnvConfig;
79447
79500
  const httpClient = yield* HttpClient.HttpClient;
79448
79501
  const fileSystem = yield* FileSystem.FileSystem;
@@ -79606,7 +79659,7 @@ const make$28 = Effect.gen(function* () {
79606
79659
  })))
79607
79660
  });
79608
79661
  });
79609
- const layer$25 = Layer.effect(BitbucketApi, make$28);
79662
+ const layer$26 = Layer.effect(BitbucketApi, make$29);
79610
79663
  //#endregion
79611
79664
  //#region src/sourceControl/BitbucketSourceControlProvider.ts
79612
79665
  function toChangeRequest$2(summary) {
@@ -79624,7 +79677,7 @@ function toChangeRequest$2(summary) {
79624
79677
  ...summary.headRepositoryOwnerLogin !== void 0 ? { headRepositoryOwnerLogin: summary.headRepositoryOwnerLogin } : {}
79625
79678
  };
79626
79679
  }
79627
- const make$27 = Effect.gen(function* () {
79680
+ const make$28 = Effect.gen(function* () {
79628
79681
  const bitbucket = yield* BitbucketApi;
79629
79682
  return SourceControlProvider.of({
79630
79683
  kind: "bitbucket",
@@ -79715,7 +79768,7 @@ const make$27 = Effect.gen(function* () {
79715
79768
  })))
79716
79769
  });
79717
79770
  });
79718
- Layer.effect(SourceControlProvider, make$27);
79771
+ Layer.effect(SourceControlProvider, make$28);
79719
79772
  const makeDiscovery = Effect.gen(function* () {
79720
79773
  return {
79721
79774
  type: "api",
@@ -79944,7 +79997,7 @@ function deriveRepositoryCloneUrlsFromCreateOutput(stdout, repository) {
79944
79997
  sshUrl: `git@${fallbackHost}:${repository}.git`
79945
79998
  };
79946
79999
  }
79947
- const make$26 = Effect.gen(function* () {
80000
+ const make$27 = Effect.gen(function* () {
79948
80001
  const process = yield* VcsProcess;
79949
80002
  const execute = (input) => process.run({
79950
80003
  operation: "GitHubCli.execute",
@@ -80060,7 +80113,7 @@ const make$26 = Effect.gen(function* () {
80060
80113
  }).pipe(Effect.asVoid)
80061
80114
  });
80062
80115
  });
80063
- const layer$23 = Layer.effect(GitHubCli, make$26);
80116
+ const layer$24 = Layer.effect(GitHubCli, make$27);
80064
80117
  //#endregion
80065
80118
  //#region src/sourceControl/gitHubAuthStatus.ts
80066
80119
  const GitHubAuthStatusAccountSchema = Schema$1.Struct({
@@ -80161,7 +80214,7 @@ const discovery$1 = {
80161
80214
  parseAuth: parseGitHubAuth,
80162
80215
  installHint: "Install the GitHub command-line tool (`gh`) via https://cli.github.com/ or your package manager (for example `brew install gh`)."
80163
80216
  };
80164
- const make$25 = Effect.gen(function* () {
80217
+ const make$26 = Effect.gen(function* () {
80165
80218
  const github = yield* GitHubCli;
80166
80219
  const listChangeRequests = (input) => {
80167
80220
  if (input.state === "open") return github.listOpenPullRequests({
@@ -80277,7 +80330,7 @@ const make$25 = Effect.gen(function* () {
80277
80330
  })))
80278
80331
  });
80279
80332
  });
80280
- Layer.effect(SourceControlProvider, make$25);
80333
+ Layer.effect(SourceControlProvider, make$26);
80281
80334
  //#endregion
80282
80335
  //#region src/sourceControl/gitLabMergeRequests.ts
80283
80336
  const GitLabProjectReferenceSchema = Schema$1.Struct({
@@ -80588,7 +80641,7 @@ function parseRepositoryPath(repository) {
80588
80641
  projectPath
80589
80642
  };
80590
80643
  }
80591
- const make$24 = Effect.gen(function* () {
80644
+ const make$25 = Effect.gen(function* () {
80592
80645
  const process = yield* VcsProcess;
80593
80646
  const run = (input, mapError) => process.run({
80594
80647
  operation: "GitLabCli.execute",
@@ -80737,7 +80790,7 @@ const make$24 = Effect.gen(function* () {
80737
80790
  }).pipe(Effect.asVoid)
80738
80791
  });
80739
80792
  });
80740
- const layer$21 = Layer.effect(GitLabCli, make$24);
80793
+ const layer$22 = Layer.effect(GitLabCli, make$25);
80741
80794
  //#endregion
80742
80795
  //#region src/sourceControl/gitLabAuthStatus.ts
80743
80796
  const HOST_LINE_PATTERN = /^(?:[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?|\[[a-f0-9:.]+\])(?::\d+)?$/iu;
@@ -80834,7 +80887,7 @@ const discovery = {
80834
80887
  refineUnknownRemote: refineUnknownGitLabRemote,
80835
80888
  installHint: "Install the GitLab command-line tool (`glab`) from https://gitlab.com/gitlab-org/cli or your package manager (for example `brew install glab`)."
80836
80889
  };
80837
- const make$23 = Effect.gen(function* () {
80890
+ const make$24 = Effect.gen(function* () {
80838
80891
  const gitlab = yield* GitLabCli;
80839
80892
  return SourceControlProvider.of({
80840
80893
  kind: "gitlab",
@@ -80922,7 +80975,7 @@ const make$23 = Effect.gen(function* () {
80922
80975
  })))
80923
80976
  });
80924
80977
  });
80925
- Layer.effect(SourceControlProvider, make$23);
80978
+ Layer.effect(SourceControlProvider, make$24);
80926
80979
  //#endregion
80927
80980
  //#region src/sourceControl/SourceControlProviderRegistry.ts
80928
80981
  const PROVIDER_DETECTION_CACHE_CAPACITY = 2048;
@@ -81073,12 +81126,12 @@ const makeWithProviders = Effect.fn("makeSourceControlProviderRegistryWithProvid
81073
81126
  })), { concurrency: "unbounded" })
81074
81127
  });
81075
81128
  });
81076
- const make$22 = Effect.gen(function* () {
81077
- const github = yield* make$25;
81078
- const gitlab = yield* make$23;
81079
- const bitbucket = yield* make$27;
81129
+ const make$23 = Effect.gen(function* () {
81130
+ const github = yield* make$26;
81131
+ const gitlab = yield* make$24;
81132
+ const bitbucket = yield* make$28;
81080
81133
  const bitbucketDiscovery = yield* makeDiscovery;
81081
- const azureDevOps = yield* make$29;
81134
+ const azureDevOps = yield* make$30;
81082
81135
  return yield* makeWithProviders([
81083
81136
  {
81084
81137
  kind: "github",
@@ -81102,7 +81155,7 @@ const make$22 = Effect.gen(function* () {
81102
81155
  }
81103
81156
  ]);
81104
81157
  });
81105
- const layer$19 = Layer.effect(SourceControlProviderRegistry, make$22);
81158
+ const layer$20 = Layer.effect(SourceControlProviderRegistry, make$23);
81106
81159
  //#endregion
81107
81160
  //#region src/git/GitManager.ts
81108
81161
  var GitManager = class extends Context.Service()("@zl-tools/server/git/GitManager") {};
@@ -81315,7 +81368,7 @@ function toPullRequestHeadRemoteInfo(pr) {
81315
81368
  ...pr.headRepositoryOwnerLogin !== void 0 ? { headRepositoryOwnerLogin: pr.headRepositoryOwnerLogin } : {}
81316
81369
  };
81317
81370
  }
81318
- const make$21 = Effect.gen(function* () {
81371
+ const make$22 = Effect.gen(function* () {
81319
81372
  const gitCore = yield* GitVcsDriver;
81320
81373
  const sourceControlProviders = yield* SourceControlProviderRegistry;
81321
81374
  const textGeneration = yield* TextGeneration;
@@ -82194,7 +82247,7 @@ const make$21 = Effect.gen(function* () {
82194
82247
  runStackedAction
82195
82248
  });
82196
82249
  });
82197
- const layer$18 = Layer.effect(GitManager, make$21);
82250
+ const layer$19 = Layer.effect(GitManager, make$22);
82198
82251
  //#endregion
82199
82252
  //#region src/git/GitWorkflowService.ts
82200
82253
  var GitWorkflowService = class extends Context.Service()("@zl-tools/server/git/GitWorkflowService") {};
@@ -82240,7 +82293,7 @@ function hasMissingPathCause(value, seen = /* @__PURE__ */ new Set()) {
82240
82293
  if (record.reason && typeof record.reason === "object" && record.reason._tag === "NotFound") return true;
82241
82294
  return hasMissingPathCause(record.cause, seen);
82242
82295
  }
82243
- const make$20 = Effect.gen(function* () {
82296
+ const make$21 = Effect.gen(function* () {
82244
82297
  const registry = yield* VcsDriverRegistry;
82245
82298
  const git = yield* GitVcsDriver;
82246
82299
  const gitManager = yield* GitManager;
@@ -82326,7 +82379,7 @@ const make$20 = Effect.gen(function* () {
82326
82379
  renameBranch: (input) => ensureGit("GitWorkflowService.renameBranch", input.cwd).pipe(Effect.andThen(git.renameBranch(input)))
82327
82380
  });
82328
82381
  });
82329
- const layer$17 = Layer.effect(GitWorkflowService, make$20);
82382
+ const layer$18 = Layer.effect(GitWorkflowService, make$21);
82330
82383
  //#endregion
82331
82384
  //#region src/vcs/VcsStatusBroadcaster.ts
82332
82385
  const DEFAULT_VCS_STATUS_REFRESH_INTERVAL = Duration.seconds(30);
@@ -82398,7 +82451,7 @@ function fingerprintStatusPart(status) {
82398
82451
  return JSON.stringify(status);
82399
82452
  }
82400
82453
  const normalizeCwd = (cwd) => Effect.service(FileSystem.FileSystem).pipe(Effect.flatMap((fs) => fs.realPath(cwd)), Effect.orElseSucceed(() => cwd));
82401
- const make$19 = Effect.gen(function* () {
82454
+ const make$20 = Effect.gen(function* () {
82402
82455
  const workflow = yield* GitWorkflowService;
82403
82456
  const fs = yield* FileSystem.FileSystem;
82404
82457
  const changesPubSub = yield* Effect.acquireRelease(PubSub.unbounded(), (pubsub) => PubSub.shutdown(pubsub));
@@ -82622,7 +82675,7 @@ const make$19 = Effect.gen(function* () {
82622
82675
  streamStatus
82623
82676
  });
82624
82677
  });
82625
- const layer$16 = Layer.effect(VcsStatusBroadcaster, make$19);
82678
+ const layer$17 = Layer.effect(VcsStatusBroadcaster, make$20);
82626
82679
  //#endregion
82627
82680
  //#region src/vcs/VcsProvisioningService.ts
82628
82681
  var VcsProvisioningService = class extends Context.Service()("@zl-tools/server/vcs/VcsProvisioningService") {};
@@ -82635,7 +82688,7 @@ function resolveRequestedKind(kind) {
82635
82688
  }));
82636
82689
  return Effect.succeed(kind);
82637
82690
  }
82638
- const make$18 = Effect.gen(function* () {
82691
+ const make$19 = Effect.gen(function* () {
82639
82692
  const registry = yield* VcsDriverRegistry;
82640
82693
  const initRepository = Effect.fn("VcsProvisioningService.initRepository")(function* (input) {
82641
82694
  const kind = yield* resolveRequestedKind(input.kind);
@@ -82643,11 +82696,11 @@ const make$18 = Effect.gen(function* () {
82643
82696
  });
82644
82697
  return VcsProvisioningService.of({ initRepository });
82645
82698
  });
82646
- const layer$15 = Layer.effect(VcsProvisioningService, make$18);
82699
+ const layer$16 = Layer.effect(VcsProvisioningService, make$19);
82647
82700
  //#endregion
82648
82701
  //#region src/review/ReviewService.ts
82649
82702
  var ReviewService = class extends Context.Service()("@zl-tools/server/review/ReviewService") {};
82650
- const make$17 = Effect.gen(function* () {
82703
+ const make$18 = Effect.gen(function* () {
82651
82704
  const config = yield* ServerConfig;
82652
82705
  const fileSystem = yield* FileSystem.FileSystem;
82653
82706
  const path = yield* Path.Path;
@@ -82703,7 +82756,7 @@ const make$17 = Effect.gen(function* () {
82703
82756
  });
82704
82757
  return ReviewService.of({ getDiffPreview });
82705
82758
  });
82706
- const layer$14 = Layer.effect(ReviewService, make$17);
82759
+ const layer$15 = Layer.effect(ReviewService, make$18);
82707
82760
  //#endregion
82708
82761
  //#region src/diagnostics/ProcessResourceMonitor.ts
82709
82762
  const SAMPLE_INTERVAL_MS = 5e3;
@@ -82854,7 +82907,7 @@ function aggregateProcessResourceHistory(input) {
82854
82907
  }) : Option.none()
82855
82908
  };
82856
82909
  }
82857
- const make$16 = Effect.gen(function* () {
82910
+ const make$17 = Effect.gen(function* () {
82858
82911
  const spawner = yield* ChildProcessSpawner$1.ChildProcessSpawner;
82859
82912
  const state = yield* Ref.make({
82860
82913
  samples: [],
@@ -82903,7 +82956,7 @@ const make$16 = Effect.gen(function* () {
82903
82956
  });
82904
82957
  return ProcessResourceMonitor.of({ readHistory });
82905
82958
  });
82906
- const layer$13 = Layer.effect(ProcessResourceMonitor, make$16);
82959
+ const layer$14 = Layer.effect(ProcessResourceMonitor, make$17);
82907
82960
  //#endregion
82908
82961
  //#region src/diagnostics/TraceDiagnostics.ts
82909
82962
  var TraceFileReadError = class extends Schema$1.TaggedErrorClass()("TraceFileReadError", {
@@ -83174,7 +83227,7 @@ function readTraceFile(fileSystem, path) {
83174
83227
  cause
83175
83228
  })) }));
83176
83229
  }
83177
- const make$15 = Effect.gen(function* () {
83230
+ const make$16 = Effect.gen(function* () {
83178
83231
  const fileSystem = yield* FileSystem.FileSystem;
83179
83232
  const read = Effect.fn("TraceDiagnostics.read")(function* (options) {
83180
83233
  const readAt = options.readAt ?? (yield* DateTime.now);
@@ -83218,7 +83271,7 @@ const make$15 = Effect.gen(function* () {
83218
83271
  });
83219
83272
  return TraceDiagnostics.of({ read });
83220
83273
  });
83221
- const layer$12 = Layer.effect(TraceDiagnostics, make$15);
83274
+ const layer$13 = Layer.effect(TraceDiagnostics, make$16);
83222
83275
  function readTraceDiagnostics(options) {
83223
83276
  return Effect.gen(function* () {
83224
83277
  return yield* (yield* TraceDiagnostics).read(options);
@@ -83610,7 +83663,7 @@ const turnSelect = `
83610
83663
  reported_cost_provenance AS "reportedCostProvenance", completeness,
83611
83664
  completeness_reasons_json AS "completenessReasonsJson"
83612
83665
  FROM usage_analytics_turns`;
83613
- const make$14 = Effect.gen(function* () {
83666
+ const make$15 = Effect.gen(function* () {
83614
83667
  const sql = yield* SqlClient.SqlClient;
83615
83668
  const environmentId = yield* (yield* ServerEnvironment).getEnvironmentId;
83616
83669
  const getThreadContext = (threadId) => sql`
@@ -84417,7 +84470,7 @@ const make$14 = Effect.gen(function* () {
84417
84470
  getActivity
84418
84471
  });
84419
84472
  });
84420
- const layer$11 = Layer.effect(UsageAnalytics, make$14);
84473
+ const layer$12 = Layer.effect(UsageAnalytics, make$15);
84421
84474
  //#endregion
84422
84475
  //#region src/userState/UserStateService.ts
84423
84476
  const isUserStateError = Schema$1.is(UserStateError);
@@ -84427,7 +84480,7 @@ const persistenceError = (message) => new UserStateError({
84427
84480
  message
84428
84481
  });
84429
84482
  var UserStateService = class extends Context.Service()("@zl-tools/server/userState/UserStateService") {};
84430
- const make$13 = Effect.gen(function* () {
84483
+ const make$14 = Effect.gen(function* () {
84431
84484
  const sql = yield* SqlClient.SqlClient;
84432
84485
  const changes = yield* PubSub.unbounded();
84433
84486
  const writeSemaphore = yield* Semaphore.make(1);
@@ -84564,7 +84617,7 @@ const make$13 = Effect.gen(function* () {
84564
84617
  streamChanges: Stream.fromPubSub(changes)
84565
84618
  });
84566
84619
  });
84567
- const layer$10 = Layer.effect(UserStateService, make$13);
84620
+ const layer$11 = Layer.effect(UserStateService, make$14);
84568
84621
  //#endregion
84569
84622
  //#region src/assist/StarterSuggestions.ts
84570
84623
  const RECENT_THREAD_LIMIT = 8;
@@ -84627,7 +84680,7 @@ const sanitizeGeneratedSuggestions = (suggestions) => {
84627
84680
  return unique;
84628
84681
  };
84629
84682
  var StarterSuggestions = class extends Context.Service()("@zl-tools/server/assist/StarterSuggestions") {};
84630
- const make$12 = Effect.gen(function* () {
84683
+ const make$13 = Effect.gen(function* () {
84631
84684
  const sql = yield* SqlClient.SqlClient;
84632
84685
  const projections = yield* ProjectionSnapshotQuery;
84633
84686
  const serverSettings = yield* ServerSettingsService;
@@ -84787,7 +84840,7 @@ const make$12 = Effect.gen(function* () {
84787
84840
  }))));
84788
84841
  return StarterSuggestions.of({ get });
84789
84842
  });
84790
- const layer$9 = Layer.effect(StarterSuggestions, make$12);
84843
+ const layer$10 = Layer.effect(StarterSuggestions, make$13);
84791
84844
  //#endregion
84792
84845
  //#region src/assist/PromptEnhancement.ts
84793
84846
  const RECENT_MESSAGE_LIMIT = 12;
@@ -84795,7 +84848,7 @@ const GENERATION_TIMEOUT = Duration.seconds(45);
84795
84848
  const decodeEnhancedPrompt = Schema$1.decodeUnknownEffect(PromptEnhancementPrompt);
84796
84849
  const isPromptEnhancementError = Schema$1.is(PromptEnhancementError);
84797
84850
  var PromptEnhancement = class extends Context.Service()("@zl-tools/server/assist/PromptEnhancement") {};
84798
- const make$11 = Effect.gen(function* () {
84851
+ const make$12 = Effect.gen(function* () {
84799
84852
  const projections = yield* ProjectionSnapshotQuery;
84800
84853
  const serverSettings = yield* ServerSettingsService;
84801
84854
  const textGeneration = yield* TextGeneration;
@@ -84890,7 +84943,65 @@ const make$11 = Effect.gen(function* () {
84890
84943
  cancel
84891
84944
  });
84892
84945
  });
84893
- const layer$8 = Layer.effect(PromptEnhancement, make$11);
84946
+ const layer$9 = Layer.effect(PromptEnhancement, make$12);
84947
+ //#endregion
84948
+ //#region src/serverVersionAdvisory.ts
84949
+ const SERVER_VERSION_CHECK_INTERVAL = Duration.hours(6);
84950
+ const SERVER_VERSION_CHECK_TIMEOUT = Duration.seconds(10);
84951
+ const NPM_LATEST_URL = "https://registry.npmjs.org/zl-code/latest";
84952
+ const UPDATE_COMMAND = "npx zl-code@latest";
84953
+ const NpmLatestResponse = Schema$1.Struct({ version: TrimmedNonEmptyString });
84954
+ var ServerVersionAdvisoryService = class extends Context.Service()("@zl-tools/server/serverVersionAdvisory/ServerVersionAdvisoryService") {};
84955
+ const make$11 = Effect.gen(function* () {
84956
+ const httpClient = yield* HttpClient.HttpClient;
84957
+ const serverEnvironment = yield* ServerEnvironment;
84958
+ const serverSettings = yield* ServerSettingsService;
84959
+ const currentVersion = (yield* serverEnvironment.getDescriptor).serverVersion;
84960
+ const state = yield* SubscriptionRef.make({
84961
+ status: "unknown",
84962
+ currentVersion,
84963
+ latestVersion: null,
84964
+ updateCommand: null,
84965
+ checkedAt: null
84966
+ });
84967
+ const refreshSemaphore = yield* Semaphore.make(1);
84968
+ const setDisabled = SubscriptionRef.set(state, {
84969
+ status: "disabled",
84970
+ currentVersion,
84971
+ latestVersion: null,
84972
+ updateCommand: null,
84973
+ checkedAt: null
84974
+ });
84975
+ const checkRegistry = Effect.fn("ServerVersionAdvisory.checkRegistry")(function* () {
84976
+ if (!parseSemver(currentVersion)) return yield* new ServerVersionCheckError({ reason: "invalid_current_version" });
84977
+ const latest = yield* httpClient.execute(HttpClientRequest.get(NPM_LATEST_URL).pipe(HttpClientRequest.acceptJson)).pipe(Effect.flatMap(HttpClientResponse.filterStatusOk), Effect.flatMap(HttpClientResponse.schemaBodyJson(NpmLatestResponse)), Effect.timeout(SERVER_VERSION_CHECK_TIMEOUT), Effect.mapError(() => new ServerVersionCheckError({ reason: "registry_unavailable" })));
84978
+ if (!parseSemver(latest.version)) return yield* new ServerVersionCheckError({ reason: "invalid_registry_version" });
84979
+ const behindLatest = compareSemverVersions(currentVersion, latest.version) < 0;
84980
+ const advisory = {
84981
+ status: behindLatest ? "behind_latest" : "current",
84982
+ currentVersion,
84983
+ latestVersion: latest.version,
84984
+ updateCommand: behindLatest ? UPDATE_COMMAND : null,
84985
+ checkedAt: DateTime.formatIso(yield* DateTime.now)
84986
+ };
84987
+ yield* SubscriptionRef.set(state, advisory);
84988
+ return advisory;
84989
+ });
84990
+ const refreshManually = refreshSemaphore.withPermits(1)(checkRegistry());
84991
+ const refreshNow = refreshSemaphore.withPermits(1)(serverSettings.getSettings.pipe(Effect.matchEffect({
84992
+ onFailure: (error) => Effect.logWarning("Could not read server version-check setting; registry check skipped", { operation: error.operation }),
84993
+ onSuccess: (settings) => settings.enableServerVersionChecks ? checkRegistry().pipe(Effect.asVoid, Effect.catch((error) => Effect.logWarning("Could not check npm for a newer Zettai Labs Code server", { reason: error.reason }))) : setDisabled
84994
+ })));
84995
+ yield* refreshNow.pipe(Effect.forkScoped);
84996
+ yield* Effect.forever(Effect.sleep(SERVER_VERSION_CHECK_INTERVAL).pipe(Effect.andThen(refreshNow))).pipe(Effect.forkScoped);
84997
+ yield* serverSettings.streamChanges.pipe(Stream.map((settings) => settings.enableServerVersionChecks), Stream.changes, Stream.runForEach((enabled) => enabled ? refreshNow : refreshSemaphore.withPermits(1)(setDisabled)), Effect.forkScoped);
84998
+ return ServerVersionAdvisoryService.of({
84999
+ stream: SubscriptionRef.changes(state),
85000
+ refreshNow,
85001
+ refreshManually
85002
+ });
85003
+ });
85004
+ const layer$8 = Layer.effect(ServerVersionAdvisoryService, make$11);
84894
85005
  //#endregion
84895
85006
  //#region src/sourceControl/SourceControlDiscovery.ts
84896
85007
  const VCS_PROBES = [{
@@ -85637,6 +85748,8 @@ const RPC_REQUIRED_SCOPE = /* @__PURE__ */ new Map([
85637
85748
  [WS_METHODS.subscribeDiscoveredLocalServers, AuthOrchestrationReadScope],
85638
85749
  [WS_METHODS.subscribeServerConfig, AuthOrchestrationReadScope],
85639
85750
  [WS_METHODS.subscribeServerLifecycle, AuthOrchestrationReadScope],
85751
+ [WS_METHODS.subscribeServerVersionAdvisory, AuthOrchestrationReadScope],
85752
+ [WS_METHODS.serverRefreshVersionAdvisory, AuthOrchestrationReadScope],
85640
85753
  [WS_METHODS.subscribeAuthAccess, AuthAccessReadScope]
85641
85754
  ]);
85642
85755
  function toAuthAccessStreamEvent(change, revision, currentSessionId) {
@@ -85678,6 +85791,7 @@ const makeWsRpcLayer = (currentSession, previewAutomationBroker) => WsRpcGroup.t
85678
85791
  const usageAnalytics = yield* UsageAnalytics;
85679
85792
  const starterSuggestions = yield* StarterSuggestions;
85680
85793
  const promptEnhancement = yield* PromptEnhancement;
85794
+ const serverVersionAdvisory = yield* ServerVersionAdvisoryService;
85681
85795
  const orchestrationEngine = yield* OrchestrationEngineService;
85682
85796
  const checkpointDiffQuery = yield* CheckpointDiffQuery;
85683
85797
  const keybindings = yield* Keybindings;
@@ -86529,6 +86643,8 @@ const makeWsRpcLayer = (currentSession, previewAutomationBroker) => WsRpcGroup.t
86529
86643
  const liveEvents = lifecycleEvents.stream.pipe(Stream.filter((event) => event.sequence > snapshot.sequence));
86530
86644
  return Stream.concat(Stream.fromIterable(snapshotEvents), liveEvents);
86531
86645
  }), { "rpc.aggregate": "server" }),
86646
+ [WS_METHODS.subscribeServerVersionAdvisory]: (_input) => observeRpcStream$1(WS_METHODS.subscribeServerVersionAdvisory, serverVersionAdvisory.stream, { "rpc.aggregate": "server" }),
86647
+ [WS_METHODS.serverRefreshVersionAdvisory]: (_input) => observeRpcEffect$1(WS_METHODS.serverRefreshVersionAdvisory, serverVersionAdvisory.refreshManually, { "rpc.aggregate": "server" }),
86532
86648
  [WS_METHODS.subscribeAuthAccess]: (_input) => observeRpcStreamEffect$1(WS_METHODS.subscribeAuthAccess, Effect.gen(function* () {
86533
86649
  const initialSnapshot = yield* loadAuthAccessSnapshot();
86534
86650
  const revisionRef = yield* Ref.make(1);
@@ -86556,7 +86672,7 @@ const websocketRpcRouteLayer = Layer.unwrap(Effect.gen(function* () {
86556
86672
  const serverAuth = yield* EnvironmentAuth;
86557
86673
  const sessions = yield* SessionStore;
86558
86674
  const session = yield* serverAuth.authenticateWebSocketUpgrade(request).pipe(Effect.catchIf(isServerAuthCredentialError, (error) => failEnvironmentAuthInvalid(serverAuthCredentialReason(error))), Effect.catchIf(isServerAuthInternalError, (error) => failEnvironmentInternal("internal_error", error)));
86559
- const rpcWebSocketHttpEffect = yield* RpcServer.toHttpEffectWebsocket(WsRpcGroup, { disableTracing: true }).pipe(Effect.provide(makeWsRpcLayer(session, previewAutomationBroker).pipe(Layer.provideMerge(RpcSerialization.layerJson), Layer.provide(layer$36), Layer.provide(layer$7.pipe(Layer.provide(layer$19.pipe(Layer.provide(Layer.mergeAll(layer$27, layer$25, layer$23, layer$21)), Layer.provideMerge(layer$41), Layer.provide(layer$39.pipe(Layer.provide(layer$40))))), Layer.provide(layer$42))))));
86675
+ const rpcWebSocketHttpEffect = yield* RpcServer.toHttpEffectWebsocket(WsRpcGroup, { disableTracing: true }).pipe(Effect.provide(makeWsRpcLayer(session, previewAutomationBroker).pipe(Layer.provideMerge(RpcSerialization.layerJson), Layer.provide(layer$37), Layer.provide(layer$7.pipe(Layer.provide(layer$20.pipe(Layer.provide(Layer.mergeAll(layer$28, layer$26, layer$24, layer$22)), Layer.provideMerge(layer$42), Layer.provide(layer$40.pipe(Layer.provide(layer$41))))), Layer.provide(layer$43))))));
86560
86676
  return yield* Effect.acquireUseRelease(Effect.gen(function* () {
86561
86677
  yield* sessions.markConnected(session.sessionId);
86562
86678
  const live = yield* Ref.updateAndGet(liveConnections, (count) => count + 1);
@@ -92100,7 +92216,7 @@ const ObservabilityLive = Layer.unwrap(Effect.gen(function* () {
92100
92216
  sink,
92101
92217
  ...delegate ? { delegate } : {}
92102
92218
  });
92103
- return Layer.mergeAll(Layer.succeed(Tracer.Tracer, tracer), layer$48(sink));
92219
+ return Layer.mergeAll(Layer.succeed(Tracer.Tracer, tracer), layer$49(sink));
92104
92220
  })).pipe(Layer.provideMerge(otlpSerializationLayer));
92105
92221
  const metricsLayer = config.otlpMetricsUrl === void 0 ? Layer.empty : OtlpMetrics.layer({
92106
92222
  url: config.otlpMetricsUrl,
@@ -92805,43 +92921,44 @@ const PlatformServicesLive = Layer.unwrap(Effect.gen(function* () {
92805
92921
  return layer;
92806
92922
  }
92807
92923
  }));
92808
- const ReactorLayerLive = Layer.empty.pipe(Layer.provideMerge(OrchestrationReactorLive), Layer.provideMerge(ProviderRuntimeIngestionLive), Layer.provideMerge(ProviderCommandReactorLive), Layer.provideMerge(CheckpointReactorLive), Layer.provideMerge(ThreadLifecycleReactorLive), Layer.provideMerge(layer$1.pipe(Layer.provide(layer$68))), Layer.provideMerge(RuntimeReceiptBusLive));
92924
+ const ReactorLayerLive = Layer.empty.pipe(Layer.provideMerge(OrchestrationReactorLive), Layer.provideMerge(ProviderRuntimeIngestionLive), Layer.provideMerge(ProviderCommandReactorLive), Layer.provideMerge(CheckpointReactorLive), Layer.provideMerge(ThreadLifecycleReactorLive), Layer.provideMerge(layer$1.pipe(Layer.provide(layer$69))), Layer.provideMerge(RuntimeReceiptBusLive));
92809
92925
  const ProviderSessionDirectoryLayerLive = ProviderSessionDirectoryLive.pipe(Layer.provide(layer$4));
92810
92926
  const ProviderLayerLive = ProviderServiceLive.pipe(Layer.provide(ProviderAdapterRegistryLive), Layer.provideMerge(ProviderSessionDirectoryLayerLive));
92811
92927
  const PersistenceLayerLive = Layer.empty.pipe(Layer.provideMerge(layerConfig));
92812
- const UsageAnalyticsLayerLive = layer$11.pipe(Layer.provide(PersistenceLayerLive), Layer.provide(layer$62));
92813
- const VcsDriverRegistryLayerLive = layer$39.pipe(Layer.provide(layer$40));
92814
- const SourceControlProviderRegistryLayerLive = layer$19.pipe(Layer.provide(Layer.mergeAll(layer$27, layer$25, layer$23, layer$21)), Layer.provideMerge(layer$41), Layer.provideMerge(VcsDriverRegistryLayerLive));
92815
- const GitManagerLayerLive = layer$18.pipe(Layer.provideMerge(layer$28), Layer.provideMerge(layer$41), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(layer$47));
92816
- const GitLayerLive = Layer.empty.pipe(Layer.provideMerge(GitManagerLayerLive), Layer.provideMerge(layer$41));
92817
- const GitWorkflowLayerLive = layer$17.pipe(Layer.provideMerge(VcsDriverRegistryLayerLive), Layer.provideMerge(GitLayerLive));
92818
- const SourceControlRepositoryServiceLayerLive = layer$6.pipe(Layer.provideMerge(layer$41), Layer.provideMerge(SourceControlProviderRegistryLayerLive));
92819
- const ReviewLayerLive = layer$14.pipe(Layer.provideMerge(layer$41), Layer.provideMerge(VcsDriverRegistryLayerLive));
92820
- const VcsLayerLive = Layer.empty.pipe(Layer.provideMerge(layer$40), Layer.provideMerge(VcsDriverRegistryLayerLive), Layer.provideMerge(layer$15.pipe(Layer.provide(VcsDriverRegistryLayerLive))), Layer.provideMerge(GitWorkflowLayerLive), Layer.provideMerge(ReviewLayerLive), Layer.provideMerge(SourceControlRepositoryServiceLayerLive), Layer.provideMerge(layer$16.pipe(Layer.provide(GitWorkflowLayerLive))));
92821
- const CheckpointingLayerLive = Layer.empty.pipe(Layer.provideMerge(layer$37), Layer.provideMerge(layer$38.pipe(Layer.provide(VcsDriverRegistryLayerLive))));
92822
- const PortScannerLayerLive = layer$54.pipe(Layer.provide(layer$63));
92823
- const TerminalLayerLive = layer$53.pipe(Layer.provide(PtyAdapterLive), Layer.provide(PortScannerLayerLive));
92824
- const BrowserRuntimeLayerLive = layer$35;
92928
+ const UsageAnalyticsLayerLive = layer$12.pipe(Layer.provide(PersistenceLayerLive), Layer.provide(layer$63));
92929
+ const VcsDriverRegistryLayerLive = layer$40.pipe(Layer.provide(layer$41));
92930
+ const SourceControlProviderRegistryLayerLive = layer$20.pipe(Layer.provide(Layer.mergeAll(layer$28, layer$26, layer$24, layer$22)), Layer.provideMerge(layer$42), Layer.provideMerge(VcsDriverRegistryLayerLive));
92931
+ const GitManagerLayerLive = layer$19.pipe(Layer.provideMerge(layer$29), Layer.provideMerge(layer$42), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(layer$48));
92932
+ const GitLayerLive = Layer.empty.pipe(Layer.provideMerge(GitManagerLayerLive), Layer.provideMerge(layer$42));
92933
+ const GitWorkflowLayerLive = layer$18.pipe(Layer.provideMerge(VcsDriverRegistryLayerLive), Layer.provideMerge(GitLayerLive));
92934
+ const SourceControlRepositoryServiceLayerLive = layer$6.pipe(Layer.provideMerge(layer$42), Layer.provideMerge(SourceControlProviderRegistryLayerLive));
92935
+ const ReviewLayerLive = layer$15.pipe(Layer.provideMerge(layer$42), Layer.provideMerge(VcsDriverRegistryLayerLive));
92936
+ const VcsLayerLive = Layer.empty.pipe(Layer.provideMerge(layer$41), Layer.provideMerge(VcsDriverRegistryLayerLive), Layer.provideMerge(layer$16.pipe(Layer.provide(VcsDriverRegistryLayerLive))), Layer.provideMerge(GitWorkflowLayerLive), Layer.provideMerge(ReviewLayerLive), Layer.provideMerge(SourceControlRepositoryServiceLayerLive), Layer.provideMerge(layer$17.pipe(Layer.provide(GitWorkflowLayerLive))));
92937
+ const CheckpointingLayerLive = Layer.empty.pipe(Layer.provideMerge(layer$38), Layer.provideMerge(layer$39.pipe(Layer.provide(VcsDriverRegistryLayerLive))));
92938
+ const PortScannerLayerLive = layer$55.pipe(Layer.provide(layer$64));
92939
+ const TerminalLayerLive = layer$54.pipe(Layer.provide(PtyAdapterLive), Layer.provide(PortScannerLayerLive));
92940
+ const BrowserRuntimeLayerLive = layer$36;
92825
92941
  const PreviewManagerLayerLive = layerServerHosted$1.pipe(Layer.provide(BrowserRuntimeLayerLive));
92826
- const ServerPreviewAutomationLayerLive = layer$33.pipe(Layer.provide(PreviewManagerLayerLive), Layer.provide(BrowserRuntimeLayerLive));
92942
+ const ServerPreviewAutomationLayerLive = layer$34.pipe(Layer.provide(PreviewManagerLayerLive), Layer.provide(BrowserRuntimeLayerLive));
92827
92943
  const PreviewLayerLive = Layer.mergeAll(BrowserRuntimeLayerLive, PreviewManagerLayerLive, ServerPreviewAutomationLayerLive, PortScannerLayerLive);
92828
- const WorkspaceEntriesLayerLive = layer$30.pipe(Layer.provide(layer$50));
92829
- const WorkspaceFileSystemLayerLive = layer$29.pipe(Layer.provide(layer$50), Layer.provide(WorkspaceEntriesLayerLive));
92830
- const WorkspaceLayerLive = Layer.mergeAll(layer$50, WorkspaceEntriesLayerLive, WorkspaceFileSystemLayerLive);
92831
- const ProjectFaviconResolverLayerLive = layer$49.pipe(Layer.provide(layer$50));
92832
- const AuthLayerLive = layer$65.pipe(Layer.provideMerge(PersistenceLayerLive), Layer.provide(layer$68));
92833
- const CloudManagedEndpointRuntimeLive = Layer.mergeAll(RelayClientLive, layer.pipe(Layer.provide(layer$68), Layer.provide(RelayClientLive)));
92944
+ const WorkspaceEntriesLayerLive = layer$31.pipe(Layer.provide(layer$51));
92945
+ const WorkspaceFileSystemLayerLive = layer$30.pipe(Layer.provide(layer$51), Layer.provide(WorkspaceEntriesLayerLive));
92946
+ const WorkspaceLayerLive = Layer.mergeAll(layer$51, WorkspaceEntriesLayerLive, WorkspaceFileSystemLayerLive);
92947
+ const ProjectFaviconResolverLayerLive = layer$50.pipe(Layer.provide(layer$51));
92948
+ const AuthLayerLive = layer$66.pipe(Layer.provideMerge(PersistenceLayerLive), Layer.provide(layer$69));
92949
+ const CloudManagedEndpointRuntimeLive = Layer.mergeAll(RelayClientLive, layer.pipe(Layer.provide(layer$69), Layer.provide(RelayClientLive)));
92834
92950
  const ProviderRuntimeLayerLive = ProviderSessionReaperLive.pipe(Layer.provideMerge(ProviderLayerLive), Layer.provideMerge(OrchestrationLayerLive));
92835
- const ProviderUsageLayerLive = layer$44.pipe(Layer.provide(layer$45), Layer.provideMerge(ProviderRuntimeLayerLive));
92836
- const KeybindingsLayerLive = layer$59.pipe(Layer.provide(layer$60));
92837
- const ServerSettingsLayerLive = layer$56.pipe(Layer.provide(layer$60), Layer.provide(layer$68));
92838
- const RuntimeCoreDependenciesLive = ReactorLayerLive.pipe(Layer.provideMerge(CheckpointingLayerLive), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(GitLayerLive), Layer.provideMerge(VcsLayerLive), Layer.provideMerge(ProviderUsageLayerLive), Layer.provideMerge(Layer.mergeAll(TerminalLayerLive, PreviewLayerLive)), Layer.provideMerge(Layer.mergeAll(PersistenceLayerLive, UsageAnalyticsLayerLive)), Layer.provideMerge(KeybindingsLayerLive), Layer.provideMerge(ProviderRegistryLive), Layer.provideMerge(ProviderInstanceRegistryHydrationLive), Layer.provideMerge(ProviderEventLoggersLive), Layer.provideMerge(OpenCodeRuntimeLive), Layer.provideMerge(Layer.mergeAll(ServerSettingsLayerLive, layer$10.pipe(Layer.provide(PersistenceLayerLive)))), Layer.provideMerge(WorkspaceLayerLive), Layer.provideMerge(ProjectFaviconResolverLayerLive), Layer.provideMerge(layer$61), Layer.provideMerge(layer$62), Layer.provideMerge(AuthLayerLive), Layer.provideMerge(layer$68), Layer.provideMerge(Layer.mergeAll(layer$64.pipe(Layer.provide(layer$68)), CloudManagedEndpointRuntimeLive)));
92839
- const StarterSuggestionsLayerLive = layer$9.pipe(Layer.provide(RuntimeCoreDependenciesLive));
92840
- const PromptEnhancementLayerLive = layer$8.pipe(Layer.provide(RuntimeCoreDependenciesLive));
92841
- const RuntimeDependenciesLive = RuntimeCoreDependenciesLive.pipe(Layer.provideMerge(StarterSuggestionsLayerLive), Layer.provideMerge(PromptEnhancementLayerLive), Layer.provideMerge(layer$55), Layer.provideMerge(layer$13), Layer.provideMerge(layer$12), Layer.provideMerge(layer$52), Layer.provideMerge(layer$58), Layer.provideMerge(layer$5.pipe(Layer.provide(layer$63))), Layer.provideMerge(layer$57), Layer.provide(layer$73));
92842
- const RuntimeServicesLive = layer$51.pipe(Layer.provideMerge(RuntimeDependenciesLive));
92951
+ const ProviderUsageLayerLive = layer$45.pipe(Layer.provide(layer$46), Layer.provideMerge(ProviderRuntimeLayerLive));
92952
+ const KeybindingsLayerLive = layer$60.pipe(Layer.provide(layer$61));
92953
+ const ServerSettingsLayerLive = layer$57.pipe(Layer.provide(layer$61), Layer.provide(layer$69));
92954
+ const RuntimeCoreDependenciesLive = ReactorLayerLive.pipe(Layer.provideMerge(CheckpointingLayerLive), Layer.provideMerge(SourceControlProviderRegistryLayerLive), Layer.provideMerge(GitLayerLive), Layer.provideMerge(VcsLayerLive), Layer.provideMerge(ProviderUsageLayerLive), Layer.provideMerge(Layer.mergeAll(TerminalLayerLive, PreviewLayerLive)), Layer.provideMerge(Layer.mergeAll(PersistenceLayerLive, UsageAnalyticsLayerLive)), Layer.provideMerge(KeybindingsLayerLive), Layer.provideMerge(ProviderRegistryLive), Layer.provideMerge(ProviderInstanceRegistryHydrationLive), Layer.provideMerge(ProviderEventLoggersLive), Layer.provideMerge(OpenCodeRuntimeLive), Layer.provideMerge(Layer.mergeAll(ServerSettingsLayerLive, layer$11.pipe(Layer.provide(PersistenceLayerLive)))), Layer.provideMerge(WorkspaceLayerLive), Layer.provideMerge(ProjectFaviconResolverLayerLive), Layer.provideMerge(layer$62), Layer.provideMerge(layer$63), Layer.provideMerge(AuthLayerLive), Layer.provideMerge(layer$69), Layer.provideMerge(Layer.mergeAll(layer$65.pipe(Layer.provide(layer$69)), CloudManagedEndpointRuntimeLive)));
92955
+ const StarterSuggestionsLayerLive = layer$10.pipe(Layer.provide(RuntimeCoreDependenciesLive));
92956
+ const PromptEnhancementLayerLive = layer$9.pipe(Layer.provide(RuntimeCoreDependenciesLive));
92957
+ const ServerVersionAdvisoryLayerLive = layer$8.pipe(Layer.provide(RuntimeCoreDependenciesLive), Layer.provide(FetchHttpClient.layer));
92958
+ const RuntimeDependenciesLive = RuntimeCoreDependenciesLive.pipe(Layer.provideMerge(StarterSuggestionsLayerLive), Layer.provideMerge(PromptEnhancementLayerLive), Layer.provideMerge(ServerVersionAdvisoryLayerLive), Layer.provideMerge(layer$56), Layer.provideMerge(layer$14), Layer.provideMerge(layer$13), Layer.provideMerge(layer$53), Layer.provideMerge(layer$59), Layer.provideMerge(layer$5.pipe(Layer.provide(layer$64))), Layer.provideMerge(layer$58), Layer.provide(layer$74));
92959
+ const RuntimeServicesLive = layer$52.pipe(Layer.provideMerge(RuntimeDependenciesLive));
92843
92960
  const routesLayer = Layer.mergeAll(Layer.mergeAll(HttpApiBuilder.layer(EnvironmentHttpApi).pipe(Layer.provide(authHttpApiLayer), Layer.provide(connectHttpApiLayer), Layer.provide(orchestrationHttpApiLayer), Layer.provide(serverEnvironmentHttpApiLayer), Layer.provide(environmentAuthenticatedAuthLayer)), otlpTracesProxyRouteLayer, providerUsageMetricsRouteLayer, assetRouteLayer, staticAndDevRouteLayer, websocketRpcRouteLayer), layer$2.pipe(Layer.provide(layer$3))).pipe(Layer.provide(browserApiCorsLayer), Layer.provide(httpCompressionLayer));
92844
- routesLayer.pipe(Layer.provide(layer$32));
92961
+ routesLayer.pipe(Layer.provide(layer$33));
92845
92962
  const serverHostedRoutesLayer = routesLayer.pipe(Layer.provide(layerServerHosted));
92846
92963
  const makeServerLayer = Layer.unwrap(Effect.gen(function* () {
92847
92964
  const config = yield* ServerConfig;
@@ -92893,7 +93010,7 @@ const makeServerLayer = Layer.unwrap(Effect.gen(function* () {
92893
93010
  if (typeof address === "string" || !("port" in address)) return;
92894
93011
  yield* Effect.forkScoped(Effect.sleep("250 millis").pipe(Effect.andThen(reconcileDesiredCloudLink(`http://127.0.0.1:${address.port}`)), Effect.retry({ times: 4 }), Effect.tap(() => Effect.logInfo("ZL Cloud desired link reconciled on startup")), Effect.catch((cause) => Effect.logWarning("Failed to reconcile ZL Cloud desired link on startup", { cause }))));
92895
93012
  }));
92896
- return Layer.mergeAll(HttpRouter.serve(serverHostedRoutesLayer, { disableLogger: !config.logWebSocketEvents }), httpListeningLayer, runtimeStateLayer, tailscaleServeLayer, cloudDesiredLinkReconcileLayer).pipe(Layer.provideMerge(RuntimeServicesLive), Layer.provideMerge(serverRelayBrokerTracingLayer), Layer.provideMerge(layer$43), Layer.provideMerge(HttpServerLive), Layer.provide(ObservabilityLive), Layer.provideMerge(FetchHttpClient.layer), Layer.provideMerge(layer$42), Layer.provideMerge(PlatformServicesLive));
93013
+ return Layer.mergeAll(HttpRouter.serve(serverHostedRoutesLayer, { disableLogger: !config.logWebSocketEvents }), httpListeningLayer, runtimeStateLayer, tailscaleServeLayer, cloudDesiredLinkReconcileLayer).pipe(Layer.provideMerge(RuntimeServicesLive), Layer.provideMerge(serverRelayBrokerTracingLayer), Layer.provideMerge(layer$44), Layer.provideMerge(HttpServerLive), Layer.provide(ObservabilityLive), Layer.provideMerge(FetchHttpClient.layer), Layer.provideMerge(layer$43), Layer.provideMerge(PlatformServicesLive));
92897
93014
  }));
92898
93015
  const runServer = Layer.launch(makeServerLayer);
92899
93016
  //#endregion
@@ -92909,7 +93026,7 @@ const serveCommand = Command.make("serve", { ...sharedServerCommandFlags }).pipe
92909
93026
  })));
92910
93027
  //#endregion
92911
93028
  //#region src/bin.ts
92912
- const CliRuntimeLayer = Layer.mergeAll(NodeServices.layer, layer$73);
93029
+ const CliRuntimeLayer = Layer.mergeAll(NodeServices.layer, layer$74);
92913
93030
  const cloudPublicConfigMissingMessage = "ZL Cloud commands are unavailable: this build is missing ZL Cloud public configuration.";
92914
93031
  var CloudPublicConfigMissingError = class extends CliError.UserError {
92915
93032
  get message() {