@alook/cli 0.1.2 → 0.1.3

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/index.js +1469 -1263
  2. package/dist/session-runner.js +1418 -1212
  3. package/package.json +1 -1
@@ -97,88 +97,6 @@ import { mkdir, writeFile, rm, rename } from "fs/promises";
97
97
  import { mkdirSync as mkdirSync5 } from "fs";
98
98
  import path from "path";
99
99
 
100
- // ../shared/src/constants.ts
101
- var TaskStatus = {
102
- QUEUED: "queued",
103
- DISPATCHED: "dispatched",
104
- RUNNING: "running",
105
- COMPLETED: "completed",
106
- FAILED: "failed",
107
- CANCELLED: "cancelled",
108
- SUPERSEDED: "superseded"
109
- };
110
- var TERMINAL_TASK_STATUSES = [
111
- TaskStatus.COMPLETED,
112
- TaskStatus.FAILED,
113
- TaskStatus.CANCELLED,
114
- TaskStatus.SUPERSEDED
115
- ];
116
- var TASK_TYPES = {
117
- USER_DM_MESSAGE: "user_dm_message",
118
- EMAIL_NOTIFICATION: "email_notification",
119
- CALENDAR_EVENT: "calendar_event",
120
- ISSUE_EVENT: "issue_event",
121
- KILL_TASK: "kill_task"
122
- };
123
- var IssueStatus = {
124
- TODO: "todo",
125
- IN_PROGRESS: "in_progress",
126
- REVIEW: "review",
127
- DONE: "done",
128
- CLOSED: "closed",
129
- CANCELED: "canceled",
130
- FAILED: "failed"
131
- };
132
- var ACTIVE_ISSUE_STATUSES = [
133
- IssueStatus.TODO,
134
- IssueStatus.IN_PROGRESS,
135
- IssueStatus.REVIEW
136
- ];
137
- var TERMINAL_ISSUE_STATUSES = [
138
- IssueStatus.DONE,
139
- IssueStatus.CLOSED,
140
- IssueStatus.CANCELED,
141
- IssueStatus.FAILED
142
- ];
143
- var POLL_INTERVAL_MS = Number(process.env.POLL_INTERVAL_MS) || 3000;
144
- var OFFLINE_THRESHOLD_MS = Number(process.env.OFFLINE_THRESHOLD_MS) || 30000;
145
- var COMMUNITY_MACHINE_HEARTBEAT_MS = 30000;
146
- var COMMUNITY_MACHINE_OFFLINE_THRESHOLD_MS = 3 * COMMUNITY_MACHINE_HEARTBEAT_MS;
147
- var COMMUNITY_MACHINE_PAIR_TOKEN_TTL_MS = 15 * 60000;
148
- var EVENT_POLL_INTERVAL_MS = Number(process.env.EVENT_POLL_INTERVAL_MS) || 2000;
149
- var MeetingStatus = {
150
- PENDING: "pending",
151
- SCHEDULED: "scheduled",
152
- JOINING: "joining",
153
- RECORDING: "recording",
154
- COMPLETED: "completed",
155
- FAILED: "failed"
156
- };
157
- var TERMINAL_MEETING_STATUSES = [
158
- MeetingStatus.COMPLETED,
159
- MeetingStatus.FAILED
160
- ];
161
- var COMMUNITY_BOT_NAME_MIN = 1;
162
- var COMMUNITY_BOT_NAME_MAX = 32;
163
- var COMMUNITY_BOT_DESCRIPTION_MAX = 1024;
164
- var COMMUNITY_BOT_IMAGE_URL_MAX = 2048;
165
- var DEV_PORTS = {
166
- web: 3000,
167
- emailWorker: 8787,
168
- wsDo: 8789,
169
- wakeWorker: 8790
170
- };
171
- var DEV_WEB_URL = process.env.ALOOK_SERVER_URL || `http://localhost:${DEV_PORTS.web}`;
172
- var DEV_WS_DO_URL = process.env.DEV_WS_DO_URL || `http://localhost:${DEV_PORTS.wsDo}`;
173
- var DEV_EMAIL_WORKER_URL = process.env.DEV_EMAIL_WORKER_URL || `http://localhost:${DEV_PORTS.emailWorker}`;
174
- var DEV_WAKE_WORKER_URL = process.env.DEV_WAKE_WORKER_URL || `http://localhost:${DEV_PORTS.wakeWorker}`;
175
- // ../shared/src/constants/community.ts
176
- var MAX_PROFILE_NAME_LENGTH = 100;
177
- var MAX_MESSAGE_CONTENT_LENGTH = 4000;
178
- var MAX_ATTACHMENTS_PER_MESSAGE = 10;
179
- var MAX_ATTACHMENT_SIZE_BYTES = 25 * 1024 * 1024;
180
- var MAX_SERVER_ICON_SIZE_BYTES = 5 * 1024 * 1024;
181
- var MAX_ICON_SOURCE_FILE_SIZE_BYTES = 15 * 1024 * 1024;
182
100
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
183
101
  var exports_external = {};
