@sentry/junior 0.208.0 → 0.209.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 (49) hide show
  1. package/dist/{agent-BfxfHsf1.js → agent-B_tHeZp6.js} +17 -17
  2. package/dist/{agent-hooks-CuGjLjmR.js → agent-hooks-DDJGkqlR.js} +6 -6
  3. package/dist/{agent-runner-Dz1PMKP0.js → agent-runner-CPBSl1Xv.js} +5 -5
  4. package/dist/api.js +15 -15
  5. package/dist/app.js +29 -29
  6. package/dist/{auth-pause-state-Bjoh8wCy.js → auth-pause-state-BZqtr-GX.js} +6 -6
  7. package/dist/{briefs-q_onrGmf.js → briefs-ZLRkWQQn.js} +2 -2
  8. package/dist/{catalog-runtime-D8YUMNhb.js → catalog-runtime-D89PJa84.js} +1 -1
  9. package/dist/{checkpoint-FKMcINix.js → checkpoint-DBX1KyOb.js} +6 -6
  10. package/dist/cli/chat.js +13 -13
  11. package/dist/cli/check.js +3 -3
  12. package/dist/cli/main.js +1 -1
  13. package/dist/cli/plugins.js +3 -3
  14. package/dist/cli/snapshot-create.js +3 -3
  15. package/dist/cli/upgrade.js +3 -3
  16. package/dist/{client-bRyPqwAV.js → client-7_NmRtoz.js} +54 -6
  17. package/dist/{config-EtF2uEaW.js → config-BPGL4uP-.js} +3 -3
  18. package/dist/{conversation-privacy-whGaV2TG.js → conversation-privacy-CgtRvwq8.js} +1 -1
  19. package/dist/{credential-sync-DM-EE1ey.js → credential-sync-DCYT7j8m.js} +20 -20
  20. package/dist/{execution-stats-C-f8zwMU.js → execution-stats-CyehCrCF.js} +4 -4
  21. package/dist/{executor-BW5qp0jC.js → executor-ctvBB7kO.js} +1 -1
  22. package/dist/instrumentation.js +2 -2
  23. package/dist/{job-queue-BIHNIEIX.js → job-queue-C1lIZ7DE.js} +1 -1
  24. package/dist/{logging-sNS84Yuu.js → logging-CHzH6JFD.js} +1 -1
  25. package/dist/nitro.js +3 -3
  26. package/dist/{oauth-callback-server-Co6D_yXP.js → oauth-callback-server-DQvCkP93.js} +2 -2
  27. package/dist/{pending-auth-CRJCt9Ux.js → pending-auth-D6c_jWmW.js} +2 -2
  28. package/dist/{profile-BfLMVhWo.js → profile-DPAFjrER.js} +4 -4
  29. package/dist/{registry-Cyww_jnC.js → registry-vUqDWPNS.js} +1 -1
  30. package/dist/{resolve-BApIFQXX.js → resolve-CToO52ls.js} +2 -2
  31. package/dist/{runner-C9okx4GL.js → runner-D3KdCdDY.js} +9 -9
  32. package/dist/{sandbox-egress-signals-BHfx0esj.js → sandbox-egress-signals-C_zy8cZG.js} +1 -1
  33. package/dist/{skills-DhL_wXEp.js → skills-BszTHE4F.js} +2 -2
  34. package/dist/{spawn-msnzfE8_.js → spawn-v7JJowIu.js} +2 -2
  35. package/dist/{stats-Cq5w_Awk.js → stats-t0wuykQW.js} +39 -31
  36. package/dist/{task-queue-JfmWmpjS.js → task-queue-TyHaXCpO.js} +3 -3
  37. package/dist/{task-runner-Cm0gXoLH.js → task-runner-DVDa7fAI.js} +7 -7
  38. package/dist/{thread-state-lw2QwQ-y.js → thread-state-DB_913ic.js} +5 -5
  39. package/dist/{turn-execution-C7K6lQp1.js → turn-execution-BRd4mQlB.js} +3 -3
  40. package/dist/{turn-lifecycle-DVlJLwB0.js → turn-lifecycle-CoNJoE-n.js} +1 -1
  41. package/dist/{usage-BMuAlKIW.js → usage-D5t1yT3R.js} +2 -2
  42. package/dist/{validation-BI-r3iQA.js → validation-sI1EnNoM.js} +1 -1
  43. package/dist/{version-s6smK6lP.js → version-BrgX_LoI.js} +1 -1
  44. package/dist/version.js +1 -1
  45. package/dist/{web-authorization-C9MxPvXX.js → web-authorization-BNCTTM5f.js} +1 -1
  46. package/dist/{web-input-CwVlaLd0.js → web-input-NEbUfS0Q.js} +4 -4
  47. package/dist/{work-BK0W1QAt.js → work-Dv5SHQ4C.js} +9 -9
  48. package/dist/{worker-D-WWKHQD.js → worker-1GzySfPG.js} +15 -10
  49. package/package.json +6 -6
@@ -1,28 +1,28 @@
1
- import { N as getMcpProviderErrorAttributes, Y as createUserTokenStore, a as deleteMcpAuthSession, d as putMcpStoredOAuthCredentials, h as resolvePluginOAuthAccount, i as finalizeMcpAuthorization, l as getMcpAuthSession, u as getMcpStoredOAuthCredentials, y as lookupSlackUserProfile } from "./agent-BfxfHsf1.js";
2
- import { m as escapeXml } from "./client-bRyPqwAV.js";
3
- import { L as toOptionalString, S as withLogContext, d as logInfo, f as logWarn, m as runBestEffort, u as logException, y as setTags } from "./logging-sNS84Yuu.js";
4
- import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig, o as getRuntimeMetadata } from "./config-EtF2uEaW.js";
1
+ import { N as getMcpProviderErrorAttributes, Y as createUserTokenStore, a as deleteMcpAuthSession, d as putMcpStoredOAuthCredentials, h as resolvePluginOAuthAccount, i as finalizeMcpAuthorization, l as getMcpAuthSession, u as getMcpStoredOAuthCredentials, y as lookupSlackUserProfile } from "./agent-B_tHeZp6.js";
2
+ import { m as escapeXml } from "./client-7_NmRtoz.js";
3
+ import { L as toOptionalString, S as withLogContext, d as logInfo, f as logWarn, m as runBestEffort, u as logException, y as setTags } from "./logging-CHzH6JFD.js";
4
+ import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig, o as getRuntimeMetadata } from "./config-BPGL4uP-.js";
5
5
  import { n as defaultModelId } from "./model-profile-CZmVoGdX.js";
6
6
  import { _ as parseSlackMessageTs, g as parseSlackUserId, l as isUserActor, s as createSlackResumeActor } from "./context-Bplcgypl.js";
7
- import { G as isDmChannel, H as getHeaderString, K as normalizeSlackConversationId, Kt as getSqlExecutor, Nt as buildSentryConversationUrl, U as getSlackClient, Wt as getConversationStore, mt as getDashboardConversationLink, nn as upsertIdentity, o as getPluginSlackConversationLink, on as requireSlackDestination, rn as upsertLinkedIdentity, z as SlackActionError } from "./agent-hooks-CuGjLjmR.js";
7
+ import { G as isDmChannel, H as getHeaderString, K as normalizeSlackConversationId, Kt as getSqlExecutor, Nt as buildSentryConversationUrl, U as getSlackClient, Wt as getConversationStore, mt as getDashboardConversationLink, nn as upsertIdentity, o as getPluginSlackConversationLink, on as requireSlackDestination, rn as upsertLinkedIdentity, z as SlackActionError } from "./agent-hooks-DDJGkqlR.js";
8
8
  import { i as homeDir } from "./package-discovery-7a9YqLhE.js";
