@sentry/junior 0.226.0 → 0.228.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 (57) hide show
  1. package/dist/{agent-hooks-FUetyyLe.js → agent-hooks-DUQ3ASdp.js} +227 -12
  2. package/dist/{agent-runner-DEF7auSj.js → agent-runner-CIesujf5.js} +123 -77
  3. package/dist/api/schema.d.ts +203 -32
  4. package/dist/api/schema.js +3 -3
  5. package/dist/api.js +105 -67
  6. package/dist/{app-TVL42pGL.d.ts → app-BRZB3MuD.d.ts} +1 -1
  7. package/dist/app.d.ts +1 -1
  8. package/dist/app.js +275 -137
  9. package/dist/{briefs-Cb4T2BUI.js → briefs-BTrVMqUg.js} +4 -4
  10. package/dist/{catalog-runtime-BYGR3Dr4.js → catalog-runtime-NOBDOyJi.js} +1 -1
  11. package/dist/{checkpoint-CJe-dZFF.js → checkpoint-CzN3gXoB.js} +7 -7
  12. package/dist/cli/chat.js +13 -13
  13. package/dist/cli/check.js +3 -3
  14. package/dist/cli/main.js +1 -1
  15. package/dist/cli/plugins.js +3 -3
  16. package/dist/cli/snapshot-create.js +3 -3
  17. package/dist/cli/upgrade.js +3 -3
  18. package/dist/{client-C2WBBx7m.js → client-C6VUBzL_.js} +2 -2
  19. package/dist/{config-Bws6Rpsh.js → config-BLPaWN1Q.js} +2 -2
  20. package/dist/{context-Bplcgypl.js → context-0Et9iVSB.js} +1 -1
  21. package/dist/{conversation-DPbmIwjy.js → conversation-DOI6Y60M.js} +52 -24
  22. package/dist/{conversation-privacy-pCcW0a5Y.js → conversation-privacy-DJ88ECSq.js} +1 -1
  23. package/dist/{credential-sync-ibuNsMyl.js → credential-sync-OKs419AB.js} +14 -14
  24. package/dist/{executor-D36FWjcf.js → executor-DZVZBfmX.js} +1 -1
  25. package/dist/{history-DI9KJT3J.d.ts → history-H-SI5Dej.d.ts} +27 -1
  26. package/dist/images-D3x6EemU.js +82 -0
  27. package/dist/instrumentation.js +2 -2
  28. package/dist/{job-queue-2mFFDMHB.js → job-queue-BuSPM0cX.js} +1 -1
  29. package/dist/{logging-CvjMHRvg.js → logging-Blgn76r3.js} +1 -1
  30. package/dist/nitro.d.ts +1 -1
  31. package/dist/nitro.js +3 -3
  32. package/dist/{oauth-authorization-l4O1rXsL.js → oauth-authorization-t-NPqTNB.js} +1 -1
  33. package/dist/{oauth-callback-server-Ds8M5FFX.js → oauth-callback-server-BP7SgTcu.js} +2 -2
  34. package/dist/{pending-auth-DLNJbD8H.js → pending-auth-CXLwmDaG.js} +1 -1
  35. package/dist/{profile-dvV7PB7u.js → profile-a5xmeUHf.js} +4 -4
  36. package/dist/{prompt-DehgjkO5.js → prompt-9C-wUwwx.js} +1 -1
  37. package/dist/{registry-C6FHctIu.js → registry-BUbczT2k.js} +2 -2
  38. package/dist/{resolve-DqwGI9wq.js → resolve-3PhWSiEF.js} +2 -2
  39. package/dist/{runner-CzYEcB73.js → runner-CsnuKcsq.js} +10 -10
  40. package/dist/{sandbox-egress-signals-BZOv0fns.js → sandbox-egress-signals-D34sI4J6.js} +1 -1
  41. package/dist/{schema-BZg-xzfG.js → schema-CXmCvVLn.js} +1 -1
  42. package/dist/{skills-EhiVbjF4.js → skills-CLgyYrgF.js} +2 -2
  43. package/dist/{spawn-Ck3L0rEr.js → spawn-CS56i7Nm.js} +2 -2
  44. package/dist/{task-queue-TXhAWQwj.js → task-queue-C2sTDXqQ.js} +3 -3
  45. package/dist/{task-runner-axUJS1No.js → task-runner-uSodiP4v.js} +10 -10
  46. package/dist/{thread-state-CTuWhjru.js → thread-state-BurqeqMv.js} +5 -5
  47. package/dist/{turn-failure-response-csVoLOzx.js → turn-failure-response-Bshcqa0a.js} +9 -9
  48. package/dist/{turn-lifecycle-C1S6vELh.js → turn-lifecycle-foKlVl_T.js} +1 -1
  49. package/dist/{turn-session-routing-5RejBvit.js → turn-session-routing-DDUMJ2GY.js} +1 -1
  50. package/dist/{validation-q2PFxkTQ.js → validation-DZc56dXw.js} +1 -1
  51. package/dist/{version-ByLtIYyy.js → version-y4cRp5Y2.js} +1 -1
  52. package/dist/version.js +1 -1
  53. package/dist/{web-authorization-Biy8nsS7.js → web-authorization-BfVYx0t1.js} +6 -6
  54. package/dist/{web-input-DM9LaEdn.js → web-input-B6FZlrgg.js} +73 -41
  55. package/dist/{work-QrbHdXTc.js → work-Dy8sW9MZ.js} +7 -7
  56. package/dist/{worker-r17aopXW.js → worker-BH0RP7Hj.js} +5 -5
  57. package/package.json +5 -4
