@overdeck/desktop 0.40.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (19) hide show
  1. package/package.json +1 -1
  2. package/server/public/assets/{chunk-BO2N2NFS-CW1ZdFdY.js → chunk-BO2N2NFS-66nJvb0Y.js} +4 -4
  3. package/server/public/assets/{diagram-OG6HWLK6-Cw_BgPPR.js → diagram-OG6HWLK6-CnpgVLBi.js} +1 -1
  4. package/server/public/assets/{dist-CGMAxsiA.js → dist-BFQhMul-.js} +3 -3
  5. package/server/public/assets/{dist-913yenhq.js → dist-CHQsz1no.js} +1 -1
  6. package/server/public/assets/{ganttDiagram-6RSMTGT7-CUPZhXKC.js → ganttDiagram-6RSMTGT7-CFA1TEUl.js} +1 -1
  7. package/server/public/assets/{highlighted-body-OFNGDK62-PZCZRTma.js → highlighted-body-OFNGDK62-DbRNyBRD.js} +1 -1
  8. package/server/public/assets/{index-D_duUQjN.css → index-By2KY9vK.css} +1 -1
  9. package/server/public/assets/{index-2sJIy1Mo.js → index-Cc9hNbWG.js} +129 -129
  10. package/server/public/assets/{linear-CaWsupFC.js → linear-CveL56V8.js} +1 -1
  11. package/server/public/assets/mermaid-GHXKKRXX-BM8E6NEr.js +1 -0
  12. package/server/public/assets/{pieDiagram-4H26LBE5-BhU2fIWh.js → pieDiagram-4H26LBE5-BWMp3bl2.js} +1 -1
  13. package/server/public/assets/{prod-Dk-iWRhQ.js → prod-BtqEDkif.js} +4 -4
  14. package/server/public/assets/{quadrantDiagram-W4KKPZXB-DGOsJ_nS.js → quadrantDiagram-W4KKPZXB-BXfFUtKT.js} +1 -1
  15. package/server/public/assets/{sankeyDiagram-5OEKKPKP-CzirInk6.js → sankeyDiagram-5OEKKPKP-D2A4SsFI.js} +1 -1
  16. package/server/public/assets/{xychartDiagram-2RQKCTM6-CG8FHgaF.js → xychartDiagram-2RQKCTM6-BQuEJ-Sx.js} +1 -1
  17. package/server/public/index.html +2 -2
  18. package/server/server.js +296 -109
  19. package/server/public/assets/mermaid-GHXKKRXX-CD7SbVD6.js +0 -1
package/server/server.js CHANGED
@@ -1,90 +1,90 @@
1
1
  import { a as __toCommonJS, i as __require, o as __toESM, t as __commonJSMin } from "./rolldown-runtime-DNCzzKnI.js";
2
- import { C as isDevMode, E as sessionFilePath, S as init_paths, T as resolveOhmypiExtensionPath, _ as SYNC_SOURCES, l as LOGS_DIR, o as CLAUDE_DIR, t as AGENTS_DIR, u as OVERDECK_HOME, w as packageRoot, x as getOverdeckHome, y as encodeClaudeProjectDir } from "./paths-jZvjmiV6.js";
2
+ import { C as init_paths, D as sessionFilePath, E as resolveOhmypiExtensionPath, S as getOverdeckHome, T as packageRoot, _ as SYNC_SOURCES, l as LOGS_DIR, o as CLAUDE_DIR, t as AGENTS_DIR, u as OVERDECK_HOME, w as isDevMode, x as getLegacyHome, y as encodeClaudeProjectDir } from "./paths-tknG80xs.js";
3
3
  import { A as init_model_capabilities, B as FsError, C as defaultBackgroundAiFeatures, E as MODEL_DEPRECATIONS, F as require_dist$1, H as GitHubApiError, J as TrackerError, K as ProcessSpawnError, M as resolveModelIdSync, N as init_js_yaml, O as getModelEffortLevelsSync, P as jsYaml, S as updateConversationsConfig, T as MODEL_CAPABILITIES, X as init_errors, _ as loadConfigNoMigration, a as ROLE_EFFORTS, b as mergeTtsDaemonConfigs, c as getConversationSearchConfigSync, d as getDefaultTtsDaemonConfig, f as getGlobalConfigPath, g as isTldrEnabledSync, i as PARENT_MODEL_REF, j as modelSupportsImagesSync, k as hasModelCapabilitySync, l as getConversationsConfig, m as isClaudeCodeChannelsEnabled, n as DEFAULT_ROLES, o as clearConfigCache, p as init_config_yaml, r as DEFAULT_WORKHORSES, s as computeModelOrigin, t as COMPLIANCE_MODES, v as loadConfigSync, w as init_registry, x as resolveModel, y as mergeConfigs } from "./config-yaml-DKmldcyb.js";
4
- import { A as getAgentJsonlMtime, B as isTrustedOriginForHost, C as resolveAgentHarness, D as resolvePiSessionPath, E as resolveJsonlPath, F as init_agent_input_detection, G as init_codex_auth, H as validateOrigin$1, I as parseCodexApprovalPrompt, K as httpHandler, L as getHeaderFromMap, M as scanPendingInputsPromise, N as detectAwaitingInputForAgent, O as computeAgentEnrichment, P as detectAwaitingInputFromPaneSync, S as readLauncherPinnedSessionId, T as resolveCodexRolloutPath, U as validateOriginHeaders, W as checkCodexAuthStatus, X as init_http_helpers, Z as jsonResponse, _ as getRuntimeForAgent, a as init_agent_projection, b as init_health, c as init_git_info, d as getSystemHealthSnapshot, f as init_system_health_service, g as init_service, h as getCloisterService, j as init_agent_enrichment, n as init_agents, o as saveAgentStateAndEmitEvent, q as init_http_handler, s as saveAgentStateAndEmitEventProgram, t as agentsRouteLayer, u as resolveConversationGitInfo, v as init_runtimes, w as resolveClaudeSessionId, x as init_jsonl_resolver, y as getAgentHealth, z as init_origin_validation } from "./agents-L3yA6mO7.js";
4
+ import { A as getAgentJsonlMtime, B as isTrustedOriginForHost, C as resolveAgentHarness, D as resolvePiSessionPath, E as resolveJsonlPath, F as init_agent_input_detection, G as init_codex_auth, H as validateOrigin$1, I as parseCodexApprovalPrompt, K as httpHandler, L as getHeaderFromMap, M as scanPendingInputsPromise, N as detectAwaitingInputForAgent, O as computeAgentEnrichment, P as detectAwaitingInputFromPaneSync, S as readLauncherPinnedSessionId, T as resolveCodexRolloutPath, U as validateOriginHeaders, W as checkCodexAuthStatus, X as init_http_helpers, Z as jsonResponse, _ as getRuntimeForAgent, a as init_agent_projection, b as init_health, c as init_git_info, d as getSystemHealthSnapshot, f as init_system_health_service, g as init_service, h as getCloisterService, j as init_agent_enrichment, n as init_agents, o as saveAgentStateAndEmitEvent, q as init_http_handler, s as saveAgentStateAndEmitEventProgram, t as agentsRouteLayer, u as resolveConversationGitInfo, v as init_runtimes, w as resolveClaudeSessionId, x as init_jsonl_resolver, y as getAgentHealth, z as init_origin_validation } from "./agents-cMZF-UTW.js";
5
5
  import { a as init_activity_logger, i as emitDashboardLifecycleSync, n as emitActivityEntrySync, r as emitActivityTtsSync } from "./activity-logger-DW1XjyNu.js";
6
- import { A as init_paths$1, O as OVERDECK_MIGRATION_PATH, d as getOverdeckDatabaseSync, f as init_infra, i as DbLive, k as getOverdeckDatabasePath, u as TmuxLive } from "./infra-V576nNrp.js";
6
+ import { A as init_paths$1, O as OVERDECK_MIGRATION_PATH, d as getOverdeckDatabaseSync, f as init_infra, i as DbLive, k as getOverdeckDatabasePath, u as TmuxLive } from "./infra-uzOlAtyu.js";
7
7
  import { n as openDatabase, t as init_driver } from "./driver-CYPr28GN.js";
8
8
  import { a as parseIssueIdSync, n as extractPrefixSync, r as init_issue_id } from "./issue-id-9iS2dwrp.js";
9
- import { E as registerProjectSync, N as setProjectAutoMergeDefaultSync, O as resolveProjectFromIssue, _ as init_projects, b as listProjects, d as getProjectSync, k as resolveProjectFromIssueSync, l as getIssuePrefix, r as extractTeamPrefix, s as findProjectByTeamSync, x as listProjectsSync } from "./projects-BpstKN1Q.js";
10
- import { B as init_ui_theme, D as listSessionNames, F as sessionExists, G as init_child_env, H as BLANKED_PROVIDER_ENV, L as setOption, N as sendKeys, P as sendRawKeystroke, S as isHarnessProcessAlive, U as buildChildEnvSync, V as setUiTheme, W as buildChildEnvWithoutTmuxSync, b as getWindowDimensions, c as ensureManagedTmuxContextOnce, d as exactPaneTarget, i as capturePane, j as resizeWindow, k as listSessionsSync, n as buildTmuxArgs, o as createSession, p as findManagedServerPidSync, w as killSession, x as init_tmux } from "./tmux-DuzZlrCh.js";
11
- import { a as init_event_store, i as initEventStore, n as getEventStore, r as getSharedDb } from "./event-store-hdZZ-JnB.js";
9
+ import { E as registerProjectSync, N as setProjectAutoMergeDefaultSync, O as resolveProjectFromIssue, _ as init_projects, b as listProjects, d as getProjectSync, k as resolveProjectFromIssueSync, l as getIssuePrefix, r as extractTeamPrefix, s as findProjectByTeamSync, x as listProjectsSync } from "./projects-9JNVPnww.js";
10
+ import { B as init_ui_theme, D as listSessionNames, F as sessionExists, G as init_child_env, H as BLANKED_PROVIDER_ENV, L as setOption, N as sendKeys, P as sendRawKeystroke, S as isHarnessProcessAlive, U as buildChildEnvSync, V as setUiTheme, W as buildChildEnvWithoutTmuxSync, b as getWindowDimensions, c as ensureManagedTmuxContextOnce, d as exactPaneTarget, i as capturePane, j as resizeWindow, k as listSessionsSync, n as buildTmuxArgs, o as createSession, p as findManagedServerPidSync, w as killSession, x as init_tmux } from "./tmux-fuzPZ-S7.js";
11
+ import { a as init_event_store, i as initEventStore, n as getEventStore, r as getSharedDb } from "./event-store-Dx53k8E7.js";
12
12
  import { _ as MemoryObservation, d as PanRpcGroup, f as WS_METHODS, h as EDITORS, i as FlywheelStats, m as FlywheelStatus, n as ContextLayerSaveRequest, p as FlywheelRunId, r as ContextPreviewRequest, t as init_src, u as PanRpcError } from "./src-wyzx0Z0w.js";
