@sentry/junior 0.86.0 → 0.88.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 (61) hide show
  1. package/dist/{agent-hooks-NWOUB3UR.js → agent-hooks-RIJ5TSWP.js} +8 -8
  2. package/dist/api/people/list.d.ts +4 -0
  3. package/dist/api/people/list.js +83 -0
  4. package/dist/api/people/list.query.d.ts +4 -0
  5. package/dist/api/people/profile.d.ts +4 -0
  6. package/dist/api/people/profile.js +131 -0
  7. package/dist/api/people/profile.query.d.ts +4 -0
  8. package/dist/api/people/shared.d.ts +76 -0
  9. package/dist/api/people/types.d.ts +85 -0
  10. package/dist/app.js +45 -74
  11. package/dist/{catalog-runtime-XOD7YPRS.js → catalog-runtime-MW7XERSU.js} +3 -3
  12. package/dist/chat/conversations/sql/migrations.d.ts +1 -1
  13. package/dist/chat/conversations/sql/schema/identities.d.ts +54 -3
  14. package/dist/chat/conversations/sql/schema/users.d.ts +109 -0
  15. package/dist/chat/conversations/sql/schema.d.ts +164 -3
  16. package/dist/chat/conversations/sql/store.d.ts +0 -1
  17. package/dist/chat/identities/identity.d.ts +18 -0
  18. package/dist/chat/identities/sql.d.ts +4 -0
  19. package/dist/chat/no-reply.d.ts +7 -0
  20. package/dist/chat/runtime/processing-reaction.d.ts +2 -1
  21. package/dist/chat/runtime/slack-resume.d.ts +3 -2
  22. package/dist/chat/runtime/thread-context.d.ts +3 -1
  23. package/dist/chat/runtime/turn-user-message.d.ts +2 -1
  24. package/dist/chat/services/conversation-memory.d.ts +3 -1
  25. package/dist/chat/services/reply-delivery-plan.d.ts +0 -4
  26. package/dist/chat/slack/message.d.ts +2 -1
  27. package/dist/chat/slack/outbound.d.ts +5 -4
  28. package/dist/chat/slack/timestamp.d.ts +6 -0
  29. package/dist/chat/sql/schema.d.ts +163 -3
  30. package/dist/chat/tools/slack/context.d.ts +2 -1
  31. package/dist/{chunk-ENPSU7L7.js → chunk-2DPZRS3B.js} +4 -4
  32. package/dist/{chunk-6I6HBOQM.js → chunk-4IXHIV37.js} +413 -157
  33. package/dist/{chunk-JRXCSSSU.js → chunk-6UPQ5GTJ.js} +3 -3
  34. package/dist/{chunk-64ACM6AP.js → chunk-7ES37H6U.js} +2 -2
  35. package/dist/{chunk-GGD6WK6V.js → chunk-AHLSXMOU.js} +2 -2
  36. package/dist/{chunk-2TAIGJPQ.js → chunk-C5NCV3OB.js} +1 -1
  37. package/dist/{chunk-6O5UI3RG.js → chunk-F22AM3OW.js} +1 -1
  38. package/dist/{chunk-BRSQQRG6.js → chunk-IATAYWFU.js} +2 -2
  39. package/dist/{chunk-BQ3ITJA6.js → chunk-KBFQXJL4.js} +2 -2
  40. package/dist/{chunk-37B2R2QJ.js → chunk-KBSLCOGE.js} +28 -15
  41. package/dist/{chunk-IXTBFABZ.js → chunk-KQKIA4CU.js} +1 -1
  42. package/dist/{chunk-FPHA6GCQ.js → chunk-NYJLQI42.js} +95 -92
  43. package/dist/chunk-PBV4ZIVM.js +261 -0
  44. package/dist/{chunk-ZU2ALUVQ.js → chunk-S35CPNPT.js} +1 -1
  45. package/dist/{chunk-RIB3M6YA.js → chunk-V6XDCS3X.js} +4 -4
  46. package/dist/{chunk-KF7522P3.js → chunk-VMBZFPZM.js} +11 -1
  47. package/dist/{chunk-2NFV5FMB.js → chunk-XS6NLQPA.js} +21 -12
  48. package/dist/{chunk-GB5DFM4D.js → chunk-YPAE5RH3.js} +1 -1
  49. package/dist/cli/chat.js +6 -6
  50. package/dist/cli/check.js +4 -4
  51. package/dist/cli/plugins.js +11 -11
  52. package/dist/cli/snapshot-warmup.js +6 -6
  53. package/dist/cli/upgrade.js +12 -12
  54. package/dist/{db-SZVUU7RB.js → db-37HOGLI7.js} +5 -5
  55. package/dist/nitro.js +4 -4
  56. package/dist/reporting/conversations.d.ts +0 -56
  57. package/dist/reporting.d.ts +2 -8
  58. package/dist/reporting.js +14 -290
  59. package/dist/{runner-HEBRPNN2.js → runner-BCRF2FCI.js} +13 -13
  60. package/dist/{validation-MBNJKWPQ.js → validation-FMJO3L5P.js} +4 -4
  61. package/package.json +14 -6