9
- import { l as hasRequiredOAuthScope, n as buildOAuthTokenRequest, r as parseOAuthTokenResponse } from "./registry-Cyww_jnC.js";
10
- import { n as pluginCatalogRuntime } from "./catalog-runtime-D8YUMNhb.js";
11
- import { t as discoverSkills } from "./skills-DhL_wXEp.js";
12
- import { P as commitAcceptedReply, Q as hydrateConversationMessages, R as loadProjection, U as recordAuthenticationLinked, W as recordAuthorizationCompleted, d as persistWithRetry, dt as recordDeliveredAssistantMessage, ft as turnHasReply, i as abandonTurnRecord, it as buildConversationContext, lt as markConversationMessage, m as buildTurnErrorResponse, n as loadTurnCheckpoint, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, u as recordTurnSummary } from "./checkpoint-FKMcINix.js";
13
- import { E as acquireActiveLock, w as getStateAdapter } from "./profile-BfLMVhWo.js";
14
- import { Pt as requestConversationWork, c as parseSlackThreadId, d as resolveSlackChannelIdFromThreadId, l as readSlackRawMessageContext, u as resolveSlackChannelIdFromMessage, wt as ensureConversationWake } from "./stats-Cq5w_Awk.js";
15
- import { a as isPendingAuthLatestRequest, f as CooperativeTurnYieldError, g as isCooperativeTurnYieldError, i as getConversationPendingAuth, r as clearPendingAuth, s as getAssistantReplyText, x as markTurnFailed } from "./pending-auth-CRJCt9Ux.js";
16
- import { a as parseOAuthStatePayload, c as escapeSlackMrkdwnText, d as normalizeSlackStatusText, f as truncateStatusText, g as removeReactionFromMessage, h as postSlackMessage, i as formatProviderLabel, l as formatSlackLink, o as resolveBaseUrl, p as addReactionToMessage, u as normalizeSlackReplyMarkdown, v as RetryableDeliveryError } from "./agent-runner-Dz1PMKP0.js";
9
+ import { l as hasRequiredOAuthScope, n as buildOAuthTokenRequest, r as parseOAuthTokenResponse } from "./registry-vUqDWPNS.js";
10
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-D89PJa84.js";
11
+ import { t as discoverSkills } from "./skills-BszTHE4F.js";
12
+ import { P as commitAcceptedReply, Q as hydrateConversationMessages, R as loadProjection, U as recordAuthenticationLinked, W as recordAuthorizationCompleted, d as persistWithRetry, dt as recordDeliveredAssistantMessage, ft as turnHasReply, i as abandonTurnRecord, it as buildConversationContext, lt as markConversationMessage, m as buildTurnErrorResponse, n as loadTurnCheckpoint, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, u as recordTurnSummary } from "./checkpoint-DBX1KyOb.js";
13
+ import { E as acquireActiveLock, w as getStateAdapter } from "./profile-DPAFjrER.js";
14
+ import { Pt as requestConversationWork, c as parseSlackThreadId, d as resolveSlackChannelIdFromThreadId, l as readSlackRawMessageContext, u as resolveSlackChannelIdFromMessage, wt as ensureConversationWake } from "./stats-t0wuykQW.js";
15
+ import { a as isPendingAuthLatestRequest, f as CooperativeTurnYieldError, g as isCooperativeTurnYieldError, i as getConversationPendingAuth, r as clearPendingAuth, s as getAssistantReplyText, x as markTurnFailed } from "./pending-auth-D6c_jWmW.js";
16
+ import { a as parseOAuthStatePayload, c as escapeSlackMrkdwnText, d as normalizeSlackStatusText, f as truncateStatusText, g as removeReactionFromMessage, h as postSlackMessage, i as formatProviderLabel, l as formatSlackLink, o as resolveBaseUrl, p as addReactionToMessage, u as normalizeSlackReplyMarkdown, v as RetryableDeliveryError } from "./agent-runner-CPBSl1Xv.js";
17
17
  import { t as getVercelConversationWorkQueue } from "./vercel-queue-DIkVcfK4.js";
18
- import { a as getTurnRequestDeadline } from "./job-queue-BIHNIEIX.js";
19
- import { i as resolveTurnSessionRouting, n as scheduleSessionCompletedPluginTasks } from "./task-runner-Cm0gXoLH.js";
20
- import { n as getTurnLifecycle } from "./turn-lifecycle-DVlJLwB0.js";
21
- import { n as executeTurn, t as AgentRunError } from "./turn-execution-C7K6lQp1.js";
22
- import { c as configValueSchema, n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState, t as getLocationConfigurationService } from "./thread-state-lw2QwQ-y.js";
23
- import { a as requireTurnFailureEventId, c as getTurnUserMessageId, d as buildDeliveredTurnStatePatch, l as getTurnUserReplyAttachmentContext, n as persistAuthPauseTurnState, o as getInterruptionMarker, r as finalizeFailedTurnReplyWithEvent, s as getTurnUserMessage, u as getTurnUserSlackMessageTs } from "./auth-pause-state-Bjoh8wCy.js";
18
+ import { a as getTurnRequestDeadline } from "./job-queue-C1lIZ7DE.js";
19
+ import { i as resolveTurnSessionRouting, n as scheduleSessionCompletedPluginTasks } from "./task-runner-DVDa7fAI.js";
20
+ import { n as getTurnLifecycle } from "./turn-lifecycle-CoNJoE-n.js";
21
+ import { n as executeTurn, t as AgentRunError } from "./turn-execution-BRd4mQlB.js";
22
+ import { c as configValueSchema, n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState, t as getLocationConfigurationService } from "./thread-state-DB_913ic.js";
23
+ import { a as requireTurnFailureEventId, c as getTurnUserMessageId, d as buildDeliveredTurnStatePatch, l as getTurnUserReplyAttachmentContext, n as persistAuthPauseTurnState, o as getInterruptionMarker, r as finalizeFailedTurnReplyWithEvent, s as getTurnUserMessage, u as getTurnUserSlackMessageTs } from "./auth-pause-state-BZqtr-GX.js";
24
24
  import { n as relayLocalOAuthCallback } from "./oauth-relay-CdCnu80W.js";
25
- import { n as deleteWebAuthorization } from "./web-authorization-C9MxPvXX.js";
25
+ import { n as deleteWebAuthorization } from "./web-authorization-BNCTTM5f.js";
26
26
  import path from "node:path";
27
27
  import { z } from "zod";
28
28
  import { createHmac, createSecretKey, timingSafeEqual } from "node:crypto";
@@ -1,7 +1,7 @@
1
- import { f as logWarn } from "./logging-sNS84Yuu.js";
2
- import { Gt as getDb } from "./agent-hooks-CuGjLjmR.js";
3
- import { s as juniorAutomationExecutions, w as juniorConversations } from "./executor-BW5qp0jC.js";
4
- import { n as agentTurnCostUsd, r as agentTurnTotalTokens } from "./usage-BMuAlKIW.js";
1
+ import { f as logWarn } from "./logging-CHzH6JFD.js";
2
+ import { Gt as getDb } from "./agent-hooks-DDJGkqlR.js";
3
+ import { s as juniorAutomationExecutions, w as juniorConversations } from "./executor-ctvBB7kO.js";
4
+ import { n as agentTurnCostUsd, r as agentTurnTotalTokens } from "./usage-D5t1yT3R.js";
5
5
  import { and, asc, count, desc, eq, gte, inArray, lte, max, or, sql } from "drizzle-orm";
