@sentry/junior 0.267.0 → 0.268.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 (80) hide show
  1. package/dist/{actor-DZSokpwj.js → actor-CP9K2Idu.js} +2 -1
  2. package/dist/{adapter-BybMEezj.js → adapter-04AcD2SO.js} +4 -6
  3. package/dist/{admin-DOs1_EiW.js → admin-DIU1QyG3.js} +1 -1
  4. package/dist/{agent-invocations-CxKldAeB.js → agent-invocations-C1RNOCs8.js} +2 -0
  5. package/dist/{agent-runner-DgNATN4D.js → agent-runner-CAYfFmU7.js} +4409 -3020
  6. package/dist/api/schema.d.ts +2 -5629
  7. package/dist/api/schema.js +4 -4
  8. package/dist/api.d.ts +1 -1
  9. package/dist/api.js +154 -32
  10. package/dist/{app-DAB3fzyp.d.ts → app-z6Uuyq3j.d.ts} +3 -2
  11. package/dist/app.d.ts +1 -1
  12. package/dist/app.js +332 -98
  13. package/dist/{briefs-CWKjka7v.js → briefs-DQbV2jNr.js} +2 -2
  14. package/dist/{catalog-runtime-cMlAI5LY.js → catalog-runtime-BD9GSpc6.js} +1 -1
  15. package/dist/cli/chat.js +15 -15
  16. package/dist/cli/check.js +3 -3
  17. package/dist/cli/main.js +3 -3
  18. package/dist/cli/plugins.js +4 -4
  19. package/dist/cli/snapshot-create.js +4 -4
  20. package/dist/cli/upgrade.d.ts +1 -1
  21. package/dist/cli/upgrade.js +3 -3
  22. package/dist/{client-BjgbMawj.js → client-C1yDYjoS.js} +2 -2
  23. package/dist/{config-CdB6yJj5.js → config-DrTeF80T.js} +2 -2
  24. package/dist/{connections-RE_65jzK.js → connections-D46f8vvi.js} +10 -11
  25. package/dist/{conversation-privacy-BzgJC5k0.js → conversation-privacy-CxlOCiUo.js} +1 -1
  26. package/dist/{credential-sync-DhEGEpgq.js → credential-sync-sm9fegLY.js} +29 -34
  27. package/dist/{credentialed-CIGwoLU2.js → credentialed-lukuD-cc.js} +39 -13
  28. package/dist/db-BU4LQD8s.d.ts +6 -0
  29. package/dist/{executor-VYrx_K4w.js → executor-4vhvsMZJ.js} +78 -4
  30. package/dist/instrumentation.js +2 -2
  31. package/dist/{assistant-reply-CT7VcXQe.js → interruption-marker-CkncDT8d.js} +8 -2
  32. package/dist/{job-queue-C0BZSa7r.js → job-queue-In9QKz-I.js} +2 -2
  33. package/dist/{list-1XQP-o6K.js → list-BkgnXEEB.js} +298 -807
  34. package/dist/{logging-DuZ1A4ab.js → logging-DLSpkSSr.js} +1 -1
  35. package/dist/{message-NKSbbnA6.js → message-BObyg59s.js} +4 -4
  36. package/dist/nitro.d.ts +1 -1
  37. package/dist/nitro.js +3 -3
  38. package/dist/{oauth-callback-server-qAHLPtml.js → oauth-callback-server-B-WbSdoH.js} +2 -2
  39. package/dist/{registry-FQutO926.js → registry-BgecKva0.js} +2 -2
  40. package/dist/{web-message-id-CJSUiksE.js → reporting-window-DVCD_10C.js} +1 -10
  41. package/dist/{resolve-Bk4yeuHy.js → resolve-Cpa4Bu1O.js} +3 -3
  42. package/dist/{result-B9e9ATOU.js → result-D3TSmZZ8.js} +8 -8
  43. package/dist/{runner-C3S2ObH-.js → runner-DS5OKhEp.js} +10 -10
  44. package/dist/{sandbox-egress-signals-DqpGzzMB.js → sandbox-egress-signals-CnDjY5rx.js} +1 -1
  45. package/dist/{schema-X7Fj4fv1.js → schema-0050HFnB.js} +80 -4
  46. package/dist/schema-ZngqcOWM.d.ts +5813 -0
  47. package/dist/{service-account-Do30HUNv.js → service-account-CKV2WTY7.js} +3 -3
  48. package/dist/{service-account-BQasl-qq.js → service-account-DGjnDw9y.js} +3 -3
  49. package/dist/{session-stop-DkOjt46_.js → session-stop-Dam1EI7B.js} +494 -18
  50. package/dist/{skills-CQHrwfOa.js → skills-CfAnfImD.js} +2 -2
  51. package/dist/{spawn-BHuqN14f.js → spawn-cmq9p4Ly.js} +2 -2
  52. package/dist/{store-6EetVP-m.js → store-C5PN02QO.js} +4 -4
  53. package/dist/{store-B8CABbmR.d.ts → store-xMuuXRE0.d.ts} +13 -7
  54. package/dist/{store-DvNZIsCr.js → store-zPEoJPBB.js} +3 -3
  55. package/dist/{task-queue-B0DLgd2P.js → task-queue-_mf28dSu.js} +3 -3
  56. package/dist/{task-runner-B-PD_JOj.js → task-runner-DMI2prDO.js} +11 -12
  57. package/dist/{tasks-0ilmuCux.js → tasks-SB9z-VTU.js} +124 -21
  58. package/dist/{thread-state-DRmdJ2QN.js → thread-state-BbbPh0Sn.js} +8 -18
  59. package/dist/{turn-failure-response-G11cs2gE.js → turn-failure-response-BKKmnMB5.js} +10 -15
  60. package/dist/{turn-lifecycle-OzLIwvi1.js → turn-lifecycle-oP0kVeGz.js} +1 -1
  61. package/dist/{validation-CxEmt1id.js → validation--JsAGLwc.js} +1 -1
  62. package/dist/{version-Bapedn4A.js → version-jHwJp4hC.js} +1 -1
  63. package/dist/version.js +1 -1
  64. package/dist/{viewer-DrN3oC2X.js → viewer-CpXTGlep.js} +323 -235
  65. package/dist/{user-input-request-BDFBdF8r.js → web-message-id-DlHNANtd.js} +17 -1
  66. package/dist/{work-DUQoNcqP.js → work-3N-GHY9m.js} +10 -10
  67. package/dist/{worker-D1l4Ugk0.js → worker-CCdbcItd.js} +6 -6
  68. package/migrations/0065_user_customization.sql +1 -0
  69. package/migrations/0066_review_items.sql +53 -0
  70. package/migrations/0067_review_item_dedupe_tenant.sql +2 -0
  71. package/migrations/0068_review_item_slack_cards.sql +10 -0
  72. package/migrations/meta/0065_snapshot.json +3511 -0
  73. package/migrations/meta/0066_snapshot.json +4099 -0
  74. package/migrations/meta/0067_snapshot.json +3921 -0
  75. package/migrations/meta/0068_snapshot.json +4176 -0
  76. package/migrations/meta/_journal.json +29 -1
  77. package/package.json +5 -5
  78. package/dist/db-Bg-zC3r5.d.ts +0 -5
  79. package/dist/images-CecjXAAz.js +0 -64
  80. package/dist/turn-session-routing-Dyut9l7Y.js +0 -76
