botnote 0.1.28 → 0.1.30

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 (47) hide show
  1. package/README.md +13 -4
  2. package/dist/bin.js +27 -8
  3. package/dist/bin.js.map +1 -1
  4. package/dist/cli.js +24 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/db/migrations/0018_project_archived_at.sql +8 -0
  7. package/dist/db/migrations/0019_project_status.sql +20 -0
  8. package/dist/db/migrations/0020_project_archived_status.sql +20 -0
  9. package/dist/db/migrations/0021_workspace_settings.sql +18 -0
  10. package/dist/db/migrations/0022_recurrence_split.sql +13 -0
  11. package/dist/db/schema.d.ts +112 -0
  12. package/dist/db/schema.js +14 -1
  13. package/dist/db/schema.js.map +1 -1
  14. package/dist/mcp/http-client.d.ts +18 -1
  15. package/dist/mcp/http-client.js +25 -2
  16. package/dist/mcp/http-client.js.map +1 -1
  17. package/dist/mcp/server.js +75 -15
  18. package/dist/mcp/server.js.map +1 -1
  19. package/dist/rest/routes.js +120 -17
  20. package/dist/rest/routes.js.map +1 -1
  21. package/dist/service/dates.d.ts +11 -0
  22. package/dist/service/dates.js +31 -0
  23. package/dist/service/dates.js.map +1 -1
  24. package/dist/service/entities.js +52 -3
  25. package/dist/service/entities.js.map +1 -1
  26. package/dist/service/projects.d.ts +2 -2
  27. package/dist/service/projects.js +15 -4
  28. package/dist/service/projects.js.map +1 -1
  29. package/dist/service/recurrence.d.ts +64 -1
  30. package/dist/service/recurrence.js +382 -22
  31. package/dist/service/recurrence.js.map +1 -1
  32. package/dist/service/search.js +9 -4
  33. package/dist/service/search.js.map +1 -1
  34. package/dist/service/tasks.d.ts +15 -0
  35. package/dist/service/tasks.js +179 -3
  36. package/dist/service/tasks.js.map +1 -1
  37. package/dist/service/types.d.ts +133 -7
  38. package/dist/service/types.js +47 -7
  39. package/dist/service/types.js.map +1 -1
  40. package/dist/service/workspace_settings.d.ts +8 -0
  41. package/dist/service/workspace_settings.js +53 -0
  42. package/dist/service/workspace_settings.js.map +1 -0
  43. package/package.json +1 -1
  44. package/web/dist/assets/index-Bt8xPxDL.css +1 -0
  45. package/web/dist/assets/{index-D-Ojc9qs.js → index-DyioCifb.js} +139 -134
  46. package/web/dist/index.html +2 -2
  47. package/web/dist/assets/index-BLQefDfj.css +0 -1
@@ -2,6 +2,7 @@ import { z } from "zod";
2
2
  export declare const EntityKindEnum: z.ZodEnum<["task", "note"]>;
3
3
  export declare const ActorKindEnum: z.ZodEnum<["human", "agent", "system"]>;
4
4
  export declare const EdgeKindEnum: z.ZodEnum<["blocks", "references", "parent_of"]>;
5
+ export declare const ProjectStatusEnum: z.ZodEnum<["planned", "active", "watching", "paused", "archived"]>;
5
6
  export declare const PriorityEnum: z.ZodEnum<["urgent", "high", "medium", "low", "none"]>;
6
7
  export declare const RecurrenceAnchorEnum: z.ZodEnum<["scheduled", "completion"]>;
7
8
  export declare const RecurrenceFrequencyEnum: z.ZodEnum<["hourly", "daily", "weekly", "monthly", "yearly"]>;