184
102
  __export(exports_external, {
@@ -14455,941 +14373,90 @@ function date4(params) {
14455
14373
 
14456
14374
  // ../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js
14457
14375
  config(en_default());
14458
- // ../shared/src/utils/slug.ts
14459
- init_nanoid();
14460
- var slugId = customAlphabet("0123456789abcdefghijklmnopqrstuvwxyz");
14461
- function sanitizeSlug(input) {
14462
- return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60).replace(/-+$/g, "");
14376
+ // ../shared/src/db/community-machine-schema.ts
14377
+ var exports_community_machine_schema = {};
14378
+ __export(exports_community_machine_schema, {
14379
+ communityMachineToken: () => communityMachineToken,
14380
+ communityMachineCredential: () => communityMachineCredential,
14381
+ communityMachine: () => communityMachine,
14382
+ communityDiagnosticReport: () => communityDiagnosticReport,
14383
+ communityBotBinding: () => communityBotBinding,
14384
+ communityAgentRunnerKey: () => communityAgentRunnerKey,
14385
+ DIAGNOSTIC_REPORT_FAILURE_CODES: () => DIAGNOSTIC_REPORT_FAILURE_CODES
14386
+ });
14387
+
14388
+ // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/entity.js
14389
+ var entityKind = Symbol.for("drizzle:entityKind");
14390
+ var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
14391
+ function is(value, type) {
14392
+ if (!value || typeof value !== "object") {
14393
+ return false;
14394
+ }
14395
+ if (value instanceof type) {
14396
+ return true;
14397
+ }
14398
+ if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {
14399
+ throw new Error(`Class "${type.name ?? "<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);
14400
+ }
14401
+ let cls = Object.getPrototypeOf(value).constructor;
14402
+ if (cls) {
14403
+ while (cls) {
14404
+ if (entityKind in cls && cls[entityKind] === type[entityKind]) {
14405
+ return true;
14406
+ }
14407
+ cls = Object.getPrototypeOf(cls);
14408
+ }
14409
+ }
14410
+ return false;
14463
14411
  }
14464
14412
 
14465
- // ../shared/src/lib/community-name.ts
14466
- var FORBIDDEN_NAME_CHARS = /[#@\x00-\x1f\x7f-\x9f]/;
14467
- function validateCommunityName(name) {
14468
- const trimmed = name.trim();
14469
- if (!trimmed)
14470
- return { ok: false, reason: "name cannot be empty" };
14471
- if (trimmed.length > MAX_PROFILE_NAME_LENGTH) {
14472
- return { ok: false, reason: `name must be ≤ ${MAX_PROFILE_NAME_LENGTH} characters` };
14413
+ // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/column.js
14414
+ class Column {
14415
+ constructor(table, config2) {
14416
+ this.table = table;
14417
+ this.config = config2;
14418
+ this.name = config2.name;
14419
+ this.keyAsName = config2.keyAsName;
14420
+ this.notNull = config2.notNull;
14421
+ this.default = config2.default;
14422
+ this.defaultFn = config2.defaultFn;
14423
+ this.onUpdateFn = config2.onUpdateFn;
14424
+ this.hasDefault = config2.hasDefault;
14425
+ this.primary = config2.primaryKey;
14426
+ this.isUnique = config2.isUnique;
14427
+ this.uniqueName = config2.uniqueName;
14428
+ this.uniqueType = config2.uniqueType;
14429
+ this.dataType = config2.dataType;
14430
+ this.columnType = config2.columnType;
14431
+ this.generated = config2.generated;
14432
+ this.generatedIdentity = config2.generatedIdentity;
14473
14433
  }
14474
- if (FORBIDDEN_NAME_CHARS.test(trimmed)) {
14475
- return { ok: false, reason: "name cannot contain #, @, or line breaks" };
14476
- }
14477
- return { ok: true };
14478
- }
14479
-
14480
- // ../shared/src/schemas.ts
14481
- var TaskStatusSchema = exports_external.enum([
14482
- "queued",
14483
- "dispatched",
14484
- "running",
14485
- "completed",
14486
- "failed",
14487
- "cancelled",
14488
- "superseded"
14489
- ]);
14490
- var ClaimedTaskRowSchema = exports_external.object({
14491
- id: exports_external.string(),
14492
- agentId: exports_external.string(),
14493
- runtimeId: exports_external.string(),
14494
- workspaceId: exports_external.string(),
14495
- conversationId: exports_external.string(),
14496
- prompt: exports_external.string(),
14497
- status: exports_external.string(),
14498
- priority: exports_external.coerce.number(),
14499
- result: exports_external.unknown().nullable(),
14500
- context: exports_external.unknown().nullable(),
14501
- type: exports_external.string().default(TASK_TYPES.USER_DM_MESSAGE),
14502
- contextKey: exports_external.string().nullable().optional(),
14503
- sessionId: exports_external.string().nullable(),
14504
- createdAt: exports_external.coerce.date(),
14505
- dispatchedAt: exports_external.coerce.date().nullable(),
14506
- startedAt: exports_external.coerce.date().nullable(),
14507
- completedAt: exports_external.coerce.date().nullable(),
14508
- error: exports_external.string().nullable(),
14509
- traceId: exports_external.string().nullable().optional(),
14510
- parentTaskId: exports_external.string().nullable().optional()
14511
- });
14512
- var ColleagueDataApiSchema = exports_external.object({
14513
- name: exports_external.string(),
14514
- email: exports_external.string(),
14515
- description: exports_external.string(),
14516
- instruction: exports_external.string()
14517
- });
14518
- var TaskAgentDataApiSchema = exports_external.object({
14519
- instructions: exports_external.string(),
14520
- name: exports_external.string(),
14521
- runtime_config: exports_external.record(exports_external.string(), exports_external.unknown()).default({}),
14522
- email_handle: exports_external.string().nullable().optional(),
14523
- email_addresses: exports_external.array(exports_external.string()).default([]),
14524
- user_email: exports_external.string().nullable().optional(),
14525
- user_name: exports_external.string().nullable().optional(),
14526
- colleagues: exports_external.array(ColleagueDataApiSchema).default([])
14527
- });
14528
- var TaskApiBaseSchema = exports_external.object({
14529
- id: exports_external.string(),
14530
- agent_id: exports_external.string(),
14531
- runtime_id: exports_external.string(),
14532
- conversation_id: exports_external.string(),
14533
- workspace_id: exports_external.string(),
14534
- prompt: exports_external.string(),
14535
- status: exports_external.string(),
14536
- priority: exports_external.number(),
14537
- dispatched_at: exports_external.string().nullable(),
14538
- started_at: exports_external.string().nullable(),
14539
- completed_at: exports_external.string().nullable(),
14540
- result: exports_external.unknown().nullable(),
14541
- error: exports_external.string().nullable(),
14542
- created_at: exports_external.string(),
14543
- type: exports_external.string(),
14544
- context_key: exports_external.string().nullable().optional(),
14545
- context: exports_external.unknown().nullable().optional(),
14546
- trace_id: exports_external.string().nullable().optional(),
14547
- parent_task_id: exports_external.string().nullable().optional(),
14548
- channel: exports_external.string().nullable().optional()
14549
- });
14550
- var TaskSenderApiSchema = exports_external.object({
14551
- name: exports_external.string(),
14552
- email: exports_external.string(),
14553
- is_owner: exports_external.boolean()
14554
- });
14555
- var TaskApiSchema = TaskApiBaseSchema.extend({
14556
- agent: TaskAgentDataApiSchema.nullable().optional(),
14557
- sender: TaskSenderApiSchema.nullable().optional()
14558
- });
14559
- var HeartbeatRequestSchema = exports_external.object({
14560
- daemon_id: exports_external.string().min(1)
14561
- });
14562
- var PollRequestSchema = exports_external.object({
14563
- daemon_id: exports_external.string().min(1),
14564
- max_tasks: exports_external.number().int().min(1).default(1),
14565
- cli_version: exports_external.string().optional()
14566
- });
14567
- var FileRequestItemSchema = exports_external.object({
14568
- id: exports_external.string(),
14569
- agent_id: exports_external.string(),
14570
- request_type: exports_external.enum(["tree", "read"]),
14571
- path: exports_external.string()
14572
- });
14573
- var PollMeetingItemSchema = exports_external.object({
14574
- id: exports_external.string(),
14575
- meeting_url: exports_external.string(),
14576
- participants: exports_external.array(exports_external.string()),
14577
- workspace_id: exports_external.string(),
14578
- agent_id: exports_external.string(),
14579
- agent_name: exports_external.string(),
14580
- title: exports_external.string().optional()
14581
- });
14582
- var PollResponseSchema = exports_external.object({
14583
- tasks: exports_external.array(TaskApiSchema),
14584
- evicted: exports_external.boolean().optional(),
14585
- pending_update: exports_external.object({ version: exports_external.string() }).optional(),
14586
- pending_rescan: exports_external.boolean().optional(),
14587
- file_requests: exports_external.array(FileRequestItemSchema).optional(),
14588
- meetings: exports_external.array(PollMeetingItemSchema).optional()
14589
- });
14590
- var DaemonPushMessageSchema = exports_external.discriminatedUnion("type", [
14591
- exports_external.object({ type: exports_external.literal("daemon.tasks"), tasks: exports_external.array(TaskApiSchema) }),
14592
- exports_external.object({ type: exports_external.literal("daemon.file_requests"), workspaceId: exports_external.string(), requests: exports_external.array(FileRequestItemSchema) }),
14593
- exports_external.object({ type: exports_external.literal("daemon.meetings"), meetings: exports_external.array(PollMeetingItemSchema) }),
14594
- exports_external.object({ type: exports_external.literal("daemon.evict"), workspaceId: exports_external.string() }),
14595
- exports_external.object({ type: exports_external.literal("daemon.update"), version: exports_external.string() }),
14596
- exports_external.object({ type: exports_external.literal("daemon.rescan") }),
14597
- exports_external.object({ type: exports_external.literal("daemon.kill"), workspaceId: exports_external.string(), agentId: exports_external.string().min(1), taskId: exports_external.string(), targetTaskId: exports_external.string() })
14598
- ]);
14599
- var RegisterResponseSchema = exports_external.object({
14600
- runtimes: exports_external.array(exports_external.object({ id: exports_external.string() }))
14601
- });
14602
- var DaemonRuntimeItemSchema = exports_external.object({
14603
- type: exports_external.string().optional(),
14604
- provider: exports_external.string().optional(),
14605
- runtime_mode: exports_external.string().optional(),
14606
- version: exports_external.string().optional(),
14607
- status: exports_external.string().optional(),
14608
- model: exports_external.string().optional()
14609
- });
14610
- var ActivateTokenRuntimeSchema = exports_external.object({
14611
- type: exports_external.string().min(1),
14612
- version: exports_external.string().optional().default("")
14613
- });
14614
- var ActivateTokenRequestSchema = exports_external.object({
14615
- token: exports_external.string().min(1),
14616
- hostname: exports_external.string().min(1),
14617
- runtimes: exports_external.array(ActivateTokenRuntimeSchema).min(1)
14618
- });
14619
- var RegisterDaemonRequestSchema = exports_external.object({
14620
- workspace_id: exports_external.string().min(1).optional(),
14621
- daemon_id: exports_external.string().min(1),
14622
- device_name: exports_external.string().optional().default(""),
14623
- cli_version: exports_external.string().optional().default(""),
14624
- workspaces_root: exports_external.string().optional().default(""),
14625
- runtimes: exports_external.array(DaemonRuntimeItemSchema).min(1)
14626
- });
14627
- var DeregisterRequestSchema = exports_external.object({
14628
- daemon_id: exports_external.string().min(1)
14629
- });
14630
- var CompleteTaskRequestSchema = exports_external.object({
14631
- output: exports_external.string().optional(),
14632
- session_id: exports_external.string().optional(),
14633
- branch_name: exports_external.string().optional()
14634
- });
14635
- var FailTaskRequestSchema = exports_external.object({
14636
- error: exports_external.string().optional().default("")
14637
- });
14638
- var MessageItemSchema = exports_external.object({
14639
- seq: exports_external.number(),
14640
- type: exports_external.string(),
14641
- tool: exports_external.string().optional(),
14642
- call_id: exports_external.string().optional(),
14643
- content: exports_external.string().optional(),
14644
- input: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
14645
- output: exports_external.string().optional()
14646
- });
14647
- var ReportMessagesRequestSchema = exports_external.object({
14648
- messages: exports_external.array(MessageItemSchema)
14649
- });
14650
- var RepeatIntervalSchema = exports_external.string().regex(/^\d+(min|hour|day|week|month)$/, {
14651
- message: "repeat_interval must match <positive_integer><min|hour|day|week|month>"
14652
- });
14653
- var CreateCalendarEventRequestSchema = exports_external.object({
14654
- agent_id: exports_external.string().min(1),
14655
- title: exports_external.string().min(1),
14656
- description: exports_external.string().max(20000).optional(),
14657
- scheduled_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
14658
- message: "scheduled_at must be a valid ISO datetime"
14659
- }),
14660
- repeat_interval: RepeatIntervalSchema.optional(),
14661
- repeat_stop_date: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
14662
- conversation_id: exports_external.string().optional()
14663
- }).refine((data) => !data.repeat_stop_date || !!data.repeat_interval, {
14664
- message: "repeat_stop_date requires repeat_interval",
14665
- path: ["repeat_stop_date"]
14666
- });
14667
- var UpdateCalendarEventRequestSchema = exports_external.object({
14668
- title: exports_external.string().min(1).optional(),
14669
- description: exports_external.string().max(20000).nullable().optional(),
14670
- agent_id: exports_external.string().min(1).optional(),
14671
- scheduled_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
14672
- message: "scheduled_at must be a valid ISO datetime"
14673
- }).optional(),
14674
- repeat_interval: RepeatIntervalSchema.nullable().optional(),
14675
- repeat_stop_date: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
14676
- scope: exports_external.enum(["this", "following"]).optional(),
14677
- occurrence_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
14678
- message: "occurrence_at must be a valid ISO datetime"
14679
- }).optional()
14680
- }).refine((v) => v.title !== undefined || v.description !== undefined || v.agent_id !== undefined || v.scheduled_at !== undefined || v.repeat_interval !== undefined || v.repeat_stop_date !== undefined, { message: "at least one field is required" });
14681
- var DeleteCalendarEventRequestSchema = exports_external.object({
14682
- scope: exports_external.enum(["this", "following"]).optional(),
14683
- occurrence_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
14684
- message: "occurrence_at must be a valid ISO datetime"
14685
- }).optional()
14686
- });
14687
- var CalendarEventApiSchema = exports_external.object({
14688
- id: exports_external.string(),
14689
- agent_id: exports_external.string(),
14690
- workspace_id: exports_external.string(),
14691
- title: exports_external.string(),
14692
- description: exports_external.string().nullable(),
14693
- scheduled_at: exports_external.string(),
14694
- occurrence_at: exports_external.string(),
14695
- collapsed_count: exports_external.number().nullable().optional(),
14696
- repeat_interval: exports_external.string().nullable(),
14697
- repeat_stop_at: exports_external.string().nullable(),
14698
- last_triggered_at: exports_external.string().nullable(),
14699
- created_at: exports_external.string(),
14700
- updated_at: exports_external.string()
14701
- });
14702
- var IssueStatusSchema = exports_external.enum([
14703
- IssueStatus.TODO,
14704
- IssueStatus.IN_PROGRESS,
14705
- IssueStatus.REVIEW,
14706
- IssueStatus.DONE,
14707
- IssueStatus.CLOSED,
14708
- IssueStatus.CANCELED,
14709
- IssueStatus.FAILED
14710
- ]);
14711
- var CreateIssueRequestSchema = exports_external.object({
14712
- agent_id: exports_external.string().min(1).optional(),
14713
- title: exports_external.string().min(1, "title is required").max(200),
14714
- description: exports_external.string().max(20000).optional().default("")
14715
- });
14716
- var UpdateIssueRequestSchema = exports_external.object({
14717
- title: exports_external.string().min(1).max(200).optional(),
14718
- description: exports_external.string().max(20000).optional(),
14719
- status: IssueStatusSchema.optional(),
14720
- agent_id: exports_external.string().min(1).optional()
14721
- }).refine((v) => v.title !== undefined || v.description !== undefined || v.status !== undefined || v.agent_id !== undefined, { message: "at least one field is required" });
14722
- var CreateIssueCommentBodySchema = exports_external.object({
14723
- content: exports_external.string().min(1, "content is required").max(20000)
14724
- });
14725
- var IssueCommentApiSchema = exports_external.object({
14726
- id: exports_external.string(),
14727
- issue_id: exports_external.string(),
14728
- workspace_id: exports_external.string(),
14729
- author_type: exports_external.enum(["user", "agent"]),
14730
- author_id: exports_external.string(),
14731
- content: exports_external.string(),
14732
- created_at: exports_external.string()
14733
- });
14734
- var IssueApiSchema = exports_external.object({
14735
- id: exports_external.string(),
14736
- workspace_id: exports_external.string(),
14737
- agent_id: exports_external.string().nullable(),
14738
- creator_user_id: exports_external.string(),
14739
- conversation_id: exports_external.string().nullable(),
14740
- latest_task_id: exports_external.string().nullable(),
14741
- title: exports_external.string(),
14742
- description: exports_external.string(),
14743
- status: IssueStatusSchema,
14744
- created_at: exports_external.string(),
14745
- updated_at: exports_external.string(),
14746
- completed_at: exports_external.string().nullable()
14747
- });
14748
- var CreateAgentLinkRequestSchema = exports_external.object({
14749
- source_agent_id: exports_external.string().min(1, "source_agent_id is required"),
14750
- target_agent_id: exports_external.string().min(1, "target_agent_id is required"),
14751
- instruction: exports_external.string().optional().default("")
14752
- });
14753
- var UpdateAgentLinkRequestSchema = exports_external.object({
14754
- instruction: exports_external.string()
14755
- });
14756
- var UpsertAgentLinkRequestSchema = exports_external.object({
14757
- target_agent_id: exports_external.string().min(1, "target_agent_id is required"),
14758
- instruction: exports_external.string()
14759
- });
14760
- var AddWhitelistRequestSchema = exports_external.object({
14761
- email: exports_external.string().email()
14762
- });
14763
- var RuntimeConfigSchema = exports_external.object({ model: exports_external.string().max(100).optional() }).passthrough().optional();
14764
- var CreateAgentRequestSchema = exports_external.object({
14765
- name: exports_external.string().min(1, "name is required"),
14766
- description: exports_external.string().optional().default(""),
14767
- instructions: exports_external.string().optional().default(""),
14768
- runtime_id: exports_external.string().min(1, "runtime_id is required"),
14769
- runtime_config: RuntimeConfigSchema,
14770
- max_concurrent_tasks: exports_external.number().int().optional(),
14771
- email_handle: exports_external.string().optional(),
14772
- avatar_url: exports_external.string().max(2000).nullable().optional()
14773
- });
14774
- var UpdateAgentRequestSchema = exports_external.object({
14775
- name: exports_external.string().min(1).optional(),
14776
- description: exports_external.string().optional(),
14777
- instructions: exports_external.string().optional(),
14778
- runtime_id: exports_external.string().min(1).optional(),
14779
- runtime_config: RuntimeConfigSchema,
14780
- visibility: exports_external.enum(["public", "private"]).optional(),
14781
- avatar_url: exports_external.string().max(2000).nullable().optional()
14782
- }).refine((v) => v.name !== undefined || v.description !== undefined || v.instructions !== undefined || v.runtime_id !== undefined || v.runtime_config !== undefined || v.visibility !== undefined || v.avatar_url !== undefined, { message: "at least one field is required" });
14783
- var CreateConversationRequestSchema = exports_external.object({
14784
- agent_id: exports_external.string().min(1, "agent_id is required"),
14785
- channel: exports_external.string().optional()
14786
- });
14787
- var CreateMessageRequestSchema = exports_external.object({
14788
- content: exports_external.string().min(1, "content is required"),
14789
- metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
14790
- });
14791
- var AgentDmRequestSchema = exports_external.object({
14792
- content: exports_external.string().min(1, "content is required"),
14793
- task_id: exports_external.string().min(1).optional()
14794
- });
14795
- var EmailAttachmentSchema = exports_external.object({
14796
- key: exports_external.string().min(1),
14797
- filename: exports_external.string().min(1),
14798
- size: exports_external.number().int().nonnegative().optional(),
14799
- contentType: exports_external.string().min(1)
14800
- });
14801
- var SendEmailRequestSchema = exports_external.object({
14802
- agentId: exports_external.string().min(1, "agentId is required"),
14803
- to: exports_external.string().min(1, "to is required"),
14804
- subject: exports_external.string().min(1, "subject is required"),
14805
- htmlBody: exports_external.string().default(""),
14806
- inReplyTo: exports_external.string().optional(),
14807
- references: exports_external.string().optional(),
14808
- attachments: exports_external.array(EmailAttachmentSchema).optional(),
14809
- customAccountId: exports_external.string().optional(),
14810
- from: exports_external.string().email().optional(),
14811
- conversationId: exports_external.string().optional(),
14812
- traceId: exports_external.string().optional(),
14813
- sourceTaskId: exports_external.string().optional()
14814
- });
14815
- var UpdateEmailStatusRequestSchema = exports_external.object({
14816
- status: exports_external.enum(["unread", "read", "archived", "sent"])
14817
- });
14818
- var MeetingInfoSchema = exports_external.object({
14819
- title: exports_external.string(),
14820
- meetingUrl: exports_external.string(),
14821
- startTime: exports_external.string().nullable(),
14822
- endTime: exports_external.string().nullable(),
14823
- attendees: exports_external.array(exports_external.object({ name: exports_external.string(), email: exports_external.string() }))
14824
- });
14825
- var EmailNotifyRequestSchema = exports_external.object({
14826
- agentId: exports_external.string().min(1),
14827
- workspaceId: exports_external.string().min(1),
14828
- r2Key: exports_external.string().min(1),
14829
- from: exports_external.string().min(1),
14830
- to: exports_external.string().optional(),
14831
- subject: exports_external.string(),
14832
- isWhitelisted: exports_external.boolean(),
14833
- forwarded: exports_external.boolean().optional().default(false),
14834
- messageId: exports_external.string().optional().default(""),
14835
- inReplyTo: exports_external.string().optional().default(""),
14836
- references: exports_external.string().optional().default(""),
14837
- meetingInfo: MeetingInfoSchema.nullable().optional(),
14838
- attachments: exports_external.string().optional(),
14839
- traceId: exports_external.string().optional(),
14840
- sourceTaskId: exports_external.string().optional(),
14841
- isInternal: exports_external.boolean().optional().default(false),
14842
- senderConversationId: exports_external.string().optional(),
14843
- senderAgentId: exports_external.string().optional()
14844
- });
14845
- var CreateEmailAccountSchema = exports_external.object({
14846
- emailAddress: exports_external.string().email("valid email required"),
14847
- displayName: exports_external.string().default(""),
14848
- imapHost: exports_external.string().min(1, "IMAP host is required"),
14849
- imapPort: exports_external.number().int().min(1).max(65535).default(993),
14850
- imapUsername: exports_external.string().min(1, "IMAP username is required"),
14851
- imapPassword: exports_external.string().min(1, "IMAP password is required"),
14852
- imapTls: exports_external.boolean().default(true),
14853
- smtpHost: exports_external.string().min(1, "SMTP host is required"),
14854
- smtpPort: exports_external.number().int().min(1).max(65535).default(587),
14855
- smtpUsername: exports_external.string().min(1, "SMTP username is required"),
14856
- smtpPassword: exports_external.string().min(1, "SMTP password is required"),
14857
- smtpTls: exports_external.number().int().min(0).max(2).default(1),
14858
- pollIntervalSeconds: exports_external.number().int().min(30).max(3600).default(60)
14859
- });
14860
- var UpdateEmailAccountSchema = exports_external.object({
14861
- emailAddress: exports_external.string().email().optional(),
14862
- displayName: exports_external.string().optional(),
14863
- imapHost: exports_external.string().min(1).optional(),
14864
- imapPort: exports_external.number().int().min(1).max(65535).optional(),
14865
- imapUsername: exports_external.string().min(1).optional(),
14866
- imapPassword: exports_external.string().min(1).optional(),
14867
- imapTls: exports_external.boolean().optional(),
14868
- smtpHost: exports_external.string().min(1).optional(),
14869
- smtpPort: exports_external.number().int().min(1).max(65535).optional(),
14870
- smtpUsername: exports_external.string().min(1).optional(),
14871
- smtpPassword: exports_external.string().min(1).optional(),
14872
- smtpTls: exports_external.number().int().min(0).max(2).optional(),
14873
- pollIntervalSeconds: exports_external.number().int().min(30).max(3600).optional()
14874
- });
14875
- var TestEmailConnectionSchema = exports_external.object({
14876
- imapHost: exports_external.string().min(1),
14877
- imapPort: exports_external.number().int().min(1).max(65535).default(993),
14878
- imapUsername: exports_external.string().min(1),
14879
- imapPassword: exports_external.string().min(1),
14880
- imapTls: exports_external.boolean().default(true),
14881
- smtpHost: exports_external.string().min(1),
14882
- smtpPort: exports_external.number().int().min(1).max(65535).default(587),
14883
- smtpUsername: exports_external.string().min(1),
14884
- smtpPassword: exports_external.string().min(1),
14885
- smtpTls: exports_external.number().int().min(0).max(2).default(1)
14886
- });
14887
- var UpdateMemberRequestSchema = exports_external.object({
14888
- global_instruction: exports_external.string().max(50000).trim()
14889
- });
14890
- var CreateWorkspaceRequestSchema = exports_external.object({
14891
- name: exports_external.string().min(1, "name is required"),
14892
- slug: exports_external.string().optional().default("").transform(sanitizeSlug)
14893
- });
14894
- var UpdateWorkspaceRequestSchema = exports_external.object({
14895
- name: exports_external.string().min(1, "name is required").max(100).trim().optional(),
14896
- slug: exports_external.string().min(1, "slug is required").trim().toLowerCase().transform(sanitizeSlug).optional()
14897
- });
14898
- var DeleteWorkspaceRequestSchema = exports_external.object({
14899
- confirm_name: exports_external.string().min(1, "confirm_name is required")
14900
- });
14901
- var GrantAgentAccessRequestSchema = exports_external.object({
14902
- user_id: exports_external.string().min(1, "user_id is required")
14903
- });
14904
- var WorkspaceFileBrowseRequestSchema = exports_external.object({
14905
- request_type: exports_external.enum(["tree", "read"]),
14906
- path: exports_external.string().default(".")
14907
- });
14908
- var WorkspaceFileEntrySchema = exports_external.object({
14909
- name: exports_external.string(),
14910
- path: exports_external.string(),
14911
- isDirectory: exports_external.boolean(),
14912
- size: exports_external.number(),
14913
- modifiedAt: exports_external.string()
14914
- });
14915
- var WorkspaceFileReportSchema = exports_external.object({
14916
- request_id: exports_external.string().min(1),
14917
- entries: exports_external.array(WorkspaceFileEntrySchema).optional(),
14918
- content: exports_external.string().nullable().optional(),
14919
- isBinary: exports_external.boolean().optional(),
14920
- error: exports_external.string().optional(),
14921
- path: exports_external.string()
14922
- });
14923
- var SkillEntrySchema = exports_external.object({
14924
- name: exports_external.string(),
14925
- description: exports_external.string(),
14926
- isGlobal: exports_external.boolean().optional()
14927
- });
14928
- var SkillItemSchema = exports_external.object({
14929
- name: exports_external.string(),
14930
- description: exports_external.string()
14931
- });
14932
- var SkillSyncRequestSchema = exports_external.object({
14933
- scope: exports_external.enum(["global", "agent"]),
14934
- agent_id: exports_external.string().min(1).optional(),
14935
- daemon_id: exports_external.string().min(1).optional(),
14936
- runtime: exports_external.enum(["claude", "codex", "opencode"]),
14937
- skills: exports_external.array(SkillItemSchema)
14938
- });
14939
- var StudioMemberSchema = exports_external.object({
14940
- name: exports_external.string().optional(),
14941
- role: exports_external.enum(["leader", "researcher", "engineer", "assistant"]),
14942
- runtime_id: exports_external.string().min(1, "runtime_id is required"),
14943
- runtime_config: exports_external.object({ model: exports_external.string().max(100).optional() }).passthrough().optional(),
14944
- description: exports_external.string().optional().default(""),
14945
- instructions: exports_external.string().optional().default(""),
14946
- avatar_url: exports_external.string().max(2000).nullable().optional(),
14947
- email_handle: exports_external.string().max(30).optional(),
14948
- relationship: exports_external.string().optional()
14949
- });
14950
- var CreateStudioRequestSchema = exports_external.object({
14951
- name: exports_external.string().max(100).optional(),
14952
- scenario: exports_external.string().max(50).optional(),
14953
- members: exports_external.array(StudioMemberSchema).min(1).max(4)
14954
- }).refine((v) => v.members.some((m) => m.role === "leader"), { message: "at least one member must have the leader role" });
14955
- var RecruitAgentRequestSchema = exports_external.object({
14956
- instructions: exports_external.string().min(1, "instructions is required"),
14957
- relationship: exports_external.string().min(1, "relationship is required"),
14958
- name: exports_external.string().optional(),
14959
- description: exports_external.string().optional().default(""),
14960
- model: exports_external.string().max(100).optional(),
14961
- context_key: exports_external.string().optional()
14962
- });
14963
- var CreateThreadRequestSchema = exports_external.object({
14964
- parent_message_id: exports_external.string().min(1),
14965
- content: exports_external.string().optional().default(""),
14966
- attachment_ids: exports_external.array(exports_external.string()).optional()
14967
- });
14968
- var COMMUNITY_RUNTIME_ID_MAX = 64;
14969
- var COMMUNITY_RUNTIME_VERSION_MAX = 64;
14970
- var COMMUNITY_RUNTIME_LIST_MAX = 64;
14971
- var RUNTIME_ID_RE = /^[A-Za-z0-9._@/-]+$/;
14972
- var CommunityMachineRuntimeSchema = exports_external.object({
14973
- id: exports_external.string().min(1).max(COMMUNITY_RUNTIME_ID_MAX).regex(RUNTIME_ID_RE, "invalid runtime id charset"),
14974
- version: exports_external.string().max(COMMUNITY_RUNTIME_VERSION_MAX).optional(),
14975
- status: exports_external.enum(["healthy", "unhealthy"]).catch("healthy").default("healthy"),
14976
- lastError: exports_external.string().max(128).optional(),
14977
- lastErrorAt: exports_external.string().optional()
14978
- });
14979
- var CommunityMachineRuntimeListSchema = exports_external.array(CommunityMachineRuntimeSchema).max(COMMUNITY_RUNTIME_LIST_MAX).transform((list) => {
14980
- const seen = new Set;
14981
- const out = [];
14982
- for (const r of list) {
14983
- if (seen.has(r.id))
14984
- continue;
14985
- seen.add(r.id);
14986
- out.push(r);
14987
- }
14988
- return out;
14989
- });
14990
- var CommunityMachineSummarySchema = exports_external.object({
14991
- id: exports_external.string(),
14992
- hostname: exports_external.string(),
14993
- displayName: exports_external.string(),
14994
- platform: exports_external.string(),
14995
- arch: exports_external.string(),
14996
- osRelease: exports_external.string(),
14997
- daemonVersion: exports_external.string(),
14998
- lastSeenAt: exports_external.string().nullable(),
14999
- status: exports_external.enum(["online", "offline"]),
15000
- availableRuntimes: exports_external.array(CommunityMachineRuntimeSchema).default([]),
15001
- lastRuntimeError: exports_external.object({
15002
- requested: exports_external.string(),
15003
- available: exports_external.array(exports_external.string()),
15004
- at: exports_external.string()
15005
- }).optional(),
15006
- createdAt: exports_external.string(),
15007
- updatedAt: exports_external.string()
15008
- });
15009
- var HostReadyMessageSchema = exports_external.object({
15010
- type: exports_external.literal("ready"),
15011
- runtimeReport: CommunityMachineRuntimeListSchema,
15012
- runningAgents: exports_external.array(exports_external.string()).default([]),
15013
- hostname: exports_external.string().optional(),
15014
- platform: exports_external.string().optional(),
15015
- arch: exports_external.string().optional(),
15016
- osRelease: exports_external.string().optional(),
15017
- daemonVersion: exports_external.string().optional()
15018
- });
15019
- var CommunityDaemonReadySchema = exports_external.object({
15020
- runtimeReport: CommunityMachineRuntimeListSchema.optional(),
15021
- runningAgents: exports_external.array(exports_external.string()).default([]),
15022
- hostname: exports_external.string().optional(),
15023
- os: exports_external.string().optional(),
15024
- arch: exports_external.string().optional(),
15025
- osRelease: exports_external.string().optional(),
15026
- daemonVersion: exports_external.string().optional()
15027
- });
15028
- var SessionErrorFrameSchema = exports_external.object({
15029
- type: exports_external.literal("session.error"),
15030
- code: exports_external.enum(["runtime_not_available"]),
15031
- agentId: exports_external.string().optional(),
15032
- launchId: exports_external.string().optional(),
15033
- payload: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
15034
- });
15035
- var AgentActivityMessageSchema = exports_external.object({
15036
- type: exports_external.literal("agent_activity"),
15037
- agentId: exports_external.string(),
15038
- state: exports_external.enum(["idle", "starting", "running", "stopping"])
15039
- });
15040
- var AgentTypingMessageSchema = exports_external.object({
15041
- type: exports_external.literal("agent_typing"),
15042
- agentId: exports_external.string(),
15043
- channelId: exports_external.string().min(1)
15044
- });
15045
- var AgentTypingStopMessageSchema = exports_external.object({
15046
- type: exports_external.literal("agent_typing_stop"),
15047
- agentId: exports_external.string(),
15048
- channelId: exports_external.string().min(1)
15049
- });
15050
- var AgentSessionMessageSchema = exports_external.object({
15051
- type: exports_external.literal("agent_session"),
15052
- agentId: exports_external.string().min(1),
15053
- sessionId: exports_external.string().min(1),
15054
- launchId: exports_external.string().min(1)
15055
- });
15056
- var AgentWakeAckMessageSchema = exports_external.object({
15057
- type: exports_external.literal("agent_wake_ack"),
15058
- agentId: exports_external.string().min(1),
15059
- launchId: exports_external.string().min(1),
15060
- status: exports_external.enum(["ok", "error"]),
15061
- error: exports_external.object({ code: exports_external.string().optional(), message: exports_external.string().optional() }).optional()
15062
- });
15063
- var CommunityPairTokenResponseSchema = exports_external.object({
15064
- tokenId: exports_external.string(),
15065
- expiresAt: exports_external.string()
15066
- });
15067
- var CommunityDaemonActivateRequestSchema = exports_external.object({
15068
- hostname: exports_external.string(),
15069
- platform: exports_external.string(),
15070
- arch: exports_external.string(),
15071
- osRelease: exports_external.string().optional(),
15072
- daemonVersion: exports_external.string().optional(),
15073
- runtimeReport: CommunityMachineRuntimeListSchema.optional()
15074
- });
15075
- var CommunityDaemonActivateResponseSchema = exports_external.object({
15076
- credential: exports_external.string(),
15077
- machineId: exports_external.string(),
15078
- expiresAt: exports_external.string().nullable()
15079
- });
15080
- var CommunityDaemonEnrollAgentRequestSchema = exports_external.object({
15081
- agentId: exports_external.string().min(1).max(128)
15082
- });
15083
- var CommunityDaemonEnrollAgentResponseSchema = exports_external.object({
15084
- runnerKey: exports_external.string(),
15085
- expiresAt: exports_external.string().nullable()
15086
- });
15087
- var isMentionSafeName = (name) => validateCommunityName(name).ok;
15088
- var MENTION_SAFE_NAME_MSG = "name cannot contain #, @, or line breaks";
15089
- var BOT_AVATAR_ROUTE_PATTERN = /^\/api\/community\/bots\/[A-Za-z0-9_-]+\/avatar$/;
15090
- var BotImageUrlSchema = exports_external.string().max(COMMUNITY_BOT_IMAGE_URL_MAX).refine((v) => v.startsWith("https://") || v.startsWith("avatar:") || BOT_AVATAR_ROUTE_PATTERN.test(v), {
15091
- message: "image must be an https URL, the bot avatar route, or an avatar: config"
15092
- });
15093
- var CommunityBotCreateRequestSchema = exports_external.object({
15094
- name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }),
15095
- description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
15096
- machineId: exports_external.string().min(1),
15097
- runtime: exports_external.string().min(1),
15098
- image: BotImageUrlSchema.optional(),
15099
- model: exports_external.string().trim().min(1).max(100).nullable().optional()
15100
- });
15101
- var CommunityBotPatchRequestSchema = exports_external.object({
15102
- name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }).optional(),
15103
- description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
15104
- image: BotImageUrlSchema.nullable().optional(),
15105
- model: exports_external.string().trim().min(1).max(100).nullable().optional(),
15106
- runtime: exports_external.string().trim().min(1).max(COMMUNITY_RUNTIME_ID_MAX).optional()
15107
- }).refine((v) => v.name !== undefined || v.description !== undefined || v.image !== undefined || v.runtime !== undefined || ("model" in v), {
15108
- message: "at least one field must be provided"
15109
- });
15110
- var CommunityBotAddToServerRequestSchema = exports_external.object({
15111
- botId: exports_external.string().min(1)
15112
- });
15113
- var CommunityAgentMessageContentSchema = exports_external.object({ text: exports_external.string().max(MAX_MESSAGE_CONTENT_LENGTH).default("") }).catchall(exports_external.unknown());
15114
- var CommunityAgentSeqSchema = exports_external.number().int().min(0);
15115
- var CommunityAgentPositiveSeqSchema = exports_external.number().int().min(1);
15116
- var CommunityAgentCursorSchema = exports_external.object({
15117
- channel: exports_external.string().min(1),
15118
- seq: CommunityAgentPositiveSeqSchema
15119
- });
15120
- var CommunityAgentSendRequestSchema = exports_external.object({
15121
- channel: exports_external.string().min(1),
15122
- content: CommunityAgentMessageContentSchema,
15123
- attachments: exports_external.array(exports_external.string().min(1)).max(MAX_ATTACHMENTS_PER_MESSAGE).default([]),
15124
- seenUpToSeq: CommunityAgentSeqSchema.optional(),
15125
- replyToSeq: CommunityAgentPositiveSeqSchema.optional(),
15126
- nonce: exports_external.string().min(1).max(128).optional()
15127
- }).refine((d) => d.content.text.trim().length > 0 || d.attachments.length > 0, { message: "message must have text or attachments" });
15128
- var CommunityAgentAttachmentUploadResponseSchema = exports_external.object({
15129
- id: exports_external.string(),
15130
- filename: exports_external.string(),
15131
- contentType: exports_external.string(),
15132
- size: exports_external.number()
15133
- });
15134
- var CommunityAgentAttachmentDownloadRequestSchema = exports_external.object({
15135
- id: exports_external.string().min(1)
15136
- });
15137
- var CommunityAgentInboxPullRequestSchema = exports_external.object({
15138
- max: exports_external.number().int().min(1).max(200).optional()
15139
- });
15140
- var CommunityAgentAckRequestSchema = exports_external.object({
15141
- cursors: exports_external.array(CommunityAgentCursorSchema).min(1)
15142
- });
15143
- var CommunityAgentReadRequestSchema = exports_external.object({
15144
- channel: exports_external.string().min(1),
15145
- before: CommunityAgentSeqSchema.optional(),
15146
- after: CommunityAgentSeqSchema.optional(),
15147
- around: CommunityAgentSeqSchema.optional(),
15148
- limit: exports_external.number().int().min(1).max(200).optional()
15149
- }).refine((v) => [v.before, v.after, v.around].filter((x) => x !== undefined).length <= 1, { message: "at most one of before/after/around may be supplied" });
15150
- var CommunityAgentResolveRequestSchema = exports_external.object({
15151
- channel: exports_external.string().min(1),
15152
- seq: CommunityAgentSeqSchema
15153
- });
15154
- var CommunityAgentListChannelsRequestSchema = exports_external.object({
15155
- server: exports_external.string().min(1).optional()
15156
- });
15157
- var CommunityAgentCreatePostRequestSchema = exports_external.object({
15158
- forum: exports_external.string().min(1),
15159
- title: exports_external.string().min(1),
15160
- content: CommunityAgentMessageContentSchema,
15161
- attachments: exports_external.array(exports_external.string().min(1)).max(MAX_ATTACHMENTS_PER_MESSAGE).default([]),
15162
- nonce: exports_external.string().min(1).max(128).optional()
15163
- }).refine((d) => d.content.text.trim().length > 0 || d.attachments.length > 0, { message: "post must have text or attachments" });
15164
- var CommunityAgentListMembersRequestSchema = exports_external.object({
15165
- server: exports_external.string().min(1),
15166
- limit: exports_external.number().int().positive().optional(),
15167
- cursor: exports_external.string().min(1).optional()
15168
- });
15169
- var CommunityAgentChannelMemberRequestSchema = exports_external.object({
15170
- channel: exports_external.string().min(1),
15171
- agentId: exports_external.string().optional()
15172
- });
15173
- var CommunityAgentJoinServerRequestSchema = exports_external.object({
15174
- invite: exports_external.string().min(1)
15175
- });
15176
- var CommunityAgentNapRequestSchema = exports_external.object({
15177
- handoff: exports_external.string().trim().min(1)
15178
- });
15179
- var CommunityAgentReactAddRequestSchema = exports_external.object({
15180
- channel: exports_external.string().min(1),
15181
- seq: CommunityAgentPositiveSeqSchema,
15182
- emoji: exports_external.string().min(1)
15183
- });
15184
- var CommunityAgentFriendRequestSchema = exports_external.object({
15185
- username: exports_external.string().min(1)
15186
- });
15187
- var CommunityAgentListFriendsSchema = exports_external.object({});
15188
- var AuditLogCliInvocationPayloadSchema = exports_external.object({
15189
- subcommand: exports_external.string().min(1)
15190
- });
15191
- var AuditLogToolCallPayloadSchema = exports_external.object({
15192
- name: exports_external.string().min(1),
15193
- target: exports_external.string().max(240).optional()
15194
- });
15195
- var AuditLogThinkingPayloadSchema = exports_external.object({
15196
- text: exports_external.string(),
15197
- truncated: exports_external.boolean(),
15198
- chars: exports_external.number().int().nonnegative()
15199
- });
15200
- var AuditLogWakeTriggerPayloadSchema = exports_external.object({
15201
- messageId: exports_external.string().min(1),
15202
- channel: exports_external.string().min(1),
15203
- seq: CommunityAgentPositiveSeqSchema,
15204
- senderId: exports_external.string().min(1),
15205
- senderHandle: exports_external.string().min(1),
15206
- reason: exports_external.enum(["unread", "mention"])
15207
- });
15208
- var AuditLogSessionResetPayloadSchema = exports_external.object({
15209
- trigger: exports_external.enum(["single", "reset_all"])
15210
- });
15211
- var AuditLogNapPayloadSchema = exports_external.object({
15212
- trigger: exports_external.literal("nap")
15213
- });
15214
- var AuditLogModelChangedPayloadSchema = exports_external.object({
15215
- from: exports_external.string().nullable(),
15216
- to: exports_external.string().nullable()
15217
- });
15218
- var AuditLogProviderChangedPayloadSchema = exports_external.object({
15219
- from: exports_external.string().min(1),
15220
- to: exports_external.string().min(1)
15221
- });
15222
- var AuditLogErrorPayloadSchema = exports_external.object({
15223
- scope: exports_external.enum(["spawn", "runtime", "exit", "handshake_timeout", "model_switch", "reset"]),
15224
- code: exports_external.string().min(1).max(120),
15225
- message: exports_external.string().max(2048),
15226
- model: exports_external.string().nullable()
15227
- });
15228
- var BotAuditEventSchema = exports_external.discriminatedUnion("kind", [
15229
- exports_external.object({ kind: exports_external.literal("cli_invocation"), payload: AuditLogCliInvocationPayloadSchema }),
15230
- exports_external.object({ kind: exports_external.literal("tool_call"), payload: AuditLogToolCallPayloadSchema }),
15231
- exports_external.object({ kind: exports_external.literal("thinking"), payload: AuditLogThinkingPayloadSchema }),
15232
- exports_external.object({ kind: exports_external.literal("wake_trigger"), payload: AuditLogWakeTriggerPayloadSchema }),
15233
- exports_external.object({ kind: exports_external.literal("session_reset"), payload: AuditLogSessionResetPayloadSchema }),
15234
- exports_external.object({ kind: exports_external.literal("nap"), payload: AuditLogNapPayloadSchema }),
15235
- exports_external.object({ kind: exports_external.literal("model_changed"), payload: AuditLogModelChangedPayloadSchema }),
15236
- exports_external.object({ kind: exports_external.literal("provider_changed"), payload: AuditLogProviderChangedPayloadSchema }),
15237
- exports_external.object({ kind: exports_external.literal("error"), payload: AuditLogErrorPayloadSchema })
15238
- ]);
15239
- var BotAuditEventKindSchema = exports_external.enum([
15240
- "cli_invocation",
15241
- "tool_call",
15242
- "thinking",
15243
- "wake_trigger",
15244
- "session_reset",
15245
- "nap",
15246
- "model_changed",
15247
- "provider_changed",
15248
- "error"
15249
- ]);
15250
- var HostBotAuditEventFrameSchema = exports_external.object({
15251
- type: exports_external.literal("bot_audit_event"),
15252
- agentId: exports_external.string().min(1),
15253
- sessionId: exports_external.string().nullable().optional(),
15254
- launchId: exports_external.string().nullable().optional(),
15255
- event: BotAuditEventSchema
15256
- });
15257
- // ../shared/src/community-cli-contract.ts
15258
- var HostCommandSchema = exports_external.discriminatedUnion("type", [
15259
- exports_external.object({
15260
- type: exports_external.literal("agent:wake"),
15261
- agentId: exports_external.string().min(1),
15262
- config: exports_external.unknown(),
15263
- sessionId: exports_external.string().optional(),
15264
- launchId: exports_external.string().min(1),
15265
- unreadNotice: exports_external.unknown()
15266
- }),
15267
- exports_external.object({
15268
- type: exports_external.literal("agent:stop"),
15269
- agentId: exports_external.string().min(1)
15270
- }),
15271
- exports_external.object({
15272
- type: exports_external.literal("agent:reset"),
15273
- agentId: exports_external.string().min(1),
15274
- config: exports_external.unknown(),
15275
- launchId: exports_external.string().min(1)
15276
- }),
15277
- exports_external.object({
15278
- type: exports_external.literal("agent:nap"),
15279
- agentId: exports_external.string().min(1),
15280
- config: exports_external.unknown(),
15281
- launchId: exports_external.string().min(1),
15282
- handoff: exports_external.string().min(1)
15283
- }),
15284
- exports_external.object({
15285
- type: exports_external.literal("agent:model_switch"),
15286
- agentId: exports_external.string().min(1),
15287
- config: exports_external.unknown(),
15288
- launchId: exports_external.string().min(1)
15289
- }),
15290
- exports_external.object({
15291
- type: exports_external.literal("machine:reset_all"),
15292
- resets: exports_external.array(exports_external.object({
15293
- agentId: exports_external.string().min(1),
15294
- config: exports_external.unknown(),
15295
- launchId: exports_external.string().min(1)
15296
- }))
15297
- }),
15298
- exports_external.object({
15299
- type: exports_external.literal("bot:added"),
15300
- botId: exports_external.string().min(1),
15301
- name: exports_external.string().optional(),
15302
- discriminator: exports_external.string().optional(),
15303
- description: exports_external.string().optional(),
15304
- ownerName: exports_external.string().optional(),
15305
- ownerDiscriminator: exports_external.string().optional()
15306
- }),
15307
- exports_external.object({
15308
- type: exports_external.literal("bot:updated"),
15309
- botId: exports_external.string().min(1),
15310
- name: exports_external.string().optional(),
15311
- discriminator: exports_external.string().optional(),
15312
- description: exports_external.string().optional(),
15313
- ownerName: exports_external.string().optional(),
15314
- ownerDiscriminator: exports_external.string().optional()
15315
- }),
15316
- exports_external.object({
15317
- type: exports_external.literal("bot:removed"),
15318
- botId: exports_external.string().min(1)
15319
- })
15320
- ]);
15321
- // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/entity.js
15322
- var entityKind = Symbol.for("drizzle:entityKind");
15323
- var hasOwnEntityKind = Symbol.for("drizzle:hasOwnEntityKind");
15324
- function is(value, type) {
15325
- if (!value || typeof value !== "object") {
15326
- return false;
15327
- }
15328
- if (value instanceof type) {
15329
- return true;
15330
- }
15331
- if (!Object.prototype.hasOwnProperty.call(type, entityKind)) {
15332
- throw new Error(`Class "${type.name ?? "<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);
15333
- }
15334
- let cls = Object.getPrototypeOf(value).constructor;
15335
- if (cls) {
15336
- while (cls) {
15337
- if (entityKind in cls && cls[entityKind] === type[entityKind]) {
15338
- return true;
15339
- }
15340
- cls = Object.getPrototypeOf(cls);
15341
- }
15342
- }
15343
- return false;
15344
- }
15345
-
15346
- // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/column.js
15347
- class Column {
15348
- constructor(table, config2) {
15349
- this.table = table;
15350
- this.config = config2;
15351
- this.name = config2.name;
15352
- this.keyAsName = config2.keyAsName;
15353
- this.notNull = config2.notNull;
15354
- this.default = config2.default;
15355
- this.defaultFn = config2.defaultFn;
15356
- this.onUpdateFn = config2.onUpdateFn;
15357
- this.hasDefault = config2.hasDefault;
15358
- this.primary = config2.primaryKey;
15359
- this.isUnique = config2.isUnique;
15360
- this.uniqueName = config2.uniqueName;
15361
- this.uniqueType = config2.uniqueType;
15362
- this.dataType = config2.dataType;
15363
- this.columnType = config2.columnType;
15364
- this.generated = config2.generated;
15365
- this.generatedIdentity = config2.generatedIdentity;
15366
- }
15367
- static [entityKind] = "Column";
15368
- name;
15369
- keyAsName;
15370
- primary;
15371
- notNull;
15372
- default;
15373
- defaultFn;
15374
- onUpdateFn;
15375
- hasDefault;
15376
- isUnique;
15377
- uniqueName;
15378
- uniqueType;
15379
- dataType;
15380
- columnType;
15381
- enumValues = undefined;
15382
- generated = undefined;
15383
- generatedIdentity = undefined;
15384
- config;
15385
- mapFromDriverValue(value) {
15386
- return value;
15387
- }
15388
- mapToDriverValue(value) {
15389
- return value;
15390
- }
15391
- shouldDisableInsert() {
15392
- return this.config.generated !== undefined && this.config.generated.type !== "byDefault";
14434
+ static [entityKind] = "Column";
14435
+ name;
14436
+ keyAsName;
14437
+ primary;
14438
+ notNull;
14439
+ default;
14440
+ defaultFn;
14441
+ onUpdateFn;
14442
+ hasDefault;
14443
+ isUnique;
14444
+ uniqueName;
14445
+ uniqueType;
14446
+ dataType;
14447
+ columnType;
14448
+ enumValues = undefined;
14449
+ generated = undefined;
14450
+ generatedIdentity = undefined;
14451
+ config;
14452
+ mapFromDriverValue(value) {
14453
+ return value;
14454
+ }
14455
+ mapToDriverValue(value) {
14456
+ return value;
14457
+ }
14458
+ shouldDisableInsert() {
14459
+ return this.config.generated !== undefined && this.config.generated.type !== "byDefault";
15393
14460
  }
15394
14461
  }
15395
14462
 
@@ -15987,6 +15054,94 @@ Subquery.prototype.getSQL = function() {
15987
15054
  return new SQL([this]);
15988
15055
  };
15989
15056
 
15057
+ // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/alias.js
15058
+ class ColumnAliasProxyHandler {
15059
+ constructor(table) {
15060
+ this.table = table;
15061
+ }
15062
+ static [entityKind] = "ColumnAliasProxyHandler";
15063
+ get(columnObj, prop) {
15064
+ if (prop === "table") {
15065
+ return this.table;
15066
+ }
15067
+ return columnObj[prop];
15068
+ }
15069
+ }
15070
+
15071
+ class TableAliasProxyHandler {
15072
+ constructor(alias, replaceOriginalName) {
15073
+ this.alias = alias;
15074
+ this.replaceOriginalName = replaceOriginalName;
15075
+ }
15076
+ static [entityKind] = "TableAliasProxyHandler";
15077
+ get(target, prop) {
15078
+ if (prop === Table.Symbol.IsAlias) {
15079
+ return true;
15080
+ }
15081
+ if (prop === Table.Symbol.Name) {
15082
+ return this.alias;
15083
+ }
15084
+ if (this.replaceOriginalName && prop === Table.Symbol.OriginalName) {
15085
+ return this.alias;
15086
+ }
15087
+ if (prop === ViewBaseConfig) {
15088
+ return {
15089
+ ...target[ViewBaseConfig],
15090
+ name: this.alias,
15091
+ isAlias: true
15092
+ };
15093
+ }
15094
+ if (prop === Table.Symbol.Columns) {
15095
+ const columns = target[Table.Symbol.Columns];
15096
+ if (!columns) {
15097
+ return columns;
15098
+ }
15099
+ const proxiedColumns = {};
15100
+ Object.keys(columns).map((key) => {
15101
+ proxiedColumns[key] = new Proxy(columns[key], new ColumnAliasProxyHandler(new Proxy(target, this)));
15102
+ });
15103
+ return proxiedColumns;
15104
+ }
15105
+ const value = target[prop];
15106
+ if (is(value, Column)) {
15107
+ return new Proxy(value, new ColumnAliasProxyHandler(new Proxy(target, this)));
15108
+ }
15109
+ return value;
15110
+ }
15111
+ }
15112
+
15113
+ // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/sqlite-core/alias.js
15114
+ function alias(table, alias2) {
15115
+ return new Proxy(table, new TableAliasProxyHandler(alias2, false));
15116
+ }
15117
+
15118
+ // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/sqlite-core/checks.js
15119
+ class CheckBuilder {
15120
+ constructor(name, value) {
15121
+ this.name = name;
15122
+ this.value = value;
15123
+ }
15124
+ static [entityKind] = "SQLiteCheckBuilder";
15125
+ brand;
15126
+ build(table) {
15127
+ return new Check(table, this);
15128
+ }
15129
+ }
15130
+
15131
+ class Check {
15132
+ constructor(table, builder) {
15133
+ this.table = table;
15134
+ this.name = builder.name;
15135
+ this.value = builder.value;
15136
+ }
15137
+ static [entityKind] = "SQLiteCheck";
15138
+ name;
15139
+ value;
15140
+ }
15141
+ function check2(name, value) {
15142
+ return new CheckBuilder(name, value);
15143
+ }
15144
+
15990
15145
  // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/utils.js
15991
15146
  function getColumnNameAndConfig(a, b) {
15992
15147
  return {
@@ -15996,35 +15151,6 @@ function getColumnNameAndConfig(a, b) {
15996
15151
  }
15997
15152
  var textDecoder = typeof TextDecoder === "undefined" ? null : new TextDecoder;
15998
15153
 
15999
- // ../shared/src/db/community-schema.ts
16000
- var exports_community_schema = {};
16001
- __export(exports_community_schema, {
16002
- communityUserProfile: () => communityUserProfile,
16003
- communityServerMember: () => communityServerMember,
16004
- communityServerInvite: () => communityServerInvite,
16005
- communityServerFolderItem: () => communityServerFolderItem,
16006
- communityServerFolder: () => communityServerFolder,
16007
- communityServer: () => communityServer,
16008
- communityReadState: () => communityReadState,
16009
- communityReaction: () => communityReaction,
16010
- communityPin: () => communityPin,
16011
- communityNotificationSetting: () => communityNotificationSetting,
16012
- communityMessageTag: () => communityMessageTag,
16013
- communityMessageSeq: () => communityMessageSeq,
16014
- communityMessageMark: () => communityMessageMark,
16015
- communityMessage: () => communityMessage,
16016
- communityMention: () => communityMention,
16017
- communityFriendship: () => communityFriendship,
16018
- communityChannelMember: () => communityChannelMember,
16019
- communityChannel: () => communityChannel,
16020
- communityCategory: () => communityCategory,
16021
- communityBotDailyActivity: () => communityBotDailyActivity,
16022
- communityBotApprovalRequest: () => communityBotApprovalRequest,
16023
- communityBotActivityEvent: () => communityBotActivityEvent,
16024
- communityAuditLog: () => communityAuditLog,
16025
- communityAttachment: () => communityAttachment
16026
- });
16027
-
16028
15154
  // ../../node_modules/.pnpm/drizzle-orm@0.45.2_@cloudflare+workers-types@4.20260702.1_@opentelemetry+api@1.9.1_@typ_5aa9492b131e5fac58fa98e88e5c0ad3/node_modules/drizzle-orm/sqlite-core/foreign-keys.js
16029
15155
  class ForeignKeyBuilder {
16030
15156
  static [entityKind] = "SQLiteForeignKeyBuilder";
@@ -16693,7 +15819,7 @@ class PrimaryKey {
16693
15819
  }
16694
15820
  }
16695
15821
 
16696
- // ../shared/src/db/community-schema.ts
15822
+ // ../shared/src/db/community-machine-schema.ts
16697
15823
  init_nanoid();
16698
15824
 
16699
15825
  // ../shared/src/db/schema.ts
@@ -16735,6 +15861,84 @@ __export(exports_schema, {
16735
15861
  account: () => account
16736
15862
  });
16737
15863
  init_nanoid();
15864
+
15865
+ // ../shared/src/constants.ts
15866
+ var TaskStatus = {
15867
+ QUEUED: "queued",
15868
+ DISPATCHED: "dispatched",
15869
+ RUNNING: "running",
15870
+ COMPLETED: "completed",
15871
+ FAILED: "failed",
15872
+ CANCELLED: "cancelled",
15873
+ SUPERSEDED: "superseded"
15874
+ };
15875
+ var TERMINAL_TASK_STATUSES = [
15876
+ TaskStatus.COMPLETED,
15877
+ TaskStatus.FAILED,
15878
+ TaskStatus.CANCELLED,
15879
+ TaskStatus.SUPERSEDED
15880
+ ];
15881
+ var TASK_TYPES = {
15882
+ USER_DM_MESSAGE: "user_dm_message",
15883
+ EMAIL_NOTIFICATION: "email_notification",
15884
+ CALENDAR_EVENT: "calendar_event",
15885
+ ISSUE_EVENT: "issue_event",
15886
+ KILL_TASK: "kill_task"
15887
+ };
15888
+ var IssueStatus = {
15889
+ TODO: "todo",
15890
+ IN_PROGRESS: "in_progress",
15891
+ REVIEW: "review",
15892
+ DONE: "done",
15893
+ CLOSED: "closed",
15894
+ CANCELED: "canceled",
15895
+ FAILED: "failed"
15896
+ };
15897
+ var ACTIVE_ISSUE_STATUSES = [
15898
+ IssueStatus.TODO,
15899
+ IssueStatus.IN_PROGRESS,
15900
+ IssueStatus.REVIEW
15901
+ ];
15902
+ var TERMINAL_ISSUE_STATUSES = [
15903
+ IssueStatus.DONE,
15904
+ IssueStatus.CLOSED,
15905
+ IssueStatus.CANCELED,
15906
+ IssueStatus.FAILED
15907
+ ];
15908
+ var POLL_INTERVAL_MS = Number(process.env.POLL_INTERVAL_MS) || 3000;
15909
+ var OFFLINE_THRESHOLD_MS = Number(process.env.OFFLINE_THRESHOLD_MS) || 30000;
15910
+ var COMMUNITY_MACHINE_HEARTBEAT_MS = 30000;
15911
+ var COMMUNITY_MACHINE_OFFLINE_THRESHOLD_MS = 3 * COMMUNITY_MACHINE_HEARTBEAT_MS;
15912
+ var COMMUNITY_MACHINE_PAIR_TOKEN_TTL_MS = 15 * 60000;
15913
+ var EVENT_POLL_INTERVAL_MS = Number(process.env.EVENT_POLL_INTERVAL_MS) || 2000;
15914
+ var MeetingStatus = {
15915
+ PENDING: "pending",
15916
+ SCHEDULED: "scheduled",
15917
+ JOINING: "joining",
15918
+ RECORDING: "recording",
15919
+ COMPLETED: "completed",
15920
+ FAILED: "failed"
15921
+ };
15922
+ var TERMINAL_MEETING_STATUSES = [
15923
+ MeetingStatus.COMPLETED,
15924
+ MeetingStatus.FAILED
15925
+ ];
15926
+ var COMMUNITY_BOT_NAME_MIN = 1;
15927
+ var COMMUNITY_BOT_NAME_MAX = 32;
15928
+ var COMMUNITY_BOT_DESCRIPTION_MAX = 1024;
15929
+ var COMMUNITY_BOT_IMAGE_URL_MAX = 2048;
15930
+ var DEV_PORTS = {
15931
+ web: 3000,
15932
+ emailWorker: 8787,
15933
+ wsDo: 8789,
15934
+ wakeWorker: 8790
15935
+ };
15936
+ var DEV_WEB_URL = process.env.ALOOK_SERVER_URL || `http://localhost:${DEV_PORTS.web}`;
15937
+ var DEV_WS_DO_URL = process.env.DEV_WS_DO_URL || `http://localhost:${DEV_PORTS.wsDo}`;
15938
+ var DEV_EMAIL_WORKER_URL = process.env.DEV_EMAIL_WORKER_URL || `http://localhost:${DEV_PORTS.emailWorker}`;
15939
+ var DEV_WAKE_WORKER_URL = process.env.DEV_WAKE_WORKER_URL || `http://localhost:${DEV_PORTS.wakeWorker}`;
15940
+
15941
+ // ../shared/src/db/schema.ts
16738
15942
  var user = sqliteTable("user", {
16739
15943
  id: text("id").primaryKey().$defaultFn(() => nanoid3()),
16740
15944
  name: text("name").notNull().default(""),
@@ -17207,85 +16411,1177 @@ var conversationMap = sqliteTable("conversation_map", {
17207
16411
  }, (t) => [
17208
16412
  unique("conversation_map_key_workspace").on(t.key, t.workspaceId)
17209
16413
  ]);
17210
- var agentLink = sqliteTable("agent_link", {
17211
- id: text("id").primaryKey().$defaultFn(() => "al_" + nanoid3()),
17212
- workspaceId: text("workspace_id").notNull(),
17213
- sourceAgentId: text("source_agent_id").notNull(),
17214
- targetAgentId: text("target_agent_id").notNull(),
17215
- instruction: text("instruction").notNull().default(""),
17216
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17217
- updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
17218
- }, (t) => [
17219
- unique("agent_link_ws_source_target").on(t.workspaceId, t.sourceAgentId, t.targetAgentId),
17220
- index("idx_agent_link_workspace").on(t.workspaceId),
17221
- foreignKey({
17222
- columns: [t.sourceAgentId, t.workspaceId],
17223
- foreignColumns: [agent.id, agent.workspaceId]
17224
- }).onDelete("cascade"),
17225
- foreignKey({
17226
- columns: [t.targetAgentId, t.workspaceId],
17227
- foreignColumns: [agent.id, agent.workspaceId]
17228
- }).onDelete("cascade")
16414
+ var agentLink = sqliteTable("agent_link", {
16415
+ id: text("id").primaryKey().$defaultFn(() => "al_" + nanoid3()),
16416
+ workspaceId: text("workspace_id").notNull(),
16417
+ sourceAgentId: text("source_agent_id").notNull(),
16418
+ targetAgentId: text("target_agent_id").notNull(),
16419
+ instruction: text("instruction").notNull().default(""),
16420
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16421
+ updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
16422
+ }, (t) => [
16423
+ unique("agent_link_ws_source_target").on(t.workspaceId, t.sourceAgentId, t.targetAgentId),
16424
+ index("idx_agent_link_workspace").on(t.workspaceId),
16425
+ foreignKey({
16426
+ columns: [t.sourceAgentId, t.workspaceId],
16427
+ foreignColumns: [agent.id, agent.workspaceId]
16428
+ }).onDelete("cascade"),
16429
+ foreignKey({
16430
+ columns: [t.targetAgentId, t.workspaceId],
16431
+ foreignColumns: [agent.id, agent.workspaceId]
16432
+ }).onDelete("cascade")
16433
+ ]);
16434
+ var conversationReadState = sqliteTable("conversation_read_state", {
16435
+ id: text("id").primaryKey().$defaultFn(() => nanoid3()),
16436
+ conversationId: text("conversation_id").notNull().references(() => conversation.id, { onDelete: "cascade" }),
16437
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16438
+ lastReadAt: text("last_read_at").notNull().default("1970-01-01T00:00:00.000Z"),
16439
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
16440
+ }, (t) => [
16441
+ unique("conversation_read_state_conv_user").on(t.conversationId, t.userId),
16442
+ index("idx_conversation_read_state_user").on(t.userId)
16443
+ ]);
16444
+ var workspaceFileRequest = sqliteTable("workspace_file_request", {
16445
+ id: text("id").primaryKey().$defaultFn(() => "wfr_" + nanoid3()),
16446
+ workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
16447
+ agentId: text("agent_id").notNull(),
16448
+ requestType: text("request_type").notNull(),
16449
+ path: text("path").notNull().default("."),
16450
+ status: text("status").notNull().default("pending"),
16451
+ result: text("result"),
16452
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16453
+ updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
16454
+ }, (t) => [
16455
+ index("idx_wfr_workspace_status").on(t.workspaceId, t.status)
16456
+ ]);
16457
+ var agentSkill = sqliteTable("agent_skill", {
16458
+ id: text("id").primaryKey().$defaultFn(() => "as_" + nanoid3()),
16459
+ workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
16460
+ agentId: text("agent_id"),
16461
+ daemonId: text("daemon_id"),
16462
+ runtime: text("runtime").notNull(),
16463
+ name: text("name").notNull(),
16464
+ description: text("description").notNull().default(""),
16465
+ syncedAt: text("synced_at").notNull().$defaultFn(() => new Date().toISOString())
16466
+ }, (t) => [
16467
+ unique("agent_skill_ws_runtime_name_agent_daemon").on(t.workspaceId, t.runtime, t.name, t.agentId, t.daemonId),
16468
+ index("idx_as_workspace_runtime").on(t.workspaceId, t.runtime),
16469
+ index("idx_as_agent_runtime").on(t.agentId, t.runtime),
16470
+ foreignKey({
16471
+ columns: [t.agentId, t.workspaceId],
16472
+ foreignColumns: [agent.id, agent.workspaceId]
16473
+ }).onDelete("cascade")
16474
+ ]);
16475
+ var inboxUnread = sqliteTable("inbox_unread", {
16476
+ id: text("id").primaryKey().$defaultFn(() => nanoid3()),
16477
+ conversationId: text("conversation_id").notNull().references(() => conversation.id, { onDelete: "cascade" }),
16478
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16479
+ workspaceId: text("workspace_id").notNull(),
16480
+ agentId: text("agent_id").notNull(),
16481
+ taskId: text("task_id").notNull(),
16482
+ taskType: text("task_type").notNull(),
16483
+ taskStatus: text("task_status").notNull(),
16484
+ taskPrompt: text("task_prompt"),
16485
+ completedAt: text("completed_at").notNull(),
16486
+ latestMessageId: text("latest_message_id")
16487
+ }, (t) => [
16488
+ unique("inbox_unread_conv_user").on(t.conversationId, t.userId),
16489
+ index("idx_inbox_unread_user_ws").on(t.userId, t.workspaceId, t.taskType, t.completedAt)
16490
+ ]);
16491
+
16492
+ // ../shared/src/db/community-machine-schema.ts
16493
+ var DIAGNOSTIC_REPORT_FAILURE_CODES = [
16494
+ "offline",
16495
+ "timeout",
16496
+ "upload_conflict",
16497
+ "invalid_upload",
16498
+ "diagnostics_unavailable",
16499
+ "collector_busy",
16500
+ "bot_not_bound",
16501
+ "collection_failed",
16502
+ "local_artifact_invalid",
16503
+ "bundle_too_large",
16504
+ "upload_failed",
16505
+ "internal_error"
16506
+ ];
16507
+ var communityDiagnosticReport = sqliteTable("community_diagnostic_report", {
16508
+ id: text("id").primaryKey().$defaultFn(() => "dbr_" + nanoid3()),
16509
+ ownerUserId: text("owner_user_id").notNull(),
16510
+ agentId: text("agent_id").notNull(),
16511
+ machineId: text("machine_id").notNull(),
16512
+ clientNonce: text("client_nonce").notNull(),
16513
+ rateBucket: integer2("rate_bucket").notNull(),
16514
+ status: text("status").$type().notNull().default("pending"),
16515
+ failureCode: text("failure_code").$type(),
16516
+ fromMs: integer2("from_ms").notNull(),
16517
+ createdAt: integer2("created_at").notNull(),
16518
+ deadlineAt: integer2("deadline_at").notNull(),
16519
+ completedAt: integer2("completed_at"),
16520
+ r2Key: text("r2_key"),
16521
+ sha256: text("sha256"),
16522
+ sizeBytes: integer2("size_bytes"),
16523
+ uploadedAt: integer2("uploaded_at"),
16524
+ objectExpiresAt: integer2("object_expires_at")
16525
+ }, (t) => [
16526
+ index("idx_community_diagnostic_report_owner_created").on(t.ownerUserId, t.createdAt),
16527
+ index("idx_community_diagnostic_report_machine_status_deadline").on(t.machineId, t.status, t.deadlineAt),
16528
+ uniqueIndex("uq_community_diagnostic_report_owner_nonce").on(t.ownerUserId, t.clientNonce),
16529
+ uniqueIndex("uq_community_diagnostic_report_owner_agent_pending").on(t.ownerUserId, t.agentId).where(sql`status = 'pending'`),
16530
+ uniqueIndex("uq_community_diagnostic_report_owner_rate_bucket").on(t.ownerUserId, t.rateBucket),
16531
+ check2("ck_community_diagnostic_report_id", sql`length(${t.id}) > 4 AND substr(${t.id}, 1, 4) = 'dbr_' AND ${t.id} NOT GLOB '*[^A-Za-z0-9_-]*'`),
16532
+ check2("ck_community_diagnostic_report_nonce", sql`length(${t.clientNonce}) BETWEEN 16 AND 64 AND ${t.clientNonce} NOT GLOB '*[^A-Za-z0-9_-]*'`),
16533
+ check2("ck_community_diagnostic_report_required_epochs", sql`typeof(${t.fromMs}) = 'integer' AND ${t.fromMs} BETWEEN 0 AND 9007199254740991
16534
+ AND typeof(${t.createdAt}) = 'integer' AND ${t.createdAt} BETWEEN 0 AND 9007199254740991
16535
+ AND typeof(${t.deadlineAt}) = 'integer' AND ${t.deadlineAt} BETWEEN 0 AND 9007199254740991
16536
+ AND ${t.fromMs} = ${t.createdAt} - 86400000
16537
+ AND ${t.deadlineAt} = ${t.createdAt} + 600000`),
16538
+ check2("ck_community_diagnostic_report_rate_bucket", sql`typeof(${t.rateBucket}) = 'integer'
16539
+ AND ${t.rateBucket} BETWEEN 0 AND 9007199254740991
16540
+ AND ${t.rateBucket} = CAST(${t.createdAt} / 60000 AS INTEGER)`),
16541
+ check2("ck_community_diagnostic_report_nullable_epochs", sql`(${t.completedAt} IS NULL OR (typeof(${t.completedAt}) = 'integer' AND ${t.completedAt} BETWEEN 0 AND 9007199254740991))
16542
+ AND (${t.uploadedAt} IS NULL OR (typeof(${t.uploadedAt}) = 'integer' AND ${t.uploadedAt} BETWEEN 0 AND 9007199254740991))
16543
+ AND (${t.objectExpiresAt} IS NULL OR (typeof(${t.objectExpiresAt}) = 'integer' AND ${t.objectExpiresAt} BETWEEN 0 AND 9007199254740991))`),
16544
+ check2("ck_community_diagnostic_report_size", sql`${t.sizeBytes} IS NULL OR (typeof(${t.sizeBytes}) = 'integer' AND ${t.sizeBytes} BETWEEN 1 AND 10485760)`),
16545
+ check2("ck_community_diagnostic_report_sha256", sql`${t.sha256} IS NULL OR (length(${t.sha256}) = 64 AND ${t.sha256} NOT GLOB '*[^0-9a-f]*')`),
16546
+ check2("ck_community_diagnostic_report_state", sql`(
16547
+ ${t.status} = 'pending'
16548
+ AND ${t.failureCode} IS NULL AND ${t.completedAt} IS NULL
16549
+ AND ${t.r2Key} IS NULL AND ${t.sha256} IS NULL AND ${t.sizeBytes} IS NULL
16550
+ AND ${t.uploadedAt} IS NULL AND ${t.objectExpiresAt} IS NULL
16551
+ ) OR (
16552
+ ${t.status} = 'failed'
16553
+ AND ${t.failureCode} IN ('offline', 'timeout', 'upload_conflict', 'invalid_upload', 'diagnostics_unavailable', 'collector_busy', 'bot_not_bound', 'collection_failed', 'local_artifact_invalid', 'bundle_too_large', 'upload_failed', 'internal_error')
16554
+ AND ${t.completedAt} IS NOT NULL
16555
+ AND ${t.completedAt} >= ${t.createdAt}
16556
+ AND ${t.r2Key} IS NULL AND ${t.sha256} IS NULL AND ${t.sizeBytes} IS NULL
16557
+ AND ${t.uploadedAt} IS NULL AND ${t.objectExpiresAt} IS NULL
16558
+ ) OR (
16559
+ ${t.status} = 'uploaded'
16560
+ AND ${t.failureCode} IS NULL AND ${t.completedAt} IS NOT NULL
16561
+ AND ${t.completedAt} >= ${t.createdAt}
16562
+ AND ${t.r2Key} IS NOT NULL
16563
+ AND ${t.r2Key} = 'bug-reports/' || ${t.ownerUserId} || '/' || ${t.id} || '.ndjson.gz'
16564
+ AND ${t.sha256} IS NOT NULL AND ${t.sizeBytes} IS NOT NULL
16565
+ AND ${t.uploadedAt} IS NOT NULL AND ${t.objectExpiresAt} IS NOT NULL
16566
+ AND ${t.completedAt} = ${t.uploadedAt}
16567
+ AND ${t.objectExpiresAt} = ${t.uploadedAt} + 604800000
16568
+ )`)
16569
+ ]);
16570
+ var communityMachineToken = sqliteTable("community_machine_token", {
16571
+ id: text("id").primaryKey().$defaultFn(() => "cmt_" + nanoid3(32)),
16572
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16573
+ machineId: text("machine_id"),
16574
+ status: text("status").notNull().default("pending"),
16575
+ expiresAt: text("expires_at").notNull(),
16576
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16577
+ lastUsedAt: text("last_used_at")
16578
+ }, (t) => [
16579
+ index("idx_community_machine_token_user_status").on(t.userId, t.status),
16580
+ uniqueIndex("uq_community_machine_token_user_pending").on(t.userId).where(sql`status = 'pending'`)
16581
+ ]);
16582
+ var communityMachine = sqliteTable("community_machine", {
16583
+ id: text("id").primaryKey().$defaultFn(() => "cm_" + nanoid3()),
16584
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16585
+ displayName: text("display_name").notNull().default(""),
16586
+ hostname: text("hostname").notNull().default(""),
16587
+ platform: text("platform").notNull().default(""),
16588
+ arch: text("arch").notNull().default(""),
16589
+ osRelease: text("os_release").notNull().default(""),
16590
+ daemonVersion: text("daemon_version").notNull().default(""),
16591
+ metadata: text("metadata"),
16592
+ availableRuntimes: text("available_runtimes", { mode: "json" }).$type().notNull().default([]),
16593
+ status: text("status").notNull().default("offline"),
16594
+ lastSeenAt: text("last_seen_at"),
16595
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16596
+ updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
16597
+ }, (t) => [
16598
+ index("idx_community_machine_user_last_seen").on(t.userId, t.lastSeenAt),
16599
+ index("idx_community_machine_user_updated").on(t.userId, t.updatedAt),
16600
+ index("idx_community_machine_user_status").on(t.userId, t.status)
16601
+ ]);
16602
+ var communityMachineCredential = sqliteTable("community_machine_credential", {
16603
+ id: text("id").primaryKey().$defaultFn(() => "cmkid_" + nanoid3()),
16604
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16605
+ machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "cascade" }),
16606
+ credentialHash: text("credential_hash").notNull().unique(),
16607
+ doName: text("do_name").notNull().unique(),
16608
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16609
+ lastUsedAt: text("last_used_at"),
16610
+ revokedAt: text("revoked_at")
16611
+ }, (t) => [
16612
+ index("idx_community_machine_credential_user").on(t.userId),
16613
+ index("idx_community_machine_credential_machine").on(t.machineId)
16614
+ ]);
16615
+ var communityBotBinding = sqliteTable("community_bot_binding", {
16616
+ userId: text("user_id").primaryKey().references(() => user.id, { onDelete: "cascade" }),
16617
+ machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "restrict" }),
16618
+ runtime: text("runtime").notNull(),
16619
+ modelName: text("model_name"),
16620
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
16621
+ }, (t) => [index("idx_community_bot_binding_machine").on(t.machineId)]);
16622
+ var communityAgentRunnerKey = sqliteTable("community_agent_runner_key", {
16623
+ id: text("id").primaryKey().$defaultFn(() => "crkid_" + nanoid3()),
16624
+ userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
16625
+ machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "cascade" }),
16626
+ agentId: text("agent_id").notNull(),
16627
+ runnerKeyHash: text("runner_key_hash").notNull().unique(),
16628
+ doName: text("do_name").notNull().unique(),
16629
+ createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
16630
+ revokedAt: text("revoked_at")
16631
+ }, (t) => [
16632
+ index("idx_community_agent_runner_key_machine_agent").on(t.machineId, t.agentId)
16633
+ ]);
16634
+
16635
+ // ../shared/src/diagnostics-contract.ts
16636
+ var DIAGNOSTIC_REPORT_COLLECTION_WINDOW_MS = 86400000;
16637
+ var DIAGNOSTIC_REPORT_DEADLINE_WINDOW_MS = 600000;
16638
+ var DIAGNOSTIC_COLLECT_SPAN_MS = DIAGNOSTIC_REPORT_COLLECTION_WINDOW_MS + DIAGNOSTIC_REPORT_DEADLINE_WINDOW_MS;
16639
+ var SafeEpochSchema = exports_external.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
16640
+ var AgentIdSchema = exports_external.string().min(1).regex(/^[A-Za-z0-9_-]+$/);
16641
+ var DiagnosticReportIdSchema = exports_external.string().regex(/^dbr_[A-Za-z0-9_-]+$/);
16642
+ var DiagnosticReportFailureCodeSchema = exports_external.enum(DIAGNOSTIC_REPORT_FAILURE_CODES);
16643
+ var DiagnosticReportCreateRequestSchema = exports_external.object({
16644
+ clientNonce: exports_external.string().min(16).max(64).regex(/^[A-Za-z0-9_-]+$/)
16645
+ }).strict();
16646
+ var DiagnosticCollectPayloadSchema = exports_external.object({
16647
+ reportId: DiagnosticReportIdSchema,
16648
+ agentId: AgentIdSchema,
16649
+ fromMs: SafeEpochSchema,
16650
+ deadlineAt: SafeEpochSchema
16651
+ }).strict();
16652
+ var DiagnosticCollectCommandSchema = exports_external.object({
16653
+ type: exports_external.literal("diagnostics:collect"),
16654
+ reportId: DiagnosticReportIdSchema,
16655
+ agentId: AgentIdSchema,
16656
+ fromMs: SafeEpochSchema,
16657
+ deadlineAt: SafeEpochSchema
16658
+ }).strict().refine((command) => command.deadlineAt - command.fromMs === DIAGNOSTIC_COLLECT_SPAN_MS, { message: "diagnostic collection span must match v1" });
16659
+ var OwnerDiagnosticReportBase = {
16660
+ reportId: DiagnosticReportIdSchema,
16661
+ deadlineAt: SafeEpochSchema
16662
+ };
16663
+ var OwnerDiagnosticReportSchema = exports_external.discriminatedUnion("status", [
16664
+ exports_external.object({
16665
+ ...OwnerDiagnosticReportBase,
16666
+ status: exports_external.literal("pending"),
16667
+ completedAt: exports_external.null(),
16668
+ failureCode: exports_external.null(),
16669
+ objectExpired: exports_external.literal(false)
16670
+ }).strict(),
16671
+ exports_external.object({
16672
+ ...OwnerDiagnosticReportBase,
16673
+ status: exports_external.literal("uploaded"),
16674
+ completedAt: SafeEpochSchema,
16675
+ failureCode: exports_external.null(),
16676
+ objectExpired: exports_external.boolean()
16677
+ }).strict(),
16678
+ exports_external.object({
16679
+ ...OwnerDiagnosticReportBase,
16680
+ status: exports_external.literal("failed"),
16681
+ completedAt: SafeEpochSchema,
16682
+ failureCode: DiagnosticReportFailureCodeSchema,
16683
+ objectExpired: exports_external.literal(false)
16684
+ }).strict()
16685
+ ]);
16686
+ // ../shared/src/constants/community.ts
16687
+ var MAX_PROFILE_NAME_LENGTH = 100;
16688
+ var MAX_MESSAGE_CONTENT_LENGTH = 4000;
16689
+ var MAX_ATTACHMENTS_PER_MESSAGE = 10;
16690
+ var MAX_ATTACHMENT_SIZE_BYTES = 25 * 1024 * 1024;
16691
+ var MAX_SERVER_ICON_SIZE_BYTES = 5 * 1024 * 1024;
16692
+ var MAX_ICON_SOURCE_FILE_SIZE_BYTES = 15 * 1024 * 1024;
16693
+ // ../shared/src/utils/slug.ts
16694
+ init_nanoid();
16695
+ var slugId = customAlphabet("0123456789abcdefghijklmnopqrstuvwxyz");
16696
+ function sanitizeSlug(input) {
16697
+ return input.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 60).replace(/-+$/g, "");
16698
+ }
16699
+
16700
+ // ../shared/src/lib/community-name.ts
16701
+ var FORBIDDEN_NAME_CHARS = /[#@\x00-\x1f\x7f-\x9f]/;
16702
+ function validateCommunityName(name) {
16703
+ const trimmed = name.trim();
16704
+ if (!trimmed)
16705
+ return { ok: false, reason: "name cannot be empty" };
16706
+ if (trimmed.length > MAX_PROFILE_NAME_LENGTH) {
16707
+ return { ok: false, reason: `name must be ≤ ${MAX_PROFILE_NAME_LENGTH} characters` };
16708
+ }
16709
+ if (FORBIDDEN_NAME_CHARS.test(trimmed)) {
16710
+ return { ok: false, reason: "name cannot contain #, @, or line breaks" };
16711
+ }
16712
+ return { ok: true };
16713
+ }
16714
+
16715
+ // ../shared/src/schemas.ts
16716
+ var TaskStatusSchema = exports_external.enum([
16717
+ "queued",
16718
+ "dispatched",
16719
+ "running",
16720
+ "completed",
16721
+ "failed",
16722
+ "cancelled",
16723
+ "superseded"
16724
+ ]);
16725
+ var ClaimedTaskRowSchema = exports_external.object({
16726
+ id: exports_external.string(),
16727
+ agentId: exports_external.string(),
16728
+ runtimeId: exports_external.string(),
16729
+ workspaceId: exports_external.string(),
16730
+ conversationId: exports_external.string(),
16731
+ prompt: exports_external.string(),
16732
+ status: exports_external.string(),
16733
+ priority: exports_external.coerce.number(),
16734
+ result: exports_external.unknown().nullable(),
16735
+ context: exports_external.unknown().nullable(),
16736
+ type: exports_external.string().default(TASK_TYPES.USER_DM_MESSAGE),
16737
+ contextKey: exports_external.string().nullable().optional(),
16738
+ sessionId: exports_external.string().nullable(),
16739
+ createdAt: exports_external.coerce.date(),
16740
+ dispatchedAt: exports_external.coerce.date().nullable(),
16741
+ startedAt: exports_external.coerce.date().nullable(),
16742
+ completedAt: exports_external.coerce.date().nullable(),
16743
+ error: exports_external.string().nullable(),
16744
+ traceId: exports_external.string().nullable().optional(),
16745
+ parentTaskId: exports_external.string().nullable().optional()
16746
+ });
16747
+ var ColleagueDataApiSchema = exports_external.object({
16748
+ name: exports_external.string(),
16749
+ email: exports_external.string(),
16750
+ description: exports_external.string(),
16751
+ instruction: exports_external.string()
16752
+ });
16753
+ var TaskAgentDataApiSchema = exports_external.object({
16754
+ instructions: exports_external.string(),
16755
+ name: exports_external.string(),
16756
+ runtime_config: exports_external.record(exports_external.string(), exports_external.unknown()).default({}),
16757
+ email_handle: exports_external.string().nullable().optional(),
16758
+ email_addresses: exports_external.array(exports_external.string()).default([]),
16759
+ user_email: exports_external.string().nullable().optional(),
16760
+ user_name: exports_external.string().nullable().optional(),
16761
+ colleagues: exports_external.array(ColleagueDataApiSchema).default([])
16762
+ });
16763
+ var TaskApiBaseSchema = exports_external.object({
16764
+ id: exports_external.string(),
16765
+ agent_id: exports_external.string(),
16766
+ runtime_id: exports_external.string(),
16767
+ conversation_id: exports_external.string(),
16768
+ workspace_id: exports_external.string(),
16769
+ prompt: exports_external.string(),
16770
+ status: exports_external.string(),
16771
+ priority: exports_external.number(),
16772
+ dispatched_at: exports_external.string().nullable(),
16773
+ started_at: exports_external.string().nullable(),
16774
+ completed_at: exports_external.string().nullable(),
16775
+ result: exports_external.unknown().nullable(),
16776
+ error: exports_external.string().nullable(),
16777
+ created_at: exports_external.string(),
16778
+ type: exports_external.string(),
16779
+ context_key: exports_external.string().nullable().optional(),
16780
+ context: exports_external.unknown().nullable().optional(),
16781
+ trace_id: exports_external.string().nullable().optional(),
16782
+ parent_task_id: exports_external.string().nullable().optional(),
16783
+ channel: exports_external.string().nullable().optional()
16784
+ });
16785
+ var TaskSenderApiSchema = exports_external.object({
16786
+ name: exports_external.string(),
16787
+ email: exports_external.string(),
16788
+ is_owner: exports_external.boolean()
16789
+ });
16790
+ var TaskApiSchema = TaskApiBaseSchema.extend({
16791
+ agent: TaskAgentDataApiSchema.nullable().optional(),
16792
+ sender: TaskSenderApiSchema.nullable().optional()
16793
+ });
16794
+ var HeartbeatRequestSchema = exports_external.object({
16795
+ daemon_id: exports_external.string().min(1)
16796
+ });
16797
+ var PollRequestSchema = exports_external.object({
16798
+ daemon_id: exports_external.string().min(1),
16799
+ max_tasks: exports_external.number().int().min(1).default(1),
16800
+ cli_version: exports_external.string().optional()
16801
+ });
16802
+ var FileRequestItemSchema = exports_external.object({
16803
+ id: exports_external.string(),
16804
+ agent_id: exports_external.string(),
16805
+ request_type: exports_external.enum(["tree", "read"]),
16806
+ path: exports_external.string()
16807
+ });
16808
+ var PollMeetingItemSchema = exports_external.object({
16809
+ id: exports_external.string(),
16810
+ meeting_url: exports_external.string(),
16811
+ participants: exports_external.array(exports_external.string()),
16812
+ workspace_id: exports_external.string(),
16813
+ agent_id: exports_external.string(),
16814
+ agent_name: exports_external.string(),
16815
+ title: exports_external.string().optional()
16816
+ });
16817
+ var PollResponseSchema = exports_external.object({
16818
+ tasks: exports_external.array(TaskApiSchema),
16819
+ evicted: exports_external.boolean().optional(),
16820
+ pending_update: exports_external.object({ version: exports_external.string() }).optional(),
16821
+ pending_rescan: exports_external.boolean().optional(),
16822
+ file_requests: exports_external.array(FileRequestItemSchema).optional(),
16823
+ meetings: exports_external.array(PollMeetingItemSchema).optional()
16824
+ });
16825
+ var DaemonPushMessageSchema = exports_external.discriminatedUnion("type", [
16826
+ exports_external.object({ type: exports_external.literal("daemon.tasks"), tasks: exports_external.array(TaskApiSchema) }),
16827
+ exports_external.object({ type: exports_external.literal("daemon.file_requests"), workspaceId: exports_external.string(), requests: exports_external.array(FileRequestItemSchema) }),
16828
+ exports_external.object({ type: exports_external.literal("daemon.meetings"), meetings: exports_external.array(PollMeetingItemSchema) }),
16829
+ exports_external.object({ type: exports_external.literal("daemon.evict"), workspaceId: exports_external.string() }),
16830
+ exports_external.object({ type: exports_external.literal("daemon.update"), version: exports_external.string() }),
16831
+ exports_external.object({ type: exports_external.literal("daemon.rescan") }),
16832
+ exports_external.object({ type: exports_external.literal("daemon.kill"), workspaceId: exports_external.string(), agentId: exports_external.string().min(1), taskId: exports_external.string(), targetTaskId: exports_external.string() })
17229
16833
  ]);
17230
- var conversationReadState = sqliteTable("conversation_read_state", {
17231
- id: text("id").primaryKey().$defaultFn(() => nanoid3()),
17232
- conversationId: text("conversation_id").notNull().references(() => conversation.id, { onDelete: "cascade" }),
17233
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17234
- lastReadAt: text("last_read_at").notNull().default("1970-01-01T00:00:00.000Z"),
17235
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
17236
- }, (t) => [
17237
- unique("conversation_read_state_conv_user").on(t.conversationId, t.userId),
17238
- index("idx_conversation_read_state_user").on(t.userId)
16834
+ var RegisterResponseSchema = exports_external.object({
16835
+ runtimes: exports_external.array(exports_external.object({ id: exports_external.string() }))
16836
+ });
16837
+ var DaemonRuntimeItemSchema = exports_external.object({
16838
+ type: exports_external.string().optional(),
16839
+ provider: exports_external.string().optional(),
16840
+ runtime_mode: exports_external.string().optional(),
16841
+ version: exports_external.string().optional(),
16842
+ status: exports_external.string().optional(),
16843
+ model: exports_external.string().optional()
16844
+ });
16845
+ var ActivateTokenRuntimeSchema = exports_external.object({
16846
+ type: exports_external.string().min(1),
16847
+ version: exports_external.string().optional().default("")
16848
+ });
16849
+ var ActivateTokenRequestSchema = exports_external.object({
16850
+ token: exports_external.string().min(1),
16851
+ hostname: exports_external.string().min(1),
16852
+ runtimes: exports_external.array(ActivateTokenRuntimeSchema).min(1)
16853
+ });
16854
+ var RegisterDaemonRequestSchema = exports_external.object({
16855
+ workspace_id: exports_external.string().min(1).optional(),
16856
+ daemon_id: exports_external.string().min(1),
16857
+ device_name: exports_external.string().optional().default(""),
16858
+ cli_version: exports_external.string().optional().default(""),
16859
+ workspaces_root: exports_external.string().optional().default(""),
16860
+ runtimes: exports_external.array(DaemonRuntimeItemSchema).min(1)
16861
+ });
16862
+ var DeregisterRequestSchema = exports_external.object({
16863
+ daemon_id: exports_external.string().min(1)
16864
+ });
16865
+ var CompleteTaskRequestSchema = exports_external.object({
16866
+ output: exports_external.string().optional(),
16867
+ session_id: exports_external.string().optional(),
16868
+ branch_name: exports_external.string().optional()
16869
+ });
16870
+ var FailTaskRequestSchema = exports_external.object({
16871
+ error: exports_external.string().optional().default("")
16872
+ });
16873
+ var MessageItemSchema = exports_external.object({
16874
+ seq: exports_external.number(),
16875
+ type: exports_external.string(),
16876
+ tool: exports_external.string().optional(),
16877
+ call_id: exports_external.string().optional(),
16878
+ content: exports_external.string().optional(),
16879
+ input: exports_external.record(exports_external.string(), exports_external.unknown()).optional(),
16880
+ output: exports_external.string().optional()
16881
+ });
16882
+ var ReportMessagesRequestSchema = exports_external.object({
16883
+ messages: exports_external.array(MessageItemSchema)
16884
+ });
16885
+ var RepeatIntervalSchema = exports_external.string().regex(/^\d+(min|hour|day|week|month)$/, {
16886
+ message: "repeat_interval must match <positive_integer><min|hour|day|week|month>"
16887
+ });
16888
+ var CreateCalendarEventRequestSchema = exports_external.object({
16889
+ agent_id: exports_external.string().min(1),
16890
+ title: exports_external.string().min(1),
16891
+ description: exports_external.string().max(20000).optional(),
16892
+ scheduled_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
16893
+ message: "scheduled_at must be a valid ISO datetime"
16894
+ }),
16895
+ repeat_interval: RepeatIntervalSchema.optional(),
16896
+ repeat_stop_date: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).optional(),
16897
+ conversation_id: exports_external.string().optional()
16898
+ }).refine((data) => !data.repeat_stop_date || !!data.repeat_interval, {
16899
+ message: "repeat_stop_date requires repeat_interval",
16900
+ path: ["repeat_stop_date"]
16901
+ });
16902
+ var UpdateCalendarEventRequestSchema = exports_external.object({
16903
+ title: exports_external.string().min(1).optional(),
16904
+ description: exports_external.string().max(20000).nullable().optional(),
16905
+ agent_id: exports_external.string().min(1).optional(),
16906
+ scheduled_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
16907
+ message: "scheduled_at must be a valid ISO datetime"
16908
+ }).optional(),
16909
+ repeat_interval: RepeatIntervalSchema.nullable().optional(),
16910
+ repeat_stop_date: exports_external.string().regex(/^\d{4}-\d{2}-\d{2}$/).nullable().optional(),
16911
+ scope: exports_external.enum(["this", "following"]).optional(),
16912
+ occurrence_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
16913
+ message: "occurrence_at must be a valid ISO datetime"
16914
+ }).optional()
16915
+ }).refine((v) => v.title !== undefined || v.description !== undefined || v.agent_id !== undefined || v.scheduled_at !== undefined || v.repeat_interval !== undefined || v.repeat_stop_date !== undefined, { message: "at least one field is required" });
16916
+ var DeleteCalendarEventRequestSchema = exports_external.object({
16917
+ scope: exports_external.enum(["this", "following"]).optional(),
16918
+ occurrence_at: exports_external.string().min(1).refine((s) => !Number.isNaN(Date.parse(s)), {
16919
+ message: "occurrence_at must be a valid ISO datetime"
16920
+ }).optional()
16921
+ });
16922
+ var CalendarEventApiSchema = exports_external.object({
16923
+ id: exports_external.string(),
16924
+ agent_id: exports_external.string(),
16925
+ workspace_id: exports_external.string(),
16926
+ title: exports_external.string(),
16927
+ description: exports_external.string().nullable(),
16928
+ scheduled_at: exports_external.string(),
16929
+ occurrence_at: exports_external.string(),
16930
+ collapsed_count: exports_external.number().nullable().optional(),
16931
+ repeat_interval: exports_external.string().nullable(),
16932
+ repeat_stop_at: exports_external.string().nullable(),
16933
+ last_triggered_at: exports_external.string().nullable(),
16934
+ created_at: exports_external.string(),
16935
+ updated_at: exports_external.string()
16936
+ });
16937
+ var IssueStatusSchema = exports_external.enum([
16938
+ IssueStatus.TODO,
16939
+ IssueStatus.IN_PROGRESS,
16940
+ IssueStatus.REVIEW,
16941
+ IssueStatus.DONE,
16942
+ IssueStatus.CLOSED,
16943
+ IssueStatus.CANCELED,
16944
+ IssueStatus.FAILED
17239
16945
  ]);
