@sentry/junior 0.141.0 → 0.142.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 (70) hide show
  1. package/dist/{agent-hooks-HIRVKUQJ.js → agent-hooks-WDJQQAPH.js} +10 -10
  2. package/dist/api/schema/task.d.ts +8 -0
  3. package/dist/api/schema.js +1 -1
  4. package/dist/api.js +34 -22
  5. package/dist/app.js +62 -91
  6. package/dist/{catalog-runtime-XVLED5UH.js → catalog-runtime-CLHTYBHB.js} +5 -5
  7. package/dist/chat/event-tasks/types.d.ts +7 -1
  8. package/dist/chat/runtime/turn.d.ts +0 -4
  9. package/dist/chat/scheduled-tasks/tools/create.d.ts +1 -0
  10. package/dist/chat/scheduled-tasks/types.d.ts +5 -0
  11. package/dist/chat/services/conversation-memory.d.ts +2 -1
  12. package/dist/chat/services/short-title.d.ts +25 -0
  13. package/dist/chat/state/conversation.d.ts +6 -17
  14. package/dist/chat/tools/create-event-task.d.ts +1 -0
  15. package/dist/{chunk-OHO46E7F.js → chunk-4EZV6URQ.js} +88 -36
  16. package/dist/{chunk-3H42HMA2.js → chunk-4L7PKEHM.js} +5 -1
  17. package/dist/{chunk-HQAFIN6O.js → chunk-5ITSZIAP.js} +1 -1
  18. package/dist/{chunk-UONUDOJP.js → chunk-5QVVW3FY.js} +7 -7
  19. package/dist/{chunk-5LPWHC7Q.js → chunk-6IMKBHCG.js} +80 -46
  20. package/dist/{chunk-2DOVDDZJ.js → chunk-7R3CGEMF.js} +3 -3
  21. package/dist/{chunk-BBLO66XT.js → chunk-A646AKNB.js} +2 -2
  22. package/dist/{chunk-PIQKV7IR.js → chunk-B2H7NI5C.js} +10 -451
  23. package/dist/{chunk-NFL4FRIU.js → chunk-CA4WLRA3.js} +4 -4
  24. package/dist/{chunk-6FRAWWGR.js → chunk-CBMIVCPM.js} +2 -2
  25. package/dist/chunk-DRTWANQF.js +67 -0
  26. package/dist/{chunk-44NWPKY3.js → chunk-HVTWCMDS.js} +1 -1
  27. package/dist/{chunk-43OPSFUY.js → chunk-JIWZ7T4C.js} +1 -1
  28. package/dist/{chunk-PGJUJCOQ.js → chunk-LGY7YX5O.js} +1 -1
  29. package/dist/{chunk-OFQBDHVG.js → chunk-LL3BGP7J.js} +1 -1
  30. package/dist/{chunk-HN4UZTG7.js → chunk-LXLBYA6N.js} +2 -2
  31. package/dist/{chunk-FWXSPJRN.js → chunk-N3H7G5K6.js} +1 -1
  32. package/dist/{chunk-6U44QGXL.js → chunk-NWO5IB7V.js} +1 -1
  33. package/dist/{chunk-YWM6MJT4.js → chunk-OGQGJAD7.js} +2 -0
  34. package/dist/{chunk-DBKS7JR2.js → chunk-OQAPYAXH.js} +3 -3
  35. package/dist/{chunk-7ULXCNOZ.js → chunk-PWDCFIQG.js} +6 -6
  36. package/dist/{chunk-FZFJZZR3.js → chunk-QDRMQI5W.js} +4 -4
  37. package/dist/{chunk-DK3GQWJK.js → chunk-R7E476CH.js} +6 -6
  38. package/dist/{chunk-DVIJ6DP6.js → chunk-RYYBUI34.js} +2 -2
  39. package/dist/{chunk-5MFCEKR6.js → chunk-SCHH6264.js} +3 -3
  40. package/dist/{chunk-LMGKSDO4.js → chunk-SF6YKONJ.js} +1 -1
  41. package/dist/{chunk-H4WNQFBH.js → chunk-T4NFQ5SG.js} +5 -5
  42. package/dist/{chunk-A2O7SGK5.js → chunk-VJMBLWYR.js} +6 -6
  43. package/dist/{chunk-DKH4WGZU.js → chunk-WJEW7UNC.js} +341 -16
  44. package/dist/{chunk-EYD523BV.js → chunk-WYLSMTWU.js} +1 -1
  45. package/dist/{chunk-UFEU4UX6.js → chunk-XAW6IN6M.js} +1 -1
  46. package/dist/chunk-XFHSZNOX.js +75 -0
  47. package/dist/{chunk-LIVSCWI5.js → chunk-ZPNUI4L3.js} +23 -26
  48. package/dist/cli/chat.js +32 -30
  49. package/dist/cli/check.js +6 -6
  50. package/dist/cli/plugins.js +13 -13
  51. package/dist/cli/snapshot-create.js +9 -9
  52. package/dist/cli/upgrade.js +7 -7
  53. package/dist/db/schema/event-tasks.d.ts +20 -52
  54. package/dist/db/schema/scheduled-tasks.d.ts +17 -0
  55. package/dist/db/schema.d.ts +36 -52
  56. package/dist/{db-PSMQZR4P.js → db-6N4CD5AI.js} +7 -7
  57. package/dist/instrumentation.js +4 -4
  58. package/dist/nitro.js +2 -2
  59. package/dist/{oauth-callback-server-XZUK2AT6.js → oauth-callback-server-G4K2X56R.js} +23 -21
  60. package/dist/{runner-5EKJCQWP.js → runner-DEIHVRUE.js} +24 -25
  61. package/dist/{skills-2PRM42SE.js → skills-FZVJ6ZFW.js} +6 -6
  62. package/dist/{spawn-UGTLRTFP.js → spawn-WD4F67SZ.js} +17 -17
  63. package/dist/{validation-XLXAIRTR.js → validation-EOLSG7B6.js} +6 -6
  64. package/dist/version.js +1 -1
  65. package/dist/{work-CNTNEQ2Q.js → work-AS3IBMLA.js} +16 -16
  66. package/dist/{worker-BGW7CKZ7.js → worker-VGGNGOUU.js} +10 -10
  67. package/migrations/0023_task_title_columns.sql +2 -0
  68. package/migrations/meta/0023_snapshot.json +2198 -0
  69. package/migrations/meta/_journal.json +7 -0
  70. package/package.json +5 -5
