@sentry/junior 0.226.0 → 0.227.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/dist/{agent-hooks-FUetyyLe.js → agent-hooks-bEwEJhlg.js} +218 -11
  2. package/dist/{agent-runner-DEF7auSj.js → agent-runner-BGDSjciH.js} +114 -73
  3. package/dist/api/schema.d.ts +65 -6
  4. package/dist/api/schema.js +3 -3
  5. package/dist/api.js +52 -31
  6. package/dist/{app-TVL42pGL.d.ts → app-CjRIKZb5.d.ts} +1 -1
  7. package/dist/app.d.ts +1 -1
  8. package/dist/app.js +208 -136
  9. package/dist/{briefs-Cb4T2BUI.js → briefs-BkM_ZW4B.js} +4 -4
  10. package/dist/{catalog-runtime-BYGR3Dr4.js → catalog-runtime-Cw9V2jpn.js} +1 -1
  11. package/dist/{checkpoint-CJe-dZFF.js → checkpoint-oZYD3-Ar.js} +7 -7
  12. package/dist/cli/chat.js +13 -13
  13. package/dist/cli/check.js +3 -3
  14. package/dist/cli/main.js +1 -1
  15. package/dist/cli/plugins.js +3 -3
  16. package/dist/cli/snapshot-create.js +3 -3
  17. package/dist/cli/upgrade.js +3 -3
  18. package/dist/{client-C2WBBx7m.js → client-Pcxo3lGn.js} +2 -2
  19. package/dist/{config-Bws6Rpsh.js → config-CYvEow1F.js} +2 -2
  20. package/dist/{context-Bplcgypl.js → context-0Et9iVSB.js} +1 -1
  21. package/dist/{conversation-DPbmIwjy.js → conversation-BnhOMfEB.js} +49 -22
  22. package/dist/{conversation-privacy-pCcW0a5Y.js → conversation-privacy-hQmyZbOC.js} +1 -1
  23. package/dist/{credential-sync-ibuNsMyl.js → credential-sync-CUGbiiCM.js} +14 -14
  24. package/dist/{executor-D36FWjcf.js → executor-BXMlFrV6.js} +1 -1
  25. package/dist/{history-DI9KJT3J.d.ts → history-nukv1YN8.d.ts} +26 -1
  26. package/dist/images-8siTAUNW.js +82 -0
  27. package/dist/instrumentation.js +2 -2
  28. package/dist/{job-queue-2mFFDMHB.js → job-queue-AI0_QAgc.js} +1 -1
  29. package/dist/{logging-CvjMHRvg.js → logging-BPBx6WF-.js} +1 -1
  30. package/dist/nitro.d.ts +1 -1
  31. package/dist/nitro.js +3 -3
  32. package/dist/{oauth-authorization-l4O1rXsL.js → oauth-authorization-Cq1GaLIP.js} +1 -1
  33. package/dist/{oauth-callback-server-Ds8M5FFX.js → oauth-callback-server-CnF03VYh.js} +2 -2
  34. package/dist/{pending-auth-DLNJbD8H.js → pending-auth-CHUjr_6d.js} +1 -1
  35. package/dist/{profile-dvV7PB7u.js → profile-upzC-wN1.js} +4 -4
  36. package/dist/{prompt-DehgjkO5.js → prompt-CZIQcPHy.js} +1 -1
  37. package/dist/{registry-C6FHctIu.js → registry-DM5aMhjm.js} +2 -2
  38. package/dist/{resolve-DqwGI9wq.js → resolve-sF6Lg7Ay.js} +2 -2
  39. package/dist/{runner-CzYEcB73.js → runner-Bu2wYpK8.js} +10 -10
  40. package/dist/{sandbox-egress-signals-BZOv0fns.js → sandbox-egress-signals-Dgerhizb.js} +1 -1
  41. package/dist/{schema-BZg-xzfG.js → schema-BSiwcvjm.js} +1 -1
  42. package/dist/{skills-EhiVbjF4.js → skills-CAI5s___.js} +2 -2
  43. package/dist/{spawn-Ck3L0rEr.js → spawn-DRK9TBgY.js} +2 -2
  44. package/dist/{task-queue-TXhAWQwj.js → task-queue-iuDAqfZg.js} +3 -3
  45. package/dist/{task-runner-axUJS1No.js → task-runner-S3QtH38c.js} +10 -10
  46. package/dist/{thread-state-CTuWhjru.js → thread-state-C_arVuaN.js} +5 -5
  47. package/dist/{turn-failure-response-csVoLOzx.js → turn-failure-response-DarwGYgC.js} +9 -9
  48. package/dist/{turn-lifecycle-C1S6vELh.js → turn-lifecycle-CdiIejXH.js} +1 -1
  49. package/dist/{turn-session-routing-5RejBvit.js → turn-session-routing-DyLGd_wU.js} +1 -1
  50. package/dist/{validation-q2PFxkTQ.js → validation-BMig74Zp.js} +1 -1
  51. package/dist/{version-ByLtIYyy.js → version-lhQSfLjx.js} +1 -1
  52. package/dist/version.js +1 -1
  53. package/dist/{web-authorization-Biy8nsS7.js → web-authorization-r2lKYKJ2.js} +6 -6
  54. package/dist/{web-input-DM9LaEdn.js → web-input-BU-Fu7iq.js} +46 -36
  55. package/dist/{work-QrbHdXTc.js → work-B9koS8sW.js} +7 -7
  56. package/dist/{worker-r17aopXW.js → worker-C_iJSRgG.js} +5 -5
  57. package/package.json +5 -4