@@ -1,26 +1,26 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { C as resolveGatewayCredential, S as getGatewayApiKey, _ as findProviderError, b as isProviderRetryError, c as COMPACTION_SUMMARY_PREFIX, d as isCompactionSummaryText, f as renderCurrentInstruction, g as createProviderError, h as ProviderError, i as completeText, l as MODEL_HANDOFF_SUMMARY_PREFIX, m as escapeXml, n as GEN_AI_SERVER_ADDRESS, o as resolveGatewayModel, p as unwrapCurrentInstruction, r as completeObject, s as ACTIVE_TURN_COMPACTION_SUMMARY_PREFIX, t as GEN_AI_PROVIDER_NAME, u as hasCompactedConversationContext, v as getProviderErrorAttributes, x as MISSING_GATEWAY_CREDENTIALS_ERROR } from "./client-C2WBBx7m.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-CvjMHRvg.js";
2
+ import { C as resolveGatewayCredential, S as getGatewayApiKey, _ as findProviderError, b as isProviderRetryError, c as COMPACTION_SUMMARY_PREFIX, d as isCompactionSummaryText, f as renderCurrentInstruction, g as createProviderError, h as ProviderError, i as completeText, l as MODEL_HANDOFF_SUMMARY_PREFIX, m as escapeXml, n as GEN_AI_SERVER_ADDRESS, o as resolveGatewayModel, p as unwrapCurrentInstruction, r as completeObject, s as ACTIVE_TURN_COMPACTION_SUMMARY_PREFIX, t as GEN_AI_PROVIDER_NAME, u as hasCompactedConversationContext, v as getProviderErrorAttributes, x as MISSING_GATEWAY_CREDENTIALS_ERROR } from "./client-C6VUBzL_.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-Blgn76r3.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-pCcW0a5Y.js";
6
- import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig } from "./config-Bws6Rpsh.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-DJ88ECSq.js";
6
+ import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig } from "./config-BLPaWN1Q.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
- import { _ 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-Bplcgypl.js";
9
- import { A as tryWorkspaceRepoCheckoutPath, B as downloadPrivateSlackFile, C as invalidateReadySnapshot, D as SANDBOX_RUNTIME, E as setWorkspaceSnapshotBuild, Ft as saveObjectAnnotations, G as isDmChannel$1, Gt as getConversationMessageSearchStore, It as createPluginAnnotations, J as withSlackRetries, Jt as getSqlExecutor, K as normalizeSlackConversationId, Kt as getConversationStore, M as resolveChannelCapabilities, O as deleteWorkspaceSnapshotBuilders, Q as readActorIdentity, S as WorkspaceValidationError, T as setWorkspaceSnapshot, U as getSlackClient, V as getFilePermalink, W as isConversationScopedChannel, Wt as getConversationEventStore, _ as deleteWorkspace, an as hasAgentTurnUsage, at as STOP_WATCHING_TOOL_NAME, b as listWorkspaces, bt as createPluginLogger, c as getPluginTools, dn as parseDestination, dt as findMatchingWatches, ft as listWatches, g as createWorkspace, ht as getDashboardTaskLink, it as RESOURCE_WATCH_TOOL_SOURCE, j as workspaceRepoCheckoutPath, k as getWorkspaceSnapshotBuilder, l as getPluginUserPromptContributions, lt as createWatch, mt as getDashboardConversationLink, n as applyPluginFormatMarkdown, nt as RESOURCE_SUBSCRIPTION_DEFAULT_TTL_MS, ot as cancelSubscriptions, pn as sameDestination$1, pt as JUNIOR_THREAD_STATE_TTL_MS, qt as getDb, r as createPluginHookRunner, s as getPluginSystemPromptContributions, st as cancelWatch, tn as addAgentTurnUsage, tt as getSlackToolContext, u as getPlugins, ut as deliverWatch, v as getWorkspace, w as loadSnapshotsForProfile, x as updateWorkspace, y as getWorkspaceByName, z as SlackActionError } from "./agent-hooks-FUetyyLe.js";
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-DUQ3ASdp.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-D36FWjcf.js";
12
- import { F as briefLinkSchema, I as briefOutcomeStatusSchema, J as contextProvenance, L as conversationBriefSchema, X as instructionProvenanceFor, Y as instructionActors, Z as sameActorIdentity, j as messageCardRefSchema, z as KNOWN_CONVERSATION_EVENT_TYPES } from "./conversation-DPbmIwjy.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-DZVZBfmX.js";
12
+ import { $ as contextProvenance, B as briefLinkSchema, H as conversationBriefSchema, R as isVisionImageMediaType, V as briefOutcomeStatusSchema, W as KNOWN_CONVERSATION_EVENT_TYPES, et as instructionActors, j as messageCardRefSchema, nt as sameActorIdentity, tt as instructionProvenanceFor } from "./conversation-DOI6Y60M.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-C6FHctIu.js";
15
- import { n as pluginCatalogRuntime } from "./catalog-runtime-BYGR3Dr4.js";
16
- import { a as parseSkillInvocation, n as findSkillByName, r as loadSkillsByName, t as discoverSkills } from "./skills-EhiVbjF4.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-CJe-dZFF.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-dvV7PB7u.js";
19
- import { n as canReusePendingAuthLink, t as abandonReplacedPendingAuth } from "./pending-auth-DLNJbD8H.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-l4O1rXsL.js";
21
- import { r as EVENT_AUTHOR_ID } from "./prompt-DehgjkO5.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-DqwGI9wq.js";
23
- import { a as getVercelConversationWorkQueue, f as getTurnRequestDeadline, n as sendNextWorkspaceSnapshotJob, r as sendWorkspaceSnapshotJob } from "./job-queue-2mFFDMHB.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-BUbczT2k.js";
15
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-NOBDOyJi.js";
16
+ import { a as parseSkillInvocation, n as findSkillByName, r as loadSkillsByName, t as discoverSkills } from "./skills-CLgyYrgF.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-CzN3gXoB.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-a5xmeUHf.js";
19
+ import { n as canReusePendingAuthLink, t as abandonReplacedPendingAuth } from "./pending-auth-CXLwmDaG.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-t-NPqTNB.js";
21
+ import { r as EVENT_AUTHOR_ID } from "./prompt-9C-wUwwx.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-3PhWSiEF.js";
23
+ import { a as getVercelConversationWorkQueue, f as getTurnRequestDeadline, n as sendNextWorkspaceSnapshotJob, r as sendWorkspaceSnapshotJob } from "./job-queue-BuSPM0cX.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";
@@ -31,7 +31,7 @@ import { AsyncLocalStorage } from "node:async_hooks";
31
31
  import { z } from "zod";
32
32
  import { createHash, createHmac, randomBytes, randomUUID, timingSafeEqual } from "node:crypto";
33
33
  import { and, asc, desc, eq, gt, gte, inArray, isNotNull, isNull, lt, lte, ne, notExists, notInArray, or, sql } from "drizzle-orm";
34
- import { EgressAuthRequired, EgressPolicyDenied, PluginToolInputError, actorSchema, actorUserIdSchema, destinationSchema, destinationVisibilitySchema, eventMatchSchema, eventMatches, eventSchema, eventTypeSchema, missingToolAnnotationKeys, normalizeEventIdentifier, ownedObjectAnnotationSchema, pluginAuthorizationSchema, pluginCredentialHeaderTransformSchema, pluginCredentialResultSchema, pluginGrantSchema, pluginProviderAccountSchema, pluginStoredTokensSchema, slackDestinationSchema, sourceSchema, stableEventMatchKey, taskOutcomeSchema, watchResultSchema } from "@sentry/junior-plugin-api";
34
+ import { EgressAuthRequired, EgressPolicyDenied, PluginToolInputError, actorSchema, actorUserIdSchema, destinationSchema, destinationVisibilitySchema, eventMatchSchema, eventMatches, eventSchema, eventTypeSchema, missingToolAnnotationKeys, normalizeEventIdentifier, objectTypeSchema, ownedObjectAnnotationSchema, pluginAuthorizationSchema, pluginCredentialHeaderTransformSchema, pluginCredentialResultSchema, pluginGrantSchema, pluginProviderAccountSchema, pluginStoredTokensSchema, slackDestinationSchema, sourceSchema, stableEventMatchKey, taskOutcomeSchema, watchResultSchema } from "@sentry/junior-plugin-api";
35
35
  import { alias } from "drizzle-orm/pg-core";
36
36
  import { Agent, estimateContextTokens } from "@earendil-works/pi-agent-core";
37
37
  import fs from "node:fs/promises";
@@ -1845,19 +1845,6 @@ function buildTurnContextPrompt(params) {
1845
1845
  ].filter((section) => Boolean(section)).join("\n\n");
1846
1846
  }