13
- import { _ as setReviewStatus, a as fixStuckCommentedReviews, c as getReviewStatusSync, l as init_review_status, n as clearReviewStatus, o as fixStuckReadyForMerge, r as clearStuckMergeStatuses, s as getReviewStatus, u as loadReviewStatuses } from "./review-status-D_w3kLBb.js";
14
- import { a as EventStoreService, c as ReadModelService, d as init_read_model, f as toAgentResolution, i as init_issue_lifecycle, l as ReadModelServiceLive, m as toRole, n as IssueLifecycleLive, o as EventStoreServiceLive, p as toAgentStatus, s as init_domain_services } from "./issue-lifecycle-D4DcNPZ-.js";
15
- import { n as AgentsResolverLive, o as init_agents$1 } from "./agents-BOX5w2kT.js";
16
- import { i as init_paths$2, l as resolveObservationsFile, r as ensureParentDir, s as resolveIssueMemoryRoot, t as assertMemorySafeSegment } from "./paths-zPOV7_VB.js";
17
- import { i as recordBriefingSessionStart, n as ensureSessionContextBriefingFile, r as init_briefing_freshness, t as appendFreshBriefingUpdate } from "./briefing-freshness--_mHhmzI.js";
18
- import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-5mIu-zwl.js";
13
+ import { _ as setReviewStatus, a as fixStuckCommentedReviews, c as getReviewStatusSync, l as init_review_status, n as clearReviewStatus, o as fixStuckReadyForMerge, r as clearStuckMergeStatuses, s as getReviewStatus, u as loadReviewStatuses } from "./review-status-rO7znkga.js";
14
+ import { a as EventStoreService, c as ReadModelService, d as init_read_model, f as toAgentResolution, i as init_issue_lifecycle, l as ReadModelServiceLive, m as toRole, n as IssueLifecycleLive, o as EventStoreServiceLive, p as toAgentStatus, s as init_domain_services } from "./issue-lifecycle-BIdrF-U5.js";
15
+ import { n as AgentsResolverLive, o as init_agents$1 } from "./agents-BX0F_1V2.js";
16
+ import { i as init_paths$2, l as resolveObservationsFile, r as ensureParentDir, s as resolveIssueMemoryRoot, t as assertMemorySafeSegment } from "./paths-3zDoFwPl.js";
17
+ import { i as recordBriefingSessionStart, n as ensureSessionContextBriefingFile, r as init_briefing_freshness, t as appendFreshBriefingUpdate } from "./briefing-freshness-BVjg7adf.js";
18
+ import { n as listFeatureRegistryEntries, t as init_feature_registry_storage } from "./feature-registry-storage-BjEVR7fj.js";
19
19
  import { a as diffAgainstMainFiles, c as diffFilesAgainstHead, d as findCommitAtTime, i as diffAgainstMain, l as diffPatchFilesAgainstHead, m as listCheckpoints, o as diffCheckpointFiles, p as init_checkpoint_manager, s as diffCheckpoints, t as captureCheckpoint, u as diffPatchSinceCommit } from "./checkpoint-manager-B8USYP2J.js";
