@cmmd-center/forge 0.13.131 → 0.13.132

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 (32) hide show
  1. package/dist/bin.cjs +176 -4
  2. package/dist/bin.mjs +197 -28
  3. package/dist/client/assets/{CanvasPanel-BBU-hosR.js → CanvasPanel-BZ55yFCm.js} +2 -2
  4. package/dist/client/assets/{DiffPanel-CsjpjcNO.js → DiffPanel-Ca2Lz8RB.js} +2 -2
  5. package/dist/client/assets/{DiffPanel.logic-D0tJmmDH.js → DiffPanel.logic-H_2wKBOQ.js} +2 -2
  6. package/dist/client/assets/{DiffWorkerPoolProvider-BaYfOG54.js → DiffWorkerPoolProvider-DSDTeZXk.js} +2 -2
  7. package/dist/client/assets/{PullRequestCodePanel-FsC6jwvA.js → PullRequestCodePanel-7YAkNwLW.js} +2 -2
  8. package/dist/client/assets/{ThemeEditorPanel-DHyAZtjN.js → ThemeEditorPanel-Bgrpa0cR.js} +2 -2
  9. package/dist/client/assets/{Virtualizer-Bt_R5UQD.js → Virtualizer-BzBcEfxL.js} +2 -2
  10. package/dist/client/assets/{WorkerPoolContext-DSayjMnB.js → WorkerPoolContext-8onOdaSo.js} +44 -44
  11. package/dist/client/assets/cmmdAuthRedirect-B_Ad6N4c.js +3 -0
  12. package/dist/client/assets/{cmmdForgeRuntimeListResource-DFLs7Ho_.js → cmmdForgeRuntimeListResource-Bl0ObO-g.js} +4 -4
  13. package/dist/client/assets/{currentForgeWorkspaceStore-B5FQv1gc.js → currentForgeWorkspaceStore-BqHfGv0o.js} +2 -2
  14. package/dist/client/assets/{dialog-mwxYKYq-.js → dialog-DMVibvkf.js} +2 -2
  15. package/dist/client/assets/index-zPBt45p3.js +301 -0
  16. package/dist/client/assets/{popover-BMHhFoom.js → popover-DZpHoNco.js} +2 -2
  17. package/dist/client/assets/{scroll-area-9mmf9iy-.js → scroll-area-dh4WduWB.js} +2 -2
  18. package/dist/client/assets/{sidebarV2CustomSnoozeDialog-vLvqIwRU.js → sidebarV2CustomSnoozeDialog-DsUlSvAq.js} +2 -2
  19. package/dist/client/assets/src-DpAPOFgC.js +3 -0
  20. package/dist/client/assets/{switch-DpGoyzXB.js → switch-Bt0PG_99.js} +2 -2
  21. package/dist/client/assets/{themePalette-BII_gGLK.js → themePalette-rKk-Jh5K.js} +2 -2
  22. package/dist/client/assets/{toggle-CiTk7ztA.js → toggle-CM3FO84q.js} +2 -2
  23. package/dist/client/assets/{toggle-group-B0GQb1vL.js → toggle-group-sUSKwOOz.js} +2 -2
  24. package/dist/client/assets/{tooltip-DlvXFVEM.js → tooltip-DHkQTarv.js} +2 -2
  25. package/dist/client/assets/{utils-BWD4ATf-.js → utils-B9FLzOgF.js} +2 -2
  26. package/dist/client/index.html +18 -18
  27. package/dist/forge-build.json +1 -1
  28. package/dist/{open-2-reBrpv.mjs → open-yHTUkd2Y.mjs} +3 -3
  29. package/package.json +1 -1
  30. package/dist/client/assets/cmmdAuthRedirect-B2FNK6pk.js +0 -3
  31. package/dist/client/assets/index-BFu1LcEj.js +0 -301
  32. package/dist/client/assets/src-DICOHE3E.js +0 -3
package/dist/bin.cjs CHANGED
@@ -20670,6 +20670,43 @@ var FilesystemBrowseError = class extends require_Schema$1.TaggedErrorClass()("F
20670
20670
  }
