@sentry/junior 0.89.0 → 0.90.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 (156) hide show
  1. package/dist/{agent-hooks-RIJ5TSWP.js → agent-hooks-MXAF7RQL.js} +10 -10
  2. package/dist/api/people/list.js +8 -8
  3. package/dist/api/people/profile.js +8 -8
  4. package/dist/api-reference.d.ts +1 -1
  5. package/dist/app.js +716 -732
  6. package/dist/{catalog-runtime-MW7XERSU.js → catalog-runtime-DXE6NXHT.js} +5 -5
  7. package/dist/chat/agent/index.d.ts +4 -0
  8. package/dist/chat/agent/prompt.d.ts +78 -0
  9. package/dist/chat/{respond.d.ts → agent/request.d.ts} +98 -55
  10. package/dist/chat/agent/resume.d.ts +65 -0
  11. package/dist/chat/agent/sandbox.d.ts +15 -0
  12. package/dist/chat/agent/session.d.ts +20 -0
  13. package/dist/chat/agent/skills.d.ts +26 -0
  14. package/dist/chat/agent/tools.d.ts +78 -0
  15. package/dist/chat/agent-dispatch/runner.d.ts +3 -5
  16. package/dist/chat/app/production.d.ts +3 -1
  17. package/dist/chat/app/services.d.ts +1 -4
  18. package/dist/chat/logging.d.ts +2 -0
  19. package/dist/chat/mcp/tool-manager.d.ts +1 -6
  20. package/dist/chat/pi/messages.d.ts +18 -2
  21. package/dist/chat/pi/transcript.d.ts +31 -0
  22. package/dist/chat/plugins/agent-hooks.d.ts +2 -2
  23. package/dist/chat/prompt.d.ts +1 -1
  24. package/dist/chat/runtime/agent-continue-runner.d.ts +5 -5
  25. package/dist/chat/runtime/agent-run-outcome.d.ts +21 -0
  26. package/dist/chat/runtime/agent-runner.d.ts +11 -0
  27. package/dist/chat/runtime/delivered-turn-state.d.ts +2 -2
  28. package/dist/chat/runtime/generated-artifacts.d.ts +16 -0
  29. package/dist/chat/runtime/reply-executor.d.ts +2 -2
  30. package/dist/chat/runtime/slack-resume.d.ts +21 -12
  31. package/dist/chat/runtime/turn.d.ts +5 -39
  32. package/dist/chat/services/reply-delivery-plan.d.ts +0 -8
  33. package/dist/chat/services/turn-failure-response.d.ts +4 -4
  34. package/dist/chat/services/turn-result.d.ts +4 -7
  35. package/dist/chat/slack/channel.d.ts +9 -5
  36. package/dist/chat/slack/client.d.ts +3 -1
  37. package/dist/chat/slack/context.d.ts +17 -5
  38. package/dist/chat/slack/id-param.d.ts +25 -0
  39. package/dist/chat/slack/ids.d.ts +18 -4
  40. package/dist/chat/slack/outbound.d.ts +16 -0
  41. package/dist/chat/slack/output.d.ts +3 -3
  42. package/dist/chat/slack/reply.d.ts +4 -7
  43. package/dist/chat/slack/timestamp-param.d.ts +25 -0
  44. package/dist/chat/slack/tools/canvas/context.d.ts +18 -0
  45. package/dist/chat/slack/tools/canvas/create.d.ts +4 -0
  46. package/dist/chat/slack/tools/canvas/edit.d.ts +3 -0
  47. package/dist/chat/slack/tools/canvas/read.d.ts +6 -0
  48. package/dist/chat/slack/tools/canvas/write.d.ts +3 -0
  49. package/dist/chat/{tools/slack → slack/tools}/channel-access.d.ts +4 -3
  50. package/dist/chat/{tools → slack/tools}/channel-capabilities.d.ts +2 -0
  51. package/dist/chat/slack/tools/channel-list-messages.d.ts +3 -0
  52. package/dist/chat/{tools/slack → slack/tools}/context.d.ts +5 -4
  53. package/dist/chat/slack/tools/list/add-items.d.ts +3 -0
  54. package/dist/chat/{tools/slack/lists.d.ts → slack/tools/list/api.d.ts} +2 -1
  55. package/dist/chat/slack/tools/list/create.d.ts +3 -0
  56. package/dist/chat/slack/tools/list/get-items.d.ts +3 -0
  57. package/dist/chat/slack/tools/list/update-item.d.ts +3 -0
  58. package/dist/chat/slack/tools/message-add-reaction.d.ts +4 -0
  59. package/dist/chat/slack/tools/send-message.d.ts +11 -0
  60. package/dist/chat/{tools/slack → slack/tools}/slack-message-url.d.ts +5 -5
  61. package/dist/chat/slack/tools/thread-read.d.ts +6 -0
  62. package/dist/chat/slack/tools/user-lookup.d.ts +2 -0
  63. package/dist/chat/slack/users.d.ts +2 -1
  64. package/dist/chat/{services → slack}/vision-context.d.ts +4 -2
  65. package/dist/chat/state/session-log.d.ts +1 -1
  66. package/dist/chat/tool-exposure.d.ts +10 -0
  67. package/dist/chat/tool-support/catalog-tool-call.d.ts +10 -0
  68. package/dist/chat/{tools/execution → tool-support}/normalize-result.d.ts +4 -1
  69. package/dist/chat/{tools/agent-tools.d.ts → tool-support/pi-tool-adapter.d.ts} +3 -9
  70. package/dist/chat/tool-support/schema-summary.d.ts +2 -0
  71. package/dist/chat/{tools → tool-support}/skill/mcp-tool-summary.d.ts +0 -6
  72. package/dist/chat/tool-support/structured-result.d.ts +73 -0
  73. package/dist/chat/tool-support/text-range-result.d.ts +58 -0
  74. package/dist/chat/tool-support/tool-execution-report.d.ts +7 -0
  75. package/dist/chat/tool-support/zod-tool.d.ts +27 -0
  76. package/dist/chat/tools/advisor/tool.d.ts +9 -18
  77. package/dist/chat/tools/definition.d.ts +56 -9
  78. package/dist/chat/tools/execute-tool.d.ts +3 -0
  79. package/dist/chat/tools/index.d.ts +3 -2
  80. package/dist/chat/tools/resource-events.d.ts +3 -13
  81. package/dist/chat/tools/runtime/report-progress.d.ts +1 -3
  82. package/dist/chat/tools/sandbox/bash.d.ts +1 -4
  83. package/dist/chat/tools/sandbox/edit-file.d.ts +25 -7
  84. package/dist/chat/tools/sandbox/file-uploads.d.ts +30 -0
  85. package/dist/chat/tools/sandbox/file-utils.d.ts +10 -1
  86. package/dist/chat/tools/sandbox/find-files.d.ts +12 -11
  87. package/dist/chat/tools/sandbox/grep.d.ts +18 -12
  88. package/dist/chat/tools/sandbox/list-dir.d.ts +15 -7
  89. package/dist/chat/tools/sandbox/read-file.d.ts +2 -31
  90. package/dist/chat/tools/sandbox/write-file.d.ts +1 -4
  91. package/dist/chat/tools/search-tools.d.ts +4 -0
  92. package/dist/chat/tools/skill/call-mcp-tool.d.ts +1 -4
  93. package/dist/chat/tools/skill/load-skill.d.ts +4 -5
  94. package/dist/chat/tools/skill/search-mcp-tools.d.ts +1 -5
  95. package/dist/chat/tools/system-time.d.ts +1 -1
  96. package/dist/chat/tools/types.d.ts +15 -5
  97. package/dist/chat/tools/web/fetch-content.d.ts +4 -2
  98. package/dist/chat/tools/web/fetch-tool.d.ts +4 -4
  99. package/dist/chat/tools/web/image-generate.d.ts +4 -3
  100. package/dist/chat/tools/web/search.d.ts +1 -4
  101. package/dist/{chunk-4IXHIV37.js → chunk-2S7M37HY.js} +6 -8
  102. package/dist/{chunk-L7OHKDOX.js → chunk-3MPOMK3K.js} +58 -7
  103. package/dist/{chunk-V6XDCS3X.js → chunk-5GBUZI6M.js} +4 -4
  104. package/dist/{chunk-7ES37H6U.js → chunk-AN2437E3.js} +4 -4
  105. package/dist/chunk-AOISHLSF.js +747 -0
  106. package/dist/{chunk-NYJLQI42.js → chunk-BKSZL4QO.js} +11257 -11957
  107. package/dist/{chunk-XS6NLQPA.js → chunk-DACFZ5CI.js} +474 -33
  108. package/dist/chunk-GCWD2VHP.js +1216 -0
  109. package/dist/chunk-GHGPTPBL.js +53 -0
  110. package/dist/{chunk-S35CPNPT.js → chunk-HXL2ZV74.js} +40 -216
  111. package/dist/{chunk-PBV4ZIVM.js → chunk-IRRMABQD.js} +1 -1
  112. package/dist/{chunk-2DPZRS3B.js → chunk-IX76WFJV.js} +8 -8
  113. package/dist/{chunk-66NX7MNW.js → chunk-KC42JAAQ.js} +1 -1
  114. package/dist/chunk-LFLTJQVR.js +90 -0
  115. package/dist/{chunk-IATAYWFU.js → chunk-NW7AXDA5.js} +2 -2
  116. package/dist/{chunk-F22AM3OW.js → chunk-NYWPISSO.js} +1 -1
  117. package/dist/chunk-OB42YVAE.js +16 -0
  118. package/dist/chunk-ONFOWI2D.js +955 -0
  119. package/dist/chunk-PHZHJTCK.js +1062 -0
  120. package/dist/{chunk-6UPQ5GTJ.js → chunk-QCKGI74V.js} +7 -7
  121. package/dist/{chunk-YPAE5RH3.js → chunk-RS6ANWVT.js} +1 -1
  122. package/dist/{chunk-C5NCV3OB.js → chunk-TYUXD3FN.js} +1 -1
  123. package/dist/{chunk-KBFQXJL4.js → chunk-XP7F4LYB.js} +5 -7
  124. package/dist/{chunk-VMBZFPZM.js → chunk-ZUK7BL63.js} +187 -9
  125. package/dist/cli/chat.js +55 -40
  126. package/dist/cli/check.js +6 -6
  127. package/dist/cli/plugins.js +16 -16
  128. package/dist/cli/snapshot-warmup.js +9 -9
  129. package/dist/cli/upgrade.js +21 -21
  130. package/dist/db-CXI7PR5U.js +18 -0
  131. package/dist/handlers/agent-dispatch.d.ts +3 -3
  132. package/dist/handlers/mcp-oauth-callback.d.ts +3 -3
  133. package/dist/handlers/oauth-callback.d.ts +3 -3
  134. package/dist/instrumentation.js +6 -5
  135. package/dist/nitro.js +3 -7
  136. package/dist/reporting.js +23 -25
  137. package/dist/{runner-BCRF2FCI.js → runner-FKL3RAHA.js} +89 -77
  138. package/dist/{validation-FMJO3L5P.js → validation-I7GD2YWS.js} +6 -6
  139. package/package.json +5 -5
  140. package/dist/chat/respond-helpers.d.ts +0 -82
  141. package/dist/chat/services/attachment-claims.d.ts +0 -2
  142. package/dist/chat/services/channel-intent.d.ts +0 -2
  143. package/dist/chat/tools/sandbox/attach-file.d.ts +0 -7
  144. package/dist/chat/tools/slack/canvas-tools.d.ts +0 -30
  145. package/dist/chat/tools/slack/channel-list-messages.d.ts +0 -9
  146. package/dist/chat/tools/slack/channel-post-message.d.ts +0 -5
  147. package/dist/chat/tools/slack/list-tools.d.ts +0 -21
  148. package/dist/chat/tools/slack/message-add-reaction.d.ts +0 -5
  149. package/dist/chat/tools/slack/thread-read.d.ts +0 -12
  150. package/dist/chat/tools/slack/user-lookup.d.ts +0 -8
  151. package/dist/chunk-AHLSXMOU.js +0 -506
  152. package/dist/chunk-FTMXFBDC.js +0 -49
  153. package/dist/chunk-KBSLCOGE.js +0 -2226
  154. package/dist/chunk-KQKIA4CU.js +0 -186
  155. package/dist/db-37HOGLI7.js +0 -18
  156. /package/dist/chat/{tools/slack/canvases.d.ts → slack/tools/canvas/api.d.ts} +0 -0