6
6
  //#region src/api/conversations/aggregate.ts
7
7
  function usageTokenValue(source, field) {
@@ -1,5 +1,5 @@
1
1
  import { h as startSpan } from "./sentry-CD3SdJl-.js";
2
- import "./config-EtF2uEaW.js";
2
+ import "./config-BPGL4uP-.js";
3
3
  import { n as juniorDestinations, r as timestamptz } from "./destinations-BeBiJeEM.js";
4
4
  import { AsyncLocalStorage } from "node:async_hooks";
5
5
  import { getTableColumns, sql } from "drizzle-orm";
@@ -1,6 +1,6 @@
1
- import { M as getDeploymentServiceVersion, N as getDeploymentTelemetryAttributes } from "./logging-sNS84Yuu.js";
1
+ import { M as getDeploymentServiceVersion, N as getDeploymentTelemetryAttributes } from "./logging-CHzH6JFD.js";
2
2
  import { a as getClient, c as init, g as vercelAIIntegration, o as getGlobalScope, y as withStreamedSpan } from "./sentry-CD3SdJl-.js";
3
- import { n as getCurrentConversationPrivacy } from "./conversation-privacy-whGaV2TG.js";
3
+ import { n as getCurrentConversationPrivacy } from "./conversation-privacy-CgtRvwq8.js";
4
4
  import { t as consumePrivateTraceResultMarker } from "./private-trace-result-BLvBjy_e.js";
5
5
  //#region src/chat/sentry-payload-filter.ts
6
6
  const PAYLOAD_ATTRIBUTE_KEYS = /* @__PURE__ */ new Set([
@@ -1,4 +1,4 @@
1
- import { a as getChatConfig } from "./config-EtF2uEaW.js";
1
+ import { a as getChatConfig } from "./config-BPGL4uP-.js";
2
2
  import { a as signQueueMessage, i as QUEUE_SIGNATURE_MAX_AGE_MS, o as verifyQueueMessage, s as createVercelQueueClient } from "./vercel-queue-DIkVcfK4.js";
3
3
  import { AsyncLocalStorage } from "node:async_hooks";
4
4
  import { z } from "zod";
@@ -1,5 +1,5 @@
1
1
  import { d as setTag, f as setUser, h as startSpan, i as getActiveSpan, l as logger, n as captureMessage, p as spanToJSON, s as getTraceData, t as captureException, v as withScope } from "./sentry-CD3SdJl-.js";
2
- import { t as JUNIOR_VERSION } from "./version-s6smK6lP.js";
2
+ import { t as JUNIOR_VERSION } from "./version-BrgX_LoI.js";
3
3
  import path from "node:path";
4
4
  import { styleText } from "node:util";
5
5
  import { ConfigError, configureSync, getConfig, getLogger } from "@logtape/logtape";
package/dist/nitro.js CHANGED
@@ -1,9 +1,9 @@
1
- import { A as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, D as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, E as JUNIOR_HEARTBEAT_ROUTE, O as JUNIOR_RETENTION_CRON_SCHEDULE, T as JUNIOR_HEARTBEAT_CRON_SCHEDULE, k as JUNIOR_RETENTION_ROUTE, w as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE } from "./logging-sNS84Yuu.js";
1
+ import { A as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, D as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, E as JUNIOR_HEARTBEAT_ROUTE, O as JUNIOR_RETENTION_CRON_SCHEDULE, T as JUNIOR_HEARTBEAT_CRON_SCHEDULE, k as JUNIOR_RETENTION_ROUTE, w as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE } from "./logging-CHzH6JFD.js";
2
2
  import { d as resolvePackageDir, t as discoverInstalledPluginPackageContent, u as isValidPackageName } from "./package-discovery-7a9YqLhE.js";
3
3
  import { n as resolveConversationWorkQueueTopic } from "./vercel-queue-DIkVcfK4.js";
4
- import { t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-BIHNIEIX.js";
4
+ import { t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-C1lIZ7DE.js";
5
5
  import { a as pluginRuntimeRegistrationsFromPluginSet, r as pluginCatalogConfigFromPluginSet } from "./plugins-egKWjgue.js";
6
- import { t as PLUGIN_TASK_QUEUE_TOPIC } from "./task-queue-JfmWmpjS.js";
6
+ import { t as PLUGIN_TASK_QUEUE_TOPIC } from "./task-queue-TyHaXCpO.js";
7
7
  import { n as loadPluginSetFromModule, r as resolvePluginModule } from "./plugin-module-BKGOXca2.js";
8
8
  import path from "node:path";
9
9
  import { cpSync, existsSync, mkdirSync, readdirSync, statSync } from "node:fs";
@@ -1,5 +1,5 @@
1
- import { Y as createUserTokenStore } from "./agent-BfxfHsf1.js";
2
- import { a as GET, n as syncLocalOAuthCredential, r as GET$1 } from "./credential-sync-DM-EE1ey.js";
1
+ import { Y as createUserTokenStore } from "./agent-B_tHeZp6.js";
2
+ import { a as GET, n as syncLocalOAuthCredential, r as GET$1 } from "./credential-sync-DCYT7j8m.js";
3
3
  import { createServer } from "node:http";
4
4
  //#region src/chat/local/oauth-callback-server.ts
5
5
  const LOCAL_OAUTH_TIMEOUT_MS = 6e5;
@@ -1,5 +1,5 @@
1
- import { i as abandonTurnRecord, yt as extractAssistantText } from "./checkpoint-FKMcINix.js";
2
- import { Kt as buildDeterministicTurnId } from "./stats-Cq5w_Awk.js";
1
+ import { i as abandonTurnRecord, yt as extractAssistantText } from "./checkpoint-DBX1KyOb.js";
2
+ import { qt as buildDeterministicTurnId } from "./stats-t0wuykQW.js";
3
3
  //#region src/chat/runtime/turn.ts
4
4
  /** Classified Slack turn failure carrying the owning Sentry capture outward. */
5
5
  var ConversationTurnBoundaryError = class extends Error {
@@ -1,7 +1,7 @@
1
- import { w as toOptionalTrimmed } from "./client-bRyPqwAV.js";
2
- import { _ as setSpanAttributes, v as setSpanStatus } from "./logging-sNS84Yuu.js";
3
- import { a as getChatConfig } from "./config-EtF2uEaW.js";
4
- import { n as pluginCatalogRuntime } from "./catalog-runtime-D8YUMNhb.js";
1
+ import { w as toOptionalTrimmed } from "./client-7_NmRtoz.js";
2
+ import { _ as setSpanAttributes, v as setSpanStatus } from "./logging-CHzH6JFD.js";
3
+ import { a as getChatConfig } from "./config-BPGL4uP-.js";
4
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-D89PJa84.js";
5
5
  import { createHash } from "node:crypto";
6
6
  import { createMemoryState } from "@chat-adapter/state-memory";
7
7
  import { createRedisState } from "@chat-adapter/state-redis";
@@ -1,4 +1,4 @@
1
- import { _ as setSpanAttributes, d as logInfo, f as logWarn } from "./logging-sNS84Yuu.js";
1
+ import { _ as setSpanAttributes, d as logInfo, f as logWarn } from "./logging-CHzH6JFD.js";
2
2
  import { i as credentialUserSubjectId } from "./context-Bplcgypl.js";
3
3
  import { n as normalizePluginPackageNames, o as pluginRoots, t as discoverInstalledPluginPackageContent } from "./package-discovery-7a9YqLhE.js";
4
4
  import path from "node:path";
@@ -1,5 +1,5 @@
1
- import { C as withSpan, _ as setSpanAttributes } from "./logging-sNS84Yuu.js";
2
- import { A as sleep, P as SANDBOX_WORKSPACE_ROOT, r as isStale, t as create, u as isSandboxUnavailableError, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand } from "./profile-BfLMVhWo.js";
1
+ import { C as withSpan, _ as setSpanAttributes } from "./logging-CHzH6JFD.js";
2
+ import { A as sleep, P as SANDBOX_WORKSPACE_ROOT, r as isStale, t as create, u as isSandboxUnavailableError, v as getVercelSandboxCredentials, w as getStateAdapter, x as runNonInteractiveCommand } from "./profile-DPAFjrER.js";
3
3
  import { z } from "zod";
4
4
  import { FileSystem, Sandbox } from "@vercel/sandbox";
5
5
  //#region src/chat/sandbox/resources.ts
@@ -1,13 +1,13 @@
1
- import { p as authorizationId } from "./agent-BfxfHsf1.js";
2
- import { S as withLogContext, u as logException, y as setTags } from "./logging-sNS84Yuu.js";
1
+ import { p as authorizationId } from "./agent-B_tHeZp6.js";
2
+ import { S as withLogContext, u as logException, y as setTags } from "./logging-CHzH6JFD.js";
3
3
  import { t as credentialContextForActor } from "./context-Bplcgypl.js";
4
- import { Ht as getConversationEventStore, Wt as getConversationStore } from "./agent-hooks-CuGjLjmR.js";
5
- import { $ as persistConversationMessages, P as commitAcceptedReply, Q as hydrateConversationMessages, R as loadProjection, W as recordAuthorizationCompleted, d as persistWithRetry, dt as recordDeliveredAssistantMessage, it as buildConversationContext, jt as stripRuntimeTurnContext, lt as markConversationMessage, pt as upsertConversationMessage, r as saveTurnCheckpoint, ut as normalizeConversationText } from "./checkpoint-FKMcINix.js";
6
- import { S as startActiveTurn, s as getAssistantReplyText, x as markTurnFailed } from "./pending-auth-CRJCt9Ux.js";
7
- import { n as scheduleSessionCompletedPluginTasks, t as processPluginTask } from "./task-runner-Cm0gXoLH.js";
8
- import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-DVlJLwB0.js";
9
- import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-lw2QwQ-y.js";
10
- import { d as buildDeliveredTurnStatePatch, r as finalizeFailedTurnReplyWithEvent, t as completeAuthPauseTurn } from "./auth-pause-state-Bjoh8wCy.js";
4
+ import { Ht as getConversationEventStore, Wt as getConversationStore } from "./agent-hooks-DDJGkqlR.js";
5
+ import { $ as persistConversationMessages, P as commitAcceptedReply, Q as hydrateConversationMessages, R as loadProjection, W as recordAuthorizationCompleted, d as persistWithRetry, dt as recordDeliveredAssistantMessage, it as buildConversationContext, jt as stripRuntimeTurnContext, lt as markConversationMessage, pt as upsertConversationMessage, r as saveTurnCheckpoint, ut as normalizeConversationText } from "./checkpoint-DBX1KyOb.js";
6
+ import { S as startActiveTurn, s as getAssistantReplyText, x as markTurnFailed } from "./pending-auth-D6c_jWmW.js";
7
+ import { n as scheduleSessionCompletedPluginTasks, t as processPluginTask } from "./task-runner-DVDa7fAI.js";
8
+ import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-CoNJoE-n.js";
9
+ import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-DB_913ic.js";
10
+ import { d as buildDeliveredTurnStatePatch, r as finalizeFailedTurnReplyWithEvent, t as completeAuthPauseTurn } from "./auth-pause-state-BZqtr-GX.js";
11
11
  import { randomUUID } from "node:crypto";
12
12
  import { createLocalSource, localDestinationSchema } from "@sentry/junior-plugin-api";
13
13
  //#region src/chat/local/runner.ts
@@ -1,4 +1,4 @@
1
- import { J as sandboxEgressSignalsResponseSchema } from "./agent-BfxfHsf1.js";
1
+ import { J as sandboxEgressSignalsResponseSchema } from "./agent-B_tHeZp6.js";
2
2
  //#region src/chat/local/sandbox-egress-signals.ts
3
3
  const SANDBOX_EGRESS_SIGNALS_PATH = "/api/internal/sandbox-egress/signals";
4
4
  const LOCAL_DEV_SERVER_TIMEOUT_MS = 1e3;
@@ -1,7 +1,7 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { f as logWarn } from "./logging-sNS84Yuu.js";
2
+ import { f as logWarn } from "./logging-CHzH6JFD.js";
3
3
  import { s as skillRoots } from "./package-discovery-7a9YqLhE.js";
4
- import { n as pluginCatalogRuntime } from "./catalog-runtime-D8YUMNhb.js";
4
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-D89PJa84.js";
5
5
  import path from "node:path";
6
6
  import { z } from "zod";
7
7
  import fs from "node:fs/promises";
@@ -1,6 +1,6 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { C as toolInvocationDestination, y as actorFromRun } from "./agent-runner-Dz1PMKP0.js";
3
- import { n as createAndEnqueueAgentInvocation } from "./work-BK0W1QAt.js";
2
+ import { C as toolInvocationDestination, y as actorFromRun } from "./agent-runner-CPBSl1Xv.js";
3
+ import { n as createAndEnqueueAgentInvocation } from "./work-Dv5SHQ4C.js";
4
4
  //#region src/chat/agent-invocations/spawn.ts
5
5
  var spawn_exports = /* @__PURE__ */ __exportAll({ bindSpawnAgent: () => bindSpawnAgent });
6
6
  /** Bind a Run's Actor and credentials to new Agent invocations. */
@@ -1,11 +1,11 @@
1
- import { F as isRecord$1, I as toOptionalNumber, L as toOptionalString } from "./logging-sNS84Yuu.js";
2
- import { a as getChatConfig } from "./config-EtF2uEaW.js";
1
+ import { F as isRecord$1, I as toOptionalNumber, L as toOptionalString } from "./logging-CHzH6JFD.js";
2
+ import { a as getChatConfig } from "./config-BPGL4uP-.js";
3
3
  import { _ as parseSlackMessageTs, d as parseStoredSlackActor, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-Bplcgypl.js";
4
- import { Gt as getDb, J as withSlackRetries, U as getSlackClient, Wt as getConversationStore, an as parseDestination, pt as JUNIOR_THREAD_STATE_TTL_MS, sn as sameDestination, u as getPlugins } from "./agent-hooks-CuGjLjmR.js";
4
+ import { Gt as getDb, J as withSlackRetries, U as getSlackClient, Wt as getConversationStore, an as parseDestination, pt as JUNIOR_THREAD_STATE_TTL_MS, sn as sameDestination, u as getPlugins } from "./agent-hooks-DDJGkqlR.js";
5
5
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
6
- import { S as juniorAttachments, a as juniorSchedulerRuns, c as juniorStats, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorConversations } from "./executor-BW5qp0jC.js";
7
- import { o as ToolInputError } from "./usage-BMuAlKIW.js";
8
- import { C as getDefaultRedisStateAdapterFor, w as getStateAdapter } from "./profile-BfLMVhWo.js";
6
+ import { S as juniorAttachments, a as juniorSchedulerRuns, c as juniorStats, l as juniorEventAutomations, o as juniorSchedulerTasks, w as juniorConversations } from "./executor-ctvBB7kO.js";
7
+ import { o as ToolInputError } from "./usage-D5t1yT3R.js";
8
+ import { C as getDefaultRedisStateAdapterFor, w as getStateAdapter } from "./profile-DPAFjrER.js";
9
9
  import "./vercel-queue-DIkVcfK4.js";
10
10
  import { z } from "zod";
11
11
  import { createHash, randomUUID } from "node:crypto";
@@ -138,6 +138,9 @@ const storedInboundMessageSchema = z.object({
138
138
  function conversationKey(conversationId) {
139
139
  return `${CONVERSATION_PREFIX}:${conversationId}`;
140
140
  }
141
+ function conversationStopKey(conversationId) {
142
+ return `${CONVERSATION_PREFIX}:stop:${conversationId}`;
143
+ }
141
144
  function indexLockKey(indexKey) {
142
145
  return `${indexKey}:lock`;
143
146
  }
@@ -249,8 +252,6 @@ function normalizeExecution(conversationId, value) {
249
252
  const inboundMessageIds = Array.isArray(value.inboundMessageIds) ? uniqueStrings(value.inboundMessageIds.map((id) => typeof id === "string" ? id : void 0).filter((id) => Boolean(id))) : [];
250
253
  const lease = normalizeLease(value.lease);
251
254
  const runId = toOptionalString(value.runId);
252
- const normalizedStop = normalizeStop(value.stop);
253
- const stop = normalizedStop?.runId === runId ? normalizedStop : void 0;
254
255
  return {
255
256
  status: status === "idle" && lease ? "running" : status === "idle" && pendingMessages.length > 0 ? "pending" : status,
256
257
  inboundMessageIds: uniqueStrings([...inboundMessageIds, ...pendingMessages.map((message) => message.inboundMessageId)]),
@@ -262,7 +263,6 @@ function normalizeExecution(conversationId, value) {
262
263
  lastProgressAtMs: toOptionalNumber(value.lastProgressAtMs),
263
264
  retryCount: toOptionalNumber(value.retryCount),
264
265
  runId,
265
- stop,
266
266
  updatedAtMs: toOptionalNumber(value.updatedAtMs)
267
267
  };
268
268
  }
@@ -577,7 +577,7 @@ async function writeConversation(state, lock, conversation) {
577
577
  ...conversation,
578
578
  execution
579
579
  };
580
- if (!await state.extendLock(lock, CONVERSATION_MUTATION_LOCK_TTL_MS)) throw new ConversationMutationFencedError(next.conversationId);
580
+ await fenceConversationMutation(state, lock, next.conversationId);
581
581
  const hasSlackDestination = next.destination?.platform === "slack";
582
582
  const stored = {
583
583
  ...next,
@@ -870,6 +870,16 @@ async function ackMessages$1(args) {
870
870
  function isHumanFacingMessage(message) {
871
871
  return message.source === "web" || message.source === "slack";
872
872
  }
873
+ async function readConversationStop(state, conversationId) {
874
+ return normalizeStop(await state.get(conversationStopKey(conversationId)));
875
+ }
876
+ async function fenceConversationMutation(state, lock, conversationId) {
877
+ if (!await state.extendLock(lock, CONVERSATION_MUTATION_LOCK_TTL_MS)) throw new ConversationMutationFencedError(conversationId);
878
+ }
879
+ /** Return whether one Conversation run has a durable stop request. */
880
+ async function hasConversationStop(args) {
881
+ return (await readConversationStop(await getConnectedState(args.state), args.conversationId))?.runId === args.runId;
882
+ }
873
883
  /** Persist a stop request for the current run without process affinity. */
874
884
  async function stopConversationWork$1(args) {
875
885
  const nowMs = args.nowMs ?? now$1();
@@ -878,14 +888,15 @@ async function stopConversationWork$1(args) {
878
888
  if (!current || !hasRunnableWork(current)) return { status: "no_work" };
879
889
  const runId = current.execution.runId ?? randomUUID();
880
890
  const inboundMessageIds = current.execution.pendingMessages.filter(isHumanFacingMessage).map((message) => message.inboundMessageId);
881
- await writeConversation(state, lock, withExecutionUpdate(current, {
891
+ if (current.execution.runId === void 0) await writeConversation(state, lock, withExecutionUpdate(current, {
882
892
  ...current.execution,
883
- runId,
884
- stop: {
885
- inboundMessageIds,
886
- runId
887
- }
893
+ runId
888
894
  }, nowMs));
895
+ await fenceConversationMutation(state, lock, args.conversationId);
896
+ await state.set(conversationStopKey(args.conversationId), {
897
+ inboundMessageIds,
898
+ runId
899
+ }, JUNIOR_THREAD_STATE_TTL_MS);
889
900
  return {
890
901
  runId,
891
902
  status: "requested"
@@ -901,7 +912,7 @@ async function completeConversationStop$1(args) {
901
912
  status: "lost_lease",
902
913
  removedInboundMessageIds: []
903
914
  };
904
- const stop = current.execution.stop;
915
+ const stop = await readConversationStop(state, args.conversationId);
905
916
  if (!stop || stop.runId !== args.runId) return {
906
917
  status: "none",
907
918
  removedInboundMessageIds: []
@@ -916,9 +927,10 @@ async function completeConversationStop$1(args) {
916
927
  await writeConversation(state, lock, withExecutionUpdate(current, {
917
928
  ...current.execution,
918
929
  lastEnqueuedAtMs: pendingMessages.length === 0 ? void 0 : current.execution.lastEnqueuedAtMs,
919
- pendingMessages,
920
- stop: void 0
930
+ pendingMessages
921
931
  }, nowMs));
932
+ await fenceConversationMutation(state, lock, args.conversationId);
933
+ await state.delete(conversationStopKey(args.conversationId));
922
934
  return {
923
935
  status: "cleared",
924
936
  removedInboundMessageIds
@@ -951,8 +963,7 @@ async function cancelHumanFacingPendingMessages$1(args) {
951
963
  pendingMessages,
952
964
  retryCount: becomesIdle ? 0 : current.execution.retryCount,
953
965
  runId: becomesIdle ? void 0 : current.execution.runId,
954
- status: becomesIdle ? "idle" : current.execution.status,
955
- stop: becomesIdle ? void 0 : current.execution.stop
966
+ status: becomesIdle ? "idle" : current.execution.status
956
967
  }, nowMs));
957
968
  return { cancelledInboundMessageIds };
958
969
  });
@@ -1017,8 +1028,7 @@ async function recordConversationRetry$1(args) {
1017
1028
  retryCount: count,
1018
1029
  pendingMessages: stopped ? [] : current.execution.pendingMessages,
1019
1030
  runId: stopped ? void 0 : current.execution.runId,
1020
- status: stopped ? "failed" : "paused",
1021
- stop: stopped ? void 0 : current.execution.stop
1031
+ status: stopped ? "failed" : "paused"
1022
1032
  }, nowMs));
1023
1033
  return stopped ? "stopped" : "recorded";
1024
1034
  });
@@ -1030,7 +1040,8 @@ async function completeConversationWork$1(args) {
1030
1040
  const current = await readConversation(state, args.conversationId);
1031
1041
  if (!current || current.execution.lease?.token !== args.leaseToken) return "lost_lease";
1032
1042
  const hasPending = pendingMessages(current).length > 0;
1033
- const needsRun = current.execution.status === "paused" || args.resumeIfStopped === true && current.execution.stop !== void 0;
1043
+ const stopped = args.resumeIfStopped === true && (await readConversationStop(state, args.conversationId))?.runId === current.execution.runId;
1044
+ const needsRun = current.execution.status === "paused" || stopped;
1034
1045
  const runnable = needsRun || hasPending;
1035
1046
  await writeConversation(state, lock, withExecutionUpdate(current, {
1036
1047
  ...current.execution,
@@ -1038,8 +1049,7 @@ async function completeConversationWork$1(args) {
1038
1049
  status: needsRun ? "paused" : hasPending ? "pending" : "idle",
1039
1050
  lastProgressAtMs: args.madeProgress === false ? current.execution.lastProgressAtMs : nowMs,
1040
1051
  retryCount: runnable || args.madeProgress === false ? current.execution.retryCount : 0,
1041
- runId: runnable ? current.execution.runId : void 0,
1042
- stop: runnable ? current.execution.stop : void 0
1052
+ runId: runnable ? current.execution.runId : void 0
1043
1053
  }, nowMs));
1044
1054
  return runnable ? "pending" : "completed";
1045
1055
  });
@@ -1116,8 +1126,7 @@ async function deadLetterAttempt$1(args) {
1116
1126
  ...current.execution,
1117
1127
  lease: void 0,
1118
1128
  status: runnable ? "pending" : "failed",
1119
- runId: runnable ? current.execution.runId : void 0,
1120
- stop: runnable ? current.execution.stop : void 0
1129
+ runId: runnable ? current.execution.runId : void 0
1121
1130
  }, nowMs));
1122
1131
  return runnable ? "pending" : "failed";
1123
1132
  });
@@ -1137,8 +1146,7 @@ async function clearExpiredConversationLease$1(args) {
1137
1146
  retryCount,
1138
1147
  pendingMessages: stopped ? [] : current.execution.pendingMessages,
1139
1148
  runId: stopped ? void 0 : current.execution.runId,
1140
- status: stopped ? "failed" : "paused",
1141
- stop: stopped ? void 0 : current.execution.stop
1149
+ status: stopped ? "failed" : "paused"
1142
1150
  }, nowMs));
1143
1151
  return stopped ? "stopped" : "requeued";
1144
1152
  });
@@ -2669,4 +2677,4 @@ async function readStats(start, end) {
2669
2677
  return await getDb().select().from(juniorStats).where(and(gte(juniorStats.date, start), lte(juniorStats.date, end))).orderBy(asc(juniorStats.date), asc(juniorStats.namespace), asc(juniorStats.metric), asc(juniorStats.name));
2670
2678
  }
2671
2679
  //#endregion
2672
- export { workspaceSnapshotFinishedEvent as $, eventAutomationTriggerAvailable as A, recordConversationRetry as At, createEventAutomation as B, isFinalAttempt as Bt, SCHEDULED_AUTOMATION_SYSTEM_ACTOR as C, drainConversationMailbox as Ct, eventAutomationMatchesDestination as D, hasRunnableConversationWork as Dt, eventAutomationListToolResultSchema as E, getConversationWorkState as Et, effectiveTaskOutcomes as F, startConversationWork as Ft, listDeletedEventAutomationsCreatedBy as G, buildDeterministicAssistantMessageId as Gt, eventAutomationBelongsToUser as H, injectContinuationToolName as Ht, moveTaskOutcomes as I, stopConversationWork as It, listPublicEventAutomationsForTeams as J, listEventAutomationsCreatedBy as K, buildDeterministicTurnId as Kt, resolveTaskOutcomes as L, CONVERSATION_WORK_CHECK_IN_INTERVAL_MS as Lt, requireEventAutomationSlackContext as M, removeActiveConversation as Mt, requireSupportedEventAutomationTrigger as N, requestAnotherSlice as Nt, eventAutomationToolResult as O, listActiveConversationIds as Ot, writableEventAutomation as P, requestConversationWork as Pt, WORKSPACE_SNAPSHOT_READY_EVENT as Q, taskOutcomeInputSchema as R, CONVERSATION_WORK_STALE_ENQUEUE_MS as Rt, withScheduledAutomationLock as S, deadLetterAttempt as St, compactEventAutomation as T, getConversation as Tt, findMatchingEventAutomations as U, juniorToolOutputSchema as Ut, deleteEventAutomation as V, isInvalidConversationRecordError as Vt, getEventAutomation as W, makeStructuredToolOutput as Wt, getEventCatalog as X, saveEventAutomation as Y, WORKSPACE_SNAPSHOT_FAILED_EVENT as Z, parseScheduledAutomationRow as _, clearConsumedConversationWake as _t, requestAttachmentDeletion as a, normalizeCatalogEventIdentifier as at, saveScheduledAutomationInLock as b, completeConversationWork as bt, parseSlackThreadId as c, registeredEventTypeSchema as ct, resolveSlackChannelIdFromThreadId as d, ackMessages as dt, workspaceSnapshotWatch as et, createScheduledAutomation as f, appendAndEnqueueExclusiveInboundMessage as ft, listScheduledAutomationsForTeam as g, checkInConversationWork as gt, listScheduledAutomations as h, cancelHumanFacingPendingMessages as ht, readLiveAttachment as i, hasPluginEventCatalogEntries as it, registeredEventAutomationTriggerSchema as j, releaseConversationWork as jt, eventAutomationToolResultSchema as k, recordAttemptFailure as kt, readSlackRawMessageContext as l, registeredResourceTypeSchema as lt, listPublicScheduledAutomationsForTeams as m, beginConversationResume as mt, readStats as n, eventNamespaceSchema as nt, storeAttachment as o, pluginSupportsEvent as ot, isListedScheduledAutomation as p, appendAndEnqueueInboundMessage as pt, listEventAutomationsForTeam as q, collectAttachmentGarbage as r, hasEventCatalogEntries as rt, storeAttachments as s, registeredEventMatchSchema as st, incrementStat as t, eventGuidance as tt, resolveSlackChannelIdFromMessage as u, requireSupportedEventMatch as ut, readScheduledAutomation as v, clearExpiredConversationLease as vt, scheduledRunSchema as w, ensureConversationWake as wt, scheduledRunId as x, countPendingConversationMessages as xt, saveScheduledAutomation as y, completeConversationStop as yt, collectEventAutomationMatchKeys as z, hasRunnableConversationWork$1 as zt };
2680
+ export { workspaceSnapshotFinishedEvent as $, eventAutomationTriggerAvailable as A, recordConversationRetry as At, createEventAutomation as B, hasRunnableConversationWork$1 as Bt, SCHEDULED_AUTOMATION_SYSTEM_ACTOR as C, drainConversationMailbox as Ct, eventAutomationMatchesDestination as D, hasRunnableConversationWork as Dt, eventAutomationListToolResultSchema as E, getConversationWorkState as Et, effectiveTaskOutcomes as F, startConversationWork as Ft, listDeletedEventAutomationsCreatedBy as G, makeStructuredToolOutput as Gt, eventAutomationBelongsToUser as H, isInvalidConversationRecordError as Ht, moveTaskOutcomes as I, stopConversationWork as It, listPublicEventAutomationsForTeams as J, listEventAutomationsCreatedBy as K, buildDeterministicAssistantMessageId as Kt, resolveTaskOutcomes as L, CONVERSATION_WORK_CHECK_IN_INTERVAL_MS as Lt, requireEventAutomationSlackContext as M, removeActiveConversation as Mt, requireSupportedEventAutomationTrigger as N, requestAnotherSlice as Nt, eventAutomationToolResult as O, listActiveConversationIds as Ot, writableEventAutomation as P, requestConversationWork as Pt, WORKSPACE_SNAPSHOT_READY_EVENT as Q, taskOutcomeInputSchema as R, CONVERSATION_WORK_STALE_ENQUEUE_MS as Rt, withScheduledAutomationLock as S, deadLetterAttempt as St, compactEventAutomation as T, getConversation as Tt, findMatchingEventAutomations as U, injectContinuationToolName as Ut, deleteEventAutomation as V, isFinalAttempt as Vt, getEventAutomation as W, juniorToolOutputSchema as Wt, getEventCatalog as X, saveEventAutomation as Y, WORKSPACE_SNAPSHOT_FAILED_EVENT as Z, parseScheduledAutomationRow as _, clearConsumedConversationWake as _t, requestAttachmentDeletion as a, normalizeCatalogEventIdentifier as at, saveScheduledAutomationInLock as b, completeConversationWork as bt, parseSlackThreadId as c, registeredEventTypeSchema as ct, resolveSlackChannelIdFromThreadId as d, ackMessages as dt, workspaceSnapshotWatch as et, createScheduledAutomation as f, appendAndEnqueueExclusiveInboundMessage as ft, listScheduledAutomationsForTeam as g, checkInConversationWork as gt, listScheduledAutomations as h, cancelHumanFacingPendingMessages as ht, readLiveAttachment as i, hasPluginEventCatalogEntries as it, registeredEventAutomationTriggerSchema as j, releaseConversationWork as jt, eventAutomationToolResultSchema as k, recordAttemptFailure as kt, readSlackRawMessageContext as l, registeredResourceTypeSchema as lt, listPublicScheduledAutomationsForTeams as m, beginConversationResume as mt, readStats as n, eventNamespaceSchema as nt, storeAttachment as o, pluginSupportsEvent as ot, isListedScheduledAutomation as p, appendAndEnqueueInboundMessage as pt, listEventAutomationsForTeam as q, buildDeterministicTurnId as qt, collectAttachmentGarbage as r, hasEventCatalogEntries as rt, storeAttachments as s, registeredEventMatchSchema as st, incrementStat as t, eventGuidance as tt, resolveSlackChannelIdFromMessage as u, requireSupportedEventMatch as ut, readScheduledAutomation as v, clearExpiredConversationLease as vt, scheduledRunSchema as w, ensureConversationWake as wt, scheduledRunId as x, countPendingConversationMessages as xt, saveScheduledAutomation as y, completeConversationStop as yt, collectEventAutomationMatchKeys as z, hasConversationStop as zt };
@@ -1,6 +1,6 @@
1
- import { f as logWarn } from "./logging-sNS84Yuu.js";
1
+ import { f as logWarn } from "./logging-CHzH6JFD.js";
2
2
  import { a as signQueueMessage, i as QUEUE_SIGNATURE_MAX_AGE_MS, o as verifyQueueMessage, s as createVercelQueueClient } from "./vercel-queue-DIkVcfK4.js";
3
- import { o as runWithTurnRequestDeadline } from "./job-queue-BIHNIEIX.js";
3
+ import { o as runWithTurnRequestDeadline } from "./job-queue-C1lIZ7DE.js";
4
4
  import { z } from "zod";
5
5
  import { createHash } from "node:crypto";
6
6
  import { handleCallback, registerDevConsumer } from "@vercel/queue";
@@ -110,7 +110,7 @@ function pluginTaskCallback() {
110
110
  maxDeliveries: PLUGIN_TASK_MAX_DELIVERIES,
111
111
  onRejected: logPluginTaskQueueMessageRejected,
112
112
  run: async (message) => {
113
- const { processPluginTask } = await import("./task-runner-Cm0gXoLH.js").then((n) => n.r);
113
+ const { processPluginTask } = await import("./task-runner-DVDa7fAI.js").then((n) => n.r);
114
114
  await processPluginTask(message);
115
115
  },
116
116
  topic: PLUGIN_TASK_QUEUE_TOPIC,
@@ -1,12 +1,12 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
2
  import { _ as parseSlackMessageTs, r as credentialSubjectSchema } from "./context-Bplcgypl.js";
3
- import { At as createPluginConversationEvents, Gt as getDb, Q as readActorIdentity, Wt as getConversationStore, _t as createPluginState, bt as createPluginLogger, p as coreTaskRegistrations, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, vt as createPluginEmbedder, yt as createPluginModel } from "./agent-hooks-CuGjLjmR.js";
3
+ import { At as createPluginConversationEvents, Gt as getDb, Q as readActorIdentity, Wt as getConversationStore, _t as createPluginState, bt as createPluginLogger, p as coreTaskRegistrations, pt as JUNIOR_THREAD_STATE_TTL_MS, u as getPlugins, vt as createPluginEmbedder, yt as createPluginModel } from "./agent-hooks-DDJGkqlR.js";
4
4
  import { K as sameActorIdentity } from "./conversation-AA4R1VUn.js";
5
- import { Dt as isToolResultError, Ot as isToolResultMessage, Q as hydrateConversationMessages, bt as getPiMessageRole, jt as stripRuntimeTurnContext, kt as normalizeToolNameFromResult, s as getTurnRecord, wt as instructionTextForProjection } from "./checkpoint-FKMcINix.js";
6
- import { w as getStateAdapter } from "./profile-BfLMVhWo.js";
7
- import { u as recordAutomationExecution } from "./execution-stats-C-f8zwMU.js";
8
- import { r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-lw2QwQ-y.js";
9
- import { i as pluginTaskParamsSchema, o as sendVercelPluginTask, r as pluginTaskId } from "./task-queue-JfmWmpjS.js";
5
+ import { Dt as isToolResultError, Ot as isToolResultMessage, Q as hydrateConversationMessages, bt as getPiMessageRole, jt as stripRuntimeTurnContext, kt as normalizeToolNameFromResult, s as getTurnRecord, wt as instructionTextForProjection } from "./checkpoint-DBX1KyOb.js";
6
+ import { w as getStateAdapter } from "./profile-DPAFjrER.js";
7
+ import { u as recordAutomationExecution } from "./execution-stats-CyehCrCF.js";
8
+ import { r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-DB_913ic.js";
9
+ import { i as pluginTaskParamsSchema, o as sendVercelPluginTask, r as pluginTaskId } from "./task-queue-TyHaXCpO.js";
10
10
  import { z } from "zod";
11
11
  import { createHash } from "node:crypto";
12
12
  import { destinationSchema, destinationVisibilitySchema, isSlackDestination, pluginRunContextSchema, replyAttributionSchema, sourceSchema, taskOutcomeSchema } from "@sentry/junior-plugin-api";
@@ -345,7 +345,7 @@ function slackSourceForDestination(args) {
345
345
  * Reads parent Conversations when this Conversation has no Destination.
346
346
  */
347
347
  async function resolveConversationRouting(args) {
348
- const conversationStore = args.conversationStore ?? (await import("./agent-hooks-CuGjLjmR.js").then((n) => n.Vt)).getConversationStore();
348
+ const conversationStore = args.conversationStore ?? (await import("./agent-hooks-DDJGkqlR.js").then((n) => n.Vt)).getConversationStore();
349
349
  const chain = await loadConversationChain(args.conversationId, conversationStore);
350
350
  let destination;
351
351
  let source;
@@ -1,9 +1,9 @@
1
- import { F as isRecord, I as toOptionalNumber, L as toOptionalString } from "./logging-sNS84Yuu.js";
2
- import { Gt as getDb, pt as JUNIOR_THREAD_STATE_TTL_MS } from "./agent-hooks-CuGjLjmR.js";
1
+ import { F as isRecord, I as toOptionalNumber, L as toOptionalString } from "./logging-CHzH6JFD.js";
2
+ import { Gt as getDb, pt as JUNIOR_THREAD_STATE_TTL_MS } from "./agent-hooks-DDJGkqlR.js";
3
3
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
4
- import { u as juniorLocationConfigurations } from "./executor-BW5qp0jC.js";
5
- import { $ as persistConversationMessages } from "./checkpoint-FKMcINix.js";
6
- import { w as getStateAdapter } from "./profile-BfLMVhWo.js";
4
+ import { u as juniorLocationConfigurations } from "./executor-ctvBB7kO.js";
5
+ import { $ as persistConversationMessages } from "./checkpoint-DBX1KyOb.js";
6
+ import { w as getStateAdapter } from "./profile-DPAFjrER.js";
7
7
  import { z } from "zod";
8
8
  import { randomUUID } from "node:crypto";
9
9
  import { and, eq, sql } from "drizzle-orm";
@@ -1,6 +1,6 @@
1
- import { Ht as getConversationEventStore } from "./agent-hooks-CuGjLjmR.js";
2
- import { n as runAgentWithTimeout } from "./agent-runner-Dz1PMKP0.js";
3
- import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-DVlJLwB0.js";
1
+ import { Ht as getConversationEventStore } from "./agent-hooks-DDJGkqlR.js";
2
+ import { n as runAgentWithTimeout } from "./agent-runner-CPBSl1Xv.js";
3
+ import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-CoNJoE-n.js";
4
4
  //#region src/chat/runtime/turn-execution.ts
5
5
  /** An error thrown while the agent advances a Run. */
6
6
  var AgentRunError = class extends Error {
@@ -1,4 +1,4 @@
1
- import { Ht as getConversationEventStore } from "./agent-hooks-CuGjLjmR.js";
1
+ import { Ht as getConversationEventStore } from "./agent-hooks-DDJGkqlR.js";
2
2
  //#region src/chat/conversations/turn-lifecycle.ts
3
3
  /** Persist correlated turn lifecycle facts with retry-safe terminal exclusion. */
4
4
  var ConversationTurnLifecycleService = class {
@@ -1,5 +1,5 @@
1
- import { f as logWarn } from "./logging-sNS84Yuu.js";
2
- import { n as botConfig } from "./config-EtF2uEaW.js";
1
+ import { f as logWarn } from "./logging-CHzH6JFD.js";
2
+ import { n as botConfig } from "./config-BPGL4uP-.js";
3
3
  import { P as usageSchema } from "./conversation-AA4R1VUn.js";
4
4
  const TITLE_PROMPTS = {
5
5
  conversation: [
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { n as pluginCatalogRuntime } from "./catalog-runtime-D8YUMNhb.js";
2
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-D89PJa84.js";
3
3
  import { isDeepStrictEqual } from "node:util";
4
4
  //#region src/chat/plugins/validation.ts
5
5
  var validation_exports = /* @__PURE__ */ __exportAll({
@@ -1,5 +1,5 @@
1
1
  //#region package.json
2
- var version = "0.208.0";
2
+ var version = "0.209.0";
3
3
  //#endregion
4
4
  //#region src/version.ts
5
5
  /** Installed Junior package version, or `unknown` when package metadata is unavailable. */
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- import { t as JUNIOR_VERSION } from "./version-s6smK6lP.js";
1
+ import { t as JUNIOR_VERSION } from "./version-BrgX_LoI.js";
2
2
  export { JUNIOR_VERSION };
@@ -1,4 +1,4 @@
1
- import { w as getStateAdapter } from "./profile-BfLMVhWo.js";
1
+ import { w as getStateAdapter } from "./profile-DPAFjrER.js";
2
2
  import { randomUUID } from "node:crypto";
3
3
  //#region src/chat/conversations/web-authorization.ts
4
4
  const WEB_AUTHORIZATION_PREFIX = "junior:web_authorization:v1";
@@ -1,8 +1,8 @@
1
- import { f as logWarn } from "./logging-sNS84Yuu.js";
2
- import { s as getSlackBotToken } from "./config-EtF2uEaW.js";
1
+ import { f as logWarn } from "./logging-CHzH6JFD.js";
2
+ import { s as getSlackBotToken } from "./config-BPGL4uP-.js";
3
3
  import "./context-Bplcgypl.js";
4
- import { K as normalizeSlackConversationId, Wt as getConversationStore } from "./agent-hooks-CuGjLjmR.js";
5
- import { Kt as buildDeterministicTurnId, c as parseSlackThreadId, ft as appendAndEnqueueExclusiveInboundMessage, pt as appendAndEnqueueInboundMessage } from "./stats-Cq5w_Awk.js";
4
+ import { K as normalizeSlackConversationId, Wt as getConversationStore } from "./agent-hooks-DDJGkqlR.js";
5
+ import { c as parseSlackThreadId, ft as appendAndEnqueueExclusiveInboundMessage, pt as appendAndEnqueueInboundMessage, qt as buildDeterministicTurnId } from "./stats-t0wuykQW.js";
6
6
  import { t as healthReportSchema } from "./reporting-schema-DosTN__Q.js";
7
7
  import { z } from "zod";
8
8
  import { createHash } from "node:crypto";
@@ -1,13 +1,13 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { A as createAgentInvocationSchema, M as AgentInvocationLimitError, O as agentBindingSchema, Q as AuthorizationFlowDisabledError, f as PluginCredentialFailureError, j as AgentInvocationBusyError, k as agentInvocationSchema } from "./agent-BfxfHsf1.js";
3
- import { Ht as getConversationEventStore, Kt as getSqlExecutor, Wt as getConversationStore } from "./agent-hooks-CuGjLjmR.js";
4
- import { f as juniorAgentBindings, p as juniorAgentInvocations } from "./executor-BW5qp0jC.js";
5
- import { B as openConversationProjection, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, xt as getTerminalAssistantMessages } from "./checkpoint-FKMcINix.js";
6
- import { pt as appendAndEnqueueInboundMessage } from "./stats-Cq5w_Awk.js";
7
- import { _ as isTurnInputCommitLostError, h as getConversationTurnBoundaryError, p as TurnInputCommitLostError, s as getAssistantReplyText } from "./pending-auth-CRJCt9Ux.js";
8
- import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-DVlJLwB0.js";
9
- import { n as executeTurn, t as AgentRunError } from "./turn-execution-C7K6lQp1.js";
10
- import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState } from "./thread-state-lw2QwQ-y.js";
2
+ import { A as createAgentInvocationSchema, M as AgentInvocationLimitError, O as agentBindingSchema, Q as AuthorizationFlowDisabledError, f as PluginCredentialFailureError, j as AgentInvocationBusyError, k as agentInvocationSchema } from "./agent-B_tHeZp6.js";
3
+ import { Ht as getConversationEventStore, Kt as getSqlExecutor, Wt as getConversationStore } from "./agent-hooks-DDJGkqlR.js";
4
+ import { f as juniorAgentBindings, p as juniorAgentInvocations } from "./executor-ctvBB7kO.js";
5
+ import { B as openConversationProjection, o as failTurnRecord, r as saveTurnCheckpoint, s as getTurnRecord, xt as getTerminalAssistantMessages } from "./checkpoint-DBX1KyOb.js";
6
+ import { pt as appendAndEnqueueInboundMessage } from "./stats-t0wuykQW.js";
7
+ import { _ as isTurnInputCommitLostError, h as getConversationTurnBoundaryError, p as TurnInputCommitLostError, s as getAssistantReplyText } from "./pending-auth-D6c_jWmW.js";
8
+ import { t as ConversationTurnLifecycleService } from "./turn-lifecycle-CoNJoE-n.js";
9
+ import { n as executeTurn, t as AgentRunError } from "./turn-execution-BRd4mQlB.js";
10
+ import { n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState } from "./thread-state-DB_913ic.js";
11
11
  import { z } from "zod";
12
12
  import { createHash } from "node:crypto";
13
13
  import { and, asc, count, eq, inArray } from "drizzle-orm";