20671
20671
  };
20672
20672
  //#endregion
20673
+ //#region ../../packages/contracts/src/workspaceDirectory.ts
20674
+ const WORKSPACE_DIRECTORY_PATH_MAX_LENGTH = 512;
20675
+ const WorkspaceDirectoryEntryKind = require_Schema$1.Literals(["file", "directory"]);
20676
+ /**
20677
+ * One immediate child of a listed workspace directory.
20678
+ *
20679
+ * `hasChildren` is what lets the Files tree draw an expander only on
20680
+ * directories that open onto something, without listing the whole workspace
20681
+ * up front: a directory entry is one stat-sized readdir, not a recursive walk.
20682
+ */
20683
+ const WorkspaceDirectoryEntry = require_Schema$1.Struct({
20684
+ name: TrimmedNonEmptyString,
20685
+ kind: WorkspaceDirectoryEntryKind,
20686
+ hasChildren: require_Schema$1.Boolean
20687
+ });
20688
+ const WorkspaceListDirectoryInput = require_Schema$1.Struct({
20689
+ cwd: TrimmedNonEmptyString,
20690
+ relativePath: TrimmedString.check(require_Schema$1.isMaxLength(WORKSPACE_DIRECTORY_PATH_MAX_LENGTH))
20691
+ });
20692
+ const WorkspaceListDirectoryResult = require_Schema$1.Struct({ entries: require_Schema$1.ArraySchema(WorkspaceDirectoryEntry) });
20693
+ const WorkspaceListDirectoryFailure = require_Schema$1.Literals([
20694
+ "workspace_root_invalid",
20695
+ "path_outside_workspace",
20696
+ "read_directory_failed"
20697
+ ]);
20698
+ var WorkspaceListDirectoryError = class extends require_Schema$1.TaggedErrorClass()("WorkspaceListDirectoryError", {
20699
+ cwd: require_Schema$1.String,
20700
+ relativePath: require_Schema$1.String,
20701
+ failure: WorkspaceListDirectoryFailure,
20702
+ detail: require_Schema$1.String,
20703
+ cause: require_Schema$1.optional(require_Schema$1.Defect)
20704
+ }) {
20705
+ get message() {
20706
+ return this.detail;
20707
+ }
20708
+ };
20709
+ //#endregion
20673
20710
  //#region ../../packages/contracts/src/terminal.ts
20674
20711
  const DEFAULT_TERMINAL_ID = "default";
20675
20712
  const TrimmedNonEmptyStringSchema$3 = TrimmedNonEmptyString;
@@ -26292,6 +26329,7 @@ const WS_METHODS = {
26292
26329
  projectsWriteFile: "projects.writeFile",
26293
26330
  projectCheckoutDeletionPreview: "projectCheckoutDeletion.preview",
26294
26331
  projectCheckoutDeletionExecute: "projectCheckoutDeletion.execute",
26332
+ workspaceListDirectory: "workspace.listDirectory",
26295
26333
  workspaceReadFile: "workspace.readFile",
26296
26334
  workspaceBeginWriteFile: "workspace.beginWriteFile",
26297
26335
  workspaceWriteFileChunk: "workspace.writeFileChunk",
@@ -26603,6 +26641,17 @@ const WsWorkspaceCancelWriteFileRpc = make$29(WS_METHODS.workspaceCancelWriteFil
26603
26641
  success: BulkTransferCancelResult,
26604
26642
  error: BulkTransferError
26605
26643
  });