@@ -1,19 +1,19 @@
1
- import {
2
- getStateAdapter
3
- } from "./chunk-YPAE5RH3.js";
4
1
  import {
5
2
  normalizeSlackConversationId
6
- } from "./chunk-AHLSXMOU.js";
3
+ } from "./chunk-DACFZ5CI.js";
4
+ import {
5
+ getStateAdapter
6
+ } from "./chunk-RS6ANWVT.js";
7
7
  import {
8
8
  parseSlackThreadId
9
- } from "./chunk-L7OHKDOX.js";
9
+ } from "./chunk-3MPOMK3K.js";
10
10
  import {
11
11
  parseStoredSlackRequester
12
- } from "./chunk-KQKIA4CU.js";
12
+ } from "./chunk-ZUK7BL63.js";
13
13
  import {
14
14
  isRecord,
15
15
  toOptionalNumber
16
- } from "./chunk-FTMXFBDC.js";
16
+ } from "./chunk-OB42YVAE.js";
17
17
  import {
18
18
  getClient
19
19
  } from "./chunk-3DA7X2U3.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getChatConfig
3
- } from "./chunk-S35CPNPT.js";
3
+ } from "./chunk-HXL2ZV74.js";
4
4
 
5
5
  // src/chat/state/adapter.ts
6
6
  import { createMemoryState } from "@chat-adapter/state-memory";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  pluginCatalogRuntime