20
- import { _ as init_cost, a as init_costs, c as init_reconciler, d as migrateAllSessionsSync, f as getCostsForIssueSync, g as CostResolverLive, h as CostResolver, i as resolveIssueHeadlineCost, l as reconcile, m as syncCacheSync, n as init_running_agents_cache, o as init_sync_wal, p as rebuildCacheSync, r as init_issue_cost_resolver, s as syncWalFromAllProjects, t as getCachedRunningAgents, u as reconcilePiTranscripts } from "./running-agents-cache-CoFoCGgg.js";
21
- import { i as init_agent_state_service, n as AgentStateServiceLive } from "./agent-state-service-CoVk44dM.js";
22
- import { a as init_tracker_config, i as initTrackerConfigCache, n as getLinearApiKey, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-Clt5yfo6.js";
20
+ import { _ as init_cost, a as init_costs, c as init_reconciler, d as migrateAllSessionsSync, f as getCostsForIssueSync, g as CostResolverLive, h as CostResolver, i as resolveIssueHeadlineCost, l as reconcile, m as syncCacheSync, n as init_running_agents_cache, o as init_sync_wal, p as rebuildCacheSync, r as init_issue_cost_resolver, s as syncWalFromAllProjects, t as getCachedRunningAgents, u as reconcilePiTranscripts } from "./running-agents-cache-bwJnbB6r.js";
21
+ import { i as init_agent_state_service, n as AgentStateServiceLive } from "./agent-state-service-BUhXCI_4.js";
22
+ import { a as init_tracker_config, i as initTrackerConfigCache, n as getLinearApiKey, r as getRallyConfig, t as getGitHubConfig } from "./tracker-config-NzBQEKKo.js";
23
23
  import { d as init_typed_errors, l as WorkspaceCreateError, n as AgentStartError, r as BeadsNotInitialized, t as AgentAlreadyRunning, u as WorkspaceNotFound } from "./typed-errors-BRDFMoss.js";
24
- import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-DCCtUBEM.js";
25
- import { i as init_github_client, r as GitHubClientOptionalLive } from "./github-client-Dxt2nXAf.js";
26
- import { i as init_rally_client, r as RallyClientOptionalLive } from "./rally-client-CFxmPAi2.js";
27
- import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-k1WKm_mu.js";
28
- import { a as CacheService, i as startSharedIssueService, n as init_issue_service_singleton, o as init_cache_service, r as issue_service_singleton_exports, s as parseIntegerHeader, t as getSharedIssueService } from "./issue-service-singleton-0AVb8ADy.js";
29
- import { i as ensureInternalTokenSync, s as init_internal_token } from "./internal-token-R4gY8z44.js";
30
- import { a as setPipelineHandlerSync, t as init_pipeline_notifier } from "./pipeline-notifier-C5ZCbH9K.js";
31
- import { c as init_review_status_sync, i as getMergeBlockerReconcileCandidates, r as getAllReviewStatusesFromDb } from "./review-status-sync-DGaMxP95.js";
32
- import { a as getCostForIssueAggregateSync, c as getDailyTrendsSync, l as getModelRollupSync, n as getBackgroundCostBySourceSync, r as getCavemanExperimentDataSync, s as getCostsByIssueSync, u as init_cost_sync } from "./cost-sync-CI1Gfwnb.js";
33
- import { C as transitionToMerging, _ as markFailed, c as isFlywheelGloballyPaused, d as listDuePendingAutoMerges, f as listProblemAutoMerges, g as markBlocked, n as getActionableAutoMerge, o as init_merge_sync, t as cancelPending, u as listActiveAutoMerges, v as markMerged, x as scheduleAutoMergeWithResult, y as requeueToPending } from "./merge-sync-CKUHrPQl.js";
34
- import { A as PAN_CONTINUE_FILENAME, I as init_types, _ as findSpecByIssue, a as init_io, j as PAN_DIRNAME, l as readWorkspacePlan, n as findPlan, s as readPlan, y as init_specs } from "./io-cnr9mD4B.js";
35
- import { C as restartCliproxy, S as readPidFile, T as stopCliproxy, b as isCliproxyInstalled, d as getCliproxyAuthDir, o as bridgeCodexAuthToCliproxy, v as init_cliproxy, w as startCliproxy, x as isCliproxyRunning, y as installCliproxy } from "./cliproxy-O755gANb.js";
36
- import { f as init_config, m as loadConfigSync$1, s as getDashboardApiUrlSync } from "./config-B8QT8B9M.js";
24
+ import { i as init_linear_client, r as LinearClientOptionalLive, t as LinearClient } from "./linear-client-BRwBC1ub.js";
25
+ import { i as init_github_client, r as GitHubClientOptionalLive } from "./github-client-CLhcTuCU.js";
26
+ import { i as init_rally_client, r as RallyClientOptionalLive } from "./rally-client-C51tvXfE.js";
27
+ import { i as resolveGitHubIssueSync, n as init_tracker_utils } from "./tracker-utils-zk9EsKQs.js";
28
+ import { a as CacheService, i as startSharedIssueService, n as init_issue_service_singleton, o as init_cache_service, r as issue_service_singleton_exports, s as parseIntegerHeader, t as getSharedIssueService } from "./issue-service-singleton-Cq0mMaNH.js";
29
+ import { i as ensureInternalTokenSync, s as init_internal_token } from "./internal-token-C8Bg8u5G.js";
30
+ import { a as setPipelineHandlerSync, t as init_pipeline_notifier } from "./pipeline-notifier-BOcC7C98.js";
31
+ import { c as init_review_status_sync, i as getMergeBlockerReconcileCandidates, r as getAllReviewStatusesFromDb } from "./review-status-sync-D1KZJHeS.js";
32
+ import { a as getCostForIssueAggregateSync, c as getDailyTrendsSync, l as getModelRollupSync, n as getBackgroundCostBySourceSync, r as getCavemanExperimentDataSync, s as getCostsByIssueSync, u as init_cost_sync } from "./cost-sync-DJZXPGqK.js";
33
+ import { C as transitionToMerging, _ as markFailed, c as isFlywheelGloballyPaused, d as listDuePendingAutoMerges, f as listProblemAutoMerges, g as markBlocked, n as getActionableAutoMerge, o as init_merge_sync, t as cancelPending, u as listActiveAutoMerges, v as markMerged, x as scheduleAutoMergeWithResult, y as requeueToPending } from "./merge-sync-bO1W7sg-.js";
34
+ import { A as PAN_CONTINUE_FILENAME, I as init_types, _ as findSpecByIssue, a as init_io, j as PAN_DIRNAME, l as readWorkspacePlan, n as findPlan, s as readPlan, y as init_specs } from "./io-BsBjfxgG.js";
35
+ import { C as restartCliproxy, S as readPidFile, T as stopCliproxy, b as isCliproxyInstalled, d as getCliproxyAuthDir, o as bridgeCodexAuthToCliproxy, v as init_cliproxy, w as startCliproxy, x as isCliproxyRunning, y as installCliproxy } from "./cliproxy-shDfFOk1.js";
36
+ import { f as init_config, m as loadConfigSync$1, s as getDashboardApiUrlSync } from "./config-DrT6EhRW.js";
37
37
  import { n as require_auth_errors, r as require_token_error, t as require_token_util } from "./token-util-CROoF5ic.js";
38
- import { $ as updateSpawnError, A as listConversations, B as setClearedToConvId, C as getStuckForks, E as init_conversations, G as setForkRequest, H as setConversationHarness, J as updateConversationDeliveryMethod, K as unarchiveConversation, L as recordConversationHandoff, M as markConversationActive, N as markConversationEnded, O as listActiveConversations, P as markConversationRunning, Q as updateLastAttached, R as removeFavorite, S as getConversationByTmuxSession, T as incrementForkRetryCount, U as setConversationModel, V as setConversationClaudeSessionId, W as setFavorite, X as updateConversationTitle, Y as updateConversationForkFallbackReason, Z as updateForkStatus, _ as canReplaceTitle, b as getConversationById, g as backfillConversationModel, h as archiveConversation, j as listFavoritedIds, k as listArchivedConversationsWithEnrichment, q as updateConversationCost, v as createConversation, w as hasOtherActiveConversationOnTmuxSession, x as getConversationByName, y as getConversationByClaudeSessionId } from "./conversations-_HbvcXw1.js";
39
- import { _ as init_codex_conversation_parser, a as init_conversation_service, c as parseFromLastCompactBoundary, d as init_ohmypi_conversation_parser, f as isOhmypiSessionFile, g as parsePiConversationMessages, h as isPiSessionFile, i as gateSnapshotEmission, l as summarizeConversationActivity, m as init_pi_conversation_parser, n as contextUsageFromParseResult, o as parseConversationMessages, p as parseOhmypiConversationMessages, t as computeContextUsage, u as watchConversation, v as parseCodexConversationMessages } from "./conversation-service-CJimCSkV.js";
38
+ import { $ as updateForkStatus, A as listArchivedConversationsWithEnrichment, C as getStuckForks, D as init_conversations, E as incrementForkRetryCount, F as markConversationRunning, G as setFavorite, H as setConversationClaudeSessionId, J as unarchiveConversation, K as setForkRequest, M as listFavoritedIds, N as markConversationActive, O as isAgentConversationName, P as markConversationEnded, Q as updateConversationTitle, R as recordConversationHandoff, S as getConversationByTmuxSession, T as importLegacyConversation, U as setConversationHarness, V as setClearedToConvId, W as setConversationModel, X as updateConversationDeliveryMethod, Y as updateConversationCost, Z as updateConversationForkFallbackReason, _ as canReplaceTitle, b as getConversationById, et as updateLastAttached, g as backfillConversationModel, h as archiveConversation, j as listConversations, k as listActiveConversations, q as setImportedConversationLinks, tt as updateSpawnError, v as createConversation, w as hasOtherActiveConversationOnTmuxSession, x as getConversationByName, y as getConversationByClaudeSessionId, z as removeFavorite } from "./conversations-Db3UIeTM.js";
39
+ import { _ as init_codex_conversation_parser, a as init_conversation_service, c as parseFromLastCompactBoundary, d as init_ohmypi_conversation_parser, f as isOhmypiSessionFile, g as parsePiConversationMessages, h as isPiSessionFile, i as gateSnapshotEmission, l as summarizeConversationActivity, m as init_pi_conversation_parser, n as contextUsageFromParseResult, o as parseConversationMessages, p as parseOhmypiConversationMessages, t as computeContextUsage, u as watchConversation, v as parseCodexConversationMessages } from "./conversation-service-IG9dJkAf.js";
40
40
  import { i as getClaudePermissionFlagsStringSync, o as init_claude_permissions, s as resolvePermissionModeSync, t as BYPASS_PERMISSION_MODE } from "./claude-permissions-BqmkURDk.js";
41
- import { l as init_codex, s as findRolloutPath } from "./codex-B8fyHBID.js";
42
- import { $t as init_claude_auth, A as getAgentStateFilePath, At as init_operator_interventions, B as init_agents$2, Bt as init_pty_token, C as dismissDevChannelsDialog, D as getAgentRuntimeState, Dt as captureTranscriptUserRecordSnapshot, E as getAgentRuntimeBaseCommand, Et as writeChannelsBridgeMcpConfig, F as getProviderEnvForModel, G as listAgentStates, Ht as init_bridge_token, I as getProviderExportsForModel, K as listRunningAgents, O as getAgentRuntimeStateSync, Ot as init_transcript_landing, P as getProviderAuthMode, Qt as getClaudeAuthStatus, Rt as init_pi_fifo, St as waitForReadySignal, T as getAgentDir, Ut as writeBridgeTokenSync, V as injectPiConversationMemory, Vt as writePtyToken, Xt as init_agent_record_sync, Z as messageAgent, Zt as readAgentHarnessModelRecordSync, en as getOpenAIAuthStatus, h as clearReadySignal, j as getAgentStateSync, jt as operatorInterventionEvent, k as getAgentState, kt as probeTranscriptSince, tn as init_openai_auth, v as deliverAgentMessage, zt as piFifoPaths } from "./agents-qDfx6gda.js";
41
+ import { l as init_codex, s as findRolloutPath } from "./codex-Bj_hftHG.js";
42
+ import { $t as init_claude_auth, A as getAgentStateFilePath, At as init_operator_interventions, B as init_agents$2, Bt as init_pty_token, C as dismissDevChannelsDialog, D as getAgentRuntimeState, Dt as captureTranscriptUserRecordSnapshot, E as getAgentRuntimeBaseCommand, Et as writeChannelsBridgeMcpConfig, F as getProviderEnvForModel, G as listAgentStates, Ht as init_bridge_token, I as getProviderExportsForModel, K as listRunningAgents, O as getAgentRuntimeStateSync, Ot as init_transcript_landing, P as getProviderAuthMode, Qt as getClaudeAuthStatus, Rt as init_pi_fifo, St as waitForReadySignal, T as getAgentDir, Ut as writeBridgeTokenSync, V as injectPiConversationMemory, Vt as writePtyToken, Xt as init_agent_record_sync, Z as messageAgent, Zt as readAgentHarnessModelRecordSync, en as getOpenAIAuthStatus, h as clearReadySignal, j as getAgentStateSync, jt as operatorInterventionEvent, k as getAgentState, kt as probeTranscriptSince, tn as init_openai_auth, v as deliverAgentMessage, zt as piFifoPaths } from "./agents-SteL0Yy7.js";
43
43
  import { a as getBuiltInDefaultHarness, c as getProviderForModelSync, l as init_providers, o as getKimiAnthropicBaseUrl, u as piProviderForModel } from "./providers-Cju7HorZ.js";
44
44
  import { n as isBackgroundFeatureEnabled, t as init_features } from "./features-BsiM65ZI.js";
45
45
  import { i as init_settings, r as getMemoryWorkerConcurrency, t as areMemoryObservationsEnabled } from "./settings-s_9BJkQW.js";
46
- import { t as init_pan_dir } from "./pan-dir-BfyAUgin.js";
47
- import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-CZaEkOZW.js";
48
- import { a as globalContextFile$1, d as workspaceContextFile, l as projectContextFile, n as codexGlobalContextFile, o as init_layers, r as ensureProjectLayer, s as piGlobalContextFile } from "./layers-CoMbLSYY.js";
49
- import { i as init_harness_policy, n as resolveHarness, r as canUseHarnessSync, t as init_harness_resolve } from "./harness-resolve-CMrgPv1e.js";
50
- import { c as init_docker_stats } from "./stack-health-KI4ZA4dt.js";
51
- import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health$1, t as init_providers$1 } from "./providers-0791nfjR.js";
52
- import { a as getSetting, b as setSetting, c as isDeaconGloballyPausedSync, d as isFlywheelRequireUatBeforeMerge, f as isMergeTrainEnabled, g as setFlywheelAutoPickupBacklog, l as isFlywheelAutoPickupBacklog, m as setDeaconGloballyPausedSync, o as init_control_settings, u as isFlywheelGloballyPaused$1, v as setFlywheelRequireUatBeforeMerge, y as setMergeTrainEnabled } from "./control-settings-BaPQ0U5p.js";
53
- import { a as parseRelativeTime, n as CostThresholdError, s as embed } from "./scanner-DYR1QDik.js";
54
- import { n as deduplicateEventsSync, o as readEventsSync, s as tailEventsSync } from "./events-C0JbknXU.js";
55
- import { n as recordBackgroundAiCost, t as init_cost$1 } from "./cost-CBa8loyG.js";
56
- import { a as startUatTrainReconciler, c as openFlywheelRunReportForDashboard, d as resumeFlywheelRunForDashboard, f as startFlywheelRunForDashboard, l as pauseFlywheelRunForDashboard, o as stopUatTrainReconciler, p as runDashboardDbJob, s as abortFlywheelRunForDashboard, u as readCurrentFlywheelStatusForDashboard } from "./uat-train-BF905HkK.js";
57
- import { S as subscribeLatestFlywheelStatus, _ as listFlywheelRuns, g as isFlywheelRunId, h as init_flywheel_run_state, l as buildClassifyLookups, p as getFlywheelRunDetail, u as init_lookups, w as writeLatestFlywheelStatus, x as resolveLiveFlywheelRunId, y as readCurrentLatestFlywheelStatus } from "./flywheel-rQwXVZR5.js";
58
- import { f as workspacesRouteLayer, g as getWorkspacePathForIssue, h as processPendingFeedbackDeliveries, m as resumeQueuedMerges, p as enrichReviewStatus } from "./workspaces-CvQySqp3.js";
59
- import { _ as init_platform, g as detectPlatform } from "./workspace-manager-oMP5s9VY.js";
60
- import { a as getShadowState, s as init_shadow_state } from "./shadow-state-xPxOHguz.js";
61
- import { C as init_dashboard_auth, D as init_review_status$1, E as rejectUnsafeDashboardMutationRequest, S as hasDashboardInternalToken, T as rejectUnauthorizedDashboardSessionMintRequest, _ as groupResourceAllocatedIssuesByProject, b as dashboardCsrfToken, g as getCachedResourceAllocatedIssues, m as issuesRouteLayer, p as init_issues, v as init_resource_discovery, w as rejectUnauthorizedDashboardRequest, x as dashboardSessionCookieHeader, y as sanitizeResourceAllocatedIssues } from "./issues-D909CPHX.js";
62
- import { a as loadCloisterConfigSync, i as loadCloisterConfig, o as saveCloisterConfigSync, r as init_config$1, s as shouldAutoStart } from "./config-wf_W38L3.js";
63
- import { O as init_specialists, b as getReviewerSessionName } from "./specialists-C5uBTD_g.js";
64
- import { H as init_deacon, _t as emergencyBrake, ct as setAgentStoppedNotifier, gt as withConcurrencyLimit, ht as init_concurrency$1, i as autoResumeStoppedWorkAgents, lt as setMergeReadyNotifier, rt as resetPatrolHeartbeatForStartup, st as setAgentStatusChangedNotifier, vt as init_concurrency } from "./deacon-BJOrAeJn.js";
46
+ import { t as init_pan_dir } from "./pan-dir-CnOUvQm_.js";
47
+ import { n as init_launcher_generator, t as generateLauncherScriptSync } from "./launcher-generator-Bzj8tdlM.js";
48
+ import { a as globalContextFile$1, d as workspaceContextFile, l as projectContextFile, n as codexGlobalContextFile, o as init_layers, r as ensureProjectLayer, s as piGlobalContextFile } from "./layers-0Zw11iHd.js";
49
+ import { i as init_harness_policy, n as resolveHarness, r as canUseHarnessSync, t as init_harness_resolve } from "./harness-resolve-C1dMLCfn.js";
50
+ import { c as init_docker_stats } from "./stack-health-DEdzAjBZ.js";
51
+ import { i as updateMemoryHealth, n as extractWithProviderPolicy, r as init_health$1, t as init_providers$1 } from "./providers-BjJWJ-lN.js";
52
+ import { a as getSetting, b as setSetting, c as isDeaconGloballyPausedSync, d as isFlywheelRequireUatBeforeMerge, f as isMergeTrainEnabled, g as setFlywheelAutoPickupBacklog, l as isFlywheelAutoPickupBacklog, m as setDeaconGloballyPausedSync, o as init_control_settings, u as isFlywheelGloballyPaused$1, v as setFlywheelRequireUatBeforeMerge, y as setMergeTrainEnabled } from "./control-settings-ddYZWzH3.js";
53
+ import { a as parseRelativeTime, n as CostThresholdError, s as embed } from "./scanner-DVDpIEUb.js";
54
+ import { n as deduplicateEventsSync, o as readEventsSync, s as tailEventsSync } from "./events-BXe36mwW.js";
55
+ import { n as recordBackgroundAiCost, t as init_cost$1 } from "./cost-RWt0c0ft.js";
56
+ import { a as startUatTrainReconciler, c as openFlywheelRunReportForDashboard, d as resumeFlywheelRunForDashboard, f as startFlywheelRunForDashboard, l as pauseFlywheelRunForDashboard, o as stopUatTrainReconciler, p as runDashboardDbJob, s as abortFlywheelRunForDashboard, u as readCurrentFlywheelStatusForDashboard } from "./uat-train-n8HCRtcj.js";
57
+ import { S as subscribeLatestFlywheelStatus, _ as listFlywheelRuns, g as isFlywheelRunId, h as init_flywheel_run_state, l as buildClassifyLookups, p as getFlywheelRunDetail, u as init_lookups, w as writeLatestFlywheelStatus, x as resolveLiveFlywheelRunId, y as readCurrentLatestFlywheelStatus } from "./flywheel-Dn6Akk0c.js";
58
+ import { f as workspacesRouteLayer, g as getWorkspacePathForIssue, h as processPendingFeedbackDeliveries, m as resumeQueuedMerges, p as enrichReviewStatus } from "./workspaces-B8dRF3nB.js";
59
+ import { _ as init_platform, g as detectPlatform } from "./workspace-manager-C-2qis5x.js";
60
+ import { a as getShadowState, s as init_shadow_state } from "./shadow-state-CH4do7Wh.js";
61
+ import { C as init_dashboard_auth, D as init_review_status$1, E as rejectUnsafeDashboardMutationRequest, S as hasDashboardInternalToken, T as rejectUnauthorizedDashboardSessionMintRequest, _ as groupResourceAllocatedIssuesByProject, b as dashboardCsrfToken, g as getCachedResourceAllocatedIssues, m as issuesRouteLayer, p as init_issues, v as init_resource_discovery, w as rejectUnauthorizedDashboardRequest, x as dashboardSessionCookieHeader, y as sanitizeResourceAllocatedIssues } from "./issues-DGG1xJ9W.js";
62
+ import { a as loadCloisterConfigSync, i as loadCloisterConfig, o as saveCloisterConfigSync, r as init_config$1, s as shouldAutoStart } from "./config-DijD5z28.js";
63
+ import { O as init_specialists, b as getReviewerSessionName } from "./specialists-CRQv_8TC.js";
64
+ import { H as init_deacon, _t as emergencyBrake, ct as setAgentStoppedNotifier, gt as withConcurrencyLimit, ht as init_concurrency$1, i as autoResumeStoppedWorkAgents, lt as setMergeReadyNotifier, rt as resetPatrolHeartbeatForStartup, st as setAgentStatusChangedNotifier, vt as init_concurrency } from "./deacon-B1xw9Xx2.js";
65
65
  import { n as getNoResumeMode, r as init_no_resume_mode, t as disableNoResumeMode } from "./no-resume-mode-DlMPigWY.js";