26644
+ /**
26645
+ * One workspace directory's immediate children, for the right panel's Files
26646
+ * tree. Read-scoped and confined to the workspace root on the server; the tree
26647
+ * expands one directory at a time through this method rather than listing the
26648
+ * whole workspace up front.
26649
+ */
26650
+ const WsWorkspaceListDirectoryRpc = make$29(WS_METHODS.workspaceListDirectory, {
26651
+ payload: WorkspaceListDirectoryInput,
26652
+ success: WorkspaceListDirectoryResult,
26653
+ error: WorkspaceListDirectoryError
26654
+ });
26606
26655
  const WsShellOpenInEditorRpc = make$29(WS_METHODS.shellOpenInEditor, {
26607
26656
  payload: OpenInEditorInput,
26608
26657
  error: OpenError$1
@@ -27026,7 +27075,7 @@ const WsRpcGroup = make$28(WsServerGetConfigRpc, WsServerRefreshProvidersRpc, Ws
27026
27075
  payload: UsageSummaryInput,
27027
27076
  success: UsageSummary,
27028
27077
  error: UsageReadError
27029
- }), WsPullRequestsListRpc, WsPullRequestsListStatsRpc, WsPullRequestsDetailRpc, WsPullRequestsActivityRpc, WsPullRequestsThreadCommentsRpc, WsPullRequestsDiffFileContentsRpc, WsPullRequestsRunActionRpc, WsPullRequestsUpdateRpc, WsPullRequestsCommentRpc, WsPullRequestsUpdateCommentRpc, WsPullRequestsSubmitReviewRpc, WsPullRequestsReplyToThreadRpc, WsPullRequestsSetThreadResolutionRpc, WsPullRequestsSetReactionRpc, WsPullRequestsInvalidateRpc, WsPullRequestsReviewerCandidatesRpc, WsPullRequestsRequestReviewersRpc, WsProjectsSearchContentsRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsProjectCheckoutDeletionPreviewRpc, WsProjectCheckoutDeletionExecuteRpc, WsWorkspaceReadFileRpc, WsWorkspaceBeginWriteFileRpc, WsWorkspaceWriteFileChunkRpc, WsWorkspaceCommitWriteFileRpc, WsWorkspaceCancelWriteFileRpc, WsShellOpenInEditorRpc, WsSubscribeGitStatusRpc, WsGitPullRpc, WsGitRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitListBranchesRpc, WsVcsListRefsRpc, WsVcsRefreshStatusRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsGitCreateWorktreeRpc, WsGitRemoveWorktreeRpc, WsGitCreateBranchRpc, WsGitCheckoutRpc, WsGitInitRpc, WsFilesystemBrowseRpc, WsProjectsReadFileRpc, WsReviewGetDiffPreviewRpc, WsCloudListRuntimesRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalSignalRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsBrowserOpenSessionRpc, WsBrowserListSessionsRpc, WsBrowserCloseSessionRpc, WsBrowserGetSessionRpc, WsBrowserCommandRpc, WsBrowserClearBrowsingDataRpc, WsBrowserAttachDisplayRpc, WsBrowserAddDisplayIceCandidateRpc, WsComputerInputRpc, WsDevTunnelRegisterRpc, WsDevTunnelUnregisterRpc, WsDevTunnelListRpc, WsThreadDevRuntimeGetRpc, WsThreadDevRuntimeAllocatePortRpc, WsThreadDevRuntimeReleaseRpc, WsWorkspaceEnvironmentPreflightRpc, WsWorkspaceEnsureScratchRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsProjectsListEntriesRpc, WsServerDiscoverSourceControlRpc, WsServerReportClientActivityRpc, WsSubscribeBrowserEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsSubscribeWorkspaceReadinessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationStreamTurnDiffRpc, WsOrchestrationStreamFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, make$29(WS_METHODS.assetsCreateUrl, {
27078
+ }), WsPullRequestsListRpc, WsPullRequestsListStatsRpc, WsPullRequestsDetailRpc, WsPullRequestsActivityRpc, WsPullRequestsThreadCommentsRpc, WsPullRequestsDiffFileContentsRpc, WsPullRequestsRunActionRpc, WsPullRequestsUpdateRpc, WsPullRequestsCommentRpc, WsPullRequestsUpdateCommentRpc, WsPullRequestsSubmitReviewRpc, WsPullRequestsReplyToThreadRpc, WsPullRequestsSetThreadResolutionRpc, WsPullRequestsSetReactionRpc, WsPullRequestsInvalidateRpc, WsPullRequestsReviewerCandidatesRpc, WsPullRequestsRequestReviewersRpc, WsProjectsSearchContentsRpc, WsProjectsSearchEntriesRpc, WsProjectsWriteFileRpc, WsProjectCheckoutDeletionPreviewRpc, WsProjectCheckoutDeletionExecuteRpc, WsWorkspaceReadFileRpc, WsWorkspaceListDirectoryRpc, WsWorkspaceBeginWriteFileRpc, WsWorkspaceWriteFileChunkRpc, WsWorkspaceCommitWriteFileRpc, WsWorkspaceCancelWriteFileRpc, WsShellOpenInEditorRpc, WsSubscribeGitStatusRpc, WsGitPullRpc, WsGitRefreshStatusRpc, WsGitRunStackedActionRpc, WsGitResolvePullRequestRpc, WsGitPreparePullRequestThreadRpc, WsGitListBranchesRpc, WsVcsListRefsRpc, WsVcsRefreshStatusRpc, WsSubscribeVcsStatusRpc, WsVcsPullRpc, WsVcsCreateWorktreeRpc, WsVcsRemoveWorktreeRpc, WsVcsCreateRefRpc, WsVcsSwitchRefRpc, WsVcsInitRpc, WsGitCreateWorktreeRpc, WsGitRemoveWorktreeRpc, WsGitCreateBranchRpc, WsGitCheckoutRpc, WsGitInitRpc, WsFilesystemBrowseRpc, WsProjectsReadFileRpc, WsReviewGetDiffPreviewRpc, WsCloudListRuntimesRpc, WsTerminalOpenRpc, WsTerminalAttachRpc, WsTerminalWriteRpc, WsTerminalResizeRpc, WsTerminalSignalRpc, WsTerminalClearRpc, WsTerminalRestartRpc, WsTerminalCloseRpc, WsBrowserOpenSessionRpc, WsBrowserListSessionsRpc, WsBrowserCloseSessionRpc, WsBrowserGetSessionRpc, WsBrowserCommandRpc, WsBrowserClearBrowsingDataRpc, WsBrowserAttachDisplayRpc, WsBrowserAddDisplayIceCandidateRpc, WsComputerInputRpc, WsDevTunnelRegisterRpc, WsDevTunnelUnregisterRpc, WsDevTunnelListRpc, WsThreadDevRuntimeGetRpc, WsThreadDevRuntimeAllocatePortRpc, WsThreadDevRuntimeReleaseRpc, WsWorkspaceEnvironmentPreflightRpc, WsWorkspaceEnsureScratchRpc, WsSubscribeTerminalEventsRpc, WsSubscribeTerminalMetadataRpc, WsProjectsListEntriesRpc, WsServerDiscoverSourceControlRpc, WsServerReportClientActivityRpc, WsSubscribeBrowserEventsRpc, WsSubscribeServerConfigRpc, WsSubscribeServerLifecycleRpc, WsSubscribeAuthAccessRpc, WsSubscribeWorkspaceReadinessRpc, WsOrchestrationDispatchCommandRpc, WsOrchestrationGetTurnDiffRpc, WsOrchestrationGetFullThreadDiffRpc, WsOrchestrationStreamTurnDiffRpc, WsOrchestrationStreamFullThreadDiffRpc, WsOrchestrationReplayEventsRpc, WsOrchestrationGetArchivedShellSnapshotRpc, WsOrchestrationSubscribeShellRpc, WsOrchestrationSubscribeThreadRpc, make$29(WS_METHODS.assetsCreateUrl, {
27030
27079
  payload: AssetsRpcSchemas.createUrl.input,
27031
27080
  success: AssetsRpcSchemas.createUrl.output,
27032
27081
  error: AssetAccessError
@@ -31776,6 +31825,11 @@ const RELAY_METHOD_POLICY_BASES = [
31776
31825
  requiredScope: "workspace.read",
31777
31826
  deliveryClass: "read"
31778
31827
  },
31828
+ {
31829
+ method: WS_METHODS.workspaceListDirectory,
31830
+ requiredScope: "workspace.read",
31831
+ deliveryClass: "read"
31832
+ },
31779
31833
  {
31780
31834
  method: WS_METHODS.workspaceReadFile,
31781
31835
  requiredScope: "workspace.read",
@@ -66353,7 +66407,7 @@ function normalizeNumberish(value) {
66353
66407
  }
66354
66408
  //#endregion
66355
66409
  //#region package.json
66356
- var version$1 = "0.13.131";
66410
+ var version$1 = "0.13.132";
66357
66411
  //#endregion
66358
66412
  //#region src/sentry.ts
66359
66413
  const SERVER_APP_NAME = "forge-server";
@@ -102706,6 +102760,22 @@ var WorkspaceFileSystem = class extends require_Schema$1.Service()("forge/worksp
102706
102760
  //#region src/workspace/Services/WorkspaceBulkTransfer.ts
102707
102761
  var WorkspaceBulkTransfer = class extends require_Schema$1.Service()("forge/workspace/Services/WorkspaceBulkTransfer") {};
102708
102762
  //#endregion
102763
+ //#region src/workspace/Services/WorkspaceDirectoryListing.ts
102764
+ /**
102765
+ * WorkspaceDirectoryListing - Effect service contract for one directory's
102766
+ * immediate children.
102767
+ *
102768
+ * Owns workspace-root-confined directory listings for the Files tree: the
102769
+ * caller names a workspace root (the thread's checkout) and a root-relative
102770
+ * directory, and gets that directory's children back, one readdir deep.
102771
+ *
102772
+ * @module WorkspaceDirectoryListing
102773
+ */
102774
+ /**
102775
+ * WorkspaceDirectoryListing - Service tag for workspace directory listings.
102776
+ */
102777
+ var WorkspaceDirectoryListing = class extends require_Schema$1.Service()("forge/workspace/Services/WorkspaceDirectoryListing") {};
102778
+ //#endregion
102709
102779
  //#region src/workspace/Services/WorkspaceReadinessState.ts
102710
102780
  var WorkspaceReadinessState = class extends require_Schema$1.Service()("forge/workspace/Services/WorkspaceReadinessState") {};
102711
102781
  //#endregion
@@ -108119,6 +108189,7 @@ const makeWsRpcLayer = (currentSessionId, currentUserId) => WsRpcGroup.toLayer(r
108119
108189
  const discoverSourceControl = yield* makeCachedSourceControlDiscovery;
108120
108190
  const workspaceFileSystem = yield* WorkspaceFileSystem;
108121
108191
  const workspaceBulkTransfer = yield* WorkspaceBulkTransfer;
108192
+ const workspaceDirectoryListing = yield* WorkspaceDirectoryListing;
108122
108193
  const projectCheckoutDeletion = yield* require_Schema$1.serviceOption(ProjectCheckoutDeletion);
108123
108194
  const workspaceReadinessState = yield* WorkspaceReadinessState;
108124
108195
  const projectSetupScriptRunner = yield* ProjectSetupScriptRunner;
@@ -108468,6 +108539,7 @@ const makeWsRpcLayer = (currentSessionId, currentUserId) => WsRpcGroup.toLayer(r
108468
108539
  blockers: ["deletion_authority_unavailable"]
108469
108540
  }), { "rpc.aggregate": "workspace" }),
108470
108541
  [WS_METHODS.workspaceReadFile]: (input) => observeRpcStream(WS_METHODS.workspaceReadFile, workspaceBulkTransfer.readFile(input), { "rpc.aggregate": "workspace" }),
108542
+ [WS_METHODS.workspaceListDirectory]: (input) => observeRpcEffect(WS_METHODS.workspaceListDirectory, workspaceDirectoryListing.list(input), { "rpc.aggregate": "workspace" }),
108471
108543
  [WS_METHODS.workspaceBeginWriteFile]: (input) => observeRpcEffect(WS_METHODS.workspaceBeginWriteFile, workspaceBulkTransfer.beginWrite(input), { "rpc.aggregate": "workspace" }),
108472
108544
  [WS_METHODS.workspaceWriteFileChunk]: (input) => observeRpcEffect(WS_METHODS.workspaceWriteFileChunk, workspaceBulkTransfer.writeChunk(input), { "rpc.aggregate": "workspace" }),
108473
108545
  [WS_METHODS.workspaceCommitWriteFile]: (input) => observeRpcEffect(WS_METHODS.workspaceCommitWriteFile, workspaceBulkTransfer.commitWrite(input), { "rpc.aggregate": "workspace" }),
@@ -298999,6 +299071,106 @@ const makeWorkspaceBulkTransfer = (options = {}) => require_Schema$1.gen(functio
298999
299071
  });
299000
299072
  const WorkspaceBulkTransferLive = require_Schema$1.effect(WorkspaceBulkTransfer, makeWorkspaceBulkTransfer());
299001
299073
  //#endregion
299074
+ //#region src/workspace/Layers/WorkspaceDirectoryListing.ts
299075
+ function isPathWithin(path, root, candidate) {
299076
+ const relative = path.relative(root, candidate);
299077
+ return relative.length === 0 || !relative.startsWith("..") && !path.isAbsolute(relative);
299078
+ }
299079
+ /**
299080
+ * Directories sort before files so the tree reads like every other file tree;
299081
+ * names compare case-insensitively, then by raw name so stable order survives
299082
+ * a platform that folds case differently.
299083
+ */
299084
+ function compareEntries(left, right) {
299085
+ if (left.kind !== right.kind) return left.kind === "directory" ? -1 : 1;
299086
+ const byName = left.name.localeCompare(right.name, void 0, { sensitivity: "accent" });
299087
+ return byName !== 0 ? byName : left.name < right.name ? -1 : left.name > right.name ? 1 : 0;
299088
+ }
299089
+ const makeWorkspaceDirectoryListing = require_Schema$1.gen(function* () {
299090
+ const fileSystem = yield* require_Path.FileSystem;
299091
+ const path = yield* require_Path.Path;
299092
+ const workspacePaths = yield* WorkspacePaths;
299093
+ return { list: require_Schema$1.fn("WorkspaceDirectoryListing.list")(function* (input) {
299094
+ const workspaceRoot = yield* workspacePaths.normalizeWorkspaceRoot(input.cwd).pipe(require_Schema$1.mapError(() => new WorkspaceListDirectoryError({
299095
+ cwd: input.cwd,
299096
+ relativePath: input.relativePath,
299097
+ failure: "workspace_root_invalid",
299098
+ detail: `Workspace root is not a usable directory: ${input.cwd}`
299099
+ })));
299100
+ const trimmed = input.relativePath.trim();
299101
+ if (path.isAbsolute(trimmed)) return yield* new WorkspaceListDirectoryError({
299102
+ cwd: input.cwd,
299103
+ relativePath: input.relativePath,
299104
+ failure: "path_outside_workspace",
299105
+ detail: "Directory listings must use workspace-relative paths."
299106
+ });
299107
+ const resolved = trimmed.length === 0 ? {
299108
+ absolutePath: workspaceRoot,
299109
+ relativePath: ""
299110
+ } : yield* workspacePaths.resolveRelativePathWithinRoot({
299111
+ workspaceRoot,
299112
+ relativePath: trimmed
299113
+ }).pipe(require_Schema$1.mapError(() => new WorkspaceListDirectoryError({
299114
+ cwd: input.cwd,
299115
+ relativePath: input.relativePath,
299116
+ failure: "path_outside_workspace",
299117
+ detail: `Directory is outside the workspace: ${input.relativePath}`
299118
+ })));
299119
+ const canonicalRoot = yield* fileSystem.realPath(workspaceRoot).pipe(require_Schema$1.orDie);
299120
+ const targetRealPath = yield* fileSystem.realPath(resolved.absolutePath).pipe(require_Schema$1.catch_(() => require_Schema$1.succeed(null)));
299121
+ if (targetRealPath === null) return yield* new WorkspaceListDirectoryError({
299122
+ cwd: input.cwd,
299123
+ relativePath: input.relativePath,
299124
+ failure: "read_directory_failed",
299125
+ detail: `Directory does not exist: ${input.relativePath || "."}`
299126
+ });
299127
+ if (!isPathWithin(path, canonicalRoot, targetRealPath)) return yield* new WorkspaceListDirectoryError({
299128
+ cwd: input.cwd,
299129
+ relativePath: input.relativePath,
299130
+ failure: "path_outside_workspace",
299131
+ detail: `Directory does not resolve inside the workspace: ${input.relativePath}`
299132
+ });
299133
+ const targetStat = yield* fileSystem.stat(targetRealPath).pipe(require_Schema$1.option);
299134
+ if (targetStat._tag === "None" || targetStat.value.type !== "Directory") return yield* new WorkspaceListDirectoryError({
299135
+ cwd: input.cwd,
299136
+ relativePath: input.relativePath,
299137
+ failure: "read_directory_failed",
299138
+ detail: `Not a directory: ${input.relativePath}`
299139
+ });
299140
+ const names = yield* fileSystem.readDirectory(targetRealPath).pipe(require_Schema$1.mapError((cause) => new WorkspaceListDirectoryError({
299141
+ cwd: input.cwd,
299142
+ relativePath: input.relativePath,
299143
+ failure: "read_directory_failed",
299144
+ detail: `Could not read directory: ${input.relativePath}`,
299145
+ cause
299146
+ })));
299147
+ return { entries: (yield* require_Schema$1.forEach(names, (name) => require_Schema$1.gen(function* () {
299148
+ const entryPath = path.join(targetRealPath, name);
299149
+ if ((yield* fileSystem.readLink(entryPath).pipe(require_Schema$1.option))._tag === "Some") return {
299150
+ name,
299151
+ kind: "file",
299152
+ hasChildren: false
299153
+ };
299154
+ const stat = yield* fileSystem.stat(entryPath).pipe(require_Schema$1.option);
299155
+ if (stat._tag === "None") return void 0;
299156
+ if (stat.value.type === "Directory") {
299157
+ const children = yield* fileSystem.readDirectory(entryPath).pipe(require_Schema$1.option);
299158
+ return {
299159
+ name,
299160
+ kind: "directory",
299161
+ hasChildren: children._tag === "Some" && children.value.length > 0
299162
+ };
299163
+ }
299164
+ return {
299165
+ name,
299166
+ kind: "file",
299167
+ hasChildren: false
299168
+ };
299169
+ }), { concurrency: 16 })).filter((entry) => entry !== void 0).toSorted(compareEntries) };
299170
+ }) };
299171
+ });
299172
+ const WorkspaceDirectoryListingLive = require_Schema$1.effect(WorkspaceDirectoryListing, makeWorkspaceDirectoryListing);
299173
+ //#endregion
299002
299174
  //#region src/workspace/Layers/WorkspacePaths.ts
299003
299175
  function toPosixRelativePath(input) {
299004
299176
  return input.replaceAll("\\", "/");
@@ -300611,7 +300783,7 @@ function resolveBuildCommitFromEnv(env) {
300611
300783
  * environment descriptor down instead of reporting an honest "unknown".
300612
300784
  */
300613
300785
  function readBakedBuildCommit() {
300614
- return "84e1e008ce3e3d30e5e80361598aa54ed7bda92d";
300786
+ return "b5d9623e21d1d5b372b4133d72c12136356d744e";
300615
300787
  }
300616
300788
  async function resolveServerBuildCommit(input) {
300617
300789
  if (isFullCommitSha(input.baked)) return input.baked;
@@ -325264,7 +325436,7 @@ const ProjectLeadSchedulerRuntimeLayerLive = makeProjectLeadSchedulerRuntimeLive
325264
325436
  const GitManagerLayerLive = GitManagerLive.pipe(require_Schema$1.provideMerge(ProjectSetupScriptRunnerLive), require_Schema$1.provideMerge(GitCoreLive), require_Schema$1.provideMerge(GitHubCliLive), require_Schema$1.provideMerge(RoutingTextGenerationLive.pipe(require_Schema$1.provide$1(TextGenerationUsageLive.pipe(require_Schema$1.provide$1(RuntimeReplicationOutboxLive), require_Schema$1.provide$1(TextGenerationSessionRepositoryLive))))));
325265
325437
  const GitLayerLive = require_Schema$1.empty$1.pipe(require_Schema$1.provideMerge(GitManagerLayerLive), require_Schema$1.provideMerge(GitStatusBroadcasterLive.pipe(require_Schema$1.provide$1(GitManagerLayerLive))), require_Schema$1.provideMerge(GitCoreLive));
325266
325438
  const TerminalLayerLive = TerminalManagerLive.pipe(require_Schema$1.provide$1(PtyAdapterLive));
325267
- const WorkspaceLayerLive = require_Schema$1.mergeAll(WorkspacePathsLive, ProjectCheckoutDeletionLive.pipe(require_Schema$1.provide$1(GitCoreLive), require_Schema$1.provide$1(ProjectionProjectRepositoryLive)), WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)), WorkspaceFileSystemLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive), require_Schema$1.provide$1(WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)))), WorkspaceBulkTransferLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive), require_Schema$1.provide$1(WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)))));
325439
+ const WorkspaceLayerLive = require_Schema$1.mergeAll(WorkspacePathsLive, ProjectCheckoutDeletionLive.pipe(require_Schema$1.provide$1(GitCoreLive), require_Schema$1.provide$1(ProjectionProjectRepositoryLive)), WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)), WorkspaceFileSystemLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive), require_Schema$1.provide$1(WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)))), WorkspaceBulkTransferLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive), require_Schema$1.provide$1(WorkspaceEntriesLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)))), WorkspaceDirectoryListingLive.pipe(require_Schema$1.provide$1(WorkspacePathsLive)));
325268
325440
  const AuthLayerLive = ServerAuthLive.pipe(require_Schema$1.provideMerge(PersistenceLayerLive), require_Schema$1.provide$1(ServerSecretStoreLayerLive));