3
- } from "./chunk-KBFQXJL4.js";
3
+ } from "./chunk-XP7F4LYB.js";
4
4
 
5
5
  // src/chat/plugins/validation.ts
6
6
  import { isDeepStrictEqual } from "util";
@@ -1,16 +1,14 @@
1
1
  import {
2
- parseActorUserId
3
- } from "./chunk-KQKIA4CU.js";
2
+ logInfo,
3
+ logWarn,
4
+ parseActorUserId,
5
+ setSpanAttributes
6
+ } from "./chunk-ZUK7BL63.js";
4
7
  import {
5
8
  discoverInstalledPluginPackageContent,
6
9
  normalizePluginPackageNames,
7
10
  pluginRoots
8
11
  } from "./chunk-6APU57E6.js";
9
- import {
10
- logInfo,
11
- logWarn,
12
- setSpanAttributes
13
- } from "./chunk-VMBZFPZM.js";
14
12
 
15
13
  // src/chat/plugins/registry.ts
16
14
  import { readFileSync, readdirSync, statSync } from "fs";
@@ -1,8 +1,7 @@
1
1
  import {
2
- getDeploymentTelemetryAttributes,
3
2
  toOptionalNumber,
4
3
  toOptionalString
5
- } from "./chunk-FTMXFBDC.js";
4
+ } from "./chunk-OB42YVAE.js";
6
5
  import {
7
6
  captureException,
8
7
  sentry_exports,
@@ -11,6 +10,10 @@ import {
11
10
  startSpan,
12
11
  withScope
13
12
  } from "./chunk-3DA7X2U3.js";
13
+ import {
14
+ getDeploymentTelemetryAttributes,
15
+ parseSlackTeamId
16
+ } from "./chunk-LFLTJQVR.js";
14
17
 
15
18
  // src/chat/logging.ts
16
19
  import { AsyncLocalStorage } from "async_hooks";
@@ -68,6 +71,13 @@ var LEGACY_KEY_MAP = {
68
71
  function normalizeGenAiFinishReason(reason) {
69
72
  return reason === "toolUse" ? "tool_use" : reason;
70
73
  }
74
+ function summarizeMessageText(text) {
75
+ const normalized = text.trim().replace(/\s+/g, " ");
76
+ if (!normalized) {
77
+ return "[empty]";
78
+ }
79
+ return normalized.length > 1200 ? `${normalized.slice(0, 1200)}...` : normalized;
80
+ }
71
81
  function normalizeGenAiFinishReasons(value) {
72
82
  if (typeof value === "string" && value.trim()) {
73
83
  return [normalizeGenAiFinishReason(value)];
@@ -1344,17 +1354,178 @@ function extractGenAiUsageAttributes(...sources) {
1344
1354
  };
1345
1355
  }
1346
1356
 
1347
- // src/chat/slack/ids.ts
1348
- function isSlackTeamId(value) {
1349
- return /^T[A-Z0-9]+$/.test(value);
1357
+ // src/chat/requester.ts
1358
+ import { z } from "zod";
1359
+ import { requesterSchema } from "@sentry/junior-plugin-api";
1360
+ var SLACK_USER_ID_DISPLAY_PATTERN = /^[UW][A-Z0-9]{5,}$/;
1361
+ var EMAIL_PATTERN = /^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/;
1362
+ var exactStoredStringSchema = z.string().min(1).refine((value) => value === value.trim());
1363
+ var storedSlackRequesterSchema = z.object({
1364
+ email: exactStoredStringSchema.optional(),
1365
+ fullName: exactStoredStringSchema.optional(),
1366
+ platform: z.literal("slack").optional(),
1367
+ slackUserId: exactStoredStringSchema.optional(),
1368
+ slackUserName: exactStoredStringSchema.optional(),
1369
+ teamId: exactStoredStringSchema.optional()
1370
+ }).strict();
1371
+ function parseRequester(value) {
1372
+ const result = requesterSchema.safeParse(value);
1373
+ return result.success ? result.data : void 0;
1374
+ }
1375
+ function clean(value) {
1376
+ const trimmed = value?.trim();
1377
+ return trimmed ? trimmed : void 0;
1378
+ }
1379
+ function isSyntheticActorUserId(value) {
1380
+ return value.toLowerCase() === "unknown";
1381
+ }
1382
+ function isSlackUserId(value) {
1383
+ return SLACK_USER_ID_DISPLAY_PATTERN.test(value);
1384
+ }
1385
+ function cleanRequesterDisplayName(value, userId) {
1386
+ const displayName = clean(value);
1387
+ if (!displayName) {
1388
+ return void 0;
1389
+ }
1390
+ if (displayName.toLowerCase() === "unknown") {
1391
+ return void 0;
1392
+ }
1393
+ if (userId && displayName === userId) {
1394
+ return void 0;
1395
+ }
1396
+ return isSlackUserId(displayName) ? void 0 : displayName;
1397
+ }
1398
+ function cleanRequesterEmail(value) {
1399
+ const email = clean(value);
1400
+ return email && EMAIL_PATTERN.test(email) ? email : void 0;
1401
+ }
1402
+ function parseActorUserId(value) {
1403
+ if (typeof value !== "string" || value.length === 0) {
1404
+ return void 0;
1405
+ }
1406
+ if (value !== value.trim() || isSyntheticActorUserId(value)) {
1407
+ return void 0;
1408
+ }
1409
+ return value;
1350
1410
  }
1351
- function isSlackConversationId(value) {
1352
- return /^(C|G|D)[A-Z0-9]+$/.test(value);
1411
+ function isActorUserId(value) {
1412
+ return parseActorUserId(value) === value;
1413
+ }
1414
+ function createRequester(input, context) {
1415
+ const platform = context.platform ?? input?.platform;
1416
+ if (!platform) {
1417
+ return void 0;
1418
+ }
1419
+ const contextUserId = parseActorUserId(context.userId);
1420
+ if (context.userId !== void 0 && !contextUserId) {
1421
+ return void 0;
1422
+ }
1423
+ const inputUserId = parseActorUserId(input?.userId);
1424
+ if (input?.userId !== void 0 && !inputUserId) {
1425
+ return void 0;
1426
+ }
1427
+ const requesterUserId = contextUserId ?? inputUserId;
1428
+ if (!requesterUserId) {
1429
+ return void 0;
1430
+ }
1431
+ const contextTeamId = parseSlackTeamId(context.teamId);
1432
+ if (context.teamId !== void 0 && !contextTeamId) {
1433
+ return void 0;
1434
+ }
1435
+ const inputTeamId = parseSlackTeamId(input?.teamId);
1436
+ if (input?.teamId !== void 0 && !inputTeamId) {
1437
+ return void 0;
1438
+ }
1439
+ const requesterTeamId = contextTeamId ?? inputTeamId;
1440
+ if (platform === "slack" && !requesterTeamId) {
1441
+ return void 0;
1442
+ }
1443
+ const canUseInputProfile = (!contextUserId || !inputUserId || contextUserId === inputUserId) && (platform !== "slack" || !contextTeamId || !inputTeamId || contextTeamId === inputTeamId);
1444
+ const requester = {
1445
+ ...canUseInputProfile && cleanRequesterEmail(input?.email) ? { email: cleanRequesterEmail(input?.email) } : {},
1446
+ ...canUseInputProfile && cleanRequesterDisplayName(input?.fullName, requesterUserId) ? {
1447
+ fullName: cleanRequesterDisplayName(input?.fullName, requesterUserId)
1448
+ } : {},
1449
+ platform,
1450
+ userId: requesterUserId,
1451
+ ...canUseInputProfile && cleanRequesterDisplayName(input?.userName, requesterUserId) ? {
1452
+ userName: cleanRequesterDisplayName(input?.userName, requesterUserId)
1453
+ } : {}
1454
+ };
1455
+ if (platform === "slack") {
1456
+ return { ...requester, platform, teamId: requesterTeamId };
1457
+ }
1458
+ return { ...requester, platform };
1459
+ }
1460
+ function createSlackRequester(teamId, userId, profile) {
1461
+ const actorUserId = parseActorUserId(userId);
1462
+ const actorTeamId = parseSlackTeamId(teamId);
1463
+ if (!actorTeamId || !actorUserId) {
1464
+ throw new Error("Slack requester requires team and user ids");
1465
+ }
1466
+ const requester = createRequester(
1467
+ {
1468
+ email: profile?.email,
1469
+ fullName: profile?.fullName,
1470
+ platform: "slack",
1471
+ teamId: actorTeamId,
1472
+ userId: actorUserId,
1473
+ userName: profile?.userName
1474
+ },
1475
+ { teamId: actorTeamId, userId: actorUserId }
1476
+ );
1477
+ if (!requester || requester.platform !== "slack") {
1478
+ throw new Error("Slack requester requires team and user ids");
1479
+ }
1480
+ return requester;
1481
+ }
1482
+ function parseStoredSlackRequester(value) {
1483
+ const parsed = storedSlackRequesterSchema.safeParse(value);
1484
+ if (!parsed.success) {
1485
+ return void 0;
1486
+ }
1487
+ if (parsed.data.slackUserId !== void 0 && !parseActorUserId(parsed.data.slackUserId)) {
1488
+ return void 0;
1489
+ }
1490
+ if (parsed.data.teamId !== void 0 && !parseSlackTeamId(parsed.data.teamId)) {
1491
+ return void 0;
1492
+ }
1493
+ if ((parsed.data.platform !== void 0 || parsed.data.teamId !== void 0) && (!parsed.data.platform || !parsed.data.teamId)) {
1494
+ return void 0;
1495
+ }
1496
+ return parsed.data;
1497
+ }
1498
+ function toStoredSlackRequester(requester) {
1499
+ return {
1500
+ ...requester.email ? { email: requester.email } : {},
1501
+ ...requester.fullName ? { fullName: requester.fullName } : {},
1502
+ platform: requester.platform,
1503
+ slackUserId: requester.userId,
1504
+ ...requester.userName ? { slackUserName: requester.userName } : {},
1505
+ teamId: requester.teamId
1506
+ };
1507
+ }
1508
+ function createSlackResumeRequester(args) {
1509
+ if (args.requester) {
1510
+ if (args.requester.platform !== "slack" || args.requester.teamId !== args.teamId || args.requester.userId !== args.userId) {
1511
+ throw new Error("Stored Slack requester did not match resume actor");
1512
+ }
1513
+ }
1514
+ const requester = createRequester(args.requester, {
1515
+ platform: "slack",
1516
+ teamId: args.teamId,
1517
+ userId: args.userId
1518
+ });
1519
+ if (!requester || requester.platform !== "slack") {
1520
+ throw new Error("Slack requester requires team and user ids");
1521
+ }
1522
+ return requester;
1353
1523
  }
1354
1524
 
1355
1525
  export {
1356
1526
  normalizeIdentityEmail,
1357
1527
  normalizeGenAiFinishReason,
1528
+ summarizeMessageText,
1358
1529
  createChatSdkLogger,
1359
1530
  getLogContextAttributes,
1360
1531
  setSentryUser,
@@ -1374,6 +1545,13 @@ export {
1374
1545
  serializeGenAiAttribute,
1375
1546
  extractGenAiUsageSummary,
1376
1547
  extractGenAiUsageAttributes,
1377
- isSlackTeamId,
1378
- isSlackConversationId
1548
+ storedSlackRequesterSchema,
1549
+ parseRequester,
1550
+ parseActorUserId,
1551
+ isActorUserId,
1552
+ createRequester,
1553
+ createSlackRequester,
1554
+ parseStoredSlackRequester,
1555
+ toStoredSlackRequester,
1556
+ createSlackResumeRequester
1379
1557
  };
package/dist/cli/chat.js CHANGED
@@ -1,6 +1,30 @@
1
+ import {
2
+ createAgentRunner,
3
+ executeAgentRun
4
+ } from "../chunk-BKSZL4QO.js";
5
+ import "../chunk-ONFOWI2D.js";
6
+ import "../chunk-KC42JAAQ.js";
7
+ import "../chunk-5GBUZI6M.js";
8
+ import "../chunk-PHZHJTCK.js";
9
+ import "../chunk-GCWD2VHP.js";
1
10
  import {
2
11
  loadAppPluginSet
3
12
  } from "../chunk-Y2CM7HXH.js";
13
+ import "../chunk-DACFZ5CI.js";
14
+ import "../chunk-NW7AXDA5.js";
15
+ import "../chunk-G3E7SCME.js";
16
+ import "../chunk-RS6ANWVT.js";
17
+ import "../chunk-2S7M37HY.js";
18
+ import "../chunk-HXL2ZV74.js";
19
+ import "../chunk-3MPOMK3K.js";
20
+ import "../chunk-GHGPTPBL.js";
21
+ import "../chunk-AN2437E3.js";
22
+ import "../chunk-XP7F4LYB.js";
23
+ import "../chunk-ZUK7BL63.js";
24
+ import "../chunk-OB42YVAE.js";
25
+ import "../chunk-3DA7X2U3.js";
26
+ import "../chunk-6APU57E6.js";
27
+ import "../chunk-LFLTJQVR.js";
4
28
  import "../chunk-MLKGABMK.js";
5
29
 
6
30
  // src/cli/chat.ts
@@ -56,13 +80,6 @@ function errorMessage(error) {
56
80
  }
57
81
  async function deliverReply(io, reply) {
58
82
  try {
59
- const files = reply.files ?? [];
60
- if (files.length > 0) {
61
- const names = files.map(
62
- (file) => typeof file.filename === "string" && file.filename.trim() ? file.filename : "generated file"
63
- ).join(", ");
64
- throw new Error(`Local chat cannot deliver files yet: ${names}`);
65
- }
66
83
  await io.write(formatReply(reply));
67
84
  } catch (error) {
68
85
  throw new ChatOutputError(error);
@@ -130,10 +147,10 @@ async function configureLocalChatPlugins(pluginSet) {
130
147
  databaseModule
131
148
  ] = await Promise.all([
132
149
  import("../plugins-PZMDS7AT.js"),
133
- import("../agent-hooks-RIJ5TSWP.js"),
134
- import("../catalog-runtime-MW7XERSU.js"),
135
- import("../validation-FMJO3L5P.js"),
136
- import("../db-37HOGLI7.js")
150
+ import("../agent-hooks-MXAF7RQL.js"),
151
+ import("../catalog-runtime-DXE6NXHT.js"),
152
+ import("../validation-I7GD2YWS.js"),
153
+ import("../db-CXI7PR5U.js")
137
154
  ]);
138
155
  const resolvedPluginSet = pluginSet === void 0 ? await loadLocalPluginSet() : pluginSet ?? void 0;
139
156
  const plugins = pluginsModule.pluginRuntimeRegistrationsFromPluginSet(resolvedPluginSet);
@@ -191,35 +208,43 @@ function newRunConversationId() {
191
208
  }
192
209
  return conversationId;
193
210
  }
194
- async function runPrompt(options, io, pluginSet) {
211
+ async function prepareLocalChatRun(io, pluginSet) {
195
212
  defaultStateAdapterForLocalChat();
196
213
  await configureLocalChatPlugins(pluginSet);
197
- const conversationId = newRunConversationId();
198
- const { runLocalAgentTurn } = await import("../runner-BCRF2FCI.js");
214
+ const { runLocalAgentTurn } = await import("../runner-FKL3RAHA.js");
215
+ const deps = {
216
+ agentRunner: createAgentRunner(executeAgentRun),
217
+ deliverReply: async (reply) => {
218
+ await deliverReply(io, reply);
219
+ },
220
+ onStatus: async (status) => {
221
+ await reportStatus(io, status);
222
+ },
223
+ onToolResult: async (result) => {
224
+ await reportToolResult(io, result);
225
+ }
226
+ };
227
+ return { conversationId: newRunConversationId(), runLocalAgentTurn, deps };
228
+ }
229
+ async function runPrompt(options, io, pluginSet) {
230
+ const { conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(
231
+ io,
232
+ pluginSet
233
+ );
199
234
  const result = await runLocalAgentTurn(
200
235
  {
201
236
  conversationId,
202
237
  message: options.message
203
238
  },
204
- {
205
- deliverReply: async (reply) => {
206
- await deliverReply(io, reply);
207
- },
208
- onStatus: async (status) => {
209
- await reportStatus(io, status);
210
- },
211
- onToolResult: async (result2) => {
212
- await reportToolResult(io, result2);
213
- }
214
- }
239
+ deps
215
240
  );
216
241
  return result.outcome === "success" ? 0 : 1;
217
242
  }
218
243
  async function runInteractive(io, pluginSet) {
219
- defaultStateAdapterForLocalChat();
220
- await configureLocalChatPlugins(pluginSet);
221
- const conversationId = newRunConversationId();
222
- const { runLocalAgentTurn } = await import("../runner-BCRF2FCI.js");
244
+ const { conversationId, runLocalAgentTurn, deps } = await prepareLocalChatRun(
245
+ io,
246
+ pluginSet
247
+ );
223
248
  const rl = readline.createInterface({
224
249
  input: io.input,
225
250
  output: io.output,
@@ -240,17 +265,7 @@ async function runInteractive(io, pluginSet) {
240
265
  conversationId,
241
266
  message
242
267
  },
243
- {
244
- deliverReply: async (reply) => {
245
- await deliverReply(io, reply);
246
- },
247
- onStatus: async (status) => {
248
- await reportStatus(io, status);
249
- },
250
- onToolResult: async (result) => {
251
- await reportToolResult(io, result);
252
- }
253
- }
268
+ deps
254
269
  );
255
270
  } catch (error) {
256
271
  if (error instanceof ChatOutputError) {
package/dist/cli/check.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  parseSkillFile
3
- } from "../chunk-7ES37H6U.js";
3
+ } from "../chunk-AN2437E3.js";
4
4
  import {
5
5
  parseInlinePluginManifest,
6
6
  parsePluginManifest
7
- } from "../chunk-KBFQXJL4.js";
8
- import "../chunk-KQKIA4CU.js";
7
+ } from "../chunk-XP7F4LYB.js";
8
+ import "../chunk-ZUK7BL63.js";
9
+ import "../chunk-OB42YVAE.js";
10
+ import "../chunk-3DA7X2U3.js";
9
11
  import "../chunk-6APU57E6.js";
10
- import "../chunk-VMBZFPZM.js";
11
12
  import {
12
13
  JUNIOR_CONVERSATION_WORK_CALLBACK_ROUTE,
13
14
  JUNIOR_HEARTBEAT_ROUTE,
14
15
  LEGACY_JUNIOR_CONVERSATION_WORK_FUNCTION
15
- } from "../chunk-FTMXFBDC.js";
16
- import "../chunk-3DA7X2U3.js";
16
+ } from "../chunk-LFLTJQVR.js";
17
17
  import "../chunk-MLKGABMK.js";
18
18
 
19
19
  // src/cli/check.ts
@@ -1,38 +1,38 @@
1
1
  import {
2
2
  validatePluginEgressCredentialHooks,
3
3
  validatePluginRegistrations
4
- } from "../chunk-C5NCV3OB.js";
4
+ } from "../chunk-TYUXD3FN.js";
5
5
  import {
6
6
  pluginCatalogConfigFromPluginSet,
7
7
  pluginCliRegistrationsFromPluginSet,
8
8
  pluginRuntimeRegistrationsFromPluginSet
9
9
  } from "../chunk-SG5WAA7H.js";
10
+ import {
11
+ loadAppPluginSet
12
+ } from "../chunk-Y2CM7HXH.js";
10
13
  import {
11
14
  setPlugins,
12
15
  validatePlugins
13
- } from "../chunk-XS6NLQPA.js";
16
+ } from "../chunk-DACFZ5CI.js";
14
17
  import {
15
18
  createPluginLogger
16
- } from "../chunk-IATAYWFU.js";
19
+ } from "../chunk-NW7AXDA5.js";
17
20
  import "../chunk-G3E7SCME.js";
18
- import "../chunk-YPAE5RH3.js";
21
+ import "../chunk-RS6ANWVT.js";
19
22
  import {
20
23
  getDb
21
- } from "../chunk-4IXHIV37.js";
22
- import "../chunk-AHLSXMOU.js";
23
- import "../chunk-S35CPNPT.js";
24
- import "../chunk-L7OHKDOX.js";
25
- import {
26
- loadAppPluginSet
27
- } from "../chunk-Y2CM7HXH.js";
24
+ } from "../chunk-2S7M37HY.js";
25
+ import "../chunk-HXL2ZV74.js";
26
+ import "../chunk-3MPOMK3K.js";
27
+ import "../chunk-GHGPTPBL.js";
28
28
  import {
29
29
  pluginCatalogRuntime
30
- } from "../chunk-KBFQXJL4.js";
31
- import "../chunk-KQKIA4CU.js";
32
- import "../chunk-6APU57E6.js";
33
- import "../chunk-VMBZFPZM.js";
34
- import "../chunk-FTMXFBDC.js";
30
+ } from "../chunk-XP7F4LYB.js";
31
+ import "../chunk-ZUK7BL63.js";
32
+ import "../chunk-OB42YVAE.js";
35
33
  import "../chunk-3DA7X2U3.js";
34
+ import "../chunk-6APU57E6.js";
35
+ import "../chunk-LFLTJQVR.js";
36
36
  import "../chunk-MLKGABMK.js";
37
37
 
38
38
  // src/cli/plugins.ts
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  resolveRuntimeDependencySnapshot
3
- } from "../chunk-V6XDCS3X.js";
3
+ } from "../chunk-5GBUZI6M.js";
4
4
  import "../chunk-G3E7SCME.js";
5
5
  import {
6
6
  disconnectStateAdapter
7
- } from "../chunk-YPAE5RH3.js";
8
- import "../chunk-S35CPNPT.js";
9
- import "../chunk-L7OHKDOX.js";
7
+ } from "../chunk-RS6ANWVT.js";
8
+ import "../chunk-HXL2ZV74.js";
9
+ import "../chunk-3MPOMK3K.js";
10
10
  import {
11
11
  pluginCatalogRuntime
12
- } from "../chunk-KBFQXJL4.js";
13
- import "../chunk-KQKIA4CU.js";
14
- import "../chunk-6APU57E6.js";
15
- import "../chunk-VMBZFPZM.js";
16
- import "../chunk-FTMXFBDC.js";
12
+ } from "../chunk-XP7F4LYB.js";
13
+ import "../chunk-ZUK7BL63.js";
14
+ import "../chunk-OB42YVAE.js";
17
15
  import "../chunk-3DA7X2U3.js";