17240
- var workspaceFileRequest = sqliteTable("workspace_file_request", {
17241
- id: text("id").primaryKey().$defaultFn(() => "wfr_" + nanoid3()),
17242
- workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
17243
- agentId: text("agent_id").notNull(),
17244
- requestType: text("request_type").notNull(),
17245
- path: text("path").notNull().default("."),
17246
- status: text("status").notNull().default("pending"),
17247
- result: text("result"),
17248
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17249
- updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
17250
- }, (t) => [
17251
- index("idx_wfr_workspace_status").on(t.workspaceId, t.status)
16946
+ var CreateIssueRequestSchema = exports_external.object({
16947
+ agent_id: exports_external.string().min(1).optional(),
16948
+ title: exports_external.string().min(1, "title is required").max(200),
16949
+ description: exports_external.string().max(20000).optional().default("")
16950
+ });
16951
+ var UpdateIssueRequestSchema = exports_external.object({
16952
+ title: exports_external.string().min(1).max(200).optional(),
16953
+ description: exports_external.string().max(20000).optional(),
16954
+ status: IssueStatusSchema.optional(),
16955
+ agent_id: exports_external.string().min(1).optional()
16956
+ }).refine((v) => v.title !== undefined || v.description !== undefined || v.status !== undefined || v.agent_id !== undefined, { message: "at least one field is required" });
16957
+ var CreateIssueCommentBodySchema = exports_external.object({
16958
+ content: exports_external.string().min(1, "content is required").max(20000)
16959
+ });
16960
+ var IssueCommentApiSchema = exports_external.object({
16961
+ id: exports_external.string(),
16962
+ issue_id: exports_external.string(),
16963
+ workspace_id: exports_external.string(),
16964
+ author_type: exports_external.enum(["user", "agent"]),
16965
+ author_id: exports_external.string(),
16966
+ content: exports_external.string(),
16967
+ created_at: exports_external.string()
16968
+ });
16969
+ var IssueApiSchema = exports_external.object({
16970
+ id: exports_external.string(),
16971
+ workspace_id: exports_external.string(),
16972
+ agent_id: exports_external.string().nullable(),
16973
+ creator_user_id: exports_external.string(),
16974
+ conversation_id: exports_external.string().nullable(),
16975
+ latest_task_id: exports_external.string().nullable(),
16976
+ title: exports_external.string(),
16977
+ description: exports_external.string(),
16978
+ status: IssueStatusSchema,
16979
+ created_at: exports_external.string(),
16980
+ updated_at: exports_external.string(),
16981
+ completed_at: exports_external.string().nullable()
16982
+ });
16983
+ var CreateAgentLinkRequestSchema = exports_external.object({
16984
+ source_agent_id: exports_external.string().min(1, "source_agent_id is required"),
16985
+ target_agent_id: exports_external.string().min(1, "target_agent_id is required"),
16986
+ instruction: exports_external.string().optional().default("")
16987
+ });
16988
+ var UpdateAgentLinkRequestSchema = exports_external.object({
16989
+ instruction: exports_external.string()
16990
+ });
16991
+ var UpsertAgentLinkRequestSchema = exports_external.object({
16992
+ target_agent_id: exports_external.string().min(1, "target_agent_id is required"),
16993
+ instruction: exports_external.string()
16994
+ });
16995
+ var AddWhitelistRequestSchema = exports_external.object({
16996
+ email: exports_external.string().email()
16997
+ });
16998
+ var RuntimeConfigSchema = exports_external.object({ model: exports_external.string().max(100).optional() }).passthrough().optional();
16999
+ var CreateAgentRequestSchema = exports_external.object({
17000
+ name: exports_external.string().min(1, "name is required"),
17001
+ description: exports_external.string().optional().default(""),
17002
+ instructions: exports_external.string().optional().default(""),
17003
+ runtime_id: exports_external.string().min(1, "runtime_id is required"),
17004
+ runtime_config: RuntimeConfigSchema,
17005
+ max_concurrent_tasks: exports_external.number().int().optional(),
17006
+ email_handle: exports_external.string().optional(),
17007
+ avatar_url: exports_external.string().max(2000).nullable().optional()
17008
+ });
17009
+ var UpdateAgentRequestSchema = exports_external.object({
17010
+ name: exports_external.string().min(1).optional(),
17011
+ description: exports_external.string().optional(),
17012
+ instructions: exports_external.string().optional(),
17013
+ runtime_id: exports_external.string().min(1).optional(),
17014
+ runtime_config: RuntimeConfigSchema,
17015
+ visibility: exports_external.enum(["public", "private"]).optional(),
17016
+ avatar_url: exports_external.string().max(2000).nullable().optional()
17017
+ }).refine((v) => v.name !== undefined || v.description !== undefined || v.instructions !== undefined || v.runtime_id !== undefined || v.runtime_config !== undefined || v.visibility !== undefined || v.avatar_url !== undefined, { message: "at least one field is required" });
17018
+ var CreateConversationRequestSchema = exports_external.object({
17019
+ agent_id: exports_external.string().min(1, "agent_id is required"),
17020
+ channel: exports_external.string().optional()
17021
+ });
17022
+ var CreateMessageRequestSchema = exports_external.object({
17023
+ content: exports_external.string().min(1, "content is required"),
17024
+ metadata: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17025
+ });
17026
+ var AgentDmRequestSchema = exports_external.object({
17027
+ content: exports_external.string().min(1, "content is required"),
17028
+ task_id: exports_external.string().min(1).optional()
17029
+ });
17030
+ var EmailAttachmentSchema = exports_external.object({
17031
+ key: exports_external.string().min(1),
17032
+ filename: exports_external.string().min(1),
17033
+ size: exports_external.number().int().nonnegative().optional(),
17034
+ contentType: exports_external.string().min(1)
17035
+ });
17036
+ var SendEmailRequestSchema = exports_external.object({
17037
+ agentId: exports_external.string().min(1, "agentId is required"),
17038
+ to: exports_external.string().min(1, "to is required"),
17039
+ subject: exports_external.string().min(1, "subject is required"),
17040
+ htmlBody: exports_external.string().default(""),
17041
+ inReplyTo: exports_external.string().optional(),
17042
+ references: exports_external.string().optional(),
17043
+ attachments: exports_external.array(EmailAttachmentSchema).optional(),
17044
+ customAccountId: exports_external.string().optional(),
17045
+ from: exports_external.string().email().optional(),
17046
+ conversationId: exports_external.string().optional(),
17047
+ traceId: exports_external.string().optional(),
17048
+ sourceTaskId: exports_external.string().optional()
17049
+ });
17050
+ var UpdateEmailStatusRequestSchema = exports_external.object({
17051
+ status: exports_external.enum(["unread", "read", "archived", "sent"])
17052
+ });
17053
+ var MeetingInfoSchema = exports_external.object({
17054
+ title: exports_external.string(),
17055
+ meetingUrl: exports_external.string(),
17056
+ startTime: exports_external.string().nullable(),
17057
+ endTime: exports_external.string().nullable(),
17058
+ attendees: exports_external.array(exports_external.object({ name: exports_external.string(), email: exports_external.string() }))
17059
+ });
17060
+ var EmailNotifyRequestSchema = exports_external.object({
17061
+ agentId: exports_external.string().min(1),
17062
+ workspaceId: exports_external.string().min(1),
17063
+ r2Key: exports_external.string().min(1),
17064
+ from: exports_external.string().min(1),
17065
+ to: exports_external.string().optional(),
17066
+ subject: exports_external.string(),
17067
+ isWhitelisted: exports_external.boolean(),
17068
+ forwarded: exports_external.boolean().optional().default(false),
17069
+ messageId: exports_external.string().optional().default(""),
17070
+ inReplyTo: exports_external.string().optional().default(""),
17071
+ references: exports_external.string().optional().default(""),
17072
+ meetingInfo: MeetingInfoSchema.nullable().optional(),
17073
+ attachments: exports_external.string().optional(),
17074
+ traceId: exports_external.string().optional(),
17075
+ sourceTaskId: exports_external.string().optional(),
17076
+ isInternal: exports_external.boolean().optional().default(false),
17077
+ senderConversationId: exports_external.string().optional(),
17078
+ senderAgentId: exports_external.string().optional()
17079
+ });
17080
+ var CreateEmailAccountSchema = exports_external.object({
17081
+ emailAddress: exports_external.string().email("valid email required"),
17082
+ displayName: exports_external.string().default(""),
17083
+ imapHost: exports_external.string().min(1, "IMAP host is required"),
17084
+ imapPort: exports_external.number().int().min(1).max(65535).default(993),
17085
+ imapUsername: exports_external.string().min(1, "IMAP username is required"),
17086
+ imapPassword: exports_external.string().min(1, "IMAP password is required"),
17087
+ imapTls: exports_external.boolean().default(true),
17088
+ smtpHost: exports_external.string().min(1, "SMTP host is required"),
17089
+ smtpPort: exports_external.number().int().min(1).max(65535).default(587),
17090
+ smtpUsername: exports_external.string().min(1, "SMTP username is required"),
17091
+ smtpPassword: exports_external.string().min(1, "SMTP password is required"),
17092
+ smtpTls: exports_external.number().int().min(0).max(2).default(1),
17093
+ pollIntervalSeconds: exports_external.number().int().min(30).max(3600).default(60)
17094
+ });
17095
+ var UpdateEmailAccountSchema = exports_external.object({
17096
+ emailAddress: exports_external.string().email().optional(),
17097
+ displayName: exports_external.string().optional(),
17098
+ imapHost: exports_external.string().min(1).optional(),
17099
+ imapPort: exports_external.number().int().min(1).max(65535).optional(),
17100
+ imapUsername: exports_external.string().min(1).optional(),
17101
+ imapPassword: exports_external.string().min(1).optional(),
17102
+ imapTls: exports_external.boolean().optional(),
17103
+ smtpHost: exports_external.string().min(1).optional(),
17104
+ smtpPort: exports_external.number().int().min(1).max(65535).optional(),
17105
+ smtpUsername: exports_external.string().min(1).optional(),
17106
+ smtpPassword: exports_external.string().min(1).optional(),
17107
+ smtpTls: exports_external.number().int().min(0).max(2).optional(),
17108
+ pollIntervalSeconds: exports_external.number().int().min(30).max(3600).optional()
17109
+ });
17110
+ var TestEmailConnectionSchema = exports_external.object({
17111
+ imapHost: exports_external.string().min(1),
17112
+ imapPort: exports_external.number().int().min(1).max(65535).default(993),
17113
+ imapUsername: exports_external.string().min(1),
17114
+ imapPassword: exports_external.string().min(1),
17115
+ imapTls: exports_external.boolean().default(true),
17116
+ smtpHost: exports_external.string().min(1),
17117
+ smtpPort: exports_external.number().int().min(1).max(65535).default(587),
17118
+ smtpUsername: exports_external.string().min(1),
17119
+ smtpPassword: exports_external.string().min(1),
17120
+ smtpTls: exports_external.number().int().min(0).max(2).default(1)
17121
+ });
17122
+ var UpdateMemberRequestSchema = exports_external.object({
17123
+ global_instruction: exports_external.string().max(50000).trim()
17124
+ });
17125
+ var CreateWorkspaceRequestSchema = exports_external.object({
17126
+ name: exports_external.string().min(1, "name is required"),
17127
+ slug: exports_external.string().optional().default("").transform(sanitizeSlug)
17128
+ });
17129
+ var UpdateWorkspaceRequestSchema = exports_external.object({
17130
+ name: exports_external.string().min(1, "name is required").max(100).trim().optional(),
17131
+ slug: exports_external.string().min(1, "slug is required").trim().toLowerCase().transform(sanitizeSlug).optional()
17132
+ });
17133
+ var DeleteWorkspaceRequestSchema = exports_external.object({
17134
+ confirm_name: exports_external.string().min(1, "confirm_name is required")
17135
+ });
17136
+ var GrantAgentAccessRequestSchema = exports_external.object({
17137
+ user_id: exports_external.string().min(1, "user_id is required")
17138
+ });
17139
+ var WorkspaceFileBrowseRequestSchema = exports_external.object({
17140
+ request_type: exports_external.enum(["tree", "read"]),
17141
+ path: exports_external.string().default(".")
17142
+ });
17143
+ var WorkspaceFileEntrySchema = exports_external.object({
17144
+ name: exports_external.string(),
17145
+ path: exports_external.string(),
17146
+ isDirectory: exports_external.boolean(),
17147
+ size: exports_external.number(),
17148
+ modifiedAt: exports_external.string()
17149
+ });
17150
+ var WorkspaceFileReportSchema = exports_external.object({
17151
+ request_id: exports_external.string().min(1),
17152
+ entries: exports_external.array(WorkspaceFileEntrySchema).optional(),
17153
+ content: exports_external.string().nullable().optional(),
17154
+ isBinary: exports_external.boolean().optional(),
17155
+ error: exports_external.string().optional(),
17156
+ path: exports_external.string()
17157
+ });
17158
+ var SkillEntrySchema = exports_external.object({
17159
+ name: exports_external.string(),
17160
+ description: exports_external.string(),
17161
+ isGlobal: exports_external.boolean().optional()
17162
+ });
17163
+ var SkillItemSchema = exports_external.object({
17164
+ name: exports_external.string(),
17165
+ description: exports_external.string()
17166
+ });
17167
+ var SkillSyncRequestSchema = exports_external.object({
17168
+ scope: exports_external.enum(["global", "agent"]),
17169
+ agent_id: exports_external.string().min(1).optional(),
17170
+ daemon_id: exports_external.string().min(1).optional(),
17171
+ runtime: exports_external.enum(["claude", "codex", "opencode"]),
17172
+ skills: exports_external.array(SkillItemSchema)
17173
+ });
17174
+ var StudioMemberSchema = exports_external.object({
17175
+ name: exports_external.string().optional(),
17176
+ role: exports_external.enum(["leader", "researcher", "engineer", "assistant"]),
17177
+ runtime_id: exports_external.string().min(1, "runtime_id is required"),
17178
+ runtime_config: exports_external.object({ model: exports_external.string().max(100).optional() }).passthrough().optional(),
17179
+ description: exports_external.string().optional().default(""),
17180
+ instructions: exports_external.string().optional().default(""),
17181
+ avatar_url: exports_external.string().max(2000).nullable().optional(),
17182
+ email_handle: exports_external.string().max(30).optional(),
17183
+ relationship: exports_external.string().optional()
17184
+ });
17185
+ var CreateStudioRequestSchema = exports_external.object({
17186
+ name: exports_external.string().max(100).optional(),
17187
+ scenario: exports_external.string().max(50).optional(),
17188
+ members: exports_external.array(StudioMemberSchema).min(1).max(4)
17189
+ }).refine((v) => v.members.some((m) => m.role === "leader"), { message: "at least one member must have the leader role" });
17190
+ var RecruitAgentRequestSchema = exports_external.object({
17191
+ instructions: exports_external.string().min(1, "instructions is required"),
17192
+ relationship: exports_external.string().min(1, "relationship is required"),
17193
+ name: exports_external.string().optional(),
17194
+ description: exports_external.string().optional().default(""),
17195
+ model: exports_external.string().max(100).optional(),
17196
+ context_key: exports_external.string().optional()
17197
+ });
17198
+ var CreateThreadRequestSchema = exports_external.object({
17199
+ parent_message_id: exports_external.string().min(1),
17200
+ content: exports_external.string().optional().default(""),
17201
+ attachment_ids: exports_external.array(exports_external.string()).optional()
17202
+ });
17203
+ var COMMUNITY_RUNTIME_ID_MAX = 64;
17204
+ var COMMUNITY_RUNTIME_VERSION_MAX = 64;
17205
+ var COMMUNITY_RUNTIME_LIST_MAX = 64;
17206
+ var RUNTIME_ID_RE = /^[A-Za-z0-9._@/-]+$/;
17207
+ var CommunityMachineRuntimeSchema = exports_external.object({
17208
+ id: exports_external.string().min(1).max(COMMUNITY_RUNTIME_ID_MAX).regex(RUNTIME_ID_RE, "invalid runtime id charset"),
17209
+ version: exports_external.string().max(COMMUNITY_RUNTIME_VERSION_MAX).optional(),
17210
+ status: exports_external.enum(["healthy", "unhealthy"]).catch("healthy").default("healthy"),
17211
+ lastError: exports_external.string().max(128).optional(),
17212
+ lastErrorAt: exports_external.string().optional()
17213
+ });
17214
+ var CommunityMachineRuntimeListSchema = exports_external.array(CommunityMachineRuntimeSchema).max(COMMUNITY_RUNTIME_LIST_MAX).transform((list) => {
17215
+ const seen = new Set;
17216
+ const out = [];
17217
+ for (const r of list) {
17218
+ if (seen.has(r.id))
17219
+ continue;
17220
+ seen.add(r.id);
17221
+ out.push(r);
17222
+ }
17223
+ return out;
17224
+ });
17225
+ var CommunityMachineSummarySchema = exports_external.object({
17226
+ id: exports_external.string(),
17227
+ hostname: exports_external.string(),
17228
+ displayName: exports_external.string(),
17229
+ platform: exports_external.string(),
17230
+ arch: exports_external.string(),
17231
+ osRelease: exports_external.string(),
17232
+ daemonVersion: exports_external.string(),
17233
+ lastSeenAt: exports_external.string().nullable(),
17234
+ status: exports_external.enum(["online", "offline"]),
17235
+ availableRuntimes: exports_external.array(CommunityMachineRuntimeSchema).default([]),
17236
+ lastRuntimeError: exports_external.object({
17237
+ requested: exports_external.string(),
17238
+ available: exports_external.array(exports_external.string()),
17239
+ at: exports_external.string()
17240
+ }).optional(),
17241
+ createdAt: exports_external.string(),
17242
+ updatedAt: exports_external.string()
17243
+ });
17244
+ var HostReadyMessageSchema = exports_external.object({
17245
+ type: exports_external.literal("ready"),
17246
+ runtimeReport: CommunityMachineRuntimeListSchema,
17247
+ runningAgents: exports_external.array(exports_external.string()).default([]),
17248
+ hostname: exports_external.string().optional(),
17249
+ platform: exports_external.string().optional(),
17250
+ arch: exports_external.string().optional(),
17251
+ osRelease: exports_external.string().optional(),
17252
+ daemonVersion: exports_external.string().optional()
17253
+ });
17254
+ var CommunityDaemonReadySchema = exports_external.object({
17255
+ runtimeReport: CommunityMachineRuntimeListSchema.optional(),
17256
+ runningAgents: exports_external.array(exports_external.string()).default([]),
17257
+ hostname: exports_external.string().optional(),
17258
+ os: exports_external.string().optional(),
17259
+ arch: exports_external.string().optional(),
17260
+ osRelease: exports_external.string().optional(),
17261
+ daemonVersion: exports_external.string().optional()
17262
+ });
17263
+ var SessionErrorFrameSchema = exports_external.object({
17264
+ type: exports_external.literal("session.error"),
17265
+ code: exports_external.enum(["runtime_not_available"]),
17266
+ agentId: exports_external.string().optional(),
17267
+ launchId: exports_external.string().optional(),
17268
+ payload: exports_external.record(exports_external.string(), exports_external.unknown()).optional()
17269
+ });
17270
+ var AgentActivityMessageSchema = exports_external.object({
17271
+ type: exports_external.literal("agent_activity"),
17272
+ agentId: exports_external.string(),
17273
+ state: exports_external.enum(["idle", "starting", "running", "stopping"])
17274
+ });
17275
+ var AgentTypingMessageSchema = exports_external.object({
17276
+ type: exports_external.literal("agent_typing"),
17277
+ agentId: exports_external.string(),
17278
+ channelId: exports_external.string().min(1)
17279
+ });
17280
+ var AgentTypingStopMessageSchema = exports_external.object({
17281
+ type: exports_external.literal("agent_typing_stop"),
17282
+ agentId: exports_external.string(),
17283
+ channelId: exports_external.string().min(1)
17284
+ });
17285
+ var AgentSessionMessageSchema = exports_external.object({
17286
+ type: exports_external.literal("agent_session"),
17287
+ agentId: exports_external.string().min(1),
17288
+ sessionId: exports_external.string().min(1),
17289
+ launchId: exports_external.string().min(1)
17290
+ });
17291
+ var AgentWakeAckMessageSchema = exports_external.object({
17292
+ type: exports_external.literal("agent_wake_ack"),
17293
+ agentId: exports_external.string().min(1),
17294
+ launchId: exports_external.string().min(1),
17295
+ status: exports_external.enum(["ok", "error"]),
17296
+ error: exports_external.object({ code: exports_external.string().optional(), message: exports_external.string().optional() }).optional()
17297
+ });
17298
+ var CommunityPairTokenResponseSchema = exports_external.object({
17299
+ tokenId: exports_external.string(),
17300
+ expiresAt: exports_external.string()
17301
+ });
17302
+ var CommunityDaemonActivateRequestSchema = exports_external.object({
17303
+ hostname: exports_external.string(),
17304
+ platform: exports_external.string(),
17305
+ arch: exports_external.string(),
17306
+ osRelease: exports_external.string().optional(),
17307
+ daemonVersion: exports_external.string().optional(),
17308
+ runtimeReport: CommunityMachineRuntimeListSchema.optional()
17309
+ });
17310
+ var CommunityDaemonActivateResponseSchema = exports_external.object({
17311
+ credential: exports_external.string(),
17312
+ machineId: exports_external.string(),
17313
+ expiresAt: exports_external.string().nullable()
17314
+ });
17315
+ var CommunityDaemonEnrollAgentRequestSchema = exports_external.object({
17316
+ agentId: exports_external.string().min(1).max(128)
17317
+ });
17318
+ var CommunityDaemonEnrollAgentResponseSchema = exports_external.object({
17319
+ runnerKey: exports_external.string(),
17320
+ expiresAt: exports_external.string().nullable()
17321
+ });
17322
+ var isMentionSafeName = (name) => validateCommunityName(name).ok;
17323
+ var MENTION_SAFE_NAME_MSG = "name cannot contain #, @, or line breaks";
17324
+ var BOT_AVATAR_ROUTE_PATTERN = /^\/api\/community\/bots\/[A-Za-z0-9_-]+\/avatar$/;
17325
+ var BotImageUrlSchema = exports_external.string().max(COMMUNITY_BOT_IMAGE_URL_MAX).refine((v) => v.startsWith("https://") || v.startsWith("avatar:") || BOT_AVATAR_ROUTE_PATTERN.test(v), {
17326
+ message: "image must be an https URL, the bot avatar route, or an avatar: config"
17327
+ });
17328
+ var CommunityBotCreateRequestSchema = exports_external.object({
17329
+ name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }),
17330
+ description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
17331
+ machineId: exports_external.string().min(1),
17332
+ runtime: exports_external.string().min(1),
17333
+ image: BotImageUrlSchema.optional(),
17334
+ model: exports_external.string().trim().min(1).max(100).nullable().optional()
17335
+ });
17336
+ var CommunityBotPatchRequestSchema = exports_external.object({
17337
+ name: exports_external.string().trim().min(COMMUNITY_BOT_NAME_MIN).max(COMMUNITY_BOT_NAME_MAX).refine(isMentionSafeName, { message: MENTION_SAFE_NAME_MSG }).optional(),
17338
+ description: exports_external.string().max(COMMUNITY_BOT_DESCRIPTION_MAX).optional(),
17339
+ image: BotImageUrlSchema.nullable().optional(),
17340
+ model: exports_external.string().trim().min(1).max(100).nullable().optional(),
17341
+ runtime: exports_external.string().trim().min(1).max(COMMUNITY_RUNTIME_ID_MAX).optional()
17342
+ }).refine((v) => v.name !== undefined || v.description !== undefined || v.image !== undefined || v.runtime !== undefined || ("model" in v), {
17343
+ message: "at least one field must be provided"
17344
+ });
17345
+ var CommunityBotAddToServerRequestSchema = exports_external.object({
17346
+ botId: exports_external.string().min(1)
17347
+ });
17348
+ var CommunityAgentMessageContentSchema = exports_external.object({ text: exports_external.string().max(MAX_MESSAGE_CONTENT_LENGTH).default("") }).catchall(exports_external.unknown());
17349
+ var CommunityAgentSeqSchema = exports_external.number().int().min(0);
17350
+ var CommunityAgentPositiveSeqSchema = exports_external.number().int().min(1);
17351
+ var CommunityAgentCursorSchema = exports_external.object({
17352
+ channel: exports_external.string().min(1),
17353
+ seq: CommunityAgentPositiveSeqSchema
17354
+ });
17355
+ var CommunityAgentSendRequestSchema = exports_external.object({
17356
+ channel: exports_external.string().min(1),
17357
+ content: CommunityAgentMessageContentSchema,
17358
+ attachments: exports_external.array(exports_external.string().min(1)).max(MAX_ATTACHMENTS_PER_MESSAGE).default([]),
17359
+ seenUpToSeq: CommunityAgentSeqSchema.optional(),
17360
+ replyToSeq: CommunityAgentPositiveSeqSchema.optional(),
17361
+ nonce: exports_external.string().min(1).max(128).optional()
17362
+ }).refine((d) => d.content.text.trim().length > 0 || d.attachments.length > 0, { message: "message must have text or attachments" });
17363
+ var CommunityAgentAttachmentUploadResponseSchema = exports_external.object({
17364
+ id: exports_external.string(),
17365
+ filename: exports_external.string(),
17366
+ contentType: exports_external.string(),
17367
+ size: exports_external.number()
17368
+ });
17369
+ var CommunityAgentAttachmentDownloadRequestSchema = exports_external.object({
17370
+ id: exports_external.string().min(1)
17371
+ });
17372
+ var CommunityAgentInboxPullRequestSchema = exports_external.object({
17373
+ max: exports_external.number().int().min(1).max(200).optional()
17374
+ });
17375
+ var CommunityAgentAckRequestSchema = exports_external.object({
17376
+ cursors: exports_external.array(CommunityAgentCursorSchema).min(1)
17377
+ });
17378
+ var CommunityAgentReadRequestSchema = exports_external.object({
17379
+ channel: exports_external.string().min(1),
17380
+ before: CommunityAgentSeqSchema.optional(),
17381
+ after: CommunityAgentSeqSchema.optional(),
17382
+ around: CommunityAgentSeqSchema.optional(),
17383
+ limit: exports_external.number().int().min(1).max(200).optional()
17384
+ }).refine((v) => [v.before, v.after, v.around].filter((x) => x !== undefined).length <= 1, { message: "at most one of before/after/around may be supplied" });
17385
+ var CommunityAgentResolveRequestSchema = exports_external.object({
17386
+ channel: exports_external.string().min(1),
17387
+ seq: CommunityAgentSeqSchema
17388
+ });
17389
+ var CommunityAgentListChannelsRequestSchema = exports_external.object({
17390
+ server: exports_external.string().min(1).optional()
17391
+ });
17392
+ var CommunityAgentCreatePostRequestSchema = exports_external.object({
17393
+ forum: exports_external.string().min(1),
17394
+ title: exports_external.string().min(1),
17395
+ content: CommunityAgentMessageContentSchema,
17396
+ attachments: exports_external.array(exports_external.string().min(1)).max(MAX_ATTACHMENTS_PER_MESSAGE).default([]),
17397
+ nonce: exports_external.string().min(1).max(128).optional()
17398
+ }).refine((d) => d.content.text.trim().length > 0 || d.attachments.length > 0, { message: "post must have text or attachments" });
17399
+ var CommunityAgentListMembersRequestSchema = exports_external.object({
17400
+ server: exports_external.string().min(1),
17401
+ limit: exports_external.number().int().positive().optional(),
17402
+ cursor: exports_external.string().min(1).optional()
17403
+ });
17404
+ var CommunityAgentChannelMemberRequestSchema = exports_external.object({
17405
+ channel: exports_external.string().min(1),
17406
+ agentId: exports_external.string().optional()
17407
+ });
17408
+ var CommunityAgentJoinServerRequestSchema = exports_external.object({
17409
+ invite: exports_external.string().min(1)
17410
+ });
17411
+ var CommunityAgentNapRequestSchema = exports_external.object({
17412
+ handoff: exports_external.string().trim().min(1)
17413
+ });
17414
+ var CommunityAgentReactAddRequestSchema = exports_external.object({
17415
+ channel: exports_external.string().min(1),
17416
+ seq: CommunityAgentPositiveSeqSchema,
17417
+ emoji: exports_external.string().min(1)
17418
+ });
17419
+ var CommunityAgentFriendRequestSchema = exports_external.object({
17420
+ username: exports_external.string().min(1)
17421
+ });
17422
+ var CommunityAgentListFriendsSchema = exports_external.object({});
17423
+ var AuditLogCliInvocationPayloadSchema = exports_external.object({
17424
+ subcommand: exports_external.string().min(1)
17425
+ });
17426
+ var AuditLogToolCallPayloadSchema = exports_external.object({
17427
+ name: exports_external.string().min(1),
17428
+ target: exports_external.string().max(240).optional()
17429
+ });
17430
+ var AuditLogThinkingPayloadSchema = exports_external.object({
17431
+ text: exports_external.string(),
17432
+ truncated: exports_external.boolean(),
17433
+ chars: exports_external.number().int().nonnegative()
17434
+ });
17435
+ var AuditLogWakeTriggerPayloadSchema = exports_external.object({
17436
+ messageId: exports_external.string().min(1),
17437
+ channel: exports_external.string().min(1),
17438
+ seq: CommunityAgentPositiveSeqSchema,
17439
+ senderId: exports_external.string().min(1),
17440
+ senderHandle: exports_external.string().min(1),
17441
+ reason: exports_external.enum(["unread", "mention"])
17442
+ });
17443
+ var AuditLogSessionResetPayloadSchema = exports_external.object({
17444
+ trigger: exports_external.enum(["single", "reset_all"])
17445
+ });
17446
+ var AuditLogNapPayloadSchema = exports_external.object({
17447
+ trigger: exports_external.literal("nap")
17448
+ });
17449
+ var AuditLogModelChangedPayloadSchema = exports_external.object({
17450
+ from: exports_external.string().nullable(),
17451
+ to: exports_external.string().nullable()
17452
+ });
17453
+ var AuditLogProviderChangedPayloadSchema = exports_external.object({
17454
+ from: exports_external.string().min(1),
17455
+ to: exports_external.string().min(1)
17456
+ });
17457
+ var AuditLogErrorPayloadSchema = exports_external.object({
17458
+ scope: exports_external.enum(["spawn", "runtime", "exit", "handshake_timeout", "model_switch", "reset"]),
17459
+ code: exports_external.string().min(1).max(120),
17460
+ message: exports_external.string().max(2048),
17461
+ model: exports_external.string().nullable()
17462
+ });
17463
+ var BotAuditEventSchema = exports_external.discriminatedUnion("kind", [
17464
+ exports_external.object({ kind: exports_external.literal("cli_invocation"), payload: AuditLogCliInvocationPayloadSchema }),
17465
+ exports_external.object({ kind: exports_external.literal("tool_call"), payload: AuditLogToolCallPayloadSchema }),
17466
+ exports_external.object({ kind: exports_external.literal("thinking"), payload: AuditLogThinkingPayloadSchema }),
17467
+ exports_external.object({ kind: exports_external.literal("wake_trigger"), payload: AuditLogWakeTriggerPayloadSchema }),
17468
+ exports_external.object({ kind: exports_external.literal("session_reset"), payload: AuditLogSessionResetPayloadSchema }),
17469
+ exports_external.object({ kind: exports_external.literal("nap"), payload: AuditLogNapPayloadSchema }),
17470
+ exports_external.object({ kind: exports_external.literal("model_changed"), payload: AuditLogModelChangedPayloadSchema }),
17471
+ exports_external.object({ kind: exports_external.literal("provider_changed"), payload: AuditLogProviderChangedPayloadSchema }),
17472
+ exports_external.object({ kind: exports_external.literal("error"), payload: AuditLogErrorPayloadSchema })
17252
17473
  ]);
