@sentry/junior 0.230.0 → 0.232.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 (48) hide show
  1. package/dist/{agent-hooks-Im1UUKhZ.js → agent-hooks-n9qfV697.js} +6 -6
  2. package/dist/{agent-runner-B9dvsdM8.js → agent-runner-D_FVvrwA.js} +116 -111
  3. package/dist/api/schema.d.ts +2 -2
  4. package/dist/api.js +16 -16
  5. package/dist/app.js +21 -21
  6. package/dist/{briefs-BC3DPfsh.js → briefs-B7wDx-LM.js} +2 -2
  7. package/dist/{catalog-runtime-Blx7IGY9.js → catalog-runtime-FU8TmK-W.js} +1 -1
  8. package/dist/{checkpoint-BDaS7x3C.js → checkpoint-DuA1tIcd.js} +5 -5
  9. package/dist/cli/chat.js +13 -13
  10. package/dist/cli/check.js +3 -3
  11. package/dist/cli/main.js +1 -1
  12. package/dist/cli/plugins.js +3 -3
  13. package/dist/cli/snapshot-create.js +3 -3
  14. package/dist/cli/upgrade.js +3 -3
  15. package/dist/{client-DucHsb6b.js → client-BMqP14EE.js} +3 -2
  16. package/dist/{config-HqsfInxG.js → config-Q7ayKDYh.js} +2 -2
  17. package/dist/{conversation-privacy-k2Ucs1Lg.js → conversation-privacy-DNNsgprf.js} +1 -1
  18. package/dist/{credential-sync-DEF6P_Qr.js → credential-sync-DbgAGIhd.js} +13 -13
  19. package/dist/{executor-C-LEhjeD.js → executor-DDonSWxn.js} +1 -1
  20. package/dist/{images-owPAu3eq.js → images-Bj8PcvZ5.js} +2 -2
  21. package/dist/instrumentation.js +2 -2
  22. package/dist/{job-queue-CpNnv-n1.js → job-queue-Dqc7qQbR.js} +1 -1
  23. package/dist/{logging-BO1fVUQe.js → logging-X4U7SInw.js} +1 -1
  24. package/dist/nitro.js +3 -3
  25. package/dist/{oauth-authorization-DPPpHxSI.js → oauth-authorization-CetcZcwQ.js} +1 -1
  26. package/dist/{oauth-callback-server-BvVXBrQt.js → oauth-callback-server-o34WSoGm.js} +2 -2
  27. package/dist/{pending-auth-BWgfMCZE.js → pending-auth-XoxEa4O5.js} +1 -1
  28. package/dist/{profile-DpHUuqjR.js → profile-DzqqgpDo.js} +4 -4
  29. package/dist/{registry-CIi9NkkR.js → registry-RrIfDnkS.js} +1 -1
  30. package/dist/{resolve-SohTTVYa.js → resolve-Ccu6uGtp.js} +2 -2
  31. package/dist/{runner-JhOJ60On.js → runner-DDQCEV1P.js} +8 -8
  32. package/dist/{sandbox-egress-signals-DyO-LeUT.js → sandbox-egress-signals-CT3xOtNG.js} +1 -1
  33. package/dist/{skills-DElnSC0r.js → skills-NB_I9BuR.js} +2 -2
  34. package/dist/{spawn-DrH6CP9W.js → spawn-DmwIhiNu.js} +2 -2
  35. package/dist/{task-queue-BEzJHMbQ.js → task-queue-B5CERq_E.js} +3 -3
  36. package/dist/{task-runner-DrC1UgCK.js → task-runner-COivEGS3.js} +8 -8
  37. package/dist/{thread-state-BIXM2uhZ.js → thread-state-C7yyfiVM.js} +5 -5
  38. package/dist/{turn-failure-response-9Ql2NYKh.js → turn-failure-response-D990svo-.js} +7 -7
  39. package/dist/{turn-lifecycle-_YDXUFqj.js → turn-lifecycle-C-LUNJC6.js} +1 -1
  40. package/dist/{turn-session-routing-DYxwlqQl.js → turn-session-routing-CoF0GbaY.js} +1 -1
  41. package/dist/{validation-_gPdrVG7.js → validation-f0y71ety.js} +1 -1
  42. package/dist/{version-Y7rGnMXG.js → version-CkRTIRkV.js} +1 -1
  43. package/dist/version.js +1 -1
  44. package/dist/{web-authorization-COF8MUa5.js → web-authorization-BBwQsNCZ.js} +6 -6
  45. package/dist/{web-input-BmLFoSUw.js → web-input-Bkn-JGWd.js} +52 -59
  46. package/dist/{work-CP3L3bNf.js → work-vWPq9P5x.js} +7 -7
  47. package/dist/{worker-DlZMqtCm.js → worker-BgZog5Jp.js} +5 -5
  48. package/package.json +5 -4
@@ -1,15 +1,15 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { a as embedTexts, r as completeObject } from "./client-DucHsb6b.js";
3
- import { F as normalizeIdentityEmail, I as isRecord$2, d as logException, f as logInfo, p as logWarn, v as setSpanAttributes, w as withSpan, y as setSpanStatus } from "./logging-BO1fVUQe.js";
2
+ import { a as embedTexts, r as completeObject } from "./client-BMqP14EE.js";
3
+ import { F as normalizeIdentityEmail, I as isRecord$2, d as logException, f as logInfo, p as logWarn, v as setSpanAttributes, w as withSpan, y as setSpanStatus } from "./logging-X4U7SInw.js";
4
4
  import { a as getClient$1 } from "./sentry-CgWZM_kV.js";
5
- import { t as canExposeConversationPayload } from "./conversation-privacy-k2Ucs1Lg.js";
6
- import { a as getChatConfig, n as botConfig, s as getSlackBotToken } from "./config-HqsfInxG.js";
5
+ import { t as canExposeConversationPayload } from "./conversation-privacy-DNNsgprf.js";
6
+ import { a as getChatConfig, n as botConfig, s as getSlackBotToken } from "./config-Q7ayKDYh.js";
7
7
  import { r as defaultModelId } from "./model-profile-BwU8mqwD.js";
8
8
  import { b as parseSlackMessageTs, c as isActorUserId, h as parseSlackTeamId, m as parseSlackChannelReferenceId, u as parseActorUserId } from "./context-0Et9iVSB.js";
9
9
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
10
- import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, _ as CONVERSATION_METRICS, g as juniorConversationBriefs, h as juniorConversationBindings, i as juniorWorkspaces, m as juniorConversationParticipants, n as juniorSnapshots, r as juniorWorkspaceRepos, t as createJuniorSqlExecutor, v as juniorConversationMetrics, w as juniorAttachments, x as juniorConversationAnnotations, y as juniorConversationEvents } from "./executor-C-LEhjeD.js";
10
+ import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, _ as CONVERSATION_METRICS, g as juniorConversationBriefs, h as juniorConversationBindings, i as juniorWorkspaces, m as juniorConversationParticipants, n as juniorSnapshots, r as juniorWorkspaceRepos, t as createJuniorSqlExecutor, v as juniorConversationMetrics, w as juniorAttachments, x as juniorConversationAnnotations, y as juniorConversationEvents } from "./executor-DDonSWxn.js";
11
11
  import { $ as encodeHistoryPayload, C as conversationReportEventSchema, H as readMessageCardRefs, L as conversationBriefSchema, Q as newConversationEventSchema, R as parseBriefInput, X as decodeStoredConversationEvent, Z as historyReplacementSchema, it as usageSchema, j as readMessageAttachments, q as conversationEventDataSchema } from "./conversation-DsuDtoYR.js";
12
- import { C as getDefaultRedisStateAdapterFor, N as SANDBOX_WORKSPACE_ROOT, k as sleep$1, l as isSandboxMissingError, n as hash, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand } from "./profile-DpHUuqjR.js";
12
+ import { C as getDefaultRedisStateAdapterFor, N as SANDBOX_WORKSPACE_ROOT, k as sleep$1, l as isSandboxMissingError, n as hash, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand } from "./profile-DzqqgpDo.js";
13
13
  import { n as briefEntriesFromReportEvents, s as generateBrief, t as BRIEF_PROMPT } from "./prompt-D5RPLy92.js";
14
14
  import { AsyncLocalStorage } from "node:async_hooks";
15
15
  import { z } from "zod";