1847
1847
  //#endregion
1848
- //#region src/chat/attachments/media.ts
1849
- const VISION_IMAGE_MEDIA_TYPES = /* @__PURE__ */ new Set([
1850
- "image/gif",
1851
- "image/jpeg",
1852
- "image/png",
1853
- "image/webp"
1854
- ]);
1855
- /** Report whether a media type is a raster image accepted by vision models. */
1856
- function isVisionImageMediaType(mediaType) {
1857
- const normalized = mediaType.split(";", 1)[0]?.trim().toLowerCase();
1858
- return normalized ? VISION_IMAGE_MEDIA_TYPES.has(normalized) : false;
1859
- }
1860
- //#endregion
1861
1848
  //#region src/chat/agent/prompt.ts
1862
1849
  /**
1863
1850
  * Per-run prompt assembly.
@@ -1990,6 +1977,14 @@ function buildUserTurnInput(args) {
1990
1977
  });
1991
1978
  continue;
1992
1979
  }
1980
+ if (attachment.attachmentId) userContentParts.push({
1981
+ type: "text",
1982
+ text: `Stored attachment: ${JSON.stringify({
1983
+ attachment_id: attachment.attachmentId,
1984
+ filename: attachment.filename,
1985
+ media_type: attachment.mediaType
1986
+ })}. Use loadAttachment to access the original file.`
1987
+ });
1993
1988
  if (isVisionImageMediaType(attachment.mediaType)) {
1994
1989
  if (!attachment.data) throw new Error("Image attachment is missing image data");
1995
1990
  userContentParts.push({
@@ -2688,7 +2683,11 @@ const payload = z.strictObject({
2688
2683
  title: z.strictObject({ text: z.string().min(1) }),
2689
2684
  display_id: z.string().optional(),
2690
2685
  display_type: z.string().optional(),
2691
- product_name: z.string().optional()
2686
+ product_name: z.string().optional(),
2687
+ product_icon: z.strictObject({
2688
+ url,
2689
+ alt_text: z.string().min(1)
2690
+ }).optional()
2692
2691
  }),
2693
2692
  custom_fields: z.array(customField).optional(),
2694
2693
  display_order: z.array(z.string()).optional()
@@ -5559,11 +5558,15 @@ function workspaceSnapshotFinishedEvent(input) {
5559
5558
  * every enabled plugin registration. Plugins may not use the `junior` namespace.
5560
5559
  */