16
+ import "../chunk-6APU57E6.js";
17
+ import "../chunk-LFLTJQVR.js";
18
18
  import "../chunk-MLKGABMK.js";
19
19
 
20
20
  // src/cli/snapshot-warmup.ts
@@ -4,53 +4,53 @@ import {
4
4
  recordConversationActivity,
5
5
  recordConversationExecution,
6
6
  requestConversationWork
7
- } from "../chunk-2DPZRS3B.js";
8
- import {
9
- JUNIOR_THREAD_STATE_TTL_MS,
10
- coerceThreadConversationState
11
- } from "../chunk-66NX7MNW.js";
7
+ } from "../chunk-IX76WFJV.js";
12
8
  import {
13
9
  defineJuniorPlugins,
14
10
  pluginCatalogConfigFromEnv,
15
11
  pluginCatalogConfigFromPluginSet,
16
12
  pluginRuntimeRegistrationsFromPluginSet
17
13
  } from "../chunk-SG5WAA7H.js";
14
+ import {
15
+ JUNIOR_THREAD_STATE_TTL_MS,
16
+ coerceThreadConversationState
17
+ } from "../chunk-KC42JAAQ.js";
18
+ import {
19
+ loadAppPluginSet
20
+ } from "../chunk-Y2CM7HXH.js";
18
21
  import {
19
22
  createPluginLogger,
20
23
  createPluginState
21
- } from "../chunk-IATAYWFU.js";
24
+ } from "../chunk-NW7AXDA5.js";
22
25
  import {
23
26
  disconnectStateAdapter,
24
27
  getConnectedStateContext
25
- } from "../chunk-YPAE5RH3.js";
28
+ } from "../chunk-RS6ANWVT.js";
26
29
  import {
27
30
  createJuniorSqlExecutor,
28
31
  createSqlStore,
29
32
  getDb
30
- } from "../chunk-4IXHIV37.js";
31
- import {
32
- parseDestination,
33
- sameDestination
34
- } from "../chunk-AHLSXMOU.js";
33
+ } from "../chunk-2S7M37HY.js";
35
34
  import {
36
35
  getChatConfig
37
- } from "../chunk-S35CPNPT.js";
38
- import "../chunk-L7OHKDOX.js";
36
+ } from "../chunk-HXL2ZV74.js";
37
+ import "../chunk-3MPOMK3K.js";
39
38
  import {
40
- loadAppPluginSet
41
- } from "../chunk-Y2CM7HXH.js";
39
+ parseDestination,
40
+ sameDestination
41
+ } from "../chunk-GHGPTPBL.js";
42
42
  import {
43
43
  pluginCatalogRuntime
44
- } from "../chunk-KBFQXJL4.js";
45
- import "../chunk-KQKIA4CU.js";
46
- import "../chunk-6APU57E6.js";
47
- import "../chunk-VMBZFPZM.js";
44
+ } from "../chunk-XP7F4LYB.js";
45
+ import "../chunk-ZUK7BL63.js";
48
46
  import {
49
47
  isRecord,
50
48
  toOptionalNumber,
51
49
  toOptionalString
52
- } from "../chunk-FTMXFBDC.js";
50
+ } from "../chunk-OB42YVAE.js";
53
51
  import "../chunk-3DA7X2U3.js";