@@ -1,26 +1,26 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { b as getGatewayApiKey, c as hasCompactedConversationContext, d as unwrapCurrentInstruction, f as escapeXml, g as getProviderErrorAttributes, h as findProviderError, i as completeText, l as isCompactionSummaryText, m as createProviderError, n as GEN_AI_SERVER_ADDRESS, o as resolveGatewayModel, p as ProviderError, r as completeObject, s as COMPACTION_SUMMARY_PREFIX, t as GEN_AI_PROVIDER_NAME, u as renderCurrentInstruction, v as isProviderRetryError, x as resolveGatewayCredential, y as MISSING_GATEWAY_CREDENTIALS_ERROR } from "./client-DucHsb6b.js";
3
- import { C as withLogContext, F as normalizeIdentityEmail, I as isRecord$3, L as toOptionalNumber, R as toOptionalString, a as extractGenAiUsageSummary, b as setTags, c as getLogContextAttributesForSpan, d as logException, f as logInfo, g as serializeGenAiAttribute, i as extractGenAiUsageAttributes, l as getTracePropagationHeaders, m as normalizeGenAiFinishReason, p as logWarn, s as getLogContextAttributes, u as logError, v as setSpanAttributes, w as withSpan, x as summarizeMessageText, y as setSpanStatus } from "./logging-BO1fVUQe.js";
2
+ import { b as getGatewayApiKey, c as hasCompactedConversationContext, d as unwrapCurrentInstruction, f as escapeXml, g as getProviderErrorAttributes, h as findProviderError, i as completeText, l as isCompactionSummaryText, m as createProviderError, n as GEN_AI_SERVER_ADDRESS, o as resolveGatewayModel, p as ProviderError, r as completeObject, s as COMPACTION_SUMMARY_PREFIX, t as GEN_AI_PROVIDER_NAME, u as renderCurrentInstruction, v as isProviderRetryError, x as resolveGatewayCredential, y as MISSING_GATEWAY_CREDENTIALS_ERROR } from "./client-BMqP14EE.js";
3
+ import { C as withLogContext, F as normalizeIdentityEmail, I as isRecord$3, L as toOptionalNumber, R as toOptionalString, a as extractGenAiUsageSummary, b as setTags, c as getLogContextAttributesForSpan, d as logException, f as logInfo, g as serializeGenAiAttribute, i as extractGenAiUsageAttributes, l as getTracePropagationHeaders, m as normalizeGenAiFinishReason, p as logWarn, s as getLogContextAttributes, u as logError, v as setSpanAttributes, w as withSpan, x as summarizeMessageText, y as setSpanStatus } from "./logging-X4U7SInw.js";
4
4
  import { m as startInactiveSpan, n as captureMessage, v as withActiveSpan } from "./sentry-CgWZM_kV.js";
5
- import { a as toCanonicalInputMessage, c as toGenAiPayloadMetadata, i as runWithConversationPrivacy, l as toGenAiPayloadTraceAttributes, o as toCanonicalOutputMessage, r as resolveConversationPrivacy, s as toGenAiMessagesTraceAttributes, t as canExposeConversationPayload } from "./conversation-privacy-k2Ucs1Lg.js";
6
- import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig } from "./config-HqsfInxG.js";
5
+ import { a as toCanonicalInputMessage, c as toGenAiPayloadMetadata, i as runWithConversationPrivacy, l as toGenAiPayloadTraceAttributes, o as toCanonicalOutputMessage, r as resolveConversationPrivacy, s as toGenAiMessagesTraceAttributes, t as canExposeConversationPayload } from "./conversation-privacy-DNNsgprf.js";
6
+ import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig } from "./config-Q7ayKDYh.js";
7
7
  import { a as formatModelProfiles, c as profileConfig, i as formatModelProfile, l as TURN_REASONING_LEVELS, n as ModelProfileNotConfiguredError, o as modelIdForProfile, s as modelProfileSchema } from "./model-profile-BwU8mqwD.js";
8
8
  import { b as parseSlackMessageTs, d as parseStoredSlackActor, g as parseSlackUserId, h as parseSlackTeamId, i as credentialUserSubjectId, l as isUserActor, m as parseSlackChannelReferenceId, n as credentialContextSchema, p as parseSlackChannelId, t as credentialContextForActor } from "./context-0Et9iVSB.js";
9
- import { $t as getConversationStore, A as tryWorkspaceRepoCheckoutPath, B as downloadPrivateSlackFile, C as invalidateReadySnapshot, Ct as createPluginLogger, D as SANDBOX_RUNTIME, E as setWorkspaceSnapshotBuild, G as isDmChannel$1, Ht as saveObjectAnnotations, J as withSlackRetries, K as normalizeSlackConversationId, M as resolveChannelCapabilities, O as deleteWorkspaceSnapshotBuilders, Q as readActorIdentity, Qt as getConversationMessageSearchStore, Rt as matchSlackAttachments, S as WorkspaceValidationError, T as setWorkspaceSnapshot, U as getSlackClient, Ut as createPluginAnnotations, V as getFilePermalink, W as isConversationScopedChannel, Zt as getConversationEventStore, _ as deleteWorkspace, at as STOP_WATCHING_TOOL_NAME, b as listWorkspaces, bn as sameDestination$1, c as getPluginTools, cn as addAgentTurnUsage, dt as deliverWatch, en as getDb, fn as hasAgentTurnUsage, ft as findMatchingWatches, g as createWorkspace, gt as getDashboardConversationLink, ht as JUNIOR_THREAD_STATE_TTL_MS, it as RESOURCE_WATCH_TOOL_SOURCE, j as workspaceRepoCheckoutPath, k as getWorkspaceSnapshotBuilder, l as getPluginUserPromptContributions, lt as createTimerWatch, n as applyPluginFormatMarkdown, nt as RESOURCE_SUBSCRIPTION_DEFAULT_TTL_MS, ot as cancelSubscriptions, pt as listWatches, r as createPluginHookRunner, rt as RESOURCE_SUBSCRIPTION_MAX_TTL_MS, s as getPluginSystemPromptContributions, st as cancelWatch, tn as getSqlExecutor, tt as getSlackToolContext, u as getPlugins, ut as createWatch, v as getWorkspace, vn as parseDestination, vt as getDashboardTaskLink, w as loadSnapshotsForProfile, x as updateWorkspace, y as getWorkspaceByName, z as SlackActionError } from "./agent-hooks-Im1UUKhZ.js";
9
+ import { $t as getConversationStore, A as tryWorkspaceRepoCheckoutPath, B as downloadPrivateSlackFile, C as invalidateReadySnapshot, Ct as createPluginLogger, D as SANDBOX_RUNTIME, E as setWorkspaceSnapshotBuild, G as isDmChannel$1, Ht as saveObjectAnnotations, J as withSlackRetries, K as normalizeSlackConversationId, M as resolveChannelCapabilities, O as deleteWorkspaceSnapshotBuilders, Q as readActorIdentity, Qt as getConversationMessageSearchStore, Rt as matchSlackAttachments, S as WorkspaceValidationError, T as setWorkspaceSnapshot, U as getSlackClient, Ut as createPluginAnnotations, V as getFilePermalink, W as isConversationScopedChannel, Zt as getConversationEventStore, _ as deleteWorkspace, at as STOP_WATCHING_TOOL_NAME, b as listWorkspaces, bn as sameDestination$1, c as getPluginTools, cn as addAgentTurnUsage, dt as deliverWatch, en as getDb, fn as hasAgentTurnUsage, ft as findMatchingWatches, g as createWorkspace, gt as getDashboardConversationLink, ht as JUNIOR_THREAD_STATE_TTL_MS, it as RESOURCE_WATCH_TOOL_SOURCE, j as workspaceRepoCheckoutPath, k as getWorkspaceSnapshotBuilder, l as getPluginUserPromptContributions, lt as createTimerWatch, n as applyPluginFormatMarkdown, nt as RESOURCE_SUBSCRIPTION_DEFAULT_TTL_MS, ot as cancelSubscriptions, pt as listWatches, r as createPluginHookRunner, rt as RESOURCE_SUBSCRIPTION_MAX_TTL_MS, s as getPluginSystemPromptContributions, st as cancelWatch, tn as getSqlExecutor, tt as getSlackToolContext, u as getPlugins, ut as createWatch, v as getWorkspace, vn as parseDestination, vt as getDashboardTaskLink, w as loadSnapshotsForProfile, x as updateWorkspace, y as getWorkspaceByName, z as SlackActionError } from "./agent-hooks-n9qfV697.js";
10
10
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
11
- import { D as juniorIdentities, E as juniorConversations, a as juniorSchedulerRuns, c as juniorStats, d as AGENT_INVOCATION_MAILBOX_STATUSES, g as juniorConversationBriefs, k as juniorArtifacts, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorAttachments, x as juniorConversationAnnotations } from "./executor-C-LEhjeD.js";
11
+ import { D as juniorIdentities, E as juniorConversations, a as juniorSchedulerRuns, c as juniorStats, d as AGENT_INVOCATION_MAILBOX_STATUSES, g as juniorConversationBriefs, k as juniorArtifacts, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorAttachments, x as juniorConversationAnnotations } from "./executor-DDonSWxn.js";
12
12
  import { F as briefLinkSchema, G as KNOWN_CONVERSATION_EVENT_TYPES, I as briefOutcomeStatusSchema, L as conversationBriefSchema, N as isVisionImageMediaType, U as removedCardSchema, et as contextProvenance, nt as instructionProvenanceFor, rt as sameActorIdentity, tt as instructionActors } from "./conversation-DsuDtoYR.js";
13
13
  import { a as listReferenceFiles, c as soulPathCandidates, l as worldPathCandidates } from "./package-discovery-7a9YqLhE.js";