@@ -1,7 +1,7 @@
1
1
  import { a as conversationTurnFailureReasonSchema, i as conversationTurnFailureCodeSchema } from "../history-C84mlAwO.js";
2
2
  import { A as createConversationMessageBodySchema, C as conversationReportEventSchema, E as conversationSummaryReportSchema, F as conversationChildAgentTotalsSchema, G as INPUT_IMAGE_TYPES, H as MAX_INPUT_IMAGES, M as forkConversationResponseSchema, N as steerConversationPendingMessagesBodySchema, P as steerConversationPendingMessagesResponseSchema, R as messageCardText, S as conversationReportEventDataSchema, U as MAX_INPUT_IMAGE_BYTES, V as resolveMessageCards, _ as conversationParamsSchema, a as cancelConversationPendingMessagesBodySchema, b as conversationPendingMessageSchema, d as conversationDetailReportSchema, f as conversationEventHistorySchema, g as conversationFeedSchema, h as conversationFeedQuerySchema, i as archiveConversationResponseSchema, j as forkConversationBodySchema, k as createConversationBodySchema, l as conversationAuxiliaryCostsSchema, m as conversationEventsQuerySchema, o as cancelConversationPendingMessagesResponseSchema, p as conversationEventPageSchema, r as archiveConversationBodySchema, s as conversationActivityPreviewSchema, t as acceptedConversationMessageSchema, u as conversationDetailQuerySchema, v as conversationPendingAuthorizationSchema, x as conversationPendingMessagesReportSchema, y as conversationPendingMessageDeliverySchema } from "../conversation-DSo310Ps.js";
3
- import { a as normalizeUserInputAnswer, i as isEmptyUserInputAnswer, n as buttonUserInputField, o as userInputRequestSchema, r as formatUserInputAnswer } from "../user-input-request-BDFBdF8r.js";
3
+ import { a as isEmptyUserInputAnswer, c as USER_CUSTOMIZATION_MAX_CHARS, i as formatUserInputAnswer, l as userCustomizationSchema, o as normalizeUserInputAnswer, r as buttonUserInputField, s as userInputRequestSchema, t as webMessageId } from "../web-message-id-DlHNANtd.js";
4
4
  import { C as eventAutomationSummarySchema, S as automationVersionSchema, _ as automationSummarySchema, a as automationExecutionSchema, b as automationVersionListSchema, d as automationParamsSchema, f as automationRunListSchema, g as automationSchedulePreviewSchema, h as automationScheduleIntentSchema, i as automationExecutionListSchema, l as automationListQuerySchema, m as automationRunWindowsSchema, n as automationEditSchema, o as automationExecutionStatusDaySchema, p as automationRunSchema, r as automationEventCatalogSchema, s as automationExecutionStatusSchema, t as automationEditErrorSchema, u as automationListSchema, v as automationUpdateSchema, w as scheduledAutomationSummarySchema, x as automationVersionParamsSchema, y as automationVersionActivateSchema } from "../automation-CmeFBSEh.js";
