@sentry/junior 0.219.0 → 0.221.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/{agent-DFeJ0yVy.js → agent-CFrfUdN5.js} +65 -71
  2. package/dist/{agent-hooks-CKaIOT4I.js → agent-hooks-kjLDY-Aa.js} +8 -8
  3. package/dist/{agent-runner-DifJddqY.js → agent-runner-DMMa36Zl.js} +5 -5
  4. package/dist/api/schema.d.ts +30 -0
  5. package/dist/api/schema.js +2 -2
  6. package/dist/api.js +80 -19
  7. package/dist/app.js +33 -160
  8. package/dist/{auth-pause-state-nAyuKldT.js → auth-pause-state-TdhAyYM4.js} +6 -6
  9. package/dist/{briefs-D2iu2JPg.js → briefs-CIN2DMSo.js} +4 -4
  10. package/dist/{catalog-runtime-v3x4peOv.js → catalog-runtime-D1v0KsgY.js} +1 -1
  11. package/dist/{checkpoint-Cc7ba7dw.js → checkpoint-B2-uc-1h.js} +7 -7
  12. package/dist/cli/chat.js +13 -13
  13. package/dist/cli/check.js +3 -3
  14. package/dist/cli/main.js +1 -1
  15. package/dist/cli/plugins.js +3 -3
  16. package/dist/cli/snapshot-create.js +3 -3
  17. package/dist/cli/upgrade.js +3 -3
  18. package/dist/{client-DVKLZG01.js → client-DIe9JhwF.js} +2 -2
  19. package/dist/{config-BXIOxlCK.js → config-0_JixokJ.js} +2 -2
  20. package/dist/{conversation-BpqLg4MM.js → conversation-BSRGzJmY.js} +1 -0
  21. package/dist/{conversation-privacy-8-WR4KBo.js → conversation-privacy-6NLCEkzx.js} +1 -1
  22. package/dist/{credential-sync-BOcckr3l.js → credential-sync-Dqg2o90r.js} +21 -21
  23. package/dist/{execution-stats-G61-pwq6.js → execution-stats-vnXVMVeu.js} +3 -3
  24. package/dist/{executor-D_aAfzGp.js → executor-CmZKtNpH.js} +1 -1
  25. package/dist/instrumentation.js +8 -6
  26. package/dist/{job-queue-DjgMEeqJ.js → job-queue-B1k3woMW.js} +1 -1
  27. package/dist/{logging-1iHJtqBM.js → logging-D2YJv_PA.js} +1 -1
  28. package/dist/nitro.js +3 -3
  29. package/dist/{oauth-callback-server-wwYSbTaU.js → oauth-callback-server-BQtO5l5M.js} +2 -2
  30. package/dist/{pending-auth-B2qOCIx1.js → pending-auth-DuSNoTpn.js} +2 -2
  31. package/dist/{profile-B4e6XN37.js → profile-C3TEFAVI.js} +4 -4
  32. package/dist/{prompt-DAoaq0CT.js → prompt-BkaHwBW0.js} +1 -1
  33. package/dist/{registry-C0DT9wqc.js → registry-Bp0kd2xe.js} +1 -1
  34. package/dist/{resolve-DugfbPdI.js → resolve-BABNNBLL.js} +2 -2
  35. package/dist/{runner-RE9Lp-M8.js → runner-Bvn90ijl.js} +10 -10
  36. package/dist/{sandbox-egress-signals-BqkV7azF.js → sandbox-egress-signals-DLfYAOiO.js} +1 -1
  37. package/dist/{schema-BMG8MJPJ.js → schema-YPJXVcOW.js} +1 -1
  38. package/dist/{short-title-C7tWtQQy.js → short-title-C2fM-ERl.js} +2 -2
  39. package/dist/{skills-B6OcxCOp.js → skills-D1otDVYp.js} +2 -2
  40. package/dist/{spawn-BmZvmNYc.js → spawn-C-fAS-Rk.js} +2 -2
  41. package/dist/{stats-BtMLD1n8.js → stats-BfUFTUrM.js} +33 -8
  42. package/dist/{task-queue-a2aXjkx2.js → task-queue-VdYCCwO0.js} +3 -3
  43. package/dist/{task-runner-Bg2trvKT.js → task-runner-6tzKHNbM.js} +8 -8
  44. package/dist/{thread-state-D4zlHEq1.js → thread-state-CD_fsyrM.js} +5 -5
  45. package/dist/{turn-execution-CgCTt4YP.js → turn-execution-eVhqozjK.js} +3 -3
  46. package/dist/{turn-lifecycle-ClF1kY55.js → turn-lifecycle-CxAtVANu.js} +1 -1
  47. package/dist/{validation-CGkLLzS9.js → validation-CMERqrCD.js} +1 -1
  48. package/dist/{version-CZfM8Kly.js → version-C8XFxpkQ.js} +1 -1
  49. package/dist/version.js +1 -1
  50. package/dist/{web-authorization-DCSwmiua.js → web-authorization-Dq2NDhY0.js} +1 -1
  51. package/dist/{web-input-CQrFGEv9.js → web-input-Bdh_rCZ7.js} +4 -4
  52. package/dist/{work-lRFwhKJe.js → work-DCwaUeWu.js} +9 -9
  53. package/dist/{worker-BV4FekSX.js → worker-grswNVoc.js} +5 -5
  54. package/migrations/0043_scheduled_automation_channel_destinations.sql +36 -0
  55. package/migrations/meta/0043_snapshot.json +3610 -0
  56. package/migrations/meta/_journal.json +8 -1
  57. package/package.json +4 -4