package/dist/api.js CHANGED
@@ -1,18 +1,19 @@
1
- import { Ft as getConversation, P as parseSlackThreadId, Tt as cancelHumanFacingPendingMessages, b as readStats, j as readLiveAttachment } from "./agent-runner-DEF7auSj.js";
2
- import { d as logException, p as logWarn } from "./logging-CvjMHRvg.js";
3
- import { _ as parseSlackMessageTs, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-Bplcgypl.js";
4
- import { $ as resolveViewerUser, Ct as conversationArchivedForEmail, D as SANDBOX_RUNTIME, Dt as conversationNotArchivedForEmail, Et as conversationHasParticipantUser, J as withSlackRetries, Jt as getSqlExecutor, Kt as getConversationStore, Lt as listConversationAnnotations, Mt as readConversationEventPage, Nt as buildSentryConversationUrl, Ot as conversationNotArchivedForUser, Qt as locationFromRow, Rt as listConversationAnnotationsById, S as WorkspaceValidationError, St as conversationArchiveTimes, Tt as conversationHasParticipantEmail, U as getSlackClient, Z as findUserByEmail, _ as deleteWorkspace, an as hasAgentTurnUsage, b as listWorkspaces, bt as createPluginLogger, en as parseSessionSource, et as updateViewerDisplayName, g as createWorkspace, in as agentTurnUsageSchema, j as workspaceRepoCheckoutPath, jt as readLatestConversationBrief, kt as viewerConversationMembership, on as resolveRootConversationId, qt as getDb, u as getPlugins, v as getWorkspace, wt as conversationArchivedForUser, x as updateWorkspace, xt as readConversationAccessFromSql } from "./agent-hooks-FUetyyLe.js";
1
+ import { Ct as cancelHumanFacingPendingMessages, M as parseSlackThreadId, Nt as getConversation, b as readStats, k as readLiveAttachment } from "./agent-runner-BGDSjciH.js";
2
+ import { d as logException, p as logWarn } from "./logging-BPBx6WF-.js";
3
+ import { b as parseSlackMessageTs, h as parseSlackTeamId, p as parseSlackChannelId } from "./context-0Et9iVSB.js";
4
+ import { $ as resolveViewerUser, $t as getDb, At as conversationNotArchivedForUser, Ct as readConversationAccessFromSql, D as SANDBOX_RUNTIME, Dt as conversationHasParticipantEmail, Et as conversationArchivedForUser, Ft as buildSentryConversationUrl, J as withSlackRetries, Nt as readLatestConversationBrief, Ot as conversationHasParticipantUser, Pt as readConversationEventPage, Qt as getConversationStore, S as WorkspaceValidationError, St as createPluginLogger, Tt as conversationArchivedForEmail, U as getSlackClient, Ut as listConversationAnnotations, Wt as listConversationAnnotationsById, Z as findUserByEmail, _ as deleteWorkspace, b as listWorkspaces, dn as hasAgentTurnUsage, en as getSqlExecutor, et as updateViewerDisplayName, fn as resolveRootConversationId, g as createWorkspace, in as locationFromRow, j as workspaceRepoCheckoutPath, jt as viewerConversationMembership, kt as conversationNotArchivedForEmail, on as parseSessionSource, u as getPlugins, un as agentTurnUsageSchema, v as getWorkspace, wt as conversationArchiveTimes, x as updateWorkspace } from "./agent-hooks-bEwEJhlg.js";
5
5
  import { n as juniorDestinations } from "./destinations-BeBiJeEM.js";
6
- 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, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-D36FWjcf.js";
7
- 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-DPbmIwjy.js";
8
- import { n as hash, t as create } from "./profile-dvV7PB7u.js";
9
- import { t as getCachedSnapshot } from "./resolve-DqwGI9wq.js";
10
- import { a as getVercelConversationWorkQueue } from "./job-queue-2mFFDMHB.js";
6
+ 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, v as juniorConversationMetrics, y as juniorConversationEvents } from "./executor-BXMlFrV6.js";
7
+ import { D as createConversationBodySchema, I as readMessageAttachments, L as INPUT_IMAGE_TYPES, 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-BnhOMfEB.js";
8
+ import { n as hash, t as create } from "./profile-upzC-wN1.js";
9
+ import { t as getCachedSnapshot } from "./resolve-sF6Lg7Ay.js";
10
+ import { a as getVercelConversationWorkQueue } from "./job-queue-AI0_QAgc.js";
11
11
  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, u as trailingUtcHourWindow, x as runtimeInfoReportSchema } from "./web-message-id-xPI_EFSC.js";
