@alook/daemon 0.1.48 → 0.1.49

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 (3) hide show
  1. package/dist/cli/index.js +375 -277
  2. package/dist/index.js +375 -277
  3. package/package.json +1 -1
package/dist/cli/index.js CHANGED
@@ -22143,30 +22143,288 @@ var HostCommandSchema = exports_external.discriminatedUnion("type", [
22143
22143
  // src/cli/proxyServerApi.ts
22144
22144
  import * as fs from "fs";
22145
22145
  import * as path from "path";
22146
- // ../shared/src/community-attention.ts
22146
+ // ../shared/src/community-contract.ts
22147
+ var COMMUNITY_RESOURCE_CONTRACT_VERSION = 3;
22148
+
22149
+ // ../shared/src/community-friend-approval.ts
22150
+ var profile = exports_external.strictObject({
22151
+ id: exports_external.string(),
22152
+ name: exports_external.string(),
22153
+ discriminator: exports_external.string(),
22154
+ image: exports_external.string().nullable(),
22155
+ avatarVersion: exports_external.number().int().nonnegative()
22156
+ });
22157
+ var FriendApprovalPayloadSchema = exports_external.strictObject({
22158
+ friendshipId: exports_external.string(),
22159
+ status: exports_external.enum(["pending", "approved", "denied", "superseded", "cancelled"]),
22160
+ waitingOn: exports_external.enum(["you", "other-owner", "addressee"]).nullable(),
22161
+ otherProfile: profile,
22162
+ botProfile: profile,
22163
+ waitingOnProfile: profile.nullable().optional()
22164
+ });
22165
+
22166
+ // ../shared/src/community-resources.ts
22147
22167
  var id = exports_external.string().min(1);
22148
- var AttentionScopeSchema = exports_external.strictObject({
22149
- scopeId: id,
22168
+ var nullableId = id.nullable();
22169
+ var legacyArchivedSchema = exports_external.union([exports_external.boolean(), exports_external.literal(0), exports_external.literal(1)]).transform((value) => value === true || value === 1);
22170
+ var CommunityChannelResourceSchema = exports_external.strictObject({
22171
+ id,
22172
+ type: exports_external.enum(["text", "forum", "thread", "dm"]),
22173
+ serverId: nullableId,
22174
+ categoryId: nullableId,
22175
+ name: exports_external.string().nullable(),
22176
+ topic: exports_external.string(),
22177
+ parentChannelId: nullableId,
22178
+ parentMessageId: nullableId,
22179
+ creatorId: nullableId,
22180
+ position: exports_external.number(),
22181
+ archived: exports_external.boolean(),
22182
+ createdAt: exports_external.string(),
22183
+ lastMessageAt: exports_external.string().nullable(),
22184
+ messageCount: exports_external.number().int().nonnegative()
22185
+ });
22186
+ var CommunityChannelIdentitySchema = CommunityChannelResourceSchema.pick({
22187
+ id: true,
22188
+ type: true,
22189
+ serverId: true,
22190
+ name: true,
22191
+ parentChannelId: true,
22192
+ parentMessageId: true,
22193
+ creatorId: true,
22194
+ archived: true,
22195
+ lastMessageAt: true,
22196
+ createdAt: true
22197
+ }).partial({ createdAt: true }).strip();
22198
+ var legacyChannelIdentitySchema = CommunityChannelIdentitySchema.extend({
22199
+ archived: legacyArchivedSchema,
22200
+ parentChannelId: nullableId.default(null),
22201
+ parentMessageId: nullableId.default(null),
22202
+ creatorId: nullableId.default(null),
22203
+ lastMessageAt: CommunityChannelResourceSchema.shape.lastMessageAt.default(null)
22204
+ });
22205
+ var CommunityAccessDecisionSchema = exports_external.strictObject({
22206
+ channelId: id,
22207
+ canRead: exports_external.boolean(),
22208
+ canSend: exports_external.boolean(),
22209
+ canCreateDiscussion: exports_external.boolean()
22210
+ });
22211
+ var CommunityLegacyMessageAttachmentSchema = exports_external.strictObject({
22212
+ kind: exports_external.enum(["image", "file"]),
22213
+ name: exports_external.string(),
22214
+ url: exports_external.string(),
22215
+ thumbnailUrl: exports_external.string().optional(),
22216
+ contentType: exports_external.string().optional(),
22217
+ size: exports_external.string().optional(),
22218
+ sizeBytes: exports_external.number().nonnegative().optional(),
22219
+ width: exports_external.number().nonnegative().optional(),
22220
+ height: exports_external.number().nonnegative().optional()
22221
+ });
22222
+ var CommunityMessageAttachmentSchema = exports_external.strictObject({
22223
+ id,
22224
+ name: exports_external.string(),
22225
+ url: exports_external.string(),
22226
+ thumbnailUrl: exports_external.string().nullable(),
22227
+ contentType: exports_external.string().nullable(),
22228
+ sizeBytes: exports_external.number().int().nonnegative().nullable(),
22229
+ width: exports_external.number().int().nonnegative().nullable(),
22230
+ height: exports_external.number().int().nonnegative().nullable()
22231
+ });
22232
+ var CommunityMessagePreviewAttachmentSchema = CommunityMessageAttachmentSchema.partial().required({ name: true, url: true });
22233
+ var CommunityResourceProfileSchema = exports_external.strictObject({
22234
+ id,
22235
+ name: exports_external.string(),
22236
+ discriminator: exports_external.string().min(1).nullable(),
22237
+ avatar: exports_external.string().nullable(),
22238
+ avatarVersion: exports_external.number().int().nonnegative(),
22239
+ aboutMe: exports_external.string().optional(),
22240
+ bannerColor: exports_external.string().nullable().optional(),
22241
+ kind: exports_external.enum(["human", "bot"]).optional(),
22242
+ ownerUserId: nullableId.optional(),
22243
+ ownerHandle: exports_external.string().nullable().optional(),
22244
+ mutualServers: exports_external.number().int().nonnegative().optional(),
22245
+ ownedByViewer: exports_external.boolean().optional(),
22246
+ statusEmoji: exports_external.string().nullable().optional(),
22247
+ statusText: exports_external.string().nullable().optional()
22248
+ });
22249
+ var CommunityMessageThreadParticipantSchema = CommunityResourceProfileSchema.pick({ id: true, name: true, avatar: true, avatarVersion: true });
22250
+ var messageThreadSchema = exports_external.strictObject({
22251
+ id,
22252
+ name: CommunityChannelResourceSchema.shape.name,
22253
+ messageCount: CommunityChannelResourceSchema.shape.messageCount,
22254
+ lastReplyAt: CommunityChannelResourceSchema.shape.lastMessageAt.optional(),
22255
+ tags: exports_external.array(exports_external.string()).optional(),
22256
+ preview: exports_external.string().optional(),
22257
+ participants: exports_external.array(CommunityMessageThreadParticipantSchema).optional(),
22258
+ participantCount: exports_external.number().int().nonnegative().optional()
22259
+ });
22260
+ var legacyMessageThreadSchema = messageThreadSchema.extend({
22261
+ name: exports_external.string(),
22262
+ lastReplyAt: exports_external.string().optional(),
22263
+ participants: exports_external.array(CommunityMessageThreadParticipantSchema.extend({ avatar: exports_external.string() })).optional()
22264
+ });
22265
+ var messageThreadPreviewSchema = messageThreadSchema.partial().required({ id: true }).extend({
22266
+ participants: exports_external.array(CommunityMessageThreadParticipantSchema.partial().required({ id: true })).optional()
22267
+ });
22268
+ var CommunityMessageResourceSchema = exports_external.strictObject({
22269
+ id,
22270
+ channelId: id,
22271
+ seq: exports_external.number().int().nonnegative(),
22272
+ authorId: id,
22273
+ createdAt: exports_external.string(),
22274
+ type: exports_external.enum(["chat", "system"]),
22275
+ content: exports_external.string(),
22276
+ replyToId: nullableId,
22277
+ clientNonce: exports_external.string().nullable(),
22278
+ attachments: exports_external.array(CommunityMessageAttachmentSchema),
22279
+ systemKind: exports_external.literal("thread").optional(),
22280
+ authorName: exports_external.string().optional(),
22281
+ authorAvatar: exports_external.string().nullable().optional(),
22282
+ authorAvatarVersion: exports_external.number().int().nonnegative().optional(),
22283
+ mentionType: exports_external.literal("everyone").nullable().optional(),
22284
+ replyTo: exports_external.strictObject({
22285
+ id,
22286
+ authorId: id.optional(),
22287
+ authorName: exports_external.string(),
22288
+ text: exports_external.string(),
22289
+ deleted: exports_external.boolean().optional()
22290
+ }).optional(),
22291
+ embeds: exports_external.array(exports_external.unknown()).optional(),
22292
+ reactions: exports_external.array(exports_external.strictObject({
22293
+ emoji: exports_external.string(),
22294
+ count: exports_external.number().int().nonnegative(),
22295
+ me: exports_external.boolean(),
22296
+ userIds: exports_external.array(id)
22297
+ })).optional(),
22298
+ thread: messageThreadSchema.optional(),
22299
+ approval: FriendApprovalPayloadSchema.optional()
22300
+ });
22301
+ var CommunityMessagePreviewSchema = CommunityMessageResourceSchema.partial().required({
22302
+ id: true,
22303
+ type: true
22304
+ }).extend({ attachments: exports_external.array(CommunityMessagePreviewAttachmentSchema).optional(), thread: messageThreadPreviewSchema.optional() });
22305
+ var CommunityReadStateResourceSchema = exports_external.strictObject({
22150
22306
  channelId: id,
22151
- serverId: id.nullable().optional(),
22152
- parentChannelId: id.nullable().optional(),
22307
+ lastReadMessageId: nullableId,
22308
+ lastReadAt: exports_external.string().nullable(),
22309
+ lastReadSeq: exports_external.number().int().nonnegative()
22310
+ });
22311
+ var CommunityMemberRelationSchema = exports_external.strictObject({
22312
+ channelId: id,
22313
+ userId: id,
22314
+ relation: exports_external.enum(["access", "notify"]),
22315
+ source: exports_external.string(),
22316
+ isCreator: exports_external.boolean(),
22317
+ role: exports_external.string().nullable(),
22318
+ memberId: nullableId
22319
+ });
22320
+ var CommunityPageSchema = exports_external.strictObject({
22321
+ olderCursor: exports_external.string().nullable(),
22322
+ newerCursor: exports_external.string().nullable(),
22323
+ hasMoreOlder: exports_external.boolean(),
22324
+ hasMoreNewer: exports_external.boolean(),
22325
+ latestSeq: exports_external.number().int().nonnegative()
22326
+ });
22327
+ var envelope = { contractVersion: exports_external.literal(COMMUNITY_RESOURCE_CONTRACT_VERSION), channelId: id };
22328
+ var CommunityChannelReadSchema = exports_external.strictObject({ ...envelope, channel: CommunityChannelResourceSchema, access: CommunityAccessDecisionSchema });
22329
+ var CommunityMessagesReadSchema = exports_external.strictObject({
22330
+ ...envelope,
22331
+ messages: exports_external.array(CommunityMessageResourceSchema),
22332
+ page: CommunityPageSchema,
22333
+ surfaceReceipt: exports_external.strictObject({ channelId: id, surfaceKind: exports_external.enum(["channel", "forum", "thread", "dm"]) })
22334
+ });
22335
+ var CommunityMessagePostedSchema = CommunityMessagesReadSchema.pick({ contractVersion: true, channelId: true }).extend({
22336
+ message: CommunityMessageResourceSchema,
22337
+ deduped: exports_external.boolean(),
22338
+ threadId: id.optional()
22339
+ });
22340
+ var CommunityMessageReadSchema = CommunityMessagePostedSchema.omit({ deduped: true, threadId: true });
22341
+ var CommunityReadStateReadSchema = exports_external.strictObject({ ...envelope, readState: CommunityReadStateResourceSchema });
22342
+ var CommunityMembersReadSchema = exports_external.strictObject({ ...envelope, relation: exports_external.enum(["access", "notify"]), members: exports_external.array(CommunityMemberRelationSchema), profiles: exports_external.array(CommunityResourceProfileSchema) });
22343
+ var CommunityThreadsReadSchema = exports_external.strictObject({
22344
+ ...envelope,
22345
+ channel: CommunityChannelResourceSchema,
22346
+ threads: exports_external.array(CommunityChannelResourceSchema),
22347
+ included: exports_external.strictObject({
22348
+ messages: exports_external.array(CommunityMessageResourceSchema),
22349
+ members: exports_external.array(CommunityMemberRelationSchema),
22350
+ profiles: exports_external.array(CommunityResourceProfileSchema),
22351
+ tags: exports_external.array(exports_external.strictObject({ messageId: id, tag: exports_external.string() })),
22352
+ participantCounts: exports_external.array(exports_external.strictObject({ channelId: id, count: exports_external.number().int().nonnegative() }))
22353
+ }),
22354
+ page: exports_external.strictObject({ nextCursor: exports_external.string().nullable(), hasMore: exports_external.boolean() })
22355
+ });
22356
+ var CommunityReadAdvanceSchema = exports_external.strictObject({ ...envelope, changed: exports_external.boolean(), targetSeq: exports_external.number().int().nonnegative(), revision: exports_external.number().int().nonnegative() });
22357
+ var CommunityReadErrorSchema = exports_external.strictObject({ contractVersion: exports_external.literal(COMMUNITY_RESOURCE_CONTRACT_VERSION), error: exports_external.strictObject({
22358
+ code: exports_external.enum(["invalid_input", "invalid_reply_target", "unauthenticated", "not_found", "not_allowed", "blocked", "idempotency_conflict", "rate_limited", "temporarily_unavailable"]),
22359
+ message: exports_external.string(),
22360
+ retryable: exports_external.boolean()
22361
+ }) });
22362
+ var legacyProfileSchema = CommunityResourceProfileSchema.pick({
22363
+ id: true,
22364
+ name: true,
22365
+ avatar: true,
22366
+ avatarVersion: true
22367
+ }).extend({ discriminator: exports_external.string().nullable(), statusEmoji: exports_external.string().nullable(), statusText: exports_external.string() });
22368
+ var CommunityLegacyMessageResourceSchema = CommunityMessageResourceSchema.extend({ authorAvatar: exports_external.string().optional(), attachments: exports_external.array(CommunityLegacyMessageAttachmentSchema), thread: legacyMessageThreadSchema.optional() });
22369
+ var legacyEnvelope = { contractVersion: exports_external.literal(2), channelId: id };
22370
+ var legacyReadSchemas = {
22371
+ channel: CommunityChannelReadSchema.extend(legacyEnvelope),
22372
+ messages: CommunityMessagesReadSchema.extend({ ...legacyEnvelope, messages: exports_external.array(CommunityLegacyMessageResourceSchema) }),
22373
+ readState: CommunityReadStateReadSchema.extend(legacyEnvelope),
22374
+ members: CommunityMembersReadSchema.extend({ ...legacyEnvelope, profiles: exports_external.array(legacyProfileSchema) }),
22375
+ threads: CommunityThreadsReadSchema.extend({ ...legacyEnvelope, included: CommunityThreadsReadSchema.shape.included.extend({
22376
+ messages: exports_external.array(CommunityLegacyMessageResourceSchema),
22377
+ profiles: exports_external.array(legacyProfileSchema)
22378
+ }) }),
22379
+ readAdvance: CommunityReadAdvanceSchema.extend(legacyEnvelope),
22380
+ error: CommunityReadErrorSchema.extend({ contractVersion: exports_external.literal(2) })
22381
+ };
22382
+ var legacyChannelResourcePreviewSchema = CommunityChannelResourceSchema.partial().strip().extend({
22383
+ archived: legacyArchivedSchema.optional()
22384
+ });
22385
+ var legacyChannelResourceSchema = CommunityChannelResourceSchema.strip().extend({
22386
+ topic: CommunityChannelResourceSchema.shape.topic.nullish().transform((value) => value ?? ""),
22387
+ position: CommunityChannelResourceSchema.shape.position.nullish().transform((value) => value ?? 0),
22388
+ messageCount: CommunityChannelResourceSchema.shape.messageCount.nullish().transform((value) => value ?? 0),
22389
+ categoryId: nullableId.default(null),
22390
+ parentChannelId: nullableId.default(null),
22391
+ parentMessageId: nullableId.default(null),
22392
+ creatorId: nullableId.default(null),
22393
+ lastMessageAt: CommunityChannelResourceSchema.shape.lastMessageAt.default(null),
22394
+ archived: legacyArchivedSchema
22395
+ });
22396
+ var legacyMessageResourceSchema = CommunityLegacyMessageResourceSchema.strip().extend({
22397
+ channelId: id.optional(),
22398
+ replyToId: nullableId.optional(),
22399
+ clientNonce: CommunityMessageResourceSchema.shape.clientNonce.default(null),
22400
+ attachments: CommunityLegacyMessageResourceSchema.shape.attachments.default([]),
22401
+ embeds: CommunityMessageResourceSchema.shape.embeds.nullable().transform((value) => value ?? undefined)
22402
+ });
22403
+
22404
+ // ../shared/src/community-attention.ts
22405
+ var id2 = exports_external.string().min(1);
22406
+ var AttentionScopeSchema = exports_external.strictObject({
22407
+ scopeId: id2,
22408
+ channelId: id2,
22409
+ serverId: id2.nullable().optional(),
22410
+ parentChannelId: id2.nullable().optional(),
22153
22411
  ordinaryUnread: exports_external.boolean(),
22154
22412
  lastUnreadSeq: exports_external.number().int().nonnegative(),
22155
22413
  lastAttentionSeq: exports_external.number().int().nonnegative().nullable().optional(),
22156
22414
  attentionCount: exports_external.number().int().nonnegative()
22157
22415
  });
22158
22416
  var AttentionItemSchema = exports_external.strictObject({
22159
- id,
22417
+ id: id2,
22160
22418
  kind: exports_external.enum(["mention", "reply", "friend_request", "forum_post"]),
22161
- sourceId: id,
22162
- scopeId: id.nullable().optional(),
22163
- messageId: id.nullable().optional(),
22164
- actorUserId: id.nullable().optional(),
22419
+ sourceId: id2,
22420
+ scopeId: id2.nullable().optional(),
22421
+ messageId: id2.nullable().optional(),
22422
+ actorUserId: id2.nullable().optional(),
22165
22423
  createdAt: exports_external.string(),
22166
- childChannelId: id.optional(),
22424
+ childChannelId: id2.optional(),
22167
22425
  openerSeq: exports_external.number().int().nonnegative().optional(),
22168
22426
  readTarget: exports_external.strictObject({
22169
- channelId: id,
22427
+ channelId: id2,
22170
22428
  seq: exports_external.number().int().nonnegative()
22171
22429
  }).optional()
22172
22430
  }).superRefine((item, ctx) => {
@@ -22196,26 +22454,30 @@ var AttentionItemSchema = exports_external.strictObject({
22196
22454
  }
22197
22455
  });
22198
22456
  var AttentionIncludedServerSchema = exports_external.strictObject({
22199
- id,
22457
+ id: id2,
22200
22458
  name: exports_external.string(),
22201
22459
  discriminator: exports_external.string()
22202
22460
  });
22203
- var AttentionIncludedChannelSchema = exports_external.strictObject({
22204
- id,
22205
- serverId: id,
22206
- name: exports_external.string(),
22207
- type: exports_external.enum(["text", "forum", "thread"]),
22208
- parentChannelId: id.nullable(),
22209
- parentMessageId: id.nullable(),
22210
- creatorId: id.nullable(),
22211
- archived: exports_external.boolean(),
22212
- lastMessageAt: exports_external.string().nullable(),
22461
+ var AttentionIncludedChannelSchema = CommunityChannelResourceSchema.pick({
22462
+ id: true,
22463
+ serverId: true,
22464
+ name: true,
22465
+ type: true,
22466
+ parentChannelId: true,
22467
+ parentMessageId: true,
22468
+ creatorId: true,
22469
+ archived: true,
22470
+ lastMessageAt: true
22471
+ }).extend({
22472
+ serverId: CommunityChannelResourceSchema.shape.serverId.unwrap(),
22473
+ name: CommunityChannelResourceSchema.shape.name.unwrap(),
22474
+ type: CommunityChannelResourceSchema.shape.type.extract(["text", "forum", "thread"]),
22213
22475
  openerSeq: exports_external.number().int().nonnegative().optional(),
22214
22476
  openerUnread: exports_external.boolean().optional()
22215
22477
  });
22216
22478
  var AttentionIncludedDmSchema = exports_external.strictObject({
22217
- id,
22218
- userId: id,
22479
+ id: id2,
22480
+ userId: id2,
22219
22481
  name: exports_external.string(),
22220
22482
  discriminator: exports_external.string(),
22221
22483
  avatar: exports_external.string(),
@@ -22224,22 +22486,21 @@ var AttentionIncludedDmSchema = exports_external.strictObject({
22224
22486
  lastUnreadSeq: exports_external.number().int().nonnegative()
22225
22487
  });
22226
22488
  var AttentionIncludedProfileSchema = exports_external.strictObject({
22227
- userId: id,
22228
- name: exports_external.string(),
22489
+ userId: CommunityResourceProfileSchema.shape.id,
22490
+ ...CommunityResourceProfileSchema.pick({ name: true, discriminator: true, avatar: true, avatarVersion: true }).shape,
22229
22491
  discriminator: exports_external.string(),
22230
- avatar: exports_external.string(),
22231
- avatarVersion: exports_external.number().int().nonnegative()
22232
- });
22233
- var AttentionIncludedMessageSchema = exports_external.strictObject({
22234
- id,
22235
- channelId: id,
22236
- type: exports_external.enum(["chat", "system"]),
22237
- authorId: id.optional(),
22238
- authorName: exports_external.string().optional(),
22239
- seq: exports_external.number().int().nonnegative(),
22240
- createdAt: exports_external.string(),
22241
- content: exports_external.string()
22492
+ avatar: exports_external.string()
22242
22493
  });
22494
+ var AttentionIncludedMessageSchema = CommunityMessagePreviewSchema.pick({
22495
+ id: true,
22496
+ channelId: true,
22497
+ type: true,
22498
+ authorId: true,
22499
+ authorName: true,
22500
+ seq: true,
22501
+ createdAt: true,
22502
+ content: true
22503
+ }).required({ channelId: true, seq: true, createdAt: true, content: true });
22243
22504
  var AttentionIncludedSchema = exports_external.strictObject({
22244
22505
  servers: exports_external.array(AttentionIncludedServerSchema),
22245
22506
  channels: exports_external.array(AttentionIncludedChannelSchema),
@@ -22265,7 +22526,7 @@ var AccountAttentionSnapshotSchema = exports_external.strictObject({
22265
22526
  const serverById = new Map(snapshot.included.servers.map((server) => [server.id, server]));
22266
22527
  const channelById = new Map(snapshot.included.channels.map((channel2) => [channel2.id, channel2]));
22267
22528
  const dmById = new Map(snapshot.included.dms.map((dm) => [dm.id, dm]));
22268
- const profileById = new Map(snapshot.included.profiles.map((profile) => [profile.userId, profile]));
22529
+ const profileById = new Map(snapshot.included.profiles.map((profile2) => [profile2.userId, profile2]));
22269
22530
  const messageById = new Map(snapshot.included.messages.map((message2) => [message2.id, message2]));
22270
22531
  const rejectDuplicates = (values, kind) => {
22271
22532
  const seen = new Set;
@@ -22278,7 +22539,7 @@ var AccountAttentionSnapshotSchema = exports_external.strictObject({
22278
22539
  rejectDuplicates(snapshot.included.servers.map((server) => server.id), "server");
22279
22540
  rejectDuplicates(snapshot.included.channels.map((channel2) => channel2.id), "channel");
22280
22541
  rejectDuplicates(snapshot.included.dms.map((dm) => dm.id), "dm");
22281
- rejectDuplicates(snapshot.included.profiles.map((profile) => profile.userId), "profile");
22542
+ rejectDuplicates(snapshot.included.profiles.map((profile2) => profile2.userId), "profile");
22282
22543
  rejectDuplicates(snapshot.included.messages.map((message2) => message2.id), "message");
22283
22544
  for (const scope of snapshot.scopes) {
22284
22545
  if (scope.serverId) {
@@ -23090,15 +23351,15 @@ var CommunityMachineRuntimeListSchema = exports_external.array(CommunityMachineR
23090
23351
  var CommunityRunningAgentListSchema = exports_external.array(exports_external.string()).transform((list) => {
23091
23352
  const seen = new Set;
23092
23353
  const out = [];
23093
- for (const id2 of list) {
23094
- if (seen.has(id2))
23354
+ for (const id3 of list) {
23355
+ if (seen.has(id3))
23095
23356
  continue;
23096
- seen.add(id2);
23097
- out.push(id2);
23357
+ seen.add(id3);
23358
+ out.push(id3);
23098
23359
  }
23099
23360
  return out;
23100
23361
  });
23101
- var CommunityMachineSummarySchema = exports_external.object({
23362
+ var CommunityMachineSummarySchema = exports_external.strictObject({
23102
23363
  id: exports_external.string(),
23103
23364
  hostname: exports_external.string(),
23104
23365
  displayName: exports_external.string(),
@@ -23108,8 +23369,8 @@ var CommunityMachineSummarySchema = exports_external.object({
23108
23369
  daemonVersion: exports_external.string(),
23109
23370
  lastSeenAt: exports_external.string().nullable(),
23110
23371
  status: exports_external.enum(["online", "offline"]),
23111
- availableRuntimes: exports_external.array(CommunityMachineRuntimeSchema).default([]),
23112
- lastRuntimeError: exports_external.object({
23372
+ availableRuntimes: exports_external.array(CommunityMachineRuntimeSchema.strict()),
23373
+ lastRuntimeError: exports_external.strictObject({
23113
23374
  requested: exports_external.string(),
23114
23375
  available: exports_external.array(exports_external.string()),
23115
23376
  at: exports_external.string()
@@ -24049,203 +24310,6 @@ var AGENT_UNREAD_CHANNEL_CHUNK_SIZE = maxInParams(13);
24049
24310
 
24050
24311
  // ../shared/src/db/queries/community/mention.ts
24051
24312
  var MENTION_INSERT_MAX_ROWS = maxRowsPerInsert(5);
24052
- // ../shared/src/community-friend-approval.ts
24053
- var profile = exports_external.strictObject({
24054
- id: exports_external.string(),
24055
- name: exports_external.string(),
24056
- discriminator: exports_external.string(),
24057
- image: exports_external.string().nullable(),
24058
- avatarVersion: exports_external.number().int().nonnegative()
24059
- });
24060
- var FriendApprovalPayloadSchema = exports_external.strictObject({
24061
- friendshipId: exports_external.string(),
24062
- status: exports_external.enum(["pending", "approved", "denied", "superseded", "cancelled"]),
24063
- waitingOn: exports_external.enum(["you", "other-owner", "addressee"]).nullable(),
24064
- otherProfile: profile,
24065
- botProfile: profile,
24066
- waitingOnProfile: profile.nullable().optional()
24067
- });
24068
-
24069
- // ../shared/src/community-contract.ts
24070
- var COMMUNITY_CONTRACT_VERSION = 2;
24071
-
24072
- // ../shared/src/community-resources.ts
24073
- var id2 = exports_external.string().min(1);
24074
- var nullableId = id2.nullable();
24075
- var legacyArchivedSchema = exports_external.union([exports_external.boolean(), exports_external.literal(0), exports_external.literal(1)]).transform((value) => value === true || value === 1);
24076
- var CommunityChannelResourceSchema = exports_external.strictObject({
24077
- id: id2,
24078
- type: exports_external.enum(["text", "forum", "thread", "dm"]),
24079
- serverId: nullableId,
24080
- categoryId: nullableId,
24081
- name: exports_external.string().nullable(),
24082
- topic: exports_external.string(),
24083
- parentChannelId: nullableId,
24084
- parentMessageId: nullableId,
24085
- creatorId: nullableId,
24086
- position: exports_external.number(),
24087
- archived: exports_external.boolean(),
24088
- createdAt: exports_external.string(),
24089
- lastMessageAt: exports_external.string().nullable(),
24090
- messageCount: exports_external.number().int().nonnegative()
24091
- });
24092
- var CommunityChannelIdentitySchema = CommunityChannelResourceSchema.pick({
24093
- id: true,
24094
- type: true,
24095
- serverId: true,
24096
- name: true,
24097
- parentChannelId: true,
24098
- parentMessageId: true,
24099
- creatorId: true,
24100
- archived: true,
24101
- lastMessageAt: true,
24102
- createdAt: true
24103
- }).partial({ createdAt: true }).strip();
24104
- var legacyChannelIdentitySchema = CommunityChannelIdentitySchema.extend({
24105
- archived: legacyArchivedSchema,
24106
- parentChannelId: nullableId.default(null),
24107
- parentMessageId: nullableId.default(null),
24108
- creatorId: nullableId.default(null),
24109
- lastMessageAt: CommunityChannelResourceSchema.shape.lastMessageAt.default(null)
24110
- });
24111
- var CommunityAccessDecisionSchema = exports_external.strictObject({
24112
- channelId: id2,
24113
- canRead: exports_external.boolean(),
24114
- canSend: exports_external.boolean(),
24115
- canCreateDiscussion: exports_external.boolean()
24116
- });
24117
- var CommunityMessageAttachmentSchema = exports_external.strictObject({
24118
- kind: exports_external.enum(["image", "file"]),
24119
- name: exports_external.string(),
24120
- url: exports_external.string(),
24121
- thumbnailUrl: exports_external.string().optional(),
24122
- contentType: exports_external.string().optional(),
24123
- size: exports_external.string().optional(),
24124
- sizeBytes: exports_external.number().nonnegative().optional(),
24125
- width: exports_external.number().nonnegative().optional(),
24126
- height: exports_external.number().nonnegative().optional()
24127
- });
24128
- var CommunityMessageResourceSchema = exports_external.strictObject({
24129
- id: id2,
24130
- channelId: id2,
24131
- seq: exports_external.number().int().nonnegative(),
24132
- authorId: id2,
24133
- createdAt: exports_external.string(),
24134
- type: exports_external.enum(["chat", "system"]),
24135
- content: exports_external.string(),
24136
- replyToId: nullableId,
24137
- clientNonce: exports_external.string().nullable(),
24138
- attachments: exports_external.array(CommunityMessageAttachmentSchema),
24139
- systemKind: exports_external.literal("thread").optional(),
24140
- authorName: exports_external.string().optional(),
24141
- authorAvatar: exports_external.string().optional(),
24142
- authorAvatarVersion: exports_external.number().int().nonnegative().optional(),
24143
- mentionType: exports_external.literal("everyone").nullable().optional(),
24144
- replyTo: exports_external.strictObject({
24145
- id: id2,
24146
- authorId: id2.optional(),
24147
- authorName: exports_external.string(),
24148
- text: exports_external.string(),
24149
- deleted: exports_external.boolean().optional()
24150
- }).optional(),
24151
- embeds: exports_external.array(exports_external.unknown()).optional(),
24152
- reactions: exports_external.array(exports_external.strictObject({
24153
- emoji: exports_external.string(),
24154
- count: exports_external.number().int().nonnegative(),
24155
- me: exports_external.boolean(),
24156
- userIds: exports_external.array(id2)
24157
- })).optional(),
24158
- thread: exports_external.strictObject({
24159
- id: id2,
24160
- name: exports_external.string(),
24161
- messageCount: exports_external.number().int().nonnegative(),
24162
- lastReplyAt: exports_external.string().optional(),
24163
- tags: exports_external.array(exports_external.string()).optional(),
24164
- preview: exports_external.string().optional(),
24165
- participants: exports_external.array(exports_external.strictObject({ id: id2, name: exports_external.string(), avatar: exports_external.string(), avatarVersion: exports_external.number().int().nonnegative() })).optional(),
24166
- participantCount: exports_external.number().int().nonnegative().optional()
24167
- }).optional(),
24168
- approval: FriendApprovalPayloadSchema.optional()
24169
- });
24170
- var CommunityReadStateResourceSchema = exports_external.strictObject({
24171
- channelId: id2,
24172
- lastReadMessageId: nullableId,
24173
- lastReadAt: exports_external.string().nullable(),
24174
- lastReadSeq: exports_external.number().int().nonnegative()
24175
- });
24176
- var CommunityMemberRelationSchema = exports_external.strictObject({
24177
- channelId: id2,
24178
- userId: id2,
24179
- relation: exports_external.enum(["access", "notify"]),
24180
- source: exports_external.string(),
24181
- isCreator: exports_external.boolean(),
24182
- role: exports_external.string().nullable(),
24183
- memberId: nullableId
24184
- });
24185
- var CommunityResourceProfileSchema = exports_external.strictObject({
24186
- id: id2,
24187
- name: exports_external.string(),
24188
- discriminator: exports_external.string().nullable(),
24189
- avatar: exports_external.string().nullable(),
24190
- avatarVersion: exports_external.number().int().nonnegative(),
24191
- statusEmoji: exports_external.string().nullable(),
24192
- statusText: exports_external.string()
24193
- });
24194
- var CommunityPageSchema = exports_external.strictObject({
24195
- olderCursor: exports_external.string().nullable(),
24196
- newerCursor: exports_external.string().nullable(),
24197
- hasMoreOlder: exports_external.boolean(),
24198
- hasMoreNewer: exports_external.boolean(),
24199
- latestSeq: exports_external.number().int().nonnegative()
24200
- });
24201
- var envelope = { contractVersion: exports_external.literal(COMMUNITY_CONTRACT_VERSION), channelId: id2 };
24202
- var CommunityChannelReadSchema = exports_external.strictObject({ ...envelope, channel: CommunityChannelResourceSchema, access: CommunityAccessDecisionSchema });
24203
- var CommunityMessagesReadSchema = exports_external.strictObject({
24204
- ...envelope,
24205
- messages: exports_external.array(CommunityMessageResourceSchema),
24206
- page: CommunityPageSchema,
24207
- surfaceReceipt: exports_external.strictObject({ channelId: id2, surfaceKind: exports_external.enum(["channel", "forum", "thread", "dm"]) })
24208
- });
24209
- var CommunityReadStateReadSchema = exports_external.strictObject({ ...envelope, readState: CommunityReadStateResourceSchema });
24210
- var CommunityMembersReadSchema = exports_external.strictObject({ ...envelope, relation: exports_external.enum(["access", "notify"]), members: exports_external.array(CommunityMemberRelationSchema), profiles: exports_external.array(CommunityResourceProfileSchema) });
24211
- var CommunityThreadsReadSchema = exports_external.strictObject({
24212
- ...envelope,
24213
- channel: CommunityChannelResourceSchema,
24214
- threads: exports_external.array(CommunityChannelResourceSchema),
24215
- included: exports_external.strictObject({
24216
- messages: exports_external.array(CommunityMessageResourceSchema),
24217
- members: exports_external.array(CommunityMemberRelationSchema),
24218
- profiles: exports_external.array(CommunityResourceProfileSchema),
24219
- tags: exports_external.array(exports_external.strictObject({ messageId: id2, tag: exports_external.string() })),
24220
- participantCounts: exports_external.array(exports_external.strictObject({ channelId: id2, count: exports_external.number().int().nonnegative() }))
24221
- }),
24222
- page: exports_external.strictObject({ nextCursor: exports_external.string().nullable(), hasMore: exports_external.boolean() })
24223
- });
24224
- var CommunityReadAdvanceSchema = exports_external.strictObject({ ...envelope, changed: exports_external.boolean(), targetSeq: exports_external.number().int().nonnegative(), revision: exports_external.number().int().nonnegative() });
24225
- var CommunityReadErrorSchema = exports_external.strictObject({ contractVersion: exports_external.literal(COMMUNITY_CONTRACT_VERSION), error: exports_external.strictObject({
24226
- code: exports_external.enum(["invalid_input", "invalid_reply_target", "unauthenticated", "not_found", "not_allowed", "blocked", "idempotency_conflict", "rate_limited", "temporarily_unavailable"]),
24227
- message: exports_external.string(),
24228
- retryable: exports_external.boolean()
24229
- }) });
24230
- var legacyChannelResourceSchema = CommunityChannelResourceSchema.strip().extend({
24231
- topic: CommunityChannelResourceSchema.shape.topic.nullish().transform((value) => value ?? ""),
24232
- position: CommunityChannelResourceSchema.shape.position.nullish().transform((value) => value ?? 0),
24233
- messageCount: CommunityChannelResourceSchema.shape.messageCount.nullish().transform((value) => value ?? 0),
24234
- categoryId: nullableId.default(null),
24235
- parentChannelId: nullableId.default(null),
24236
- parentMessageId: nullableId.default(null),
24237
- creatorId: nullableId.default(null),
24238
- lastMessageAt: CommunityChannelResourceSchema.shape.lastMessageAt.default(null),
24239
- archived: legacyArchivedSchema
24240
- });
24241
- var legacyMessageResourceSchema = CommunityMessageResourceSchema.strip().extend({
24242
- channelId: id2.optional(),
24243
- replyToId: nullableId.optional(),
24244
- clientNonce: CommunityMessageResourceSchema.shape.clientNonce.default(null),
24245
- attachments: CommunityMessageResourceSchema.shape.attachments.default([]),
24246
- embeds: CommunityMessageResourceSchema.shape.embeds.nullable().transform((value) => value ?? undefined)
24247
- });
24248
-
24249
24313
  // ../shared/src/community-ws-events.ts
24250
24314
  var string4 = exports_external.string();
24251
24315
  var nullableString = string4.nullable();
@@ -24275,6 +24339,7 @@ var messageSchema = CommunityMessageResourceSchema.pick({
24275
24339
  seq: exports_external.number(),
24276
24340
  authorId: string4,
24277
24341
  authorName: string4,
24342
+ authorAvatar: string4.optional(),
24278
24343
  authorAvatarVersion: CommunityMessageResourceSchema.shape.authorAvatarVersion.unwrap(),
24279
24344
  replyToId: nullableString.optional(),
24280
24345
  replyTo: CommunityMessageResourceSchema.shape.replyTo.unwrap().extend({
@@ -24284,7 +24349,7 @@ var messageSchema = CommunityMessageResourceSchema.pick({
24284
24349
  attachments: exports_external.array(messageAttachmentSchema).optional(),
24285
24350
  clientNonce: string4.optional()
24286
24351
  });
24287
- var communityMessageCreateSchema = exports_external.strictObject({
24352
+ var CommunityLegacyMessageCreateSchema = exports_external.strictObject({
24288
24353
  type: exports_external.literal("community:message.create"),
24289
24354
  channelId: string4,
24290
24355
  serverId: string4.optional(),
@@ -24596,29 +24661,9 @@ var communityProfileUpdateSchema = exports_external.strictObject({
24596
24661
  kind: exports_external.enum(["human", "bot"]),
24597
24662
  ownerUserId: nullableString
24598
24663
  });
24599
- var machineRuntimeSchema = CommunityMachineRuntimeSchema.strict();
24600
- var CommunityMachineSummarySchema2 = exports_external.strictObject({
24601
- id: string4,
24602
- hostname: string4,
24603
- displayName: string4,
24604
- platform: string4,
24605
- arch: string4,
24606
- osRelease: string4,
24607
- daemonVersion: string4,
24608
- lastSeenAt: nullableString,
24609
- status: exports_external.enum(["online", "offline"]),
24610
- availableRuntimes: exports_external.array(machineRuntimeSchema),
24611
- lastRuntimeError: exports_external.strictObject({
24612
- requested: string4,
24613
- available: exports_external.array(string4),
24614
- at: string4
24615
- }).optional(),
24616
- createdAt: string4,
24617
- updatedAt: string4
24618
- });
24619
24664
  var communityMachineCreatedSchema = exports_external.strictObject({
24620
24665
  type: exports_external.literal("community:machine.created"),
24621
- machine: CommunityMachineSummarySchema2,
24666
+ machine: CommunityMachineSummarySchema,
24622
24667
  tokenId: string4
24623
24668
  });
24624
24669
  var communityMachineStatusSchema = exports_external.strictObject({
@@ -24629,7 +24674,7 @@ var communityMachineStatusSchema = exports_external.strictObject({
24629
24674
  });
24630
24675
  var communityMachineUpdatedSchema = exports_external.strictObject({
24631
24676
  type: exports_external.literal("community:machine.updated"),
24632
- machine: CommunityMachineSummarySchema2
24677
+ machine: CommunityMachineSummarySchema
24633
24678
  });
24634
24679
  var communityMachineRemovedSchema = exports_external.strictObject({
24635
24680
  type: exports_external.literal("community:machine.removed"),
@@ -24645,8 +24690,7 @@ var communityBotAuditEventSchema = exports_external.strictObject({
24645
24690
  launchId: nullableString.optional(),
24646
24691
  createdAt: string4
24647
24692
  }).refine((event) => Object.prototype.hasOwnProperty.call(event, "payload"));
24648
- var CommunityWsEventDiscriminatedSchema = exports_external.discriminatedUnion("type", [
24649
- communityMessageCreateSchema,
24693
+ var commonCommunityEventSchemas = [
24650
24694
  communityMessageUpdatedSchema,
24651
24695
  communityMessageEditedSchema,
24652
24696
  communityReactionAddSchema,
@@ -24655,12 +24699,8 @@ var CommunityWsEventDiscriminatedSchema = exports_external.discriminatedUnion("t
24655
24699
  communityPinRemoveSchema,
24656
24700
  communityTypingStartSchema,
24657
24701
  communityTypingStopSchema,
24658
- communityChildChannelCreateSchema,
24659
- communityChildChannelUpdateSchema,
24660
24702
  communityServerUpdateSchema,
24661
24703
  communityServerDeleteSchema,
24662
- communityChannelCreateSchema,
24663
- communityChannelUpdateSchema,
24664
24704
  communityChannelDeleteSchema,
24665
24705
  communityChannelReorderSchema,
24666
24706
  communityChannelMemberAddSchema,
@@ -24685,15 +24725,34 @@ var CommunityWsEventDiscriminatedSchema = exports_external.discriminatedUnion("t
24685
24725
  communityInboxChangedSchema,
24686
24726
  communityPresenceUpdateSchema,
24687
24727
  communityStatusUpdateSchema,
24688
- communityIdentityUpdateSchema,
24689
- communityProfileUpdateSchema,
24690
24728
  communityMachineCreatedSchema,
24691
24729
  communityMachineStatusSchema,
24692
24730
  communityMachineUpdatedSchema,
24693
24731
  communityMachineRemovedSchema,
24694
24732
  communityBotAuditEventSchema
24733
+ ];
24734
+ var CommunityWsEventDiscriminatedSchema = exports_external.discriminatedUnion("type", [
24735
+ ...commonCommunityEventSchemas,
24736
+ CommunityLegacyMessageCreateSchema,
24737
+ communityChildChannelCreateSchema,
24738
+ communityChannelCreateSchema,
24739
+ communityChildChannelUpdateSchema,
24740
+ communityChannelUpdateSchema,
24741
+ communityIdentityUpdateSchema,
24742
+ communityProfileUpdateSchema
24743
+ ]);
24744
+ var CommunityResourceWsEventDiscriminatedSchema = exports_external.discriminatedUnion("type", [
24745
+ ...commonCommunityEventSchemas,
24746
+ CommunityLegacyMessageCreateSchema.extend({ message: CommunityMessageResourceSchema.required({ authorName: true, authorAvatarVersion: true }) }).refine((event) => event.message.channelId === event.channelId),
24747
+ communityChildChannelCreateSchema.extend({ channel: CommunityChannelResourceSchema.extend({ type: exports_external.literal("thread") }) }).refine((event) => event.channel.parentChannelId === event.parentChannelId && (event.parentMessageId === undefined || event.parentMessageId === event.channel.parentMessageId)),
24748
+ communityChannelCreateSchema.extend({ channel: CommunityChannelResourceSchema.extend({ type: channelTypeSchema }) }).refine((event) => event.channel.serverId === event.serverId),
24749
+ communityChildChannelUpdateSchema.extend({ changes: CommunityChannelResourceSchema.pick({ name: true, archived: true, lastMessageAt: true, messageCount: true }).partial().extend({ tags: exports_external.array(string4).nullable().optional() }) }),
24750
+ communityChannelUpdateSchema.extend({ changes: CommunityChannelResourceSchema.pick({ name: true, topic: true, categoryId: true, type: true }).partial().extend({ type: channelTypeSchema.optional() }) }),
24751
+ communityIdentityUpdateSchema.extend({ avatar: CommunityResourceProfileSchema.shape.avatar, avatarVersion: CommunityResourceProfileSchema.shape.avatarVersion.refine((version3) => version3 > 0) }),
24752
+ CommunityResourceProfileSchema.pick({ name: true, discriminator: true, aboutMe: true, bannerColor: true, kind: true, ownerUserId: true }).required().extend({ type: exports_external.literal("community:profile.update"), userId: string4 })
24695
24753
  ]);
24696
24754
  var CommunityWsEventSchema = CommunityWsEventDiscriminatedSchema.transform((event) => event);
24755
+ var CommunityResourceWsEventSchema = CommunityResourceWsEventDiscriminatedSchema.transform((event) => event);
24697
24756
  var WS_EVENTS = {
24698
24757
  MESSAGE_CREATE: "community:message.create",
24699
24758
  MESSAGE_UPDATED: "community:message.updated",
@@ -24777,6 +24836,7 @@ var memberAddedSchema = exports_external.strictObject({
24777
24836
  channelId: exports_external.string().min(1)
24778
24837
  });
24779
24838
  var batchShape = exports_external.strictObject({
24839
+ communityContract: exports_external.literal(3).optional(),
24780
24840
  messageId: exports_external.string().min(1),
24781
24841
  messageEvent: exports_external.unknown(),
24782
24842
  contentUserIds: targetList,
@@ -24893,8 +24953,46 @@ var communityFunnelAnalyticsEvent = sqliteTable("community_funnel_analytics_even
24893
24953
  index("idx_community_funnel_analytics_owner_claimed_created").on(t.ownerUserId, t.claimedAt, t.createdAt)
24894
24954
  ]);
24895
24955
 
24956
+ // ../shared/src/db/product-analytics-schema.ts
24957
+ var exports_product_analytics_schema = {};
24958
+ __export(exports_product_analytics_schema, {
24959
+ productAnalyticsEvent: () => productAnalyticsEvent,
24960
+ PRODUCT_ANALYTICS_EVENTS: () => PRODUCT_ANALYTICS_EVENTS
24961
+ });
24962
+ var PRODUCT_ANALYTICS_EVENTS = [
24963
+ "landing_cta_clicked",
24964
+ "login_page_view",
24965
+ "sign_up",
24966
+ "sign_in_success",
24967
+ "sign_in_failed",
24968
+ "onboarding_enter_clicked",
24969
+ "onboarding_first_message",
24970
+ "invitation_link_visit"
24971
+ ];
24972
+ var productAnalyticsEvent = sqliteTable("product_analytics_event", {
24973
+ id: text("id").primaryKey(),
24974
+ eventName: text("event_name").notNull().$type(),
24975
+ actorUserId: text("actor_user_id").references(() => user.id, { onDelete: "cascade" }),
24976
+ serverId: text("server_id").references(() => communityServer.id, { onDelete: "cascade" }),
24977
+ sourceId: text("source_id"),
24978
+ dedupeKey: text("dedupe_key").notNull(),
24979
+ clientId: text("client_id").notNull(),
24980
+ sessionId: text("session_id").notNull(),
24981
+ method: text("method"),
24982
+ accountKind: text("account_kind").$type(),
24983
+ ctaName: text("cta_name"),
24984
+ failureStage: text("failure_stage").$type(),
24985
+ createdAt: text("created_at").notNull(),
24986
+ deliveryStatus: text("delivery_status").notNull().default("pending").$type(),
24987
+ deliveryReason: text("delivery_reason"),
24988
+ attemptedAt: text("attempted_at")
24989
+ }, (t) => [
24990
+ uniqueIndex("uq_product_analytics_dedupe").on(t.dedupeKey),
24991
+ index("idx_product_analytics_actor_server_event").on(t.actorUserId, t.serverId, t.eventName)
24992
+ ]);
24993
+
24896
24994
  // ../shared/src/db/index.ts
24897
- var allSchema = { ...exports_schema, ...exports_community_schema, ...exports_community_machine_schema, ...exports_product_plan_schema, ...exports_billing_schema, ...exports_community_funnel_analytics_schema };
24995
+ var allSchema = { ...exports_schema, ...exports_community_schema, ...exports_community_machine_schema, ...exports_product_plan_schema, ...exports_billing_schema, ...exports_community_funnel_analytics_schema, ...exports_product_analytics_schema };
24898
24996
  // ../shared/src/community-server-rail.ts
24899
24997
  var MAX_SERVER_RAIL_COMMANDS = 3;
24900
24998
  var idSchema = exports_external.string().trim().min(1);