@@ -7,7 +7,7 @@ import {
7
7
  PluginCredentialFailureError,
8
8
  agentNameSchema,
9
9
  createPluginAuthOrchestration
10
- } from "./chunk-H4WNQFBH.js";
10
+ } from "./chunk-T4NFQ5SG.js";
11
11
  import {
12
12
  authorizationId
13
13
  } from "./chunk-DIB4GX3G.js";
@@ -28,7 +28,7 @@ import {
28
28
  patchMcpAuthSession,
29
29
  selectPluginGrant,
30
30
  toMcpProviderError
31
- } from "./chunk-UONUDOJP.js";
31
+ } from "./chunk-5QVVW3FY.js";
32
32
  import {
33
33
  RetryableDeliveryError,
34
34
  actorFromRouting,
@@ -44,7 +44,12 @@ import {
44
44
  getSlackMessagePermalink,
45
45
  resolveBaseUrl,
46
46
  uploadFilesToConversation
47
- } from "./chunk-DK3GQWJK.js";
47
+ } from "./chunk-R7E476CH.js";
48
+ import {
49
+ estimateTextTokens,
50
+ getAgentContextCompactionTriggerTokens,
51
+ getAgentContextInputLimitTokens
52
+ } from "./chunk-DRTWANQF.js";
48
53
  import {
49
54
  AGENTS_REMOVAL_NOTICE,
50
55
  AGENTS_REPLACEMENT_NOTICE,
@@ -62,12 +67,9 @@ import {
62
67
  collectFiles,
63
68
  containsNoReplyMarker,
64
69
  decideReply,
65
- estimateTextTokens,
66
70
  extractAssistantText,
67
71
  findSingleRepositoryDirectory,
68
72
  findVisibleAgentsInstructions,
69
- getAgentContextCompactionTriggerTokens,
70
- getAgentContextInputLimitTokens,
71
73
  getAssistantReplyText,
72
74
  getPiMessageRole,
73
75
  getRipgrepSearchLocation,
@@ -110,9 +112,8 @@ import {
110
112
  sanitizeAssistantText,
111
113
  stripRuntimeTurnContext,
112
114
  trimTrailingAssistantMessages,
113
- truncateText,
114
- updateConversationStats
115
- } from "./chunk-PIQKV7IR.js";
115
+ truncateText
116
+ } from "./chunk-B2H7NI5C.js";
116
117
  import {
117
118
  JUNIOR_THREAD_STATE_TTL_MS
118
119
  } from "./chunk-3Y47VMHV.js";
@@ -144,7 +145,7 @@ import {
144
145
  runNonInteractiveCommand,
145
146
  throwSandboxOperationError,
146
147
  wrapSandboxSetupError
147
- } from "./chunk-FZFJZZR3.js";
148
+ } from "./chunk-QDRMQI5W.js";
148
149
  import {
149
150
  SCHEDULED_TASK_SYSTEM_ACTOR,
150
151
  compactEventTask,
@@ -176,10 +177,15 @@ import {
176
177
  saveEventTask,
177
178
  scheduledTaskAttributes,
178
179
  writableEventTask
179
- } from "./chunk-5LPWHC7Q.js";
180
+ } from "./chunk-6IMKBHCG.js";
180
181
  import {
181
182
  parseSlackThreadId
182
- } from "./chunk-HQAFIN6O.js";
183
+ } from "./chunk-5ITSZIAP.js";
184
+ import {
185
+ SHORT_TITLE_MAX_LENGTH,
186
+ generateShortTitle,
187
+ resolveTaskTitle
188
+ } from "./chunk-XFHSZNOX.js";
183
189
  import {
184
190
  ToolInputError,
185
191
  addAgentTurnUsage,
@@ -197,7 +203,7 @@ import {
197
203
  getSlackToolContext,
198
204
  readActorIdentity,
199
205
  resolveChannelCapabilities
200
- } from "./chunk-7ULXCNOZ.js";
206
+ } from "./chunk-PWDCFIQG.js";
201
207
  import {
202
208
  SlackActionError,
203
209
  downloadPrivateSlackFile,
@@ -206,7 +212,7 @@ import {
206
212
  isConversationScopedChannel,
207
213
  normalizeSlackConversationId,
208
214
  withSlackRetries
209
- } from "./chunk-DVIJ6DP6.js";
215
+ } from "./chunk-RYYBUI34.js";
210
216
  import {
211
217
  KNOWN_CONVERSATION_EVENT_TYPES,
212
218
  contextProvenance,
@@ -217,7 +223,7 @@ import {
217
223
  instructionActors,
218
224
  instructionProvenanceFor,
219
225
  sameActorIdentity
220
- } from "./chunk-5MFCEKR6.js";
226
+ } from "./chunk-SCHH6264.js";
221
227
  import {
222
228
  SANDBOX_DATA_ROOT,
223
229
  SANDBOX_SKILLS_ROOT,
@@ -229,7 +235,7 @@ import {
229
235
  } from "./chunk-EM225ITJ.js";
230
236
  import {
231
237
  getStateAdapter
232
- } from "./chunk-6U44QGXL.js";
238
+ } from "./chunk-NWO5IB7V.js";
233
239
  import {
234
240
  ACTIVE_TURN_COMPACTION_SUMMARY_PREFIX,
235
241
  COMPACTION_SUMMARY_PREFIX,
@@ -263,7 +269,7 @@ import {
263
269
  resolveGatewayCredential,
264
270
  resolveGatewayModel,
265
271
  unwrapCurrentInstruction
266
- } from "./chunk-BBLO66XT.js";
272
+ } from "./chunk-A646AKNB.js";
267
273
  import {
268
274
  canExposeConversationPayload,
269
275
  resolveConversationPrivacy,
@@ -273,16 +279,16 @@ import {
273
279
  toGenAiMessagesTraceAttributes,
274
280
  toGenAiPayloadMetadata,
275
281
  toGenAiPayloadTraceAttributes
276
- } from "./chunk-PGJUJCOQ.js";
282
+ } from "./chunk-LGY7YX5O.js";
277
283
  import {
278
284
  discoverSkills,
279
285
  findSkillByName,
280
286
  loadSkillsByName,
281
287
  parseSkillInvocation
282
- } from "./chunk-6FRAWWGR.js";
288
+ } from "./chunk-CBMIVCPM.js";
283
289
  import {
284
290
  pluginCatalogRuntime
285
- } from "./chunk-EYD523BV.js";
291
+ } from "./chunk-WYLSMTWU.js";
286
292
  import {
287
293
  CredentialUnavailableError,
288
294
  OAuthProviderError,
@@ -290,7 +296,7 @@ import {
290
296
  getOAuthProviderErrorAttributes,
291
297
  resolveAuthTokenPlaceholder,
292
298
  resolvePluginCommandEnv
293
- } from "./chunk-LMGKSDO4.js";
299
+ } from "./chunk-SF6YKONJ.js";
294
300
  import {
295
301
  credentialUserSubjectId
296
302
  } from "./chunk-RUIXF3YQ.js";