66
- import { c as init_prd_locations, s as findPrdAtStatusSync } from "./archive-planning-O-QKXVWX.js";
67
- import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-D5GpgTWq.js";
68
- import { n as parseSequenceMd, r as writeSequenceMd, t as init_sequence_io } from "./sequence-io-CMiS9KMK.js";
69
- import { _ as computeStats, b as normalizeGate, c as BLOCKS_MAIN_LABEL, d as READY_LABEL, f as RELEASED_LABEL, g as computeLanes, h as computeCohort, l as OBJECTION_LABEL, m as classifyIssue, p as VETOED_LABEL, u as PARKED_LABEL, v as computeWaves, y as init_pickup } from "./flywheel-merge-order-bSoDRUVw.js";
70
- import { _ as sendToRemoteAgent, a as getRemoteAgentOutput, n as checkRemoteSpendCap, o as init_remote_agents, p as loadRemoteAgentState, u as killRemoteAgent, v as spawnRemoteAgent } from "./remote-agents-DQRd2At2.js";
71
- import { _ as init_git_activity, v as listGitOperationsSync } from "./merge-agent-BsELKm49.js";
66
+ import { c as init_prd_locations, s as findPrdAtStatusSync } from "./archive-planning-CgavlD03.js";
67
+ import { a as writeFeedbackFile, i as init_feedback_writer } from "./feedback-writer-0v4RHIwO.js";
68
+ import { n as parseSequenceMd, r as writeSequenceMd, t as init_sequence_io } from "./sequence-io-0WGOYOmb.js";
69
+ import { _ as computeStats, b as normalizeGate, c as BLOCKS_MAIN_LABEL, d as READY_LABEL, f as RELEASED_LABEL, g as computeLanes, h as computeCohort, l as OBJECTION_LABEL, m as classifyIssue, p as VETOED_LABEL, u as PARKED_LABEL, v as computeWaves, y as init_pickup } from "./flywheel-merge-order-C_hlPfAU.js";
70
+ import { _ as sendToRemoteAgent, a as getRemoteAgentOutput, n as checkRemoteSpendCap, o as init_remote_agents, p as loadRemoteAgentState, u as killRemoteAgent, v as spawnRemoteAgent } from "./remote-agents-Ckw0Uup4.js";
71
+ import { _ as init_git_activity, v as listGitOperationsSync } from "./merge-agent-Chd_Rt2n.js";
72
72
  import { n as getTldrDaemonServiceSync, r as init_tldr_daemon } from "./tldr-daemon-C4f0Cv5Z.js";