325269
325441
  const MiscRuntimeLayerLive = require_Schema$1.mergeAll(AnalyticsServiceLayerLive, OpenLive, ServerLifecycleEventsLive, layer$4);
325270
325442
  const RuntimeDependenciesWithoutPullRequestsLive = ReactorLayerLive.pipe(require_Schema$1.provideMerge(CheckpointingLayerLive), require_Schema$1.provideMerge(GitLayerLive), require_Schema$1.provideMerge(OrchestrationLayerLive), require_Schema$1.provideMerge(ProviderLayerLive), require_Schema$1.provideMerge(TerminalLayerLive), require_Schema$1.provideMerge(AgentBrowserManagerLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(ThreadDevRuntimeLive, DevTunnelLive.pipe(require_Schema$1.provide$1(ThreadDevRuntimeLive)))), require_Schema$1.provideMerge(PersistenceLayerLive), require_Schema$1.provideMerge(KeybindingsLive), require_Schema$1.provideMerge(ProviderRegistryLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(ServerSettingsLive, UsageServiceLive.pipe(require_Schema$1.provide$1(ServerSettingsLive), require_Schema$1.provide$1(UsageSessionLookupLive), require_Schema$1.provide$1(UsageRecordedSourceLive.pipe(require_Schema$1.provide$1(OrchestrationLayerLive), require_Schema$1.provide$1(RuntimeReplicationOutboxLive), require_Schema$1.provide$1(ProviderSessionRuntimeRepositoryLive), require_Schema$1.provide$1(TextGenerationSessionRepositoryLive)))))), require_Schema$1.provideMerge(WorkspaceLayerLive), require_Schema$1.provideMerge(WorkspaceReadinessStateLive), require_Schema$1.provideMerge(ProjectFaviconResolverLive), require_Schema$1.provideMerge(RepositoryIdentityResolverLive), require_Schema$1.provideMerge(ServerEnvironmentLive), require_Schema$1.provideMerge(AuthLayerLive), require_Schema$1.provideMerge(ServerSecretStoreLayerLive), require_Schema$1.provideMerge(require_Schema$1.mergeAll(CloudRedisCoordinationLive, CloudStateSyncLive.pipe(require_Schema$1.provide$1(PersistenceLayerLive)))), require_Schema$1.provideMerge(MiscRuntimeLayerLive));