17253
- var agentSkill = sqliteTable("agent_skill", {
17254
- id: text("id").primaryKey().$defaultFn(() => "as_" + nanoid3()),
17255
- workspaceId: text("workspace_id").notNull().references(() => workspace.id, { onDelete: "cascade" }),
17256
- agentId: text("agent_id"),
17257
- daemonId: text("daemon_id"),
17258
- runtime: text("runtime").notNull(),
17259
- name: text("name").notNull(),
17260
- description: text("description").notNull().default(""),
17261
- syncedAt: text("synced_at").notNull().$defaultFn(() => new Date().toISOString())
17262
- }, (t) => [
17263
- unique("agent_skill_ws_runtime_name_agent_daemon").on(t.workspaceId, t.runtime, t.name, t.agentId, t.daemonId),
17264
- index("idx_as_workspace_runtime").on(t.workspaceId, t.runtime),
17265
- index("idx_as_agent_runtime").on(t.agentId, t.runtime),
17266
- foreignKey({
17267
- columns: [t.agentId, t.workspaceId],
17268
- foreignColumns: [agent.id, agent.workspaceId]
17269
- }).onDelete("cascade")
17474
+ var BotAuditEventKindSchema = exports_external.enum([
17475
+ "cli_invocation",
17476
+ "tool_call",
17477
+ "thinking",
17478
+ "wake_trigger",
17479
+ "session_reset",
17480
+ "nap",
17481
+ "model_changed",
17482
+ "provider_changed",
17483
+ "error"
17270
17484
  ]);
17271
- var inboxUnread = sqliteTable("inbox_unread", {
17272
- id: text("id").primaryKey().$defaultFn(() => nanoid3()),
17273
- conversationId: text("conversation_id").notNull().references(() => conversation.id, { onDelete: "cascade" }),
17274
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17275
- workspaceId: text("workspace_id").notNull(),
17276
- agentId: text("agent_id").notNull(),
17277
- taskId: text("task_id").notNull(),
17278
- taskType: text("task_type").notNull(),
17279
- taskStatus: text("task_status").notNull(),
17280
- taskPrompt: text("task_prompt"),
17281
- completedAt: text("completed_at").notNull(),
17282
- latestMessageId: text("latest_message_id")
17283
- }, (t) => [
17284
- unique("inbox_unread_conv_user").on(t.conversationId, t.userId),
17285
- index("idx_inbox_unread_user_ws").on(t.userId, t.workspaceId, t.taskType, t.completedAt)
17485
+ var HostBotAuditEventFrameSchema = exports_external.object({
17486
+ type: exports_external.literal("bot_audit_event"),
17487
+ agentId: exports_external.string().min(1),
17488
+ sessionId: exports_external.string().nullable().optional(),
17489
+ launchId: exports_external.string().nullable().optional(),
17490
+ event: BotAuditEventSchema
17491
+ });
17492
+ // ../shared/src/community-cli-contract.ts
17493
+ var HostCommandSchema = exports_external.discriminatedUnion("type", [
17494
+ exports_external.object({
17495
+ type: exports_external.literal("agent:wake"),
17496
+ agentId: exports_external.string().min(1),
17497
+ config: exports_external.unknown(),
17498
+ sessionId: exports_external.string().optional(),
17499
+ launchId: exports_external.string().min(1),
17500
+ unreadNotice: exports_external.unknown()
17501
+ }),
17502
+ exports_external.object({
17503
+ type: exports_external.literal("agent:stop"),
17504
+ agentId: exports_external.string().min(1)
17505
+ }),
17506
+ exports_external.object({
17507
+ type: exports_external.literal("agent:reset"),
17508
+ agentId: exports_external.string().min(1),
17509
+ config: exports_external.unknown(),
17510
+ launchId: exports_external.string().min(1)
17511
+ }),
17512
+ exports_external.object({
17513
+ type: exports_external.literal("agent:nap"),
17514
+ agentId: exports_external.string().min(1),
17515
+ config: exports_external.unknown(),
17516
+ launchId: exports_external.string().min(1),
17517
+ handoff: exports_external.string().min(1)
17518
+ }),
17519
+ exports_external.object({
17520
+ type: exports_external.literal("agent:model_switch"),
17521
+ agentId: exports_external.string().min(1),
17522
+ config: exports_external.unknown(),
17523
+ launchId: exports_external.string().min(1)
17524
+ }),
17525
+ exports_external.object({
17526
+ type: exports_external.literal("machine:reset_all"),
17527
+ resets: exports_external.array(exports_external.object({
17528
+ agentId: exports_external.string().min(1),
17529
+ config: exports_external.unknown(),
17530
+ launchId: exports_external.string().min(1)
17531
+ }))
17532
+ }),
17533
+ exports_external.object({
17534
+ type: exports_external.literal("bot:added"),
17535
+ botId: exports_external.string().min(1),
17536
+ name: exports_external.string().optional(),
17537
+ discriminator: exports_external.string().optional(),
17538
+ description: exports_external.string().optional(),
17539
+ ownerName: exports_external.string().optional(),
17540
+ ownerDiscriminator: exports_external.string().optional()
17541
+ }),
17542
+ exports_external.object({
17543
+ type: exports_external.literal("bot:updated"),
17544
+ botId: exports_external.string().min(1),
17545
+ name: exports_external.string().optional(),
17546
+ discriminator: exports_external.string().optional(),
17547
+ description: exports_external.string().optional(),
17548
+ ownerName: exports_external.string().optional(),
17549
+ ownerDiscriminator: exports_external.string().optional()
17550
+ }),
17551
+ exports_external.object({
17552
+ type: exports_external.literal("bot:removed"),
17553
+ botId: exports_external.string().min(1)
17554
+ }),
17555
+ DiagnosticCollectCommandSchema
17286
17556
  ]);
17287
-
17288
17557
  // ../shared/src/db/community-schema.ts
17558
+ var exports_community_schema = {};
17559
+ __export(exports_community_schema, {
17560
+ communityUserProfile: () => communityUserProfile,
17561
+ communityServerMember: () => communityServerMember,
17562
+ communityServerInvite: () => communityServerInvite,
17563
+ communityServerFolderItem: () => communityServerFolderItem,
17564
+ communityServerFolder: () => communityServerFolder,
17565
+ communityServer: () => communityServer,
17566
+ communityReadState: () => communityReadState,
17567
+ communityReaction: () => communityReaction,
17568
+ communityPin: () => communityPin,
17569
+ communityNotificationSetting: () => communityNotificationSetting,
17570
+ communityMessageTag: () => communityMessageTag,
17571
+ communityMessageSeq: () => communityMessageSeq,
17572
+ communityMessageMark: () => communityMessageMark,
17573
+ communityMessage: () => communityMessage,
17574
+ communityMention: () => communityMention,
17575
+ communityFriendship: () => communityFriendship,
17576
+ communityChannelMember: () => communityChannelMember,
17577
+ communityChannel: () => communityChannel,
17578
+ communityCategory: () => communityCategory,
17579
+ communityBotDailyActivity: () => communityBotDailyActivity,
17580
+ communityBotApprovalRequest: () => communityBotApprovalRequest,
17581
+ communityBotActivityEvent: () => communityBotActivityEvent,
17582
+ communityAttachment: () => communityAttachment
17583
+ });
17584
+ init_nanoid();
17289
17585
  var communityServer = sqliteTable("community_server", {
17290
17586
  id: text("id").primaryKey().$defaultFn(() => nanoid3()),
17291
17587
  name: text("name").notNull(),
@@ -17494,23 +17790,6 @@ var communityNotificationSetting = sqliteTable("community_notification_setting",
17494
17790
  }),
17495
17791
  level: text("level").notNull().default("all")
17496
17792
  }, (t) => [index("idx_notification_setting_user").on(t.userId)]);
17497
- var communityAuditLog = sqliteTable("community_audit_log", {
17498
- id: text("id").primaryKey().$defaultFn(() => nanoid3()),
17499
- serverId: text("server_id").references(() => communityServer.id, {
17500
- onDelete: "cascade"
17501
- }),
17502
- actorId: text("actor_id").references(() => user.id, { onDelete: "set null" }),
17503
- action: text("action").notNull(),
17504
- targetType: text("target_type").notNull(),
17505
- targetId: text("target_id").notNull(),
17506
- changes: text("changes"),
17507
- reason: text("reason"),
17508
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
17509
- }, (t) => [
17510
- index("idx_audit_log_server_created").on(t.serverId, t.createdAt),
17511
- index("idx_audit_log_server_action").on(t.serverId, t.action),
17512
- index("idx_audit_log_actor_created").on(t.actorId, t.createdAt)
17513
- ]);
17514
17793
  var communityBotApprovalRequest = sqliteTable("community_bot_approval_request", {
17515
17794
  id: text("id").primaryKey().$defaultFn(() => "bar_" + nanoid3()),
17516
17795
  botId: text("bot_id").notNull().references(() => user.id, { onDelete: "cascade" }),
@@ -17668,81 +17947,6 @@ var listedMessageProjection = {
17668
17947
  authorImage: user.image
17669
17948
  };
17670
17949
 
17671
- // ../shared/src/db/community-machine-schema.ts
17672
- var exports_community_machine_schema = {};
17673
- __export(exports_community_machine_schema, {
17674
- communityMachineToken: () => communityMachineToken,
17675
- communityMachineCredential: () => communityMachineCredential,
17676
- communityMachine: () => communityMachine,
17677
- communityBotBinding: () => communityBotBinding,
17678
- communityAgentRunnerKey: () => communityAgentRunnerKey
17679
- });
17680
- init_nanoid();
17681
- var communityMachineToken = sqliteTable("community_machine_token", {
17682
- id: text("id").primaryKey().$defaultFn(() => "cmt_" + nanoid3(32)),
17683
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17684
- machineId: text("machine_id"),
17685
- status: text("status").notNull().default("pending"),
17686
- expiresAt: text("expires_at").notNull(),
17687
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17688
- lastUsedAt: text("last_used_at")
17689
- }, (t) => [
17690
- index("idx_community_machine_token_user_status").on(t.userId, t.status),
17691
- uniqueIndex("uq_community_machine_token_user_pending").on(t.userId).where(sql`status = 'pending'`)
17692
- ]);
17693
- var communityMachine = sqliteTable("community_machine", {
17694
- id: text("id").primaryKey().$defaultFn(() => "cm_" + nanoid3()),
17695
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17696
- displayName: text("display_name").notNull().default(""),
17697
- hostname: text("hostname").notNull().default(""),
17698
- platform: text("platform").notNull().default(""),
17699
- arch: text("arch").notNull().default(""),
17700
- osRelease: text("os_release").notNull().default(""),
17701
- daemonVersion: text("daemon_version").notNull().default(""),
17702
- metadata: text("metadata"),
17703
- availableRuntimes: text("available_runtimes", { mode: "json" }).$type().notNull().default([]),
17704
- status: text("status").notNull().default("offline"),
17705
- lastSeenAt: text("last_seen_at"),
17706
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17707
- updatedAt: text("updated_at").notNull().$defaultFn(() => new Date().toISOString())
17708
- }, (t) => [
17709
- index("idx_community_machine_user_last_seen").on(t.userId, t.lastSeenAt),
17710
- index("idx_community_machine_user_updated").on(t.userId, t.updatedAt),
17711
- index("idx_community_machine_user_status").on(t.userId, t.status)
17712
- ]);
17713
- var communityMachineCredential = sqliteTable("community_machine_credential", {
17714
- id: text("id").primaryKey().$defaultFn(() => "cmkid_" + nanoid3()),
17715
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17716
- machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "cascade" }),
17717
- credentialHash: text("credential_hash").notNull().unique(),
17718
- doName: text("do_name").notNull().unique(),
17719
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17720
- lastUsedAt: text("last_used_at"),
17721
- revokedAt: text("revoked_at")
17722
- }, (t) => [
17723
- index("idx_community_machine_credential_user").on(t.userId),
17724
- index("idx_community_machine_credential_machine").on(t.machineId)
17725
- ]);
17726
- var communityBotBinding = sqliteTable("community_bot_binding", {
17727
- userId: text("user_id").primaryKey().references(() => user.id, { onDelete: "cascade" }),
17728
- machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "restrict" }),
17729
- runtime: text("runtime").notNull(),
17730
- modelName: text("model_name"),
17731
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString())
17732
- }, (t) => [index("idx_community_bot_binding_machine").on(t.machineId)]);
17733
- var communityAgentRunnerKey = sqliteTable("community_agent_runner_key", {
17734
- id: text("id").primaryKey().$defaultFn(() => "crkid_" + nanoid3()),
17735
- userId: text("user_id").notNull().references(() => user.id, { onDelete: "cascade" }),
17736
- machineId: text("machine_id").notNull().references(() => communityMachine.id, { onDelete: "cascade" }),
17737
- agentId: text("agent_id").notNull(),
17738
- runnerKeyHash: text("runner_key_hash").notNull().unique(),
17739
- doName: text("do_name").notNull().unique(),
17740
- createdAt: text("created_at").notNull().$defaultFn(() => new Date().toISOString()),
17741
- revokedAt: text("revoked_at")
17742
- }, (t) => [
17743
- index("idx_community_agent_runner_key_machine_agent").on(t.machineId, t.agentId)
17744
- ]);
17745
-
17746
17950
  // ../shared/src/db/queries/user.ts