73
- import { i as runMemoryFtsTransaction, n as init_fts_db, r as runMemoryFtsStatement, t as closeMemoryFtsDatabases } from "./fts-db-DH6pFiOa.js";
74
- import { c as init_pending, l as maybeTriggerStatusRollup, o as readRecentObservations, r as init_rollup, u as writePendingTurn } from "./rollup-_dL7JXdO.js";
75
- import { r as specialistsRouteLayer } from "./specialists-DFDg83jj.js";
76
- import { t as getAgentCommandSync } from "./settings-DVFIQrHs.js";
77
- import { n as init_review_agent, r as isExtendedReviewEnabled } from "./review-agent-GjWZBuhW.js";
78
- import { i as isRemoteAvailable, r as init_remote, t as createFlyProviderFromConfig } from "./remote-br-7Zy2V.js";
73
+ import { i as runMemoryFtsTransaction, n as init_fts_db, r as runMemoryFtsStatement, t as closeMemoryFtsDatabases } from "./fts-db-ByIkpwNP.js";
74
+ import { c as init_pending, l as maybeTriggerStatusRollup, o as readRecentObservations, r as init_rollup, u as writePendingTurn } from "./rollup-BliEel5D.js";
75
+ import { r as specialistsRouteLayer } from "./specialists-CDM5vkDy.js";
76
+ import { t as getAgentCommandSync } from "./settings-BYAK9dF4.js";
77
+ import { n as init_review_agent, r as isExtendedReviewEnabled } from "./review-agent-DlkjIM6c.js";
78
+ import { i as isRemoteAvailable, r as init_remote, t as createFlyProviderFromConfig } from "./remote-Cu-ROCd0.js";
79
79
  import { n as init_claude_settings_overlay, t as detectProviderEnvConflicts } from "./claude-settings-overlay-Ck8qNezZ.js";
80
- import { a as init_query_expansion, i as clearQueryExpansionCache, n as init_injection, o as buildMatchQuery, r as injectPromptTimeMemory, s as init_search } from "./injection-CcJERZro.js";
81
- import { _ as init_transcript_adapter, a as generateFallbackSummary, c as handoffPreconditionFallbackReason, d as prependFallbackFocus, f as requestHandoffFromAgent, g as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as init_summary_fork, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, u as logHandoffFallback } from "./summary-fork-znoS388v.js";
82
- import { a as init_conversation_compaction, c as shouldInterceptManualCompact, n as compactConversationNative, o as isCompacting } from "./conversation-compaction-DfmqrfYi.js";
83
- import { a as init_render, d as validateTemplate, i as hasManagedRegion, l as init_harness, o as userContentOutsideRegion, t as init_context_layers, u as renderForHarness } from "./context-layers-CIMR-y8_.js";
80
+ import { a as init_query_expansion, i as clearQueryExpansionCache, n as init_injection, o as buildMatchQuery, r as injectPromptTimeMemory, s as init_search } from "./injection-Bv8oh7WW.js";
81
+ import { _ as init_transcript_adapter, a as generateFallbackSummary, c as handoffPreconditionFallbackReason, d as prependFallbackFocus, f as requestHandoffFromAgent, g as getTranscriptAdapter, i as copySessionFromCompactBoundary, l as init_summary_fork, o as generateSummaryForFork, p as reserveSummaryForkSession, r as authorHandoffExternal, s as handoffFailureReason, u as logHandoffFallback } from "./summary-fork-gcj_CR2I.js";
82
+ import { a as init_conversation_compaction, c as shouldInterceptManualCompact, n as compactConversationNative, o as isCompacting } from "./conversation-compaction-dqaXGhcH.js";
83
+ import { a as init_render, d as validateTemplate, i as hasManagedRegion, l as init_harness, o as userContentOutsideRegion, t as init_context_layers, u as renderForHarness } from "./context-layers-SF7iOUH9.js";
84
84
  import { c as init_github_app, s as getPullRequestState } from "./github-app-DgISqJqI.js";
85
85
  import { i as parseArtifactRef, r as init_forge } from "./forge-mcRx-ba-.js";