package/dist/app.js CHANGED
@@ -17,7 +17,6 @@ import {
17
17
  createConversationMemoryService,
18
18
  createUserTokenStore,
19
19
  deleteMcpAuthSession,
20
- deleteSlackMessage,
21
20
  deliverResourceEventSubscription,
22
21
  estimateTextTokens,
23
22
  executeCredentialedEgressRequest,
@@ -42,7 +41,6 @@ import {
42
41
  isCooperativeTurnYieldError,
43
42
  isHumanConversationMessage,
44
43
  isPendingAuthLatestRequest,
45
- isRedundantReactionAckText,
46
44
  isRetryableTurnError,
47
45
  isTurnInputCommitLostError,
48
46
  isTurnInputDeferredError,
@@ -77,7 +75,7 @@ import {
77
75
  updateConversationStats,
78
76
  uploadFilesToThread,
79
77
  upsertConversationMessage
80
- } from "./chunk-FPHA6GCQ.js";
78
+ } from "./chunk-NYJLQI42.js";
81
79
  import {
82
80
  CONVERSATION_WORK_CHECK_IN_INTERVAL_MS,
83
81
  CONVERSATION_WORK_STALE_ENQUEUE_MS,
@@ -101,17 +99,17 @@ import {
101
99
  requestConversationContinuation,
102
100
  requestConversationWork,
103
101
  startConversationWork
104
- } from "./chunk-ENPSU7L7.js";
102
+ } from "./chunk-2DPZRS3B.js";
105
103
  import {
106
104
  JUNIOR_THREAD_STATE_TTL_MS,
107
105
  coerceThreadConversationState
108
106
  } from "./chunk-66NX7MNW.js";
109
- import "./chunk-RIB3M6YA.js";
107
+ import "./chunk-V6XDCS3X.js";
110
108
  import {
111
109
  getVercelConversationWorkQueue,
112
110
  resolveConversationWorkQueueTopic,
113
111
  verifyConversationQueueMessage
114
- } from "./chunk-6O5UI3RG.js";
112
+ } from "./chunk-F22AM3OW.js";
115
113
  import {
116
114
  PLUGIN_TASK_QUEUE_TOPIC,
117
115
  createVercelQueueClient,
@@ -125,7 +123,7 @@ import {
125
123
  resolveSlackChannelTypeFromMessage,
126
124
  resolveSlackConversationContext,
127
125
  setConversationTitle
128
- } from "./chunk-JRXCSSSU.js";
126
+ } from "./chunk-6UPQ5GTJ.js";
129
127
  import {
130
128
  abandonAgentTurnSessionRecord,
131
129
  buildSlackOutputMessage,
@@ -139,11 +137,11 @@ import {
139
137
  recordAuthorizationCompleted,
140
138
  splitSlackReplyText,
141
139
  truncateStatusText
142
- } from "./chunk-37B2R2QJ.js";
140
+ } from "./chunk-KBSLCOGE.js";
143
141
  import {
144
142
  validatePluginEgressCredentialHooks,
145
143
  validatePluginRegistrations
146
- } from "./chunk-2TAIGJPQ.js";
144
+ } from "./chunk-C5NCV3OB.js";
147
145
  import {
148
146
  defineJuniorPlugins,
149
147
  pluginCatalogConfigFromEnv,
@@ -156,23 +154,24 @@ import {
156
154
  getPluginRoutes,
157
155
  getPluginSlackConversationLink,
158
156
  getPlugins,
157
+ parseSlackMessageTs,
159
158
  setPlugins,
160
159
  validatePlugins,
161
160
  verifySlackDirectCredentialSubject
162
- } from "./chunk-2NFV5FMB.js";
161
+ } from "./chunk-XS6NLQPA.js";
163
162
  import {
164
163
  createPluginLogger,
165
164
  createPluginState
166
- } from "./chunk-BRSQQRG6.js";
167
- import {
168
- getConversationStore,
169
- getDb
170
- } from "./chunk-6I6HBOQM.js";
165
+ } from "./chunk-IATAYWFU.js";
171
166
  import "./chunk-G3E7SCME.js";