12
- import { F as createVercelAttachmentStorage, _ as readViewerAutomations, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, d as ViewerTaskNotFoundError, f as deleteViewerTask, h as readViewerAutomationRuns, k as legacyWebMailboxMetadataSchema, l as formatSlackConversationRedactedLabel, m as readViewerAutomationExecutions, p as readConversationSourceTask, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContextFromThreadId, x as lookupSlackUser, z as readHealthReport } from "./web-input-DM9LaEdn.js";
13
- import { A as conversationAggregateColumns, j as conversationRangeColumns, k as conversationActiveDaysColumn } from "./task-runner-axUJS1No.js";
14
- import { r as getWebAuthorization } from "./web-authorization-Biy8nsS7.js";
15
- import { A as actorProfileReportSchema, C as createPersonalTokenBodySchema, D as personalTokenParamsSchema, F as locationDirectoryReportSchema, G as codePersonReportSchema, I as locationParamsSchema, L as activityDays$1, M as personalSpendReportSchema, O as revokePersonalTokenResponseSchema, P as locationDetailReportSchema, R as activityHours$1, T as personalTokenListSchema, W as codeOverviewReportSchema, _ as automationRunListSchema, a as workspaceBodySchema, g as automationParamsSchema, h as automationListSchema, i as deleteWorkspaceResponseSchema, j as personParamsSchema, k as actorDirectoryReportSchema, l as workspaceSchema, m as automationListQuerySchema, n as statsReportSchema, o as workspaceListSchema, q as apiErrorSchema, s as workspaceParamsSchema, u as automationExecutionListSchema, w as createdPersonalTokenSchema, z as activitySixHours$1 } from "./schema-BZg-xzfG.js";
12
+ import { F as createVercelAttachmentStorage, _ as readViewerAutomations, a as webActorFromEmail, b as clearSlackPendingReactions, c as getProductionSlackAdapter, d as ViewerTaskNotFoundError, f as deleteViewerTask, h as readViewerAutomationRuns, k as legacyWebMailboxMetadataSchema, l as formatSlackConversationRedactedLabel, m as readViewerAutomationExecutions, p as readConversationSourceTask, r as createAndEnqueueConversation, t as appendAndEnqueueWebMessage, u as resolveSlackConversationContextFromThreadId, x as lookupSlackUser, z as readHealthReport } from "./web-input-BU-Fu7iq.js";
13
+ import { A as conversationAggregateColumns, j as conversationRangeColumns, k as conversationActiveDaysColumn } from "./task-runner-S3QtH38c.js";
14
+ import { r as getWebAuthorization } from "./web-authorization-r2lKYKJ2.js";
15
+ import { t as decodeInputImages } from "./images-8siTAUNW.js";
16
+ import { A as actorProfileReportSchema, C as createPersonalTokenBodySchema, D as personalTokenParamsSchema, F as locationDirectoryReportSchema, G as codePersonReportSchema, I as locationParamsSchema, L as activityDays$1, M as personalSpendReportSchema, O as revokePersonalTokenResponseSchema, P as locationDetailReportSchema, R as activityHours$1, T as personalTokenListSchema, W as codeOverviewReportSchema, _ as automationRunListSchema, a as workspaceBodySchema, g as automationParamsSchema, h as automationListSchema, i as deleteWorkspaceResponseSchema, j as personParamsSchema, k as actorDirectoryReportSchema, l as workspaceSchema, m as automationListQuerySchema, n as statsReportSchema, o as workspaceListSchema, q as apiErrorSchema, s as workspaceParamsSchema, u as automationExecutionListSchema, w as createdPersonalTokenSchema, z as activitySixHours$1 } from "./schema-BSiwcvjm.js";
16
17
  import { Hono } from "hono";
