@sideboard-ai/core 0.1.315 → 0.1.316

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 (28) hide show
  1. package/dist/{abletime-QQZWYJXC.js → abletime-NZ2ABWAL.js} +3 -3
  2. package/dist/{abletime-QK3KMRQD.js → abletime-TKAFNXCM.js} +3 -3
  3. package/dist/{abletime-oauth-CAHTMB4V.js → abletime-oauth-CBFFBINA.js} +2 -2
  4. package/dist/{abletime-oauth-I2RRPVKT.js → abletime-oauth-S4AXA4WR.js} +2 -2
  5. package/dist/{abletime-rest-5V4KGMSY.js → abletime-rest-NSOP72AI.js} +2 -2
  6. package/dist/{abletime-rest-W5TLQK7C.js → abletime-rest-ORBELZQO.js} +2 -2
  7. package/dist/{chunk-BMORGDYI.js → chunk-4ISF5XUA.js} +4 -3
  8. package/dist/{chunk-CYPFOIUK.js → chunk-7BLIY2DD.js} +3 -3
  9. package/dist/{chunk-JRZTJ4F7.js → chunk-7SCVGGF6.js} +4 -4
  10. package/dist/{chunk-IODJCVMN.js → chunk-ATSZXRFQ.js} +2 -1
  11. package/dist/{chunk-7J2KOIYD.js → chunk-CCUGIVYN.js} +2 -2
  12. package/dist/{chunk-YR7NZYUT.js → chunk-DNWO6PQJ.js} +2 -1
  13. package/dist/{chunk-DV6ID6CK.js → chunk-ELBK34TY.js} +4 -4
  14. package/dist/{chunk-MKGSMPWB.js → chunk-GXSV3X3L.js} +2 -2
  15. package/dist/{chunk-72OWKHFJ.js → chunk-I5CLCWUK.js} +2 -2
  16. package/dist/{chunk-NZVD5EVX.js → chunk-VVV7EI6T.js} +2 -1
  17. package/dist/{chunk-Y4WARKPW.js → chunk-VZAJVX36.js} +2 -1
  18. package/dist/{conductor-DKWTQADV.js → conductor-CFLBKVHJ.js} +1 -1
  19. package/dist/{conductor-IMKNYQWZ.js → conductor-NZ4V5CJX.js} +1 -1
  20. package/dist/index.cjs +293 -6
  21. package/dist/index.d.cts +11 -5
  22. package/dist/index.d.ts +11 -5
  23. package/dist/index.js +294 -15
  24. package/dist/mcp/run-stdio.cjs +2 -0
  25. package/dist/mcp/run-stdio.js +5 -5
  26. package/dist/{orchestrator-ZRMZ4TCL.js → orchestrator-7342RGRU.js} +2 -2
  27. package/dist/{orchestrator-4XFRK57E.js → orchestrator-KXEPWTG5.js} +2 -2
  28. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -7387,10 +7387,7 @@ interface IpcApi extends McpUiIpc {
7387
7387
  includeUntracked?: boolean;
7388
7388
  path?: string;
7389
7389
  }): Promise<DiffResult>;
7390
- /**
7391
- * Sidebar/board dirty glyph only — numstat vs HEAD + porcelain.
7392
- * Do not use getDiff for that path (merge-base / untracked walk).
7393
- */
7390
+ /** Sidebar dirty glyph: numstat vs HEAD + porcelain, not getDiff. */
7394
7391
  getWorktreeDirtyStat(threadRef: string): Promise<WorktreeDirtyStat>;
7395
7392
  /** `git init` in the thread worktree when Changes has no Git repo (Cursor-style). */
7396
7393
  initializeGit(threadRef: string): Promise<void>;