172
167
  import {
173
168
  acquireActiveLock,
174
169
  getStateAdapter
175
- } from "./chunk-GB5DFM4D.js";
170
+ } from "./chunk-YPAE5RH3.js";
171
+ import {
172
+ getConversationStore,
173
+ getDb
174
+ } from "./chunk-4IXHIV37.js";
176
175
  import {
177
176
  SlackActionError,
178
177
  createSlackDestination,
@@ -188,7 +187,7 @@ import {
188
187
  runWithSlackInstallationToken,
189
188
  runWithWorkspaceTeamId,
190
189
  sameDestination
191
- } from "./chunk-GGD6WK6V.js";
190
+ } from "./chunk-AHLSXMOU.js";
192
191
  import {
193
192
  FUNCTION_TIMEOUT_BUFFER_SECONDS,
194
193
  botConfig,
@@ -208,7 +207,7 @@ import {
208
207
  stripRuntimeTurnContext,
209
208
  trimTrailingAssistantMessages,
210
209
  unwrapCurrentInstruction
211
- } from "./chunk-ZU2ALUVQ.js";
210
+ } from "./chunk-S35CPNPT.js";
212
211
  import {
213
212
  parseSlackThreadId,
214
213
  resolveSlackChannelIdFromMessage,
@@ -216,13 +215,13 @@ import {
216
215
  } from "./chunk-L7OHKDOX.js";
217
216
  import {
218
217
  discoverSkills
219
- } from "./chunk-64ACM6AP.js";
218
+ } from "./chunk-7ES37H6U.js";
220
219
  import {
221
220
  buildOAuthTokenRequest,
222
221
  hasRequiredOAuthScope,
223
222
  parseOAuthTokenResponse,
224
223
  pluginCatalogRuntime
225
- } from "./chunk-BQ3ITJA6.js";
224
+ } from "./chunk-KBFQXJL4.js";
226
225
  import {
227
226
  createRequester,
228
227
  createSlackRequester,
@@ -230,7 +229,7 @@ import {
230
229
  isActorUserId,
231
230
  parseActorUserId,
232
231
  toStoredSlackRequester
233
- } from "./chunk-IXTBFABZ.js";
232
+ } from "./chunk-KQKIA4CU.js";
234
233
  import {
235
234
  homeDir
236
235
  } from "./chunk-6APU57E6.js";