package/dist/api.js CHANGED
@@ -1,19 +1,19 @@
1
- import { f as logWarn, u as logException } from "./logging-1iHJtqBM.js";
1
+ import { f as logWarn, u as logException } from "./logging-D2YJv_PA.js";
2
2
  import { _ as parseSlackMessageTs, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-Bplcgypl.js";
3
- import { $ as resolveViewerUser, $t as parseSessionSource, Ct as conversationArchivedForEmail, D as SANDBOX_RUNTIME, Dt as conversationNotArchivedForEmail, Et as conversationHasParticipantUser, Ft as listConversationAnnotations, Gt as getDb, It as listConversationAnnotationsById, J as withSlackRetries, Kt as getSqlExecutor, Mt as readConversationEventPage, Nt as buildSentryConversationUrl, Ot as conversationNotArchivedForUser, S as WorkspaceValidationError, St as conversationArchiveTimes, Tt as conversationHasParticipantEmail, U as getSlackClient, Wt as getConversationStore, Z as findUserByEmail, Zt as locationFromRow, _ as deleteWorkspace, an as resolveRootConversationId, b as listWorkspaces, bt as createPluginLogger, et as updateViewerDisplayName, g as createWorkspace, in as hasAgentTurnUsage, j as workspaceRepoCheckoutPath, jt as readLatestConversationBrief, kt as viewerConversationMembership, rn as agentTurnUsageSchema, u as getPlugins, v as getWorkspace, wt as conversationArchivedForUser, x as updateWorkspace, xt as readConversationAccessFromSql } from "./agent-hooks-CKaIOT4I.js";
3
+ import { $ as resolveViewerUser, $t as parseSessionSource, Ct as conversationArchivedForEmail, D as SANDBOX_RUNTIME, Dt as conversationNotArchivedForEmail, Et as conversationHasParticipantUser, Ft as listConversationAnnotations, Gt as getDb, It as listConversationAnnotationsById, J as withSlackRetries, Kt as getSqlExecutor, Mt as readConversationEventPage, Nt as buildSentryConversationUrl, Ot as conversationNotArchivedForUser, S as WorkspaceValidationError, St as conversationArchiveTimes, Tt as conversationHasParticipantEmail, U as getSlackClient, Wt as getConversationStore, Z as findUserByEmail, Zt as locationFromRow, _ as deleteWorkspace, an as resolveRootConversationId, b as listWorkspaces, bt as createPluginLogger, et as updateViewerDisplayName, g as createWorkspace, in as hasAgentTurnUsage, j as workspaceRepoCheckoutPath, jt as readLatestConversationBrief, kt as viewerConversationMembership, rn as agentTurnUsageSchema, u as getPlugins, v as getWorkspace, wt as conversationArchivedForUser, x as updateWorkspace, xt as readConversationAccessFromSql } from "./agent-hooks-kjLDY-Aa.js";
4
4
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
5
- import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, b as juniorApiTokens, g as juniorConversationBriefs, m as juniorConversationParticipants, o as juniorSchedulerTasks, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-D_aAfzGp.js";
6
- import { D as createConversationBodySchema, O as createConversationMessageBodySchema, T as conversationStatsReportSchema, _ as conversationParamsSchema, a as cancelConversationPendingMessagesBodySchema, c as conversationAttachmentParamsSchema, d as conversationDetailReportSchema, g as conversationFeedSchema, h as conversationFeedQuerySchema, i as archiveConversationResponseSchema, m as conversationEventsQuerySchema, o as cancelConversationPendingMessagesResponseSchema, p as conversationEventPageSchema, r as archiveConversationBodySchema, t as acceptedConversationMessageSchema, u as conversationDetailQuerySchema, x as conversationPendingMessagesReportSchema } from "./conversation-BpqLg4MM.js";
7
- import { t as fallbackShortTitle } from "./short-title-C7tWtQQy.js";
8
- import { n as hash, t as create } from "./profile-B4e6XN37.js";
9
- import { A as eventAutomationTriggerAvailable, F as effectiveTaskOutcomes, G as listDeletedEventAutomationsCreatedBy, H as eventAutomationBelongsToUser, J as listPublicEventAutomationsForTeams, K as listEventAutomationsCreatedBy, Tt as getConversation, V as deleteEventAutomation, W as getEventAutomation, X as getEventCatalog, _ as parseScheduledAutomationRow, c as parseSlackThreadId, ht as cancelHumanFacingPendingMessages, i as readLiveAttachment, m as listPublicScheduledAutomationsForTeams, n as readStats, p as isListedScheduledAutomation, v as readScheduledAutomation, y as saveScheduledAutomation } from "./stats-BtMLD1n8.js";
10
- import { t as getCachedSnapshot } from "./resolve-DugfbPdI.js";
5
+ import { C as juniorCodeRepositories, D as juniorIdentities, E as juniorConversations, O as juniorUsers, S as juniorCodeChanges, T as conversationReadColumns, b as juniorApiTokens, g as juniorConversationBriefs, m as juniorConversationParticipants, o as juniorSchedulerTasks, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-CmZKtNpH.js";
6
+ import { D as createConversationBodySchema, O as createConversationMessageBodySchema, T as conversationStatsReportSchema, _ as conversationParamsSchema, a as cancelConversationPendingMessagesBodySchema, c as conversationAttachmentParamsSchema, d as conversationDetailReportSchema, g as conversationFeedSchema, h as conversationFeedQuerySchema, i as archiveConversationResponseSchema, m as conversationEventsQuerySchema, o as cancelConversationPendingMessagesResponseSchema, p as conversationEventPageSchema, r as archiveConversationBodySchema, t as acceptedConversationMessageSchema, u as conversationDetailQuerySchema, x as conversationPendingMessagesReportSchema } from "./conversation-BSRGzJmY.js";
7
+ import { t as fallbackShortTitle } from "./short-title-C2fM-ERl.js";
8
+ import { n as hash, t as create } from "./profile-C3TEFAVI.js";
9
+ import { A as eventAutomationTriggerAvailable, F as effectiveTaskOutcomes, G as listDeletedEventAutomationsCreatedBy, H as eventAutomationBelongsToUser, J as listPublicEventAutomationsForTeams, K as listEventAutomationsCreatedBy, Tt as getConversation, V as deleteEventAutomation, W as getEventAutomation, X as getEventCatalog, _ as parseScheduledAutomationRow, c as parseSlackThreadId, ht as cancelHumanFacingPendingMessages, i as readLiveAttachment, m as listPublicScheduledAutomationsForTeams, n as readStats, p as isListedScheduledAutomation, v as readScheduledAutomation, y as saveScheduledAutomation } from "./stats-BfUFTUrM.js";
10
+ import { t as getCachedSnapshot } from "./resolve-BABNNBLL.js";
11
11
  import { t as getVercelConversationWorkQueue } from "./vercel-queue-DIkVcfK4.js";
12
12
  import { c as runtimeInfoReportSchema, n as pluginOperationalReportFeedSchema, s as pluginsSchema, t as healthReportSchema, u as skillReportsSchema } from "./reporting-schema-DosTN__Q.js";
13
- import { a as webActorFromEmail, c as formatSlackConversationRedactedLabel, d as resolveSlackConversationContextFromThreadId, f as lookupSlackUser, g as readHealthReport, m as createVercelAttachmentStorage, p as legacyWebMailboxMetadataSchema, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage } from "./web-input-CQrFGEv9.js";
14
- import { a as readAutomationExecutionStatusDays, c as readAutomationExecutions, d as conversationActiveDaysColumn, f as conversationAggregateColumns, i as readAutomationExecutionHours, l as readAutomationRuns, n as readAutomationExecutionByConversationId, o as readAutomationExecutionStatusHours, p as conversationRangeColumns, r as readAutomationExecutionDays, s as readAutomationExecutionSummaries, t as emptyAutomationRunWindows } from "./execution-stats-G61-pwq6.js";
15
- import { r as getWebAuthorization } from "./web-authorization-DCSwmiua.js";
16
- import { $ as sumUtcHoursIntoSixHours, A as actorProfileReportSchema, C as createPersonalTokenBodySchema, D as personalTokenParamsSchema, F as locationDirectoryReportSchema, G as codePersonReportSchema, I as locationParamsSchema, J as HOUR_MS$1, L as activityDays$1, M as personalSpendReportSchema, O as revokePersonalTokenResponseSchema, P as locationDetailReportSchema, Q as startOfUtcHour, R as activityHours$1, T as personalTokenListSchema, W as codeOverviewReportSchema, X as fillUtcHours, Y as fillUtcDays, Z as fillUtcSixHours, _ as automationRunListSchema, a as workspaceBodySchema, at as apiErrorSchema, et as trailingUtcDayWindow, g as automationParamsSchema, h as automationListSchema, i as deleteWorkspaceResponseSchema, it as utcHourKey, j as personParamsSchema, k as actorDirectoryReportSchema, l as workspaceSchema, m as automationListQuerySchema, n as statsReportSchema, nt as trailingUtcSixHourWindow, o as workspaceListSchema, q as DAY_MS$1, rt as utcDayKey, s as workspaceParamsSchema, tt as trailingUtcHourWindow, u as automationExecutionListSchema, w as createdPersonalTokenSchema, z as activitySixHours$1 } from "./schema-BMG8MJPJ.js";
13
+ import { a as webActorFromEmail, c as formatSlackConversationRedactedLabel, d as resolveSlackConversationContextFromThreadId, f as lookupSlackUser, g as readHealthReport, m as createVercelAttachmentStorage, p as legacyWebMailboxMetadataSchema, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage } from "./web-input-Bdh_rCZ7.js";
14
+ import { a as readAutomationExecutionStatusDays, c as readAutomationExecutions, d as conversationActiveDaysColumn, f as conversationAggregateColumns, i as readAutomationExecutionHours, l as readAutomationRuns, n as readAutomationExecutionByConversationId, o as readAutomationExecutionStatusHours, p as conversationRangeColumns, r as readAutomationExecutionDays, s as readAutomationExecutionSummaries, t as emptyAutomationRunWindows } from "./execution-stats-vnXVMVeu.js";
15
+ import { r as getWebAuthorization } from "./web-authorization-Dq2NDhY0.js";
16
+ import { $ as sumUtcHoursIntoSixHours, A as actorProfileReportSchema, C as createPersonalTokenBodySchema, D as personalTokenParamsSchema, F as locationDirectoryReportSchema, G as codePersonReportSchema, I as locationParamsSchema, J as HOUR_MS$1, L as activityDays$1, M as personalSpendReportSchema, O as revokePersonalTokenResponseSchema, P as locationDetailReportSchema, Q as startOfUtcHour, R as activityHours$1, T as personalTokenListSchema, W as codeOverviewReportSchema, X as fillUtcHours, Y as fillUtcDays, Z as fillUtcSixHours, _ as automationRunListSchema, a as workspaceBodySchema, at as apiErrorSchema, et as trailingUtcDayWindow, g as automationParamsSchema, h as automationListSchema, i as deleteWorkspaceResponseSchema, it as utcHourKey, j as personParamsSchema, k as actorDirectoryReportSchema, l as workspaceSchema, m as automationListQuerySchema, n as statsReportSchema, nt as trailingUtcSixHourWindow, o as workspaceListSchema, q as DAY_MS$1, rt as utcDayKey, s as workspaceParamsSchema, tt as trailingUtcHourWindow, u as automationExecutionListSchema, w as createdPersonalTokenSchema, z as activitySixHours$1 } from "./schema-YPJXVcOW.js";
17
17
  import { Hono } from "hono";
18
18
  import path from "node:path";
19
19
  import { z } from "zod";
@@ -902,6 +902,61 @@ async function readConversationActivityPreviews(db, conversationIds) {
902
902
  }]));
903
903
  }
904
904
  //#endregion