14
- import { a as resolveAuthTokenPlaceholder, c as fetchWithBoundedOAuthErrorBodies, d as CredentialUnavailableError, i as resolvePluginHeaderEnvRefs, l as getOAuthProviderErrorAttributes, o as resolvePluginCommandEnv, s as OAuthProviderError } from "./registry-CIi9NkkR.js";
15
- import { n as pluginCatalogRuntime } from "./catalog-runtime-Blx7IGY9.js";
16
- import { a as parseSkillInvocation, n as findSkillByName, r as loadSkillsByName, t as discoverSkills } from "./skills-DElnSC0r.js";
17
- import { $ as fallbackShortTitle, C as isToolResultError, D as stripRuntimeTurnContext, E as retainRuntimeTurnContext, F as loadTurnRoute, G as recordToolExecutionStarted, H as recordGuardianActionReviewed, I as openConversationProjection, K as recordTurnRoute, L as recordAgentsInstructionsUpdated, M as loadConnectedMcpProviders, N as loadConversationProjection, O as trimTrailingAssistantMessages, R as recordAttachmentsDelivered, S as isContinuablePiBoundary, T as normalizeToolNameFromResult, U as recordMcpProviderConnected, V as recordAuthorizationRequested, _ as getTerminalAssistantMessages, _t as piMessageFromHistoryItem, d as TurnSliceLimitExceededError, et as generateShortTitle, f as assertTurnToolCallLimit, g as getPiMessageRole, gt as historyItemFromPiMessage, h as extractAssistantText, ht as getAgentContextInputLimitTokens, k as TURN_CONTEXT_TAG, m as isTurnExecutionLimitExceededError, mt as getAgentContextCompactionTriggerTokens, n as loadTurnCheckpoint, pt as estimateTextTokens, r as saveTurnCheckpoint, t as continuableMessages, tt as resolveTaskTitle, v as getUserMessageInstructionText, w as isToolResultMessage, x as isAssistantMessage, y as hasRuntimeTurnContext } from "./checkpoint-BDaS7x3C.js";
18
- import { A as SANDBOX_DATA_ROOT, C as getDefaultRedisStateAdapterFor, D as fenceLock, E as acquireActiveLock, F as sandboxSkillFile, I as sandboxSkillPathResolution, M as SANDBOX_SKILLS_ROOT, N as SANDBOX_WORKSPACE_ROOT, O as withLock, P as sandboxSkillDir, _ as workspaceSnapshotNotReadyUserMessage, a as isAbortError, b as buildNonInteractiveShellScript, c as isSandboxCommandStreamInterruptedError, d as isSnapshottingError, f as throwSandboxOperationError, g as isWorkspaceSnapshotNotReadyError, h as getWorkspaceSnapshotNotReadyError, i as ensureDockerDaemon, j as SANDBOX_REPOS_ROOT, k as sleep$2, l as isSandboxMissingError, m as WorkspaceSnapshotNotReadyError, n as hash, o as isAlreadyExistsError, p as wrapSandboxSetupError, r as isStale, s as isSandboxApiTransientError, t as create, u as isSandboxUnavailableError, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand, y as buildCommandScript } from "./profile-DpHUuqjR.js";
19
- import { n as canReusePendingAuthLink, t as abandonReplacedPendingAuth } from "./pending-auth-BWgfMCZE.js";
20
- import { a as NO_REPLY_MARKER, c as CooperativeTurnYieldError, i as sanitizeAssistantText, l as TurnInputCommitLostError, n as decideReply, o as isNoReplyMarker, p as isTurnInputCommitLostError, r as getAssistantReplyText, t as authorizationId } from "./oauth-authorization-DPPpHxSI.js";
14
+ import { a as resolveAuthTokenPlaceholder, c as fetchWithBoundedOAuthErrorBodies, d as CredentialUnavailableError, i as resolvePluginHeaderEnvRefs, l as getOAuthProviderErrorAttributes, o as resolvePluginCommandEnv, s as OAuthProviderError } from "./registry-RrIfDnkS.js";
15
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-FU8TmK-W.js";
16
+ import { a as parseSkillInvocation, n as findSkillByName, r as loadSkillsByName, t as discoverSkills } from "./skills-NB_I9BuR.js";
17
+ import { $ as fallbackShortTitle, C as isToolResultError, D as stripRuntimeTurnContext, E as retainRuntimeTurnContext, F as loadTurnRoute, G as recordToolExecutionStarted, H as recordGuardianActionReviewed, I as openConversationProjection, K as recordTurnRoute, L as recordAgentsInstructionsUpdated, M as loadConnectedMcpProviders, N as loadConversationProjection, O as trimTrailingAssistantMessages, R as recordAttachmentsDelivered, S as isContinuablePiBoundary, T as normalizeToolNameFromResult, U as recordMcpProviderConnected, V as recordAuthorizationRequested, _ as getTerminalAssistantMessages, _t as piMessageFromHistoryItem, d as TurnSliceLimitExceededError, et as generateShortTitle, f as assertTurnToolCallLimit, g as getPiMessageRole, gt as historyItemFromPiMessage, h as extractAssistantText, ht as getAgentContextInputLimitTokens, k as TURN_CONTEXT_TAG, m as isTurnExecutionLimitExceededError, mt as getAgentContextCompactionTriggerTokens, n as loadTurnCheckpoint, pt as estimateTextTokens, r as saveTurnCheckpoint, t as continuableMessages, tt as resolveTaskTitle, v as getUserMessageInstructionText, w as isToolResultMessage, x as isAssistantMessage, y as hasRuntimeTurnContext } from "./checkpoint-DuA1tIcd.js";
18
+ import { A as SANDBOX_DATA_ROOT, C as getDefaultRedisStateAdapterFor, D as fenceLock, E as acquireActiveLock, F as sandboxSkillFile, I as sandboxSkillPathResolution, M as SANDBOX_SKILLS_ROOT, N as SANDBOX_WORKSPACE_ROOT, O as withLock, P as sandboxSkillDir, _ as workspaceSnapshotNotReadyUserMessage, a as isAbortError, b as buildNonInteractiveShellScript, c as isSandboxCommandStreamInterruptedError, d as isSnapshottingError, f as throwSandboxOperationError, g as isWorkspaceSnapshotNotReadyError, h as getWorkspaceSnapshotNotReadyError, i as ensureDockerDaemon, j as SANDBOX_REPOS_ROOT, k as sleep$2, l as isSandboxMissingError, m as WorkspaceSnapshotNotReadyError, n as hash, o as isAlreadyExistsError, p as wrapSandboxSetupError, r as isStale, s as isSandboxApiTransientError, t as create, u as isSandboxUnavailableError, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand, y as buildCommandScript } from "./profile-DzqqgpDo.js";
19
+ import { n as canReusePendingAuthLink, t as abandonReplacedPendingAuth } from "./pending-auth-XoxEa4O5.js";
20
+ import { a as NO_REPLY_MARKER, c as CooperativeTurnYieldError, i as sanitizeAssistantText, l as TurnInputCommitLostError, n as decideReply, o as isNoReplyMarker, p as isTurnInputCommitLostError, r as getAssistantReplyText, t as authorizationId } from "./oauth-authorization-CetcZcwQ.js";
21
21
  import { r as EVENT_AUTHOR_ID } from "./prompt-D5RPLy92.js";
22
- import { a as createSandboxSession, c as postinstall, d as getSandboxResources, i as bindSandboxFileSystem, l as setSnapshotSpanAttributes, n as isMissingError, o as stopSession, r as resolve$1, s as dependencies } from "./resolve-SohTTVYa.js";
23
- import { a as getVercelConversationWorkQueue, f as getTurnRequestDeadline, n as sendNextWorkspaceSnapshotJob, r as sendWorkspaceSnapshotJob } from "./job-queue-CpNnv-n1.js";
22
+ import { a as createSandboxSession, c as postinstall, d as getSandboxResources, i as bindSandboxFileSystem, l as setSnapshotSpanAttributes, n as isMissingError, o as stopSession, r as resolve$1, s as dependencies } from "./resolve-Ccu6uGtp.js";
23
+ import { a as getVercelConversationWorkQueue, f as getTurnRequestDeadline, n as sendNextWorkspaceSnapshotJob, r as sendWorkspaceSnapshotJob } from "./job-queue-Dqc7qQbR.js";
24
24
  import { n as privateTraceResultAttributes } from "./private-trace-result-BLvBjy_e.js";
25
25
  import { streamSimple } from "@earendil-works/pi-ai/compat";
26
26
  import { createGatewayProvider } from "@ai-sdk/gateway";
@@ -39,6 +39,7 @@ import fs$1 from "node:fs";
39
39
  import { isRetryableAssistantError } from "@earendil-works/pi-ai";
40
40
  import { Sandbox } from "@vercel/sandbox";
41
41
  import { Bash, defineCommand } from "just-bash";
42
+ import { structuredPatch } from "diff";
42
43
  import { Client } from "@modelcontextprotocol/sdk/client";
43
44
  import { UnauthorizedError } from "@modelcontextprotocol/sdk/client/auth.js";
44
45
  import { StreamableHTTPClientTransport, StreamableHTTPError } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