5
- import { C as skillReportsSchema, S as skillReportSchema, _ as pluginPackageContentItemReportSchema, b as pluginsSchema, g as pluginOperationalReportSchema, h as pluginOperationalReportFeedSchema, m as healthReportSchema, t as webMessageId, v as pluginPackageContentReportSchema, x as runtimeInfoReportSchema, y as pluginSchema } from "../web-message-id-CJSUiksE.js";
6
- import { B as codeChangeSummarySchema, C as personParamsSchema, D as locationDirectoryReportSchema, E as locationDetailReportSchema, F as connectionSchema, G as codeRepositorySummarySchema, H as codePersonReportSchema, I as disconnectConnectionResponseSchema, J as conversationChildAgentSchema, K as conversationWatchSchema, L as startConnectionResponseSchema, M as dailyConversationActivitySchema, N as connectionListSchema, O as locationParamsSchema, P as connectionParamsSchema, Q as apiErrorSchema, R as codeActivityDaySchema, S as actorProfileReportSchema, T as locationActivityDayReportSchema, U as codeRepositoryParamsSchema, V as codeOverviewReportSchema, W as codeRepositoryReportSchema, X as stopConversationTurnResponseSchema, Y as conversationChildAgentsReportSchema, Z as conversationStatsReportSchema, _ as personalTokenListSchema, a as workspaceBodySchema, b as revokePersonalTokenResponseSchema, c as workspaceRepoSchema, d as serviceAccountListSchema, f as serviceAccountParamsSchema, g as createdPersonalTokenSchema, h as createPersonalTokenBodySchema, i as deleteWorkspaceResponseSchema, l as workspaceSchema, m as startServiceAccountSignInResponseSchema, n as statsReportSchema, o as workspaceListSchema, p as serviceAccountSchema, q as conversationWatchesReportSchema, r as baselineSnapshotSchema, s as workspaceParamsSchema, t as statSchema, u as disconnectServiceAccountResponseSchema, v as personalTokenMetadataSchema, w as personalSpendReportSchema, x as actorDirectoryReportSchema, y as personalTokenParamsSchema, z as codeChangeSummaryReportSchema } from "../schema-X7Fj4fv1.js";
7
- export { INPUT_IMAGE_TYPES, MAX_INPUT_IMAGES, MAX_INPUT_IMAGE_BYTES, acceptedConversationMessageSchema, actorDirectoryReportSchema, actorProfileReportSchema, apiErrorSchema, archiveConversationBodySchema, archiveConversationResponseSchema, automationEditErrorSchema, automationEditSchema, automationEventCatalogSchema, automationExecutionListSchema, automationExecutionSchema, automationExecutionStatusDaySchema, automationExecutionStatusSchema, automationListQuerySchema, automationListSchema, automationParamsSchema, automationRunListSchema, automationRunSchema, automationRunWindowsSchema, automationScheduleIntentSchema, automationSchedulePreviewSchema, automationSummarySchema, automationUpdateSchema, automationVersionActivateSchema, automationVersionListSchema, automationVersionParamsSchema, automationVersionSchema, baselineSnapshotSchema, buttonUserInputField, cancelConversationPendingMessagesBodySchema, cancelConversationPendingMessagesResponseSchema, codeActivityDaySchema, codeChangeSummaryReportSchema, codeChangeSummarySchema, codeOverviewReportSchema, codePersonReportSchema, codeRepositoryParamsSchema, codeRepositoryReportSchema, codeRepositorySummarySchema, connectionListSchema, connectionParamsSchema, connectionSchema, conversationActivityPreviewSchema, conversationAuxiliaryCostsSchema, conversationChildAgentSchema, conversationChildAgentTotalsSchema, conversationChildAgentsReportSchema, conversationDetailQuerySchema, conversationDetailReportSchema, conversationEventHistorySchema, conversationEventPageSchema, conversationEventsQuerySchema, conversationFeedQuerySchema, conversationFeedSchema, conversationParamsSchema, conversationPendingAuthorizationSchema, conversationPendingMessageDeliverySchema, conversationPendingMessageSchema, conversationPendingMessagesReportSchema, conversationReportEventDataSchema, conversationReportEventSchema, conversationStatsReportSchema, conversationSummaryReportSchema, conversationTurnFailureCodeSchema, conversationTurnFailureReasonSchema, conversationWatchSchema, conversationWatchesReportSchema, createConversationBodySchema, createConversationMessageBodySchema, createPersonalTokenBodySchema, createdPersonalTokenSchema, dailyConversationActivitySchema, deleteWorkspaceResponseSchema, disconnectConnectionResponseSchema, disconnectServiceAccountResponseSchema, eventAutomationSummarySchema, forkConversationBodySchema, forkConversationResponseSchema, formatUserInputAnswer, healthReportSchema, isEmptyUserInputAnswer, locationActivityDayReportSchema, locationDetailReportSchema, locationDirectoryReportSchema, locationParamsSchema, messageCardText, normalizeUserInputAnswer, personParamsSchema, personalSpendReportSchema, personalTokenListSchema, personalTokenMetadataSchema, personalTokenParamsSchema, pluginOperationalReportFeedSchema, pluginOperationalReportSchema, pluginPackageContentItemReportSchema, pluginPackageContentReportSchema, pluginSchema, pluginsSchema, resolveMessageCards, revokePersonalTokenResponseSchema, runtimeInfoReportSchema, scheduledAutomationSummarySchema, serviceAccountListSchema, serviceAccountParamsSchema, serviceAccountSchema, skillReportSchema, skillReportsSchema, startConnectionResponseSchema, startServiceAccountSignInResponseSchema, statSchema, statsReportSchema, steerConversationPendingMessagesBodySchema, steerConversationPendingMessagesResponseSchema, stopConversationTurnResponseSchema, userInputRequestSchema, webMessageId, workspaceBodySchema, workspaceListSchema, workspaceParamsSchema, workspaceRepoSchema, workspaceSchema };
5
+ import { S as skillReportsSchema, _ as pluginPackageContentReportSchema, b as runtimeInfoReportSchema, g as pluginPackageContentItemReportSchema, h as pluginOperationalReportSchema, m as pluginOperationalReportFeedSchema, p as healthReportSchema, v as pluginSchema, x as skillReportSchema, y as pluginsSchema } from "../reporting-window-DVCD_10C.js";
6
+ import { $ as conversationWatchSchema, A as personParamsSchema, B as connectionListSchema, C as createdPersonalTokenSchema, D as revokePersonalTokenResponseSchema, E as personalTokenParamsSchema, F as locationParamsSchema, G as codeActivityDaySchema, H as connectionSchema, J as codeOverviewReportSchema, K as codeChangeSummaryReportSchema, M as locationActivityDayReportSchema, N as locationDetailReportSchema, O as actorDirectoryReportSchema, P as locationDirectoryReportSchema, Q as codeRepositorySummarySchema, S as createPersonalTokenBodySchema, T as personalTokenMetadataSchema, U as disconnectConnectionResponseSchema, V as connectionParamsSchema, W as startConnectionResponseSchema, X as codeRepositoryParamsSchema, Y as codePersonReportSchema, Z as codeRepositoryReportSchema, _ as disconnectServiceAccountResponseSchema, a as workspaceBodySchema, at as apiErrorSchema, b as serviceAccountSchema, c as workspaceRepoSchema, d as reviewItemCountSchema, et as conversationWatchesReportSchema, g as reviewItemWaitingConversationsSchema, h as reviewItemSchema, i as deleteWorkspaceResponseSchema, it as conversationStatsReportSchema, j as personalSpendReportSchema, k as actorProfileReportSchema, l as workspaceSchema, n as statsReportSchema, nt as conversationChildAgentsReportSchema, o as workspaceListSchema, p as reviewItemListSchema, q as codeChangeSummarySchema, r as baselineSnapshotSchema, rt as stopConversationTurnResponseSchema, s as workspaceParamsSchema, t as statSchema, tt as conversationChildAgentSchema, u as reviewItemActionSchema, v as serviceAccountListSchema, w as personalTokenListSchema, x as startServiceAccountSignInResponseSchema, y as serviceAccountParamsSchema, z as dailyConversationActivitySchema } from "../schema-0050HFnB.js";
7
+ export { INPUT_IMAGE_TYPES, MAX_INPUT_IMAGES, MAX_INPUT_IMAGE_BYTES, USER_CUSTOMIZATION_MAX_CHARS, acceptedConversationMessageSchema, actorDirectoryReportSchema, actorProfileReportSchema, apiErrorSchema, archiveConversationBodySchema, archiveConversationResponseSchema, automationEditErrorSchema, automationEditSchema, automationEventCatalogSchema, automationExecutionListSchema, automationExecutionSchema, automationExecutionStatusDaySchema, automationExecutionStatusSchema, automationListQuerySchema, automationListSchema, automationParamsSchema, automationRunListSchema, automationRunSchema, automationRunWindowsSchema, automationScheduleIntentSchema, automationSchedulePreviewSchema, automationSummarySchema, automationUpdateSchema, automationVersionActivateSchema, automationVersionListSchema, automationVersionParamsSchema, automationVersionSchema, baselineSnapshotSchema, buttonUserInputField, cancelConversationPendingMessagesBodySchema, cancelConversationPendingMessagesResponseSchema, codeActivityDaySchema, codeChangeSummaryReportSchema, codeChangeSummarySchema, codeOverviewReportSchema, codePersonReportSchema, codeRepositoryParamsSchema, codeRepositoryReportSchema, codeRepositorySummarySchema, connectionListSchema, connectionParamsSchema, connectionSchema, conversationActivityPreviewSchema, conversationAuxiliaryCostsSchema, conversationChildAgentSchema, conversationChildAgentTotalsSchema, conversationChildAgentsReportSchema, conversationDetailQuerySchema, conversationDetailReportSchema, conversationEventHistorySchema, conversationEventPageSchema, conversationEventsQuerySchema, conversationFeedQuerySchema, conversationFeedSchema, conversationParamsSchema, conversationPendingAuthorizationSchema, conversationPendingMessageDeliverySchema, conversationPendingMessageSchema, conversationPendingMessagesReportSchema, conversationReportEventDataSchema, conversationReportEventSchema, conversationStatsReportSchema, conversationSummaryReportSchema, conversationTurnFailureCodeSchema, conversationTurnFailureReasonSchema, conversationWatchSchema, conversationWatchesReportSchema, createConversationBodySchema, createConversationMessageBodySchema, createPersonalTokenBodySchema, createdPersonalTokenSchema, dailyConversationActivitySchema, deleteWorkspaceResponseSchema, disconnectConnectionResponseSchema, disconnectServiceAccountResponseSchema, eventAutomationSummarySchema, forkConversationBodySchema, forkConversationResponseSchema, formatUserInputAnswer, healthReportSchema, isEmptyUserInputAnswer, locationActivityDayReportSchema, locationDetailReportSchema, locationDirectoryReportSchema, locationParamsSchema, messageCardText, normalizeUserInputAnswer, personParamsSchema, personalSpendReportSchema, personalTokenListSchema, personalTokenMetadataSchema, personalTokenParamsSchema, pluginOperationalReportFeedSchema, pluginOperationalReportSchema, pluginPackageContentItemReportSchema, pluginPackageContentReportSchema, pluginSchema, pluginsSchema, resolveMessageCards, reviewItemActionSchema, reviewItemCountSchema, reviewItemListSchema, reviewItemSchema, reviewItemWaitingConversationsSchema, revokePersonalTokenResponseSchema, runtimeInfoReportSchema, scheduledAutomationSummarySchema, serviceAccountListSchema, serviceAccountParamsSchema, serviceAccountSchema, skillReportSchema, skillReportsSchema, startConnectionResponseSchema, startServiceAccountSignInResponseSchema, statSchema, statsReportSchema, steerConversationPendingMessagesBodySchema, steerConversationPendingMessagesResponseSchema, stopConversationTurnResponseSchema, userCustomizationSchema, userInputRequestSchema, webMessageId, workspaceBodySchema, workspaceListSchema, workspaceParamsSchema, workspaceRepoSchema, workspaceSchema };
package/dist/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { n as ConversationWorkQueue } from "./queue-C37RbDVc.js";
2
- import "./db-Bg-zC3r5.js";
2
+ import "./db-BU4LQD8s.js";
3
3
  import { Hono } from "hono";