5561
5560
  function getEventCatalog() {
5562
- const catalog = { [CORE_EVENT_NAMESPACE]: workspaceSnapshotEvents() };
5561
+ const catalog = { [CORE_EVENT_NAMESPACE]: { resourceTypes: [...workspaceSnapshotEvents().resourceTypes, {
5562
+ type: "timer",
5563
+ supportedEvents: ["timer.fired"],
5564
+ suggestedEvents: []
5565
+ }] } };
5563
5566
  for (const plugin of getPlugins()) {
5564
5567
  const registration = plugin.events;
5565
5568
  if (!registration || registration.isEnabled?.() === false) continue;
5566
- if (plugin.manifest.name === "junior") throw new Error(`Plugin "${CORE_EVENT_NAMESPACE}" cannot register events; that namespace is reserved for core Workspace snapshots`);
5569
+ if (plugin.manifest.name === "junior") throw new Error(`Plugin "${CORE_EVENT_NAMESPACE}" cannot register events; that namespace is reserved for core events`);
5567
5570
  catalog[plugin.manifest.name] = registration;
5568
5571
  }
5569
5572
  return catalog;
@@ -5596,7 +5599,7 @@ function isEventMailboxMetadata(value) {
5596
5599
  const event = record.event;
5597
5600
  if (!event || typeof event !== "object" || Array.isArray(event)) return false;
5598
5601
  const fields = event;
5599
- return typeof fields.eventKey === "string" && typeof fields.eventType === "string" && typeof fields.namespace === "string" && typeof fields.identifier === "string" && typeof fields.subscriptionId === "string" && (fields.trustedSummary === void 0 || typeof fields.trustedSummary === "string");
5602
+ return typeof fields.eventKey === "string" && typeof fields.eventType === "string" && typeof fields.namespace === "string" && typeof fields.identifier === "string" && typeof fields.subscriptionId === "string" && (fields.objectType === void 0 || objectTypeSchema.safeParse(fields.objectType).success) && (fields.trustedSummary === void 0 || typeof fields.trustedSummary === "string");
5600
5603
  }
5601
5604
  /** Build plain conversation mailbox input for one matched watch. */
5602
5605
  function createEventInboundMessage(input) {
@@ -5608,7 +5611,8 @@ function createEventInboundMessage(input) {
5608
5611
  namespace: input.event.namespace,
5609
5612
  identifier: input.event.identifier,
5610
5613
  subscriptionId: input.subscription.id,
5611
- trustedSummary: input.event.trustedSummary
5614
+ trustedSummary: input.event.trustedSummary,
5615
+ objectType: input.event.objectType
5612
5616
  }
5613
5617
  };
5614
5618
  return {
@@ -9945,7 +9949,8 @@ const listedResourceWatchSchema = z.object({
9945
9949
  events: z.array(z.string().min(1)).min(1),
9946
9950
  match: z.record(z.string(), z.unknown()).optional(),
9947
9951
  intent: z.string().min(1),
9948
- expiresAtMs: z.number().finite()
9952
+ expiresAtMs: z.number().finite(),
9953
+ firesAtMs: z.number().finite().optional()
9949
9954
  }).strict();
9950
9955
  const resultDataSchema$2 = z.object({ subscriptions: z.array(listedResourceWatchSchema) }).strict();
9951
9956
  const outputSchema$5 = juniorToolOutputSchema.merge(resultDataSchema$2);
@@ -9973,7 +9978,8 @@ function createListWatchesTool(context) {
9973
9978
  events: subscription.events,
9974
9979
  ...subscription.match ? { match: subscription.match } : void 0,
9975
9980
  intent: subscription.intent,
9976
- expiresAtMs: subscription.expiresAtMs
9981
+ expiresAtMs: subscription.expiresAtMs,
9982
+ firesAtMs: subscription.firesAtMs
9977
9983
  })) };
9978
9984
  }
9979
9985
  });
@@ -10083,6 +10089,7 @@ function createStopWatchingResourcesTool(context) {
10083
10089
  id
10084
10090
  });
10085
10091
  if (!stopped) throw new ToolInputError("Watch was not found in the current conversation.");
10092
+ if (stopped.status === "completed") throw new ToolInputError("Watch already completed; delivered input cannot be recalled.");
10086
10093
  stoppedIds = [stopped.id];
10087
10094
  } else {
10088
10095
  const subscriptions = await listWatches({ conversationId: context.conversationId });
@@ -10097,6 +10104,40 @@ function createStopWatchingResourcesTool(context) {
10097
10104
  });
10098
10105
  }
10099
10106
  //#endregion
10107
+ //#region src/chat/tools/watch-timer.ts
10108
+ /** Create one heartbeat-backed Watch in the current Conversation. */
10109
+ function createWatchTimerTool(context) {
10110
+ return zodTool({
10111
+ annotations: {
10112
+ destructiveHint: false,
10113
+ idempotentHint: true,
10114
+ openWorldHint: false,
10115
+ readOnlyHint: false
10116
+ },
10117
+ description: "Wake this conversation once after a delay so you can check back later. Returns immediately. Timing is approximate. Use watchEvents instead when you can watch for the event.",
10118
+ inputSchema: z.object({
10119
+ afterMs: z.number().int().positive().max(RESOURCE_SUBSCRIPTION_MAX_TTL_MS - 864e5).describe("Delay in milliseconds, up to 29 days."),
10120
+ intent: z.string().trim().min(1).max(1e3).describe("What to do when the timer fires.")
10121
+ }).strict(),
10122
+ outputSchema: z.object({
10123
+ id: z.string(),
10124
+ firesAtMs: z.number()
10125
+ }).strict(),
10126
+ async execute(input, options) {
10127
+ if (!options.toolCallId) throw new Error("Timer creation requires a tool-call identity");
10128
+ const watch = await createTimerWatch({
10129
+ ...input,
10130
+ conversationId: context.conversationId,
10131
+ toolCallId: options.toolCallId
10132
+ });
10133
+ return {
10134
+ id: watch.id,
10135
+ firesAtMs: watch.firesAtMs
10136
+ };
10137
+ }
10138
+ });
10139
+ }
10140
+ //#endregion
10100
10141
  //#region src/chat/tools/watch-events.ts