@@ -6943,16 +6944,6 @@ function createSandboxRuntime(options) {
6943
6944
  //#endregion
6944
6945
  //#region src/chat/tools/sandbox/text-edits.ts
6945
6946
  const MAX_DIFF_LINE_CHARS = 4e3;
6946
- function truncateDiffLine(value) {
6947
- if (value.length <= MAX_DIFF_LINE_CHARS) return {
6948
- line: value,
6949
- truncated: false
6950
- };
6951
- return {
6952
- line: `${value.slice(0, MAX_DIFF_LINE_CHARS)}... [line truncated]`,
6953
- truncated: true
6954
- };
6955
- }
6956
6947
  /** Preserve a text artifact's dominant line-ending style across rewrites. */
6957
6948
  function detectLineEnding(value) {
6958
6949
  return value.includes("\r\n") ? "\r\n" : "\n";
@@ -6982,9 +6973,7 @@ function countOccurrences(content, target) {
6982
6973
  }
6983
6974
  return count;
6984
6975
  }
6985
- function firstChangedLine(oldContent, newContent) {
6986
- const oldLines = oldContent.split("\n");
6987
- const newLines = newContent.split("\n");
6976
+ function firstChangedLine(oldLines, newLines) {
6988
6977
  const count = Math.max(oldLines.length, newLines.length);
6989
6978
  for (let index = 0; index < count; index += 1) if (oldLines[index] !== newLines[index]) return index + 1;
6990
6979
  }
@@ -7024,35 +7013,40 @@ function prepareTextReplacementArguments(input) {
7024
7013
  function buildCompactDiff(oldContent, newContent) {
7025
7014
  const oldLines = oldContent.split("\n");
7026
7015
  const newLines = newContent.split("\n");
7027
- let prefix = 0;
7028
- while (prefix < oldLines.length && prefix < newLines.length && oldLines[prefix] === newLines[prefix]) prefix += 1;
7029
- let oldSuffix = oldLines.length - 1;
7030
- let newSuffix = newLines.length - 1;
7031
- while (oldSuffix >= prefix && newSuffix >= prefix && oldLines[oldSuffix] === newLines[newSuffix]) {
7032
- oldSuffix -= 1;
7033
- newSuffix -= 1;
7034
- }
7035
- const contextStart = Math.max(0, prefix - 3);
7036
- const newContextEnd = Math.min(newLines.length - 1, newSuffix + 3);
7037
- const oldContextEnd = Math.min(oldLines.length - 1, oldSuffix + 3);
7016
+ const { hunks } = structuredPatch("", "", oldContent, newContent, void 0, void 0, { context: 3 });
7038
7017
  const width = String(Math.max(oldLines.length, newLines.length)).length;
7039
7018
  const output = [];
7040
7019
  let lineTruncated = false;
7041
- const pushLine = (value) => {
7042
- const bounded = truncateDiffLine(value);
7043
- output.push(bounded.line);
7044
- lineTruncated ||= bounded.truncated;
7045
- };
7046
- if (contextStart > 0) pushLine(` ${"".padStart(width)} ...`);
7047
- for (let index = contextStart; index < prefix; index += 1) pushLine(` ${String(index + 1).padStart(width)} ${oldLines[index]}`);
7048
- for (let index = prefix; index <= oldSuffix; index += 1) pushLine(`-${String(index + 1).padStart(width)} ${oldLines[index]}`);
7049
- for (let index = prefix; index <= newSuffix; index += 1) pushLine(`+${String(index + 1).padStart(width)} ${newLines[index]}`);
7050
- for (let index = newSuffix + 1; index <= newContextEnd; index += 1) pushLine(` ${String(index + 1).padStart(width)} ${newLines[index]}`);
7051
- if (newContextEnd < newLines.length - 1 || oldContextEnd < oldLines.length - 1) pushLine(` ${"".padStart(width)} ...`);
7020
+ const pushLine = (line) => {
7021
+ if (line.length > MAX_DIFF_LINE_CHARS) {
7022
+ line = `${line.slice(0, MAX_DIFF_LINE_CHARS)}... [line truncated]`;
7023
+ lineTruncated = true;
7024
+ }
7025
+ output.push(line);
7026
+ };
7027
+ let nextLine = 1;
7028
+ for (const hunk of hunks) {
7029
+ if (hunk.newStart > nextLine) pushLine(` ${"".padStart(width)} ...`);
7030
+ let oldLine = hunk.oldStart;
7031
+ let newLine = hunk.newStart;
7032
+ for (const line of hunk.lines) {
7033
+ const prefix = line[0];
7034
+ if (prefix === "\\") {
7035
+ pushLine(line);
7036
+ continue;
7037
+ }
7038
+ pushLine(`${prefix}${String(prefix === "-" ? oldLine : newLine).padStart(width)} ${line.slice(1)}`);
7039
+ if (prefix !== "+") oldLine += 1;
7040
+ if (prefix !== "-") newLine += 1;
7041
+ }
7042
+ nextLine = newLine;
7043
+ }
7044
+ const newLineCount = newContent ? newLines.length - (newContent.endsWith("\n") ? 1 : 0) : 0;
7045
+ if (hunks.length > 0 && nextLine <= newLineCount) pushLine(` ${"".padStart(width)} ...`);
7052
7046
  const bounded = truncateText$1(output.join("\n"), MAX_TEXT_CHARS);
7053
7047
  return {
7054
7048
  diff: bounded.content,
7055
- firstChangedLine: firstChangedLine(oldContent, newContent),
7049
+ firstChangedLine: firstChangedLine(oldLines, newLines),
7056
7050
  truncated: lineTruncated || bounded.truncated
7057
7051
  };
7058
7052
  }
@@ -13636,7 +13630,7 @@ async function collectAttachmentGarbage(args) {
13636
13630
  return { deleted: (await args.db.db().delete(juniorAttachments).where(inArray(juniorAttachments.id, stillEligible.map((row) => row.id))).returning({ id: juniorAttachments.id })).length };
13637
13631
  }
13638
13632
  //#endregion
13639
- //#region src/chat/slack/tools/send-files.ts
13633
+ //#region src/chat/tools/send-files.ts
13640
13634
  const sendFilesResultSchema = juniorToolOutputSchema.extend({
13641
13635
  deduplicated: z.boolean().optional(),
13642
13636
  attachment_refs: z.array(z.object({
@@ -13651,9 +13645,6 @@ function normalizeFiles(files) {
13651
13645
  ...file.mimeType ? { mimeType: file.mimeType } : void 0
13652
13646
  }));
13653
13647
  }
13654
- function fileContentDigest(data) {
13655
- return createHash("sha256").update(data).digest("hex");
13656
- }
13657
13648
  /** Include file bytes in idempotency so rewritten paths can be sent again. */
13658
13649
  function fileOperationInput(files) {
13659
13650
  return files.map((file) => ({
@@ -13661,11 +13652,12 @@ function fileOperationInput(files) {
13661
13652
  filename: file.filename,
13662
13653
  mimeType: file.mimeType,
13663
13654
  path: file.path,
13664
- sha256: fileContentDigest(file.data)
13655
+ sha256: createHash("sha256").update(file.data).digest("hex")
13665
13656
  }));
13666
13657
  }
13667
- /** Create the Slack side-effect tool for active-conversation file messages. */
13668
- function createSendFilesTool(context, state, materializeFile, attachments) {
13658
+ /** Store files in the active Conversation and optionally deliver them to its Location. */
13659
+ function createSendFilesTool(state, materializeFile, output) {
13660
+ const { attachments, delivery } = output;
13669
13661
  return zodTool({
13670
13662
  annotations: {
13671
13663
  destructiveHint: false,
@@ -13673,69 +13665,76 @@ function createSendFilesTool(context, state, materializeFile, attachments) {
13673
13665
  openWorldHint: true,
13674
13666
  readOnlyHint: false
13675
13667
  },
13676
- description: "Send one or more sandbox files into the active Slack conversation.",
13668
+ description: delivery?.description ?? "Attach one or more sandbox files to the active conversation. Files use the conversation's access rules; this does not publish public URLs.",
13677
13669
  inputSchema: z.object({ files: z.array(sandboxFileReferenceSchema).min(1).describe("One or more existing sandbox files. Objects returned by imageGenerate or webFetch can be passed unchanged.") }),
13678
13670
  outputSchema: sendFilesResultSchema,
13679
13671
  execute: async ({ files }, options) => {
13680
13672
  const filesToSend = normalizeFiles(files);
13681
- const activeChannelId = context.locationChannelId;
13682
- const threadTs = context.threadTs ?? context.messageTs;
13683
13673
  const materializedFiles = await Promise.all(filesToSend.map((file) => materializeFile(file)));
13684
13674
  const operationKey = createOperationKey("sendFiles", {
13685
- channel_id: activeChannelId,
13686
- thread_ts: threadTs ?? null,
13675
+ conversation_id: attachments?.conversationId,
13676
+ delivery: delivery?.key,
13687
13677
  files: fileOperationInput(materializedFiles)
13688
13678
  });
13689
- const cached = state.getOperationResult(operationKey);
13690
- if (cached) {
13691
- if (attachments && cached.delivered.length > 0) await recordAttachmentsDelivered({
13692
- attachments: cached.delivered,
13679
+ let cached = state.getOperationResult(operationKey);
13680
+ const deduplicated = Boolean(cached);
13681
+ if (!cached) {
13682
+ const stored = attachments ? await storeAttachments({
13693
13683
  conversationId: attachments.conversationId,
13694
- ...cached.toolCallId ? { toolCallId: cached.toolCallId } : void 0
13695
- });
13696
- return sendFilesResultSchema.parse({
13697
- ...cached.result,
13698
- deduplicated: true
13699
- });
13684
+ db: attachments.db,
13685
+ files: materializedFiles,
13686
+ storage: attachments.storage
13687
+ }) : [];
13688
+ await delivery?.send(materializedFiles);
13689
+ cached = {
13690
+ delivered: stored.map((attachment, index) => {
13691
+ const file = materializedFiles[index];
13692
+ return {
13693
+ id: attachment.id,
13694
+ filename: file.filename,
13695
+ contentType: file.mimeType,
13696
+ bytes: file.bytes
13697
+ };
13698
+ }),
13699
+ ...options.toolCallId ? { toolCallId: options.toolCallId } : void 0
13700
+ };
13701
+ state.setOperationResult(operationKey, cached);
13700
13702
  }
13701
- const stored = attachments ? await storeAttachments({
13703
+ if (attachments && cached.delivered.length > 0) await recordAttachmentsDelivered({
13704
+ attachments: cached.delivered,
13702
13705
  conversationId: attachments.conversationId,
13703
- db: attachments.db,
13704
- files: materializedFiles,
13705
- storage: attachments.storage
13706
- }) : [];
13707
- await uploadFilesToConversation({
13708
- channelId: activeChannelId,
13709
- files: materializedFiles.map((file) => ({
13710
- data: file.data,
13711
- filename: file.filename
13712
- })),
13713
- ...threadTs ? { threadTs } : void 0
13714
- });
13715
- const delivered = stored.map((attachment, index) => {
13716
- const file = materializedFiles[index];
13717
- return {
13718
- id: attachment.id,
13719
- filename: file.filename,
13720
- contentType: file.mimeType,
13721
- bytes: file.bytes
13722
- };
13706
+ ...cached.toolCallId ? { toolCallId: cached.toolCallId } : void 0
13723
13707
  });
13724
- const response = { attachment_refs: delivered.map((attachment) => ({
13725
- id: attachment.id,
13726
- filename: attachment.filename
13708
+ const result = { attachment_refs: cached.delivered.map(({ id, filename }) => ({
13709
+ id,
13710
+ filename
13727
13711
  })) };
13728
- state.setOperationResult(operationKey, {
13729
- delivered,
13730
- result: response,
13731
- ...options.toolCallId ? { toolCallId: options.toolCallId } : void 0
13732
- });
13733
- if (attachments && delivered.length > 0) await recordAttachmentsDelivered({
13734
- attachments: delivered,
13735
- conversationId: attachments.conversationId,
13736
- ...options.toolCallId ? { toolCallId: options.toolCallId } : void 0
13737
- });
13738
- return response;
13712
+ if (deduplicated) result.deduplicated = true;
13713
+ return result;
13714
+ }
13715
+ });
13716
+ }
13717
+ //#endregion
13718
+ //#region src/chat/slack/tools/send-files.ts
13719
+ /** Deliver files to the active Slack Location and retain Conversation attachments. */
13720
+ function createSlackSendFilesTool(context, state, materializeFile, attachments) {
13721
+ const channelId = context.locationChannelId;
13722
+ const threadTs = context.threadTs ?? context.messageTs;
13723
+ return createSendFilesTool(state, materializeFile, {
13724
+ attachments,
13725
+ delivery: {
13726
+ key: `${channelId}:${threadTs ?? ""}`,
13727
+ description: "Send one or more sandbox files into the active Slack conversation.",
13728
+ async send(files) {
13729
+ await uploadFilesToConversation({
13730
+ channelId,
13731
+ files: files.map((file) => ({
13732
+ data: file.data,
13733
+ filename: file.filename
13734
+ })),
13735
+ ...threadTs ? { threadTs } : void 0
13736
+ });
13737
+ }
13739
13738
  }
13740
13739
  });
13741
13740
  }
@@ -17071,7 +17070,7 @@ function createTools(availableSkills, hooks = {}, context, options = {}) {
17071
17070
  const state = createToolState();
17072
17071
  const slackContext = getSlackToolContext(context);
17073
17072
  const slackLocationCapabilities = slackContext ? resolveChannelCapabilities(slackContext.locationChannelId) : void 0;
17074
- const canSendFilesToActiveConversation = Boolean(slackContext && slackLocationCapabilities?.canSendFiles);
17073
+ const canSendFilesToActiveConversation = Boolean(slackContext ? slackLocationCapabilities?.canSendFiles : context.attachmentStorage);
17075
17074
  const eventCatalog = getEventCatalog();
17076
17075
  const tools = {
17077
17076
  ...options.includeLoadSkill === false ? void 0 : { loadSkill: createLoadSkillTool(availableSkills, { onSkillLoaded: hooks.onSkillLoaded }) },
@@ -17104,6 +17103,11 @@ function createTools(availableSkills, hooks = {}, context, options = {}) {
17104
17103
  canSendFilesToActiveConversation
17105
17104
  }, hooks.toolOverrides?.imageGenerate);
17106
17105
  if (context.attachmentStorage) {
17106
+ if (!slackContext) tools.sendFiles = createSendFilesTool(state, (input) => readSandboxFileUpload(context.workspace, input), { attachments: {
17107
+ conversationId: context.conversationId,
17108
+ db: getSqlExecutor(),
17109
+ storage: context.attachmentStorage
17110
+ } });
17107
17111
  tools.loadAttachment = createLoadAttachmentTool({
17108
17112
  conversationId: context.conversationId,
17109
17113
  db: getSqlExecutor(),
@@ -17152,7 +17156,7 @@ function createTools(availableSkills, hooks = {}, context, options = {}) {
17152
17156
  const outputCapabilities = outputChannelId ? resolveChannelCapabilities(outputChannelId) : void 0;
17153
17157
  const locationCapabilities = resolveChannelCapabilities(slackContext.locationChannelId);
17154
17158
  if (outputCapabilities?.canCreateCanvas) tools.slackCanvasCreate = createSlackCanvasCreateTool(slackContext, state);
17155
- if (locationCapabilities.canSendFiles) tools.sendFiles = createSendFilesTool(slackContext, state, (input) => readSandboxFileUpload(context.workspace, input), context.attachmentStorage ? {
17159
+ if (locationCapabilities.canSendFiles) tools.sendFiles = createSlackSendFilesTool(slackContext, state, (input) => readSandboxFileUpload(context.workspace, input), context.attachmentStorage ? {
17156
17160
  conversationId: context.conversationId,
17157
17161
  db: getSqlExecutor(),
17158
17162
  storage: context.attachmentStorage
@@ -20502,6 +20506,7 @@ async function summarizeContext(args, deps) {
20502
20506
  ].includes(message.role));
20503
20507
  const summary = (await deps.completeText({
20504
20508
  modelId: botConfig.fastModelId,
20509
+ cacheRetention: "none",
20505
20510
  messageAttributeMode: "metadata",
20506
20511
  temperature: 0,
20507
20512
  signal: args.signal,
@@ -21929,7 +21934,7 @@ function createAgentRunner(execute, options) {
21929
21934
  } } : void 0
21930
21935
  };
21931
21936
  if (run.instruction.storedAttachments?.length) {
21932
- const { loadInputImages } = await import("./images-owPAu3eq.js").then((n) => n.n);
21937
+ const { loadInputImages } = await import("./images-Bj8PcvZ5.js").then((n) => n.n);
21933
21938
  const storage = nextRun.environment?.attachmentStorage;
21934
21939
  if (!storage) throw new Error("Attachment storage is unavailable.");
21935
21940
  nextRun.instruction = {
@@ -2416,8 +2416,8 @@ export declare const actorProfileReportSchema: z.ZodObject<{
2416
2416
  durationMs: z.ZodNumber;
2417
2417
  label: z.ZodString;
2418
2418
  active: z.ZodNumber;
2419
- tokens: z.ZodOptional<z.ZodNumber>;
2420
2419
  conversations: z.ZodNumber;
2420
+ tokens: z.ZodOptional<z.ZodNumber>;
2421
2421
  }, z.core.$strict>>;
2422
2422
  recentConversations: z.ZodArray<z.ZodObject<{
2423
2423
  displayTitle: z.ZodString;
@@ -2610,8 +2610,8 @@ export declare const actorProfileReportSchema: z.ZodObject<{
2610
2610
  durationMs: z.ZodNumber;
2611
2611
  label: z.ZodString;
2612
2612
  active: z.ZodNumber;
2613
- tokens: z.ZodOptional<z.ZodNumber>;
2614
2613
  conversations: z.ZodNumber;
2614
+ tokens: z.ZodOptional<z.ZodNumber>;
2615
2615
  }, z.core.$strict>>;
2616
2616
  totals: z.ZodObject<{
2617
2617
  active: z.ZodNumber;
package/dist/api.js CHANGED
@@ -1,18 +1,18 @@
1
- import { Ct as cancelHumanFacingPendingMessages, M as parseSlackThreadId, Nt as getConversation, b as readStats, k as readLiveAttachment } from "./agent-runner-B9dvsdM8.js";
2
- import { d as logException, p as logWarn } from "./logging-BO1fVUQe.js";
1
+ import { Ct as cancelHumanFacingPendingMessages, M as parseSlackThreadId, Nt as getConversation, b as readStats, k as readLiveAttachment } from "./agent-runner-D_FVvrwA.js";
2
+ import { d as logException, p as logWarn } from "./logging-X4U7SInw.js";
3
3
  import { b as parseSlackMessageTs, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-0Et9iVSB.js";
4
- import { $ as resolveViewerUser, $t as getConversationStore, At as conversationNotArchivedForEmail, Ct as createPluginLogger, D as SANDBOX_RUNTIME, Dt as conversationArchivedForUser, Et as conversationArchivedForEmail, Ft as readConversationEventPage, Gt as listConversationAnnotationsById, It as buildSentryConversationUrl, J as withSlackRetries, Mt as viewerConversationMembership, Ot as conversationHasParticipantEmail, Pt as readLatestConversationBrief, S as WorkspaceValidationError, Tt as conversationArchiveTimes, U as getSlackClient, Wt as listConversationAnnotations, Z as findUserByEmail, _ as deleteWorkspace, an as locationFromRow, b as listWorkspaces, dn as agentTurnUsageSchema, en as getDb, et as updateViewerDisplayName, fn as hasAgentTurnUsage, g as createWorkspace, j as workspaceRepoCheckoutPath, jt as conversationNotArchivedForUser, kt as conversationHasParticipantUser, pn as resolveRootConversationId, sn as parseSessionSource, tn as getSqlExecutor, u as getPlugins, v as getWorkspace, wt as readConversationAccessFromSql, x as updateWorkspace } from "./agent-hooks-Im1UUKhZ.js";
4
+ import { $ as resolveViewerUser, $t as getConversationStore, At as conversationNotArchivedForEmail, Ct as createPluginLogger, D as SANDBOX_RUNTIME, Dt as conversationArchivedForUser, Et as conversationArchivedForEmail, Ft as readConversationEventPage, Gt as listConversationAnnotationsById, It as buildSentryConversationUrl, J as withSlackRetries, Mt as viewerConversationMembership, Ot as conversationHasParticipantEmail, Pt as readLatestConversationBrief, S as WorkspaceValidationError, Tt as conversationArchiveTimes, U as getSlackClient, Wt as listConversationAnnotations, Z as findUserByEmail, _ as deleteWorkspace, an as locationFromRow, b as listWorkspaces, dn as agentTurnUsageSchema, en as getDb, et as updateViewerDisplayName, fn as hasAgentTurnUsage, g as createWorkspace, j as workspaceRepoCheckoutPath, jt as conversationNotArchivedForUser, kt as conversationHasParticipantUser, pn as resolveRootConversationId, sn as parseSessionSource, tn as getSqlExecutor, u as getPlugins, v as getWorkspace, wt as readConversationAccessFromSql, x as updateWorkspace } from "./agent-hooks-n9qfV697.js";
5
5
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
6
- import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, b as juniorApiTokens, g as juniorConversationBriefs, m as juniorConversationParticipants, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-C-LEhjeD.js";
6
+ import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, b as juniorApiTokens, g as juniorConversationBriefs, m as juniorConversationParticipants, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-DDonSWxn.js";
7
7
  import { D as createConversationBodySchema, M as INPUT_IMAGE_TYPES, O as createConversationMessageBodySchema, T as conversationStatsReportSchema, _ as conversationParamsSchema, a as cancelConversationPendingMessagesBodySchema, c as conversationAttachmentParamsSchema, d as conversationDetailReportSchema, g as conversationFeedSchema, h as conversationFeedQuerySchema, i as archiveConversationResponseSchema, j as readMessageAttachments, m as conversationEventsQuerySchema, o as cancelConversationPendingMessagesResponseSchema, p as conversationEventPageSchema, r as archiveConversationBodySchema, t as acceptedConversationMessageSchema, u as conversationDetailQuerySchema, x as conversationPendingMessagesReportSchema } from "./conversation-DsuDtoYR.js";
8
- import { n as hash, t as create } from "./profile-DpHUuqjR.js";
9
- import { t as getCachedSnapshot } from "./resolve-SohTTVYa.js";
10
- import { a as getVercelConversationWorkQueue } from "./job-queue-CpNnv-n1.js";
8
+ import { n as hash, t as create } from "./profile-DzqqgpDo.js";
9
+ import { t as getCachedSnapshot } from "./resolve-Ccu6uGtp.js";
10
+ import { a as getVercelConversationWorkQueue } from "./job-queue-Dqc7qQbR.js";
11
11
  import { C as skillReportsSchema, a as fillUtcHours, b as pluginsSchema, c as sumUtcHoursIntoSixHours, d as trailingUtcSixHourWindow, f as utcDayKey, h as pluginOperationalReportFeedSchema, i as fillUtcDays, l as trailingUtcDayWindow, m as healthReportSchema, n as DAY_MS$1, o as fillUtcSixHours, p as utcHourKey, r as HOUR_MS$1, s as startOfUtcHour, u as trailingUtcHourWindow, x as runtimeInfoReportSchema } from "./web-message-id-xPI_EFSC.js";
12
- import { F as createVercelAttachmentStorage, _ as readViewerAutomations, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, d as ViewerTaskNotFoundError, f as deleteViewerTask, h as readViewerAutomationRuns, k as legacyWebMailboxMetadataSchema, l as formatSlackConversationRedactedLabel, m as readViewerAutomationExecutions, p as readConversationSourceTask, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContextFromThreadId, x as lookupSlackUser, z as readHealthReport } from "./web-input-BmLFoSUw.js";
13
- import { A as conversationAggregateColumns, j as conversationRangeColumns, k as conversationActiveDaysColumn } from "./task-runner-DrC1UgCK.js";
14
- import { r as getWebAuthorization } from "./web-authorization-COF8MUa5.js";
15
- import { t as decodeInputImages } from "./images-owPAu3eq.js";
12
+ import { F as createVercelAttachmentStorage, _ as readViewerAutomations, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, d as ViewerTaskNotFoundError, f as deleteViewerTask, h as readViewerAutomationRuns, k as legacyWebMailboxMetadataSchema, l as formatSlackConversationRedactedLabel, m as readViewerAutomationExecutions, p as readConversationSourceTask, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContextFromThreadId, x as lookupSlackUser, z as readHealthReport } from "./web-input-Bkn-JGWd.js";
13
+ import { A as conversationAggregateColumns, j as conversationRangeColumns, k as conversationActiveDaysColumn } from "./task-runner-COivEGS3.js";
14
+ import { r as getWebAuthorization } from "./web-authorization-BBwQsNCZ.js";
15
+ import { t as decodeInputImages } from "./images-Bj8PcvZ5.js";
16
16
  import { A as actorProfileReportSchema, C as createPersonalTokenBodySchema, D as personalTokenParamsSchema, F as locationDirectoryReportSchema, G as codePersonReportSchema, I as locationParamsSchema, L as activityDays$1, M as personalSpendReportSchema, O as revokePersonalTokenResponseSchema, P as locationDetailReportSchema, R as activityHours$1, T as personalTokenListSchema, W as codeOverviewReportSchema, _ as automationRunListSchema, a as workspaceBodySchema, g as automationParamsSchema, h as automationListSchema, i as deleteWorkspaceResponseSchema, j as personParamsSchema, k as actorDirectoryReportSchema, l as workspaceSchema, m as automationListQuerySchema, n as statsReportSchema, o as workspaceListSchema, q as apiErrorSchema, s as workspaceParamsSchema, u as automationExecutionListSchema, w as createdPersonalTokenSchema, z as activitySixHours$1 } from "./schema-B-Taar1W.js";
17
17
  import { Hono } from "hono";
18
18
  import path from "node:path";
@@ -3059,7 +3059,7 @@ async function readPeoplePluginReports(args) {
3059
3059
  reports: [],
3060
3060
  source: "plugins"
3061
3061
  });
3062
- const { getPluginProfileReports } = await import("./agent-hooks-Im1UUKhZ.js").then((n) => n.t);
3062
+ const { getPluginProfileReports } = await import("./agent-hooks-n9qfV697.js").then((n) => n.t);
3063
3063
  return pluginOperationalReportFeedSchema.parse({
3064
3064
  generatedAt: new Date(nowMs).toISOString(),
3065
3065
  reports: await getPluginProfileReports({
@@ -3668,7 +3668,7 @@ function readDescriptionText(home) {
3668
3668
  }
3669
3669
  /** Read discovered skill names for authenticated runtime diagnostics. */
3670
3670
  async function readSkillReports() {
3671
- const { discoverSkills } = await import("./skills-DElnSC0r.js").then((n) => n.o);
3671
+ const { discoverSkills } = await import("./skills-NB_I9BuR.js").then((n) => n.o);
3672
3672
  const skills = await discoverSkills();
3673
3673
  return skillReportsSchema.parse(skills.map((skill) => ({
3674
3674
  name: skill.name,
@@ -3677,7 +3677,7 @@ async function readSkillReports() {
3677
3677
  }
3678
3678
  /** Read safe configured plugin metadata for authenticated runtime diagnostics. */
3679
3679
  async function readPlugins() {
3680
- const { pluginCatalogRuntime } = await import("./catalog-runtime-Blx7IGY9.js").then((n) => n.t);
3680
+ const { pluginCatalogRuntime } = await import("./catalog-runtime-FU8TmK-W.js").then((n) => n.t);
3681
3681
  return pluginsSchema.parse(pluginCatalogRuntime.getProviders().map((plugin) => ({
3682
3682
  configKeys: plugin.manifest.configKeys ?? [],
3683
3683
  description: plugin.manifest.description,
@@ -3689,7 +3689,7 @@ async function readPlugins() {
3689
3689
  async function readRuntimeInfoReport() {
3690
3690
  const [{ homeDir }, { pluginCatalogRuntime }, plugins, skills] = await Promise.all([
3691
3691
  import("./package-discovery-7a9YqLhE.js").then((n) => n.r),
3692
- import("./catalog-runtime-Blx7IGY9.js").then((n) => n.t),
3692
+ import("./catalog-runtime-FU8TmK-W.js").then((n) => n.t),
3693
3693
  readPlugins(),
3694
3694
  readSkillReports()
3695
3695
  ]);
@@ -3706,7 +3706,7 @@ async function readRuntimeInfoReport() {
3706
3706
  /** Read sanitized operational summaries contributed by plugins. */
3707
3707
  async function readPluginOperationalReportFeed() {
3708
3708
  const nowMs = Date.now();
3709
- const { getPluginOperationalReports } = await import("./agent-hooks-Im1UUKhZ.js").then((n) => n.t);
3709
+ const { getPluginOperationalReports } = await import("./agent-hooks-n9qfV697.js").then((n) => n.t);
3710
3710
  return pluginOperationalReportFeedSchema.parse({
3711
3711
  source: "plugins",
3712
3712
  generatedAt: new Date(nowMs).toISOString(),
package/dist/app.js CHANGED
@@ -1,28 +1,28 @@
1
- import { $ as collectEventAutomationMatchKeys, A as requestAttachmentDeletion, An as getConfigDefaults, Bt as removeActiveConversation, C as readPublicArtifact, Cn as createUserTokenStore, Et as clearExpiredConversationLease, Ft as hasRunnableConversationWork, G as readScheduledAutomation, H as listScheduledAutomations, Ht as requestConversationWork, It as listActiveConversationIds, J as scheduledRunId, Jt as hasRunnableConversationWork$1, Kt as CONVERSATION_WORK_STALE_ENQUEUE_MS, L as logScheduledAutomationRunSkipped, M as parseSlackThreadId, Mt as ensureConversationWake, Nt as getConversation, O as collectAttachmentGarbage, Pt as getConversationWorkState, Q as effectiveTaskOutcomes, R as scheduledAutomationRunAttributes, S as publicArtifactHeaders, Sn as slackExternalRefIdSchema, T as lookupSlackUserProfile, U as listScheduledAutomationsForTeam, Wt as stopConversationWork, X as scheduledRunSchema, Xt as isInvalidConversationRecordError, Y as withScheduledAutomationLock, Zt as renderTaskInput, _t as getEventCatalog, a as isExperimentalFeatureEnabled, an as consumeSandboxEgressAuthRequiredSignal, en as resolveSandboxEgressProviderForHost, f as deleteMcpAuthSessionsForUserProvider, fn as startOAuthFlow, i as getExperimentalFeatures, in as clearSandboxEgressSignals, jn as setConfigDefaults, l as executeCredentialedEgressRequest, ln as formatProviderLabel, m as deleteMcpStoredOAuthCredentials, mt as ingestEvent, nn as shouldPropagateSandboxEgressTrace, nt as findMatchingEventAutomations, o as setExperimentalFeatures, on as consumeSandboxEgressPermissionDeniedSignal, p as deleteMcpServerSessionId, pt as processWorkspaceSnapshotJob, q as saveScheduledAutomationInLock, rn as SANDBOX_EGRESS_PROXY_PATH, s as executeAgentRun, sn as parseSandboxEgressCredentialToken, t as createAgentRunner, tn as normalizeSandboxEgressTracePropagationDomains, vt as eventGuidance, w as unpublishedArtifactHeaders, xn as slackEntitySchema, xt as appendAndEnqueueInboundMessage, z as getNextRunAtMs } from "./agent-runner-B9dvsdM8.js";
2
- import { C as withLogContext, O as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, S as withContext, d as logException, f as logInfo, j as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, p as logWarn, r as createRequestContext, v as setSpanAttributes, w as withSpan, y as setSpanStatus } from "./logging-BO1fVUQe.js";
1
+ import { $ as collectEventAutomationMatchKeys, A as requestAttachmentDeletion, An as getConfigDefaults, Bt as removeActiveConversation, C as readPublicArtifact, Cn as createUserTokenStore, Et as clearExpiredConversationLease, Ft as hasRunnableConversationWork, G as readScheduledAutomation, H as listScheduledAutomations, Ht as requestConversationWork, It as listActiveConversationIds, J as scheduledRunId, Jt as hasRunnableConversationWork$1, Kt as CONVERSATION_WORK_STALE_ENQUEUE_MS, L as logScheduledAutomationRunSkipped, M as parseSlackThreadId, Mt as ensureConversationWake, Nt as getConversation, O as collectAttachmentGarbage, Pt as getConversationWorkState, Q as effectiveTaskOutcomes, R as scheduledAutomationRunAttributes, S as publicArtifactHeaders, Sn as slackExternalRefIdSchema, T as lookupSlackUserProfile, U as listScheduledAutomationsForTeam, Wt as stopConversationWork, X as scheduledRunSchema, Xt as isInvalidConversationRecordError, Y as withScheduledAutomationLock, Zt as renderTaskInput, _t as getEventCatalog, a as isExperimentalFeatureEnabled, an as consumeSandboxEgressAuthRequiredSignal, en as resolveSandboxEgressProviderForHost, f as deleteMcpAuthSessionsForUserProvider, fn as startOAuthFlow, i as getExperimentalFeatures, in as clearSandboxEgressSignals, jn as setConfigDefaults, l as executeCredentialedEgressRequest, ln as formatProviderLabel, m as deleteMcpStoredOAuthCredentials, mt as ingestEvent, nn as shouldPropagateSandboxEgressTrace, nt as findMatchingEventAutomations, o as setExperimentalFeatures, on as consumeSandboxEgressPermissionDeniedSignal, p as deleteMcpServerSessionId, pt as processWorkspaceSnapshotJob, q as saveScheduledAutomationInLock, rn as SANDBOX_EGRESS_PROXY_PATH, s as executeAgentRun, sn as parseSandboxEgressCredentialToken, t as createAgentRunner, tn as normalizeSandboxEgressTracePropagationDomains, vt as eventGuidance, w as unpublishedArtifactHeaders, xn as slackEntitySchema, xt as appendAndEnqueueInboundMessage, z as getNextRunAtMs } from "./agent-runner-D_FVvrwA.js";
2
+ import { C as withLogContext, O as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, S as withContext, d as logException, f as logInfo, j as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, p as logWarn, r as createRequestContext, v as setSpanAttributes, w as withSpan, y as setSpanStatus } from "./logging-X4U7SInw.js";
3
3
  import { r as continueTrace } from "./sentry-CgWZM_kV.js";
4
- import { t as JUNIOR_VERSION } from "./version-Y7rGnMXG.js";
5
- import { a as getChatConfig, f as setBotModelConfig, i as configureFunctionMaxDurationSeconds, m as setSlackReactionConfig, n as botConfig, p as setProfiles, s as getSlackBotToken, u as getSlackReactionConfig } from "./config-HqsfInxG.js";
4
+ import { t as JUNIOR_VERSION } from "./version-CkRTIRkV.js";
5
+ import { a as getChatConfig, f as setBotModelConfig, i as configureFunctionMaxDurationSeconds, m as setSlackReactionConfig, n as botConfig, p as setProfiles, s as getSlackBotToken, u as getSlackReactionConfig } from "./config-Q7ayKDYh.js";
6
6
  import { _ as slackChannelIdSchema, g as parseSlackUserId, h as parseSlackTeamId, u as parseActorUserId, v as slackTeamIdSchema, x as slackMessageTsSchema, y as slackUserIdSchema } from "./context-0Et9iVSB.js";
7
- import { $t as getConversationStore, Ct as createPluginLogger, F as bindSlackDirectCredentialSubject, G as isDmChannel, I as verifyEventAutomationCredentialSubject, L as verifyScheduledAutomationCredentialSubject, N as bindEventAutomationCredentialSubject, P as bindScheduledAutomationCredentialSubject, Q as readActorIdentity, R as verifySlackDirectCredentialSubject, U as getSlackClient, Vt as resolveRootVisibility, Wt as listConversationAnnotations, X as runWithWorkspaceTeamId, Y as getWorkspaceTeamId, Zt as getConversationEventStore, a as getPluginRoutes, bt as createPluginState, ct as collectEventMatchKeys, d as setPlugins, en as getDb, f as validatePlugins, ft as findMatchingWatches, gt as getDashboardConversationLink, h as setBriefsConfig, i as getPluginApiRoutes, in as withConversationMutationLock, mn as deleteProviderIdentityForSlackUser, mt as takeDueTimerWatches, ot as cancelSubscriptions, rn as withConversationEventLock, tn as getSqlExecutor, u as getPlugins, vt as getDashboardTaskLink, wt as readConversationAccessFromSql, yt as setDashboardConversationLinkOptions } from "./agent-hooks-Im1UUKhZ.js";
7
+ import { $t as getConversationStore, Ct as createPluginLogger, F as bindSlackDirectCredentialSubject, G as isDmChannel, I as verifyEventAutomationCredentialSubject, L as verifyScheduledAutomationCredentialSubject, N as bindEventAutomationCredentialSubject, P as bindScheduledAutomationCredentialSubject, Q as readActorIdentity, R as verifySlackDirectCredentialSubject, U as getSlackClient, Vt as resolveRootVisibility, Wt as listConversationAnnotations, X as runWithWorkspaceTeamId, Y as getWorkspaceTeamId, Zt as getConversationEventStore, a as getPluginRoutes, bt as createPluginState, ct as collectEventMatchKeys, d as setPlugins, en as getDb, f as validatePlugins, ft as findMatchingWatches, gt as getDashboardConversationLink, h as setBriefsConfig, i as getPluginApiRoutes, in as withConversationMutationLock, mn as deleteProviderIdentityForSlackUser, mt as takeDueTimerWatches, ot as cancelSubscriptions, rn as withConversationEventLock, tn as getSqlExecutor, u as getPlugins, vt as getDashboardTaskLink, wt as readConversationAccessFromSql, yt as setDashboardConversationLinkOptions } from "./agent-hooks-n9qfV697.js";
8
8
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
9
- import { E as juniorConversations, a as juniorSchedulerRuns, f as juniorAgentBindings, g as juniorConversationBriefs, o as juniorSchedulerTasks, p as juniorAgentInvocations, y as juniorConversationEvents } from "./executor-C-LEhjeD.js";
9
+ import { E as juniorConversations, a as juniorSchedulerRuns, f as juniorAgentBindings, g as juniorConversationBriefs, o as juniorSchedulerTasks, p as juniorAgentInvocations, y as juniorConversationEvents } from "./executor-DDonSWxn.js";
10
10
  import { z as annotationCard } from "./conversation-DsuDtoYR.js";
11
- import { n as pluginCatalogRuntime } from "./catalog-runtime-Blx7IGY9.js";
12
- import { X as projectConversationMessages, q as appendConversationMessages } from "./checkpoint-BDaS7x3C.js";
13
- import { O as withLock$1, w as getStateAdapter } from "./profile-DpHUuqjR.js";
14
- import { f as setSandboxResourceConfig, u as getSandboxResourceConfig } from "./resolve-SohTTVYa.js";
15
- import { a as getVercelConversationWorkQueue, g as isConversationQueueMessageRejectedError, h as conversationQueueMessageSchema, i as verifyWorkspaceSnapshotJobMessage, o as resolveConversationWorkQueueTopic, s as verifyConversationQueueMessage, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-CpNnv-n1.js";
16
- import { n as validatePluginRegistrations, t as validatePluginEgressCredentialHooks } from "./validation-_gPdrVG7.js";
11
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-FU8TmK-W.js";
12
+ import { X as projectConversationMessages, q as appendConversationMessages } from "./checkpoint-DuA1tIcd.js";
13
+ import { O as withLock$1, w as getStateAdapter } from "./profile-DzqqgpDo.js";
14
+ import { f as setSandboxResourceConfig, u as getSandboxResourceConfig } from "./resolve-Ccu6uGtp.js";
15
+ import { a as getVercelConversationWorkQueue, g as isConversationQueueMessageRejectedError, h as conversationQueueMessageSchema, i as verifyWorkspaceSnapshotJobMessage, o as resolveConversationWorkQueueTopic, s as verifyConversationQueueMessage, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-Dqc7qQbR.js";
16
+ import { n as validatePluginRegistrations, t as validatePluginEgressCredentialHooks } from "./validation-f0y71ety.js";
17
17
  import { a as pluginRuntimeRegistrationsFromPluginSet, n as pluginCatalogConfigFromEnv, r as pluginCatalogConfigFromPluginSet, t as defineJuniorPlugins } from "./plugins-egKWjgue.js";
18
- import { A as THREAD_OPTOUT_ACK, C as verifySlackSignature, D as withNormalizedThreadId, E as normalizeIncomingSlackThreadId, F as createVercelAttachmentStorage, L as enqueueAgentDispatch, M as parseContent, N as getThreadStopDecision, O as getAuthPausedConversationTurnId, P as renderSlackObjectCard, R as GET$3, S as runWithSlackInstallation, T as stopSlackThread, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, g as readViewerAutomationSummary, i as recordWebConversationActivity, j as startProcessingReaction, n as conversationTurnIdForMessage, o as createProductionConversationWorkOptions, s as createProductionSlackWebhookServices, t as appendAndEnqueueWebMessage, v as recordSkippedConversationMessage, w as isSlackMessageStopped, y as buildSlackInboundMessage } from "./web-input-BmLFoSUw.js";
19
- import { O as recordAutomationExecution, _ as markDispatchFailed, a as confirmDispatchMailboxAppend, d as getPluginDispatchProjection, f as isTerminalDispatchStatus, l as getDispatchRecord, o as createOrGetDispatch, p as listPendingDispatchMailboxAppends, s as getDispatchConversationId } from "./task-runner-DrC1UgCK.js";
20
- import { c as listPendingAgentInvocationMailboxAppends, r as enqueueAgentInvocation } from "./work-CP3L3bNf.js";
21
- import { s as coerceThreadConversationState } from "./thread-state-BIXM2uhZ.js";
22
- import { a as GET$4, i as publishAppHomeView, r as GET$5, t as receiveLocalOAuthCredential } from "./credential-sync-DEF6P_Qr.js";
23
- import { a as registerVercelPluginTaskDevConsumer, n as createVercelPluginTaskCallback, s as queueCallback } from "./task-queue-BEzJHMbQ.js";
24
- import { t as processConversationWork } from "./worker-DlZMqtCm.js";
25
- import { t as bindSpawnAgent } from "./spawn-DrH6CP9W.js";
18
+ import { A as THREAD_OPTOUT_ACK, C as verifySlackSignature, D as withNormalizedThreadId, E as normalizeIncomingSlackThreadId, F as createVercelAttachmentStorage, L as enqueueAgentDispatch, M as parseContent, N as getThreadStopDecision, O as getAuthPausedConversationTurnId, P as renderSlackObjectCard, R as GET$3, S as runWithSlackInstallation, T as stopSlackThread, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, g as readViewerAutomationSummary, i as recordWebConversationActivity, j as startProcessingReaction, n as conversationTurnIdForMessage, o as createProductionConversationWorkOptions, s as createProductionSlackWebhookServices, t as appendAndEnqueueWebMessage, v as recordSkippedConversationMessage, w as isSlackMessageStopped, y as buildSlackInboundMessage } from "./web-input-Bkn-JGWd.js";
19
+ import { O as recordAutomationExecution, _ as markDispatchFailed, a as confirmDispatchMailboxAppend, d as getPluginDispatchProjection, f as isTerminalDispatchStatus, l as getDispatchRecord, o as createOrGetDispatch, p as listPendingDispatchMailboxAppends, s as getDispatchConversationId } from "./task-runner-COivEGS3.js";
20
+ import { c as listPendingAgentInvocationMailboxAppends, r as enqueueAgentInvocation } from "./work-vWPq9P5x.js";
21
+ import { s as coerceThreadConversationState } from "./thread-state-C7yyfiVM.js";
22
+ import { a as GET$4, i as publishAppHomeView, r as GET$5, t as receiveLocalOAuthCredential } from "./credential-sync-DbgAGIhd.js";
23
+ import { a as registerVercelPluginTaskDevConsumer, n as createVercelPluginTaskCallback, s as queueCallback } from "./task-queue-B5CERq_E.js";
24
+ import { t as processConversationWork } from "./worker-BgZog5Jp.js";
25
+ import { t as bindSpawnAgent } from "./spawn-DmwIhiNu.js";
26
26
  import { createRequire } from "node:module";
27
27
  import { pathToFileURL } from "node:url";
28
28
  import { Hono } from "hono";
@@ -1757,7 +1757,7 @@ async function presentSlackAnnotationDetails(event, teamId) {
1757
1757
  await missing();
1758
1758
  return;
1759
1759
  }
1760
- const entity = renderSlackObjectCard(annotationCard(annotation), conversationId).entity;
1760
+ const entity = renderSlackObjectCard(annotationCard(annotation), conversationId, "details").entity;
1761
1761
  if (!entity) {
1762
1762
  await missing();
1763
1763
  return;
@@ -1,4 +1,4 @@
1
- import { r as completeObject } from "./client-DucHsb6b.js";
1
+ import { r as completeObject } from "./client-BMqP14EE.js";
2
2
  import { r as defaultModelId } from "./model-profile-BwU8mqwD.js";
3
3
  import { P as briefCodeChangeSchema, R as parseBriefInput, d as conversationDetailReportSchema, p as conversationEventPageSchema } from "./conversation-DsuDtoYR.js";
4
4
  import { n as briefEntriesFromReportEvents, s as generateBrief, t as BRIEF_PROMPT } from "./prompt-D5RPLy92.js";
@@ -269,7 +269,7 @@ async function parseRunOptions(argv) {
269
269
  * `DATABASE_URL` at import, and `briefs pull` must work with only a token.
270
270
  */
271
271
  async function configuredDefaultModelId() {
272
- const { botConfig } = await import("./config-HqsfInxG.js").then((n) => n.r);
272
+ const { botConfig } = await import("./config-Q7ayKDYh.js").then((n) => n.r);
273
273
  return defaultModelId(botConfig);
274
274
  }
275
275
  function apiUrl(baseUrl, pathname) {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { t as createPluginCatalogRuntime } from "./registry-CIi9NkkR.js";
2
+ import { t as createPluginCatalogRuntime } from "./registry-RrIfDnkS.js";
3
3
  //#region src/chat/plugins/catalog-runtime.ts
4
4
  var catalog_runtime_exports = /* @__PURE__ */ __exportAll({ pluginCatalogRuntime: () => pluginCatalogRuntime });
5
5
  const pluginCatalogRuntime = createPluginCatalogRuntime();