4
4
  import { z } from "zod";
5
5
  import { User } from "@sentry/junior-plugin-api";
package/dist/api.js CHANGED
@@ -1,29 +1,29 @@
1
- import { D as AutomationConflictError, E as sameDefinitionValue, O as automationRevision, S as automationDefinition, T as readAutomationVersion, a as saveScheduledAutomation, j as automationEventCatalog, k as requireAutomationRevision, v as saveEventAutomation, y as setEventAutomationStatus } from "./tasks-0ilmuCux.js";
2
- import { p as escapeXml } from "./client-BjgbMawj.js";
3
- import { m as logInfo, p as logException } from "./logging-DuZ1A4ab.js";
4
- import { A as resolveRootConversationId, O as agentTurnUsageSchema, a as resolveViewerUser, f as getConversationStore, k as hasAgentTurnUsage, m as getSqlExecutor, p as getDb, s as updateViewerDisplayName, t as findUserByEmail } from "./viewer-DrN3oC2X.js";
5
- import { c as juniorIdentities, d as juniorDestinations, l as juniorUsers, s as juniorConversations } from "./agent-invocations-CxKldAeB.js";
6
- import { g as juniorApiTokens, h as juniorConversationEvents, m as juniorConversationMetrics, u as juniorConversationParticipants, v as juniorCodeChanges, y as juniorCodeRepositories } from "./executor-VYrx_K4w.js";
7
- import { n as pluginCatalogRuntime } from "./catalog-runtime-cMlAI5LY.js";
8
- import { I as webUserInputAnswerNote, K as editEventAutomation, L as parseSlackThreadId, O as persistSlackUserInputReply, S as readLiveAttachment, U as editScheduledAutomation, X as resolveTaskOutcomes, Z as listOwnedWatches, at as conversationSubtreeColumns, it as conversationSubtree, m as readStats, nt as listChildAgents, q as AutomationEditError } from "./agent-runner-DgNATN4D.js";
9
- import { C as listWorkspaces, E as WorkspaceValidationError, Et as workspaceRepoCheckoutPath, Gn as readConversationEventPage, Kn as buildSentryConversationUrl, M as hash, Nn as createPluginLogger, Pn as readConversationAccessFromSql, T as updateWorkspace, Wn as readLatestConversationBrief, ar as createPluginCache, b as deleteWorkspace, er as listConversationAnnotations, ir as lookupSlackUser, j as create, n as createUserTokenStore, p as getPlugins, un as runWithWorkspaceTeamId, w as listWorkspacesByRepository, wt as SANDBOX_RUNTIME, x as getWorkspace, y as createWorkspace } from "./credentialed-CIGwoLU2.js";
10
- import { i as getStateAdapter } from "./adapter-BybMEezj.js";
1
+ import { D as AutomationConflictError, E as sameDefinitionValue, N as automationEventCatalog, O as automationRevision, S as automationDefinition, T as readAutomationVersion, a as saveScheduledAutomation, k as requireAutomationRevision, ur as isExperimentalFeatureEnabled, v as saveEventAutomation, y as setEventAutomationStatus } from "./tasks-SB9z-VTU.js";
2
+ import { p as escapeXml } from "./client-C1yDYjoS.js";
3
+ import { m as logInfo, p as logException } from "./logging-DLSpkSSr.js";
4
+ import { I as agentTurnUsageSchema, L as hasAgentTurnUsage, R as resolveRootConversationId, c as updateViewerDisplayName, h as getSqlExecutor, m as getDb, o as resolveViewerUser, p as getConversationStore, t as findUserByEmail } from "./viewer-CpXTGlep.js";
5
+ import { c as juniorIdentities, d as juniorDestinations, l as juniorUsers, s as juniorConversations } from "./agent-invocations-C1RNOCs8.js";
6
+ import { C as juniorCodeRepositories, S as juniorCodeChanges, b as juniorApiTokens, m as juniorConversationParticipants, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-4vhvsMZJ.js";
7
+ import { n as pluginCatalogRuntime } from "./catalog-runtime-BD9GSpc6.js";
8
+ import { $ as webUserInputAnswerNote, B as listOwnedWatches, F as editEventAutomation, I as AutomationEditError, Lt as readUserCustomization, M as editScheduledAutomation, Mt as conversationSubtreeColumns, Rt as saveUserCustomization, St as readLiveAttachment, bt as decodeInputImages, ct as searchReviewItems, ft as acceptsWebMessages, ht as createAndEnqueueConversation, it as countReviewItems, jt as conversationSubtree, kt as listChildAgents, m as readStats, ot as listWaitingConversationIds, pt as appendAndEnqueueWebMessage, st as reviewItemReaderForUser, vt as webActorFromEmail, w as persistSlackUserInputReply, z as resolveTaskOutcomes } from "./agent-runner-CAYfFmU7.js";
9
+ import { C as listWorkspaces, E as WorkspaceValidationError, Et as SANDBOX_RUNTIME, In as createPluginLogger, Jn as readConversationEventPage, Ln as readConversationAccessFromSql, M as hash, Ot as workspaceRepoCheckoutPath, T as updateWorkspace, Yn as buildSentryConversationUrl, b as deleteWorkspace, cr as createPluginCache, fn as runWithWorkspaceTeamId, j as create, n as createUserTokenStore, p as getPlugins, qn as readLatestConversationBrief, rr as listConversationAnnotations, sr as lookupSlackUser, w as listWorkspacesByRepository, x as getWorkspace, y as createWorkspace } from "./credentialed-lukuD-cc.js";
10
+ import { i as getStateAdapter } from "./adapter-04AcD2SO.js";
11
11
  import { t as getFirstRunAtMs } from "./cadence-R7Em4RjE.js";
12
12
  import { A as createConversationMessageBodySchema, G as INPUT_IMAGE_TYPES, M as forkConversationResponseSchema, N as steerConversationPendingMessagesBodySchema, P as steerConversationPendingMessagesResponseSchema, W as readMessageAttachments, _ as conversationParamsSchema, a as cancelConversationPendingMessagesBodySchema, c as conversationAttachmentParamsSchema, d as conversationDetailReportSchema, g as conversationFeedSchema, h as conversationFeedQuerySchema, i as archiveConversationResponseSchema, j as forkConversationBodySchema, k as createConversationBodySchema, m as conversationEventsQuerySchema, o as cancelConversationPendingMessagesResponseSchema, p as conversationEventPageSchema, r as archiveConversationBodySchema, t as acceptedConversationMessageSchema, u as conversationDetailQuerySchema, x as conversationPendingMessagesReportSchema } from "./conversation-DSo310Ps.js";
13
- import { h as getChildAgentLabel } from "./store-6EetVP-m.js";
14
- import { d as getEventCatalog } from "./session-stop-DkOjt46_.js";
15
- import { s as getSandboxResources, t as getCachedSnapshot } from "./resolve-Bk4yeuHy.js";
16
- import { a as getVercelConversationWorkQueue } from "./job-queue-C0BZSa7r.js";
17
- import { E as steerWebPendingMessages, a as cancelHumanFacingPendingMessages, g as getConversationWorkState, h as getConversation } from "./store-DvNZIsCr.js";
18
- import { n as finishServiceAccountSignIn, o as serviceAccountPlugins, r as getServiceAccountStatus, s as startServiceAccountSignIn, t as disconnectServiceAccount } from "./service-account-Do30HUNv.js";
13
+ import { h as getChildAgentLabel } from "./store-C5PN02QO.js";
14
+ import { d as getEventCatalog } from "./session-stop-Dam1EI7B.js";
15
+ import { l as userCustomizationSchema, t as webMessageId } from "./web-message-id-DlHNANtd.js";
16
+ import { s as getSandboxResources, t as getCachedSnapshot } from "./resolve-Cpa4Bu1O.js";
17
+ import { a as getVercelConversationWorkQueue } from "./job-queue-In9QKz-I.js";
18
+ import { E as steerWebPendingMessages, a as cancelHumanFacingPendingMessages, g as getConversationWorkState, h as getConversation } from "./store-zPEoJPBB.js";
19
+ import { n as finishServiceAccountSignIn, o as serviceAccountPlugins, r as getServiceAccountStatus, s as startServiceAccountSignIn, t as disconnectServiceAccount } from "./service-account-CKV2WTY7.js";
19
20
  import { F as weekdaySchema, M as ScheduleIntentError, N as compileScheduleIntent, _ as automationSummarySchema, b as automationVersionListSchema, c as automationLifecycleSchema, d as automationParamsSchema, f as automationRunListSchema, g as automationSchedulePreviewSchema, h as automationScheduleIntentSchema, i as automationExecutionListSchema, l as automationListQuerySchema, n as automationEditSchema, r as automationEventCatalogSchema, t as automationEditErrorSchema, u as automationListSchema, v as automationUpdateSchema, x as automationVersionParamsSchema, y as automationVersionActivateSchema } from "./automation-CmeFBSEh.js";
20
- import { C as skillReportsSchema, a as fillUtcHours, b as pluginsSchema, c as sumUtcHoursIntoSixHours, d as trailingUtcSixHourWindow, f as utcDayKey, h as pluginOperationalReportFeedSchema, i as fillUtcDays, l as trailingUtcDayWindow, m as healthReportSchema, n as DAY_MS$1, o as fillUtcSixHours, p as utcHourKey, r as HOUR_MS$1, s as startOfUtcHour, t as webMessageId, u as trailingUtcHourWindow, x as runtimeInfoReportSchema } from "./web-message-id-CJSUiksE.js";
21
- import { A as readViewerAutomationRuns, D as deleteViewerTask, E as ViewerTaskNotFoundError, H as clearSlackPendingReactions, L as isAllowedSignInEmail, M as readViewerAutomationVersions, N as readViewerAutomations, O as readConversationSourceTask, P as resolveViewerTaskCandidate, _ as appendAndEnqueueWebMessage, a as resolveMentions, c as readConversationAuxiliaryCostsFromSql, d as notCopiedByFork, et as getAttachmentStorage, f as childAgentTotalsReport, g as resolveSlackTeamDomains, h as conversationSummaryFromStoredConversation, i as attachConversationMentions, it as readHealthReport, j as readViewerAutomationSummary, k as readViewerAutomationExecutions, l as ConversationForkError, m as conversationEventHistory, n as readConversationRecordFromSql, o as readFirstHumanMessageTexts, p as readConversationTreeMetricsFromSql, q as stopConversationTurn, r as readConversationParticipants, s as listConversationSidebarAnnotations, t as readConversationFeed, u as forkConversation, w as getProductionSlackAdapter, x as webActorFromEmail, y as createAndEnqueueConversation } from "./list-1XQP-o6K.js";
22
- import { F as conversationAggregateColumns, I as conversationRangeColumns, M as readAutomationTitlesByConversationId, P as conversationActiveDaysColumn } from "./task-runner-B-PD_JOj.js";
23
- import { d as legacyWebMailboxMetadataSchema } from "./result-B9e9ATOU.js";
24
- import { a as startConnection, l as getWebAuthorization, n as isConnectableProvider, r as listConnections, t as disconnectConnection, u as htmlCallbackResponse } from "./connections-RE_65jzK.js";
25
- import { t as decodeInputImages } from "./images-CecjXAAz.js";
26
- import { A as activityHours$1, C as personParamsSchema, D as locationDirectoryReportSchema, E as locationDetailReportSchema, H as codePersonReportSchema, I as disconnectConnectionResponseSchema, L as startConnectionResponseSchema, N as connectionListSchema, O as locationParamsSchema, P as connectionParamsSchema, Q as apiErrorSchema, S as actorProfileReportSchema, U as codeRepositoryParamsSchema, V as codeOverviewReportSchema, W as codeRepositoryReportSchema, X as stopConversationTurnResponseSchema, Y as conversationChildAgentsReportSchema, Z as conversationStatsReportSchema, _ as personalTokenListSchema, a as workspaceBodySchema, b as revokePersonalTokenResponseSchema, d as serviceAccountListSchema, f as serviceAccountParamsSchema, g as createdPersonalTokenSchema, h as createPersonalTokenBodySchema, i as deleteWorkspaceResponseSchema, j as activitySixHours$1, k as activityDays$1, l as workspaceSchema, m as startServiceAccountSignInResponseSchema, n as statsReportSchema, o as workspaceListSchema, q as conversationWatchesReportSchema, s as workspaceParamsSchema, u as disconnectServiceAccountResponseSchema, w as personalSpendReportSchema, x as actorDirectoryReportSchema, y as personalTokenParamsSchema } from "./schema-X7Fj4fv1.js";
21
+ import { S as skillReportsSchema, a as fillUtcSixHours, b as runtimeInfoReportSchema, c as trailingUtcDayWindow, d as utcDayKey, f as utcHourKey, i as fillUtcHours, l as trailingUtcHourWindow, m as pluginOperationalReportFeedSchema, n as HOUR_MS$1, o as startOfUtcHour, p as healthReportSchema, r as fillUtcDays, s as sumUtcHoursIntoSixHours, t as DAY_MS$1, u as trailingUtcSixHourWindow, y as pluginsSchema } from "./reporting-window-DVCD_10C.js";
22
+ import { C as readConversationSourceTask, D as readViewerAutomationVersions, E as readViewerAutomationSummary, H as stopConversationTurn, J as canActOnReviewItem, K as ReviewItemActionError, L as clearSlackPendingReactions, M as isAllowedSignInEmail, O as readViewerAutomations, Q as getAttachmentStorage, S as deleteViewerTask, T as readViewerAutomationRuns, X as readReviewItemForUser, Y as isOnlyAssignee, a as resolveMentions, c as readConversationAuxiliaryCostsFromSql, d as notCopiedByFork, f as childAgentTotalsReport, g as resolveSlackTeamDomains, h as conversationSummaryFromStoredConversation, i as attachConversationMentions, k as resolveViewerTaskCandidate, l as ConversationForkError, m as conversationEventHistory, n as readConversationRecordFromSql, nt as readHealthReport, o as readFirstHumanMessageTexts, p as readConversationTreeMetricsFromSql, q as actOnReviewItem, r as readConversationParticipants, s as listConversationSidebarAnnotations, t as readConversationFeed, u as forkConversation, w as readViewerAutomationExecutions, x as ViewerTaskNotFoundError, y as getProductionSlackAdapter } from "./list-BkgnXEEB.js";
23
+ import { F as conversationAggregateColumns, I as conversationRangeColumns, M as readAutomationTitlesByConversationId, P as conversationActiveDaysColumn } from "./task-runner-DMI2prDO.js";
24
+ import { d as legacyWebMailboxMetadataSchema } from "./result-D3TSmZZ8.js";
25
+ import { a as startConnection, l as getWebAuthorization, n as isConnectableProvider, r as listConnections, t as disconnectConnection, u as htmlCallbackResponse } from "./connections-D46f8vvi.js";
26
+ import { A as personParamsSchema, B as connectionListSchema, C as createdPersonalTokenSchema, D as revokePersonalTokenResponseSchema, E as personalTokenParamsSchema, F as locationParamsSchema, I as activityDays$1, J as codeOverviewReportSchema, L as activityHours$1, N as locationDetailReportSchema, O as actorDirectoryReportSchema, P as locationDirectoryReportSchema, R as activitySixHours$1, S as createPersonalTokenBodySchema, U as disconnectConnectionResponseSchema, V as connectionParamsSchema, W as startConnectionResponseSchema, X as codeRepositoryParamsSchema, Y as codePersonReportSchema, Z as codeRepositoryReportSchema, _ as disconnectServiceAccountResponseSchema, a as workspaceBodySchema, at as apiErrorSchema, d as reviewItemCountSchema, et as conversationWatchesReportSchema, f as reviewItemListQuerySchema, g as reviewItemWaitingConversationsSchema, h as reviewItemSchema, i as deleteWorkspaceResponseSchema, it as conversationStatsReportSchema, j as personalSpendReportSchema, k as actorProfileReportSchema, l as workspaceSchema, m as reviewItemParamsSchema, n as statsReportSchema, nt as conversationChildAgentsReportSchema, o as workspaceListSchema, p as reviewItemListSchema, rt as stopConversationTurnResponseSchema, s as workspaceParamsSchema, u as reviewItemActionSchema, v as serviceAccountListSchema, w as personalTokenListSchema, x as startServiceAccountSignInResponseSchema, y as serviceAccountParamsSchema } from "./schema-0050HFnB.js";
27
27
  import { Hono } from "hono";
28
28
  import path from "node:path";
29
29
  import { z } from "zod";
@@ -257,8 +257,7 @@ async function createConversationForViewer(viewer, body, services) {
257
257
  async function appendConversationMessageForViewer(viewer, conversationId, body, services) {
258
258
  const conversation = await getConversationStore().get({ conversationId });
259
259
  if (!conversation) throwApiError(404, "Conversation not found.");
260
- const destinationPlatform = conversation.destination?.platform;
261
- if (!(destinationPlatform === "local" && conversationId.startsWith("local:web:") || destinationPlatform === "slack")) throwApiError(409, "Conversation does not accept web messages.");
260
+ if (!acceptsWebMessages(conversationId, conversation.destination)) throwApiError(409, "Conversation does not accept web messages.");
262
261
  if (!(await readConversationAccessFromSql(getDb(), [conversationId], viewer)).get(conversationId)?.isParticipant) throwApiError(403, "Only conversation participants can add messages.");
263
262
  const images = parseImages(body.images);
264
263
  const actor = actorFromViewer(viewer);
@@ -295,7 +294,7 @@ async function appendConversationMessageForViewer(viewer, conversationId, body,
295
294
  note: () => webUserInputAnswerNote(viewer.displayName ?? viewer.email),
296
295
  persist: append,
297
296
  state,
298
- threadTs: conversation.location?.threadTs ?? parseSlackThreadId(conversationId)?.threadTs
297
+ threadTs: conversation.location?.threadTs ?? (conversation.sessionSource?.kind === "slack" ? conversation.sessionSource.threadTs : void 0)
299
298
  });
300
299
  });