10101
10142
  function inputSchema(catalog) {
10102
10143
  return z.object({
@@ -10161,6 +10202,7 @@ function createWatchEventsTool(context, catalog) {
10161
10202
  inputSchema: inputSchema(catalog),
10162
10203
  outputSchema: outputSchema$2,
10163
10204
  async execute(input) {
10205
+ if (input.namespace === "junior" && input.resourceType === "timer") throw new ToolInputError("Use watchTimer to create a timer Watch.");
10164
10206
  const events = cleanStrings(input.events);
10165
10207
  for (const eventType of events) if (!pluginSupportsEvent(catalog, input.namespace, input.resourceType, eventType)) throw new ToolInputError(`Resource type "${input.namespace}:${input.resourceType}" does not support event "${eventType}".`);
10166
10208
  const intent = input.intent.trim();
@@ -10204,8 +10246,10 @@ function createWatchEventsTool(context, catalog) {
10204
10246
  //#region src/chat/tools/events.ts
10205
10247
  /** Build the complete resource-watch tool set for this runtime context. */
10206
10248
  function createEventTools(context, catalog) {
10249
+ const enabled = hasEventCatalogEntries(catalog);
10207
10250
  return {
10208
- ...hasEventCatalogEntries(catalog) ? {
10251
+ watchTimer: createWatchTimerTool(context),
10252
+ ...enabled ? {
10209
10253
  searchEventTypes: createSearchEventTypesTool(catalog),
10210
10254
  watchEvents: createWatchEventsTool(context, catalog)
10211
10255
  } : void 0,
@@ -12315,6 +12359,7 @@ function createScheduledAutomationTools(context) {
12315
12359
  }
12316
12360
  //#endregion
12317
12361
  //#region src/chat/slack/channel.ts
12362
+ const replySubtypeSchema = z.object({ subtype: z.string().optional() });
12318
12363
  /** List channel history using Slack-native, pre-validated timestamp bounds. */
12319
12364
  async function listChannelMessages(input) {
12320
12365
  const client = getSlackClient();
@@ -12366,7 +12411,10 @@ async function listThreadReplies(input) {
12366
12411
  cursor
12367
12412
  }), 3, { action: "conversations.replies" });
12368
12413
  const batch = response.messages ?? [];
12369
- replies.push(...batch);
12414
+ replies.push(...batch.map((reply) => ({
12415
+ ...reply,
12416
+ ...replySubtypeSchema.parse(reply)
12417
+ })));
12370
12418
  for (const reply of batch) if (typeof reply.ts === "string" && pendingTargets.size > 0) pendingTargets.delete(reply.ts);
12371
12419
  cursor = response.response_metadata?.next_cursor || void 0;
12372
12420
  if (!cursor || hasTargetMessages && pendingTargets.size === 0) break;
@@ -12381,15 +12429,14 @@ async function getConversationInfo(channelId) {
12381
12429
  idempotent: true
12382
12430
  })).channel;
12383
12431
  if (!channel || typeof channel !== "object") throw new Error(`Slack conversations.info returned no channel for ${channelId}`);
12384
- const record = channel;
12385
12432
  return {
12386
12433
  id: channelId,
12387
- ...typeof record.name === "string" && record.name ? { name: record.name } : void 0,
12388
- isChannel: record.is_channel === true,
12389
- isPrivate: record.is_private === true,
12390
- isIm: record.is_im === true,
12391
- isMpim: record.is_mpim === true,
12392
- ...typeof record.is_member === "boolean" ? { isMember: record.is_member } : void 0
12434
+ ...typeof channel.name === "string" && channel.name ? { name: channel.name } : void 0,
12435
+ isChannel: channel.is_channel === true,
12436
+ isPrivate: channel.is_private === true,
12437
+ isIm: channel.is_im === true,
12438
+ isMpim: channel.is_mpim === true,
12439
+ ...typeof channel.is_member === "boolean" ? { isMember: channel.is_member } : void 0
12393
12440
  };
12394
12441
  }
12395
12442
  /** Join a public channel so the bot can read history and threads there. */
@@ -14225,7 +14272,7 @@ function createSlackCanvasWriteTool(state) {
14225
14272
  //#endregion
14226
14273
  //#region src/chat/slack/tool-support/list/api.ts
14227
14274
  function normalizeKey(value) {
14228
- return value.toLowerCase().replace(/[^a-z0-9]+/g, "_");
14275
+ return (value ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "_");
14229
14276
  }
14230
14277
  /** Infer well-known column roles (title, completed, assignee, due date) from a list schema. */
14231
14278
  function inferListColumnMap(schema = []) {
@@ -14310,11 +14357,10 @@ async function createTodoList(name) {
14310
14357
  /** Read a Slack list schema and map its standard columns. */
14311
14358
  async function getListColumnMap(listId) {
14312
14359
  const client = getSlackClient();
14313
- const file = (await withSlackRetries(() => client.files.info({ file: listId }), 3, {
14360
+ return inferListColumnMap((await withSlackRetries(() => client.files.info({ file: listId }), 3, {
14314
14361
  action: "files.info",
14315
14362
  idempotent: true
14316
- })).file;
14317
- return inferListColumnMap(file?.list_metadata?.schema ?? []);
14363
+ })).file?.list_metadata?.schema);
14318
14364
  }
14319
14365
  /** Add one or more items to an existing Slack list. */
14320
14366
  async function addListItems(input) {
@@ -14817,25 +14863,6 @@ function renderAttachmentText(input) {
14817
14863
  return getAttachmentPayload(input).slice(0, MAX_ATTACHMENTS).map(renderAttachment).filter((line) => line.length > 0).map((line) => `[attachment] ${line}`).join("\n").slice(0, MAX_ATTACHMENT_TEXT_CHARS);
14818
14864
  }
14819
14865
  //#endregion
14820
- //#region src/chat/slack/attachments.ts
14821
- /** Save the vision summary for a stored Slack attachment. */
14822
- async function recordSlackAttachment(args) {
14823
- await args.db.db().update(juniorAttachments).set({ visionSummary: args.visionSummary }).where(and(eq(juniorAttachments.id, args.attachmentId), eq(juniorAttachments.conversationId, args.conversationId), isNull(juniorAttachments.deleteRequestedAt)));
14824
- }
14825
- /** Read a saved vision summary for one live attachment. */
14826
- async function readAttachmentVisionSummary(args) {
14827
- const [row] = await args.db.db().select({ visionSummary: juniorAttachments.visionSummary }).from(juniorAttachments).where(and(eq(juniorAttachments.id, args.attachmentId), eq(juniorAttachments.conversationId, args.conversationId), isNull(juniorAttachments.deleteRequestedAt)));
14828
- return row?.visionSummary;
14829
- }
14830
- /** Match live conversation attachments to Slack file ids. */
14831
- async function matchSlackAttachments(args) {
14832
- if (args.providerIds.length === 0) return [];
14833
- return await args.db.db().select({
14834
- id: juniorAttachments.id,
14835
- providerId: juniorAttachments.providerId
14836
- }).from(juniorAttachments).where(and(eq(juniorAttachments.conversationId, args.conversationId), eq(juniorAttachments.provider, "slack"), inArray(juniorAttachments.providerId, args.providerIds), isNull(juniorAttachments.deleteRequestedAt)));
14837
- }
14838
- //#endregion
14839
14866
  //#region src/chat/slack/tools/thread-read.ts
14840
14867
  const MAX_THREAD_READ_CHARS = 4e4;
14841
14868
  /**
@@ -15009,10 +15036,15 @@ function createSlackThreadReadTool(context, attachmentDeps) {
15009
15036
  }
15010
15037
  //#endregion
15011
15038
  //#region src/chat/slack/users.ts
15039
+ const profileFieldsSchema = z.object({ fields: z.record(z.string(), z.object({
15040
+ value: z.string().optional(),
15041
+ alt: z.string().optional(),
15042
+ label: z.string().optional()
15043
+ }).nullable()).nullish() });
15012
15044
  function normalizeUser(raw) {
15013
- const rawFields = raw.profile?.fields;
15045
+ const rawFields = profileFieldsSchema.parse(raw.profile ?? {}).fields;
15014
15046
  const profileFields = [];
15015
- if (rawFields && typeof rawFields === "object") for (const [id, field] of Object.entries(rawFields)) {
15047
+ if (rawFields) for (const [id, field] of Object.entries(rawFields)) {
15016
15048
  if (!field) continue;
15017
15049
  profileFields.push({
15018
15050
  id,
@@ -15061,7 +15093,7 @@ async function lookupSlackUserByEmail(email) {
15061
15093
  try {
15062
15094
  result = await withSlackRetries(() => client.users.lookupByEmail({ email }), 3, { action: "users.lookupByEmail" });
15063
15095
  } catch (error) {
15064
- if (error.apiError === "users_not_found") return null;
15096
+ if (error instanceof SlackActionError && error.apiError === "users_not_found") return null;
15065
15097
  throw error;
15066
15098
  }
15067
15099
  const user = result.user;
@@ -21869,7 +21901,7 @@ function createAgentRunner(execute, options) {
21869
21901
  const canBindSpawn = Boolean(bindSpawnAgent) && isExperimentalFeatureEnabled("subagents");
21870
21902
  return { run: async (run) => {
21871
21903
  const spawnAgent = bindSpawnAgent && canBindSpawn && !isAgentRunFeatureDisabled(run.disabledFeatures, "subagents") ? bindSpawnAgent(run) : void 0;
21872
- return await execute({
21904
+ const nextRun = {
21873
21905
  ...run,
21874
21906
  environment: {
21875
21907
  ...run.environment,
@@ -21880,7 +21912,21 @@ function createAgentRunner(execute, options) {
21880
21912
  ...run.durability,
21881
21913
  spawnAgent
21882
21914
  } } : void 0
21883
- }, streamFn);
21915
+ };
21916
+ if (run.instruction.storedAttachments?.length) {
21917
+ const { loadInputImages } = await import("./images-D3x6EemU.js").then((n) => n.n);
21918
+ const storage = nextRun.environment?.attachmentStorage;
21919
+ if (!storage) throw new Error("Attachment storage is unavailable.");
21920
+ nextRun.instruction = {
21921
+ ...run.instruction,
21922
+ attachments: await loadInputImages({
21923
+ attachments: run.instruction.storedAttachments,
21924
+ conversationId: run.conversationId,
21925
+ storage
21926
+ })
21927
+ };
21928
+ }
21929
+ return await execute(nextRun, streamFn);
21884
21930
  } };
21885
21931
  }
21886
21932
  async function waitForAgentSettlement(runPromise) {
@@ -21919,4 +21965,4 @@ async function runAgentWithTimeout(agentRunner, run, timeoutMs) {
21919
21965
  }
21920
21966
  }
21921
21967
  //#endregion
21922
- export { eventAutomationTriggerAvailable as $, renderTaskInput as $t, collectAttachmentGarbage as A, toolInvocationDestination as An, completeConversationWork as At, scheduledAutomationRunAttributes as B, recordConversationRetry as Bt, readPublicArtifact as C, slackEntitySchema as Cn, appendAndEnqueueInboundMessage as Ct, recordSlackAttachment as D, isVisionImageMediaType as Dn, clearConsumedConversationWake as Dt, readAttachmentVisionSummary as E, buildSteeringPiMessage as En, checkInConversationWork as Et, readSlackRawMessageContext as F, getConversation as Ft, listScheduledAutomationsForTeam as G, startConversationWork as Gt, isListedScheduledAutomation as H, removeActiveConversation as Ht, resolveSlackChannelIdFromMessage as I, getConversationWorkState as It, saveScheduledAutomation as J, CONVERSATION_WORK_STALE_ENQUEUE_MS as Jt, parseScheduledAutomationRow as K, stopConversationWork as Kt, resolveSlackChannelIdFromThreadId as L, hasRunnableConversationWork as Lt, requestAttachmentDeletion as M, shouldEmitDevAgentTrace as Mn, deadLetterAttempt as Mt, storeAttachment as N, getConfigDefaults as Nn, drainConversationMailbox as Nt, renderAttachmentText as O, RetryableDeliveryError as On, clearExpiredConversationLease as Ot, parseSlackThreadId as P, setConfigDefaults as Pn, ensureConversationWake as Pt, scheduledRunSchema as Q, isInvalidConversationRecordError as Qt, listThreadReplies as R, listActiveConversationIds as Rt, publicArtifactHeaders as S, removeReactionFromMessage as Sn, appendAndEnqueueExclusiveInboundMessage as St, lookupSlackUserProfile as T, createUserTokenStore as Tn, cancelHumanFacingPendingMessages as Tt, listPublicScheduledAutomationsForTeams as U, requestAnotherSlice as Ut, getNextRunAtMs as V, releaseConversationWork as Vt, listScheduledAutomations as W, requestConversationWork as Wt, scheduledRunId as X, hasRunnableConversationWork$1 as Xt, saveScheduledAutomationInLock as Y, hasConversationStop as Yt, withScheduledAutomationLock as Z, isFinalAttempt as Zt, putMcpStoredOAuthCredentials as _, normalizeSlackReplyMarkdown as _n, EVENT_WAIT_MS as _t, isExperimentalFeatureEnabled as a, SANDBOX_EGRESS_PROXY_PATH as an, getEventAutomation as at, readStats as b, addReactionToMessage as bn, eventGuidance as bt, createContextCompactor as c, consumeSandboxEgressPermissionDeniedSignal as cn, listPublicEventAutomationsForTeams as ct, deleteMcpAuthSession as d, formatProviderLabel as dn, createAgentInvocationSchema as dt, maybePostAutomatedTurnLimitNotice as en, effectiveTaskOutcomes as et, deleteMcpAuthSessionsForUserProvider as f, parseOAuthStatePayload as fn, AgentInvocationBusyError as ft, getMcpStoredOAuthCredentials as g, formatSlackLink as gn, ingestEvent as gt, getMcpAuthSession as h, escapeSlackMrkdwnText as hn, processWorkspaceSnapshotJob as ht, getExperimentalFeatures as i, shouldPropagateSandboxEgressTrace as in, findMatchingEventAutomations as it, readLiveAttachment as j, AuthorizationFlowDisabledError as jn, countPendingConversationMessages as jt, renderBlockText as k, actorFromRun as kn, completeConversationStop as kt, executeCredentialedEgressRequest as l, parseSandboxEgressCredentialToken as ln, agentBindingSchema as lt, deleteMcpStoredOAuthCredentials as m, startOAuthFlow as mn, getMcpProviderErrorAttributes as mt, runAgentWithTimeout as n, resolveSandboxEgressProviderForHost as nn, deleteEventAutomation as nt, setExperimentalFeatures as o, clearSandboxEgressSignals as on, listDeletedEventAutomationsCreatedBy as ot, deleteMcpServerSessionId as p, resolveBaseUrl as pn, AgentInvocationLimitError as pt, readScheduledAutomation as q, CONVERSATION_WORK_CHECK_IN_INTERVAL_MS as qt, experimental_exports as r, normalizeSandboxEgressTracePropagationDomains as rn, eventAutomationBelongsToUser as rt, executeAgentRun as s, consumeSandboxEgressAuthRequiredSignal as sn, listEventAutomationsCreatedBy as st, createAgentRunner as t, recordFinishedTurnForAutomatedLimit as tn, collectEventAutomationMatchKeys as tt, finalizeMcpAuthorization as u, sandboxEgressSignalsResponseSchema as un, agentInvocationSchema as ut, PluginCredentialFailureError as v, normalizeSlackStatusText as vn, isEventMailboxMetadata as vt, unpublishedArtifactHeaders as w, slackExternalRefIdSchema as wn, beginConversationResume as wt, resolvePluginOAuthAccount as x, postSlackMessage as xn, ackMessages as xt, latestProgressStatus as y, truncateStatusText as yn, getEventCatalog as yt, logScheduledAutomationRunSkipped as z, recordAttemptFailure as zt };
21968
+ export { collectEventAutomationMatchKeys as $, recordFinishedTurnForAutomatedLimit as $t, requestAttachmentDeletion as A, getConfigDefaults as An, deadLetterAttempt as At, isListedScheduledAutomation as B, removeActiveConversation as Bt, readPublicArtifact as C, createUserTokenStore as Cn, cancelHumanFacingPendingMessages as Ct, renderBlockText as D, toolInvocationDestination as Dn, completeConversationStop as Dt, renderAttachmentText as E, actorFromRun as En, clearExpiredConversationLease as Et, resolveSlackChannelIdFromThreadId as F, hasRunnableConversationWork as Ft, readScheduledAutomation as G, CONVERSATION_WORK_CHECK_IN_INTERVAL_MS as Gt, listScheduledAutomations as H, requestConversationWork as Ht, listThreadReplies as I, listActiveConversationIds as It, scheduledRunId as J, hasRunnableConversationWork$1 as Jt, saveScheduledAutomation as K, CONVERSATION_WORK_STALE_ENQUEUE_MS as Kt, logScheduledAutomationRunSkipped as L, recordAttemptFailure as Lt, parseSlackThreadId as M, ensureConversationWake as Mt, readSlackRawMessageContext as N, getConversation as Nt, collectAttachmentGarbage as O, AuthorizationFlowDisabledError as On, completeConversationWork as Ot, resolveSlackChannelIdFromMessage as P, getConversationWorkState as Pt, effectiveTaskOutcomes as Q, maybePostAutomatedTurnLimitNotice as Qt, scheduledAutomationRunAttributes as R, recordConversationRetry as Rt, publicArtifactHeaders as S, slackExternalRefIdSchema as Sn, beginConversationResume as St, lookupSlackUserProfile as T, RetryableDeliveryError as Tn, clearConsumedConversationWake as Tt, listScheduledAutomationsForTeam as U, startConversationWork as Ut, listPublicScheduledAutomationsForTeams as V, requestAnotherSlice as Vt, parseScheduledAutomationRow as W, stopConversationWork as Wt, scheduledRunSchema as X, isInvalidConversationRecordError as Xt, withScheduledAutomationLock as Y, isFinalAttempt as Yt, eventAutomationTriggerAvailable as Z, renderTaskInput as Zt, putMcpStoredOAuthCredentials as _, truncateStatusText as _n, getEventCatalog as _t, isExperimentalFeatureEnabled as a, consumeSandboxEgressAuthRequiredSignal as an, listEventAutomationsCreatedBy as at, readStats as b, removeReactionFromMessage as bn, appendAndEnqueueExclusiveInboundMessage as bt, createContextCompactor as c, sandboxEgressSignalsResponseSchema as cn, agentInvocationSchema as ct, deleteMcpAuthSession as d, resolveBaseUrl as dn, AgentInvocationLimitError as dt, resolveSandboxEgressProviderForHost as en, deleteEventAutomation as et, deleteMcpAuthSessionsForUserProvider as f, startOAuthFlow as fn, getMcpProviderErrorAttributes as ft, getMcpStoredOAuthCredentials as g, normalizeSlackStatusText as gn, isEventMailboxMetadata as gt, getMcpAuthSession as h, normalizeSlackReplyMarkdown as hn, EVENT_WAIT_MS as ht, getExperimentalFeatures as i, clearSandboxEgressSignals as in, listDeletedEventAutomationsCreatedBy as it, storeAttachment as j, setConfigDefaults as jn, drainConversationMailbox as jt, readLiveAttachment as k, shouldEmitDevAgentTrace as kn, countPendingConversationMessages as kt, executeCredentialedEgressRequest as l, formatProviderLabel as ln, createAgentInvocationSchema as lt, deleteMcpStoredOAuthCredentials as m, formatSlackLink as mn, ingestEvent as mt, runAgentWithTimeout as n, shouldPropagateSandboxEgressTrace as nn, findMatchingEventAutomations as nt, setExperimentalFeatures as o, consumeSandboxEgressPermissionDeniedSignal as on, listPublicEventAutomationsForTeams as ot, deleteMcpServerSessionId as p, escapeSlackMrkdwnText as pn, processWorkspaceSnapshotJob as pt, saveScheduledAutomationInLock as q, hasConversationStop as qt, experimental_exports as r, SANDBOX_EGRESS_PROXY_PATH as rn, getEventAutomation as rt, executeAgentRun as s, parseSandboxEgressCredentialToken as sn, agentBindingSchema as st, createAgentRunner as t, normalizeSandboxEgressTracePropagationDomains as tn, eventAutomationBelongsToUser as tt, finalizeMcpAuthorization as u, parseOAuthStatePayload as un, AgentInvocationBusyError as ut, PluginCredentialFailureError as v, addReactionToMessage as vn, eventGuidance as vt, unpublishedArtifactHeaders as w, buildSteeringPiMessage as wn, checkInConversationWork as wt, resolvePluginOAuthAccount as x, slackEntitySchema as xn, appendAndEnqueueInboundMessage as xt, latestProgressStatus as y, postSlackMessage as yn, ackMessages as yt, getNextRunAtMs as z, releaseConversationWork as zt };