52
+ import "../chunk-6APU57E6.js";
53
+ import "../chunk-LFLTJQVR.js";
54
54
  import "../chunk-MLKGABMK.js";
55
55
 
56
56
  // src/cli/upgrade.ts
@@ -0,0 +1,18 @@
1
+ import {
2
+ closeDb,
3
+ getConversationStore,
4
+ getDb
5
+ } from "./chunk-2S7M37HY.js";
6
+ import "./chunk-HXL2ZV74.js";
7
+ import "./chunk-3MPOMK3K.js";
8
+ import "./chunk-GHGPTPBL.js";
9
+ import "./chunk-ZUK7BL63.js";
10
+ import "./chunk-OB42YVAE.js";
11
+ import "./chunk-3DA7X2U3.js";
12
+ import "./chunk-LFLTJQVR.js";
13
+ import "./chunk-MLKGABMK.js";
14
+ export {
15
+ closeDb,
16
+ getConversationStore,
17
+ getDb
18
+ };
@@ -1,8 +1,8 @@
1
- import type { SandboxEgressTracePropagationConfig } from "@/chat/sandbox/egress/tracing";
1
+ import type { AgentRunner } from "@/chat/runtime/agent-runner";
2
2
  import type { WaitUntilFn } from "@/handlers/types";