@@ -249,7 +248,7 @@ import {
249
248
  setTags,
250
249
  withContext,
251
250
  withSpan
252
- } from "./chunk-KF7522P3.js";
251
+ } from "./chunk-VMBZFPZM.js";
253
252
  import {
254
253
  JUNIOR_PLUGIN_TASK_CALLBACK_ROUTE,
255
254
  toOptionalString
@@ -1828,7 +1827,6 @@ function slackSerializedResourceEventMessage(input) {
1828
1827
  channel: input.channelId,
1829
1828
  event_type: "resource_event",
1830
1829
  thread_ts: input.threadTs,
1831
- ts: input.id,
1832
1830
  type: "message",
1833
1831
  user: "UJRNEVENT"
1834
1832
  },
@@ -3097,10 +3095,6 @@ async function GET2(request, waitUntil, options = {}) {
3097
3095
  import { THREAD_STATE_TTL_MS } from "chat";
3098
3096
 
3099
3097
  // src/chat/runtime/turn-user-message.ts
3100
- function normalizeSlackMessageTs(value) {
3101
- const trimmed = value?.trim();
3102
- return trimmed && /^\d+(?:\.\d+)?$/.test(trimmed) ? trimmed : void 0;
3103
- }
3104
3098
  function getTurnUserMessage(conversation, sessionId) {
3105
3099
  for (let index = conversation.messages.length - 1; index >= 0; index -= 1) {
3106
3100
  const message = conversation.messages[index];
@@ -3117,7 +3111,7 @@ function getTurnUserMessageId(conversation, sessionId) {
3117
3111
  return getTurnUserMessage(conversation, sessionId)?.id;
3118
3112
  }
3119
3113
  function getTurnUserSlackMessageTs(message) {
3120
- return normalizeSlackMessageTs(message?.meta?.slackTs) ?? normalizeSlackMessageTs(message?.id);
3114
+ return parseSlackMessageTs(message?.meta?.slackTs);
3121
3115
  }
3122
3116
  function getTurnUserReplyAttachmentContext(message) {
3123
3117
  const inboundAttachmentCount = message?.meta?.attachmentCount ?? 0;
@@ -3597,15 +3591,26 @@ function getMessageTs(message) {
3597
3591
  const directTs = toOptionalString(
3598
3592
  message.ts
3599
3593
  );
3600
- if (directTs) {
3601
- return directTs;
3594
+ const parsedDirectTs = parseSlackMessageTs(directTs);
3595
+ if (parsedDirectTs) {
3596
+ return parsedDirectTs;
3602
3597
  }
3603
3598
  const raw = message.raw;
3604
3599
  if (!raw || typeof raw !== "object") {
3605
3600
  return void 0;
3606
3601
  }
3607
3602
  const rawRecord = raw;
3608
- return toOptionalString(rawRecord.ts) ?? toOptionalString(rawRecord.event_ts) ?? toOptionalString(rawRecord.message?.ts);
3603
+ const candidates = [
3604
+ rawRecord.ts,
3605
+ rawRecord.message?.ts
3606
+ ];
3607
+ for (const candidate of candidates) {
3608
+ const ts = parseSlackMessageTs(candidate);
3609
+ if (ts) {
3610
+ return ts;
3611
+ }
3612
+ }
3613
+ return void 0;
3609
3614
  }
3610
3615
 
3611
3616
  // src/chat/runtime/processing-reaction.ts
@@ -9166,20 +9171,15 @@ import { THREAD_STATE_TTL_MS as THREAD_STATE_TTL_MS4 } from "chat";
9166
9171
  import { createSlackSource } from "@sentry/junior-plugin-api";
9167
9172
 
9168
9173
  // src/chat/slack/message.ts
9169
- function isSlackMessageTs(value) {
9170
- return /^\d+(?:\.\d+)?$/.test(value.trim());
9171
- }
9172
9174
  function getSlackMessageTs(message) {
9173
- if (isSlackMessageTs(message.id)) {
9174
- return message.id;
9175
+ const idTs = parseSlackMessageTs(message.id);
9176
+ if (idTs) {
9177
+ return idTs;
9175
9178
  }
9176
9179
  if (message.raw && typeof message.raw === "object") {
9177
- const ts = message.raw.ts;
9178
- if (typeof ts === "string" && ts.length > 0) {
9179
- return ts;
9180
- }
9180
+ return parseSlackMessageTs(message.raw.ts);
9181
9181
  }
9182
- return message.id;
9182
+ return void 0;
9183
9183
  }
9184
9184
 
9185
9185
  // src/chat/slack/assistant-thread/title.ts
@@ -10054,16 +10054,12 @@ function createReplyToThread(deps) {
10054
10054
  });
10055
10055
  }
10056
10056
  const artifactStatePatch = reply.artifactStatePatch ? { ...reply.artifactStatePatch } : {};
10057
- const reactionPerformed = reply.diagnostics.toolCalls.includes(
10058
- "slackMessageAddReaction"
10059
- );
10060
10057
  const plannedPosts = planSlackReplyPosts({ reply });
10061
10058
  const replyFooter = buildSlackReplyFooter({
10062
10059
  conversationId
10063
10060
  });
10064
10061
  const shouldUseSlackFooter = Boolean(replyFooter) && Boolean(channelId && threadTs) && thread.adapter?.name === "slack";
10065
10062
  if (plannedPosts.length > 0) {
10066
- let sent;
10067
10063
  const hasVisibleDelivery = plannedPosts.some(
10068
10064
  hasVisibleSlackDelivery
10069
10065
  );
@@ -10080,7 +10076,7 @@ function createReplyToThread(deps) {
10080
10076
  "Slack footer delivery requires a concrete channel and thread timestamp"
10081
10077
  );
10082
10078
  }
10083
- const sentMessageTs = await postSlackApiReplyPosts({
10079
+ await postSlackApiReplyPosts({
10084
10080
  beforePost: beforeFirstResponsePost,
10085
10081
  channelId: slackChannelId,
10086
10082
  threadTs: slackThreadTs,
@@ -10101,24 +10097,12 @@ function createReplyToThread(deps) {
10101
10097
  );
10102
10098
  }
10103
10099
  });
10104
- if (sentMessageTs) {
10105
- sent = {
10106
- id: sentMessageTs,
10107
- text: reply.text,
10108
- delete: async () => {
10109
- await deleteSlackMessage({
10110
- channelId: slackChannelId,
10111
- timestamp: sentMessageTs
10112
- });
10113
- }
10114
- };
10115
- }
10116
10100
  } else {
10117
10101
  for (const post of plannedPosts) {
10118
10102
  if (!hasVisibleSlackDelivery(post)) {
10119
10103
  continue;
10120
10104
  }
10121
- sent = await postThreadReply(
10105
+ await postThreadReply(
10122
10106
  buildSlackOutputMessage(post.text, post.files),
10123
10107
  post.stage
10124
10108
  );
@@ -10126,20 +10110,6 @@ function createReplyToThread(deps) {
10126
10110
  }
10127
10111
  finalReplyDelivered = true;
10128
10112
  shouldPersistFailureState = false;
10129
- const firstPlannedMessageHasFiles = (plannedPosts[0]?.files?.length ?? 0) > 0;
10130
- if (sent && reactionPerformed && plannedPosts.length === 1 && !firstPlannedMessageHasFiles && isRedundantReactionAckText(reply.text)) {
10131
- try {
10132
- await sent.delete();
10133
- } catch (error) {
10134
- logException(
10135
- error,
10136
- "slack_redundant_ack_delete_failed",
10137
- turnTraceContext,
10138
- messageTs ? { "messaging.message.id": messageTs } : {},
10139
- "Failed to delete redundant reaction-ack reply"
10140
- );
10141
- }
10142
- }
10143
10113
  } else {
10144
10114
  finalReplyDelivered = true;
10145
10115
  shouldPersistFailureState = false;
@@ -10520,6 +10490,7 @@ function resolveMessageText(args) {
10520
10490
  }
10521
10491
  function toConversationMessage(args) {
10522
10492
  const actor = getMessageActorIdentity(args.entry);
10493
+ const slackTs = getSlackMessageTs(args.entry);
10523
10494
  const messageHasPotentialImageAttachment = hasPotentialImageAttachment(
10524
10495
  args.entry.attachments
10525
10496
  );
@@ -10540,7 +10511,7 @@ function toConversationMessage(args) {
10540
10511
  explicitMention: args.explicitMention,
10541
10512
  imageAttachmentCount: imageAttachmentCount > 0 ? imageAttachmentCount : void 0,
10542
10513
  imagesHydrated: !messageHasPotentialImageAttachment,
10543
- slackTs: getSlackMessageTs(args.entry)
10514
+ ...slackTs ? { slackTs } : {}
10544
10515
  }
10545
10516
  };
10546
10517
  }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  pluginCatalogRuntime
3
- } from "./chunk-BQ3ITJA6.js";
4
- import "./chunk-IXTBFABZ.js";
3
+ } from "./chunk-KBFQXJL4.js";
4
+ import "./chunk-KQKIA4CU.js";
5
5
  import "./chunk-6APU57E6.js";
6
- import "./chunk-KF7522P3.js";
6
+ import "./chunk-VMBZFPZM.js";
7
7
  import "./chunk-FTMXFBDC.js";
8
8
  import "./chunk-3DA7X2U3.js";
9
9
  import "./chunk-MLKGABMK.js";
@@ -5,7 +5,7 @@ export interface Migration {
5
5
  id: string;
6
6
  statements: readonly string[];
7
7
  }
8
- export declare const migrations: readonly [Migration, Migration];
8
+ export declare const migrations: readonly [Migration, Migration, Migration];
9
9
  export { schema };
10
10
  /** Apply pending SQL schema migrations for queryable conversation records. */
11
11
  export declare function migrateSchema(executor: JuniorSqlMigrationExecutor, migrationList?: readonly Migration[]): Promise<void>;
@@ -1,4 +1,4 @@
1
- export type JuniorIdentityKind = "service" | "system" | "user";
1
+ import type { IdentityKind } from "@/chat/identities/identity";
2
2
  export declare const juniorIdentities: import("drizzle-orm/pg-core").PgTableWithColumns<{
3
3
  name: "junior_identities";
4
4
  schema: undefined;
@@ -25,7 +25,7 @@ export declare const juniorIdentities: import("drizzle-orm/pg-core").PgTableWith
25
25
  tableName: "junior_identities";
26
26
  dataType: "string";
27
27
  columnType: "PgText";
28
- data: JuniorIdentityKind;
28
+ data: IdentityKind;
29
29
  driverParam: string;
30
30
  notNull: true;
31
31
  hasDefault: false;
@@ -37,7 +37,7 @@ export declare const juniorIdentities: import("drizzle-orm/pg-core").PgTableWith
37
37
  identity: undefined;
38
38
  generated: undefined;
39
39
  }, {}, {
40
- $type: JuniorIdentityKind;
40
+ $type: IdentityKind;
41
41
  }>;
42
42
  provider: import("drizzle-orm/pg-core").PgColumn<{
43
43
  name: "provider";
@@ -209,6 +209,57 @@ export declare const juniorIdentities: import("drizzle-orm/pg-core").PgTableWith
209
209
  identity: undefined;
210
210
  generated: undefined;
211
211
  }, {}, {}>;
212
+ userId: import("drizzle-orm/pg-core").PgColumn<{
213
+ name: "user_id";
214
+ tableName: "junior_identities";
215
+ dataType: "string";
216
+ columnType: "PgText";
217
+ data: string;
218
+ driverParam: string;
219
+ notNull: false;
220
+ hasDefault: false;
221
+ isPrimaryKey: false;
222
+ isAutoincrement: false;
223
+ hasRuntimeDefault: false;
224
+ enumValues: [string, ...string[]];
225
+ baseColumn: never;
226
+ identity: undefined;
227
+ generated: undefined;
228
+ }, {}, {}>;
229
+ emailNormalized: import("drizzle-orm/pg-core").PgColumn<{
230
+ name: "email_normalized";
231
+ tableName: "junior_identities";
232
+ dataType: "string";
233
+ columnType: "PgText";
234
+ data: string;
235
+ driverParam: string;
236
+ notNull: false;
237
+ hasDefault: false;
238
+ isPrimaryKey: false;
239
+ isAutoincrement: false;
240
+ hasRuntimeDefault: false;
241
+ enumValues: [string, ...string[]];
242
+ baseColumn: never;
243
+ identity: undefined;
244
+ generated: undefined;
245
+ }, {}, {}>;
246
+ emailVerified: import("drizzle-orm/pg-core").PgColumn<{
247
+ name: "email_verified";
248
+ tableName: "junior_identities";
249
+ dataType: "boolean";
250
+ columnType: "PgBoolean";
251
+ data: boolean;
252
+ driverParam: boolean;
253
+ notNull: true;
254
+ hasDefault: true;
255
+ isPrimaryKey: false;
256
+ isAutoincrement: false;
257
+ hasRuntimeDefault: false;
258
+ enumValues: undefined;
259
+ baseColumn: never;
260
+ identity: undefined;
261
+ generated: undefined;
262
+ }, {}, {}>;
212
263
  };
213
264
  dialect: "pg";
214
265
  }>;
@@ -0,0 +1,109 @@
1
+ export declare const juniorUsers: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "junior_users";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "junior_users";
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ primaryEmail: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "primary_email";
24
+ tableName: "junior_users";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ primaryEmailNormalized: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "primary_email_normalized";
41
+ tableName: "junior_users";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: true;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ displayName: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "display_name";
58
+ tableName: "junior_users";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: false;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: string;
75
+ tableName: "junior_users";
76
+ dataType: "date";
77
+ columnType: "PgTimestamp";
78
+ data: Date;
79
+ driverParam: string;
80
+ notNull: true;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: undefined;
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: string;
92
+ tableName: "junior_users";
93
+ dataType: "date";
94
+ columnType: "PgTimestamp";
95
+ data: Date;
96
+ driverParam: string;
97
+ notNull: true;
98
+ hasDefault: false;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: undefined;
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ };
108
+ dialect: "pg";
109
+ }>;