905
+ //#region src/api/conversations/participants.ts
906
+ const identityColumns = {
907
+ displayName: juniorIdentities.displayName,
908
+ email: juniorIdentities.email,
909
+ handle: juniorIdentities.handle,
910
+ identityId: juniorIdentities.id,
911
+ provider: juniorIdentities.provider,
912
+ providerSubjectId: juniorIdentities.providerSubjectId,
913
+ userDisplayName: juniorUsers.displayName,
914
+ userEmail: juniorUsers.primaryEmail,
915
+ userId: juniorIdentities.userId
916
+ };
917
+ function participantIdentity(row) {
918
+ const fullName = row.userDisplayName?.trim() || row.displayName?.trim();
919
+ const email = row.email?.trim() || row.userEmail?.trim();
920
+ const slack = row.provider === "slack";
921
+ const participant = {
922
+ ...email ? { email } : void 0,
923
+ ...fullName ? { fullName } : void 0,
924
+ ...slack && row.providerSubjectId ? { slackUserId: row.providerSubjectId } : void 0,
925
+ ...slack && row.handle ? { slackUserName: row.handle } : void 0
926
+ };
927
+ return Object.keys(participant).length > 0 ? participant : void 0;
928
+ }
929
+ /** Read actor identities in first-appearance order for each Conversation. */
930
+ async function readConversationParticipants(db, conversationIds) {
931
+ if (conversationIds.length === 0) return /* @__PURE__ */ new Map();
932
+ const [rootRows, eventRows] = await Promise.all([db.select({
933
+ conversationId: juniorConversations.conversationId,
934
+ ...identityColumns
935
+ }).from(juniorConversations).innerJoin(juniorIdentities, eq(juniorIdentities.id, juniorConversations.actorIdentityId)).leftJoin(juniorUsers, eq(juniorUsers.id, juniorIdentities.userId)).where(inArray(juniorConversations.conversationId, [...conversationIds])), db.selectDistinctOn([juniorConversationEvents.conversationId, juniorConversationEvents.actorIdentityId], {
936
+ conversationId: juniorConversationEvents.conversationId,
937
+ seq: juniorConversationEvents.seq,
938
+ ...identityColumns
939
+ }).from(juniorConversationEvents).innerJoin(juniorIdentities, eq(juniorIdentities.id, juniorConversationEvents.actorIdentityId)).leftJoin(juniorUsers, eq(juniorUsers.id, juniorIdentities.userId)).where(inArray(juniorConversationEvents.conversationId, [...conversationIds])).orderBy(asc(juniorConversationEvents.conversationId), asc(juniorConversationEvents.actorIdentityId), asc(juniorConversationEvents.seq))]);
940
+ const ordered = /* @__PURE__ */ new Map();
941
+ const add = (conversationId, row) => {
942
+ const participant = participantIdentity(row);
943
+ if (!participant) return;
944
+ const group = ordered.get(conversationId) ?? {
945
+ identities: [],
946
+ keys: /* @__PURE__ */ new Set()
947
+ };
948
+ const key = row.userId ? `user:${row.userId}` : `identity:${row.identityId}`;
949
+ if (!group.keys.has(key)) {
950
+ group.keys.add(key);
951
+ group.identities.push(participant);
952
+ }
953
+ ordered.set(conversationId, group);
954
+ };
955
+ for (const row of rootRows) add(row.conversationId, row);
956
+ for (const row of eventRows.sort((left, right) => left.seq - right.seq)) add(row.conversationId, row);
957
+ return new Map([...ordered].map(([conversationId, group]) => [conversationId, group.identities]));
958
+ }
959
+ //#endregion
905
960
  //#region src/api/conversations/list.ts
906
961
  const CONVERSATION_FEED_LIMIT = 50;