@@ -319,7 +325,7 @@ import {
319
325
  summarizeMessageText,
320
326
  withLogContext,
321
327
  withSpan
322
- } from "./chunk-UFEU4UX6.js";
328
+ } from "./chunk-XAW6IN6M.js";
323
329
  import {
324
330
  startInactiveSpan,
325
331
  withActiveSpan
@@ -8416,6 +8422,9 @@ function createEventTaskTool(context, catalog) {
8416
8422
  description: "Create a durable event task that executes the supplied instruction for every matching resource event. Use for whenever-this-happens-do-X automation; ordinary watch, notify, or tell-me-when requests use watchResourceEvents instead. The task remains configured for this Slack channel or DM until deleted and may use the creator's connected credentials. Prefer a subscribable tool result when available.",
8417
8423
  inputSchema: z23.object({
8418
8424
  task: z23.string().trim().min(1).max(4e3),
8425
+ title: z23.string().trim().min(1).max(SHORT_TITLE_MAX_LENGTH).nullable().describe(
8426
+ "Optional short display title. Omit or use null to generate one from the task instruction."
8427
+ ).optional(),
8419
8428
  trigger,
8420
8429
  credentialMode: z23.enum(["creator", "system"]).nullable().describe(
8421
8430
  "Use creator to make the task creator's connected credentials available, or system when the creator says not to use them. Omit or use null for the creator default."
@@ -8423,11 +8432,13 @@ function createEventTaskTool(context, catalog) {
8423
8432
  }).strict(),
8424
8433
  prepareArguments(args) {
8425
8434
  const input = args;
8426
- if (input?.credentialMode !== "creator" && input?.credentialMode !== null) {
8427
- return input;
8428
- }
8429
8435
  const prepared = { ...input };
8430
- delete prepared.credentialMode;
8436
+ if (prepared.title == null) {
8437
+ delete prepared.title;
8438
+ }
8439
+ if (prepared.credentialMode === "creator" || prepared.credentialMode === null) {
8440
+ delete prepared.credentialMode;
8441
+ }
8431
8442
  return prepared;
8432
8443
  },
8433
8444
  outputSchema: eventTaskToolResultSchema,
@@ -8448,6 +8459,11 @@ function createEventTaskTool(context, catalog) {
8448
8459
  }
8449
8460
  return eventTaskSuccess(existing, catalog);
8450
8461
  }
8462
+ const title = await resolveTaskTitle({
8463
+ completeText,
8464
+ instruction: input.task,
8465
+ title: input.title
8466
+ });
8451
8467
  const task = {
8452
8468
  id,
8453
8469
  destinationVisibility: source.visibility,
@@ -8460,6 +8476,7 @@ function createEventTaskTool(context, catalog) {
8460
8476
  credentialMode: input.credentialMode ?? "creator",
8461
8477
  destination,
8462
8478
  task: { text: input.task },
8479
+ ...title ? { title } : {},
8463
8480
  trigger: {
8464
8481
  namespace: input.trigger.namespace,
8465
8482
  identifier: normalizeEventIdentifier(
@@ -8594,13 +8611,24 @@ function createUpdateEventTaskTool(context, catalog) {
8594
8611
  label: input.trigger.label,
8595
8612
  events: [...new Set(input.trigger.events)]
8596
8613
  } : current.trigger;
8597
- const changesExecution = input.task !== void 0 && input.task !== current.task.text || changesEventTaskTrigger(current.trigger, nextTrigger);
8614
+ const nextInstruction = input.task != null ? input.task : current.task.text;
8615
+ const instructionChanged = nextInstruction !== current.task.text;
8616
+ const changesExecution = instructionChanged || changesEventTaskTrigger(current.trigger, nextTrigger);
8598
8617
  const next = {
8599
8618
  ...current,
8600
8619
  credentialMode: changesExecution && !isCreator ? "system" : input.credentialMode ?? current.credentialMode,
8601
- task: input.task ? { text: input.task } : current.task,
8620
+ task: { text: nextInstruction },
8602
8621
  trigger: nextTrigger
8603
8622
  };
8623
+ if (instructionChanged) {
8624
+ const title = await generateShortTitle({
8625
+ completeText,
8626
+ kind: "task",
8627
+ sourceText: nextInstruction
8628
+ });
8629
+ if (title) next.title = title;
8630
+ else delete next.title;
8631
+ }
8604
8632
  const saved = await saveEventTask(getDb(), next);
8605
8633
  if (!saved) {
8606
8634
  throw new ToolInputError(
@@ -9107,6 +9135,9 @@ function createSlackScheduleCreateTaskTool(context) {
9107
9135
  executionMode: "sequential",
9108
9136
  inputSchema: z29.object({
9109
9137
  task: z29.string().min(1).max(4e3),
9138
+ title: z29.string().trim().min(1).max(SHORT_TITLE_MAX_LENGTH).nullable().describe(
9139
+ "Optional short display title. Omit or use null to generate one from the task instruction."
9140
+ ).optional(),
9110
9141
  schedule: scheduleIntentSchema.describe(
9111
9142
  "When the task runs. The scheduler computes the exact next run from this intent and the server clock."
9112
9143
  ),
@@ -9116,11 +9147,13 @@ function createSlackScheduleCreateTaskTool(context) {
9116
9147
  }).strict(),
9117
9148
  prepareArguments(args) {
9118
9149
  const input = args;
9119
- if (input?.credential_mode !== "creator" && input?.credential_mode !== null) {
9120
- return input;
9121
- }
9122
9150
  const prepared = { ...input };
9123
- delete prepared.credential_mode;
9151
+ if (prepared.title == null) {
9152
+ delete prepared.title;
9153
+ }
9154
+ if (prepared.credential_mode === "creator" || prepared.credential_mode === null) {
9155
+ delete prepared.credential_mode;
9156
+ }
9124
9157
  return prepared;
9125
9158
  },
9126
9159
  outputSchema: scheduleTaskToolResultSchema,
@@ -9166,6 +9199,11 @@ function createSlackScheduleCreateTaskTool(context) {
9166
9199
  destination,
9167
9200
  context.source
9168
9201
  );
9202
+ const title = await resolveTaskTitle({
9203
+ completeText,
9204
+ instruction: input.task,
9205
+ title: input.title
9206
+ });
9169
9207
  const task = {
9170
9208
  id,
9171
9209
  createdAtMs: nowMs,
@@ -9182,7 +9220,8 @@ function createSlackScheduleCreateTaskTool(context) {
9182
9220
  status: "active",
9183
9221
  task: {
9184
9222
  text: input.task
9185
- }
9223
+ },
9224
+ ...title ? { title } : {}
9186
9225
  };
9187
9226
  const committed = await store.createTask(task);
9188
9227
  if (!sameDestination(committed, destination) || committed.createdBy.slackUserId !== actor.slackUserId) {
@@ -9204,6 +9243,7 @@ function createSlackScheduleCreateTaskTool(context) {
9204
9243
  import { z as z30 } from "zod";
9205
9244
  function createSlackScheduleDeleteTaskTool(context) {
9206
9245
  return zodTool({
9246
+ approvalMode: "review",
9207
9247
  annotations: {
9208
9248
  destructiveHint: true,
9209
9249
  idempotentHint: true,
@@ -9271,6 +9311,7 @@ function createSlackScheduleListTasksTool(context) {
9271
9311
  import { z as z32 } from "zod";
9272
9312
  function createSlackScheduleRunTaskNowTool(context) {
9273
9313
  return zodTool({
9314
+ approvalMode: "review",
9274
9315
  annotations: {
9275
9316
  destructiveHint: false,
9276
9317
  idempotentHint: false,
@@ -9381,6 +9422,8 @@ function createSlackScheduleUpdateTaskTool(context) {
9381
9422
  }
9382
9423
  const nextStatus = status ?? lookup.status;
9383
9424
  const credentialMode = input.task !== void 0 && input.task !== lookup.task.text && !isCreator ? "system" : input.credential_mode ?? lookup.credentialMode;
9425
+ const nextInstruction = input.task !== void 0 ? input.task : lookup.task.text;
9426
+ const instructionChanged = nextInstruction !== lookup.task.text;
9384
9427
  const next = {
9385
9428
  ...lookup,
9386
9429
  credentialMode,
@@ -9390,8 +9433,17 @@ function createSlackScheduleUpdateTaskTool(context) {
9390
9433
  status: nextStatus,
9391
9434
  statusReason: nextStatus === "blocked" ? lookup.statusReason : void 0,
9392
9435
  schedule: compiled?.schedule ?? lookup.schedule,
9393
- task: input.task ? { text: input.task } : lookup.task
9436
+ task: { text: nextInstruction }
9394
9437
  };
9438
+ if (instructionChanged) {
9439
+ const title = await generateShortTitle({
9440
+ completeText,
9441
+ kind: "task",
9442
+ sourceText: nextInstruction
9443
+ });
9444
+ if (title) next.title = title;
9445
+ else delete next.title;
9446
+ }
9395
9447
  await schedulerStore(context).saveTask(next);
9396
9448
  return scheduleTaskToolResult(
9397
9449
  "slackScheduleUpdateTask",
@@ -9868,13 +9920,14 @@ function createOperationKey(toolName, input) {
9868
9920
  // src/chat/slack/tools/message-add-reaction.ts
9869
9921
  function createSlackMessageAddReactionTool(context, state) {
9870
9922
  return zodTool({
9923
+ approvalMode: "approve",
9871
9924
  annotations: {
9872
9925
  destructiveHint: false,
9873
9926
  idempotentHint: true,
9874
9927
  openWorldHint: true,
9875
9928
  readOnlyHint: false
9876
9929
  },
9877
- description: "Add an emoji reaction to the current inbound Slack message. Use when the user asks for a reaction on the current message without another target. Provide a Slack emoji alias name (for example `thumbsup`, `white_check_mark`, or `thumbsup::skin-tone-6`), not a unicode emoji glyph. The target message is injected by runtime context; do not use this for arbitrary historical messages.",
9930
+ description: "Add an emoji reaction to the current inbound Slack message. Use for explicit reaction requests and for non-text acknowledgements on the current message when no thread reply is needed. Provide a Slack emoji alias name (for example `thumbsup`, `white_check_mark`, or `thumbsup::skin-tone-6`), not a unicode emoji glyph. The target message is injected by runtime context; do not use this for arbitrary historical messages.",
9878
9931
  inputSchema: z38.object({
9879
9932
  emoji: z38.string().min(1).max(64).describe(
9880
9933
  "Slack emoji alias name to react with (for example `thumbsup`, `white_check_mark`, or `thumbsup::skin-tone-6`). Optional surrounding colons are allowed."
@@ -16003,7 +16056,6 @@ ${summary}`)
16003
16056
  })
16004
16057
  }
16005
16058
  });
16006
- updateConversationStats(args.conversation);
16007
16059
  setSpanAttributes({
16008
16060
  "app.compaction.input_messages": sourceMessages.length,
16009
16061
  "app.compaction.retained_messages": replacement.length - 1,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_SQL_STATEMENT_TIMEOUT_MS
3
- } from "./chunk-BBLO66XT.js";
3
+ } from "./chunk-A646AKNB.js";
4
4
  import {
5
5
  juniorDestinations,
6
6
  timestamptz
@@ -379,6 +379,8 @@ var juniorEventTasks = pgTable9(
379
379
  namespace: text9("namespace").notNull(),
380
380
  identifier: text9("identifier").notNull(),
381
381
  createdAtMs: bigint("created_at_ms", { mode: "number" }).notNull(),
382
+ /** Short display title generated from the task instruction. */
383
+ title: text9("title"),
382
384
  task: jsonb6("task_json").$type().notNull()
383
385
  },
384
386
  (table) => [
@@ -487,6 +489,8 @@ var juniorSchedulerTasks = pgTable12(
487
489
  nextRunAtMs: bigint3("next_run_at_ms", { mode: "number" }),
488
490
  runNowAtMs: bigint3("run_now_at_ms", { mode: "number" }),
489
491
  createdAtMs: bigint3("created_at_ms", { mode: "number" }).notNull(),
492
+ /** Short display title generated from the task instruction. */
493
+ title: text12("title"),
490
494
  record: jsonb7("record").$type().notNull()
491
495
  },
492
496
  (table) => [
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-F3B2YJ76.js";
6
6
  import {
7
7
  toOptionalString
8
- } from "./chunk-UFEU4UX6.js";
8
+ } from "./chunk-XAW6IN6M.js";
9
9
 
10
10
  // src/chat/slack/context.ts
11
11
  import { z } from "zod";
@@ -1,30 +1,30 @@
1
1
  import {
2
2
  resolveBaseUrl
3
- } from "./chunk-DK3GQWJK.js";
3
+ } from "./chunk-R7E476CH.js";
4
4
  import {
5
5
  createPluginLogger,
6
6
  getPlugins
7
- } from "./chunk-7ULXCNOZ.js";
7
+ } from "./chunk-PWDCFIQG.js";
8
8
  import {
9
9
  getDb,
10
10
  parseDestination
11
- } from "./chunk-5MFCEKR6.js";
11
+ } from "./chunk-SCHH6264.js";
12
12
  import {
13
13
  sleep
14
14
  } from "./chunk-EM225ITJ.js";
15
15
  import {
16
16
  acquireActiveLock,
17
17
  getStateAdapter
18
- } from "./chunk-6U44QGXL.js";
18
+ } from "./chunk-NWO5IB7V.js";
19
19
  import {
20
20
  pluginCatalogRuntime
21
- } from "./chunk-EYD523BV.js";
21
+ } from "./chunk-WYLSMTWU.js";
22
22
  import {
23
23
  fetchWithBoundedOAuthErrorBodies
24
- } from "./chunk-LMGKSDO4.js";
24
+ } from "./chunk-SF6YKONJ.js";
25
25
  import {
26
26
  isRecord
27
- } from "./chunk-UFEU4UX6.js";
27
+ } from "./chunk-XAW6IN6M.js";
28
28
 
29
29
  // src/chat/capabilities/router.ts
30
30
  var ProviderCredentialRouter = class {