@@ -7398,6 +7395,8 @@ interface IpcApi extends McpUiIpc {
7398
7395
  getPrChecks(threadRef: string): Promise<PrCheckRun[] | null>;
7399
7396
  /** Lightweight PR fields for the sidebar pill (cheap GraphQL). */
7400
7397
  getPrMeta(threadRef: string): Promise<PrMeta | null>;
7398
+ /** Source-ticket blockers. Null when there is no ticket or the lookup failed. */
7399
+ refreshIssueBlocked(threadRef: string): Promise<string[] | null>;
7401
7400
  /** GitHub PR stack for the thread worktree, or null if not stacked. */
7402
7401
  getPrStack(threadRef: string): Promise<PrStack | null>;
7403
7402
  /** Open worktrees/threads for stack layers (all, or one 1-based position). */
@@ -7777,6 +7776,13 @@ declare function addBoardPin(input: AddBoardPinInput): BoardPin;
7777
7776
  declare function removeBoardPin(id: string): boolean;
7778
7777
  declare function clearBoardPins(): void;
7779
7778
 
7779
+ /**
7780
+ * Look up the source ticket's blockers and store them on every chat in the
7781
+ * worktree. A failed lookup leaves the previous list in place. An empty list
7782
+ * means the ticket was read and nothing blocks it.
7783
+ */
7784
+ declare function refreshWorktreeIssueBlocked(threadRef: string): Promise<string[] | null>;
7785
+
7780
7786
  interface SideboardCloudTask {
7781
7787
  id: string;
7782
7788
  user_id: string;
@@ -8790,4 +8796,4 @@ declare function pollSlackOutboundWatches(opts?: {
8790
8796
  now?: number;
8791
8797
  }): Promise<void>;
8792
8798
 
8793
- export { ABLETIME_MCP_PATH, ABLETIME_MCP_PM_PATH, ABLETIME_OAUTH_CALLBACK_PATH, ABLETIME_OAUTH_CANCELLED, ABLETIME_OAUTH_LOCAL_CALLBACK, ABLETIME_OAUTH_PORT, ABLETIME_OAUTH_REDIRECT, ABLETIME_OAUTH_RESOURCE, ABLETIME_OAUTH_TOKEN_PREFIX, ABLETIME_ORG_KEY_PREFIX, ABLETIME_PAT_PREFIX, ABLETIME_PM_TOOL_NAMES, AGENT_DONE_CUSTOM_SOUND_EXTENSIONS, AGENT_DONE_CUSTOM_SOUND_MAX_BYTES, AGENT_DONE_SOUNDS, AGENT_GIT_ACTIONS, AGENT_RPC_NATIVE_ENV, AGENT_RPC_PROTOCOL_VERSION, AGENT_RUNNER_MAX_OLD_SPACE_MB, ATTACHMENTS_DIR, type AbleTimeAssignedIssuesResult, type AbleTimeComment, type AbleTimeCredentialKind, type AbleTimeMcpToolName, AbleTimeOAuthCancelledError, type AbleTimeOrientation, type AbleTimePmToolName, type AbleTimeProject, type AbleTimeTask, type AbleTimeTaskRelationInput, type AbleTimeViewer, type AccountProfile, type ActiveRun, type AddBoardPinInput, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentBlock, type AgentBlockSource, type AgentDoneCustomSoundPayload, type AgentDoneSound, type AgentEvent, type AgentGitAction, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentPermissionPrompt, type AgentRpcConnect, type AgentRuntimeMetadata, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AskBlockSnapshot, type AttachCommand, type Autonomy, BAKED_ABLETIME_OAUTH_CLIENT_ID, BAKED_REMOTE_RELAY_URL, BAKED_SLACK_RELAY_URL, BASE_ALLOWED_TOOLS, BRIGHTSY_MCP_ALLOWED_TOOLS, BRIGHTSY_OAUTH_CLIENT_ID, BRIGHTSY_OAUTH_REDIRECT, BRIGHTSY_SUMMARIZE_CONTEXT_TOOL, BUNDLED_LONG_RUNNING_PATH, BUNDLED_SKILL_PREFIX, type BoardPin, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CHARS_PER_CONTEXT_TOKEN, CHAT_LINK_PREFIX, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, CLAUDE_CHROME_ALLOWED_TOOLS, CLAUDE_MODEL_CATALOG, CLAUDE_POSTHOG_CONNECTOR_ALLOWED_TOOLS, CLAUDE_PRINT_BG_WAIT_CEILING_MS, CLAUDE_SUMMARY_TIMEOUT_MS, CLI_DIR, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_CANCELED_REPLY, CLOUD_COORDINATOR_INPUT_REQUIRED_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, CONTEXT_REVIEW_PATH, CONVENTION_SETUP_RELPATHS, COORDINATOR_TOOL_PLAYBOOK, CURSOR_SDK_INSTALL_HINT, type CaffeinateHoldState, type ChatTextScale, type ClaudeExtraUsage, type ClaudeHarnessSettings, type ClaudePlanUsage, type ClaudeUsageWindow, type ClaudeUsageWindowId, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CodeLineRange, type CodeRefInput, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type ConventionSetupFile, type CowboyThreadFields, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateScheduledTaskInput, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorAgentUsageSnapshot, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorUsageCost, type CursorWorktreesConfig, DEFAULT_ABLETIME_HOST, DEFAULT_RUN_LOG_TAIL_CHARS, DEFAULT_WORKTREE_SORT, DETACHED_JOBS_DIR, type DefaultsAppSettings, type DefaultsSettingsPatch, type DevAccessRun, type DevPreview, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, EMPTY_MANAGED_ACCOUNTS, type EnsuredReviewGuidelines, type ExpandResult, FAMOUS_SOCCER_TEAMS, FOLLOW_UP_BEHAVIORS, type FastForwardMainResult, type FollowUpBehavior, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GITHUB_GIT_AUTH_MODES, GITHUB_PR_BODY_MAX_CHARS, GITHUB_PR_BODY_SAFE_CHARS, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubIssue, type GitHubIssueComment, type GitHubIssueRelationInput, type GitHubProject, type GitHubProjectRef, type GitHubStatus, type GitWorktreeStatus, type GithubGitAuthMode, HARNESS_ENV_KEYS, HISTORY_DISCARDED_TEXT, HISTORY_MAX_COUNT_DEFAULT, HISTORY_MAX_COUNT_MAX, HISTORY_MAX_COUNT_MIN, HISTORY_MAX_DAYS_DEFAULT, HISTORY_MAX_DAYS_MAX, HOME_BOARD_CACHE_TTL_MS, type HarnessId, type HistoryCleanupResult, type HistoryRetentionPlan, type HomeBoardLoaded, type HomeBoardRemoteData, IMPLIED_TICKET_RESOLVE_PROMPT, ISSUE_SOURCE_LABELS, type ImportedAgentDoneSound, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueActivityComment, type IssueAssigneeFilter, type IssueCycleInfo, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_DETACHED_JOBS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LEGACY_THREAD_LINK_PREFIX, LIGHT_RECONCILE_THROTTLE_MS, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, LIVE_TURN_SPAWN_GRACE_MS, LONG_RUNNING_SKILL_COMMAND, type LandPreview, type LandResult, type LinearAssignedIssuesResult, type LinearAssigneeFilter, type LinearComment, type LinearCycle, type LinearIssue, type LinearIssueAttachment, type LinearIssueComment, type LinearIssueRef, type LinearIssueRelation, type LinearIssueRelationInput, type LinearNamedRef, LinearOAuthCancelledError, type LinearProjectRef, type LinearTeam, type LinearTeamsResult, type LinearWorkflowState, type ListIssuesOptions, type ListIssuesResult, type ListPrsOptions, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type ManagedAccount, type ManagedAccountKind, type ManagedAccountsState, type McpServerStatus, type McpUiView, type MessagePart, type NextManagedAccount, type NotifyOrchestratorReason, type NotifyOrchestratorResult, OPTIONAL_SERVICES, OPTIONAL_SERVICE_IDS, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OptionalCliPresence, type OptionalServiceCliStatus, type OptionalServiceId, type OptionalServiceSpec, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorDefaultsSettings, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, type OutboundTurnCopy, type OutboundTurnSnapshot, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, PLAN_MODE_OFF_INSTRUCTION, PLAN_QUESTION_ANSWERS_PREFIX, PORT_RANGE_SIZE, PRESENT_PLAN_REQUIRES_PLAN_MODE, PRESENT_PLAN_TOOL_DESCRIPTION, PROFILE_NOTES_MAX, PR_DETAILS_JSON_FIELDS, type PathRefInput, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PortReservation, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type ProjectProfileSettings, type PublicAppSettings, type PublicIntegrationsSettings, READ_ALOUD_RATE_DEFAULT, READ_ALOUD_RATE_MAX, READ_ALOUD_RATE_MIN, REMOTE_RELAY_PATH, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_LABEL_MAX, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, REVIEW_REQUEST_TEMPLATE, REVIEW_SKILL_NAME, REVIEW_SKILL_PATH, RUN_PORTS_REL, RUN_SCRIPT_DESKTOP_ADOPT_MS, type ReadAloudSettingsFields, type RelayAccountProvider, type RelayServerHandle, type RelayServerOptions, type RemoteAccountSession, type RemoteAskQuestion, type RemoteHostClientOptions, type RemoteHostHandle, type RemoteHostStatus, RemoteHub, type RemoteServerMessage, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ReservePortRangeOpts, type ResolvedAccountProfile, type ResolvedReviewGuidelines, type ResolvedThreadDefaults, type ResolvedViewerProfile, type ReviewGuidelinesSource, type RunLogSnapshot, type RunMode, type RunScript, type RunScriptPreviewInput, type RunScriptRequest, SEED_FULL_TOOL_MESSAGES, SEED_MAX_CHARS, SESSION_RESET_OCCUPANCY_TOKENS, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_INPUT_REQUIRED_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_REDIRECT, SLACK_PROGRESS_DELAY_MS, SLACK_PROGRESS_EDIT_MS, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, STDERR_EVENT_MAX_CHARS, STDOUT_EVENT_MAX_CHARS, type ScheduleCreatedBy, type ScheduleWhen, type ScheduledTask, type ScriptHandle, type SessionSeedOptions, type SetupLogSnapshot, type SetupRunResult, type SidebarGitAction, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerMessage, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SteerRequest, type SummarizeResult, THINKING_EFFORTS, THINKING_PART_MAX_CHARS, type TaskState, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, USAGE_ON_LIMIT_VALUES, type UpdateScheduledTaskPatch, type UsageOnLimit, type UsageScope, type ViewerContextWriteResult, type ViewerProfile, WORKTREE_ABLETIME_MCP_TOOLS, WORKTREE_GITHUB_MCP_TOOLS, WORKTREE_LINEAR_MCP_TOOLS, WORKTREE_MCP_TOOLS, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, type WorkspaceTagMode, type WorktreeDirtyStat, type WorktreeListBadge, type WorktreeOpener, type WorktreeOpenerId, type WorktreeSortMode, type WorktreeStatKind, ableTimeCredentialKind, ableTimeDependencyTarget, ableTimeOAuthAuthorizeUrl, ableTimeOAuthBouncePage, ableTimeOAuthClientId, ableTimeOAuthLocalBounceUrl, ableTimeOAuthRedirectUri, ableTimeOAuthResource, ableTimeUsesRest, abletimeMcpRequest, abletimeMcpUrl, abletimeToolUsesPm, accountIdToPin, ackSlackInboundSeen, activeAccountId, activeRunPreview, addBoardPin, addManagedAccount, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, agentDoneCustomSoundMime, agentDoneSound, agentDoneSoundsDir, agentGitPrompt, agentRpcConnectFromMetadata, alignQueueAttachments, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, annotateDevAccessRuns, answerToolPermission, appDataDir, appSettingsPath, appendCompactedMessages, appendIndexedGitConfig, appendMessage, appendQueuedItem, applyAgentEvent, applyAgentRunnerHeapEnv, applyAppEnvironment, applyCompaction, applyForwardOccupancy, applyGithubGitAuthEnv, applyManagedAccountEnv, applyPromptCacheTtlEnv, applySystemCaEnv, applyThreadIntoMain, applyTurnUsage, applyWorkspaceTags, archiveRemovedWorkspaceChats, archivesWithRemovedWorkspace, armSchedules, askBlockStillWaiting, assertAbleTimeCredential, assertAbleTimeMcpCredential, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupHistoryEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, bootstrapSystemCa, branchDisplayLabel, brightsyAccessTokenNeedsRefresh, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildBrightsySessionSeed, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildCodeRefAttachment, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildLinearIssueFilter, buildPastedTextAttachment, buildPathRefAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSchedulesEnabled, caffeinateWhileSlackListenEnabled, callAbleTimeTool, canReuseIdleWorktreeAgentForReview, canonicalizeRepoPath, captureLoginEnv, captureTurnBaseline, chatLinkUrl, chatTextScale, checkoutPrStackLayer, childEnvWithAppSettings, claimDesktopHost, clampGithubPrBody, clampHistoryMaxCount, clampHistoryMaxDays, clampReadAloudRate, classifyRunScriptPreview, classifyWorktreeColumn, classifyWorktreeListBadges, claudeAdapter, claudeChromeEnabled, claudeSubagentTurnReminder, claudeUsageOverLimitWindows, claudeUserSettingsPath, cleanupArchivedHistory, cleanupOrphanWorktrees, clearAgentDoneCustomSoundFile, clearBoardPins, clearHomeBoardCache, clearOptionalCliPresenceCache, clipAgentEventForPaint, clipThinkingForStore, cloneRepoIntoSideboard, closeMcpUiHost, codeRefRangeLabel, codexAdapter, codexSandboxWritableRootsArgs, codexUnattendedGitConfigArgs, coerceOrchestratorAgent, collectTakenTeamSlugs, commandLooksLikeElectron, commentAbleTimeTask, commentGitHubIssue, commentLinearIssue, commitAll, compactArchiveProse, compactPartsForSummaryMessage, compactSummaryPart, computeNextRunAt, conductorBundledBinDir, conductorDbPath, confirmClaudeUsageOverLimitEnabled, confirmLand, connectBrightsyTeam, connectOptionalService, connectSlackToken, connectedOptionalServices, connectedOrchestratorTurnReminder, connectedPrSelectors, consumeComposerAttachments, contextTokens, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, copyReadAloudFromUnknown, countCacheControlBlocks, countUnpushedVsOrigin, cowboyModeEnabled, createAbleTimePkce, createAbleTimeTask, createChatTab, createEmptyThread, createExistingBranchWorktree, createGitHubIssue, createGlobalChat, createLinearIssue, createLinearPkce, createOrUpdatePr, createPrStack, createSchedule, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, defaultScheduleName, deleteBranchOnPurgeEnabled, deleteSchedule, deleteThreadRecord, deriveTaskState, desktopHostPidPath, detectAgents, detectGhStack, detectLocalMergeConflicts, detectOptionalServiceClis, disconnectAbleTimeConnection, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectOptionalService, disconnectRemoteAccount, disconnectSlackWorkspace, discoverSkills, downloadAbleTimeAttachment, downloadGitHubIssueAttachment, downloadLinearAttachment, dropCachedPrefixOnResume, emptyPublicIntegrations, emptyRunLog, emptySetupLog, encodeBrightsyTarget, endedOnAskUser, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAbleTimeAccessToken, ensureAbleTimeTask, ensureAgentPath, ensureBrightsyLocalConfigFresh, ensureBrightsyOAuthClientId, ensureCloudCoordinator, ensureConnectedBrightsyTeamTokens, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureManagedAccountDir, ensureRemoteCoordinator, ensureRemoteHostCredentials, ensureReviewGuidelinesFile, ensureReviewRequestFile, ensureReviewSkillFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateOccupancyTokens, estimateThreadChars, examplePrefixedBranch, expandComposerPrompt, extractBrightsyContextSummary, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fastForwardMainCheckoutIfSafe, fetchOriginForWorktree, fetchPrHead, finalizeParts, findAgentDoneCustomSoundPath, findConventionSetup, findInvalidCacheControlTtlOrder, findLastBrightsyContextSummary, findLiveThreadForCreate, findLiveThreadForCreateSource, findManagedAccount, findOrphanWorktrees, findProjectProfileKey, findRemoteCoordinator, findSlackCoordinator, findThreadByRef, findThreadForStackLayer, fireSchedule, flattenTurnInput, flipLinearRelationType, foldLegacyRolesIntoNotes, followUpBehavior, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAccountProfilePlaybookLine, formatArtifactDirective, formatAskUserNotifyMessage, formatBrightsyFetchError, formatClaudeExtraUsageDetail, formatClaudeSubagentReminder, formatClaudeUsageCompact, formatClaudeUsageFetchedAt, formatClaudeUsageOverLimitConfirm, formatClaudeUsageOverLimitWait, formatClaudeUsageReset, formatClaudeUsageResetClock, formatClaudeUsageTooltip, formatCloudTurnReply, formatConnectedOrchestratorReminder, formatDetachedJobInvoke, formatDevAccessHint, formatFetchError, formatGhLandError, formatGitAuthModeDirective, formatInjectedNoticesForTurn, formatIpcInvokeError, formatIssueToolsDirective, formatIssueToolsReminder, formatLinearDirective, formatLinearReminder, formatLongRunningDirective, formatLongRunningReminder, formatMergePrError, formatMessagesAsTranscript, formatNotifyOrchestratorPrompt, formatOptionalServicesDirective, formatOptionalServicesDirectiveForTurn, formatOptionalServicesReminder, formatOptionalServicesReminderForTurn, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatPrGateDirective, formatProcessGuideDirective, formatProjectProfilePlaybookLines, formatRateLimitResetHint, formatRemotePrompt, formatRenameBranchDirective, formatScheduleWhen, formatScheduledPrompt, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackReplyContinuePrompt, formatSlackSignedReply, formatSlackTurnReply, formatSlackWorkingText, formatTranscriptMarkdown, formatUiReminder, formatViewerContextDirective, formatViewerContextReminder, formatWorkspaceInventory, formatWorkspaceProfileSuffix, formatWorktreeDirective, formatWorktreeReminder, forwardContextUsage, forwardOccupancyTokens, fromInclusiveInputUsage, getAbleTimeAccessToken, getAbleTimeHost, getAbleTimeOrientation, getAbleTimeTask, getAdapter, getAgentRpcServer, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getClaudePlanUsage, getDefaultAgent, getDefaultAutonomy, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubIssue, getGitHubStatus, getGithubGitAuthMode, getGithubPat, getHomeBoardInputs, getIssueSource, getLinearApiKey, getLinearAuthToken, getLinearIssue, getMcpUiHost, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrForHeadBranch, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSchedule, getSlackWorkspace, getWorktreeDirtyStat, gh, ghHeadRef, ghPrCreateAssigneeArgs, ghRepoSelectArgs, git, gitBranchPrefixSetting, githubAgentGitEnv, githubHttpsInsteadOfEntries, githubProjectsOnIssue, githubRelationEditFlag, globalAgentCwd, groupHomeBoardWorktrees, handleRemoteInbound, handleSlackInbound, harnessEnvKey, hasBakedAbleTimeOAuth, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasConventionSetup, hasCursorWorktreeSetup, hasEnabledSchedules, hasRepoHook, hasWorkspaceHook, hasWorkspaceSettingsToml, headlessHostBlockedReason, healOrchestrationSoccerTitles, historyMaxCount, historyMaxDays, hottestClaudeWindow, httpFetch, importAgentDoneCustomSound, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, installNpmGlobalPackage, installOptionalServiceCli, interruptSlackCoordinatorForInbound, invalidateThreadListCache, invalidateThreadRecord, isAbleTimeConnected, isAbleTimeOAuthCancelled, isAbleTimeRejectedCredential, isAdoptableRunScriptRequest, isAgentDoneSound, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isChatTextScale, isClaudeAiConnectorMcp, isCloudCoordinatorThread, isCompactToolName, isConductorBundledCli, isContextCompactDone, isContextCompactInProgress, isCowboyThread, isCursorApiKeyConfigured, isCursorAutoModel, isCursorSdkInstalled, isDefaultishSourceRef, isDesktopHostAlive, isDirty, isGhPrBodyTooLongError, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isHistoryRetentionStub, isHomeBoardThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isIncompleteTaskState, isInjectedNoticeText, isInjectedOrchMcpName, isInternalAgentStatusText, isIssueSourceConnected, isLinearConnected, isLinearNoneToken, isLinearOAuthCancelled, isManagedAccountKind, isOptionalServiceId, isOrchestratorCapableAgent, isOrchestratorThread, isOtherWorktreeListenerCwd, isPidAlive, isPlaceholderBranch, isPlanQuestionAnswersMessage, isPollWrapperToolName, isPosthogConnected, isPrNotMergeableError, isPresentPlanToolName, isPrimaryCheckoutThread, isRemoteAccountLoginCancelled, isRemoteStopCommand, isRemovedWorkspace, isSelfWrittenRecord, isSessionQuotaLimit, isSetupLastError, isShellToolName, isSideboardScratchPath, isSkillToolName, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isStaleLastErrorDuringTurn, isSubagentToolName, isSystemStatusThinking, isTerminalTaskState, isThinkingEffort, isThisProcessDesktopHost, isThisWorktreeListenerCwd, isThreadCaffeinated, isThreadRecordFile, isUnclaimedRunScriptRequest, isUsageOnLimit, isWorkspaceScratchPath, issueAttachmentForAbleTimeTask, issueMatchesAssignee, issueSourceLabel, issueTicketFromThread, killDetachedRunTree, killListenersOnPorts, killStaleWorktreeListeners, killableListenerPids, lanRelayUrls, lastAgentReply, lastAssistantMessageText, lastRequestOccupancy, lastTopLevelToolIsAskUser, latestPendingPlanQuestions, linearAuthorizationHeader, linearCycleIsActive, linearGraphql, linearOAuthAuthorizeUrl, linearOAuthCredentials, linearRelationCreateInput, linearTicketIdFromThread, linkSharedDirectories, linkifyChatUrls, listAbleTimeAssignedIssues, listAbleTimeProjects, listAbleTimeTasks, listAgentSetupInfo, listBoardPins, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssueCommentsSince, listGitHubIssues, listGitHubProjects, listGlobalThreads, listIssues, listLinearAssignedIssues, listLinearCommentsSince, listLinearIssues, listLinearIssuesDirect, listLinearIssuesFiltered, listLinearProjects, listLinearTeamCycles, listLinearTeams, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSchedules, listSlackOutboundWatches, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, listenerCwd, liveActivitySummary, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadHomeBoardInputs, loadRepoSettings, loadWorkspaceSettings, loadWorktreeRunPorts, localhostPreviewUrl, locksDir, loginAgent, loginEnvPrefix, loginManagedAccount, looksLikeComposerSkillExpansion, looksLikeConversationSummary, looksLikeIncompleteSkillDump, looksLikeSkillBody, lookupSoccerTeam, managedAccountConfigDir, mapAbleTimeTask, markPrReady, materializeSystemCaBundle, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAllowToolsFromNames, mcpAuthWarnings, mcpServerIdForPermission, mcpServerPermissionUpdate, mcpStatusThinkingFromClaudeInit, mcpUiContentSecurityPolicy, mentionsPrGoal, mergeAgentGitAuthEnv, mergePr, mergePrStack, mergeSetupOutput, mergeSideboardIntoMcpServersJson, mergeUsage, messagePartParentId, messagesForCompactArchive, messagesSinceLastBrightsyContextSummary, mirrorHostConfig, moveQueuedItemToFront, needsCoordinatorAction, nextManagedAccount, nextPastedTextName, nextThinkingEffort, nonInteractiveGitProcessEnv, normalizeAbleTimeCredential, normalizeAbleTimeHost, normalizeBrightsyEndpoint, normalizeCodeSelection, normalizeLinearRelationType, normalizeManagedAccounts, normalizeParseResult, normalizeRemoteRelayUrl, normalizeReviewLabel, normalizeServiceOrigin, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorkspaceTags, normalizeWorktreePath, notifyOrchestrator, npmGlobalNodeModules, npmGlobalPrefix, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, optionalCliPresence, optionalServiceConnected, optionalServiceSpec, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originFetchBranch, originGhRepoEnv, outboundReplyFromTurn, packagedDetachedJobPath, parseAbleTimeOAuthCallbackUrl, parseChatLink, parseClaudeUsagePayload, parseCursorRunnerLine, parseDevPreview, parseDurationMs, parseForceStopMessage, parseGhStackViewJson, parseGitHubIssueNumber, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parsePrDetailsView, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, patchReadAloudSettings, pendingInjectedNotices, pendingSlackExternalReplies, permissionMode, persistPendingFileAttachments, persistVaultKeyInKeychain, planFileAbs, planHistoryAgePurge, planHistoryRetention, planModeTurnInstruction, planQuestionsSignature, pnpmFilterPackage, pollSlackOutboundWatches, posixShellSingleQuote, preferredCursorCostCents, prepareTerminalCommand, prependQueuedItem, previewLand, previousCostBaseline, primaryCheckoutFromLinkedWorktree, promptMentionsBrightsy, pushBranch, readAgentDoneCustomSound, readAgentRuntimeMetadata, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readRunLog, readSetupLog, readSkillBody, readThread, readViewerContext, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordScheduleRun, recordSlackOutboundWatch, refreshBrightsyAccessToken, refreshGitHubAuth, registerBrightsyOAuthClient, registerPackagedUserMcpClients, releaseCaffeinateHoldForThread, releaseDesktopHost, remoteAccountHttpOrigin, remoteCoordinatorSourceRef, remoteRelayUrl, removeBoardPin, removeManagedAccount, removeQueuedItem, removeWorkspace, removeWorktree, renameManagedAccount, repoSlug, requestOccupancy, requestReview, requireAgent, reservePort, reservePortRange, resetGhStackDetectCache, resetGithubAgentTokenMemo, resolveAbleTimeOAuthHost, resolveAccountForThread, resolveAccountProfile, resolveAccountProfileFromSettings, resolveAgentExecutable, resolveAgentGitAuthEnv, resolveClaudeExecutable, resolveCodexGitWritableRoots, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCreateFirstPrompt, resolveCursorModelId, resolveCursorSdkRoot, resolveDefaultBranch, resolveDetachedJobScript, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGitBranchPrefix, resolveGitDirsForLockRecovery, resolveGitHubIssueRepo, resolveGithubAgentToken, resolveGithubRepoSlug, resolveLinearCycle, resolveLinearLabel, resolveLinearProject, resolveLinearState, resolveLinearTeam, resolveLoginCommand, resolveNewOrchestratorOptions, resolveNewThreadOptions, resolveOrchChildFollowUp, resolveOrchestratorDefaults, resolvePlanMarkdown, resolvePrSelector, resolvePrSelectors, resolveProjectReviewLabel, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveScheduleThreadId, resolveSendFollowUp, resolveSidebarGitPrompt, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveUsageOnLimit, resolveVaultKey, resolveViewerProfile, resolveViewerProfileForRepo, resolveWorktreeStartPoint, reviewLabelForRepo, rewriteAbleTimeError, rewriteLinearError, run, runArchiveScript, runCloudConnect, runConventionSetup, runCursorWorktreeSetup, runRemoteHost, runScriptPreview, runSetupScript, runSlackListen, runSlackRelayClient, runWorkspaceSetup, sameWorkspacePath, sameWorktreePath, sanitizeGitBranchPrefix, sanitizeMcpServerName, sanitizeReadAloudVoiceURI, saveAbleTimeConnection, saveAppSettings, saveLinearOAuth, saveRemotePhoneToken, saveWorktreeRunPorts, scheduleNeedsCaffeinate, schedulesPath, scrubGithubTokensFromChildEnv, searchAbleTimeTasks, secureFileUnlocksWith, selectManagedAccount, setCaffeinateHold, setHttpFetchImpl, setStatus, setVaultMasterKey, settingsSourceLabel, shiftQueuedItem, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldNotifyOrchestrator, shouldRefreshReviewRequestTemplate, shouldRegisterPresentPlan, shouldRemoveWorktreeOnTeardown, shouldResetSessionForOccupancy, shouldRunHistoryCleanup, shouldRunWorktreeCleanup, shouldStampSetupLastError, showCostEnabled, sidebarParentSelectId, sidebarQuestionThreadId, sidebarRowAgentBlock, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, skillCommandFromBody, skillCommandFromInput, skillNameFromFrontmatter, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackOAuthResultUrl, slackRelayUrl, sliceRunLogOutput, slimMessagesForUiList, slimThreadForUiList, slugify, spawnAgentTurn, splitForCompaction, splitTurnInputForSystemPrompt, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startAbleTimeOAuth, startAgentRpcServer, startDevServer, startHeadlessHost, startLinearOAuth, startMcpServer, startOrchestration, startRelayServer, startRemoteAccountLogin, startSlackOAuth, stashMcpAppModelContext, statWorktreePath, stopAgentRpcServer, stripBrightsyNdjsonNoise, stripNestedElectronEnv, submitPrStack, suggestSlug, sumUsageList, summarizeConversation, switchBrightsyAccount, switchWorktreeBranch, syncWorkspacesFromThreads, systemConfigDir, takePendingTurnAttachments, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, taskUrl, thinkingEffortBars, thinkingEffortLabel, thisProcessShouldDrainAgentQueues, threadDisplayLabel, threadFilePath, threadHasCompactedContext, threadLivePath, threadLockPath, threadMayPresentPlan, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, ticketSlugForBranch, toAbleTimeIssueInfo, toGitHubIssueInfo, toPublicAppSettings, toolActivityLine, toolDescription, toolDetail, toolFilePath, totalTokens, trustSystemCertificates, tryReservePort, tryReservePorts, turnCostUsdFromCursorUsage, turnCostUsdFromProviderSnapshot, updateAbleTimeTask, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateGitHubIssue, updateIntegrationsSettings, updateLinearIssue, updateOpencodeSettings, updateProjectProfileSettings, updateSchedule, updateThread, usageOnLimit, userClaudeMcpConfigPath, userCursorMcpConfigPath, userMcpNamesToDisable, validateLinearApiKey, verifyAbleTimeConnection, verifyOptionalService, visibleAgentBlock, visibleAssistantText, visibleToolRowDetail, waitForPidExit, warmGithubAgentAuth, whichOnPath, withAddedAccount, withEventParentId, withEventsParentId, withExportedPath, withMaxOldSpaceSize, withRemovedAccount, withSelectedAccount, withThreadLock, withTurnScopedCost, workspaceAgentChatSummaries, workspaceSettingsSourceLabel, workspaceTagTargetRef, workspaceTagsFromGroup, worktreeAgentBlock, worktreeBoardStatus, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreeRunPortsPath, worktreeSlugForTicket, worktreesRoot, wrapReviewSkillMarkdown, writeInjectedMcpConfig, writePlanFile, writeThread, writeViewerContext, writeWorktreeFile };
8799
+ export { ABLETIME_MCP_PATH, ABLETIME_MCP_PM_PATH, ABLETIME_OAUTH_CALLBACK_PATH, ABLETIME_OAUTH_CANCELLED, ABLETIME_OAUTH_LOCAL_CALLBACK, ABLETIME_OAUTH_PORT, ABLETIME_OAUTH_REDIRECT, ABLETIME_OAUTH_RESOURCE, ABLETIME_OAUTH_TOKEN_PREFIX, ABLETIME_ORG_KEY_PREFIX, ABLETIME_PAT_PREFIX, ABLETIME_PM_TOOL_NAMES, AGENT_DONE_CUSTOM_SOUND_EXTENSIONS, AGENT_DONE_CUSTOM_SOUND_MAX_BYTES, AGENT_DONE_SOUNDS, AGENT_GIT_ACTIONS, AGENT_RPC_NATIVE_ENV, AGENT_RPC_PROTOCOL_VERSION, AGENT_RUNNER_MAX_OLD_SPACE_MB, ATTACHMENTS_DIR, type AbleTimeAssignedIssuesResult, type AbleTimeComment, type AbleTimeCredentialKind, type AbleTimeMcpToolName, AbleTimeOAuthCancelledError, type AbleTimeOrientation, type AbleTimePmToolName, type AbleTimeProject, type AbleTimeTask, type AbleTimeTaskRelationInput, type AbleTimeViewer, type AccountProfile, type ActiveRun, type AddBoardPinInput, type AddStackLayerInput, type AdoptInput, type AdvancedAppSettings, type AgentAdapter, type AgentBlock, type AgentBlockSource, type AgentDoneCustomSoundPayload, type AgentDoneSound, type AgentEvent, type AgentGitAction, type AgentKind, type AgentModelCatalog, type AgentModelInfo, type AgentPermissionPrompt, type AgentRpcConnect, type AgentRuntimeMetadata, type AgentSetupActionResult, type AgentSetupInfo, type AgentSetupKind, type AgentStatus, type AgentTurnInput, type AnthropicCacheControl, type AppSettings, type ApplyIntoMainResult, type AskBlockSnapshot, type AttachCommand, type Autonomy, BAKED_ABLETIME_OAUTH_CLIENT_ID, BAKED_REMOTE_RELAY_URL, BAKED_SLACK_RELAY_URL, BASE_ALLOWED_TOOLS, BRIGHTSY_MCP_ALLOWED_TOOLS, BRIGHTSY_OAUTH_CLIENT_ID, BRIGHTSY_OAUTH_REDIRECT, BRIGHTSY_SUMMARIZE_CONTEXT_TOOL, BUNDLED_LONG_RUNNING_PATH, BUNDLED_SKILL_PREFIX, type BoardPin, type BranchInfo, type BrightsyAccount, type BrightsyChatTarget, type BrightsyChatTargets, type BrightsyCloudConnectAgent, type BrightsyHarnessSettings, type BrightsySession, BrightsySideboardApi, type BrightsyTeamTargets, CHARS_PER_CONTEXT_TOKEN, CHAT_LINK_PREFIX, CHAT_TEXT_SCALES, CHAT_TEXT_SCALE_DEFAULT, CLAUDE_CHROME_ALLOWED_TOOLS, CLAUDE_MODEL_CATALOG, CLAUDE_POSTHOG_CONNECTOR_ALLOWED_TOOLS, CLAUDE_PRINT_BG_WAIT_CEILING_MS, CLAUDE_SUMMARY_TIMEOUT_MS, CLI_DIR, CLOUD_COORDINATOR_BUSY_REPLY, CLOUD_COORDINATOR_CANCELED_REPLY, CLOUD_COORDINATOR_INPUT_REQUIRED_REPLY, CLOUD_COORDINATOR_STOPPED_REPLY, CLOUD_COORDINATOR_TIMEOUT_REPLY, CLOUD_ORCHESTRATOR_GOAL, CONTEXT_COMPACT_CHARS, CONTEXT_KEEP_RECENT_CHARS, CONTEXT_KEEP_RECENT_MESSAGES, CONTEXT_MIN_MESSAGES, CONTEXT_REVIEW_PATH, CONVENTION_SETUP_RELPATHS, COORDINATOR_TOOL_PLAYBOOK, CURSOR_SDK_INSTALL_HINT, type CaffeinateHoldState, type ChatTextScale, type ClaudeExtraUsage, type ClaudeHarnessSettings, type ClaudePlanUsage, type ClaudeUsageWindow, type ClaudeUsageWindowId, type CleanupOrphansResult, type CliAgentKind, type CliExecutableSettings, type CloudConnectAgent, type CloudConnectOptions, type CloudConnectStatus, type CodeLineRange, type CodeRefInput, type CompactResult, type CompactThresholds, type ComposerFileBuffer, type ConductorSettings, type ConductorWorkspace, type ConnectedBrightsyTeamInfo, type ConventionSetupFile, type CowboyThreadFields, type CreateChatTabInput, type CreateGlobalChatOpts, type CreateScheduledTaskInput, type CreateStackInput, type CreateThreadInput, type CreateWorktreeResult, type CursorAgentUsageSnapshot, type CursorModelInfo, type CursorSdkStreamMessage, type CursorTurnRequest, type CursorUsageCost, type CursorWorktreesConfig, DEFAULT_ABLETIME_HOST, DEFAULT_RUN_LOG_TAIL_CHARS, DEFAULT_WORKTREE_SORT, DETACHED_JOBS_DIR, type DefaultsAppSettings, type DefaultsSettingsPatch, type DevAccessRun, type DevPreview, type DevServerHandle, type DiffCommentInput, type DiffCommentLine, type DiffCommit, type DiffFile, type DiffResult, type DiffScope, type DiffScopeStat, EMPTY_MANAGED_ACCOUNTS, type EnsuredReviewGuidelines, type ExpandResult, FAMOUS_SOCCER_TEAMS, FOLLOW_UP_BEHAVIORS, type FastForwardMainResult, type FollowUpBehavior, type ForkChatTabInput, type ForkThreadWorktreeInput, type FormatGhLandErrorOptions, GITHUB_GIT_AUTH_MODES, GITHUB_PR_BODY_MAX_CHARS, GITHUB_PR_BODY_SAFE_CHARS, GLOBAL_WORKSPACE_ID, type GetDiffOptions, type GhStackStatus, type GitHubIssue, type GitHubIssueComment, type GitHubIssueRelationInput, type GitHubProject, type GitHubProjectRef, type GitHubStatus, type GitWorktreeStatus, type GithubGitAuthMode, HARNESS_ENV_KEYS, HISTORY_DISCARDED_TEXT, HISTORY_MAX_COUNT_DEFAULT, HISTORY_MAX_COUNT_MAX, HISTORY_MAX_COUNT_MIN, HISTORY_MAX_DAYS_DEFAULT, HISTORY_MAX_DAYS_MAX, HOME_BOARD_CACHE_TTL_MS, type HarnessId, type HistoryCleanupResult, type HistoryRetentionPlan, type HomeBoardLoaded, type HomeBoardRemoteData, IMPLIED_TICKET_RESOLVE_PROMPT, ISSUE_SOURCE_LABELS, type ImportedAgentDoneSound, type InitStackFromThreadInput, type IntegrationsSettings, type IpcApi, type IssueActivityComment, type IssueAssigneeFilter, type IssueCycleInfo, type IssueInfo, type IssueSource, LEGACY_ATTACHMENTS_DIR, LEGACY_DETACHED_JOBS_DIR, LEGACY_PLAN_FILE_REL, LEGACY_REVIEW_REQUEST_PATH, LEGACY_THREAD_LINK_PREFIX, LIGHT_RECONCILE_THROTTLE_MS, LINEAR_OAUTH_CANCELLED, LINEAR_OAUTH_PORT, LINEAR_OAUTH_REDIRECT, LINEAR_OAUTH_SCOPES, LIVE_TURN_SPAWN_GRACE_MS, LONG_RUNNING_SKILL_COMMAND, type LandPreview, type LandResult, type LinearAssignedIssuesResult, type LinearAssigneeFilter, type LinearComment, type LinearCycle, type LinearIssue, type LinearIssueAttachment, type LinearIssueComment, type LinearIssueRef, type LinearIssueRelation, type LinearIssueRelationInput, type LinearNamedRef, LinearOAuthCancelledError, type LinearProjectRef, type LinearTeam, type LinearTeamsResult, type LinearWorkflowState, type ListIssuesOptions, type ListIssuesResult, type ListPrsOptions, MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS, type ManagedAccount, type ManagedAccountKind, type ManagedAccountsState, type McpServerStatus, type McpUiView, type MessagePart, type NextManagedAccount, type NotifyOrchestratorReason, type NotifyOrchestratorResult, OPTIONAL_SERVICES, OPTIONAL_SERVICE_IDS, ORCHESTRATOR_AGENT_KINDS, type OpenPrStackLayersInput, type OpenStackLayerInput, type OpenStackLayerResult, type OptionalCliPresence, type OptionalServiceCliStatus, type OptionalServiceId, type OptionalServiceSpec, type OrchestrationQuotaOnLimit, Orchestrator, type OrchestratorAgentKind, type OrchestratorDefaultsSettings, type OrchestratorEvent, type OrchestratorRuntime, type OrphanWorktree, type OutboundTurnCopy, type OutboundTurnSnapshot, PASTE_ATTACH_MIN_CHARS, PASTE_ATTACH_MIN_LINES, PLAN_FILE_NAME, PLAN_FILE_REL, PLAN_MODE_INSTRUCTION, PLAN_MODE_OFF_INSTRUCTION, PLAN_QUESTION_ANSWERS_PREFIX, PORT_RANGE_SIZE, PRESENT_PLAN_REQUIRES_PLAN_MODE, PRESENT_PLAN_TOOL_DESCRIPTION, PROFILE_NOTES_MAX, PR_DETAILS_JSON_FIELDS, type PathRefInput, type PendingPlanQuestions, type PlanQuestion, type PlanQuestionAnswer, type PlanQuestionOption, type PlanToolPartLike, type PortReservation, type PrActor, type PrCheckRun, type PrCommentInfo, type PrCommitInfo, type PrDetails, type PrInfo, type PrMeta, type PrReviewInfo, type PrStack, type PrStackLayer, type PresentedPlan, type ProjectProfileSettings, type PublicAppSettings, type PublicIntegrationsSettings, READ_ALOUD_RATE_DEFAULT, READ_ALOUD_RATE_MAX, READ_ALOUD_RATE_MIN, REMOTE_RELAY_PATH, REPO_REVIEW_NAME, REPO_REVIEW_PATH, REVIEW_LABEL_MAX, REVIEW_REQUEST_NAME, REVIEW_REQUEST_PATH, REVIEW_REQUEST_PREFILL, REVIEW_REQUEST_TEMPLATE, REVIEW_SKILL_NAME, REVIEW_SKILL_PATH, RUN_PORTS_REL, RUN_SCRIPT_DESKTOP_ADOPT_MS, type ReadAloudSettingsFields, type RelayAccountProvider, type RelayServerHandle, type RelayServerOptions, type RemoteAccountSession, type RemoteAskQuestion, type RemoteHostClientOptions, type RemoteHostHandle, type RemoteHostStatus, RemoteHub, type RemoteServerMessage, type RepoSettings, type RepoSetupInfo, type RequestReviewResult, type ReservePortRangeOpts, type ResolvedAccountProfile, type ResolvedReviewGuidelines, type ResolvedThreadDefaults, type ResolvedViewerProfile, type ReviewGuidelinesSource, type RunLogSnapshot, type RunMode, type RunScript, type RunScriptPreviewInput, type RunScriptRequest, SEED_FULL_TOOL_MESSAGES, SEED_MAX_CHARS, SESSION_RESET_OCCUPANCY_TOKENS, SIDEBOARD_FORCE_STOP, SIDEBOARD_MCP_ALLOWED_TOOLS, SIDEBOARD_MCP_PROFILE_ENV, SLACK_LISTEN_INPUT_REQUIRED_REPLY, SLACK_LISTEN_STOPPED_REPLY, SLACK_LISTEN_TIMEOUT_REPLY, SLACK_OAUTH_CANCELLED, SLACK_OAUTH_REDIRECT, SLACK_PROGRESS_DELAY_MS, SLACK_PROGRESS_EDIT_MS, SLACK_REPLY_FORMATTING, SLACK_SEEN_REACTION, STDERR_EVENT_MAX_CHARS, STDOUT_EVENT_MAX_CHARS, type ScheduleCreatedBy, type ScheduleWhen, type ScheduledTask, type ScriptHandle, type SessionSeedOptions, type SetupLogSnapshot, type SetupRunResult, type SidebarGitAction, type SideboardMcpProfile, type SkillInfo, type SlackInboundMessage, type SlackListenOptions, type SlackListenStatus, SlackOAuthCancelledError, type SlackOutboundReply, type SlackOutboundWatch, type SlackRelayClientMessage, type SlackRelayClientOptions, SlackRelayHub, type SlackRelayServerMessage, type SlackWorkspaceInfo, type SourceType, type SpawnTurnHandle, type SteerRequest, type SummarizeResult, THINKING_EFFORTS, THINKING_PART_MAX_CHARS, type TaskState, type TeamName, type ThinkingEffort, type Thread, type ThreadAttachment, type ThreadMessage, type ThreadOptionsPatch, type ThreadStatus, type TokenUsage, type ToolPartLike, type TranscriptToolDetail, type TurnCommand, USAGE_ON_LIMIT_VALUES, type UpdateScheduledTaskPatch, type UsageOnLimit, type UsageScope, type ViewerContextWriteResult, type ViewerProfile, WORKTREE_ABLETIME_MCP_TOOLS, WORKTREE_GITHUB_MCP_TOOLS, WORKTREE_LINEAR_MCP_TOOLS, WORKTREE_MCP_TOOLS, type Workspace, type WorkspaceInventoryEntry, type WorkspaceScriptEnvOpts, type WorkspaceTagMode, type WorktreeDirtyStat, type WorktreeListBadge, type WorktreeOpener, type WorktreeOpenerId, type WorktreeSortMode, type WorktreeStatKind, ableTimeCredentialKind, ableTimeDependencyTarget, ableTimeOAuthAuthorizeUrl, ableTimeOAuthBouncePage, ableTimeOAuthClientId, ableTimeOAuthLocalBounceUrl, ableTimeOAuthRedirectUri, ableTimeOAuthResource, ableTimeUsesRest, abletimeMcpRequest, abletimeMcpUrl, abletimeToolUsesPm, accountIdToPin, ackSlackInboundSeen, activeAccountId, activeRunPreview, addBoardPin, addManagedAccount, addPrStackLayer, addStackLayerFromThread, addWorkspace, adoptThread, agentDoneCustomSoundMime, agentDoneSound, agentDoneSoundsDir, agentGitPrompt, agentRpcConnectFromMetadata, alignQueueAttachments, allAdapters, allocatePort, allocatePortRange, allocateTeamName, allocateTeamSlug, annotateDevAccessRuns, answerToolPermission, appDataDir, appSettingsPath, appendCompactedMessages, appendIndexedGitConfig, appendMessage, appendQueuedItem, applyAgentEvent, applyAgentRunnerHeapEnv, applyAppEnvironment, applyCompaction, applyForwardOccupancy, applyGithubGitAuthEnv, applyManagedAccountEnv, applyPromptCacheTtlEnv, applySystemCaEnv, applyThreadIntoMain, applyTurnUsage, applyWorkspaceTags, archiveRemovedWorkspaceChats, archivesWithRemovedWorkspace, armSchedules, askBlockStillWaiting, assertAbleTimeCredential, assertAbleTimeMcpCredential, assertOrchestratorCapableAgent, attachmentFromAbsolutePath, attachmentsFromBuffers, attachmentsFromWorktreePaths, attachmentsGitignoreBody, autoArchiveOnMergeEnabled, autoCleanupHistoryEnabled, autoCleanupOrphansEnabled, autoRenameBranchEnabled, autoRunAfterSetupEnabled, bootstrapSystemCa, branchDisplayLabel, brightsyAccessTokenNeedsRefresh, brightsyAdapter, brightsyCloudConnectAgent, brightsyCloudConnectEnabled, brightsyConfigPath, brightsyInjectWorktreeMcpEnabled, brightsyMcpAllowedTools, brightsyMcpServerName, buildBrightsySessionSeed, buildCachedUserContent, buildClaudeStreamJsonUserMessage, buildCodeRefAttachment, buildDiffCommentAttachment, buildForkTranscriptAttachment, buildLinearIssueFilter, buildPastedTextAttachment, buildPathRefAttachment, buildReviewRequestAttachment, buildSessionSeed, buildWorkspaceScriptEnv, caffeinateHoldPath, caffeinateWhileCloudConnectEnabled, caffeinateWhileRunningEnabled, caffeinateWhileSchedulesEnabled, caffeinateWhileSlackListenEnabled, callAbleTimeTool, canReuseIdleWorktreeAgentForReview, canonicalizeRepoPath, captureLoginEnv, captureTurnBaseline, chatLinkUrl, chatTextScale, checkoutPrStackLayer, childEnvWithAppSettings, claimDesktopHost, clampGithubPrBody, clampHistoryMaxCount, clampHistoryMaxDays, clampReadAloudRate, classifyRunScriptPreview, classifyWorktreeColumn, classifyWorktreeListBadges, claudeAdapter, claudeChromeEnabled, claudeSubagentTurnReminder, claudeUsageOverLimitWindows, claudeUserSettingsPath, cleanupArchivedHistory, cleanupOrphanWorktrees, clearAgentDoneCustomSoundFile, clearBoardPins, clearHomeBoardCache, clearOptionalCliPresenceCache, clipAgentEventForPaint, clipThinkingForStore, cloneRepoIntoSideboard, closeMcpUiHost, codeRefRangeLabel, codexAdapter, codexSandboxWritableRootsArgs, codexUnattendedGitConfigArgs, coerceOrchestratorAgent, collectTakenTeamSlugs, commandLooksLikeElectron, commentAbleTimeTask, commentGitHubIssue, commentLinearIssue, commitAll, compactArchiveProse, compactPartsForSummaryMessage, compactSummaryPart, computeNextRunAt, conductorBundledBinDir, conductorDbPath, confirmClaudeUsageOverLimitEnabled, confirmLand, connectBrightsyTeam, connectOptionalService, connectSlackToken, connectedOptionalServices, connectedOrchestratorTurnReminder, connectedPrSelectors, consumeComposerAttachments, contextTokens, coordinatorSystemPrompt, coordinatorTurnReminder, copyConfiguredFiles, copyReadAloudFromUnknown, countCacheControlBlocks, countUnpushedVsOrigin, cowboyModeEnabled, createAbleTimePkce, createAbleTimeTask, createChatTab, createEmptyThread, createExistingBranchWorktree, createGitHubIssue, createGlobalChat, createLinearIssue, createLinearPkce, createOrUpdatePr, createPrStack, createSchedule, createThread, createThreadWorktree, currentBranch, cursorAdapter, cursorSdkMessageToEvents, decodeBrightsyTarget, defaultScheduleName, deleteBranchOnPurgeEnabled, deleteSchedule, deleteThreadRecord, deriveTaskState, desktopHostPidPath, detectAgents, detectGhStack, detectLocalMergeConflicts, detectOptionalServiceClis, disconnectAbleTimeConnection, disconnectBrightsyTeam, disconnectLinear, disconnectLinearConnection, disconnectOptionalService, disconnectRemoteAccount, disconnectSlackWorkspace, discoverSkills, downloadAbleTimeAttachment, downloadGitHubIssueAttachment, downloadLinearAttachment, dropCachedPrefixOnResume, emptyPublicIntegrations, emptyRunLog, emptySetupLog, encodeBrightsyTarget, endedOnAskUser, enrichPathWithNpmGlobalBin, enrichWorkspacesWithGithub, ensureAbleTimeAccessToken, ensureAbleTimeTask, ensureAgentPath, ensureBrightsyLocalConfigFresh, ensureBrightsyOAuthClientId, ensureCloudCoordinator, ensureConnectedBrightsyTeamTokens, ensureGhPreferOrigin, ensureGlobalCoordinatorCwd, ensureManagedAccountDir, ensureRemoteCoordinator, ensureRemoteHostCredentials, ensureReviewGuidelinesFile, ensureReviewRequestFile, ensureReviewSkillFile, ensureSlackCoordinator, ensureSlackDeviceIdentity, ensureWorkspace, estimateMessageChars, estimateOccupancyTokens, estimateThreadChars, examplePrefixedBranch, expandComposerPrompt, extractBrightsyContextSummary, extractGhErrorDetail, extractPendingPlanQuestions, extractPresentedPlan, extractiveSummary, fastForwardMainCheckoutIfSafe, fetchOriginForWorktree, fetchPrHead, finalizeParts, findAgentDoneCustomSoundPath, findConventionSetup, findInvalidCacheControlTtlOrder, findLastBrightsyContextSummary, findLiveThreadForCreate, findLiveThreadForCreateSource, findManagedAccount, findOrphanWorktrees, findProjectProfileKey, findRemoteCoordinator, findSlackCoordinator, findThreadByRef, findThreadForStackLayer, fireSchedule, flattenTurnInput, flipLinearRelationType, foldLegacyRolesIntoNotes, followUpBehavior, forkChatTab, forkMessageSlice, forkThreadWorktree, formatAccountProfilePlaybookLine, formatArtifactDirective, formatAskUserNotifyMessage, formatBrightsyFetchError, formatClaudeExtraUsageDetail, formatClaudeSubagentReminder, formatClaudeUsageCompact, formatClaudeUsageFetchedAt, formatClaudeUsageOverLimitConfirm, formatClaudeUsageOverLimitWait, formatClaudeUsageReset, formatClaudeUsageResetClock, formatClaudeUsageTooltip, formatCloudTurnReply, formatConnectedOrchestratorReminder, formatDetachedJobInvoke, formatDevAccessHint, formatFetchError, formatGhLandError, formatGitAuthModeDirective, formatInjectedNoticesForTurn, formatIpcInvokeError, formatIssueToolsDirective, formatIssueToolsReminder, formatLinearDirective, formatLinearReminder, formatLongRunningDirective, formatLongRunningReminder, formatMergePrError, formatMessagesAsTranscript, formatNotifyOrchestratorPrompt, formatOptionalServicesDirective, formatOptionalServicesDirectiveForTurn, formatOptionalServicesReminder, formatOptionalServicesReminderForTurn, formatPlanQuestionAnswers, formatPlanQuestionsForChat, formatPrGateDirective, formatProcessGuideDirective, formatProjectProfilePlaybookLines, formatRateLimitResetHint, formatRemotePrompt, formatRenameBranchDirective, formatScheduleWhen, formatScheduledPrompt, formatSlackExternalReplyPrompt, formatSlackInboundPrompt, formatSlackRepliesForTurn, formatSlackReplyContinuePrompt, formatSlackSignedReply, formatSlackTurnReply, formatSlackWorkingText, formatTranscriptMarkdown, formatUiReminder, formatViewerContextDirective, formatViewerContextReminder, formatWorkspaceInventory, formatWorkspaceProfileSuffix, formatWorktreeDirective, formatWorktreeReminder, forwardContextUsage, forwardOccupancyTokens, fromInclusiveInputUsage, getAbleTimeAccessToken, getAbleTimeHost, getAbleTimeOrientation, getAbleTimeTask, getAdapter, getAgentRpcServer, getAgentSetupInfo, getBrightsySession, getCaffeinateHold, getClaudePlanUsage, getDefaultAgent, getDefaultAutonomy, getDefaultEffort, getDefaultFast, getDefaultModel, getDefaultRunScript, getDiff, getDiffSummary, getGitHubIssue, getGitHubStatus, getGithubGitAuthMode, getGithubPat, getHomeBoardInputs, getIssueSource, getLinearApiKey, getLinearAuthToken, getLinearIssue, getMcpUiHost, getOrchestrator, getPr, getPrChecks, getPrDetails, getPrForHeadBranch, getPrMeta, getPrStack, getRepoSetupInfo, getRunMode, getRunScript, getSchedule, getSlackWorkspace, getWorktreeDirtyStat, gh, ghHeadRef, ghPrCreateAssigneeArgs, ghRepoSelectArgs, git, gitBranchPrefixSetting, githubAgentGitEnv, githubHttpsInsteadOfEntries, githubProjectsOnIssue, githubRelationEditFlag, globalAgentCwd, groupHomeBoardWorktrees, handleRemoteInbound, handleSlackInbound, harnessEnvKey, hasBakedAbleTimeOAuth, hasBakedLinearOAuth, hasBakedSlackOAuth, hasConductorHook, hasConventionSetup, hasCursorWorktreeSetup, hasEnabledSchedules, hasRepoHook, hasWorkspaceHook, hasWorkspaceSettingsToml, headlessHostBlockedReason, healOrchestrationSoccerTitles, historyMaxCount, historyMaxDays, hottestClaudeWindow, httpFetch, importAgentDoneCustomSound, importConductorWorkspace, importConductorWorkspaceAsync, initPrStack, initStackFromThread, initializeGitRepository, inspectGitWorktree, installAgent, installNpmGlobalPackage, installOptionalServiceCli, interruptSlackCoordinatorForInbound, invalidateThreadListCache, invalidateThreadRecord, isAbleTimeConnected, isAbleTimeOAuthCancelled, isAbleTimeRejectedCredential, isAdoptableRunScriptRequest, isAgentDoneSound, isAskUserToolName, isBrightsyConnected, isBrightsyNdjsonLine, isChatTextScale, isClaudeAiConnectorMcp, isCloudCoordinatorThread, isCompactToolName, isConductorBundledCli, isContextCompactDone, isContextCompactInProgress, isCowboyThread, isCursorApiKeyConfigured, isCursorAutoModel, isCursorSdkInstalled, isDefaultishSourceRef, isDesktopHostAlive, isDirty, isGhPrBodyTooLongError, isGhRateLimitError, isGlobalRepoPath, isGlobalThread, isHistoryRetentionStub, isHomeBoardThread, isImageFilePath, isInPrStack, isInboundForThisDesktop, isIncompleteTaskState, isInjectedNoticeText, isInjectedOrchMcpName, isInternalAgentStatusText, isIssueSourceConnected, isLinearConnected, isLinearNoneToken, isLinearOAuthCancelled, isManagedAccountKind, isOptionalServiceId, isOrchestratorCapableAgent, isOrchestratorThread, isOtherWorktreeListenerCwd, isPidAlive, isPlaceholderBranch, isPlanQuestionAnswersMessage, isPollWrapperToolName, isPosthogConnected, isPrNotMergeableError, isPresentPlanToolName, isPrimaryCheckoutThread, isRemoteAccountLoginCancelled, isRemoteStopCommand, isRemovedWorkspace, isSelfWrittenRecord, isSessionQuotaLimit, isSetupLastError, isShellToolName, isSideboardScratchPath, isSkillToolName, isSlackCoordinatorThread, isSlackExternalReplyPrompt, isSlackOAuthCancelled, isStaleLastErrorDuringTurn, isSubagentToolName, isSystemStatusThinking, isTerminalTaskState, isThinkingEffort, isThisProcessDesktopHost, isThisWorktreeListenerCwd, isThreadCaffeinated, isThreadRecordFile, isUnclaimedRunScriptRequest, isUsageOnLimit, isWorkspaceScratchPath, issueAttachmentForAbleTimeTask, issueMatchesAssignee, issueSourceLabel, issueTicketFromThread, killDetachedRunTree, killListenersOnPorts, killStaleWorktreeListeners, killableListenerPids, lanRelayUrls, lastAgentReply, lastAssistantMessageText, lastRequestOccupancy, lastTopLevelToolIsAskUser, latestPendingPlanQuestions, linearAuthorizationHeader, linearCycleIsActive, linearGraphql, linearOAuthAuthorizeUrl, linearOAuthCredentials, linearRelationCreateInput, linearTicketIdFromThread, linkSharedDirectories, linkifyChatUrls, listAbleTimeAssignedIssues, listAbleTimeProjects, listAbleTimeTasks, listAgentSetupInfo, listBoardPins, listBranchCommits, listBranches, listBrightsyAccounts, listBrightsyChatTargets, listCodexModels, listConductorWorkspaces, listConnectedBrightsyTeams, listCursorModels, listGitHubIssueCommentsSince, listGitHubIssues, listGitHubProjects, listGlobalThreads, listIssues, listLinearAssignedIssues, listLinearCommentsSince, listLinearIssues, listLinearIssuesDirect, listLinearIssuesFiltered, listLinearProjects, listLinearTeamCycles, listLinearTeams, listModelsForAgent, listOpencodeModels, listPrs, listRunScripts, listSchedules, listSlackOutboundWatches, listSlackWorkspaces, listThreads, listWorkspaces, listWorktreeFiles, listWorktrees, listenerCwd, liveActivitySummary, loadAppSettings, loadBrightsyConfig, loadConductorSettings, loadHomeBoardInputs, loadRepoSettings, loadWorkspaceSettings, loadWorktreeRunPorts, localhostPreviewUrl, locksDir, loginAgent, loginEnvPrefix, loginManagedAccount, looksLikeComposerSkillExpansion, looksLikeConversationSummary, looksLikeIncompleteSkillDump, looksLikeSkillBody, lookupSoccerTeam, managedAccountConfigDir, mapAbleTimeTask, markPrReady, materializeSystemCaBundle, maxConcurrentAgents, maybeCompactContext, mcpAllowTools, mcpAllowToolsFromNames, mcpAuthWarnings, mcpServerIdForPermission, mcpServerPermissionUpdate, mcpStatusThinkingFromClaudeInit, mcpUiContentSecurityPolicy, mentionsPrGoal, mergeAgentGitAuthEnv, mergePr, mergePrStack, mergeSetupOutput, mergeSideboardIntoMcpServersJson, mergeUsage, messagePartParentId, messagesForCompactArchive, messagesSinceLastBrightsyContextSummary, mirrorHostConfig, moveQueuedItemToFront, needsCoordinatorAction, nextManagedAccount, nextPastedTextName, nextThinkingEffort, nonInteractiveGitProcessEnv, normalizeAbleTimeCredential, normalizeAbleTimeHost, normalizeBrightsyEndpoint, normalizeCodeSelection, normalizeLinearRelationType, normalizeManagedAccounts, normalizeParseResult, normalizeRemoteRelayUrl, normalizeReviewLabel, normalizeServiceOrigin, normalizeThinkingEffort, normalizeThread, normalizeTurnInput, normalizeWorkspaceTags, normalizeWorktreePath, notifyOrchestrator, npmGlobalNodeModules, npmGlobalPrefix, openInSystemTerminal, openPrStackLayers, openStackLayer, opencodeAdapter, optionalCliPresence, optionalServiceConnected, optionalServiceSpec, orchestrationQuotaFallbackAgent, orchestrationQuotaOnLimit, orchestrationTitleNeedsSoccerNickname, orchestratorSessionPoisonedByBuiltins, originFetchBranch, originGhRepoEnv, outboundReplyFromTurn, packagedDetachedJobPath, parseAbleTimeOAuthCallbackUrl, parseChatLink, parseClaudeUsagePayload, parseCursorRunnerLine, parseDevPreview, parseDurationMs, parseForceStopMessage, parseGhStackViewJson, parseGitHubIssueNumber, parseGithubSlugFromRemoteUrl, parseMcpList, parsePlanQuestionsInput, parsePrDetailsView, parseSessionQuotaResetAt, parseSlackRelayClientMessage, parseSlackRelayServerMessage, partsToAssistantText, pastedTextStats, patchReadAloudSettings, pendingInjectedNotices, pendingSlackExternalReplies, permissionMode, persistPendingFileAttachments, persistVaultKeyInKeychain, planFileAbs, planHistoryAgePurge, planHistoryRetention, planModeTurnInstruction, planQuestionsSignature, pnpmFilterPackage, pollSlackOutboundWatches, posixShellSingleQuote, preferredCursorCostCents, prepareTerminalCommand, prependQueuedItem, previewLand, previousCostBaseline, primaryCheckoutFromLinkedWorktree, promptMentionsBrightsy, pushBranch, readAgentDoneCustomSound, readAgentRuntimeMetadata, readExistingReviewRequestFile, readKeychainVaultKey, readPlanFile, readRunLog, readSetupLog, readSkillBody, readThread, readViewerContext, readWorktreeFile, readWorktreeFileForUpload, readWorktreeInclude, recordScheduleRun, recordSlackOutboundWatch, refreshBrightsyAccessToken, refreshGitHubAuth, refreshWorktreeIssueBlocked, registerBrightsyOAuthClient, registerPackagedUserMcpClients, releaseCaffeinateHoldForThread, releaseDesktopHost, remoteAccountHttpOrigin, remoteCoordinatorSourceRef, remoteRelayUrl, removeBoardPin, removeManagedAccount, removeQueuedItem, removeWorkspace, removeWorktree, renameManagedAccount, repoSlug, requestOccupancy, requestReview, requireAgent, reservePort, reservePortRange, resetGhStackDetectCache, resetGithubAgentTokenMemo, resolveAbleTimeOAuthHost, resolveAccountForThread, resolveAccountProfile, resolveAccountProfileFromSettings, resolveAgentExecutable, resolveAgentGitAuthEnv, resolveClaudeExecutable, resolveCodexGitWritableRoots, resolveCommandBinarySync, resolveConductorCursorAgentId, resolveCreateFirstPrompt, resolveCursorModelId, resolveCursorSdkRoot, resolveDefaultBranch, resolveDetachedJobScript, resolveDiffBaseRef, resolveEffectiveIssueSource, resolveFilesToCopy, resolveGhAuthToken, resolveGitBranchPrefix, resolveGitDirsForLockRecovery, resolveGitHubIssueRepo, resolveGithubAgentToken, resolveGithubRepoSlug, resolveLinearCycle, resolveLinearLabel, resolveLinearProject, resolveLinearState, resolveLinearTeam, resolveLoginCommand, resolveNewOrchestratorOptions, resolveNewThreadOptions, resolveOrchChildFollowUp, resolveOrchestratorDefaults, resolvePlanMarkdown, resolvePrSelector, resolvePrSelectors, resolveProjectReviewLabel, resolveQuotaFallbackAgent, resolveRepoRoot, resolveReviewGuidelines, resolveScheduleThreadId, resolveSendFollowUp, resolveSidebarGitPrompt, resolveSlackListenMode, resolveThreadDefaults, resolveThreadEffort, resolveUsageOnLimit, resolveVaultKey, resolveViewerProfile, resolveViewerProfileForRepo, resolveWorktreeStartPoint, reviewLabelForRepo, rewriteAbleTimeError, rewriteLinearError, run, runArchiveScript, runCloudConnect, runConventionSetup, runCursorWorktreeSetup, runRemoteHost, runScriptPreview, runSetupScript, runSlackListen, runSlackRelayClient, runWorkspaceSetup, sameWorkspacePath, sameWorktreePath, sanitizeGitBranchPrefix, sanitizeMcpServerName, sanitizeReadAloudVoiceURI, saveAbleTimeConnection, saveAppSettings, saveLinearOAuth, saveRemotePhoneToken, saveWorktreeRunPorts, scheduleNeedsCaffeinate, schedulesPath, scrubGithubTokensFromChildEnv, searchAbleTimeTasks, secureFileUnlocksWith, selectManagedAccount, setCaffeinateHold, setHttpFetchImpl, setStatus, setVaultMasterKey, settingsSourceLabel, shiftQueuedItem, shouldAttachPastedText, shouldCompactContext, shouldInjectBrightsyMcp, shouldNotifyOrchestrator, shouldRefreshReviewRequestTemplate, shouldRegisterPresentPlan, shouldRemoveWorktreeOnTeardown, shouldResetSessionForOccupancy, shouldRunHistoryCleanup, shouldRunWorktreeCleanup, shouldStampSetupLastError, showCostEnabled, sidebarParentSelectId, sidebarQuestionThreadId, sidebarRowAgentBlock, sideboardHomeDir, sideboardMcpProfile, sideboardReposDir, sideboardWorkspacesDir, skillCommandFromBody, skillCommandFromInput, skillNameFromFrontmatter, slackAppLevelToken, slackArchiveUrl, slackCoordinatorSourceRef, slackListenEnabled, slackOAuthCredentials, slackOAuthResultUrl, slackRelayUrl, sliceRunLogOutput, slimMessagesForUiList, slimThreadForUiList, slugify, spawnAgentTurn, splitForCompaction, splitTurnInputForSystemPrompt, stackAgentDefaultsFrom, stackIdFrom, stackMergeReadiness, stageAbsolutePathsAsAttachments, stageBuffersAsAttachments, startAbleTimeOAuth, startAgentRpcServer, startDevServer, startHeadlessHost, startLinearOAuth, startMcpServer, startOrchestration, startRelayServer, startRemoteAccountLogin, startSlackOAuth, stashMcpAppModelContext, statWorktreePath, stopAgentRpcServer, stripBrightsyNdjsonNoise, stripNestedElectronEnv, submitPrStack, suggestSlug, sumUsageList, summarizeConversation, switchBrightsyAccount, switchWorktreeBranch, syncWorkspacesFromThreads, systemConfigDir, takePendingTurnAttachments, takenTeamSlugsForChatTab, takenTeamSlugsForOrchestration, taskMessageText, taskUrl, thinkingEffortBars, thinkingEffortLabel, thisProcessShouldDrainAgentQueues, threadDisplayLabel, threadFilePath, threadHasCompactedContext, threadLivePath, threadLockPath, threadMayPresentPlan, threadRequestsBrightsyMcp, threadsDir, threadsSharingWorktree, ticketSlugForBranch, toAbleTimeIssueInfo, toGitHubIssueInfo, toPublicAppSettings, toolActivityLine, toolDescription, toolDetail, toolFilePath, totalTokens, trustSystemCertificates, tryReservePort, tryReservePorts, turnCostUsdFromCursorUsage, turnCostUsdFromProviderSnapshot, updateAbleTimeTask, updateAdvancedSettings, updateAgentExecutable, updateAppEnvironment, updateBrightsySettings, updateClaudeSettings, updateCodexSettings, updateDefaultsSettings, updateGitHubIssue, updateIntegrationsSettings, updateLinearIssue, updateOpencodeSettings, updateProjectProfileSettings, updateSchedule, updateThread, usageOnLimit, userClaudeMcpConfigPath, userCursorMcpConfigPath, userMcpNamesToDisable, validateLinearApiKey, verifyAbleTimeConnection, verifyOptionalService, visibleAgentBlock, visibleAssistantText, visibleToolRowDetail, waitForPidExit, warmGithubAgentAuth, whichOnPath, withAddedAccount, withEventParentId, withEventsParentId, withExportedPath, withMaxOldSpaceSize, withRemovedAccount, withSelectedAccount, withThreadLock, withTurnScopedCost, workspaceAgentChatSummaries, workspaceSettingsSourceLabel, workspaceTagTargetRef, workspaceTagsFromGroup, worktreeAgentBlock, worktreeBoardStatus, worktreeCleanupSettings, worktreeDisplayLabel, worktreeDisplayLabelForGroup, worktreeNameFromPath, worktreeRunPortsPath, worktreeSlugForTicket, worktreesRoot, wrapReviewSkillMarkdown, writeInjectedMcpConfig, writePlanFile, writeThread, writeViewerContext, writeWorktreeFile };
package/dist/index.js CHANGED
@@ -118,6 +118,7 @@ import {
118
118
  isStaleLastErrorDuringTurn,
119
119
  isThisProcessDesktopHost,
120
120
  isUnclaimedRunScriptRequest,
121
+ issueBlockedByIds,
121
122
  issueMatchesUpdatedSince,
122
123
  issueNeedsWorkspacePick,
123
124
  issueTicketFromThread,
@@ -202,7 +203,7 @@ import {
202
203
  worktreeCleanupSettings,
203
204
  writeAgentBlock,
204
205
  writeWorktreeFile
205
- } from "./chunk-BMORGDYI.js";
206
+ } from "./chunk-4ISF5XUA.js";
206
207
  import {
207
208
  LEGACY_PLAN_FILE_REL,
208
209
  PLAN_FILE_NAME,
@@ -423,7 +424,7 @@ import {
423
424
  workspaceAgentChatSummaries,
424
425
  worktreeRunPortsPath,
425
426
  wrapReviewSkillMarkdown
426
- } from "./chunk-IODJCVMN.js";
427
+ } from "./chunk-ATSZXRFQ.js";
427
428
  import {
428
429
  STDERR_EVENT_MAX_CHARS,
429
430
  STDOUT_EVENT_MAX_CHARS,
@@ -489,7 +490,7 @@ import {
489
490
  parseAbleTimeOAuthCallbackUrl,
490
491
  resolveAbleTimeOAuthHost,
491
492
  startAbleTimeOAuth
492
- } from "./chunk-7J2KOIYD.js";
493
+ } from "./chunk-CCUGIVYN.js";
493
494
  import {
494
495
  ableTimeDependencyTarget,
495
496
  commentAbleTimeTask,
@@ -514,8 +515,10 @@ import {
514
515
  toAbleTimeIssueInfo,
515
516
  updateAbleTimeTask,
516
517
  verifyAbleTimeConnection
517
- } from "./chunk-MKGSMPWB.js";
518
- import "./chunk-NZVD5EVX.js";
518
+ } from "./chunk-GXSV3X3L.js";
519
+ import {
520
+ looksLikeAbleTimeUlid
521
+ } from "./chunk-VVV7EI6T.js";
519
522
  import {
520
523
  ABLETIME_MCP_PATH,
521
524
  ABLETIME_MCP_PM_PATH,
@@ -536,7 +539,7 @@ import {
536
539
  normalizeAbleTimeCredential,
537
540
  normalizeAbleTimeHost,
538
541
  rewriteAbleTimeError
539
- } from "./chunk-DV6ID6CK.js";
542
+ } from "./chunk-ELBK34TY.js";
540
543
  import {
541
544
  clearOptionalCliPresenceCache,
542
545
  detectOptionalServiceClis,
@@ -2702,15 +2705,13 @@ function listPhoneSidebar(viewerLogin = phoneViewerLogin()) {
2702
2705
  path: path2,
2703
2706
  worktrees: groupHomeBoardWorktrees(repoThreads).map((group) => {
2704
2707
  const tags = workspaceTagsFromGroup(group);
2705
- const badge = classifyWorktreeListBadges(
2706
- group,
2707
- viewerLogin,
2708
- resolveProjectReviewLabel(settings, path2)
2709
- )[0];
2708
+ const badge = classifyWorktreeListBadges(group, viewerLogin, resolveProjectReviewLabel(settings, path2))[0];
2709
+ const blockedBy = issueBlockedByIds(group);
2710
2710
  return {
2711
2711
  label: worktreeDisplayLabelForGroup(group),
2712
2712
  chats: group.map(summarize),
2713
2713
  ...tags.length > 0 ? { tags } : {},
2714
+ ...blockedBy.length > 0 ? { blockedBy } : {},
2714
2715
  ...badge ? { badge: { id: badge.id, label: badge.label, title: badge.title, ...badge.conflict ? { conflict: true } : {} } } : {}
2715
2716
  };
2716
2717
  })
@@ -6076,7 +6077,7 @@ function phoneBoardKey(sidebar) {
6076
6077
  const orchestration = sidebar.orchestration.map(chatKey).join("\n");
6077
6078
  const projects = sidebar.projects.map((project) => {
6078
6079
  const trees = project.worktrees.map(
6079
- (tree) => `${tree.label} ${tree.badge?.id ?? ""} ${(tree.tags ?? []).join(",")} ${tree.chats.map(chatKey).join("\n")}`
6080
+ (tree) => `${tree.label} ${tree.badge?.id ?? ""} ${(tree.tags ?? []).join(",")} ${(tree.blockedBy ?? []).join(",")} ${tree.chats.map(chatKey).join("\n")}`
6080
6081
  ).join("\n");
6081
6082
  return `${project.path} ${project.name}
6082
6083
  ${trees}`;
@@ -8729,7 +8730,7 @@ async function startHeadlessHost(opts) {
8729
8730
  };
8730
8731
  const refreshRunning = async () => {
8731
8732
  try {
8732
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-4XFRK57E.js");
8733
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-KXEPWTG5.js");
8733
8734
  agentsRunning = getOrchestrator2().getRuntime().running;
8734
8735
  } catch {
8735
8736
  agentsRunning = 0;
@@ -10662,7 +10663,7 @@ async function handleJobStop(params, _ctx) {
10662
10663
  return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
10663
10664
  }
10664
10665
  async function defaultTurnWait(ref, timeoutMs) {
10665
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-4XFRK57E.js");
10666
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-KXEPWTG5.js");
10666
10667
  const orch = getOrchestrator2();
10667
10668
  const thread = await orch.waitForTurn(ref, timeoutMs, {
10668
10669
  resolveIfStillRunning: true
@@ -12424,6 +12425,283 @@ function getAgentRpcServer() {
12424
12425
  return running;
12425
12426
  }
12426
12427
 
12428
+ // src/integrations/abletime-blocked.ts
12429
+ function asRecord4(value) {
12430
+ return value && typeof value === "object" && !Array.isArray(value) ? value : null;
12431
+ }
12432
+ function asString(value) {
12433
+ return typeof value === "string" ? value.trim() : "";
12434
+ }
12435
+ function firstString(record, keys) {
12436
+ if (!record) return "";
12437
+ for (const key of keys) {
12438
+ const value = asString(record[key]);
12439
+ if (value) return value;
12440
+ }
12441
+ return "";
12442
+ }
12443
+ function firstRecord(record, keys) {
12444
+ if (!record) return null;
12445
+ for (const key of keys) {
12446
+ const value = asRecord4(record[key]);
12447
+ if (value) return value;
12448
+ }
12449
+ return null;
12450
+ }
12451
+ function identifierFromUnknown(value) {
12452
+ if (typeof value === "string" || typeof value === "number") {
12453
+ const id2 = String(value).trim();
12454
+ return id2 ? [id2] : [];
12455
+ }
12456
+ if (Array.isArray(value)) return value.flatMap(identifierFromUnknown);
12457
+ const rec = asRecord4(value);
12458
+ if (!rec) return [];
12459
+ for (const key of ["nodes", "data", "tasks", "items"]) {
12460
+ if (Array.isArray(rec[key])) return identifierFromUnknown(rec[key]);
12461
+ }
12462
+ const id = firstString(rec, ["identifier", "reference", "ref", "key", "code", "number", "id"]);
12463
+ return id ? [id] : [];
12464
+ }
12465
+ function ableTimeBlockedByIdentifiers(raw) {
12466
+ const record = asRecord4(raw);
12467
+ const nested = firstRecord(record, ["task", "data"]) ?? record;
12468
+ if (!nested) return [];
12469
+ const value = nested.blocked_by ?? nested.blockedBy ?? nested.depends_on ?? nested.dependsOn ?? nested.dependencyParentTimeflowTaskId ?? nested.wait_on ?? nested.waitOn;
12470
+ const out = [];
12471
+ const seen = /* @__PURE__ */ new Set();
12472
+ for (const id of identifierFromUnknown(value)) {
12473
+ const key = id.toLowerCase();
12474
+ if (seen.has(key)) continue;
12475
+ seen.add(key);
12476
+ out.push(id);
12477
+ }
12478
+ return out;
12479
+ }
12480
+ function taskReference(raw) {
12481
+ const record = asRecord4(raw);
12482
+ const nested = firstRecord(record, ["task", "data"]) ?? record;
12483
+ return firstString(nested, ["taskRef", "reference", "identifier"]);
12484
+ }
12485
+ async function getAbleTimeIssueBlockedBy(id, opts) {
12486
+ const taskId = id.trim();
12487
+ if (!taskId) throw new Error("AbleTime task id is required");
12488
+ const raw = await callAbleTimeTool("get_task", { id: taskId, task_id: taskId }, opts);
12489
+ const out = [];
12490
+ for (const blockerId of ableTimeBlockedByIdentifiers(raw)) {
12491
+ if (!looksLikeAbleTimeUlid(blockerId)) {
12492
+ out.push(blockerId);
12493
+ continue;
12494
+ }
12495
+ const parent = await callAbleTimeTool("get_task", { id: blockerId, task_id: blockerId }, opts);
12496
+ const ref = taskReference(parent);
12497
+ if (!ref || looksLikeAbleTimeUlid(ref)) {
12498
+ throw new Error(`AbleTime blocker has no reference: ${blockerId}`);
12499
+ }
12500
+ out.push(ref);
12501
+ }
12502
+ return out;
12503
+ }
12504
+
12505
+ // src/integrations/github-blocked.ts
12506
+ function githubBlockedByIdentifiers(payload) {
12507
+ const root = payload && typeof payload === "object" && !Array.isArray(payload) ? payload : null;
12508
+ const data = root?.data && typeof root.data === "object" && !Array.isArray(root.data) ? root.data : root;
12509
+ const repository = data?.repository && typeof data.repository === "object" ? data.repository : null;
12510
+ const issue = repository?.issue && typeof repository.issue === "object" ? repository.issue : null;
12511
+ const blocked = issue?.blockedBy && typeof issue.blockedBy === "object" ? issue.blockedBy : null;
12512
+ const nodes = Array.isArray(blocked?.nodes) ? blocked.nodes : Array.isArray(root?.blockedBy) ? root.blockedBy : [];
12513
+ const out = [];
12514
+ const seen = /* @__PURE__ */ new Set();
12515
+ for (const node of nodes) {
12516
+ const rec = node && typeof node === "object" && !Array.isArray(node) ? node : null;
12517
+ const number = Number(rec?.number ?? node);
12518
+ if (!Number.isFinite(number) || number <= 0) continue;
12519
+ const id = `#${number}`;
12520
+ const key = id.toLowerCase();
12521
+ if (seen.has(key)) continue;
12522
+ seen.add(key);
12523
+ out.push(id);
12524
+ }
12525
+ return out;
12526
+ }
12527
+ var GITHUB_BLOCKED_BY_QUERY = `
12528
+ query($owner: String!, $name: String!, $number: Int!) {
12529
+ repository(owner: $owner, name: $name) {
12530
+ issue(number: $number) {
12531
+ blockedBy(first: 25) { nodes { number } }
12532
+ }
12533
+ }
12534
+ }
12535
+ `;
12536
+ async function getGitHubIssueBlockedBy(id, opts) {
12537
+ const number = parseGitHubIssueNumber(id);
12538
+ const { cwd, slug } = await resolveGitHubIssueRepo(opts?.repoPath);
12539
+ const [owner, name] = (slug ?? "").split("/");
12540
+ if (!owner || !name) throw new Error("GitHub repo is not connected");
12541
+ const result = await gh(
12542
+ [
12543
+ "api",
12544
+ "graphql",
12545
+ "-f",
12546
+ `query=${GITHUB_BLOCKED_BY_QUERY}`,
12547
+ "-f",
12548
+ `owner=${owner}`,
12549
+ "-f",
12550
+ `name=${name}`,
12551
+ "-F",
12552
+ `number=${number}`
12553
+ ],
12554
+ cwd,
12555
+ { reject: false }
12556
+ );
12557
+ if (result.exitCode !== 0) {
12558
+ const detail = (result.stderr || result.stdout).trim() || "gh failed";
12559
+ throw new Error(`GitHub issue #${number} blocked-by: ${detail}`);
12560
+ }
12561
+ let parsed;
12562
+ try {
12563
+ parsed = JSON.parse(result.stdout);
12564
+ } catch {
12565
+ throw new Error(`GitHub issue #${number} blocked-by: gh returned non-JSON`);
12566
+ }
12567
+ const errors = parsed && typeof parsed === "object" && Array.isArray(parsed.errors) ? parsed.errors : [];
12568
+ if (errors.length > 0) {
12569
+ throw new Error(
12570
+ `GitHub issue #${number} blocked-by: ${errors.map((e) => e.message ?? "GitHub error").join("; ")}`
12571
+ );
12572
+ }
12573
+ const issue = parsed.data?.repository?.issue;
12574
+ if (!issue) throw new Error(`GitHub issue not found: #${number}`);
12575
+ return githubBlockedByIdentifiers(parsed);
12576
+ }
12577
+
12578
+ // src/integrations/linear-blocked.ts
12579
+ var ISSUE_BLOCKED_BY_QUERY = `
12580
+ query SideboardIssueBlockedBy($id: String!) {
12581
+ issue(id: $id) {
12582
+ identifier
12583
+ relations(first: 25) {
12584
+ nodes { id type relatedIssue { id identifier } }
12585
+ }
12586
+ inverseRelations(first: 25) {
12587
+ nodes { id type issue { id identifier } }
12588
+ }
12589
+ }
12590
+ }
12591
+ `;
12592
+ function linearBlockedByIdentifiers(relations) {
12593
+ const out = [];
12594
+ const seen = /* @__PURE__ */ new Set();
12595
+ for (const rel of relations) {
12596
+ const type = (rel.type ?? "").trim().toLowerCase().replace(/[\s_-]+/g, "");
12597
+ if (type !== "blockedby" && type !== "blocked") continue;
12598
+ const id = (rel.issue?.identifier || rel.issue?.id || "").trim();
12599
+ const key = id.toLowerCase();
12600
+ if (!id || seen.has(key)) continue;
12601
+ seen.add(key);
12602
+ out.push(id);
12603
+ }
12604
+ return out;
12605
+ }
12606
+ function linearBlockedByRelations(issue) {
12607
+ const out = [];
12608
+ for (const rel of issue.relations?.nodes ?? []) {
12609
+ out.push({ type: String(rel.type ?? "related"), issue: rel.relatedIssue });
12610
+ }
12611
+ for (const rel of issue.inverseRelations?.nodes ?? []) {
12612
+ out.push({
12613
+ type: flipLinearRelationType(String(rel.type ?? "related")),
12614
+ issue: rel.issue
12615
+ });
12616
+ }
12617
+ return out;
12618
+ }
12619
+ async function getLinearIssueBlockedBy(id, opts) {
12620
+ const issueId = id.trim();
12621
+ if (!issueId) throw new Error("Linear issue id is required (uuid or ENG-123)");
12622
+ const json = await linearGraphql(
12623
+ ISSUE_BLOCKED_BY_QUERY,
12624
+ { id: issueId },
12625
+ opts
12626
+ );
12627
+ if (!json.issue) throw new Error(`Linear issue not found: ${issueId}`);
12628
+ return linearBlockedByIdentifiers(linearBlockedByRelations(json.issue));
12629
+ }
12630
+
12631
+ // src/board/issue-blocked-sync.ts
12632
+ function sourceTicketRef(thread) {
12633
+ if (thread.sourceType !== "ticket") return null;
12634
+ const ref = (thread.sourceRef ?? "").trim();
12635
+ return ref || null;
12636
+ }
12637
+ function sameIssueBlockedBy(current, next) {
12638
+ const left = new Set(
12639
+ (current ?? []).map((id) => id.trim().toLowerCase()).filter(Boolean)
12640
+ );
12641
+ const right = [...new Set(next.map((id) => id.trim().toLowerCase()).filter(Boolean))];
12642
+ if (left.size !== right.length) return false;
12643
+ return right.every((id) => left.has(id));
12644
+ }
12645
+ var TRACKER_KEY = /^[A-Za-z][A-Za-z0-9]+-\d+$/;
12646
+ function isGitHubIssueRef(ref) {
12647
+ return /^#?\d+$/.test(ref) || /^gh-\d+$/i.test(ref) || /github\.com\/[^/]+\/[^/]+\/issues\/\d+/i.test(ref);
12648
+ }
12649
+ function trackerForSourceTicket(ref, preferred, connected) {
12650
+ const trimmed = ref.trim();
12651
+ if (!trimmed) return null;
12652
+ if (isGitHubIssueRef(trimmed)) return "github";
12653
+ if (TRACKER_KEY.test(trimmed)) {
12654
+ if (preferred === "abletime" && connected.abletime) return "abletime";
12655
+ if (connected.linear) return "linear";
12656
+ if (connected.abletime) return "abletime";
12657
+ return null;
12658
+ }
12659
+ if (preferred === "linear" && connected.linear) return "linear";
12660
+ if (preferred === "abletime" && connected.abletime) return "abletime";
12661
+ if (preferred === "github") return "github";
12662
+ return null;
12663
+ }
12664
+ function defaultIssueBlockedLookup() {
12665
+ return {
12666
+ preferredSource: () => resolveEffectiveIssueSource(),
12667
+ linearConnected: () => isLinearConnected(),
12668
+ abletimeConnected: () => isAbleTimeConnected(),
12669
+ linear: (id) => getLinearIssueBlockedBy(id),
12670
+ github: (id, repoPath) => getGitHubIssueBlockedBy(id, { repoPath }),
12671
+ abletime: (id) => getAbleTimeIssueBlockedBy(id)
12672
+ };
12673
+ }
12674
+ async function lookupIssueBlockedBy(thread, lookup = defaultIssueBlockedLookup()) {
12675
+ const ref = sourceTicketRef(thread);
12676
+ if (!ref) return null;
12677
+ const tracker = trackerForSourceTicket(ref, lookup.preferredSource(), {
12678
+ linear: lookup.linearConnected(),
12679
+ abletime: lookup.abletimeConnected()
12680
+ });
12681
+ if (!tracker) return null;
12682
+ try {
12683
+ if (tracker === "linear") return await lookup.linear(ref);
12684
+ if (tracker === "abletime") return await lookup.abletime(ref);
12685
+ const repo = (thread.repoPath || thread.worktreePath || "").trim();
12686
+ return await lookup.github(ref, repo);
12687
+ } catch {
12688
+ return null;
12689
+ }
12690
+ }
12691
+ async function refreshWorktreeIssueBlocked(threadRef) {
12692
+ const thread = readThread(threadRef) ?? findThreadByRef(threadRef);
12693
+ if (!thread) throw new Error(`Thread not found: ${threadRef}`);
12694
+ const ids = await lookupIssueBlockedBy(thread);
12695
+ if (ids == null) return null;
12696
+ const siblings = thread.worktreePath ? threadsSharingWorktree(thread.worktreePath) : [];
12697
+ const targets = siblings.length > 0 ? siblings : [thread];
12698
+ for (const t of targets) {
12699
+ if (sameIssueBlockedBy(t.issueBlockedBy, ids)) continue;
12700
+ updateThread(t.id, { issueBlockedBy: ids });
12701
+ }
12702
+ return ids;
12703
+ }
12704
+
12427
12705
  // src/brightsy/api.ts
12428
12706
  var formatBrightsyFetchError = formatFetchError;
12429
12707
  var BrightsySideboardApi = class {
@@ -14038,7 +14316,7 @@ async function continueSourceThread(threadId, prompt) {
14038
14316
  await continueOnReply(threadId, prompt);
14039
14317
  return;
14040
14318
  }
14041
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-4XFRK57E.js");
14319
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-KXEPWTG5.js");
14042
14320
  await getOrchestrator2().send(threadId, prompt);
14043
14321
  } catch {
14044
14322
  }
@@ -15131,6 +15409,7 @@ export {
15131
15409
  recordSlackOutboundWatch,
15132
15410
  refreshBrightsyAccessToken,
15133
15411
  refreshGitHubAuth,
15412
+ refreshWorktreeIssueBlocked,
15134
15413
  registerBrightsyOAuthClient,
15135
15414
  registerPackagedUserMcpClients,
15136
15415
  releaseCaffeinateHoldForThread,
@@ -17136,6 +17136,7 @@ function worktreeBindingFrom(from) {
17136
17136
  prIsInMergeQueue: from.prIsInMergeQueue,
17137
17137
  prLabels: from.prLabels,
17138
17138
  prChecksFailed: from.prChecksFailed,
17139
+ issueBlockedBy: from.issueBlockedBy,
17139
17140
  skipAutoArchiveOnMerge: from.skipAutoArchiveOnMerge,
17140
17141
  stackId: from.stackId,
17141
17142
  stackLayer: from.stackLayer,
@@ -21230,6 +21231,7 @@ function restTaskToRaw(raw, users) {
21230
21231
  projectId: asString(rec.projectId),
21231
21232
  categoryId: asString(rec.projectCategoryId) || asString(rec.categoryId),
21232
21233
  parentId: asString(rec.parentTaskId) || asString(rec.parentId),
21234
+ depends_on: rec.dependencyParentTimeflowTaskId ?? null,
21233
21235
  tags: rec.tags,
21234
21236
  comments,
21235
21237
  attachments: rec.attachments ?? rec.files ?? rec.media,
@@ -56,7 +56,7 @@ import {
56
56
  updateSchedule,
57
57
  workspaceTagTargetRef,
58
58
  writeAgentBlock
59
- } from "../chunk-CYPFOIUK.js";
59
+ } from "../chunk-7BLIY2DD.js";
60
60
  import "../chunk-LX5R5JOR.js";
61
61
  import {
62
62
  commentAbleTimeTask,
@@ -76,9 +76,9 @@ import {
76
76
  searchAbleTimeTasks,
77
77
  toAbleTimeIssueInfo,
78
78
  updateAbleTimeTask
79
- } from "../chunk-72OWKHFJ.js";
80
- import "../chunk-Y4WARKPW.js";
81
- import "../chunk-JRZTJ4F7.js";
79
+ } from "../chunk-I5CLCWUK.js";
80
+ import "../chunk-VZAJVX36.js";
81
+ import "../chunk-7SCVGGF6.js";
82
82
  import {
83
83
  normalizeServiceOrigin
84
84
  } from "../chunk-MBYGWNLQ.js";
@@ -114,7 +114,7 @@ import {
114
114
  waitForDetachedJob,
115
115
  waitForTurnToolResult,
116
116
  workspaceAgentChatSummaries
117
- } from "../chunk-YR7NZYUT.js";
117
+ } from "../chunk-DNWO6PQJ.js";
118
118
  import {
119
119
  HUGE_TOOL_RESULT_SUMMARY,
120
120
  clipToolResultForStore,
@@ -11,7 +11,7 @@ import {
11
11
  resolveSendFollowUp,
12
12
  startOrchestration,
13
13
  waitForPidExit
14
- } from "./chunk-CYPFOIUK.js";
14
+ } from "./chunk-7BLIY2DD.js";
15
15
  import "./chunk-LX5R5JOR.js";
16
16
  import "./chunk-MBYGWNLQ.js";
17
17
  import "./chunk-4GK32AYX.js";
@@ -21,7 +21,7 @@ import "./chunk-53OCOGND.js";
21
21
  import "./chunk-V5BTGQ6M.js";
22
22
  import "./chunk-E63AM3PW.js";
23
23
  import "./chunk-2GPQZZLY.js";
24
- import "./chunk-YR7NZYUT.js";
24
+ import "./chunk-DNWO6PQJ.js";
25
25
  import "./chunk-I5TESHDN.js";
26
26
  import "./chunk-PN32Z4JL.js";
27
27
  import "./chunk-5CTG5W7S.js";
@@ -9,11 +9,11 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-BMORGDYI.js";
12
+ } from "./chunk-4ISF5XUA.js";
13
13
  import "./chunk-PGPSIEMW.js";
14
14
  import "./chunk-NKVNHBDB.js";
15
15
  import "./chunk-HH3VVTEC.js";
16
- import "./chunk-IODJCVMN.js";
16
+ import "./chunk-ATSZXRFQ.js";
17
17
  import "./chunk-7Q327QF2.js";
18
18
  import "./chunk-7H655NEW.js";
19
19
  import "./chunk-OLYNM52B.js";