17
18
  import path from "node:path";
18
19
  import { z } from "zod";
@@ -22,6 +23,7 @@ import { conversationSidebarAnnotationSchema, pluginUserPageContentSchema, plugi
22
23
  import { alias } from "drizzle-orm/pg-core";
23
24
  import { readFileSync } from "node:fs";
24
25
  import { HTTPException } from "hono/http-exception";
26
+ import { bodyLimit } from "hono/body-limit";
25
27
  import { zValidator } from "@hono/zod-validator";
26
28
  import { createMiddleware } from "hono/factory";
27
29
  //#region src/api/http.ts
@@ -125,11 +127,8 @@ async function archiveConversation(viewer, conversationId, body) {
125
127
  }
126
128
  //#endregion
127
129
  //#region src/api/conversations/attachments.ts
128
- function mayDisplayInline(contentType) {
129
- return contentType === "image/gif" || contentType === "image/jpeg" || contentType === "image/png" || contentType === "image/webp";
130
- }
131
130
  function contentDisposition(filename, contentType) {
132
- return `${mayDisplayInline(contentType) ? "inline" : "attachment"}; filename="${filename.replace(/[^\x20-\x7e]|["\\]/g, "_")}"; filename*=UTF-8''${encodeURIComponent(filename)}`;
131
+ return `${INPUT_IMAGE_TYPES.some((type) => type === contentType) ? "inline" : "attachment"}; filename="${filename.replace(/[^\x20-\x7e]|["\\]/g, "_")}"; filename*=UTF-8''${encodeURIComponent(filename)}`;
133
132
  }
134
133
  /** Build response headers for one conversation attachment body. */
135
134
  function conversationAttachmentHeaders(args) {
@@ -170,6 +169,14 @@ async function requireConversationAttachment(args) {
170
169
  }
171
170
  //#endregion
172
171
  //#region src/api/conversations/create.ts
172
+ /** Turn image validation failures into request errors before accepting work. */
173
+ function parseImages(images) {
174
+ try {
175
+ return decodeInputImages(images ?? []);
176
+ } catch (error) {
177
+ throwApiError(400, error instanceof Error ? error.message : "Unable to read images.");
178
+ }
179
+ }
173
180
  function actorFromViewer(viewer) {
174
181
  const normalized = viewer.email.trim().toLowerCase();
175
182
  return webActorFromEmail(normalized, {
@@ -178,15 +185,18 @@ function actorFromViewer(viewer) {
178
185
  });
179
186
  }
180
187
  /** Create a dashboard root conversation and enqueue its first message. */
181
- async function createConversationForViewer(viewer, body) {
188
+ async function createConversationForViewer(viewer, body, attachmentStorage) {
189
+ const images = parseImages(body.images);
182
190
  try {
183
191
  return await createAndEnqueueConversation({
184
192
  actor: actorFromViewer(viewer),
185
193
  idempotencyKey: body.idempotencyKey,
186
194
  message: body.message,
195
+ images,
187
196
  ...body.visibility ? { visibility: body.visibility } : void 0
188
197
  }, {
189
198
  conversationStore: getConversationStore(),
199
+ attachmentStorage,
190
200
  queue: getVercelConversationWorkQueue()
191
201
  });
192
202
  } catch (error) {
@@ -194,20 +204,23 @@ async function createConversationForViewer(viewer, body) {
194
204
  }
195
205
  }
196
206
  /** Append one dashboard message to an existing conversation. */
197
- async function appendConversationMessageForViewer(viewer, conversationId, body) {
207
+ async function appendConversationMessageForViewer(viewer, conversationId, body, attachmentStorage) {
198
208
  const conversation = await getConversationStore().get({ conversationId });
199
209
  if (!conversation) throwApiError(404, "Conversation not found.");
200
210
  const destinationPlatform = conversation.destination?.platform;
201
211
  if (!(destinationPlatform === "local" && conversationId.startsWith("local:web:") || destinationPlatform === "slack")) throwApiError(409, "Conversation does not accept web messages.");
202
212
  if (!(await readConversationAccessFromSql(getDb(), [conversationId], viewer)).get(conversationId)?.isParticipant) throwApiError(403, "Only conversation participants can add messages.");
213
+ const images = parseImages(body.images);
203
214
  try {
204
215
  return await appendAndEnqueueWebMessage({
205
216
  actor: actorFromViewer(viewer),
206
217
  conversationId,
207
218
  idempotencyKey: body.idempotencyKey,
208
- message: body.message
219
+ message: body.message,
220
+ images
209
221
  }, {
210
222
  conversationStore: getConversationStore(),
223
+ attachmentStorage,
211
224
  queue: getVercelConversationWorkQueue()
212
225
  });
213
226
  } catch (error) {
@@ -1338,7 +1351,8 @@ async function projectPendingMessage(message, canExposePayload) {
1338
1351
  const metadata = legacyWebMailboxMetadataSchema.safeParse(message.input.metadata);
1339
1352
  if (!metadata.success) return void 0;
1340
1353
  const text = message.input.text.trim();
1341
- if (!text) return void 0;
1354
+ const attachments = readMessageAttachments(message.input.attachments);
1355
+ if (!text && !attachments.length) return void 0;
1342
1356
  return {
1343
1357
  createdAt: isoFromMs(message.createdAtMs),
1344
1358
  delivery: message.delivery,
@@ -1349,7 +1363,8 @@ async function projectPendingMessage(message, canExposePayload) {
1349
1363
  source: "web",
1350
1364
  ...canExposePayload ? {
1351
1365
  actorIdentity: actorIdentityFromWebMetadata(metadata.data),
1352
- text
1366
+ text,
1367
+ ...attachments.length ? { attachments } : void 0
1353
1368
  } : { redacted: true }
1354
1369
  };
1355
1370
  }
@@ -1780,6 +1795,12 @@ async function readConversationStats() {
1780
1795
  /** Create the HTTP routes owned by the conversations API. */
1781
1796
  function createConversationRoutes(options) {
1782
1797
  const app = new Hono();
1798
+ const messageBodyLimit = bodyLimit({
1799
+ maxSize: 445e4,
1800
+ onError: () => {
1801
+ throwApiError(413, "Images must total 3 MB or less.");
1802
+ }
1803
+ });
1783
1804
  app.get("/", validateRequest("query", conversationFeedQuerySchema, "Invalid query parameters."), async (context) => {
1784
1805
  const { actorEmail, q, status } = context.req.valid("query");
1785
1806
  const viewer = context.get("viewer");
@@ -1791,16 +1812,16 @@ function createConversationRoutes(options) {
1791
1812
  }));
1792
1813
  });
1793
1814
  app.get("/stats", async () => jsonResponse(conversationStatsReportSchema, await readConversationStats()));
1794
- app.post("/", requireViewer, validateRequest("json", createConversationBodySchema, "Invalid request body."), async (context) => {
1815
+ app.post("/", requireViewer, messageBodyLimit, validateRequest("json", createConversationBodySchema, "Invalid request body."), async (context) => {
1795
1816
  const viewer = context.get("viewer");
1796
1817
  const body = context.req.valid("json");
1797
- return jsonResponse(acceptedConversationMessageSchema, await createConversationForViewer(viewer, body));
1818
+ return jsonResponse(acceptedConversationMessageSchema, await createConversationForViewer(viewer, body, options.attachmentStorage));
1798
1819
  });
1799
- app.post("/:conversationId/messages", requireViewer, validateRequest("param", conversationParamsSchema, "Invalid route parameters."), validateRequest("json", createConversationMessageBodySchema, "Invalid request body."), async (context) => {
1820
+ app.post("/:conversationId/messages", requireViewer, messageBodyLimit, validateRequest("param", conversationParamsSchema, "Invalid route parameters."), validateRequest("json", createConversationMessageBodySchema, "Invalid request body."), async (context) => {
1800
1821
  const viewer = context.get("viewer");
1801
1822
  const { conversationId } = context.req.valid("param");
1802
1823
  const body = context.req.valid("json");
1803
- return jsonResponse(acceptedConversationMessageSchema, await appendConversationMessageForViewer(viewer, conversationId, body));
1824
+ return jsonResponse(acceptedConversationMessageSchema, await appendConversationMessageForViewer(viewer, conversationId, body, options.attachmentStorage));
1804
1825
  });
1805
1826
  app.patch("/:conversationId/archive", requireViewer, validateRequest("param", conversationParamsSchema, "Invalid route parameters."), validateRequest("json", archiveConversationBodySchema, "Invalid request body."), async (context) => {
1806
1827
  const viewer = context.get("viewer");
@@ -3021,7 +3042,7 @@ async function readPeoplePluginReports(args) {
3021
3042
  reports: [],
3022
3043
  source: "plugins"
3023
3044
  });
3024
- const { getPluginProfileReports } = await import("./agent-hooks-FUetyyLe.js").then((n) => n.t);
3045
+ const { getPluginProfileReports } = await import("./agent-hooks-bEwEJhlg.js").then((n) => n.t);
3025
3046
  return pluginOperationalReportFeedSchema.parse({
3026
3047
  generatedAt: new Date(nowMs).toISOString(),
3027
3048
  reports: await getPluginProfileReports({
@@ -3630,7 +3651,7 @@ function readDescriptionText(home) {
3630
3651
  }
3631
3652
  /** Read discovered skill names for authenticated runtime diagnostics. */
3632
3653
  async function readSkillReports() {
3633
- const { discoverSkills } = await import("./skills-EhiVbjF4.js").then((n) => n.o);
3654
+ const { discoverSkills } = await import("./skills-CAI5s___.js").then((n) => n.o);
3634
3655
  const skills = await discoverSkills();
3635
3656
  return skillReportsSchema.parse(skills.map((skill) => ({
3636
3657
  name: skill.name,
@@ -3639,7 +3660,7 @@ async function readSkillReports() {
3639
3660
  }
3640
3661
  /** Read safe configured plugin metadata for authenticated runtime diagnostics. */
3641
3662
  async function readPlugins() {
3642
- const { pluginCatalogRuntime } = await import("./catalog-runtime-BYGR3Dr4.js").then((n) => n.t);
3663
+ const { pluginCatalogRuntime } = await import("./catalog-runtime-Cw9V2jpn.js").then((n) => n.t);
3643
3664
  return pluginsSchema.parse(pluginCatalogRuntime.getProviders().map((plugin) => ({
3644
3665
  configKeys: plugin.manifest.configKeys ?? [],
3645
3666
  description: plugin.manifest.description,
@@ -3651,7 +3672,7 @@ async function readPlugins() {
3651
3672
  async function readRuntimeInfoReport() {
3652
3673
  const [{ homeDir }, { pluginCatalogRuntime }, plugins, skills] = await Promise.all([
3653
3674
  import("./package-discovery-7a9YqLhE.js").then((n) => n.r),
3654
- import("./catalog-runtime-BYGR3Dr4.js").then((n) => n.t),
3675
+ import("./catalog-runtime-Cw9V2jpn.js").then((n) => n.t),
3655
3676
  readPlugins(),
3656
3677
  readSkillReports()
3657
3678
  ]);
@@ -3668,7 +3689,7 @@ async function readRuntimeInfoReport() {
3668
3689
  /** Read sanitized operational summaries contributed by plugins. */
3669
3690
  async function readPluginOperationalReportFeed() {
3670
3691
  const nowMs = Date.now();
3671
- const { getPluginOperationalReports } = await import("./agent-hooks-FUetyyLe.js").then((n) => n.t);
3692
+ const { getPluginOperationalReports } = await import("./agent-hooks-bEwEJhlg.js").then((n) => n.t);
3672
3693
  return pluginOperationalReportFeedSchema.parse({
3673
3694
  source: "plugins",
3674
3695
  generatedAt: new Date(nowMs).toISOString(),
@@ -1,5 +1,5 @@
1
1
  import { t as ConversationStore } from "./store-DoewL5mG.js";
2
- import "./history-DI9KJT3J.js";
2
+ import "./history-nukv1YN8.js";
3
3
  import { n as JuniorPluginSet } from "./plugins-BT2l4We3.js";
4
4
  import { Hono } from "hono";
5
5
  import "@earendil-works/pi-ai/compat";
package/dist/app.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { i as ModelProfileInput, n as JuniorDashboardOptions, r as createApp, t as JuniorAppOptions } from "./app-TVL42pGL.js";
1
+ import { i as ModelProfileInput, n as JuniorDashboardOptions, r as createApp, t as JuniorAppOptions } from "./app-CjRIKZb5.js";
2
2
  import { i as defineJuniorPlugins, n as JuniorPluginSet, r as JuniorPluginSetOptions, t as JuniorPluginInput } from "./plugins-BT2l4We3.js";
3
3
  import { t as JUNIOR_VERSION } from "./version-CnXZ614E.js";
4
4
  export { JUNIOR_VERSION, JuniorAppOptions, JuniorDashboardOptions, type JuniorPluginInput, type JuniorPluginSet, type JuniorPluginSetOptions, type ModelProfileInput, createApp, defineJuniorPlugins };