3
3
  interface AgentDispatchHandlerOptions {
4
- tracePropagation?: SandboxEgressTracePropagationConfig;
4
+ agentRunner: AgentRunner;
5
5
  }
6
6
  /** Handle the authenticated internal agent-dispatch callback. */
7
- export declare function POST(request: Request, waitUntil: WaitUntilFn, options?: AgentDispatchHandlerOptions): Promise<Response>;
7
+ export declare function POST(request: Request, waitUntil: WaitUntilFn, options: AgentDispatchHandlerOptions): Promise<Response>;
8
8
  export {};
@@ -1,7 +1,7 @@
1
- import type { generateAssistantReply } from "@/chat/respond";
1
+ import type { AgentRunner } from "@/chat/runtime/agent-runner";
2
2
  import type { WaitUntilFn } from "@/handlers/types";
3
3
  interface McpOAuthCallbackOptions {
4
- generateReply?: typeof generateAssistantReply;
4
+ agentRunner: AgentRunner;
5
5
  }
6
- export declare function GET(request: Request, provider: string, waitUntil: WaitUntilFn, options?: McpOAuthCallbackOptions): Promise<Response>;
6
+ export declare function GET(request: Request, provider: string, waitUntil: WaitUntilFn, options: McpOAuthCallbackOptions): Promise<Response>;
7
7
  export {};