301
300
  } catch (error) {
@@ -2695,7 +2694,7 @@ async function readPeoplePluginReports(args) {
2695
2694
  reports: [],
2696
2695
  source: "plugins"
2697
2696
  });
2698
- const { getPluginProfileReports } = await import("./credentialed-CIGwoLU2.js").then((n) => n.a);
2697
+ const { getPluginProfileReports } = await import("./credentialed-lukuD-cc.js").then((n) => n.a);
2699
2698
  return pluginOperationalReportFeedSchema.parse({
2700
2699
  generatedAt: new Date(nowMs).toISOString(),
2701
2700
  reports: await getPluginProfileReports({
@@ -3611,6 +3610,126 @@ function createAutomationRoutes() {
3611
3610
  });
3612
3611
  return app;
3613
3612
  }
3613
+ // src/api/user-customization/routes.ts
3614
+ /**
3615
+ * Create routes that read and replace the viewer's customization. They return
3616
+ * 404 unless the app enables the `user-customization` experiment.
3617
+ */
3618
+ function createUserCustomizationRoutes() {
3619
+ const app = new Hono();
3620
+ app.use("*", async (_context, next) => {
3621
+ if (!isExperimentalFeatureEnabled("user-customization")) throwApiError(404, "Resource not found.");
3622
+ await next();
3623
+ });
3624
+ app.get("/", requireViewer, async (context) => {
3625
+ const viewer = context.get("viewer");
3626
+ return jsonResponse(userCustomizationSchema, { customization: await readUserCustomization(viewer.id) ?? "" });
3627
+ });
3628
+ app.put("/", requireViewer, validateRequest("json", userCustomizationSchema, "Invalid request body."), async (context) => {
3629
+ const viewer = context.get("viewer");
3630
+ const { customization } = context.req.valid("json");
3631
+ if (!await saveUserCustomization(viewer.id, customization)) throwApiError(404, "User not found.");
3632
+ return jsonResponse(userCustomizationSchema, { customization });
3633
+ });
3634
+ return app;
3635
+ }
3636
+ // src/api/review-items/routes.ts
3637
+ const LIST_LIMIT = 100;
3638
+ const ERROR_STATUS = {
3639
+ conflict: 409,
3640
+ forbidden: 403,
3641
+ invalid: 400,
3642
+ not_found: 404
3643
+ };
3644
+ /** Build the API payload of one Review item for its viewer. */
3645
+ function reviewItemPayload(item, viewer) {
3646
+ return {
3647
+ addedByConversationId: item.addedByConversationId,
3648
+ assignedToEveryone: item.assignedToEveryone,
3649
+ assignees: item.assignees,
3650
+ body: item.body,
3651
+ canAct: canActOnReviewItem(item, viewer.id),
3652
+ canTake: canActOnReviewItem(item, viewer.id) && !isOnlyAssignee(item, viewer.id),
3653
+ conversationIds: item.conversationIds,
3654
+ createdAt: item.createdAt.toISOString(),
3655
+ id: item.id,
3656
+ kind: item.kind,
3657
+ status: item.status,
3658
+ title: item.title,
3659
+ updatedAt: item.updatedAt.toISOString(),
3660
+ visibility: item.visibility,
3661
+ ...item.answer ? { answer: item.answer } : void 0,
3662
+ ...item.automationId ? { automationId: item.automationId } : void 0,
3663
+ ...item.closeReason ? { closeReason: item.closeReason } : void 0,
3664
+ ...item.closedAt ? { closedAt: item.closedAt.toISOString() } : void 0,
3665
+ ...item.closedBy ? { closedBy: item.closedBy } : void 0,
3666
+ ...item.request ? { request: item.request } : void 0,
3667
+ ...item.subject ? { subject: item.subject } : void 0
3668
+ };
3669
+ }
3670
+ function actionErrorResponse(error) {
3671
+ if (error instanceof ReviewItemActionError) return jsonResponse(apiErrorSchema, { error: error.message }, { status: ERROR_STATUS[error.code] });
3672
+ throw error;
3673
+ }
3674
+ /** Create the authenticated review desk routes. */
3675
+ function createReviewItemRoutes(services) {
3676
+ const app = new Hono();
3677
+ app.get("/", requireViewer, validateRequest("query", reviewItemListQuerySchema, "Invalid review item query."), async (context) => {
3678
+ const viewer = context.get("viewer");
3679
+ const query = context.req.valid("query");
3680
+ const view = query.view ?? "all";
3681
+ const items = await searchReviewItems(getDb(), reviewItemReaderForUser(viewer), {
3682
+ limit: LIST_LIMIT,
3683
+ statuses: query.archived === "true" ? ["done", "dismissed"] : ["open"],
3684
+ ...view === "mine" ? { assignee: { userId: viewer.id } } : view === "everyone" ? { assignee: { everyone: true } } : void 0,
3685
+ ...query.conversationId ? { conversationId: query.conversationId } : void 0,
3686
+ ...query.q ? { query: query.q } : void 0
3687
+ });
3688
+ return jsonResponse(reviewItemListSchema, { items: items.map((item) => reviewItemPayload(item, viewer)) });
3689
+ });
3690
+ app.get("/count", requireViewer, async (context) => {
3691
+ const viewer = context.get("viewer");
3692
+ return jsonResponse(reviewItemCountSchema, { mine: await countReviewItems(getDb(), reviewItemReaderForUser(viewer), {
3693
+ assignee: { userId: viewer.id },
3694
+ statuses: ["open"]
3695
+ }) });
3696
+ });
3697
+ app.get("/waiting-conversations", requireViewer, async (context) => {
3698
+ const viewer = context.get("viewer");
3699
+ return jsonResponse(reviewItemWaitingConversationsSchema, { conversationIds: await listWaitingConversationIds(getDb(), viewer) });
3700
+ });
3701
+ app.get("/:id", requireViewer, validateRequest("param", reviewItemParamsSchema, "Invalid review item."), async (context) => {
3702
+ const viewer = context.get("viewer");
3703
+ try {
3704
+ const item = await readReviewItemForUser(viewer, context.req.valid("param").id);
3705
+ return jsonResponse(reviewItemSchema, reviewItemPayload(item, viewer));
3706
+ } catch (error) {
3707
+ return actionErrorResponse(error);
3708
+ }
3709
+ });
3710
+ app.post("/:id/actions", requireViewer, validateRequest("param", reviewItemParamsSchema, "Invalid review item."), validateRequest("json", reviewItemActionSchema, "Invalid action."), async (context) => {
3711
+ const viewer = context.get("viewer");
3712
+ const body = context.req.valid("json");
3713
+ const { id } = context.req.valid("param");
3714
+ try {
3715
+ const item = await actOnReviewItem({
3716
+ action: body.action,
3717
+ getSlackAdapter: getProductionSlackAdapter,
3718
+ id,
3719
+ queue: services.queue,
3720
+ user: viewer,
3721
+ ...body.action === "submit" ? { answer: {
3722
+ ...body.answer,
3723
+ requestId: id
3724
+ } } : void 0
3725
+ });
3726
+ return jsonResponse(reviewItemSchema, reviewItemPayload(item, viewer));
3727
+ } catch (error) {
3728
+ return actionErrorResponse(error);
3729
+ }
3730
+ });
3731
+ return app;
3732
+ }
3614
3733
  // src/api/workspaces/routes.ts
3615
3734
  function snapshotView(workspace) {
3616
3735
  const recorded = workspace.snapshot;
@@ -3735,7 +3854,7 @@ function readDescriptionText(home) {
3735
3854
  }
3736
3855
  /** Read discovered skill names for authenticated runtime diagnostics. */
3737
3856
  async function readSkillReports() {
3738
- const { discoverSkills } = await import("./skills-CQHrwfOa.js").then((n) => n.o);
3857
+ const { discoverSkills } = await import("./skills-CfAnfImD.js").then((n) => n.o);
3739
3858
  const skills = await discoverSkills();
3740
3859
  return skillReportsSchema.parse(skills.map((skill) => ({
3741
3860
  name: skill.name,
@@ -3744,7 +3863,7 @@ async function readSkillReports() {
3744
3863
  }
3745
3864
  /** Read safe configured plugin metadata for authenticated runtime diagnostics. */
3746
3865
  async function readPlugins() {
3747
- const { pluginCatalogRuntime } = await import("./catalog-runtime-cMlAI5LY.js").then((n) => n.t);
3866
+ const { pluginCatalogRuntime } = await import("./catalog-runtime-BD9GSpc6.js").then((n) => n.t);
3748
3867
  return pluginsSchema.parse(pluginCatalogRuntime.getProviders().map((plugin) => ({
3749
3868
  configKeys: plugin.manifest.configKeys ?? [],
3750
3869
  description: plugin.manifest.description,
@@ -3756,7 +3875,7 @@ async function readPlugins() {
3756
3875
  async function readRuntimeInfoReport() {
3757
3876
  const [{ homeDir }, { pluginCatalogRuntime }, plugins, skills] = await Promise.all([
3758
3877
  import("./package-discovery-DJBompdd.js").then((n) => n.r),
3759
- import("./catalog-runtime-cMlAI5LY.js").then((n) => n.t),
3878
+ import("./catalog-runtime-BD9GSpc6.js").then((n) => n.t),
3760
3879
  readPlugins(),
3761
3880
  readSkillReports()
3762
3881
  ]);
@@ -3773,7 +3892,7 @@ async function readRuntimeInfoReport() {
3773
3892
  /** Read sanitized operational summaries contributed by plugins. */
3774
3893
  async function readPluginOperationalReportFeed() {
3775
3894
  const nowMs = Date.now();
3776
- const { getPluginOperationalReports } = await import("./credentialed-CIGwoLU2.js").then((n) => n.a);
3895
+ const { getPluginOperationalReports } = await import("./credentialed-lukuD-cc.js").then((n) => n.a);
3777
3896
  return pluginOperationalReportFeedSchema.parse({
3778
3897
  source: "plugins",
3779
3898
  generatedAt: new Date(nowMs).toISOString(),
@@ -3790,10 +3909,12 @@ function createJuniorApi(options = {}) {
3790
3909
  app.get("/api/skills", async () => jsonResponse(skillReportsSchema, await readSkillReports()));
3791
3910
  app.get("/api/plugin-reports", async () => jsonResponse(pluginOperationalReportFeedSchema, await readPluginOperationalReportFeed()));
3792
3911
  app.get("/api/stats", async () => jsonResponse(statsReportSchema, await readStatsReport()));
3912
+ const queue = options.conversationWorkQueue ?? getVercelConversationWorkQueue();
3793
3913
  app.route("/api/conversations", createConversationRoutes({
3794
3914
  attachmentStorage: getAttachmentStorage(),
3795
- queue: options.conversationWorkQueue ?? getVercelConversationWorkQueue()
3915
+ queue
3796
3916
  }));
3917
+ app.route("/api/review-items", createReviewItemRoutes({ queue }));
3797
3918
  app.route("/api/code", createCodeRoutes());
3798
3919
  app.route("/api/connections", createConnectionRoutes());
3799
3920
  app.route("/api/personal-tokens", createPersonalTokenRoutes());
@@ -3801,6 +3922,7 @@ function createJuniorApi(options = {}) {
3801
3922
  app.route("/api/people", createPeopleRoutes());
3802
3923
  app.route("/api/locations", createLocationRoutes());
3803
3924
  app.route("/api/user-pages", createUserPageRoutes());
3925
+ app.route("/api/user-customization", createUserCustomizationRoutes());
3804
3926
  app.route("/api/automations", createAutomationRoutes());
3805
3927
  app.route("/api/workspaces", createWorkspaceRoutes());
3806
3928
  app.notFound(() => jsonResponse(apiErrorSchema, { error: "Resource not found." }, { status: 404 }));
@@ -1,5 +1,5 @@
1
1
  import { n as ConversationWorkQueue, t as ConversationQueueMessage } from "./queue-C37RbDVc.js";
2
- import { t as ConversationStore } from "./store-B8CABbmR.js";
2
+ import { t as ConversationStore } from "./store-xMuuXRE0.js";
3
3
  import "./history-BgI33Kie.js";
4
4
  import { n as JuniorPluginSet } from "./plugins-B_0Cr0MO.js";
5
5
  import { Hono } from "hono";
@@ -80,7 +80,7 @@ interface RuntimeLimits {
80
80
  * Add new keys here as features graduate from private experiments; remove them
81
81
  * once they become stable defaults.
82
82
  */
83
- declare const EXPERIMENTAL_FEATURES: readonly ["operator-tools", "passive-routing"];
83
+ declare const EXPERIMENTAL_FEATURES: readonly ["operator-tools", "passive-routing", "user-customization"];
84
84
  /** One known experimental feature name. */
85
85
  type ExperimentalFeature = (typeof EXPERIMENTAL_FEATURES)[number];
86
86
  /** App-level opt-ins for unstable product features. */
@@ -125,6 +125,7 @@ declare const inboundMessageSchema: z.ZodObject<{
125
125
  input: z.ZodObject<{
126
126
  attachments: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
127
127
  authorId: z.ZodOptional<z.ZodString>;
128
+ authorIdentityId: z.ZodOptional<z.ZodString>;
128
129
  metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
129
130
  text: z.ZodString;
130
131
  }, z.core.$strict>;
package/dist/app.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ModelProfileInput, i as JuniorDashboardOptions, n as JuniorAppOptions, r as createApp, t as JuniorApp } from "./app-DAB3fzyp.js";
1
+ import { a as ModelProfileInput, i as JuniorDashboardOptions, n as JuniorAppOptions, r as createApp, t as JuniorApp } from "./app-z6Uuyq3j.js";
2
2
  import { i as defineJuniorPlugins, n as JuniorPluginSet, r as JuniorPluginSetOptions, t as JuniorPluginInput } from "./plugins-B_0Cr0MO.js";
3
3
  import { t as JUNIOR_VERSION } from "./version-Cc2OFd9G.js";
4
4
  export { JUNIOR_VERSION, JuniorApp, JuniorAppOptions, type JuniorDashboardOptions, type JuniorPluginInput, type JuniorPluginSet, type JuniorPluginSetOptions, type ModelProfileInput, createApp, defineJuniorPlugins };