86
- import { a as spawnSequencerAgent, i as init_sequencer_agent, n as clearFinishedSequencerRun, r as getSequencerRunStatus, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-CFrrqU0M.js";
87
- import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-9h0pTZ5k.js";
86
+ import { a as spawnSequencerAgent, i as init_sequencer_agent, n as clearFinishedSequencerRun, r as getSequencerRunStatus, t as SEQUENCER_AGENT_ID } from "./sequencer-agent-DZgob0vQ.js";
87
+ import { i as listTranscriptCheckpoints, r as getTranscriptCheckpoint$1 } from "./checkpoints-D9IV1yvV.js";
88
88
  import { createRequire } from "node:module";
89
89
  import { Cause, Context, Data, Effect, Exit, Fiber, FileSystem, Layer, Option, Path, Queue, Result, Schedule, Schema, Stream } from "effect";
90
90
  import { createReadStream, createWriteStream, existsSync, fstatSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs";
@@ -628,7 +628,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
628
628
  const beadsDir = join$1(workspacePath, ".beads");
629
629
  const projectBeadsDir = join$1(workspacePath, "..", "..", ".beads");
630
630
  if (!(existsSync$1(beadsDir) || existsSync$1(projectBeadsDir))) throw new BeadsNotInitialized({ workspace: workspacePath });
631
- const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-DsFz3A8y.js");
631
+ const { getAgentState, spawnAgent, normalizeAgentId } = await import("./agents-BeWOeR_m.js");
632
632
  const normalizedId = normalizeAgentId(issueId);
633
633
  if ((await Effect.runPromise(getAgentState(normalizedId)))?.status === "running") throw new AgentAlreadyRunning({ id: issueId });
634
634
  return {
@@ -659,7 +659,7 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
659
659
  const { workspacePath, projectPath, issue } = opts;
660
660
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
661
661
  const sessionName = opts.sessionName ?? `planning-${issueId.toLowerCase()}`;
662
- const { spawnPlanningSession } = await import("./spawn-planning-session-DnUv0hSH.js");
662
+ const { spawnPlanningSession } = await import("./spawn-planning-session-HmyOU9y0.js");
663
663
  const result = await spawnPlanningSession({
664
664
  issue: {
665
665
  id: issue.id,
@@ -692,14 +692,14 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
692
692
  }),
693
693
  kill: (agentId) => Effect.tryPromise({
694
694
  try: async () => {
695
- const { stopAgent } = await import("./agents-DsFz3A8y.js");
695
+ const { stopAgent } = await import("./agents-BeWOeR_m.js");
696
696
  await Effect.runPromise(stopAgent(agentId));
697
697
  },
698
698
  catch: () => void 0
699
699
  }).pipe(Effect.ignore),
700
700
  message: (agentId, msg) => Effect.tryPromise({
701
701
  try: async () => {
702
- const { messageAgent } = await import("./agents-DsFz3A8y.js");
702
+ const { messageAgent } = await import("./agents-BeWOeR_m.js");
703
703
  await messageAgent(agentId, msg);
704
704
  },
705
705
  catch: (err) => new AgentStartError({
@@ -710,8 +710,8 @@ const AgentSpawnerLive = Layer.effect(AgentSpawner, Effect.sync(() => ({
710
710
  }),
711
711
  deepWipe: (issueId, opts) => Effect.tryPromise({
712
712
  try: async () => {
713
- const { deepWipe } = await import("./workflows-LNUGDzVu.js");
714
- const { resolveProjectFromIssueSync } = await import("./projects-DWBDcB6V.js");
713
+ const { deepWipe } = await import("./workflows-BGSPZ2WT.js");
714
+ const { resolveProjectFromIssueSync } = await import("./projects-Bx1iT8WM.js");
715
715
  const project = resolveProjectFromIssueSync(issueId);
716
716
  const projectPath = project?.projectPath ?? process.cwd();
717
717
  await Effect.runPromise(deepWipe({
@@ -767,8 +767,8 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
767
767
  const { workspacePath, branch } = getWorkspacePath(issueId);
768
768
  const issueLower = issueId.toLowerCase();
769
769
  if (existsSync$1(workspacePath)) return workspacePath;
770
- const { createWorkspace } = await import("./workspace-manager-XDNuCCXG.js");
771
- const { loadProjectsConfigSync } = await import("./projects-DWBDcB6V.js");
770
+ const { createWorkspace } = await import("./workspace-manager-B7Ji7R9Y.js");
771
+ const { loadProjectsConfigSync } = await import("./projects-Bx1iT8WM.js");
772
772
  const { projects } = loadProjectsConfigSync();
773
773
  const project = resolveProjectFromIssueSync(issueId);
774
774
  if (!project) throw new WorkspaceCreateError({
@@ -803,7 +803,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
803
803
  const { workspacePath } = getWorkspacePath(issueId);
804
804
  const issueLower = issueId.toLowerCase();
805
805
  if (!existsSync$1(workspacePath)) throw new WorkspaceNotFound({ id: issueId });
806
- const { removeWorkspace } = await import("./workspace-manager-XDNuCCXG.js");
806
+ const { removeWorkspace } = await import("./workspace-manager-B7Ji7R9Y.js");
807
807
  const project = resolveProjectFromIssueSync(issueId);
808
808
  if (!project) throw new WorkspaceCreateError({
809
809
  id: issueId,
@@ -834,7 +834,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
834
834
  try: async () => {
835
835
  const { workspacePath } = getWorkspacePath(issueId);
836
836
  const issueLower = issueId.toLowerCase();
837
- const { stopWorkspaceDocker } = await import("./workspace-manager-XDNuCCXG.js");
837
+ const { stopWorkspaceDocker } = await import("./workspace-manager-B7Ji7R9Y.js");
838
838
  await Effect.runPromise(stopWorkspaceDocker(workspacePath, issueLower));
839
839
  },
840
840
  catch: () => void 0
@@ -903,7 +903,7 @@ const WorkspaceServiceLive = Layer.effect(WorkspaceService, Effect.sync(() => {
903
903
  join$1(workspacePath, ".devcontainer", "docker-compose.devcontainer.yml")
904
904
  ];
905
905
  if (!composePaths.find((p) => existsSync$1(p))) {
906
- const { ensureDevcontainerSync } = await import("./ensure-devcontainer-Uu-fGqwo.js");
906
+ const { ensureDevcontainerSync } = await import("./ensure-devcontainer-DLZ2bnuQ.js");
907
907
  const ensure = ensureDevcontainerSync({
908
908
  workspacePath,
909
909
  issueId
@@ -36870,6 +36870,158 @@ function isAbortError(error) {
36870
36870
  return error instanceof Error && error.name === "AbortError";
36871
36871
  }
36872
36872
  //#endregion
36873
+ //#region ../../lib/overdeck/legacy-import.ts
36874
+ init_driver();
36875
+ init_conversations();
36876
+ function previewLegacyConversations(path) {
36877
+ if (!existsSync$1(path)) return { found: false };
36878
+ const db = openDatabase(path, { readOnly: true });
36879
+ try {
36880
+ const legacyRows = db.prepare(`SELECT name, title, created_at, model, last_attached_at, claude_session_id
36881
+ FROM conversations
36882
+ ORDER BY created_at DESC`).all();
36883
+ const favSet = new Set(db.prepare(`SELECT item_id FROM favorites WHERE type = 'conversation'`).all().map((r) => r.item_id));
36884
+ const rows = [];
36885
+ for (const row of legacyRows) {
36886
+ if (isAgentConversationName(row.name)) continue;
36887
+ rows.push({
36888
+ name: row.name,
36889
+ title: row.title,
36890
+ createdAt: row.created_at,
36891
+ model: row.model,
36892
+ lastActivityAt: row.last_attached_at,
36893
+ messageCount: null,
36894
+ hasFavorite: favSet.has(row.name),
36895
+ claudeSessionId: row.claude_session_id,
36896
+ alreadyImported: getConversationByName(row.name) !== null
36897
+ });
36898
+ }
36899
+ return {
36900
+ found: true,
36901
+ rows
36902
+ };
36903
+ } finally {
36904
+ db.close();
36905
+ }
36906
+ }
36907
+ function parseIsoToMs(iso) {
36908
+ if (!iso) return null;
36909
+ const ms = new Date(iso).getTime();
36910
+ return Number.isNaN(ms) ? null : ms;
36911
+ }
36912
+ function importLegacyConversations(path, names) {
36913
+ const result = {
36914
+ imported: [],
36915
+ skipped: [],
36916
+ failed: [],
36917
+ warnings: [],
36918
+ favoritesCarried: 0
36919
+ };
36920
+ if (!existsSync$1(path) || names.length === 0) return result;
36921
+ const db = openDatabase(path, { readOnly: true });
36922
+ let legacyRows;
36923
+ let favSet;
36924
+ try {
36925
+ const placeholders = names.map(() => "?").join(", ");
36926
+ legacyRows = db.prepare(`SELECT id, name, tmux_session, status, cwd, created_at, ended_at, last_attached_at,
36927
+ session_file, claude_session_id, title, title_source, title_seed,
36928
+ total_cost, total_tokens, archived_at, model, effort, fork_status, fork_error,
36929
+ harness, delivery_method, spawn_error, handoff_doc_path, handoff_target_conv_id,
36930
+ fork_fallback_reason, cleared_to_conv_id, fork_request, fork_retry_count
36931
+ FROM conversations WHERE name IN (${placeholders})`).all(...names);
36932
+ favSet = new Set(db.prepare(`SELECT item_id FROM favorites WHERE type = 'conversation'`).all().map((r) => r.item_id));
36933
+ } finally {
36934
+ db.close();
36935
+ }
36936
+ const rowidToUuid = /* @__PURE__ */ new Map();
36937
+ for (const row of legacyRows) {
36938
+ if (isAgentConversationName(row.name)) {
36939
+ result.skipped.push({
36940
+ name: row.name,
36941
+ reason: "agent/planning/specialist conversation excluded from import"
36942
+ });
36943
+ continue;
36944
+ }
36945
+ const createdAtMs = parseIsoToMs(row.created_at);
36946
+ if (createdAtMs === null) {
36947
+ result.failed.push({
36948
+ name: row.name,
36949
+ reason: `unparseable created_at: ${String(row.created_at)}`
36950
+ });
36951
+ continue;
36952
+ }
36953
+ if (getConversationByName(row.name) !== null) {
36954
+ result.skipped.push({
36955
+ name: row.name,
36956
+ reason: "name already exists in overdeck.db"
36957
+ });
36958
+ continue;
36959
+ }
36960
+ if (row.claude_session_id && getConversationByClaudeSessionId(row.claude_session_id) !== null) {
36961
+ result.skipped.push({
36962
+ name: row.name,
36963
+ reason: "claude_session_id already registered in overdeck.db"
36964
+ });
36965
+ continue;
36966
+ }
36967
+ const archivedAtMs = parseIsoToMs(row.archived_at);
36968
+ const status = row.status ?? (archivedAtMs ? "ended" : "active");
36969
+ const { uuid } = importLegacyConversation({
36970
+ name: row.name,
36971
+ tmuxSession: row.tmux_session,
36972
+ status,
36973
+ cwd: row.cwd,
36974
+ createdAt: createdAtMs,
36975
+ endedAt: parseIsoToMs(row.ended_at),
36976
+ lastAttachedAt: parseIsoToMs(row.last_attached_at),
36977
+ sessionFile: row.session_file,
36978
+ claudeSessionId: row.claude_session_id,
36979
+ title: row.title,
36980
+ titleSource: row.title_source,
36981
+ titleSeed: row.title_seed,
36982
+ totalCost: row.total_cost ?? 0,
36983
+ totalTokens: row.total_tokens ?? 0,
36984
+ archivedAt: archivedAtMs,
36985
+ model: row.model,
36986
+ effort: row.effort,
36987
+ forkStatus: row.fork_status,
36988
+ forkError: row.fork_error,
36989
+ harness: row.harness,
36990
+ deliveryMethod: row.delivery_method,
36991
+ spawnError: row.spawn_error,
36992
+ handoffDocPath: row.handoff_doc_path,
36993
+ forkFallbackReason: row.fork_fallback_reason,
36994
+ forkRequest: row.fork_request,
36995
+ forkRetryCount: row.fork_retry_count ?? 0
36996
+ });
36997
+ rowidToUuid.set(row.id, uuid);
36998
+ result.imported.push(row.name);
36999
+ if (favSet.has(row.name)) {
37000
+ setFavorite("conversation", row.name);
37001
+ result.favoritesCarried++;
37002
+ }
37003
+ }
37004
+ for (const row of legacyRows) {
37005
+ const uuid = rowidToUuid.get(row.id);
37006
+ if (!uuid) continue;
37007
+ const handoffTargetUuid = row.handoff_target_conv_id != null ? rowidToUuid.get(row.handoff_target_conv_id) ?? null : null;
37008
+ const clearedToUuid = row.cleared_to_conv_id != null ? rowidToUuid.get(row.cleared_to_conv_id) ?? null : null;
37009
+ if (row.handoff_target_conv_id != null && handoffTargetUuid === null) result.warnings.push({
37010
+ name: row.name,
37011
+ reason: `handoff target (legacy rowid ${row.handoff_target_conv_id}) was not imported; handoff_target_conv_id set to NULL`
37012
+ });
37013
+ if (row.cleared_to_conv_id != null && clearedToUuid === null) result.warnings.push({
37014
+ name: row.name,
37015
+ reason: `cleared_to target (legacy rowid ${row.cleared_to_conv_id}) was not imported; cleared_to_conv_id set to NULL`
37016
+ });
37017
+ if (handoffTargetUuid !== null || clearedToUuid !== null) setImportedConversationLinks(uuid, {
37018
+ handoffTargetUuid,
37019
+ clearedToUuid
37020
+ });
37021
+ }
37022
+ return result;
37023
+ }
37024
+ //#endregion
36873
37025
  //#region routes/settings.ts
36874
37026
  /**
36875
37027
  * Settings route module — Effect HttpRouter.Layer (PAN-428 B15)
@@ -36887,6 +37039,7 @@ init_providers();
36887
37039
  init_http_handler();
36888
37040
  init_agents$2();
36889
37041
  init_config_yaml();
37042
+ init_paths();
36890
37043
  const REINDEX_CONFIRM_THRESHOLD_USD = 1;
36891
37044
  const REINDEX_CONFIRM_TTL_MS = 600 * 1e3;
36892
37045
  const reindexConfirmationNonces = /* @__PURE__ */ new Map();
@@ -37688,7 +37841,41 @@ const getProviderEnvConflictsRoute = HttpRouter.add("GET", "/api/settings/provid
37688
37841
  }
37689
37842
  });
37690
37843
  })));
37691
- const settingsRouteLayer = Layer.mergeAll(getSettingsRoute, getAvailableModelsRoute, getOptimalDefaultsRoute, getMiniMaxDefaultsRoute, getClaudeAuthRoute, getOpenAIAuthRoute, postTestApiKeyRoute, postValidateApiKeyRoute, getConversationSearchStatusRoute, getConversationSearchReindexEstimateRoute, postConversationSearchReindexRoute, getConversationSearchReindexProgressRoute, putSettingsRoute, putUiThemeRoute, getOpenRouterModelsRoute, putOpenRouterFavoritesRoute, putOpenRouterApiKeyRoute, postOpenRouterTestKeyRoute, getHarnessPolicyRoute, getProviderEnvConflictsRoute);
37844
+ const getLegacyImportPreviewRoute = HttpRouter.add("GET", "/api/settings/legacy-import/conversations", httpHandler(Effect.gen(function* () {
37845
+ const request = yield* HttpServerRequest.HttpServerRequest;
37846
+ return yield* Effect.try({
37847
+ try: () => {
37848
+ const urlPath = new URL(request.url, "http://localhost").searchParams.get("path");
37849
+ const defaultPath = join$1(getLegacyHome(), "panopticon.db");
37850
+ const resolvedPath = urlPath?.trim() || defaultPath;
37851
+ const preview = previewLegacyConversations(resolvedPath);
37852
+ if (!preview.found) return jsonResponse({
37853
+ found: false,
37854
+ defaultPath,
37855
+ message: `No legacy database found at ${resolvedPath}`
37856
+ });
37857
+ return jsonResponse({
37858
+ found: true,
37859
+ path: resolvedPath,
37860
+ conversations: preview.rows
37861
+ });
37862
+ },
37863
+ catch: (err) => jsonResponse({ error: err instanceof Error ? err.message : String(err) }, { status: 500 })
37864
+ });
37865
+ })));
37866
+ const postLegacyImportRoute = HttpRouter.add("POST", "/api/settings/legacy-import/conversations", httpHandler(Effect.gen(function* () {
37867
+ const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
37868
+ if (authError) return authError;
37869
+ const body = yield* readJsonBody$8;
37870
+ return yield* Effect.try({
37871
+ try: () => {
37872
+ const { path, names } = body;
37873
+ return jsonResponse(importLegacyConversations(path, names));
37874
+ },
37875
+ catch: (err) => jsonResponse({ error: err instanceof Error ? err.message : String(err) }, { status: 500 })
37876
+ });
37877
+ })));
37878
+ const settingsRouteLayer = Layer.mergeAll(getSettingsRoute, getAvailableModelsRoute, getOptimalDefaultsRoute, getMiniMaxDefaultsRoute, getClaudeAuthRoute, getOpenAIAuthRoute, postTestApiKeyRoute, postValidateApiKeyRoute, getConversationSearchStatusRoute, getConversationSearchReindexEstimateRoute, postConversationSearchReindexRoute, getConversationSearchReindexProgressRoute, putSettingsRoute, putUiThemeRoute, getOpenRouterModelsRoute, putOpenRouterFavoritesRoute, putOpenRouterApiKeyRoute, postOpenRouterTestKeyRoute, getHarnessPolicyRoute, getProviderEnvConflictsRoute, getLegacyImportPreviewRoute, postLegacyImportRoute);
37692
37879
  //#endregion
37693
37880
  //#region routes/autopreso.ts
37694
37881
  init_http_helpers();
@@ -38541,7 +38728,7 @@ const getVersionRoute = HttpRouter.add("GET", "/api/version", Effect.promise(asy
38541
38728
  const version = await getOverdeckVersion();
38542
38729
  let supervisorUrl = null;
38543
38730
  try {
38544
- const { getSupervisorUrlSync } = await import("./supervisor-ti-xrTNH.js");
38731
+ const { getSupervisorUrlSync } = await import("./supervisor-DVlsIgfZ.js");
38545
38732
  supervisorUrl = getSupervisorUrlSync();
38546
38733
  } catch {}
38547
38734
  return jsonResponse({
@@ -38637,7 +38824,7 @@ const getPlanningStatusRoute = HttpRouter.add("GET", "/api/planning/:issueId/sta
38637
38824
  const remoteState = loadRemoteAgentState(sessionName);
38638
38825
  const isRemote = !!remoteState;
38639
38826
  const vmName = remoteState?.vmName ?? "";
38640
- const { getAgentStateSync } = await import("./agents-DsFz3A8y.js");
38827
+ const { getAgentStateSync } = await import("./agents-BeWOeR_m.js");
38641
38828
  const agentStarting = getAgentStateSync(sessionName)?.status === "starting";
38642
38829
  let tmuxSessionAlive = false;
38643
38830
  if (!isRemote) try {
@@ -38780,7 +38967,7 @@ Continue the PLANNING session. Do NOT implement anything.
38780
38967
  `);
38781
38968
  const agentCwd = workspacePath;
38782
38969
  if (existsSync$1(outputFile)) await rename(outputFile, join$1(planningDir, `output-${Date.now()}.jsonl`));
38783
- const { getAgentCommandSync } = await import("./settings-oOlkt2wY.js");
38970
+ const { getAgentCommandSync } = await import("./settings-wPqxbDcV.js");
38784
38971
  let msgPlanningModel = "claude-sonnet-4-6";
38785
38972
  try {
38786
38973
  msgPlanningModel = resolveModel("plan", void 0, loadConfigSync().config);
@@ -39046,7 +39233,7 @@ const postShadowMonitorRoute = HttpRouter.add("POST", "/api/shadow/:issueId/moni
39046
39233
  const projectPath = await getProjectPath(issuePrefix);
39047
39234
  const workspacePath = join$1(projectPath, "workspaces", `feature-${issueLower}`);
39048
39235
  if (!existsSync$1(workspacePath)) return jsonResponse({ error: "Workspace not found" }, { status: 404 });
39049
- const { gatherArtifacts, generateBasicInference, updateInferenceDocumentSync } = await import("./shadow-engineering-eRFcHl7F.js");
39236
+ const { gatherArtifacts, generateBasicInference, updateInferenceDocumentSync } = await import("./shadow-engineering-BZTBik_h.js");
39050
39237
  const config = {
39051
39238
  issueId,
39052
39239
  workspacePath,
@@ -39076,7 +39263,7 @@ const postShadowObserveRoute = HttpRouter.add("POST", "/api/shadow/:issueId/obse
39076
39263
  if (!existsSync$1(workspacePath)) return jsonResponse({ error: "Workspace not found" }, { status: 404 });
39077
39264
  const ghConfig = getGitHubConfig();
39078
39265
  if (!ghConfig) return jsonResponse({ error: "GitHub not configured - Observer requires GitHub" }, { status: 400 });
39079
- const { runObserverCycle } = await import("./shadow-engineering-eRFcHl7F.js");
39266
+ const { runObserverCycle } = await import("./shadow-engineering-BZTBik_h.js");
39080
39267
  const firstRepo = ghConfig.repos[0];
39081
39268
  const config = {
39082
39269
  issueId,
@@ -40416,7 +40603,7 @@ async function cleanupConversationAttachments(name) {
40416
40603
  * sessions that the lifecycle poller missed. */
40417
40604
  async function cleanupOrphanedConversationAttachments() {
40418
40605
  try {
40419
- const { listConversations } = await import("./conversations-BtRONkWR.js");
40606
+ const { listConversations } = await import("./conversations-DumOm1wb.js");
40420
40607
  const convNames = new Set(listConversations().map((c) => c.name));
40421
40608
  const root = getConversationAttachmentsRoot();
40422
40609
  await runInBatches((await readdir(root, { withFileTypes: true })).filter((entry) => entry.isDirectory() && !convNames.has(entry.name)).map((entry) => join$1(root, entry.name)), 10, (path) => rm(path, {
@@ -41468,7 +41655,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
41468
41655
  const codexApprovalPolicy = codexPermMode === "full-access" ? "never" : "on-request";
41469
41656
  const codexSandboxMode = codexPermMode === "full-access" ? "danger-full-access" : codexPermMode === "read-only" ? "read-only" : "workspace-write";
41470
41657
  const codexApprovalsReviewer = codexPermMode === "auto-review" ? "auto_review" : void 0;
41471
- const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-sd8uk-U3.js");
41658
+ const { initCodexHome, extractThreadIdFromRollout } = await import("./codex-DZZiDgis.js");
41472
41659
  initCodexHome(codexHome, {
41473
41660
  trustedDir: cwd,
41474
41661
  approvalPolicy: codexApprovalPolicy,
@@ -41538,7 +41725,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
41538
41725
  } catch {}
41539
41726
  console.log(`[claude-invoke] purpose=conversation-session | model=${model || "default"} | source=conversations.ts:spawnConversationSession | session=${tmuxSession} | resume=${resume} | command="${runtimeCommand}"`);
41540
41727
  try {
41541
- const { preTrustDirectory } = await import("./workspace-manager-XDNuCCXG.js");
41728
+ const { preTrustDirectory } = await import("./workspace-manager-B7Ji7R9Y.js");
41542
41729
  preTrustDirectory(cwd);
41543
41730
  } catch {}
41544
41731
  try {
@@ -41555,7 +41742,7 @@ async function spawnConversationSession(tmuxSession, cwd, claudeSessionId, model
41555
41742
  const codexHomeDir = codexFields.codexHome;
41556
41743
  (async () => {
41557
41744
  try {
41558
- const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-sd8uk-U3.js");
41745
+ const { waitForCodexRollout, extractThreadIdFromRollout, writeThreadId } = await import("./codex-DZZiDgis.js");
41559
41746
  const rollout = await waitForCodexRollout(codexHomeDir, 12e4);
41560
41747
  if (rollout) {
41561
41748
  const threadId = extractThreadIdFromRollout(rollout);
@@ -43737,7 +43924,7 @@ async function registerProjectFromPath(opts) {
43737
43924
  registerProjectSync(key, projectConfig);
43738
43925
  const seededContextLayer = ensureProjectLayer(fullPath);
43739
43926
  try {
43740
- const { preTrustDirectorySync } = await import("./workspace-manager-XDNuCCXG.js");
43927
+ const { preTrustDirectorySync } = await import("./workspace-manager-B7Ji7R9Y.js");
43741
43928
  preTrustDirectorySync(fullPath);
43742
43929
  } catch {}
43743
43930
  let hooksInstalled = 0;
@@ -43778,7 +43965,7 @@ init_jsonl_resolver();
43778
43965
  init_paths();
43779
43966
  const execAsync$2 = promisify(exec);
43780
43967
  async function getIssueDataService() {
43781
- const { getSharedIssueService } = await import("./issue-service-singleton-DfRSzdFO.js");
43968
+ const { getSharedIssueService } = await import("./issue-service-singleton-BoOA6Zoi.js");
43782
43969
  return getSharedIssueService();
43783
43970
  }
43784
43971
  /** Returns true if the path exists (any type). */
@@ -45795,8 +45982,8 @@ async function handlePullRequestPromise(payload) {
45795
45982
  if (!issueId) return;
45796
45983
  const repo = payload.repository.full_name;
45797
45984
  if (payload.action === "closed" && pr.merged === true) try {
45798
- const { postMergeLifecycle } = await import("./merge-agent-CdxCcqFv.js");
45799
- const { resolveProjectFromIssueSync } = await import("./projects-DWBDcB6V.js");
45985
+ const { postMergeLifecycle } = await import("./merge-agent-PlMChx1A.js");
45986
+ const { resolveProjectFromIssueSync } = await import("./projects-Bx1iT8WM.js");
45800
45987
  const project = resolveProjectFromIssueSync(issueId);
45801
45988
  if (project) {
45802
45989
  const branchName = pr.head.ref;
@@ -46257,7 +46444,7 @@ function getCheckpointWorker() {
46257
46444
  return worker;
46258
46445
  }
46259
46446
  async function runInline(operation, payload) {
46260
- const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-BRNSJDyI.js");
46447
+ const { claimTranscriptRange, commitTranscriptRange, releaseTranscriptRange, getTranscriptCheckpoint, listTranscriptCheckpoints } = await import("./checkpoints-AfvX58uE.js");
46261
46448
  switch (operation) {
46262
46449
  case "claimTranscriptRange": return claimTranscriptRange(payload);
46263
46450
  case "commitTranscriptRange": return commitTranscriptRange(payload);
@@ -47411,7 +47598,7 @@ function buildPendingTurn(input, fromOffset, toOffset, compressed) {
47411
47598
  };
47412
47599
  }
47413
47600
  async function emitMemoryObservationCreated(observation, timestamp) {
47414
- const { initEventStore } = await import("./event-store-D_9DeP8Y.js");
47601
+ const { initEventStore } = await import("./event-store-wcLlc5KG.js");
47415
47602
  await (await initEventStore()).appendAsync({
47416
47603
  type: "memory.observation_created",
47417
47604
  timestamp,
@@ -50339,7 +50526,7 @@ async function getFlywheelConversationPayload() {
50339
50526
  };
50340
50527
  }
50341
50528
  async function postFlywheelReportPayload() {
50342
- const { flywheelReportCommand } = await import("./flywheel-NZJyASRc.js");
50529
+ const { flywheelReportCommand } = await import("./flywheel-Bz8p0duH.js");
50343
50530
  await flywheelReportCommand({ cwd: process.cwd() });
50344
50531
  return {
50345
50532
  status: 200,
@@ -50528,11 +50715,11 @@ const getMergeBlockersRoute = HttpRouter.add("GET", "/api/flywheel/merge-blocker
50528
50715
  async function defaultGetOrderedIssueIds() {
50529
50716
  const status = await readCurrentFlywheelStatusForDashboard();
50530
50717
  if (!status) return [];
50531
- const { computeMergeQueue } = await import("./flywheel-merge-order-BkA6937p.js");
50718
+ const { computeMergeQueue } = await import("./flywheel-merge-order-B027U7Y2.js");
50532
50719
  return (await Effect.runPromise(computeMergeQueue(status.activePipeline, process.cwd()).pipe(Effect.provide(layer)))).map((i) => i.issueId);
50533
50720
  }
50534
50721
  async function defaultMergeOne(issueId) {
50535
- const { triggerMerge } = await import("./workspaces-DL8hfuDT.js");
50722
+ const { triggerMerge } = await import("./workspaces-BB169tZ1.js");
50536
50723
  const r = await triggerMerge(issueId);
50537
50724
  return r.success ? { ok: true } : {
50538
50725
  ok: false,
@@ -50709,7 +50896,7 @@ const getFlywheelMergeQueueRoute = HttpRouter.add("GET", "/api/flywheel/merge-qu
50709
50896
  return yield* Effect.promise(async () => {
50710
50897
  const status = await readCurrentFlywheelStatusForDashboard();
50711
50898
  if (!status) return jsonResponse([]);
50712
- const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-BkA6937p.js");
50899
+ const { computeMergeQueue, resolveMergeQueuePrUrl } = await import("./flywheel-merge-order-B027U7Y2.js");
50713
50900
  return jsonResponse(await Effect.runPromise(computeMergeQueue(status.activePipeline, process.cwd(), { getPrUrl: resolveMergeQueuePrUrl }).pipe(Effect.provide(layer))));
50714
50901
  });
50715
50902
  })));
@@ -50723,14 +50910,14 @@ function uatGenerationNameFromParam(param) {
50723
50910
  return decoded.startsWith("uat/") ? decoded : `uat/${decoded}`;
50724
50911
  }
50725
50912
  const getUatGenerationsRoute = HttpRouter.add("GET", "/api/flywheel/uat-generations", httpHandler(Effect.gen(function* () {
50726
- const { getUatGenerationsPayload } = yield* Effect.promise(() => import("./uat-train-C6_NdOfR.js"));
50913
+ const { getUatGenerationsPayload } = yield* Effect.promise(() => import("./uat-train-D0UsTS5S.js"));
50727
50914
  return jsonResponse(yield* Effect.promise(() => getUatGenerationsPayload()));
50728
50915
  })));
50729
50916
  const postUatGenerationStackRoute = HttpRouter.add("POST", "/api/flywheel/uat-generations/:name/stack", httpHandler(Effect.gen(function* () {
50730
50917
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
50731
50918
  if (authError) return authError;
50732
50919
  const name = uatGenerationNameFromParam((yield* HttpRouter.params)["name"] ?? "");
50733
- const { postUatGenerationStackPayload } = yield* Effect.promise(() => import("./uat-train-C6_NdOfR.js"));
50920
+ const { postUatGenerationStackPayload } = yield* Effect.promise(() => import("./uat-train-D0UsTS5S.js"));
50734
50921
  const result = yield* Effect.promise(() => postUatGenerationStackPayload(name));
50735
50922
  if (!result.ok) return jsonResponse({ error: result.error }, { status: result.status });
50736
50923
  return jsonResponse({
@@ -50742,8 +50929,8 @@ const postUatGenerationPromoteRoute = HttpRouter.add("POST", "/api/flywheel/uat-
50742
50929
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
50743
50930
  if (authError) return authError;
50744
50931
  const name = uatGenerationNameFromParam((yield* HttpRouter.params)["name"] ?? "");
50745
- const { postUatGenerationPromotePayload } = yield* Effect.promise(() => import("./uat-train-C6_NdOfR.js"));
50746
- const { firePostMergeLifecycle } = yield* Effect.promise(() => import("./specialists-Bbj7bCwh.js"));
50932
+ const { postUatGenerationPromotePayload } = yield* Effect.promise(() => import("./uat-train-D0UsTS5S.js"));
50933
+ const { firePostMergeLifecycle } = yield* Effect.promise(() => import("./specialists-ZtyvSxW9.js"));
50747
50934
  const result = yield* Effect.promise(() => postUatGenerationPromotePayload(name, firePostMergeLifecycle));
50748
50935
  if (!result.success) return jsonResponse(result, { status: result.reason === "not-found" ? 404 : result.reason === "merge-failed" ? 500 : 409 });
50749
50936
  return jsonResponse(result);
@@ -50756,7 +50943,7 @@ const postUatGenerationPromoteRoute = HttpRouter.add("POST", "/api/flywheel/uat-
50756
50943
  const postFlywheelAssembleUatRoute = HttpRouter.add("POST", "/api/flywheel/assemble-uat", httpHandler(Effect.gen(function* () {
50757
50944
  const authError = rejectUnsafeDashboardMutationRequest(yield* HttpServerRequest.HttpServerRequest);
50758
50945
  if (authError) return authError;
50759
- const { runUatTrainReconcile } = yield* Effect.promise(() => import("./uat-train-C6_NdOfR.js"));
50946
+ const { runUatTrainReconcile } = yield* Effect.promise(() => import("./uat-train-D0UsTS5S.js"));
50760
50947
  return jsonResponse(yield* Effect.promise(() => runUatTrainReconcile({ force: true })));
50761
50948
  })));
50762
50949
  const getFlywheelStateRoute = HttpRouter.add("GET", "/api/flywheel/state", httpHandler(Effect.gen(function* () {
@@ -53927,7 +54114,7 @@ async function pollOnce(state) {
53927
54114
  try {
53928
54115
  const remoteState = await readFile(join$1(homedir$1(), ".overdeck", "agents", agentId, "remote-state.json"), "utf-8").then((text) => JSON.parse(text)).catch(() => null);
53929
54116
  if (remoteState?.location === "remote" && remoteState?.vmName) {
53930
- const { getRemoteAgentOutput } = await import("./remote-agents-DQ2gRI6m.js");
54117
+ const { getRemoteAgentOutput } = await import("./remote-agents-CYhsjnkE.js");
53931
54118
  stdout = await getRemoteAgentOutput(agentId, remoteState.vmName, 50);
53932
54119
  } else stdout = await Effect.runPromise(capturePane(agentId, 50));
53933
54120
  } catch {
@@ -54880,7 +55067,7 @@ const RESTART_MARKER = join(homedir(), ".overdeck", "dashboard-restarting.json")
54880
55067
  * loads new content-hashed chunk filenames (no ERR_MODULE_NOT_FOUND after rebuild).
54881
55068
  */
54882
55069
  async function defaultLifecycleRunner(pending) {
54883
- const { postMergeLifecycle, notifyTldrDaemon } = await import("./merge-agent-CdxCcqFv.js");
55070
+ const { postMergeLifecycle, notifyTldrDaemon } = await import("./merge-agent-PlMChx1A.js");
54884
55071
  await postMergeLifecycle(pending.issueId, pending.projectPath, pending.sourceBranch, { skipDeploy: true });
54885
55072
  if (pending.sourceBranch) await notifyTldrDaemon(pending.projectPath, pending.sourceBranch);
54886
55073
  }
@@ -55201,7 +55388,7 @@ function failureReason(result) {
55201
55388
  return result.error ?? result.message ?? `merge returned status ${result.statusCode ?? "unknown"}`;
55202
55389
  }
55203
55390
  async function defaultMergeIssue(issueId) {
55204
- const { triggerMerge } = await import("./workspaces-DL8hfuDT.js");
55391
+ const { triggerMerge } = await import("./workspaces-BB169tZ1.js");
55205
55392
  return triggerMerge(issueId);
55206
55393
  }
55207
55394
  function defaultAnnounceFailure(issueId, reason) {
@@ -55812,7 +55999,7 @@ reconcileStaleGitHubBlockers().then((n) => {
55812
55999
  }
55813
56000
  }).catch((err) => console.warn(`[overdeck] Startup blocker reconciliation failed: ${err.message}`));
55814
56001
  try {
55815
- const { resetProcessingToQueued } = await import("./merge-sync-CmpwVmNH.js");
56002
+ const { resetProcessingToQueued } = await import("./merge-sync-Qvqrosks.js");
55816
56003
  const resetCount = resetProcessingToQueued();
55817
56004
  if (resetCount > 0) {
55818
56005
  console.log(`[overdeck] Reset ${resetCount} stuck merge queue entries to queued`);