17747
17951
  var publicUserColumns = {
17748
17952
  id: user.id,
@@ -18309,6 +18513,8 @@ function toAlookAddress(h) {
18309
18513
  var FTS_KEYWORDS = new Set(["and", "or", "not", "near"]);
18310
18514
  // ../shared/src/db/queries/community/server-folder.ts
18311
18515
  var FOLDER_ITEM_INSERT_MAX_ROWS = maxRowsPerInsert(3);
18516
+ // ../shared/src/db/queries/community/diagnostic-report.ts
18517
+ var diagnosticOwner = alias(user, "diagnostic_owner");
18312
18518
  // ../shared/src/mode.ts
18313
18519
  function isLocalUrl(url2) {
18314
18520
  try {
@@ -20712,10 +20918,10 @@ function ensureSymlinks(workDir) {
20712
20918
  const canonicalPath = join2(workDir, CANONICAL_FILE);
20713
20919
  if (!existsSync(canonicalPath))
20714
20920
  return;
20715
- for (const alias of SYMLINK_ALIASES) {
20716
- if (alias === CANONICAL_FILE)
20921
+ for (const alias2 of SYMLINK_ALIASES) {
20922
+ if (alias2 === CANONICAL_FILE)
20717
20923
  continue;
20718
- const aliasPath = join2(workDir, alias);
20924
+ const aliasPath = join2(workDir, alias2);
20719
20925
  try {
20720
20926
  const stat = lstatSync(aliasPath);
20721
20927
  if (stat.isSymbolicLink()) {