907
962
  function conversationFeedMembershipFilter(status, filter) {
@@ -1019,12 +1074,13 @@ async function readConversationFeedFromSql(options = {}) {
1019
1074
  const rows = await conversationRows(db, options.limit ?? CONVERSATION_FEED_LIMIT, query ? "all" : options.status ?? "active", filter, query, filter?.kind === "viewer");
1020
1075
  const conversations = rows.map((row) => conversationFromRow(row));
1021
1076
  const conversationIds = conversations.map((conversation) => conversation.conversationId);
1022
- const [accessByConversation, archiveTimesByConversation, annotationsByConversation, auxiliaryCostsByRoot, metricsByRoot, teamDomainByTeamId, conversationWork, lastUserMessageAtByConversation, activityPreviewByConversation] = await Promise.all([
1077
+ const [accessByConversation, archiveTimesByConversation, annotationsByConversation, auxiliaryCostsByRoot, metricsByRoot, participantsByConversation, teamDomainByTeamId, conversationWork, lastUserMessageAtByConversation, activityPreviewByConversation] = await Promise.all([
1023
1078
  readConversationAccessFromSql(db, conversationIds, options.viewer),
1024
1079
  conversationArchiveTimes(db, conversationIds, filter?.kind === "viewer" ? { userId: filter.userId } : filter?.kind === "actorEmail" ? { email: filter.email } : void 0),
1025
1080
  listConversationAnnotationsById(db, conversationIds),
1026
1081
  readConversationAuxiliaryCostsFromSql(db, conversationIds, { includeDescendants: true }),
1027
1082
  readRootConversationMetricsFromSql(db, conversationIds),
1083
+ readConversationParticipants(db, conversationIds),
1028
1084
  resolveSlackTeamDomains(conversations.flatMap((conversation) => conversation.location?.provider === "slack" ? [conversation.location.teamId] : [])),
1029
1085
  listConversationWork(conversationIds),
1030
1086
  readLastUserMessageAtByConversation(db, conversationIds),
@@ -1056,9 +1112,11 @@ async function readConversationFeedFromSql(options = {}) {
1056
1112
  };
1057
1113
  const annotations = access?.canViewPrivateContent ? annotationsByConversation.get(conversation.conversationId) ?? [] : [];
1058
1114
  const activityPreview = access?.canViewPrivateContent ? activityPreviewByConversation.get(conversation.conversationId) : void 0;
1115
+ const participants = access?.canViewPrivateContent ? participantsByConversation.get(conversation.conversationId) : void 0;
1059
1116
  return {
1060
1117
  ...summary,
1061
1118
  ...work,
1119
+ ...participants && participants.length > 0 ? { participants } : void 0,
1062
1120
  ...activityPreview ? { activityPreview } : void 0,
1063
1121
  ...annotations.length > 0 ? { annotations } : void 0,
1064
1122
  ...sidebarAnnotationsByConversation[conversation.conversationId] ? { sidebarAnnotations: sidebarAnnotationsByConversation[conversation.conversationId] } : void 0,
@@ -1600,6 +1658,7 @@ function projectConversationDetail(args) {
1600
1658
  annotations: canExposePayload ? args.annotations : [],
1601
1659
  ...canExposePayload && args.brief ? { brief: args.brief } : void 0,
1602
1660
  events: args.events,
1661
+ ...canExposePayload && args.participants.length > 0 ? { participants: args.participants } : void 0,
1603
1662
  ...args.previousSeq !== void 0 ? { previousCursor: encodeConversationCursor({
1604
1663
  conversationId,
1605
1664
  seq: args.previousSeq
@@ -1620,7 +1679,7 @@ async function readConversationDetailFromSql(conversationId, options) {
1620
1679
  const archivedAtMs = options.viewer ? await readConversationArchivedAt(options.viewer, conversationId) : void 0;
1621
1680
  const executor = getSqlExecutor();
1622
1681
  const includeDescendantMetrics = record.rootConversationId === conversationId;
1623
- const [accessByConversation, annotations, auxiliaryCostsByConversation, briefVersion, modelUsage, metricsByRoot, sourceTask, teamDomainByTeamId] = await Promise.all([
1682
+ const [accessByConversation, annotations, auxiliaryCostsByConversation, briefVersion, modelUsage, metricsByRoot, participantsByConversation, sourceTask, teamDomainByTeamId] = await Promise.all([
1624
1683
  readConversationAccessFromSql(getDb(), [conversationId], options.viewer),
1625
1684
  listConversationAnnotations(getDb(), conversationId),
1626
1685
  readConversationAuxiliaryCostsFromSql(getDb(), [conversationId], { includeDescendants: includeDescendantMetrics }),
@@ -1630,6 +1689,7 @@ async function readConversationDetailFromSql(conversationId, options) {
1630
1689
  includeDescendants: includeDescendantMetrics
1631
1690
  }) : Promise.resolve([]),
1632
1691
  readRootConversationMetricsFromSql(getDb(), includeDescendantMetrics ? [conversationId] : []),
1692
+ readConversationParticipants(getDb(), [conversationId]),
1633
1693
  readConversationSourceTask({
1634
1694
  conversationId,
1635
1695
  ...options.viewer ? { viewer: options.viewer } : void 0
@@ -1657,6 +1717,7 @@ async function readConversationDetailFromSql(conversationId, options) {
1657
1717
  durationMs: metrics?.durationMs ?? record.durationMs,
1658
1718
  events: page.events,
1659
1719
  modelUsage,
1720
+ participants: participantsByConversation.get(conversationId) ?? [],
1660
1721
  ...sourceTask ? { sourceTask } : void 0,
1661
1722
  teamDomainByTeamId,
1662
1723
  ...page.previousSeq === void 0 ? void 0 : { previousSeq: page.previousSeq },
@@ -3453,7 +3514,7 @@ async function readPeoplePluginReports(args) {
3453
3514
  reports: [],
3454
3515
  source: "plugins"
3455
3516
  });
3456
- const { getPluginProfileReports } = await import("./agent-hooks-CKaIOT4I.js").then((n) => n.t);
3517
+ const { getPluginProfileReports } = await import("./agent-hooks-kjLDY-Aa.js").then((n) => n.t);
3457
3518
  return pluginOperationalReportFeedSchema.parse({
3458
3519
  generatedAt: new Date(nowMs).toISOString(),
3459
3520
  reports: await getPluginProfileReports({
@@ -4062,7 +4123,7 @@ function readDescriptionText(home) {
4062
4123
  }
4063
4124
  /** Read discovered skill names for authenticated runtime diagnostics. */
4064
4125
  async function readSkillReports() {
4065
- const { discoverSkills } = await import("./skills-B6OcxCOp.js").then((n) => n.o);
4126
+ const { discoverSkills } = await import("./skills-D1otDVYp.js").then((n) => n.o);
4066
4127
  const skills = await discoverSkills();
4067
4128
  return skillReportsSchema.parse(skills.map((skill) => ({
4068
4129
  name: skill.name,
@@ -4071,7 +4132,7 @@ async function readSkillReports() {
4071
4132
  }
4072
4133
  /** Read safe configured plugin metadata for authenticated runtime diagnostics. */
4073
4134
  async function readPlugins() {
4074
- const { pluginCatalogRuntime } = await import("./catalog-runtime-v3x4peOv.js").then((n) => n.t);
4135
+ const { pluginCatalogRuntime } = await import("./catalog-runtime-D1v0KsgY.js").then((n) => n.t);
4075
4136
  return pluginsSchema.parse(pluginCatalogRuntime.getProviders().map((plugin) => ({
4076
4137
  configKeys: plugin.manifest.configKeys ?? [],
4077
4138
  description: plugin.manifest.description,
@@ -4083,7 +4144,7 @@ async function readPlugins() {
4083
4144
  async function readRuntimeInfoReport() {
4084
4145
  const [{ homeDir }, { pluginCatalogRuntime }, plugins, skills] = await Promise.all([
4085
4146
  import("./package-discovery-7a9YqLhE.js").then((n) => n.r),
4086
- import("./catalog-runtime-v3x4peOv.js").then((n) => n.t),
4147
+ import("./catalog-runtime-D1v0KsgY.js").then((n) => n.t),
4087
4148
  readPlugins(),
4088
4149
  readSkillReports()
4089
4150
  ]);
@@ -4100,7 +4161,7 @@ async function readRuntimeInfoReport() {
4100
4161
  /** Read sanitized operational summaries contributed by plugins. */
4101
4162
  async function readPluginOperationalReportFeed() {
4102
4163
  const nowMs = Date.now();
4103
- const { getPluginOperationalReports } = await import("./agent-hooks-CKaIOT4I.js").then((n) => n.t);
4164
+ const { getPluginOperationalReports } = await import("./agent-hooks-kjLDY-Aa.js").then((n) => n.t);
4104
4165
  return pluginOperationalReportFeedSchema.parse({
4105
4166
  source: "plugins",
4106
4167
  generatedAt: new Date(nowMs).toISOString(),
package/dist/app.js CHANGED
@@ -1,41 +1,41 @@
1
- import { $ as AuthorizationFlowDisabledError, B as recordFinishedTurnForAutomatedLimit, C as renderBlockText, D as getNextRunAtMs, E as scheduledAutomationRunAttributes, F as ingestEvent, G as clearSandboxEgressSignals, H as normalizeSandboxEgressTracePropagationDomains, I as EVENT_WAIT_MS, J as parseSandboxEgressCredentialToken, K as consumeSandboxEgressAuthRequiredSignal, L as isEventMailboxMetadata, P as processWorkspaceSnapshotJob, Q as isVisionImageMediaType, R as renderTaskInput, S as renderAttachmentText, T as logScheduledAutomationRunSkipped, U as shouldPropagateSandboxEgressTrace, V as resolveSandboxEgressProviderForHost, W as SANDBOX_EGRESS_PROXY_PATH, X as createUserTokenStore, Z as buildSteeringPiMessage, _ as readPublicArtifact, b as readAttachmentVisionSummary, c as deleteMcpStoredOAuthCredentials, et as shouldEmitDevAgentTrace, f as PluginCredentialFailureError, g as publicArtifactHeaders, m as latestProgressStatus, n as createContextCompactor, nt as setConfigDefaults, o as deleteMcpAuthSessionsForUserProvider, q as consumeSandboxEgressPermissionDeniedSignal, r as executeCredentialedEgressRequest, s as deleteMcpServerSessionId, t as executeAgentRun, tt as getConfigDefaults, v as unpublishedArtifactHeaders, w as listThreadReplies, x as recordSlackAttachment, z as maybePostAutomatedTurnLimitNotice } from "./agent-DFeJ0yVy.js";
2
- import { b as isProviderRetryError, i as completeText, m as escapeXml, r as completeObject } from "./client-DVKLZG01.js";
3
- import { A as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, C as withSpan, D as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, F as isRecord$1, I as toOptionalNumber, L as toOptionalString, S as withLogContext, _ as setSpanAttributes, d as logInfo, f as logWarn, g as setSentryUser, l as logError, n as createChatSdkLogger, o as getActiveTraceId, r as createRequestContext, t as buildTurnFailureResponse, u as logException, v as setSpanStatus, x as withContext, y as setTags } from "./logging-1iHJtqBM.js";
1
+ import { $ as AuthorizationFlowDisabledError, B as recordFinishedTurnForAutomatedLimit, C as renderBlockText, D as getNextRunAtMs, E as scheduledAutomationRunAttributes, F as ingestEvent, G as clearSandboxEgressSignals, H as normalizeSandboxEgressTracePropagationDomains, I as EVENT_WAIT_MS, J as parseSandboxEgressCredentialToken, K as consumeSandboxEgressAuthRequiredSignal, L as isEventMailboxMetadata, P as processWorkspaceSnapshotJob, Q as isVisionImageMediaType, R as renderTaskInput, S as renderAttachmentText, T as logScheduledAutomationRunSkipped, U as shouldPropagateSandboxEgressTrace, V as resolveSandboxEgressProviderForHost, W as SANDBOX_EGRESS_PROXY_PATH, X as createUserTokenStore, Z as buildSteeringPiMessage, _ as readPublicArtifact, b as readAttachmentVisionSummary, c as deleteMcpStoredOAuthCredentials, et as shouldEmitDevAgentTrace, f as PluginCredentialFailureError, g as publicArtifactHeaders, m as latestProgressStatus, n as createContextCompactor, nt as setConfigDefaults, o as deleteMcpAuthSessionsForUserProvider, q as consumeSandboxEgressPermissionDeniedSignal, r as executeCredentialedEgressRequest, s as deleteMcpServerSessionId, t as executeAgentRun, tt as getConfigDefaults, v as unpublishedArtifactHeaders, w as listThreadReplies, x as recordSlackAttachment, z as maybePostAutomatedTurnLimitNotice } from "./agent-CFrfUdN5.js";
2
+ import { b as isProviderRetryError, i as completeText, m as escapeXml, r as completeObject } from "./client-DIe9JhwF.js";
3
+ import { A as JUNIOR_WORKSPACE_SNAPSHOT_JOB_CALLBACK_ROUTE, C as withSpan, D as JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE, F as isRecord$1, I as toOptionalNumber, L as toOptionalString, S as withLogContext, _ as setSpanAttributes, d as logInfo, f as logWarn, g as setSentryUser, l as logError, n as createChatSdkLogger, o as getActiveTraceId, r as createRequestContext, t as buildTurnFailureResponse, u as logException, v as setSpanStatus, x as withContext, y as setTags } from "./logging-D2YJv_PA.js";
4
4
  import { r as continueTrace } from "./sentry-CgWZM_kV.js";
5
- import { t as JUNIOR_VERSION } from "./version-CZfM8Kly.js";
6
- import { a as getChatConfig, c as getSlackClientId, d as getSlackSigningSecret, f as setBotModelConfig, i as configureFunctionMaxDurationSeconds, l as getSlackClientSecret, m as setSlackReactionConfig, n as botConfig, p as setProfiles, s as getSlackBotToken, u as getSlackReactionConfig } from "./config-BXIOxlCK.js";
5
+ import { t as JUNIOR_VERSION } from "./version-C8XFxpkQ.js";
6
+ import { a as getChatConfig, c as getSlackClientId, d as getSlackSigningSecret, f as setBotModelConfig, i as configureFunctionMaxDurationSeconds, l as getSlackClientSecret, m as setSlackReactionConfig, n as botConfig, p as setProfiles, s as getSlackBotToken, u as getSlackReactionConfig } from "./config-0_JixokJ.js";
7
7
  import { a as modelIdForProfile, n as defaultModelId } from "./model-profile-CZmVoGdX.js";
8
8
  import { _ as parseSlackMessageTs, a as createActor, c as isActorUserId, o as createSlackActor, p as parseSlackChannelId, s as createSlackResumeActor, t as credentialContextForActor, u as parseActorUserId } from "./context-Bplcgypl.js";
9
- import { B as downloadPrivateSlackFile, F as bindSlackDirectCredentialSubject, G as isDmChannel, Gt as getDb, Ht as getConversationEventStore, I as verifyEventAutomationCredentialSubject, Jt as withConversationEventLock, K as normalizeSlackConversationId, Kt as getSqlExecutor, L as verifyScheduledAutomationCredentialSubject, N as bindEventAutomationCredentialSubject, P as bindScheduledAutomationCredentialSubject, Pt as resolveRootVisibility, R as verifySlackDirectCredentialSubject, U as getSlackClient, Wt as getConversationStore, X as runWithWorkspaceTeamId, Xt as withConversationMutationLock, Y as getWorkspaceTeamId, _t as createPluginState, a as getPluginRoutes, bt as createPluginLogger, ct as collectEventMatchKeys, d as setPlugins, dn as requireSlackDestination, dt as findMatchingWatches, f as validatePlugins, gt as setDashboardConversationLinkOptions, h as setBriefsConfig, i as getPluginApiRoutes, ln as createSlackDestination, on as deleteProviderIdentityForSlackUser, ot as cancelSubscriptions, pt as JUNIOR_THREAD_STATE_TTL_MS, q as runWithSlackInstallationToken, u as getPlugins, xt as readConversationAccessFromSql, z as SlackActionError } from "./agent-hooks-CKaIOT4I.js";
9
+ import { B as downloadPrivateSlackFile, F as bindSlackDirectCredentialSubject, G as isDmChannel, Gt as getDb, Ht as getConversationEventStore, I as verifyEventAutomationCredentialSubject, Jt as withConversationEventLock, K as normalizeSlackConversationId, Kt as getSqlExecutor, L as verifyScheduledAutomationCredentialSubject, N as bindEventAutomationCredentialSubject, P as bindScheduledAutomationCredentialSubject, Pt as resolveRootVisibility, R as verifySlackDirectCredentialSubject, U as getSlackClient, Wt as getConversationStore, X as runWithWorkspaceTeamId, Xt as withConversationMutationLock, Y as getWorkspaceTeamId, _t as createPluginState, a as getPluginRoutes, bt as createPluginLogger, ct as collectEventMatchKeys, d as setPlugins, dn as requireSlackDestination, dt as findMatchingWatches, f as validatePlugins, gt as setDashboardConversationLinkOptions, h as setBriefsConfig, i as getPluginApiRoutes, ln as createSlackDestination, on as deleteProviderIdentityForSlackUser, ot as cancelSubscriptions, pt as JUNIOR_THREAD_STATE_TTL_MS, q as runWithSlackInstallationToken, u as getPlugins, xt as readConversationAccessFromSql, z as SlackActionError } from "./agent-hooks-kjLDY-Aa.js";
10
10
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
11
- import { E as juniorConversations, a as juniorSchedulerRuns, f as juniorAgentBindings, g as juniorConversationBriefs, o as juniorSchedulerTasks, p as juniorAgentInvocations, y as juniorConversationEvents } from "./executor-D_aAfzGp.js";
12
- import { W as instructionProvenanceFor } from "./conversation-BpqLg4MM.js";
13
- import { n as pluginCatalogRuntime } from "./catalog-runtime-v3x4peOv.js";
14
- import { $ as resolveConversationTitle, F as loadProjection, G as recordSubscribedReplyRoute, J as appendConversationMessages, M as commitMessages, P as loadConversationProjection, Q as persistConversationMessageSummaries, X as persistConversationMessages, Y as hydrateConversationMessages, Z as projectConversationMessages, a as completeTurnRecord, at as isHumanConversationMessage, c as getTurnRecordForResume, ct as recordDeliveredAssistantMessage, d as persistWithRetry, dt as estimateTextTokens, et as appendThreadContextMessages, i as abandonTurnRecord, it as getConversationMessageSlackTs, j as commitAcceptedReply, k as trimTrailingAssistantMessages, l as listTurnSummaries, lt as turnHasReply, m as buildTurnErrorResponse, n as loadTurnCheckpoint, nt as createConversationMemoryService, o as failTurnRecord, ot as markConversationMessage, r as saveTurnCheckpoint, rt as estimateConversationContextTokens, s as getTurnRecord, st as normalizeConversationText, tt as buildConversationContext, u as recordTurnSummary, ut as upsertConversationMessage } from "./checkpoint-Cc7ba7dw.js";
15
- import { E as acquireActiveLock, O as withActiveLock, T as MUTATION_LOCK_TTL_MS$1, k as withLock$1, w as getStateAdapter } from "./profile-B4e6XN37.js";
16
- import { Bt as hasRunnableConversationWork$1, Dt as hasRunnableConversationWork, Et as getConversationWorkState, F as effectiveTaskOutcomes, Ht as isInvalidConversationRecordError, It as stopConversationWork, Kt as buildDeterministicAssistantMessageId, Mt as removeActiveConversation, Ot as listActiveConversationIds, Pt as requestConversationWork, Rt as CONVERSATION_WORK_STALE_ENQUEUE_MS, S as withScheduledAutomationLock, Tt as getConversation, U as findMatchingEventAutomations, X as getEventCatalog, a as requestAttachmentDeletion, b as saveScheduledAutomationInLock, c as parseSlackThreadId, g as listScheduledAutomationsForTeam, h as listScheduledAutomations, o as storeAttachment, pt as appendAndEnqueueInboundMessage, qt as buildDeterministicTurnId, r as collectAttachmentGarbage, tt as eventGuidance, v as readScheduledAutomation, vt as clearExpiredConversationLease, w as scheduledRunSchema, wt as ensureConversationWake, x as scheduledRunId, z as collectEventAutomationMatchKeys } from "./stats-BtMLD1n8.js";
17
- import { S as startActiveTurn, _ as isTurnInputCommitLostError, b as markTurnCompleted, d as ConversationTurnBoundaryError, f as CooperativeTurnYieldError, g as isCooperativeTurnYieldError, h as getConversationTurnBoundaryError, m as TurnInputDeferredError, p as TurnInputCommitLostError, r as clearPendingAuth, s as getAssistantReplyText, v as isTurnInputDeferredError, x as markTurnFailed, y as markTurnClosed } from "./pending-auth-B2qOCIx1.js";
18
- import { h as postSlackMessage, i as formatProviderLabel, s as startOAuthFlow, t as createAgentRunner, v as RetryableDeliveryError } from "./agent-runner-DifJddqY.js";
19
- import { a as EVENT_SYSTEM_ACTOR, i as EVENT_MESSAGE_AUTHOR, o as isEventConversationMessage } from "./prompt-DAoaq0CT.js";
20
- import { f as setSandboxResourceConfig, u as getSandboxResourceConfig } from "./resolve-DugfbPdI.js";
11
+ import { E as juniorConversations, a as juniorSchedulerRuns, f as juniorAgentBindings, g as juniorConversationBriefs, o as juniorSchedulerTasks, p as juniorAgentInvocations, y as juniorConversationEvents } from "./executor-CmZKtNpH.js";
12
+ import { W as instructionProvenanceFor } from "./conversation-BSRGzJmY.js";
13
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-D1v0KsgY.js";
14
+ import { $ as resolveConversationTitle, F as loadProjection, G as recordSubscribedReplyRoute, J as appendConversationMessages, M as commitMessages, P as loadConversationProjection, Q as persistConversationMessageSummaries, X as persistConversationMessages, Y as hydrateConversationMessages, Z as projectConversationMessages, a as completeTurnRecord, at as isHumanConversationMessage, c as getTurnRecordForResume, ct as recordDeliveredAssistantMessage, d as persistWithRetry, dt as estimateTextTokens, et as appendThreadContextMessages, i as abandonTurnRecord, it as getConversationMessageSlackTs, j as commitAcceptedReply, k as trimTrailingAssistantMessages, l as listTurnSummaries, lt as turnHasReply, m as buildTurnErrorResponse, n as loadTurnCheckpoint, nt as createConversationMemoryService, o as failTurnRecord, ot as markConversationMessage, r as saveTurnCheckpoint, rt as estimateConversationContextTokens, s as getTurnRecord, st as normalizeConversationText, tt as buildConversationContext, u as recordTurnSummary, ut as upsertConversationMessage } from "./checkpoint-B2-uc-1h.js";
15
+ import { E as acquireActiveLock, O as withActiveLock, T as MUTATION_LOCK_TTL_MS$1, k as withLock$1, w as getStateAdapter } from "./profile-C3TEFAVI.js";
16
+ import { Bt as hasRunnableConversationWork$1, Dt as hasRunnableConversationWork, Et as getConversationWorkState, F as effectiveTaskOutcomes, Ht as isInvalidConversationRecordError, It as stopConversationWork, Kt as buildDeterministicAssistantMessageId, Mt as removeActiveConversation, Ot as listActiveConversationIds, Pt as requestConversationWork, Rt as CONVERSATION_WORK_STALE_ENQUEUE_MS, S as withScheduledAutomationLock, Tt as getConversation, U as findMatchingEventAutomations, X as getEventCatalog, a as requestAttachmentDeletion, b as saveScheduledAutomationInLock, c as parseSlackThreadId, g as listScheduledAutomationsForTeam, h as listScheduledAutomations, o as storeAttachment, pt as appendAndEnqueueInboundMessage, qt as buildDeterministicTurnId, r as collectAttachmentGarbage, tt as eventGuidance, v as readScheduledAutomation, vt as clearExpiredConversationLease, w as scheduledRunSchema, wt as ensureConversationWake, x as scheduledRunId, z as collectEventAutomationMatchKeys } from "./stats-BfUFTUrM.js";
17
+ import { S as startActiveTurn, _ as isTurnInputCommitLostError, b as markTurnCompleted, d as ConversationTurnBoundaryError, f as CooperativeTurnYieldError, g as isCooperativeTurnYieldError, h as getConversationTurnBoundaryError, m as TurnInputDeferredError, p as TurnInputCommitLostError, r as clearPendingAuth, s as getAssistantReplyText, v as isTurnInputDeferredError, x as markTurnFailed, y as markTurnClosed } from "./pending-auth-DuSNoTpn.js";
18
+ import { h as postSlackMessage, i as formatProviderLabel, s as startOAuthFlow, t as createAgentRunner, v as RetryableDeliveryError } from "./agent-runner-DMMa36Zl.js";
19
+ import { a as EVENT_SYSTEM_ACTOR, i as EVENT_MESSAGE_AUTHOR, o as isEventConversationMessage } from "./prompt-BkaHwBW0.js";
20
+ import { f as setSandboxResourceConfig, u as getSandboxResourceConfig } from "./resolve-BABNNBLL.js";
21
21
  import { l as conversationQueueMessageSchema, n as resolveConversationWorkQueueTopic, r as verifyConversationQueueMessage, t as getVercelConversationWorkQueue, u as isConversationQueueMessageRejectedError } from "./vercel-queue-DIkVcfK4.js";
22
- import { a as getTurnRequestDeadline, i as verifyWorkspaceSnapshotJobMessage, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-DjgMEeqJ.js";
22
+ import { a as getTurnRequestDeadline, i as verifyWorkspaceSnapshotJobMessage, t as WORKSPACE_SNAPSHOT_JOB_QUEUE_TOPIC } from "./job-queue-B1k3woMW.js";
23
23
  import { i as setExperimentalFeatures, n as getExperimentalFeatures, r as isExperimentalFeatureEnabled } from "./experimental-CIXf7Uye.js";
24
- import { n as validatePluginRegistrations, t as validatePluginEgressCredentialHooks } from "./validation-CGkLLzS9.js";
24
+ import { n as validatePluginRegistrations, t as validatePluginEgressCredentialHooks } from "./validation-CMERqrCD.js";
25
25
  import { a as pluginRuntimeRegistrationsFromPluginSet, n as pluginCatalogConfigFromEnv, r as pluginCatalogConfigFromPluginSet, t as defineJuniorPlugins } from "./plugins-egKWjgue.js";
26
- import { a as webActorFromEmail, f as lookupSlackUser, h as GET$3, i as recordWebConversationActivity, l as resolveSlackChannelTypeFromMessage, m as createVercelAttachmentStorage, n as conversationTurnIdForMessage, o as resolveConversationDestination, p as legacyWebMailboxMetadataSchema, s as conversationVisibilityFromSlackChannelType, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContext } from "./web-input-CQrFGEv9.js";
27
- import { u as recordAutomationExecution } from "./execution-stats-G61-pwq6.js";
28
- import { _ as markDispatchCompleted, a as claimDispatchMailboxAppend, c as getDispatchConversationId, d as getDispatchTurnId, f as getPluginDispatchProjection, g as markDispatchBlocked, h as markDispatchAwaitingResume, i as resolveTurnSessionRouting, l as getDispatchInputMessageId, m as listPendingDispatchMailboxAppends, n as scheduleSessionCompletedPluginTasks, o as confirmDispatchMailboxAppend, p as isTerminalDispatchStatus, s as createOrGetDispatch, t as processPluginTask, u as getDispatchRecord, v as markDispatchFailed, y as markDispatchRunning } from "./task-runner-Bg2trvKT.js";
29
- import { i as resolveAgentInvocationId, o as listPendingAgentInvocationMailboxAppends, r as enqueueAgentInvocation, t as createAgentInvocationWorker } from "./work-lRFwhKJe.js";
30
- import { n as getTurnLifecycle, t as ConversationTurnLifecycleService } from "./turn-lifecycle-ClF1kY55.js";
31
- import { n as executeTurn, t as AgentRunError } from "./turn-execution-CgCTt4YP.js";
32
- import { a as persistThreadState, i as persistThreadRuntimeState, n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState, t as getLocationConfigurationService } from "./thread-state-D4zlHEq1.js";
33
- import { a as requireTurnFailureEventId, d as buildDeliveredTurnStatePatch, i as getAgentTurnDiagnosticsAttributes, l as getTurnUserReplyAttachmentContext, n as persistAuthPauseTurnState, r as finalizeFailedTurnReplyWithEvent, s as getTurnUserMessage, t as completeAuthPauseTurn, u as getTurnUserSlackMessageTs } from "./auth-pause-state-nAyuKldT.js";
34
- import { a as registerVercelPluginTaskDevConsumer, n as createVercelPluginTaskCallback, s as queueCallback } from "./task-queue-a2aXjkx2.js";
35
- import { C as isSlackTitlePermissionError, D as createSlackAdapterAssistantStatusSession, E as splitSlackReplyText, S as isRetryableSlackPostError, T as buildSlackOutputMessage, _ as getThreadId, a as GET$4, b as getSlackApiErrorCode, c as wakePausedTurn, d as shouldKeepProcessingReactionForToolInvocation, f as startProcessingReaction, g as getRunId, h as getMessageTs, i as publishAppHomeView, l as resumeSlackTurn, m as getChannelId, o as createPausedTurns, p as getAssistantThreadContext, r as GET$5, s as getPausedTurnRequest, t as receiveLocalOAuthCredential, u as buildAuthPauseResponse, v as getThreadTs, w as sendSlackReply, x as getSlackErrorObservabilityAttributes, y as stripLeadingBotMention } from "./credential-sync-BOcckr3l.js";
36
- import { n as deleteWebAuthorization, t as createWebAuthorization } from "./web-authorization-DCSwmiua.js";
37
- import { t as processConversationWork } from "./worker-BV4FekSX.js";
38
- import { t as bindSpawnAgent } from "./spawn-BmZvmNYc.js";
26
+ import { a as webActorFromEmail, f as lookupSlackUser, h as GET$3, i as recordWebConversationActivity, l as resolveSlackChannelTypeFromMessage, m as createVercelAttachmentStorage, n as conversationTurnIdForMessage, o as resolveConversationDestination, p as legacyWebMailboxMetadataSchema, s as conversationVisibilityFromSlackChannelType, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContext } from "./web-input-Bdh_rCZ7.js";
27
+ import { u as recordAutomationExecution } from "./execution-stats-vnXVMVeu.js";
28
+ import { _ as markDispatchCompleted, a as claimDispatchMailboxAppend, c as getDispatchConversationId, d as getDispatchTurnId, f as getPluginDispatchProjection, g as markDispatchBlocked, h as markDispatchAwaitingResume, i as resolveTurnSessionRouting, l as getDispatchInputMessageId, m as listPendingDispatchMailboxAppends, n as scheduleSessionCompletedPluginTasks, o as confirmDispatchMailboxAppend, p as isTerminalDispatchStatus, s as createOrGetDispatch, t as processPluginTask, u as getDispatchRecord, v as markDispatchFailed, y as markDispatchRunning } from "./task-runner-6tzKHNbM.js";
29
+ import { i as resolveAgentInvocationId, o as listPendingAgentInvocationMailboxAppends, r as enqueueAgentInvocation, t as createAgentInvocationWorker } from "./work-DCwaUeWu.js";
30
+ import { n as getTurnLifecycle, t as ConversationTurnLifecycleService } from "./turn-lifecycle-CxAtVANu.js";
31
+ import { n as executeTurn, t as AgentRunError } from "./turn-execution-eVhqozjK.js";
32
+ import { a as persistThreadState, i as persistThreadRuntimeState, n as getPersistedSandboxState, o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState, t as getLocationConfigurationService } from "./thread-state-CD_fsyrM.js";
33
+ import { a as requireTurnFailureEventId, d as buildDeliveredTurnStatePatch, i as getAgentTurnDiagnosticsAttributes, l as getTurnUserReplyAttachmentContext, n as persistAuthPauseTurnState, r as finalizeFailedTurnReplyWithEvent, s as getTurnUserMessage, t as completeAuthPauseTurn, u as getTurnUserSlackMessageTs } from "./auth-pause-state-TdhAyYM4.js";
34
+ import { a as registerVercelPluginTaskDevConsumer, n as createVercelPluginTaskCallback, s as queueCallback } from "./task-queue-VdYCCwO0.js";
35
+ import { C as isSlackTitlePermissionError, D as createSlackAdapterAssistantStatusSession, E as splitSlackReplyText, S as isRetryableSlackPostError, T as buildSlackOutputMessage, _ as getThreadId, a as GET$4, b as getSlackApiErrorCode, c as wakePausedTurn, d as shouldKeepProcessingReactionForToolInvocation, f as startProcessingReaction, g as getRunId, h as getMessageTs, i as publishAppHomeView, l as resumeSlackTurn, m as getChannelId, o as createPausedTurns, p as getAssistantThreadContext, r as GET$5, s as getPausedTurnRequest, t as receiveLocalOAuthCredential, u as buildAuthPauseResponse, v as getThreadTs, w as sendSlackReply, x as getSlackErrorObservabilityAttributes, y as stripLeadingBotMention } from "./credential-sync-Dqg2o90r.js";
36
+ import { n as deleteWebAuthorization, t as createWebAuthorization } from "./web-authorization-Dq2NDhY0.js";
37
+ import { t as processConversationWork } from "./worker-grswNVoc.js";
38
+ import { t as bindSpawnAgent } from "./spawn-C-fAS-Rk.js";
39
39
  import { createRequire } from "node:module";
40
40
  import { pathToFileURL } from "node:url";
41
41
  import { Hono } from "hono";
@@ -4460,106 +4460,6 @@ function recordSkippedConversationMessage(args) {
4460
4460
  });
4461
4461
  }
4462
4462
  //#endregion
4463
- //#region src/chat/ingress/message-changed.ts
4464
- function getEditedMentionMessageId(messageTs) {
4465
- return `${messageTs}:message_changed_mention`;
4466
- }
4467
- function isMessageChangedEnvelope(value) {
4468
- if (!value || typeof value !== "object") return false;
4469
- const v = value;
4470
- if (v.type !== "event_callback") return false;
4471
- const event = v.event;
4472
- if (!event || typeof event !== "object") return false;
4473
- return event.type === "message" && event.subtype === "message_changed" && typeof event.channel === "string" && typeof event.message === "object" && event.message !== null && typeof event.previous_message === "object" && event.previous_message !== null;
4474
- }
4475
- function getAttachmentType(mimeType) {
4476
- if (mimeType?.startsWith("image/")) return "image";
4477
- if (mimeType?.startsWith("video/")) return "video";
4478
- if (mimeType?.startsWith("audio/")) return "audio";
4479
- return "file";
4480
- }
4481
- function extractEditedMessageAttachments(files) {
4482
- if (!files || files.length === 0) return [];
4483
- return files.map((file) => ({
4484
- type: getAttachmentType(file.mimetype),
4485
- url: file.url_private_download ?? file.url_private,
4486
- name: file.name,
4487
- mimeType: file.mimetype,
4488
- size: file.size,
4489
- width: file.original_w,
4490
- height: file.original_h
4491
- }));
4492
- }
4493
- /**
4494
- * Inspect a raw parsed Slack webhook body and extract a synthesized mention
4495
- * event when a `message_changed` edit newly adds the bot's @mention.
4496
- *
4497
- * Returns `null` when the payload is not a qualifying `message_changed` event.
4498
- */
4499
- function extractMessageChangedMention(body, botUserId, adapter) {
4500
- if (!isMessageChangedEnvelope(body)) return null;
4501
- const { event } = body;
4502
- const newText = event.message.text ?? "";
4503
- const prevText = event.previous_message.text ?? "";
4504
- if (!textMentionsBot(newText, botUserId)) return null;
4505
- if (textMentionsBot(prevText, botUserId)) return null;
4506
- const channelId = event.channel;
4507
- const messageTs = event.message.ts;
4508
- const threadTs = event.message.thread_ts ?? messageTs;
4509
- const userId = parseActorUserId(event.message.user);
4510
- if (!userId) return null;
4511
- const threadId = `slack:${channelId}:${threadTs}`;
4512
- const teamId = typeof body.team_id === "string" ? body.team_id : void 0;
4513
- const userTeam = typeof event.message.user_team === "string" ? event.message.user_team : void 0;
4514
- const sourceTeam = typeof event.message.source_team === "string" ? event.message.source_team : void 0;
4515
- const botId = typeof event.message.bot_id === "string" ? event.message.bot_id : void 0;
4516
- const channelType = typeof event.channel_type === "string" ? event.channel_type : void 0;
4517
- const raw = {
4518
- channel: channelId,
4519
- ...channelType ? { channel_type: channelType } : void 0,
4520
- ts: messageTs,
4521
- thread_ts: threadTs,
4522
- user: userId,
4523
- ...teamId ? { team_id: teamId } : void 0,
4524
- ...userTeam ? { user_team: userTeam } : void 0,
4525
- ...sourceTeam ? { source_team: sourceTeam } : void 0,
4526
- ...botId ? { bot_id: botId } : void 0
4527
- };
4528
- const message = new Message({
4529
- id: getEditedMentionMessageId(messageTs),
4530
- threadId,
4531
- text: newText,
4532
- isMention: true,
4533
- attachments: extractEditedMessageAttachments(event.message.files),
4534
- metadata: {
4535
- dateSent: /* @__PURE__ */ new Date(Number(messageTs) * 1e3),
4536
- edited: true
4537
- },
4538
- formatted: {
4539
- type: "root",
4540
- children: []
4541
- },
4542
- raw,
4543
- author: {
4544
- userId,
4545
- userName: "",
4546
- fullName: "",
4547
- isBot: Boolean(botId),
4548
- isMe: userId === botUserId
4549
- }
4550
- });
4551
- Object.defineProperty(message, "adapter", {
4552
- configurable: true,
4553
- enumerable: false,
4554
- value: adapter,
4555
- writable: true
4556
- });
4557
- return {
4558
- threadId,
4559
- message
4560
- };
4561
- }
4562
- //#endregion
4563
4463
  //#region src/chat/ingress/workspace-membership.ts
4564
4464
  /**
4565
4465
  * Return true when a Slack event's author is from an external workspace.
@@ -4905,24 +4805,6 @@ async function routeParsedMessage(args) {
4905
4805
  state: args.state
4906
4806
  });
4907
4807
  }
4908
- async function handleMessageChanged(args) {
4909
- if (!isMessageChangedEnvelope(args.body)) return false;
4910
- const botUserId = args.adapter.botUserId;
4911
- if (!botUserId) throw new Error("Slack bot identity is unresolved; cannot classify message_changed event");
4912
- const result = extractMessageChangedMention(args.body, botUserId, args.adapter);
4913
- if (!result || shouldIgnoreMessage(result.message)) return true;
4914
- await persistSlackMessage({
4915
- adapter: args.adapter,
4916
- installation: args.installation,
4917
- message: result.message,
4918
- conversationStore: args.conversationStore,
4919
- queue: args.queue,
4920
- receivedAtMs: args.receivedAtMs,
4921
- route: "mention",
4922
- state: args.state
4923
- });
4924
- return true;
4925
- }
4926
4808
  async function handleSlackEvent(args) {
4927
4809
  const event = args.body.event;
4928
4810
  if (!event) return;
@@ -4948,15 +4830,6 @@ async function handleSlackEvent(args) {
4948
4830
  installation,
4949
4831
  state,
4950
4832
  task: async () => {
4951
- if (await handleMessageChanged({
4952
- adapter,
4953
- body: args.body,
4954
- installation,
4955
- conversationStore: args.services.conversationStore,
4956
- queue: args.services.queue,
4957
- receivedAtMs,
4958
- state
4959
- })) return;
4960
4833
  if (event.type === "assistant_thread_started") {
4961
4834
  const assistantThread = event.assistant_thread;
4962
4835
  if (assistantThread?.channel_id && assistantThread.thread_ts) await args.services.runtime.handleAssistantThreadStarted({
@@ -6006,7 +5879,7 @@ function createSlackTurn(deps) {
6006
5879
  }));
6007
5880
  await options.onTurnStatePersisted?.();
6008
5881
  } catch (error) {
6009
- logException(/* @__PURE__ */ new Error("Accepted assistant message persistence failed"), "slack.assistant.message_post_delivery_persist.failed", { "error.type": error instanceof Error ? error.name : typeof error });
5882
+ logException(error, "slack.assistant.message_post_delivery_persist.failed");
6010
5883
  }
6011
5884
  if (slackTs && options.execution?.dispatch?.id) try {
6012
5885
  await persistWithRetry(() => recordTurnSummary({
@@ -7347,7 +7220,7 @@ async function commitAssistantMessage(args) {
7347
7220
  providerConversationBindings: args.deliveryResult?.providerConversationBindings
7348
7221
  }));
7349
7222
  } catch (error) {
7350
- logException(/* @__PURE__ */ new Error("Assistant message persistence failed"), "conversation.assistant.message_persist.failed", { "error.type": error instanceof Error ? error.name : typeof error });
7223
+ logException(error, "conversation.assistant.message_persist.failed");
7351
7224
  }
7352
7225
  }
7353
7226
  //#endregion
@@ -1,10 +1,10 @@
1
- import { _ as findProviderError, h as ProviderError, v as getProviderErrorAttributes, y as getProviderErrorUserMessage } from "./client-DVKLZG01.js";
2
- import { t as buildTurnFailureResponse } from "./logging-1iHJtqBM.js";
1
+ import { _ as findProviderError, h as ProviderError, v as getProviderErrorAttributes, y as getProviderErrorUserMessage } from "./client-DIe9JhwF.js";
2
+ import { t as buildTurnFailureResponse } from "./logging-D2YJv_PA.js";
3
3
  import { _ as parseSlackMessageTs } from "./context-Bplcgypl.js";
4
- import { Y as hydrateConversationMessages, ot as markConversationMessage } from "./checkpoint-Cc7ba7dw.js";
5
- import { qt as buildDeterministicTurnId } from "./stats-BtMLD1n8.js";
6
- import { b as markTurnCompleted, r as clearPendingAuth, y as markTurnClosed } from "./pending-auth-B2qOCIx1.js";
7
- import { o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-D4zlHEq1.js";
4
+ import { Y as hydrateConversationMessages, ot as markConversationMessage } from "./checkpoint-B2-uc-1h.js";
5
+ import { qt as buildDeterministicTurnId } from "./stats-BfUFTUrM.js";
6
+ import { b as markTurnCompleted, r as clearPendingAuth, y as markTurnClosed } from "./pending-auth-DuSNoTpn.js";
7
+ import { o as persistThreadStateById, r as getPersistedThreadState, s as coerceThreadConversationState } from "./thread-state-CD_fsyrM.js";
8
8
  //#region src/chat/runtime/delivered-turn-state.ts
9
9
  /** Build state after destination delivery or intentional no-reply completion. */
10
10
  function buildDeliveredTurnStatePatch(args) {
@@ -1,7 +1,7 @@
1
- import { r as completeObject } from "./client-DVKLZG01.js";
1
+ import { r as completeObject } from "./client-DIe9JhwF.js";
2
2
  import { n as defaultModelId } from "./model-profile-CZmVoGdX.js";
3
- import { N as parseBriefInput, d as conversationDetailReportSchema, k as briefCodeChangeSchema, p as conversationEventPageSchema } from "./conversation-BpqLg4MM.js";
4
- import { n as briefEntriesFromReportEvents, s as generateBrief, t as BRIEF_PROMPT } from "./prompt-DAoaq0CT.js";
3
+ import { N as parseBriefInput, d as conversationDetailReportSchema, k as briefCodeChangeSchema, p as conversationEventPageSchema } from "./conversation-BSRGzJmY.js";
4
+ import { n as briefEntriesFromReportEvents, s as generateBrief, t as BRIEF_PROMPT } from "./prompt-BkaHwBW0.js";
5
5
  import { CLI_USAGE } from "./cli/run.js";
6
6
  import path from "node:path";
7
7
  import { z } from "zod";
@@ -269,7 +269,7 @@ async function parseRunOptions(argv) {
269
269
  * `DATABASE_URL` at import, and `briefs pull` must work with only a token.
270
270
  */
271
271
  async function configuredDefaultModelId() {
272
- const { botConfig } = await import("./config-BXIOxlCK.js").then((n) => n.r);
272
+ const { botConfig } = await import("./config-0_JixokJ.js").then((n) => n.r);
273
273
  return defaultModelId(botConfig);
274
274
  }
275
275
  function apiUrl(baseUrl, pathname) {
@@ -1,5 +1,5 @@
1
1
  import { t as __exportAll } from "./rolldown-runtime-B4FMCO8f.js";
2
- import { t as createPluginCatalogRuntime } from "./registry-C0DT9wqc.js";
2
+ import { t as createPluginCatalogRuntime } from "./registry-Bp0kd2xe.js";
3
3
  //#region src/chat/plugins/catalog-runtime.ts
4
4
  var catalog_runtime_exports = /* @__PURE__ */ __exportAll({ pluginCatalogRuntime: () => pluginCatalogRuntime });
5
5
  const pluginCatalogRuntime = createPluginCatalogRuntime();
@@ -1,11 +1,11 @@
1
- import { i as completeText, m as escapeXml, o as resolveGatewayModel, p as unwrapCurrentInstruction } from "./client-DVKLZG01.js";
2
- import { _ as setSpanAttributes, f as logWarn, o as getActiveTraceId, t as buildTurnFailureResponse, u as logException } from "./logging-1iHJtqBM.js";
3
- import { n as botConfig } from "./config-BXIOxlCK.js";
1
+ import { i as completeText, m as escapeXml, o as resolveGatewayModel, p as unwrapCurrentInstruction } from "./client-DIe9JhwF.js";
2
+ import { _ as setSpanAttributes, f as logWarn, o as getActiveTraceId, t as buildTurnFailureResponse, u as logException } from "./logging-D2YJv_PA.js";
3
+ import { n as botConfig } from "./config-0_JixokJ.js";
4
4
  import { _ as parseSlackMessageTs, f as toStoredSlackActor } from "./context-Bplcgypl.js";
5
- import { Bt as authenticationUnlinkedEvent, Ht as getConversationEventStore, Jt as withConversationEventLock, Kt as getSqlExecutor, Lt as JUNIOR_NATIVE_EVENT_NAMESPACE, Qt as bindProviderConversation, Rt as agentsInstructionsUpdatedEvent, Wt as getConversationStore, Yt as sanitizePostgresJson, en as addAgentTurnUsage, qt as createSqlConversationEventStore, zt as authenticationLinkedEvent } from "./agent-hooks-CKaIOT4I.js";
6
- import { F as agentHistoryItemSchema, H as contextProvenance, U as instructionActors, W as instructionProvenanceFor } from "./conversation-BpqLg4MM.js";
7
- import { n as generateShortTitle, t as fallbackShortTitle } from "./short-title-C7tWtQQy.js";
8
- import { A as sleep, D as fenceLock, T as MUTATION_LOCK_TTL_MS, k as withLock, w as getStateAdapter } from "./profile-B4e6XN37.js";
5
+ import { Bt as authenticationUnlinkedEvent, Ht as getConversationEventStore, Jt as withConversationEventLock, Kt as getSqlExecutor, Lt as JUNIOR_NATIVE_EVENT_NAMESPACE, Qt as bindProviderConversation, Rt as agentsInstructionsUpdatedEvent, Wt as getConversationStore, Yt as sanitizePostgresJson, en as addAgentTurnUsage, qt as createSqlConversationEventStore, zt as authenticationLinkedEvent } from "./agent-hooks-kjLDY-Aa.js";
6
+ import { F as agentHistoryItemSchema, H as contextProvenance, U as instructionActors, W as instructionProvenanceFor } from "./conversation-BSRGzJmY.js";
7
+ import { n as generateShortTitle, t as fallbackShortTitle } from "./short-title-C2fM-ERl.js";
8
+ import { A as sleep, D as fenceLock, T as MUTATION_LOCK_TTL_MS, k as withLock, w as getStateAdapter } from "./profile-C3TEFAVI.js";
9
9
  import { isDeepStrictEqual } from "node:util";
10
10
  import { z } from "zod";
11
11
  import { createHash } from "node:crypto";
package/dist/cli/chat.js CHANGED
@@ -1,5 +1,5 @@
1
- import { t as executeAgentRun } from "../agent-DFeJ0yVy.js";
2
- import { t as createAgentRunner } from "../agent-runner-DifJddqY.js";
1
+ import { t as executeAgentRun } from "../agent-CFrfUdN5.js";
2
+ import { t as createAgentRunner } from "../agent-runner-DMMa36Zl.js";
3
3
  import { t as loadAppPluginSet } from "../plugin-module-BKGOXca2.js";
4
4
  import path from "node:path";
5
5
  import { createHash, randomUUID } from "node:crypto";
@@ -101,10 +101,10 @@ async function loadLocalPluginSet() {
101
101
  async function configureLocalChatPlugins(pluginSet) {
102
102
  const [pluginsModule, agentHooksModule, catalogRuntimeModule, validationModule, databaseModule] = await Promise.all([
103
103
  import("../plugins-egKWjgue.js").then((n) => n.o),
104
- import("../agent-hooks-CKaIOT4I.js").then((n) => n.t),
105
- import("../catalog-runtime-v3x4peOv.js").then((n) => n.t),
106
- import("../validation-CGkLLzS9.js").then((n) => n.r),
107
- import("../agent-hooks-CKaIOT4I.js").then((n) => n.Vt)
104
+ import("../agent-hooks-kjLDY-Aa.js").then((n) => n.t),
105
+ import("../catalog-runtime-D1v0KsgY.js").then((n) => n.t),
106
+ import("../validation-CMERqrCD.js").then((n) => n.r),
107
+ import("../agent-hooks-kjLDY-Aa.js").then((n) => n.Vt)
108
108
  ]);
109
109
  const resolvedPluginSet = pluginSet === void 0 ? await loadLocalPluginSet() : pluginSet ?? void 0;
110
110
  const plugins = pluginsModule.pluginRuntimeRegistrationsFromPluginSet(resolvedPluginSet);
@@ -156,16 +156,16 @@ async function prepareLocalChatRun(io, pluginSet) {
156
156
  await configureLocalChatPlugins(pluginSet);
157
157
  const { setExperimentalFeatures } = await import("../experimental-CIXf7Uye.js").then((n) => n.t);
158
158
  setExperimentalFeatures({ subagents: true });
159
- const { setBriefsConfig } = await import("../agent-hooks-CKaIOT4I.js").then((n) => n.m);
159
+ const { setBriefsConfig } = await import("../agent-hooks-kjLDY-Aa.js").then((n) => n.m);
160
160
  setBriefsConfig({ enabled: true });
161
- const { runLocalAgentTurn } = await import("../runner-RE9Lp-M8.js");
162
- const { startLocalOAuthCallbackServer } = await import("../oauth-callback-server-wwYSbTaU.js");
161
+ const { runLocalAgentTurn } = await import("../runner-Bvn90ijl.js");
162
+ const { startLocalOAuthCallbackServer } = await import("../oauth-callback-server-BQtO5l5M.js");
163
163
  const { createLocalOAuthState } = await import("../oauth-relay-CdCnu80W.js").then((n) => n.t);
164
- const { createLocalSandboxEgressSignalTransport } = await import("../sandbox-egress-signals-BqkV7azF.js");
165
- const { bindSpawnAgent } = await import("../spawn-BmZvmNYc.js").then((n) => n.n);
166
- const { createAgentInvocationWorker, routeAgentInvocationWork } = await import("../work-lRFwhKJe.js").then((n) => n.a);
164
+ const { createLocalSandboxEgressSignalTransport } = await import("../sandbox-egress-signals-DLfYAOiO.js");
165
+ const { bindSpawnAgent } = await import("../spawn-C-fAS-Rk.js").then((n) => n.n);
166
+ const { createAgentInvocationWorker, routeAgentInvocationWork } = await import("../work-DCwaUeWu.js").then((n) => n.a);
167
167
  const { createLocalConversationWork } = await import("../conversation-work-C6y3T5Hx.js");
168
- const { processConversationWork } = await import("../worker-BV4FekSX.js").then((n) => n.n);
168
+ const { processConversationWork } = await import("../worker-grswNVoc.js").then((n) => n.n);
169
169
  let agentRunner;
170
170
  const localConversationWork = createLocalConversationWork(async (message) => {
171
171
  if (!agentRunner) throw new Error("Local agent runner is not ready");
package/dist/cli/check.js CHANGED
@@ -1,6 +1,6 @@
1
- import { E as JUNIOR_HEARTBEAT_ROUTE, j as LEGACY_JUNIOR_CONVERSATION_WORK_FUNCTION, w as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE } from "../logging-1iHJtqBM.js";
2
- import { f as parseInlinePluginManifest, p as parsePluginManifest } from "../registry-C0DT9wqc.js";
3
- import { i as parseSkillFile } from "../skills-B6OcxCOp.js";
1
+ import { E as JUNIOR_HEARTBEAT_ROUTE, j as LEGACY_JUNIOR_CONVERSATION_WORK_FUNCTION, w as JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE } from "../logging-D2YJv_PA.js";
2
+ import { f as parseInlinePluginManifest, p as parsePluginManifest } from "../registry-Bp0kd2xe.js";
3
+ import { i as parseSkillFile } from "../skills-D1otDVYp.js";
4
4
  import { pathToFileURL } from "node:url";
5
5
  import path from "node:path";
6
6
  import fs from "node:fs/promises";
package/dist/cli/main.js CHANGED
@@ -25,7 +25,7 @@ async function runChat(argv, pluginSet) {
25
25
  return await (await import("./chat.js")).runChat(argv, void 0, { pluginSet });
26
26
  }
27
27
  async function runBriefs(argv) {
28
- return await (await import("../briefs-D2iu2JPg.js")).runBriefs(argv);
28
+ return await (await import("../briefs-CIN2DMSo.js")).runBriefs(argv);
29
29
  }
30
30
  function topLevelCommand(argv) {
31
31
  return (argv[0] === "--" ? argv.slice(1) : argv)[0];