@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.
- package/dist/{agent-hooks-FUetyyLe.js → agent-hooks-DUQ3ASdp.js} +227 -12
- package/dist/{agent-runner-DEF7auSj.js → agent-runner-CIesujf5.js} +123 -77
- package/dist/api/schema.d.ts +203 -32
- package/dist/api/schema.js +3 -3
- package/dist/api.js +105 -67
- package/dist/{app-TVL42pGL.d.ts → app-BRZB3MuD.d.ts} +1 -1
- package/dist/app.d.ts +1 -1
- package/dist/app.js +275 -137
- package/dist/{briefs-Cb4T2BUI.js → briefs-BTrVMqUg.js} +4 -4
- package/dist/{catalog-runtime-BYGR3Dr4.js → catalog-runtime-NOBDOyJi.js} +1 -1
- package/dist/{checkpoint-CJe-dZFF.js → checkpoint-CzN3gXoB.js} +7 -7
- package/dist/cli/chat.js +13 -13
- package/dist/cli/check.js +3 -3
- package/dist/cli/main.js +1 -1
- package/dist/cli/plugins.js +3 -3
- package/dist/cli/snapshot-create.js +3 -3
- package/dist/cli/upgrade.js +3 -3
- package/dist/{client-C2WBBx7m.js → client-C6VUBzL_.js} +2 -2
- package/dist/{config-Bws6Rpsh.js → config-BLPaWN1Q.js} +2 -2
- package/dist/{context-Bplcgypl.js → context-0Et9iVSB.js} +1 -1
- package/dist/{conversation-DPbmIwjy.js → conversation-DOI6Y60M.js} +52 -24
- package/dist/{conversation-privacy-pCcW0a5Y.js → conversation-privacy-DJ88ECSq.js} +1 -1
- package/dist/{credential-sync-ibuNsMyl.js → credential-sync-OKs419AB.js} +14 -14
- package/dist/{executor-D36FWjcf.js → executor-DZVZBfmX.js} +1 -1
- package/dist/{history-DI9KJT3J.d.ts → history-H-SI5Dej.d.ts} +27 -1
- package/dist/images-D3x6EemU.js +82 -0
- package/dist/instrumentation.js +2 -2
- package/dist/{job-queue-2mFFDMHB.js → job-queue-BuSPM0cX.js} +1 -1
- package/dist/{logging-CvjMHRvg.js → logging-Blgn76r3.js} +1 -1
- package/dist/nitro.d.ts +1 -1
- package/dist/nitro.js +3 -3
- package/dist/{oauth-authorization-l4O1rXsL.js → oauth-authorization-t-NPqTNB.js} +1 -1
- package/dist/{oauth-callback-server-Ds8M5FFX.js → oauth-callback-server-BP7SgTcu.js} +2 -2
- package/dist/{pending-auth-DLNJbD8H.js → pending-auth-CXLwmDaG.js} +1 -1
- package/dist/{profile-dvV7PB7u.js → profile-a5xmeUHf.js} +4 -4
- package/dist/{prompt-DehgjkO5.js → prompt-9C-wUwwx.js} +1 -1
- package/dist/{registry-C6FHctIu.js → registry-BUbczT2k.js} +2 -2
- package/dist/{resolve-DqwGI9wq.js → resolve-3PhWSiEF.js} +2 -2
- package/dist/{runner-CzYEcB73.js → runner-CsnuKcsq.js} +10 -10
- package/dist/{sandbox-egress-signals-BZOv0fns.js → sandbox-egress-signals-D34sI4J6.js} +1 -1
- package/dist/{schema-BZg-xzfG.js → schema-CXmCvVLn.js} +1 -1
- package/dist/{skills-EhiVbjF4.js → skills-CLgyYrgF.js} +2 -2
- package/dist/{spawn-Ck3L0rEr.js → spawn-CS56i7Nm.js} +2 -2
- package/dist/{task-queue-TXhAWQwj.js → task-queue-C2sTDXqQ.js} +3 -3
- package/dist/{task-runner-axUJS1No.js → task-runner-uSodiP4v.js} +10 -10
- package/dist/{thread-state-CTuWhjru.js → thread-state-BurqeqMv.js} +5 -5
- package/dist/{turn-failure-response-csVoLOzx.js → turn-failure-response-Bshcqa0a.js} +9 -9
- package/dist/{turn-lifecycle-C1S6vELh.js → turn-lifecycle-foKlVl_T.js} +1 -1
- package/dist/{turn-session-routing-5RejBvit.js → turn-session-routing-DDUMJ2GY.js} +1 -1
- package/dist/{validation-q2PFxkTQ.js → validation-DZc56dXw.js} +1 -1
- package/dist/{version-ByLtIYyy.js → version-y4cRp5Y2.js} +1 -1
- package/dist/version.js +1 -1
- package/dist/{web-authorization-Biy8nsS7.js → web-authorization-BfVYx0t1.js} +6 -6
- package/dist/{web-input-DM9LaEdn.js → web-input-B6FZlrgg.js} +73 -41
- package/dist/{work-QrbHdXTc.js → work-Dy8sW9MZ.js} +7 -7
- package/dist/{worker-r17aopXW.js → worker-BH0RP7Hj.js} +5 -5
- 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-
|
|
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-
|
|
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-
|
|
6
|
-
import { a as getChatConfig, h as normalizeSlackEmojiName, n as botConfig } from "./config-
|
|
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 {
|
|
9
|
-
import { A as tryWorkspaceRepoCheckoutPath, B as downloadPrivateSlackFile, C as invalidateReadySnapshot,
|
|
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-
|
|
12
|
-
import {
|
|
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-
|
|
15
|
-
import { n as pluginCatalogRuntime } from "./catalog-runtime-
|
|
16
|
-
import { a as parseSkillInvocation, n as findSkillByName, r as loadSkillsByName, t as discoverSkills } from "./skills-
|
|
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-
|
|
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-
|
|
19
|
-
import { n as canReusePendingAuthLink, t as abandonReplacedPendingAuth } from "./pending-auth-
|
|
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-
|
|
21
|
-
import { r as EVENT_AUTHOR_ID } from "./prompt-
|
|
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-
|
|
23
|
-
import { a as getVercelConversationWorkQueue, f as getTurnRequestDeadline, n as sendNextWorkspaceSnapshotJob, r as sendWorkspaceSnapshotJob } from "./job-queue-
|
|
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
|
|
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
|
-
|
|
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
|
|
12388
|
-
isChannel:
|
|
12389
|
-
isPrivate:
|
|
12390
|
-
isIm:
|
|
12391
|
-
isMpim:
|
|
12392
|
-
...typeof
|
|
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
|
-
|
|
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
|
|
15045
|
+
const rawFields = profileFieldsSchema.parse(raw.profile ?? {}).fields;
|
|
15014
15046
|
const profileFields = [];
|
|
15015
|
-
if (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
|
-
|
|
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
|
-
}
|
|
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 {
|
|
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 };
|