@@ -150,6 +151,7 @@ export declare const UpdateInput: z.ZodObject<{
150
151
  dueAt: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
151
152
  priority: z.ZodOptional<z.ZodEnum<["urgent", "high", "medium", "low", "none"]>>;
152
153
  pinned: z.ZodOptional<z.ZodBoolean>;
154
+ recurrenceScope: z.ZodOptional<z.ZodEnum<["this", "future"]>>;
153
155
  }, "strip", z.ZodTypeAny, {
154
156
  status?: "open" | "in_progress" | "done" | "rejected" | undefined;
155
157
  priority?: "none" | "urgent" | "high" | "medium" | "low" | undefined;
@@ -160,6 +162,7 @@ export declare const UpdateInput: z.ZodObject<{
160
162
  metadata?: Record<string, unknown> | undefined;
161
163
  dueAt?: Date | null | undefined;
162
164
  pinned?: boolean | undefined;
165
+ recurrenceScope?: "this" | "future" | undefined;
163
166
  }, {
164
167
  status?: unknown;
165
168
  priority?: "none" | "urgent" | "high" | "medium" | "low" | undefined;
@@ -170,6 +173,7 @@ export declare const UpdateInput: z.ZodObject<{
170
173
  metadata?: Record<string, unknown> | undefined;
171
174
  dueAt?: Date | null | undefined;
172
175
  pinned?: boolean | undefined;
176
+ recurrenceScope?: "this" | "future" | undefined;
173
177
  }>;
174
178
  export type UpdateInput = z.infer<typeof UpdateInput>;
175
179
  export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
@@ -183,13 +187,12 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
183
187
  until: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
184
188
  count: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
185
189
  dtstart: z.ZodOptional<z.ZodDate>;
186
- timezone: z.ZodDefault<z.ZodString>;
190
+ timezone: z.ZodOptional<z.ZodString>;
187
191
  allDay: z.ZodDefault<z.ZodBoolean>;
188
192
  anchor: z.ZodDefault<z.ZodEnum<["scheduled", "completion"]>>;
189
193
  }, "strip", z.ZodTypeAny, {
190
194
  anchor: "scheduled" | "completion";
191
195
  interval: number;
192
- timezone: string;
193
196
  allDay: boolean;
194
197
  rrule?: string | undefined;
195
198
  dtstart?: Date | undefined;
@@ -199,6 +202,7 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
199
202
  byMonth?: number[] | undefined;
200
203
  until?: Date | null | undefined;
201
204
  count?: number | null | undefined;
205
+ timezone?: string | undefined;
202
206
  bySetPos?: number | undefined;
203
207
  }, {
204
208
  anchor?: "scheduled" | "completion" | undefined;
@@ -217,7 +221,6 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
217
221
  }>, {
218
222
  anchor: "scheduled" | "completion";
219
223
  interval: number;
220
- timezone: string;
221
224
  allDay: boolean;
222
225
  rrule?: string | undefined;
223
226
  dtstart?: Date | undefined;
@@ -227,6 +230,7 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
227
230
  byMonth?: number[] | undefined;
228
231
  until?: Date | null | undefined;
229
232
  count?: number | null | undefined;
233
+ timezone?: string | undefined;
230
234
  bySetPos?: number | undefined;
231
235
  }, {
232
236
  anchor?: "scheduled" | "completion" | undefined;
@@ -245,7 +249,6 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
245
249
  }>, {
246
250
  anchor: "scheduled" | "completion";
247
251
  interval: number;
248
- timezone: string;
249
252
  allDay: boolean;
250
253
  rrule?: string | undefined;
251
254
  dtstart?: Date | undefined;
@@ -255,6 +258,7 @@ export declare const RecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
255
258
  byMonth?: number[] | undefined;
256
259
  until?: Date | null | undefined;
257
260
  count?: number | null | undefined;
261
+ timezone?: string | undefined;
258
262
  bySetPos?: number | undefined;
259
263
  }, {
260
264
  anchor?: "scheduled" | "completion" | undefined;
@@ -283,7 +287,7 @@ export declare const UpdateRecurrenceInput: z.ZodObject<{
283
287
  until: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodDate>>>;
284
288
  count: z.ZodOptional<z.ZodOptional<z.ZodNullable<z.ZodNumber>>>;
285
289
  dtstart: z.ZodOptional<z.ZodOptional<z.ZodDate>>;
286
- timezone: z.ZodOptional<z.ZodDefault<z.ZodString>>;
290
+ timezone: z.ZodOptional<z.ZodOptional<z.ZodString>>;
287
291
  allDay: z.ZodOptional<z.ZodDefault<z.ZodBoolean>>;
288
292
  anchor: z.ZodOptional<z.ZodDefault<z.ZodEnum<["scheduled", "completion"]>>>;
289
293
  } & {
@@ -328,6 +332,103 @@ export declare const StopRecurrenceInput: z.ZodObject<{
328
332
  reason?: string | undefined;
329
333
  }>;
330
334
  export type StopRecurrenceInput = z.infer<typeof StopRecurrenceInput>;
335
+ /** Fork a recurrence series at its current occurrence: freeze the old rule and
336
+ * apply a new cadence going forward. No dtstart — the fork point is derived
337
+ * from the current occurrence. allDay/timezone/anchor inherit the old rule when
338
+ * omitted. */
339
+ export declare const SplitRecurrenceInput: z.ZodEffects<z.ZodEffects<z.ZodObject<{
340
+ rrule: z.ZodOptional<z.ZodString>;
341
+ preset: z.ZodOptional<z.ZodEnum<["hourly", "daily", "weekly", "monthly", "yearly"]>>;
342
+ interval: z.ZodDefault<z.ZodNumber>;
343
+ byWeekday: z.ZodOptional<z.ZodArray<z.ZodEnum<["MO", "TU", "WE", "TH", "FR", "SA", "SU"]>, "many">>;
344
+ byMonthDay: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
345
+ bySetPos: z.ZodOptional<z.ZodNumber>;
346
+ byMonth: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
347
+ until: z.ZodOptional<z.ZodNullable<z.ZodDate>>;
348
+ count: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
349
+ timezone: z.ZodOptional<z.ZodString>;
350
+ allDay: z.ZodOptional<z.ZodBoolean>;
351
+ anchor: z.ZodOptional<z.ZodEnum<["scheduled", "completion"]>>;
352
+ }, "strip", z.ZodTypeAny, {
353
+ interval: number;
354
+ anchor?: "scheduled" | "completion" | undefined;
355
+ rrule?: string | undefined;
356
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
357
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
358
+ byMonthDay?: number[] | undefined;
359
+ byMonth?: number[] | undefined;
360
+ until?: Date | null | undefined;
361
+ count?: number | null | undefined;
362
+ timezone?: string | undefined;
363
+ allDay?: boolean | undefined;
364
+ bySetPos?: number | undefined;
365
+ }, {
366
+ anchor?: "scheduled" | "completion" | undefined;
367
+ rrule?: string | undefined;
368
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
369
+ interval?: number | undefined;
370
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
371
+ byMonthDay?: number[] | undefined;
372
+ byMonth?: number[] | undefined;
373
+ until?: Date | null | undefined;
374
+ count?: number | null | undefined;
375
+ timezone?: string | undefined;
376
+ allDay?: boolean | undefined;
377
+ bySetPos?: number | undefined;
378
+ }>, {
379
+ interval: number;
380
+ anchor?: "scheduled" | "completion" | undefined;
381
+ rrule?: string | undefined;
382
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
383
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
384
+ byMonthDay?: number[] | undefined;
385
+ byMonth?: number[] | undefined;
386
+ until?: Date | null | undefined;
387
+ count?: number | null | undefined;
388
+ timezone?: string | undefined;
389
+ allDay?: boolean | undefined;
390
+ bySetPos?: number | undefined;
391
+ }, {
392
+ anchor?: "scheduled" | "completion" | undefined;
393
+ rrule?: string | undefined;
394
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
395
+ interval?: number | undefined;
396
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
397
+ byMonthDay?: number[] | undefined;
398
+ byMonth?: number[] | undefined;
399
+ until?: Date | null | undefined;
400
+ count?: number | null | undefined;
401
+ timezone?: string | undefined;
402
+ allDay?: boolean | undefined;
403
+ bySetPos?: number | undefined;
404
+ }>, {
405
+ interval: number;
406
+ anchor?: "scheduled" | "completion" | undefined;
407
+ rrule?: string | undefined;
408
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
409
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
410
+ byMonthDay?: number[] | undefined;
411
+ byMonth?: number[] | undefined;
412
+ until?: Date | null | undefined;
413
+ count?: number | null | undefined;
414
+ timezone?: string | undefined;
415
+ allDay?: boolean | undefined;
416
+ bySetPos?: number | undefined;
417
+ }, {
418
+ anchor?: "scheduled" | "completion" | undefined;
419
+ rrule?: string | undefined;
420
+ preset?: "hourly" | "daily" | "weekly" | "monthly" | "yearly" | undefined;
421
+ interval?: number | undefined;
422
+ byWeekday?: ("MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU")[] | undefined;
423
+ byMonthDay?: number[] | undefined;
424
+ byMonth?: number[] | undefined;
425
+ until?: Date | null | undefined;
426
+ count?: number | null | undefined;
427
+ timezone?: string | undefined;
428
+ allDay?: boolean | undefined;
429
+ bySetPos?: number | undefined;
430
+ }>;
431
+ export type SplitRecurrenceInput = z.infer<typeof SplitRecurrenceInput>;
331
432
  export declare const SkipOccurrenceInput: z.ZodObject<{
332
433
  reason: z.ZodOptional<z.ZodString>;
333
434
  actorKind: z.ZodDefault<z.ZodEnum<["human", "agent", "system"]>>;
@@ -379,9 +480,11 @@ export declare const TasksRangeInput: z.ZodObject<{
379
480
  projectIds: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString, "many">>>;
380
481
  includeBacklog: z.ZodDefault<z.ZodBoolean>;
381
482
  includeDone: z.ZodDefault<z.ZodBoolean>;
483
+ includeVirtualRecurrences: z.ZodDefault<z.ZodBoolean>;
382
484
  }, "strip", z.ZodTypeAny, {
383
485
  includeBacklog: boolean;
384
486
  includeDone: boolean;
487
+ includeVirtualRecurrences: boolean;
385
488
  from?: Date | null | undefined;
386
489
  to?: Date | null | undefined;
387
490
  projectIds?: string[] | null | undefined;
@@ -391,6 +494,7 @@ export declare const TasksRangeInput: z.ZodObject<{
391
494
  projectIds?: string[] | null | undefined;
392
495
  includeBacklog?: boolean | undefined;
393
496
  includeDone?: boolean | undefined;
497
+ includeVirtualRecurrences?: boolean | undefined;
394
498
  }>;
395
499
  export type TasksRangeInput = z.infer<typeof TasksRangeInput>;
396
500
  export declare const LinkInput: z.ZodObject<{
@@ -421,10 +525,12 @@ export type OpeningBriefInput = z.infer<typeof OpeningBriefInput>;
421
525
  export declare const CreateProjectInput: z.ZodObject<{
422
526
  key: z.ZodString;
423
527
  name: z.ZodString;
528
+ status: z.ZodDefault<z.ZodEnum<["planned", "active", "watching", "paused", "archived"]>>;
424
529
  color: z.ZodDefault<z.ZodString>;
425
530
  icon: z.ZodDefault<z.ZodString>;
426
531
  agentsMd: z.ZodDefault<z.ZodString>;
427
- }, "strip", z.ZodTypeAny, {
532
+ }, "strict", z.ZodTypeAny, {
533
+ status: "archived" | "active" | "planned" | "watching" | "paused";
428
534
  name: string;
429
535
  key: string;
430
536
  color: string;
@@ -433,6 +539,7 @@ export declare const CreateProjectInput: z.ZodObject<{
433
539
  }, {
434
540
  name: string;
435
541
  key: string;
542
+ status?: "archived" | "active" | "planned" | "watching" | "paused" | undefined;
436
543
  color?: string | undefined;
437
544
  icon?: string | undefined;
438
545
  agentsMd?: string | undefined;
@@ -440,21 +547,32 @@ export declare const CreateProjectInput: z.ZodObject<{
440
547
  export type CreateProjectInput = z.infer<typeof CreateProjectInput>;
441
548
  export declare const UpdateProjectInput: z.ZodObject<{
442
549
  name: z.ZodOptional<z.ZodString>;
550
+ status: z.ZodOptional<z.ZodEnum<["planned", "active", "watching", "paused", "archived"]>>;
443
551
  color: z.ZodOptional<z.ZodString>;
444
552
  icon: z.ZodOptional<z.ZodString>;
445
553
  agentsMd: z.ZodOptional<z.ZodString>;
446
- }, "strip", z.ZodTypeAny, {
554
+ }, "strict", z.ZodTypeAny, {
555
+ status?: "archived" | "active" | "planned" | "watching" | "paused" | undefined;
447
556
  name?: string | undefined;
448
557
  color?: string | undefined;
449
558
  icon?: string | undefined;
450
559
  agentsMd?: string | undefined;
451
560
  }, {
561
+ status?: "archived" | "active" | "planned" | "watching" | "paused" | undefined;
452
562
  name?: string | undefined;
453
563
  color?: string | undefined;
454
564
  icon?: string | undefined;
455
565
  agentsMd?: string | undefined;
456
566
  }>;
457
567
  export type UpdateProjectInput = z.infer<typeof UpdateProjectInput>;
568
+ export declare const ListProjectsInput: z.ZodObject<{
569
+ includeArchived: z.ZodDefault<z.ZodBoolean>;
570
+ }, "strip", z.ZodTypeAny, {
571
+ includeArchived: boolean;
572
+ }, {
573
+ includeArchived?: boolean | undefined;
574
+ }>;
575
+ export type ListProjectsInput = z.infer<typeof ListProjectsInput>;
458
576
  export declare const CreateTokenInput: z.ZodObject<{
459
577
  name: z.ZodString;
460
578
  }, "strip", z.ZodTypeAny, {
@@ -485,6 +603,14 @@ export declare const UpdateEmbeddingSettingsInput: z.ZodObject<{
485
603
  apiKey?: string | null | undefined;
486
604
  }>;
487
605
  export type UpdateEmbeddingSettingsInput = z.infer<typeof UpdateEmbeddingSettingsInput>;
606
+ export declare const UpdateWorkspaceSettingsInput: z.ZodObject<{
607
+ timezone: z.ZodOptional<z.ZodString>;
608
+ }, "strip", z.ZodTypeAny, {
609
+ timezone?: string | undefined;
610
+ }, {
611
+ timezone?: string | undefined;
612
+ }>;
613
+ export type UpdateWorkspaceSettingsInput = z.infer<typeof UpdateWorkspaceSettingsInput>;
488
614
  export declare const EmbeddingBackfillInput: z.ZodObject<{
489
615
  limit: z.ZodOptional<z.ZodNumber>;
490
616
  }, "strip", z.ZodTypeAny, {
@@ -1,8 +1,9 @@
1
1
  import { z } from "zod";
2
- import { ACTOR_KINDS, EDGE_KINDS, ENTITY_KINDS, RECURRENCE_ANCHORS } from "../db/schema.js";
2
+ import { ACTOR_KINDS, EDGE_KINDS, ENTITY_KINDS, PROJECT_STATUSES, RECURRENCE_ANCHORS } from "../db/schema.js";
3
3
  export const EntityKindEnum = z.enum(ENTITY_KINDS);
4
4
  export const ActorKindEnum = z.enum(ACTOR_KINDS);
5
5
  export const EdgeKindEnum = z.enum(EDGE_KINDS);
6
+ export const ProjectStatusEnum = z.enum(PROJECT_STATUSES);
6
7
  export const PriorityEnum = z.enum(["urgent", "high", "medium", "low", "none"]);
7
8
  export const RecurrenceAnchorEnum = z.enum(RECURRENCE_ANCHORS);
8
9
  export const RecurrenceFrequencyEnum = z.enum(["hourly", "daily", "weekly", "monthly", "yearly"]);
@@ -73,7 +74,8 @@ export const UpdateInput = z.object({
73
74
  parentId: Uuid.nullable().optional(),
74
75
  dueAt: z.coerce.date().nullable().optional(),
75
76
  priority: PriorityEnum.optional(),
76
- pinned: z.boolean().optional()
77
+ pinned: z.boolean().optional(),
78
+ recurrenceScope: z.enum(["this", "future"]).optional()
77
79
  });
78
80
  const PositiveInterval = z.number().int().min(1).max(999);
79
81
  const RecurrenceFields = z.object({
@@ -87,7 +89,7 @@ const RecurrenceFields = z.object({
87
89
  until: z.coerce.date().nullable().optional(),
88
90
  count: z.number().int().min(1).max(10000).nullable().optional(),
89
91
  dtstart: z.coerce.date().optional(),
90
- timezone: z.string().min(1).max(80).default("UTC"),
92
+ timezone: z.string().min(1).max(80).optional(),
91
93
  allDay: z.boolean().default(true),
92
94
  anchor: RecurrenceAnchorEnum.default("scheduled")
93
95
  });
@@ -104,6 +106,31 @@ export const UpdateRecurrenceInput = RecurrenceFields.partial().extend({
104
106
  export const StopRecurrenceInput = z.object({
105
107
  reason: z.string().max(500).optional()
106
108
  });
109
+ /** Fork a recurrence series at its current occurrence: freeze the old rule and
110
+ * apply a new cadence going forward. No dtstart — the fork point is derived
111
+ * from the current occurrence. allDay/timezone/anchor inherit the old rule when
112
+ * omitted. */
113
+ export const SplitRecurrenceInput = z
114
+ .object({
115
+ rrule: z.string().min(1).max(1000).optional(),
116
+ preset: RecurrenceFrequencyEnum.optional(),
117
+ interval: PositiveInterval.default(1),
118
+ byWeekday: z.array(WeekdayEnum).optional(),
119
+ byMonthDay: z.array(z.number().int().min(1).max(31)).optional(),
120
+ bySetPos: z.number().int().min(-5).max(5).optional(),
121
+ byMonth: z.array(z.number().int().min(1).max(12)).optional(),
122
+ until: z.coerce.date().nullable().optional(),
123
+ count: z.number().int().min(1).max(10000).nullable().optional(),
124
+ timezone: z.string().min(1).max(80).optional(),
125
+ allDay: z.boolean().optional(),
126
+ anchor: RecurrenceAnchorEnum.optional()
127
+ })
128
+ .refine((value) => value.rrule || value.preset, {
129
+ message: "Provide either rrule or preset"
130
+ })
131
+ .refine((value) => !(value.until && value.count), {
132
+ message: "Use either until or count, not both"
133
+ });
107
134
  export const SkipOccurrenceInput = z.object({
108
135
  reason: z.string().max(500).optional(),
109
136
  actorKind: ActorKindEnum.default("human")
@@ -125,7 +152,8 @@ export const TasksRangeInput = z.object({
125
152
  to: z.coerce.date().nullish(),
126
153
  projectIds: z.array(Uuid).nullish(),
127
154
  includeBacklog: z.boolean().default(true),
128
- includeDone: z.boolean().default(false)
155
+ includeDone: z.boolean().default(false),
156
+ includeVirtualRecurrences: z.boolean().default(false)
129
157
  });
130
158
  export const LinkInput = z.object({
131
159
  fromId: Uuid,
@@ -144,22 +172,31 @@ const IconName = z
144
172
  .min(1)
145
173
  .max(40)
146
174
  .regex(/^[a-z0-9_-]+$/, "icon must be a lowercase identifier");
147
- export const CreateProjectInput = z.object({
175
+ export const CreateProjectInput = z
176
+ .object({
148
177
  key: z
149
178
  .string()
150
179
  .min(1)
151
180
  .max(20)
152
181
  .regex(/^[A-Z][A-Z0-9_]*$/),
153
182
  name: z.string().min(1).max(200),
183
+ status: ProjectStatusEnum.default("active"),
154
184
  color: HexColor.default("#5e6ad2"),
155
185
  icon: IconName.default("circle"),
156
186
  agentsMd: z.string().default("")
157
- });
158
- export const UpdateProjectInput = z.object({
187
+ })
188
+ .strict();
189
+ export const UpdateProjectInput = z
190
+ .object({
159
191
  name: z.string().min(1).max(200).optional(),
192
+ status: ProjectStatusEnum.optional(),
160
193
  color: HexColor.optional(),
161
194
  icon: IconName.optional(),
162
195
  agentsMd: z.string().optional()
196
+ })
197
+ .strict();
198
+ export const ListProjectsInput = z.object({
199
+ includeArchived: z.boolean().default(false)
163
200
  });
164
201
  export const CreateTokenInput = z.object({
165
202
  name: z.string().min(1).max(200)
@@ -172,6 +209,9 @@ export const UpdateEmbeddingSettingsInput = z.object({
172
209
  baseUrl: z.string().url().nullable().optional(),
173
210
  apiKey: z.string().max(1000).nullable().optional()
174
211
  });
212
+ export const UpdateWorkspaceSettingsInput = z.object({
213
+ timezone: z.string().min(1).max(80).optional()
214
+ });
175
215
  export const EmbeddingBackfillInput = z.object({
176
216
  limit: z.number().int().min(1).max(100000).optional()
177
217
  });
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/service/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Database } from "../db/client.js";
2
+ import { type WorkspaceSettings } from "../db/schema.js";
3
+ import type { UpdateWorkspaceSettingsInput } from "./types.js";
4
+ export declare const WORKSPACE_SETTINGS_ID = "default";
5
+ export declare const DEFAULT_WORKSPACE_TIMEZONE = "UTC";
6
+ export declare function isValidTimezone(tz: string): boolean;
7
+ export declare function getWorkspaceSettings(db: Database["db"]): Promise<WorkspaceSettings>;
8
+ export declare function updateWorkspaceSettings(db: Database["db"], input: UpdateWorkspaceSettingsInput): Promise<WorkspaceSettings>;
@@ -0,0 +1,53 @@
1
+ import { eq } from "drizzle-orm";
2
+ import { workspaceSettings } from "../db/schema.js";
3
+ export const WORKSPACE_SETTINGS_ID = "default";
4
+ export const DEFAULT_WORKSPACE_TIMEZONE = "UTC";
5
+ export function isValidTimezone(tz) {
6
+ try {
7
+ new Intl.DateTimeFormat("en-US", { timeZone: tz });
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ export async function getWorkspaceSettings(db) {
15
+ const [existing] = await db
16
+ .select()
17
+ .from(workspaceSettings)
18
+ .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
19
+ .limit(1);
20
+ if (existing)
21
+ return existing;
22
+ await db
23
+ .insert(workspaceSettings)
24
+ .values({
25
+ id: WORKSPACE_SETTINGS_ID,
26
+ timezone: DEFAULT_WORKSPACE_TIMEZONE
27
+ })
28
+ .onConflictDoNothing();
29
+ const [created] = await db
30
+ .select()
31
+ .from(workspaceSettings)
32
+ .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
33
+ .limit(1);
34
+ if (!created)
35
+ throw new Error("workspace settings row missing after insert");
36
+ return created;
37
+ }
38
+ export async function updateWorkspaceSettings(db, input) {
39
+ const current = await getWorkspaceSettings(db);
40
+ const timezone = input.timezone ?? current.timezone;
41
+ if (input.timezone !== undefined && !isValidTimezone(input.timezone)) {
42
+ throw new Error(`Invalid IANA timezone: "${input.timezone}"`);
43
+ }
44
+ const [updated] = await db
45
+ .update(workspaceSettings)
46
+ .set({ timezone })
47
+ .where(eq(workspaceSettings.id, WORKSPACE_SETTINGS_ID))
48
+ .returning();
49
+ if (!updated)
50
+ throw new Error("workspace settings update returned no row");
51
+ return updated;
52
+ }
53
+ //# sourceMappingURL=workspace_settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace_settings.js","sourceRoot":"","sources":["../../src/service/workspace_settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAA0B,MAAM,iBAAiB,CAAC;AAG5E,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD,MAAM,UAAU,eAAe,CAAC,EAAU;IACxC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAkB;IAElB,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,EAAE;SACxB,MAAM,EAAE;SACR,IAAI,CAAC,iBAAiB,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,EAAE;SACL,MAAM,CAAC,iBAAiB,CAAC;SACzB,MAAM,CAAC;QACN,EAAE,EAAE,qBAAqB;QACzB,QAAQ,EAAE,0BAA0B;KACrC,CAAC;SACD,mBAAmB,EAAE,CAAC;IAEzB,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,EAAE;SACR,IAAI,CAAC,iBAAiB,CAAC;SACvB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,KAAK,CAAC,CAAC,CAAC,CAAC;IACZ,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,EAAkB,EAClB,KAAmC;IAEnC,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACpD,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,EAAE;SACvB,MAAM,CAAC,iBAAiB,CAAC;SACzB,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;SACjB,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;SACtD,SAAS,EAAE,CAAC;IACf,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "botnote",
3
- "version": "0.1.28",
3
+ "version": "0.1.30",
4
4
  "description": "Notion for bots. Lightweight project + notes + memory store, agent-first.",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@10.33.0",
@@ -0,0 +1 @@
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{color-scheme:light;--shadow-soft: 0 1px 2px rgba(15, 15, 20, .04), 0 0 0 1px rgba(15, 15, 20, .04)}html,body,#root{height:100%}body{--tw-bg-opacity: 1;background-color:rgb(252 252 253 / var(--tw-bg-opacity, 1));font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14.5px;line-height:20px;--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1));font-feature-settings:"cv11","ss01","ss03","tnum";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-moz-selection{background:#ebecf9;color:#3b46a3}::selection{background:#ebecf9;color:#3b46a3}code,pre,kbd{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace}kbd{display:inline-flex;height:18px;min-width:18px;align-items:center;justify-content:center;border-radius:3px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:.25rem;padding-right:.25rem;line-height:15px;--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1));font-size:11px;line-height:1}button,input,textarea,select{font-family:inherit}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:1024px){.container{max-width:1024px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.btn{display:inline-flex;height:2rem;align-items:center;justify-content:center;gap:.375rem;border-radius:5px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:.625rem;padding-right:.625rem;font-size:12px;line-height:16px;--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.btn:hover{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1))}.btn:disabled{cursor:not-allowed;opacity:.5}.btn-primary{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(94 106 210 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.btn-primary:hover{--tw-bg-opacity: 1;background-color:rgb(79 90 189 / var(--tw-bg-opacity, 1))}.btn-ghost{border-color:transparent;--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1))}.btn-ghost:hover{--tw-bg-opacity: 1;background-color:rgb(238 239 241 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.chip{display:inline-flex;height:20px;align-items:center;gap:.25rem;border-radius:5px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(236 236 239 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1));padding-left:.375rem;padding-right:.375rem;font-size:11px;line-height:15px;--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1))}.input{height:2rem;width:100%;border-radius:5px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-left:.5rem;padding-right:.5rem;font-size:13.5px;line-height:18.5px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.input:focus{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1));outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000);--tw-ring-opacity: 1;--tw-ring-color: rgb(235 236 249 / var(--tw-ring-opacity, 1))}.row-hover{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.row-hover:hover{background-color:#eeeff199}.task-row{display:flex;height:2.25rem;cursor:pointer;align-items:center;gap:.5rem;border-bottom-width:1px;--tw-border-opacity: 1;border-color:rgb(236 236 239 / var(--tw-border-opacity, 1));padding-left:.75rem;padding-right:.75rem;font-size:13.5px;line-height:18.5px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.task-row:hover{background-color:#eeeff180}.seg{display:inline-flex;overflow:hidden;border-radius:5px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1))}.seg button{height:2rem;padding-left:.625rem;padding-right:.625rem;font-size:12px;line-height:16px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.seg button:hover{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.seg button[data-active=true]{--tw-bg-opacity: 1;background-color:rgb(12 12 13 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.seg button[data-active=true]:hover{--tw-bg-opacity: 1;background-color:rgb(31 31 36 / var(--tw-bg-opacity, 1));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.divider{border-top-width:1px;--tw-border-opacity: 1;border-color:rgb(236 236 239 / var(--tw-border-opacity, 1))}.scrollbar-thin{scrollbar-width:thin;scrollbar-color:#e6e6e9 transparent}.scrollbar-thin::-webkit-scrollbar{width:8px;height:8px}.scrollbar-thin::-webkit-scrollbar-thumb{background:#e6e6e9;border-radius:4px;border:2px solid transparent;background-clip:padding-box}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background:#6f6f76;background-clip:padding-box}.popover{position:absolute;z-index:40;min-width:160px;border-radius:5px;border-width:1px;--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1));--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1));padding-top:.25rem;padding-bottom:.25rem;--tw-shadow: 0 2px 6px rgba(15,15,20,.06), 0 0 0 1px rgba(15,15,20,.06);--tw-shadow-colored: 0 2px 6px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.popover-item{display:flex;width:100%;cursor:pointer;align-items:center;gap:.5rem;padding:.25rem .5rem;text-align:left;font-size:12px;line-height:16px;--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.popover-item:hover{--tw-bg-opacity: 1;background-color:rgb(238 239 241 / var(--tw-bg-opacity, 1))}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.right-0{right:0}.top-0{top:0}.top-9{top:2.25rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.-m-0\.5{margin:-.125rem}.-m-1{margin:-.25rem}.m-auto{margin:auto}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-6{margin-bottom:1.5rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-1{margin-right:.25rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.\!h-24{height:6rem!important}.\!h-32{height:8rem!important}.\!h-4{height:1rem!important}.\!h-6{height:1.5rem!important}.\!h-7{height:1.75rem!important}.h-11{height:2.75rem}.h-12{height:3rem}.h-2{height:.5rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[18px\]{height:18px}.h-full{height:100%}.max-h-\[60vh\]{max-height:60vh}.min-h-0{min-height:0px}.min-h-\[104px\]{min-height:104px}.min-h-\[112px\]{min-height:112px}.min-h-\[120px\]{min-height:120px}.min-h-screen{min-height:100vh}.\!w-6{width:1.5rem!important}.w-14{width:3.5rem}.w-20{width:5rem}.w-32{width:8rem}.w-36{width:9rem}.w-5{width:1.25rem}.w-52{width:13rem}.w-56{width:14rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-\[18px\]{width:18px}.w-\[2px\]{width:2px}.w-\[min\(680px\,92vw\)\]{width:min(680px,92vw)}.w-full{width:100%}.min-w-0{min-width:0px}.min-w-\[220px\]{min-width:220px}.min-w-max{min-width:-moz-max-content;min-width:max-content}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.resize{resize:both}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[80px_1fr\]{grid-template-columns:80px 1fr}.grid-rows-6{grid-template-rows:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.\!justify-between{justify-content:space-between!important}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-px{gap:1px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-y-1\.5{row-gap:.375rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem * var(--tw-space-y-reverse))}.space-y-px>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1px * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-line\/60>:not([hidden])~:not([hidden]){border-color:#e6e6e999}.divide-lineSoft>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(236 236 239 / var(--tw-divide-opacity, 1))}.self-stretch{align-self:stretch}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.rounded{border-radius:5px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:7px}.rounded-md{border-radius:5px}.rounded-sm{border-radius:3px}.border{border-width:1px}.border-y{border-top-width:1px;border-bottom-width:1px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.\!border-emerald-500\/30{border-color:#10b9814d!important}.\!border-red-500\/30{border-color:#ef44444d!important}.\!border-white\/25{border-color:#ffffff40!important}.border-accent{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1))}.border-accent\/20{border-color:#5e6ad233}.border-amber-200{--tw-border-opacity: 1;border-color:rgb(253 230 138 / var(--tw-border-opacity, 1))}.border-blue-100{--tw-border-opacity: 1;border-color:rgb(219 234 254 / var(--tw-border-opacity, 1))}.border-blue-200{--tw-border-opacity: 1;border-color:rgb(191 219 254 / var(--tw-border-opacity, 1))}.border-current{border-color:currentColor}.border-danger\/30{border-color:#eb57574d}.border-emerald-200{--tw-border-opacity: 1;border-color:rgb(167 243 208 / var(--tw-border-opacity, 1))}.border-line{--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1))}.border-line\/60{border-color:#e6e6e999}.border-line\/80{border-color:#e6e6e9cc}.border-lineSoft{--tw-border-opacity: 1;border-color:rgb(236 236 239 / var(--tw-border-opacity, 1))}.border-red-500\/30{border-color:#ef44444d}.border-rose-200{--tw-border-opacity: 1;border-color:rgb(254 205 211 / var(--tw-border-opacity, 1))}.border-slate-200{--tw-border-opacity: 1;border-color:rgb(226 232 240 / var(--tw-border-opacity, 1))}.border-success\/30{border-color:#4cb7824d}.border-warn{--tw-border-opacity: 1;border-color:rgb(242 153 74 / var(--tw-border-opacity, 1))}.border-warn\/30{border-color:#f2994a4d}.\!bg-white\/15{background-color:#ffffff26!important}.bg-accent{--tw-bg-opacity: 1;background-color:rgb(94 106 210 / var(--tw-bg-opacity, 1))}.bg-accentSoft{--tw-bg-opacity: 1;background-color:rgb(235 236 249 / var(--tw-bg-opacity, 1))}.bg-accentSoft\/30{background-color:#ebecf94d}.bg-accentSoft\/40{background-color:#ebecf966}.bg-accentSoft\/50{background-color:#ebecf980}.bg-accentSoft\/60{background-color:#ebecf999}.bg-amber-50{--tw-bg-opacity: 1;background-color:rgb(255 251 235 / var(--tw-bg-opacity, 1))}.bg-bg{--tw-bg-opacity: 1;background-color:rgb(252 252 253 / var(--tw-bg-opacity, 1))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity, 1))}.bg-danger\/10{background-color:#eb57571a}.bg-danger\/5{background-color:#eb57570d}.bg-emerald-50{--tw-bg-opacity: 1;background-color:rgb(236 253 245 / var(--tw-bg-opacity, 1))}.bg-ink\/10{background-color:#0c0c0d1a}.bg-ink\/20{background-color:#0c0c0d33}.bg-line\/30{background-color:#e6e6e94d}.bg-red-500\/10{background-color:#ef44441a}.bg-rose-50{--tw-bg-opacity: 1;background-color:rgb(255 241 242 / var(--tw-bg-opacity, 1))}.bg-sidebar{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1))}.bg-sidebar\/20{background-color:#f7f8f933}.bg-sidebar\/30{background-color:#f7f8f94d}.bg-sidebar\/40{background-color:#f7f8f966}.bg-sidebar\/50{background-color:#f7f8f980}.bg-sidebar\/60{background-color:#f7f8f999}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity, 1))}.bg-success\/10{background-color:#4cb7821a}.bg-surface{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity, 1))}.bg-transparent{background-color:transparent}.bg-warn\/10{background-color:#f2994a1a}.\!p-0{padding:0!important}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.\!px-1\.5{padding-left:.375rem!important;padding-right:.375rem!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.\!pl-2{padding-left:.5rem!important}.\!pr-1\.5{padding-right:.375rem!important}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-6{padding-bottom:1.5rem}.pl-1{padding-left:.25rem}.pr-1\.5{padding-right:.375rem}.pt-0\.5{padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-20{padding-top:5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-mono{font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace}.\!text-\[10px\]{font-size:10px!important}.text-\[10px\]{font-size:10px}.text-base{font-size:14.5px;line-height:20px}.text-lg{font-size:17px;line-height:24px}.text-sm{font-size:13.5px;line-height:18.5px}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:12px;line-height:16px}.text-xxs{font-size:11px;line-height:15px}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wider{letter-spacing:.05em}.\!text-emerald-600{--tw-text-opacity: 1 !important;color:rgb(5 150 105 / var(--tw-text-opacity, 1))!important}.\!text-red-500{--tw-text-opacity: 1 !important;color:rgb(239 68 68 / var(--tw-text-opacity, 1))!important}.\!text-white{--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity, 1))!important}.text-accent{--tw-text-opacity: 1;color:rgb(94 106 210 / var(--tw-text-opacity, 1))}.text-accentText{--tw-text-opacity: 1;color:rgb(59 70 163 / var(--tw-text-opacity, 1))}.text-amber-900{--tw-text-opacity: 1;color:rgb(120 53 15 / var(--tw-text-opacity, 1))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity, 1))}.text-blue-900{--tw-text-opacity: 1;color:rgb(30 58 138 / var(--tw-text-opacity, 1))}.text-danger{--tw-text-opacity: 1;color:rgb(235 87 87 / var(--tw-text-opacity, 1))}.text-emerald-900{--tw-text-opacity: 1;color:rgb(6 78 59 / var(--tw-text-opacity, 1))}.text-faint{--tw-text-opacity: 1;color:rgb(168 168 175 / var(--tw-text-opacity, 1))}.text-ink{--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.text-ink2{--tw-text-opacity: 1;color:rgb(31 31 36 / var(--tw-text-opacity, 1))}.text-muted{--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1))}.text-prioHigh{--tw-text-opacity: 1;color:rgb(242 153 74 / var(--tw-text-opacity, 1))}.text-prioLow{--tw-text-opacity: 1;color:rgb(168 168 175 / var(--tw-text-opacity, 1))}.text-prioMedium{--tw-text-opacity: 1;color:rgb(94 106 210 / var(--tw-text-opacity, 1))}.text-prioUrgent{--tw-text-opacity: 1;color:rgb(235 87 87 / var(--tw-text-opacity, 1))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity, 1))}.text-rose-900{--tw-text-opacity: 1;color:rgb(136 19 55 / var(--tw-text-opacity, 1))}.text-slate-700{--tw-text-opacity: 1;color:rgb(51 65 85 / var(--tw-text-opacity, 1))}.text-statusDone{--tw-text-opacity: 1;color:rgb(76 183 130 / var(--tw-text-opacity, 1))}.text-statusInProgress{--tw-text-opacity: 1;color:rgb(242 153 74 / var(--tw-text-opacity, 1))}.text-statusOpen{--tw-text-opacity: 1;color:rgb(168 168 175 / var(--tw-text-opacity, 1))}.text-statusRejected{--tw-text-opacity: 1;color:rgb(235 87 87 / var(--tw-text-opacity, 1))}.text-warn{--tw-text-opacity: 1;color:rgb(242 153 74 / var(--tw-text-opacity, 1))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity, 1))}.line-through{text-decoration-line:line-through}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-90{opacity:.9}.shadow-2xl{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-modal{--tw-shadow: 0 12px 32px rgba(15,15,20,.08), 0 0 0 1px rgba(15,15,20,.06);--tw-shadow-colored: 0 12px 32px var(--tw-shadow-color), 0 0 0 1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-2{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-inset{--tw-ring-inset: inset}.ring-accent{--tw-ring-opacity: 1;--tw-ring-color: rgb(94 106 210 / var(--tw-ring-opacity, 1))}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-\[1px\]{--tw-backdrop-blur: blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.placeholder\:italic::-moz-placeholder{font-style:italic}.placeholder\:italic::placeholder{font-style:italic}.placeholder\:text-muted\/60::-moz-placeholder{color:#6f6f7699}.placeholder\:text-muted\/60::placeholder{color:#6f6f7699}.first\:pt-0:first-child{padding-top:0}.last\:border-b-0:last-child{border-bottom-width:0px}.last\:border-r-0:last-child{border-right-width:0px}.focus-within\:border-accent:focus-within{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1))}.focus-within\:ring-1:focus-within{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-within\:ring-accentSoft:focus-within{--tw-ring-opacity: 1;--tw-ring-color: rgb(235 236 249 / var(--tw-ring-opacity, 1))}.hover\:scale-110:hover{--tw-scale-x: 1.1;--tw-scale-y: 1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-accent:hover{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1))}.hover\:border-accent\/50:hover{border-color:#5e6ad280}.hover\:\!bg-red-500\/10:hover{background-color:#ef44441a!important}.hover\:bg-accentSoft\/40:hover{background-color:#ebecf966}.hover\:bg-danger\/10:hover{background-color:#eb57571a}.hover\:bg-line\/40:hover{background-color:#e6e6e966}.hover\:bg-line\/60:hover{background-color:#e6e6e999}.hover\:bg-sidebar:hover{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1))}.hover\:bg-sidebarHover:hover{--tw-bg-opacity: 1;background-color:rgb(238 239 241 / var(--tw-bg-opacity, 1))}.hover\:\!text-red-500:hover{--tw-text-opacity: 1 !important;color:rgb(239 68 68 / var(--tw-text-opacity, 1))!important}.hover\:text-accent:hover{--tw-text-opacity: 1;color:rgb(94 106 210 / var(--tw-text-opacity, 1))}.hover\:text-danger:hover{--tw-text-opacity: 1;color:rgb(235 87 87 / var(--tw-text-opacity, 1))}.hover\:text-ink:hover{--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:opacity-90:hover{opacity:.9}.focus\:border-accent:focus{--tw-border-opacity: 1;border-color:rgb(94 106 210 / var(--tw-border-opacity, 1))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-accent:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(94 106 210 / var(--tw-ring-opacity, 1))}.focus\:ring-accent\/40:focus{--tw-ring-color: rgb(94 106 210 / .4)}.active\:cursor-grabbing:active{cursor:grabbing}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:text-ink{--tw-text-opacity: 1;color:rgb(12 12 13 / var(--tw-text-opacity, 1))}.group\/col:hover .group-hover\/col\:opacity-100,.group:hover .group-hover\:opacity-100{opacity:1}@media(min-width:640px){.sm\:grid-cols-\[1fr_84px_132px\]{grid-template-columns:1fr 84px 132px}}@media(min-width:768px){.md\:inline-flex{display:inline-flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:1024px){.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.\[\&_a\]\:text-accent a{--tw-text-opacity: 1;color:rgb(94 106 210 / var(--tw-text-opacity, 1))}.\[\&_a\]\:underline a{text-decoration-line:underline}.\[\&_blockquote\]\:border-l-2 blockquote{border-left-width:2px}.\[\&_blockquote\]\:border-line blockquote{--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1))}.\[\&_blockquote\]\:pl-3 blockquote{padding-left:.75rem}.\[\&_blockquote\]\:text-muted blockquote{--tw-text-opacity: 1;color:rgb(111 111 118 / var(--tw-text-opacity, 1))}.\[\&_code\]\:rounded code{border-radius:5px}.\[\&_code\]\:bg-sidebar code{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1))}.\[\&_code\]\:px-1 code{padding-left:.25rem;padding-right:.25rem}.\[\&_code\]\:py-0\.5 code{padding-top:.125rem;padding-bottom:.125rem}.\[\&_code\]\:text-xs code{font-size:12px;line-height:16px}.\[\&_h1\]\:mb-1\.5 h1{margin-bottom:.375rem}.\[\&_h1\]\:mt-3 h1{margin-top:.75rem}.\[\&_h1\]\:text-lg h1{font-size:17px;line-height:24px}.\[\&_h1\]\:font-semibold h1{font-weight:600}.\[\&_h2\]\:mb-1 h2{margin-bottom:.25rem}.\[\&_h2\]\:mt-3 h2{margin-top:.75rem}.\[\&_h2\]\:text-base h2{font-size:14.5px;line-height:20px}.\[\&_h2\]\:font-semibold h2{font-weight:600}.\[\&_h3\]\:mt-2 h3{margin-top:.5rem}.\[\&_h3\]\:font-semibold h3{font-weight:600}.\[\&_li\]\:my-0\.5 li{margin-top:.125rem;margin-bottom:.125rem}.\[\&_ol\]\:list-decimal ol{list-style-type:decimal}.\[\&_ol\]\:pl-5 ol{padding-left:1.25rem}.\[\&_p\]\:my-1 p{margin-top:.25rem;margin-bottom:.25rem}.\[\&_pre\]\:overflow-x-auto pre{overflow-x:auto}.\[\&_pre\]\:rounded pre{border-radius:5px}.\[\&_pre\]\:bg-sidebar pre{--tw-bg-opacity: 1;background-color:rgb(247 248 249 / var(--tw-bg-opacity, 1))}.\[\&_pre\]\:p-2 pre{padding:.5rem}.\[\&_pre_code\]\:bg-transparent pre code{background-color:transparent}.\[\&_pre_code\]\:p-0 pre code{padding:0}.\[\&_table\]\:border-collapse table{border-collapse:collapse}.\[\&_td\]\:border td{border-width:1px}.\[\&_td\]\:border-line td{--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1))}.\[\&_td\]\:px-2 td{padding-left:.5rem;padding-right:.5rem}.\[\&_td\]\:py-1 td{padding-top:.25rem;padding-bottom:.25rem}.\[\&_th\]\:border th{border-width:1px}.\[\&_th\]\:border-line th{--tw-border-opacity: 1;border-color:rgb(230 230 233 / var(--tw-border-opacity, 1))}.\[\&_th\]\:px-2 th{padding-left:.5rem;padding-right:.5rem}.\[\&_th\]\:py-1 th{padding-top:.25rem;padding-bottom:.25rem}.\[\&_ul\]\:list-disc ul{list-style-type:disc}.\[\&_ul\]\:pl-5 ul{padding-left:1.25rem}