exponential-sdk 1.27.0 → 1.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,693 @@
1
1
  import { TRPCClientError } from '@trpc/client';
2
2
  export { TRPCClientError } from '@trpc/client';
3
3
 
4
+ type CeremonyKind = 'STANDUP' | 'PLANNING' | 'REVIEW' | 'RETROSPECTIVE' | 'PRIORITISATION' | 'ALL_HANDS' | 'ONE_ON_ONE' | 'CUSTOM';
5
+ /**
6
+ * Where an occurrence is in its lifecycle. `SKIPPED` is only ever set by the
7
+ * owner (with a reason) — an empty agenda offers a skip, it never takes one.
8
+ */
9
+ type CeremonyOccurrenceStatus = 'PLANNED' | 'AGENDA_CIRCULATED' | 'IN_PROGRESS' | 'CAPTURED' | 'FOLLOWED_THROUGH' | 'SKIPPED';
10
+ interface CeremonyUserRef {
11
+ id: string;
12
+ name: string | null;
13
+ email: string | null;
14
+ image?: string | null;
15
+ }
16
+ interface CeremonyNamedRef {
17
+ id: string;
18
+ name: string;
19
+ slug: string;
20
+ }
21
+ /** One section of a ceremony's agenda template, in running order. */
22
+ interface CeremonyAgendaTemplateSection {
23
+ key: string;
24
+ /** A section type the agenda generator binds a query to (`blockers`, `carried_over`, `okr_review`, …). */
25
+ type: string;
26
+ title: string;
27
+ minutes?: number;
28
+ config?: Record<string, unknown>;
29
+ }
30
+ /** A row of `ceremonies.list` — the Settings → Ceremonies table. */
31
+ interface CeremonySummary {
32
+ id: string;
33
+ workspaceId: string;
34
+ name: string;
35
+ slug: string;
36
+ /** Title patterns used to auto-attach recorded meetings and calendar events. */
37
+ aliases: string[];
38
+ kind: CeremonyKind;
39
+ /** Icon key; null shows the kind's default. */
40
+ icon: string | null;
41
+ /** RRULE body, e.g. `FREQ=WEEKLY;BYDAY=MO;BYHOUR=10;BYMINUTE=0`. Null only on a one-off. */
42
+ cadenceRule: string | null;
43
+ /** IANA zone the cadence is evaluated in. */
44
+ timezone: string;
45
+ startsOn: Date;
46
+ durationMinutes: number;
47
+ /** Hours before the start at which the agenda is generated and circulated. */
48
+ leadTimeHours: number;
49
+ isActive: boolean;
50
+ ownerId: string;
51
+ productId: string | null;
52
+ teamId: string | null;
53
+ includeProjects: boolean;
54
+ /** Run "Extract outputs" on every recording that attaches to an occurrence. */
55
+ autoExtractOutputs: boolean;
56
+ projects: Array<{
57
+ projectId: string;
58
+ }>;
59
+ owner: CeremonyUserRef;
60
+ _count: {
61
+ occurrences: number;
62
+ participants: number;
63
+ };
64
+ /**
65
+ * Only on `ceremonies.list`: whether the caller may add, move or skip
66
+ * occurrences (the owner, or a workspace owner/admin).
67
+ */
68
+ canManage?: boolean;
69
+ }
70
+ /** A `ceremonies.listForProject` row: the summary plus the next planned occurrence. */
71
+ interface ProjectCeremony extends CeremonySummary {
72
+ /** Zero or one entry — the next non-skipped occurrence from now. */
73
+ occurrences: Array<{
74
+ id: string;
75
+ scheduledStart: Date;
76
+ status: CeremonyOccurrenceStatus;
77
+ }>;
78
+ }
79
+ /**
80
+ * A recorded meeting that captured an occurrence. Meetings the caller cannot
81
+ * view (ADR-0014) come back as existence-only stubs: `visible: false` with
82
+ * everything else null.
83
+ */
84
+ interface CeremonyRecordedMeeting {
85
+ id: string;
86
+ visible: boolean;
87
+ title: string | null;
88
+ meetingDate: Date | null;
89
+ processedAt?: Date | null;
90
+ }
91
+ /** An occurrence row as listed inside `ceremonies.get`. */
92
+ interface CeremonyOccurrenceRow {
93
+ id: string;
94
+ scheduledStart: Date;
95
+ scheduledEnd: Date;
96
+ /** The cadence tick this occurrence accounts for; differs from `scheduledStart` once moved, null when added off-cadence. */
97
+ cadenceStart: Date | null;
98
+ status: CeremonyOccurrenceStatus;
99
+ skipReason: string | null;
100
+ agendaGeneratedAt: Date | null;
101
+ agendaCirculatedAt: Date | null;
102
+ /** The calendar booking for this occurrence, when the scheduling flow made one. */
103
+ scheduledMeetingId: string | null;
104
+ recordedMeetings: CeremonyRecordedMeeting[];
105
+ }
106
+ /** Full ceremony definition from `ceremonies.get`. */
107
+ interface Ceremony {
108
+ id: string;
109
+ workspaceId: string;
110
+ productId: string | null;
111
+ teamId: string | null;
112
+ name: string;
113
+ slug: string;
114
+ aliases: string[];
115
+ kind: CeremonyKind;
116
+ icon: string | null;
117
+ /** Markdown. */
118
+ purpose: string | null;
119
+ /** Markdown — what this ceremony is explicitly not for. */
120
+ notFor: string | null;
121
+ /** Markdown — required inputs. */
122
+ inputs: string | null;
123
+ /** Markdown — expected outputs. */
124
+ outputs: string | null;
125
+ /** Null only on a one-off. */
126
+ cadenceRule: string | null;
127
+ timezone: string;
128
+ startsOn: Date;
129
+ durationMinutes: number;
130
+ leadTimeHours: number;
131
+ ownerId: string;
132
+ agendaTemplate: CeremonyAgendaTemplateSection[];
133
+ includeProjects: boolean;
134
+ autoExtractOutputs: boolean;
135
+ matrixRoomId: string | null;
136
+ /** The video room the ceremony meets in; recordings from it file themselves here. */
137
+ meetingUrl: string | null;
138
+ isActive: boolean;
139
+ /** A single meeting booked from a project, not part of the operating rhythm. */
140
+ isOneOff: boolean;
141
+ createdById: string;
142
+ createdAt: Date;
143
+ updatedAt: Date;
144
+ owner: CeremonyUserRef;
145
+ product: CeremonyNamedRef | null;
146
+ team: CeremonyNamedRef | null;
147
+ projects: Array<{
148
+ projectId: string;
149
+ project: CeremonyNamedRef;
150
+ }>;
151
+ participants: Array<{
152
+ id: string;
153
+ ceremonyId: string;
154
+ userId: string;
155
+ user: CeremonyUserRef;
156
+ }>;
157
+ /**
158
+ * Up to 30 upcoming (furthest first) then up to 50 past (most recent first)
159
+ * — newest first overall.
160
+ */
161
+ occurrences: CeremonyOccurrenceRow[];
162
+ /** Whether the caller may edit the definition. */
163
+ canEdit: boolean;
164
+ /** Whether the caller may add, move or skip occurrences. */
165
+ canManage: boolean;
166
+ }
167
+ /** The bare ceremony row returned by `create` / `update`. */
168
+ type CeremonyRecord = Omit<Ceremony, 'owner' | 'product' | 'team' | 'projects' | 'participants' | 'occurrences' | 'canEdit' | 'canManage'>;
169
+ interface CeremonyWriteResult {
170
+ ceremony: CeremonyRecord;
171
+ /** Occurrences created for the rolling window by this write. */
172
+ occurrencesCreated: number;
173
+ }
174
+ /** A row of `ceremonies.listOccurrences` (ordered by start ascending, max 200). */
175
+ interface CeremonyOccurrenceListRow {
176
+ id: string;
177
+ ceremonyId: string;
178
+ scheduledStart: Date;
179
+ scheduledEnd: Date;
180
+ cadenceStart: Date | null;
181
+ status: CeremonyOccurrenceStatus;
182
+ ceremony: {
183
+ id: string;
184
+ name: string;
185
+ kind: CeremonyKind;
186
+ };
187
+ }
188
+ type CeremonyAgendaRefType = 'action' | 'decision' | 'key_result' | 'goal' | 'ticket' | 'cycle' | 'meeting' | 'project' | 'text';
189
+ interface CeremonyAgendaItem {
190
+ /** Stable per occurrence: `<sectionKey>:<refType>:<refId>` for query items. */
191
+ id: string;
192
+ sectionKey: string;
193
+ title: string;
194
+ refType: CeremonyAgendaRefType;
195
+ /** The underlying record's id; for `text` items, the item id itself. */
196
+ refId: string;
197
+ goalId?: number | null;
198
+ keyResultId?: string | null;
199
+ goalTitle?: string | null;
200
+ keyResultTitle?: string | null;
201
+ /** Set when carried from a previous occurrence's unresolved list. */
202
+ carriedFromOccurrenceId?: string | null;
203
+ carryCount?: number | null;
204
+ /** Set when a person added the item by hand; those survive regeneration. */
205
+ addedByUserId?: string | null;
206
+ /** ISO timestamp; null/absent while unresolved. */
207
+ resolvedAt?: string | null;
208
+ order: number;
209
+ /** Who the item belongs to (a project's DRI). */
210
+ owner?: string | null;
211
+ detail?: string | null;
212
+ /** `detail` split into lines for the Matrix post; older snapshots hold plain strings. */
213
+ lines?: Array<unknown[] | string> | null;
214
+ /** App-relative link to the record. */
215
+ href?: string | null;
216
+ }
217
+ interface CeremonyAgendaSection {
218
+ key: string;
219
+ type: string;
220
+ title: string;
221
+ minutes?: number | null;
222
+ items: CeremonyAgendaItem[];
223
+ /** Why the section is empty, when its query ran and found nothing. */
224
+ emptyReason?: string | null;
225
+ }
226
+ interface CeremonyAgendaMatrixPost {
227
+ roomId: string;
228
+ serverId: string;
229
+ eventId: string;
230
+ postedAt: string;
231
+ postedById: string | null;
232
+ /** Set when the post was taken back out of the room. */
233
+ removedAt?: string | null;
234
+ removedById?: string | null;
235
+ }
236
+ /** The agenda snapshot stored on an occurrence (ISO strings, not Dates). */
237
+ interface CeremonyAgenda {
238
+ version: 1;
239
+ generatedAt: string;
240
+ sections: CeremonyAgendaSection[];
241
+ /** Markdown narrative rendered from the sections. */
242
+ narrative?: string | null;
243
+ narratedAt?: string | null;
244
+ matrixPosts?: CeremonyAgendaMatrixPost[];
245
+ }
246
+ /** Why an empty-agenda skip is (not) being offered to the owner. */
247
+ interface CeremonySkipProposal {
248
+ proposed: boolean;
249
+ reason: 'agenda-has-items' | 'blocker-flagged' | 'no-agenda-yet' | 'not-async' | 'already-resolved' | null;
250
+ }
251
+ /** One occurrence — the ceremony meeting page — from `ceremonies.getOccurrence`. */
252
+ interface CeremonyOccurrence {
253
+ id: string;
254
+ ceremonyId: string;
255
+ workspaceId: string;
256
+ scheduledStart: Date;
257
+ scheduledEnd: Date;
258
+ cadenceStart: Date | null;
259
+ status: CeremonyOccurrenceStatus;
260
+ skipReason: string | null;
261
+ /** True when this is a one-off meeting booked from a project. */
262
+ isOneOff: boolean;
263
+ /** The ceremony's purpose (for a one-off, what this meeting is about). */
264
+ purpose: string | null;
265
+ /** The calendar booking, when one exists. Attendee names only, no addresses. */
266
+ scheduledMeeting: {
267
+ id: string;
268
+ status: string;
269
+ organizerId: string | null;
270
+ attendees: Array<{
271
+ userId: string | null;
272
+ name: string | null;
273
+ }>;
274
+ } | null;
275
+ /** The ceremony definition as it was when this occurrence was created. */
276
+ definitionSnapshot: unknown;
277
+ /** Null until an agenda has been generated. */
278
+ agenda: CeremonyAgenda | null;
279
+ agendaGeneratedAt: Date | null;
280
+ agendaCirculatedAt: Date | null;
281
+ scheduledMeetingId: string | null;
282
+ previousOccurrenceId: string | null;
283
+ /** The occurrence's notes canvas — a Knowledge Page, created with the agenda. */
284
+ notesPageId: string | null;
285
+ createdAt: Date;
286
+ updatedAt: Date;
287
+ ceremony: {
288
+ id: string;
289
+ name: string;
290
+ kind: CeremonyKind;
291
+ timezone: string;
292
+ durationMinutes: number;
293
+ leadTimeHours: number;
294
+ ownerId: string;
295
+ matrixRoomId: string | null;
296
+ agendaTemplate: CeremonyAgendaTemplateSection[];
297
+ isOneOff: boolean;
298
+ purpose: string | null;
299
+ owner: CeremonyUserRef;
300
+ };
301
+ recordedMeetings: CeremonyRecordedMeeting[];
302
+ /** Whether the caller may generate, skip or post this occurrence's agenda. */
303
+ canGenerate: boolean;
304
+ skipProposal: CeremonySkipProposal;
305
+ }
306
+ /** A per-person async question (only STANDUP has them today). */
307
+ interface CeremonyUpdateQuestion {
308
+ key: string;
309
+ prompt: string;
310
+ placeholder: string;
311
+ draftFrom: string[];
312
+ }
313
+ /** The caller's own async update for an occurrence. Answers are Markdown keyed by question key. */
314
+ interface CeremonyMyUpdate {
315
+ questions: CeremonyUpdateQuestion[];
316
+ draftAnswers: Record<string, string>;
317
+ answers: Record<string, string>;
318
+ draftedAt: Date | null;
319
+ submittedAt: Date | null;
320
+ flaggedBlocker: boolean;
321
+ /** Only on `myOccurrenceUpdate`. */
322
+ isParticipant?: boolean;
323
+ }
324
+ interface CeremonyParticipantUpdate {
325
+ userId: string;
326
+ name: string | null;
327
+ email: string | null;
328
+ image: string | null;
329
+ answers: Record<string, string>;
330
+ /** Null for participants who haven't submitted. */
331
+ submittedAt: Date | null;
332
+ flaggedBlocker: boolean;
333
+ }
334
+ /** Every participant's submitted update — the meeting, held in writing. */
335
+ interface CeremonyUpdateSummary {
336
+ questions: CeremonyUpdateQuestion[];
337
+ participants: CeremonyParticipantUpdate[];
338
+ submittedCount: number;
339
+ blockedCount: number;
340
+ }
341
+ interface CeremonyAgendaResult {
342
+ occurrenceId: string;
343
+ agenda: CeremonyAgenda;
344
+ }
345
+ interface CeremonyGenerateAgendaResult extends CeremonyAgendaResult {
346
+ itemCount: number;
347
+ /** True when `circulate` was requested and participants were notified. */
348
+ circulated: boolean;
349
+ }
350
+ interface CeremonySkipResult {
351
+ id: string;
352
+ status: CeremonyOccurrenceStatus;
353
+ skipReason: string | null;
354
+ }
355
+ type CeremonyMatrixPostResult = {
356
+ kind: 'posted';
357
+ roomId: string;
358
+ eventId: string;
359
+ } | {
360
+ kind: 'no-room';
361
+ } | {
362
+ kind: 'no-agenda';
363
+ } | {
364
+ kind: 'already-posted';
365
+ roomId: string;
366
+ postedAt: string;
367
+ } | {
368
+ kind: 'no-server';
369
+ reason: string;
370
+ } | {
371
+ kind: 'failed';
372
+ reason: string;
373
+ };
374
+ type CeremonyMatrixRemoveResult = {
375
+ kind: 'removed';
376
+ roomId: string;
377
+ eventId: string;
378
+ } | {
379
+ kind: 'already-removed';
380
+ roomId: string;
381
+ removedAt: string;
382
+ } | {
383
+ kind: 'not-found';
384
+ } | {
385
+ kind: 'failed';
386
+ reason: string;
387
+ };
388
+ /** A built-in template for one ceremony kind ("Add from template"). */
389
+ interface CeremonyTemplate {
390
+ kind: CeremonyKind;
391
+ name: string;
392
+ slug: string;
393
+ aliases: string[];
394
+ purpose: string;
395
+ notFor: string;
396
+ inputs: string;
397
+ outputs: string;
398
+ cadenceRule: string;
399
+ durationMinutes: number;
400
+ leadTimeHours: number;
401
+ agendaTemplate: CeremonyAgendaTemplateSection[];
402
+ }
403
+ interface CeremonyImportResult {
404
+ slug: string;
405
+ action: 'created' | 'updated';
406
+ occurrencesCreated: number;
407
+ /** Owner / participant names that matched no workspace member. */
408
+ unresolved: string[];
409
+ }
410
+ interface CeremonyBackfillRow {
411
+ meetingId: string;
412
+ title: string | null;
413
+ anchorDate: Date;
414
+ occurrenceId: string | null;
415
+ ceremonyName: string | null;
416
+ scheduledStart: Date | null;
417
+ reason: string;
418
+ }
419
+ interface CeremonyBackfillResult {
420
+ dryRun: boolean;
421
+ occurrencesCreated: number;
422
+ scanned: number;
423
+ matched: number;
424
+ rows: CeremonyBackfillRow[];
425
+ }
426
+ interface CeremonyMeetingAttachment {
427
+ meetingId: string;
428
+ occurrenceId: string | null;
429
+ }
430
+ /** One row of a project's Meetings timeline (`listOccurrencesForProject`), newest first. */
431
+ interface ProjectOccurrenceRow {
432
+ occurrenceId: string;
433
+ ceremonyId: string;
434
+ ceremonyName: string;
435
+ isOneOff: boolean;
436
+ /** A one-off's purpose; null for recurring ceremonies. */
437
+ purpose: string | null;
438
+ scheduledStart: Date;
439
+ scheduledEnd: Date;
440
+ status: CeremonyOccurrenceStatus;
441
+ attendeeCount: number;
442
+ /** App-relative occurrence page; null for project-only guests who can't open it. */
443
+ href: string | null;
444
+ }
445
+ /** The ceremony that meets in a video room, and the occurrence on at the time asked. */
446
+ interface CeremonyMeetingUrlMatch {
447
+ workspace: {
448
+ id: string;
449
+ name: string;
450
+ };
451
+ ceremony: {
452
+ id: string;
453
+ name: string;
454
+ };
455
+ /** Set when the ceremony reviews exactly one project. */
456
+ project: {
457
+ id: string;
458
+ name: string;
459
+ } | null;
460
+ occurrence: {
461
+ id: string;
462
+ scheduledStart: Date;
463
+ scheduledEnd: Date;
464
+ } | null;
465
+ }
466
+ interface CeremonyAddedOccurrence {
467
+ id: string;
468
+ scheduledStart: Date;
469
+ scheduledEnd: Date;
470
+ cadenceStart: Date | null;
471
+ status: CeremonyOccurrenceStatus;
472
+ }
473
+ interface CeremonyRescheduledOccurrence {
474
+ id: string;
475
+ scheduledStart: Date;
476
+ scheduledEnd: Date;
477
+ /** The old start; null when the new time equals the old one (no-op). */
478
+ movedFrom: Date | null;
479
+ }
480
+
481
+ /** Definition fields shared by create and update. */
482
+ interface CeremonyFields {
483
+ /** Max 120 characters. */
484
+ name: string;
485
+ /** Unique per workspace; derived from `name` when omitted on create. */
486
+ slug?: string;
487
+ /** Title patterns that auto-attach recorded meetings (max 20). */
488
+ aliases?: string[];
489
+ /** Defaults to `CUSTOM`. Drives the default agenda and the async questions. */
490
+ kind?: CeremonyKind;
491
+ /** Icon key; null resets to the kind's default. */
492
+ icon?: string | null;
493
+ purpose?: string | null;
494
+ notFor?: string | null;
495
+ inputs?: string | null;
496
+ outputs?: string | null;
497
+ /** RRULE body, e.g. `FREQ=WEEKLY;BYDAY=MO;BYHOUR=10;BYMINUTE=0`. Validated server-side. */
498
+ cadenceRule: string;
499
+ /** IANA zone, e.g. `Europe/Madrid`. */
500
+ timezone: string;
501
+ /** Anchor date the cadence expands from. */
502
+ startsOn: Date;
503
+ /** 5-1440; defaults to 30. */
504
+ durationMinutes?: number;
505
+ /** 0-336; defaults to 24. */
506
+ leadTimeHours?: number;
507
+ /** Defaults to the caller on create. */
508
+ ownerId?: string;
509
+ productId?: string | null;
510
+ teamId?: string | null;
511
+ /** Projects in the same workspace. Replaces the whole set on update. */
512
+ projectIds?: string[];
513
+ /** Replaces the whole set on update. */
514
+ participantUserIds?: string[];
515
+ agendaTemplate?: CeremonyAgendaTemplateSection[];
516
+ /** Append the linked-projects section to every agenda (default true). */
517
+ includeProjects?: boolean;
518
+ matrixRoomId?: string | null;
519
+ /** Video room link; recordings from it file themselves here. Empty string clears it. */
520
+ meetingUrl?: string | null;
521
+ /** Run "Extract outputs" on every attached recording (default false). */
522
+ autoExtractOutputs?: boolean;
523
+ }
524
+ interface CeremonyCreateInput extends CeremonyFields {
525
+ workspaceId: string;
526
+ }
527
+ /**
528
+ * Partial edit. Changing the cadence, zone, anchor or duration deletes future
529
+ * PLANNED occurrences with no booking or recording, along with any agenda, notes
530
+ * link and async updates on them, and recreates them with new ids. Occurrences
531
+ * moved or added by hand stay.
532
+ */
533
+ interface CeremonyUpdateInput extends Partial<CeremonyFields> {
534
+ workspaceId: string;
535
+ id: string;
536
+ /** false retires the ceremony; true re-activates it and refills its window. */
537
+ isActive?: boolean;
538
+ }
539
+ interface CeremonyListOccurrencesInput {
540
+ workspaceId: string;
541
+ from: Date;
542
+ to: Date;
543
+ ceremonyId?: string;
544
+ }
545
+ /** An import-file definition: the template shape keyed by slug, people by name or email. */
546
+ interface CeremonyImportDefinition extends Partial<Omit<CeremonyFields, 'ownerId' | 'participantUserIds' | 'productId' | 'teamId' | 'projectIds' | 'slug'>> {
547
+ slug: string;
548
+ ownerName?: string;
549
+ participantNames?: string[];
550
+ }
551
+ interface CeremonyImportInput {
552
+ workspaceId: string;
553
+ /** 1-50 definitions. */
554
+ definitions: CeremonyImportDefinition[];
555
+ /** Default zone for definitions that carry none. */
556
+ timezone?: string;
557
+ /** Default anchor for definitions that carry none. */
558
+ startsOn?: Date;
559
+ }
560
+ interface CeremonySaveMyUpdateInput {
561
+ workspaceId: string;
562
+ occurrenceId: string;
563
+ /** Markdown answers keyed by question key (`done`, `today`, `blockers` for a standup). */
564
+ answers: Record<string, string>;
565
+ flaggedBlocker?: boolean;
566
+ /** true submits; false reopens a submitted update; omitted leaves it as is. */
567
+ submit?: boolean;
568
+ }
569
+ interface CeremonyAddAgendaItemInput {
570
+ workspaceId: string;
571
+ occurrenceId: string;
572
+ /** The agenda section's `key`. */
573
+ sectionKey: string;
574
+ /** Max 300 characters. */
575
+ title: string;
576
+ /** Max 500 characters. */
577
+ detail?: string | null;
578
+ }
579
+ /**
580
+ * Ceremonies — recurring meeting definitions and their occurrences (ADR-0059).
581
+ *
582
+ * A ceremony is the definition listed at Settings → Ceremonies; an occurrence
583
+ * is one scheduled instance of it, the page at
584
+ * `/w/<slug>/ceremonies/<ceremonyId>/<occurrenceId>`. Decisions logged in an
585
+ * occurrence live in {@link DecisionsApi} (`occurrenceId` on the decision).
586
+ *
587
+ * Reads need workspace `view`; writes need `edit`. Generating, skipping or
588
+ * posting an agenda additionally needs to be the ceremony owner (or a
589
+ * workspace owner/admin); import and backfill need `manage_members`.
590
+ */
591
+ declare class CeremoniesApi {
592
+ private client;
593
+ constructor(client: TrpcClient);
594
+ /** Built-in templates, one per kind — the "Add from template" list. */
595
+ templates(): Promise<CeremonyTemplate[]>;
596
+ /** Ceremonies of a workspace, active first then by name. Inactive ones only on request. */
597
+ list(workspaceId: string, options?: {
598
+ includeInactive?: boolean;
599
+ }): Promise<CeremonySummary[]>;
600
+ /** Active ceremonies linked to a project, each with its next planned occurrence. */
601
+ listForProject(projectId: string): Promise<ProjectCeremony[]>;
602
+ /**
603
+ * A project's Meetings timeline: occurrences of the ceremonies reviewing it
604
+ * (one-offs included), two weeks back to one week ahead by default, newest
605
+ * first, at most `perCeremony` (default 5) per recurring ceremony.
606
+ */
607
+ listOccurrencesForProject(input: {
608
+ projectId: string;
609
+ from?: Date;
610
+ to?: Date;
611
+ perCeremony?: number;
612
+ }): Promise<ProjectOccurrenceRow[]>;
613
+ /**
614
+ * The ceremony that meets in a video room, with the occurrence on at `at`
615
+ * (default now). Searches all your workspaces unless `workspaceId` narrows
616
+ * it; null when nothing (or nothing unambiguous) matches.
617
+ */
618
+ matchMeetingUrl(input: {
619
+ url: string;
620
+ at?: Date;
621
+ workspaceId?: string;
622
+ }): Promise<CeremonyMeetingUrlMatch | null>;
623
+ /** One ceremony with participants, projects and its recent + upcoming occurrences. */
624
+ get(workspaceId: string, id: string): Promise<Ceremony>;
625
+ /** Occurrences starting inside a window, across ceremonies or for one (max 200). */
626
+ listOccurrences(input: CeremonyListOccurrencesInput): Promise<CeremonyOccurrenceListRow[]>;
627
+ /** One occurrence — the meeting page — with its agenda, ceremony and recordings. */
628
+ getOccurrence(workspaceId: string, occurrenceId: string): Promise<CeremonyOccurrence>;
629
+ /** The caller's own async update for an occurrence. */
630
+ myUpdate(workspaceId: string, occurrenceId: string): Promise<CeremonyMyUpdate>;
631
+ /** Every participant's submitted update, and who hasn't answered. */
632
+ updateSummary(workspaceId: string, occurrenceId: string): Promise<CeremonyUpdateSummary>;
633
+ /** Draft the caller's answers from their activity since the previous occurrence. */
634
+ draftMyUpdate(workspaceId: string, occurrenceId: string): Promise<CeremonyMyUpdate>;
635
+ /** Save, submit or reopen the caller's own answers. */
636
+ saveMyUpdate(input: CeremonySaveMyUpdateInput): Promise<CeremonyMyUpdate>;
637
+ /**
638
+ * Generate or regenerate an occurrence's agenda. `circulate` also notifies
639
+ * participants and posts to the ceremony's Matrix room, and it re-sends both
640
+ * if they already went out, so don't retry it blindly.
641
+ */
642
+ generateAgenda(workspaceId: string, occurrenceId: string, options?: {
643
+ circulate?: boolean;
644
+ }): Promise<CeremonyGenerateAgendaResult>;
645
+ /**
646
+ * Skip an occurrence with a reason (1-500 characters). Participants are
647
+ * told. Skipping a booked one-off cancels the meeting: every attendee with an
648
+ * address gets a calendar cancellation, the ceremony is retired, and it can't
649
+ * be unskipped.
650
+ */
651
+ skipOccurrence(workspaceId: string, occurrenceId: string, reason: string): Promise<CeremonySkipResult>;
652
+ unskipOccurrence(workspaceId: string, occurrenceId: string): Promise<CeremonySkipResult>;
653
+ /** Add one occurrence at any time — a meeting off the cadence (owner, or workspace owner/admin). */
654
+ addOccurrence(workspaceId: string, ceremonyId: string, scheduledStart: Date): Promise<CeremonyAddedOccurrence>;
655
+ /**
656
+ * Move an occurrence that hasn't happened to another time (owner, or
657
+ * workspace owner/admin). It keeps its agenda, notes, updates and recordings.
658
+ */
659
+ rescheduleOccurrence(workspaceId: string, occurrenceId: string, scheduledStart: Date): Promise<CeremonyRescheduledOccurrence>;
660
+ /** Mark an agenda item resolved, or reopen it. Survives regeneration. */
661
+ resolveAgendaItem(workspaceId: string, occurrenceId: string, itemId: string, resolved?: boolean): Promise<CeremonyAgendaResult>;
662
+ /** Add an item by hand to an agenda section; kept across regeneration. */
663
+ addAgendaItem(input: CeremonyAddAgendaItemInput): Promise<CeremonyAgendaResult>;
664
+ /** Reorder one section's items; the order is kept across regeneration. */
665
+ reorderAgendaItems(workspaceId: string, occurrenceId: string, sectionKey: string, itemIds: string[]): Promise<CeremonyAgendaResult>;
666
+ /** Post the agenda to the ceremony's Matrix room. A repost needs `confirmRepost`. */
667
+ postAgendaToMatrix(workspaceId: string, occurrenceId: string, options?: {
668
+ confirmRepost?: boolean;
669
+ }): Promise<CeremonyMatrixPostResult>;
670
+ /** Take one of the bot's agenda posts back out of its Matrix room. `eventId` comes from `agenda.matrixPosts`. */
671
+ removeAgendaFromMatrix(workspaceId: string, occurrenceId: string, eventId: string): Promise<CeremonyMatrixRemoveResult>;
672
+ /** Create a ceremony and its first occurrences for the rolling window. */
673
+ create(input: CeremonyCreateInput): Promise<CeremonyWriteResult>;
674
+ update(input: CeremonyUpdateInput): Promise<CeremonyWriteResult>;
675
+ /** Upsert definitions by slug. Keys a definition omits are left untouched. */
676
+ importDefinitions(input: CeremonyImportInput): Promise<CeremonyImportResult[]>;
677
+ /**
678
+ * Attach unattached recordings to occurrences by alias. Defaults to a dry
679
+ * run — the report is the review step; pass `dryRun: false` to write. Even a
680
+ * dry run writes one thing: it schedules any missing occurrences of active
681
+ * ceremonies, so that historical ones exist to attach to.
682
+ */
683
+ backfillAttachments(workspaceId: string, options?: {
684
+ dryRun?: boolean;
685
+ }): Promise<CeremonyBackfillResult>;
686
+ /** Link a recorded meeting to the occurrence it captured (same workspace). */
687
+ attachMeeting(meetingId: string, occurrenceId: string): Promise<CeremonyMeetingAttachment>;
688
+ detachMeeting(meetingId: string): Promise<CeremonyMeetingAttachment>;
689
+ }
690
+
4
691
  type ActionInput = {
5
692
  assigneeId?: string;
6
693
  };
@@ -551,17 +1238,6 @@ interface TrpcClient {
551
1238
  mutate: (input: {
552
1239
  pageId: string;
553
1240
  body: string;
554
- quotedText?: string;
555
- quoteContext?: {
556
- prefix?: string;
557
- suffix?: string;
558
- };
559
- }) => Promise<unknown>;
560
- };
561
- reply: {
562
- mutate: (input: {
563
- parentId: string;
564
- body: string;
565
1241
  }) => Promise<unknown>;
566
1242
  };
567
1243
  update: {
@@ -575,18 +1251,6 @@ interface TrpcClient {
575
1251
  commentId: string;
576
1252
  }) => Promise<unknown>;
577
1253
  };
578
- resolve: {
579
- mutate: (input: {
580
- pageId: string;
581
- threadId: string;
582
- }) => Promise<unknown>;
583
- };
584
- unresolve: {
585
- mutate: (input: {
586
- pageId: string;
587
- threadId: string;
588
- }) => Promise<unknown>;
589
- };
590
1254
  };
591
1255
  /** Local-runner side of Agent runs (ADR-0067); agent-key principals only. */
592
1256
  agentRun: {
@@ -751,6 +1415,166 @@ interface TrpcClient {
751
1415
  }) => Promise<unknown>;
752
1416
  };
753
1417
  };
1418
+ ceremony: {
1419
+ templates: {
1420
+ query: () => Promise<unknown[]>;
1421
+ };
1422
+ list: {
1423
+ query: (input: {
1424
+ workspaceId: string;
1425
+ includeInactive?: boolean;
1426
+ }) => Promise<unknown[]>;
1427
+ };
1428
+ listForProject: {
1429
+ query: (input: {
1430
+ projectId: string;
1431
+ }) => Promise<unknown[]>;
1432
+ };
1433
+ listOccurrencesForProject: {
1434
+ query: (input: {
1435
+ projectId: string;
1436
+ from?: Date;
1437
+ to?: Date;
1438
+ perCeremony?: number;
1439
+ }) => Promise<unknown[]>;
1440
+ };
1441
+ matchMeetingUrl: {
1442
+ query: (input: {
1443
+ url: string;
1444
+ at?: Date;
1445
+ workspaceId?: string;
1446
+ }) => Promise<unknown>;
1447
+ };
1448
+ get: {
1449
+ query: (input: {
1450
+ workspaceId: string;
1451
+ id: string;
1452
+ }) => Promise<unknown>;
1453
+ };
1454
+ listOccurrences: {
1455
+ query: (input: CeremonyListOccurrencesInput) => Promise<unknown[]>;
1456
+ };
1457
+ getOccurrence: {
1458
+ query: (input: {
1459
+ workspaceId: string;
1460
+ occurrenceId: string;
1461
+ }) => Promise<unknown>;
1462
+ };
1463
+ myOccurrenceUpdate: {
1464
+ query: (input: {
1465
+ workspaceId: string;
1466
+ occurrenceId: string;
1467
+ }) => Promise<unknown>;
1468
+ };
1469
+ occurrenceUpdateSummary: {
1470
+ query: (input: {
1471
+ workspaceId: string;
1472
+ occurrenceId: string;
1473
+ }) => Promise<unknown>;
1474
+ };
1475
+ draftMyOccurrenceUpdate: {
1476
+ mutate: (input: {
1477
+ workspaceId: string;
1478
+ occurrenceId: string;
1479
+ }) => Promise<unknown>;
1480
+ };
1481
+ saveMyOccurrenceUpdate: {
1482
+ mutate: (input: CeremonySaveMyUpdateInput) => Promise<unknown>;
1483
+ };
1484
+ generateAgenda: {
1485
+ mutate: (input: {
1486
+ workspaceId: string;
1487
+ occurrenceId: string;
1488
+ circulate?: boolean;
1489
+ }) => Promise<unknown>;
1490
+ };
1491
+ skipOccurrence: {
1492
+ mutate: (input: {
1493
+ workspaceId: string;
1494
+ occurrenceId: string;
1495
+ reason: string;
1496
+ }) => Promise<unknown>;
1497
+ };
1498
+ unskipOccurrence: {
1499
+ mutate: (input: {
1500
+ workspaceId: string;
1501
+ occurrenceId: string;
1502
+ }) => Promise<unknown>;
1503
+ };
1504
+ addOccurrence: {
1505
+ mutate: (input: {
1506
+ workspaceId: string;
1507
+ ceremonyId: string;
1508
+ scheduledStart: Date;
1509
+ }) => Promise<unknown>;
1510
+ };
1511
+ rescheduleOccurrence: {
1512
+ mutate: (input: {
1513
+ workspaceId: string;
1514
+ occurrenceId: string;
1515
+ scheduledStart: Date;
1516
+ }) => Promise<unknown>;
1517
+ };
1518
+ resolveAgendaItem: {
1519
+ mutate: (input: {
1520
+ workspaceId: string;
1521
+ occurrenceId: string;
1522
+ itemId: string;
1523
+ resolved: boolean;
1524
+ }) => Promise<unknown>;
1525
+ };
1526
+ addAgendaItem: {
1527
+ mutate: (input: CeremonyAddAgendaItemInput) => Promise<unknown>;
1528
+ };
1529
+ reorderAgendaItems: {
1530
+ mutate: (input: {
1531
+ workspaceId: string;
1532
+ occurrenceId: string;
1533
+ sectionKey: string;
1534
+ itemIds: string[];
1535
+ }) => Promise<unknown>;
1536
+ };
1537
+ postAgendaToMatrix: {
1538
+ mutate: (input: {
1539
+ workspaceId: string;
1540
+ occurrenceId: string;
1541
+ confirmRepost?: boolean;
1542
+ }) => Promise<unknown>;
1543
+ };
1544
+ removeAgendaFromMatrix: {
1545
+ mutate: (input: {
1546
+ workspaceId: string;
1547
+ occurrenceId: string;
1548
+ eventId: string;
1549
+ }) => Promise<unknown>;
1550
+ };
1551
+ create: {
1552
+ mutate: (input: CeremonyCreateInput) => Promise<unknown>;
1553
+ };
1554
+ update: {
1555
+ mutate: (input: CeremonyUpdateInput) => Promise<unknown>;
1556
+ };
1557
+ importDefinitions: {
1558
+ mutate: (input: CeremonyImportInput) => Promise<unknown[]>;
1559
+ };
1560
+ backfillAttachments: {
1561
+ mutate: (input: {
1562
+ workspaceId: string;
1563
+ dryRun: boolean;
1564
+ }) => Promise<unknown>;
1565
+ };
1566
+ attachMeeting: {
1567
+ mutate: (input: {
1568
+ meetingId: string;
1569
+ occurrenceId: string;
1570
+ }) => Promise<unknown>;
1571
+ };
1572
+ detachMeeting: {
1573
+ mutate: (input: {
1574
+ meetingId: string;
1575
+ }) => Promise<unknown>;
1576
+ };
1577
+ };
754
1578
  crmApi: {
755
1579
  contactList: {
756
1580
  query: (input: {
@@ -1894,37 +2718,16 @@ interface FeatureComment {
1894
2718
  updatedAt: Date;
1895
2719
  createdBy: CommentAuthor;
1896
2720
  }
1897
- /**
1898
- * Comments on a Knowledge Page. `body` is Markdown. A comment is doc-level
1899
- * (`threadId` null) or part of a thread anchored to a span of the page body
1900
- * (`threadId` matches a comment mark; `quotedText` snapshots the span so the
1901
- * thread still reads if the text is later edited away). `parentId` marks a
1902
- * reply; threads are one level deep.
1903
- */
2721
+ /** Comments on a Knowledge Page — a flat, doc-level feed. `body` is Markdown. */
1904
2722
  interface PageComment {
1905
2723
  id: string;
1906
2724
  pageId: string;
1907
- threadId: string | null;
1908
- parentId: string | null;
1909
2725
  body: string;
1910
- quotedText: string | null;
1911
- resolvedAt: Date | null;
1912
2726
  createdById: string;
1913
2727
  createdAt: Date;
1914
2728
  updatedAt: Date;
1915
2729
  createdBy: CommentAuthor;
1916
2730
  }
1917
- /** What `pageComments.create` returns: the comment plus how its anchoring went. */
1918
- interface PageCommentCreated extends PageComment {
1919
- anchor: {
1920
- /** The page body now highlights the thread's span. False for doc-level
1921
- * comments and for a viewer's thread (viewers can't edit the body). */
1922
- anchored: boolean;
1923
- /** The page's `docVersion` after the highlight was written. */
1924
- docVersion?: number;
1925
- fastForward: boolean;
1926
- };
1927
- }
1928
2731
  /** Comments on a Goal/Objective. `content` is Markdown. */
1929
2732
  interface GoalComment {
1930
2733
  id: string;
@@ -2008,60 +2811,25 @@ interface PageCommentCreateInput {
2008
2811
  pageId: string;
2009
2812
  /** Markdown. Mention members with `@[Name](userId)` — see `workspaces.listMembers()`. */
2010
2813
  body: string;
2011
- /**
2012
- * Anchor the comment to this span of the page body, as it reads on the page
2013
- * (no Markdown syntax). The server mints the thread's `threadId`, finds the
2014
- * span and highlights it, and refuses the comment when the text matches no
2015
- * span, or several with nothing to choose between them. Omit for a doc-level
2016
- * comment.
2017
- */
2018
- quotedText?: string;
2019
- /**
2020
- * The text just before and/or after `quotedText`, to pick one occurrence
2021
- * when it appears more than once. Only with `quotedText`.
2022
- */
2023
- quoteContext?: {
2024
- prefix?: string;
2025
- suffix?: string;
2026
- };
2027
- }
2028
- interface PageCommentReplyInput {
2029
- parentId: string;
2030
- body: string;
2031
2814
  }
2032
2815
  interface PageCommentUpdateInput {
2033
2816
  commentId: string;
2034
2817
  body: string;
2035
2818
  }
2036
- interface PageCommentThreadInput {
2037
- pageId: string;
2038
- threadId: string;
2039
- }
2040
2819
  /**
2041
- * Discussion on a Knowledge Page: a doc-level feed under the page body, plus
2042
- * threads anchored to a span of it (`quotedText` on create). View access is
2043
- * the commenting gate: anyone the page is shared with can join the thread,
2044
- * but only an editor's anchored thread highlights the body. Editing and
2045
- * deleting are author-only.
2820
+ * Discussion on a Knowledge Page — a flat, doc-level feed under the page body.
2821
+ * View access is the commenting gate: anyone the page is shared with can join
2822
+ * the thread. Editing and deleting are author-only.
2046
2823
  */
2047
2824
  declare class PageCommentsApi {
2048
2825
  private client;
2049
2826
  constructor(client: TrpcClient);
2050
2827
  list(pageId: string): Promise<PageComment[]>;
2051
- create(input: PageCommentCreateInput): Promise<PageCommentCreated>;
2052
- /** Reply to an existing comment. Replies to replies still hang off the root. */
2053
- reply(input: PageCommentReplyInput): Promise<PageComment>;
2828
+ create(input: PageCommentCreateInput): Promise<PageComment>;
2054
2829
  update(input: PageCommentUpdateInput): Promise<PageComment>;
2055
2830
  delete(commentId: string): Promise<{
2056
2831
  success: boolean;
2057
2832
  }>;
2058
- /** Mark an anchored thread resolved. Only anchored threads have a threadId. */
2059
- resolve(input: PageCommentThreadInput): Promise<{
2060
- success: boolean;
2061
- }>;
2062
- unresolve(input: PageCommentThreadInput): Promise<{
2063
- success: boolean;
2064
- }>;
2065
2833
  }
2066
2834
 
2067
2835
  interface GoalCommentAddInput {
@@ -5564,6 +6332,8 @@ declare class ExponentialClient {
5564
6332
  keyResults: KeyResultsApi;
5565
6333
  projects: ProjectsApi;
5566
6334
  workspaces: WorkspacesApi;
6335
+ /** Ceremonies and their occurrences (ADR-0059). */
6336
+ ceremonies: CeremoniesApi;
5567
6337
  contacts: ContactsApi;
5568
6338
  decisions: DecisionsApi;
5569
6339
  organizations: OrganizationsApi;
@@ -5593,4 +6363,4 @@ declare class ExponentialClient {
5593
6363
  });
5594
6364
  }
5595
6365
 
5596
- export { type Action, type ActionComment, type ActionCommentAddInput, type ActionCommentUpdateInput, type ActionCreateInput, type ActionOutput, type ActionStatus, type ActionUpdateInput, type ActionUpsertBySourceInput, type ActionUpsertBySourceResult, type ActionsListOutput, type AddInteractionInput, type AddablePropertyType, type AgentRunStatus, AgentRunsApi, type AppendEventsResult, type Area, type AreaCreateInput, type AreaListOptions, type ClaimedRun, type CommentAuthor, type Contact, type ContactCreateInput, type ContactInteraction, type ContactListOutput, type ContactUpdateInput, type ContactsListOptions, type ConversationMessage, type CsvCellError, type CsvColumnTarget, type CsvCommitResult, type CsvMapping, type CsvPreview, type CsvPreviewColumn, type CsvPreviewRow, DEFAULT_GAP_MINUTES, type Database, type DatabaseCreateInput, type DatabaseFilter, type DatabasePropertyResult, type DatabaseRow, type DatabaseRowsPage, type DatabaseUpdateInput, type DatabaseView, type DayReport, type DayReportActionRow, type DayReportEntry, type DayReportProductRow, type Deal, type DealActivity, type DealCreateInput, type DealMoveInput, type DealUpdateInput, type Decision, type DecisionAdrRef, type DecisionChainRef, type DecisionCreateInput, type DecisionDecider, type DecisionDeciderInput, type DecisionEvidenceTurn, type DecisionFeatureRef, type DecisionLink, type DecisionListOptions, type DecisionListRow, type DecisionMeetingRef, type DecisionOccurrenceRef, type DecisionProductRef, type DecisionProjectRef, type DecisionReviewState, type DecisionSetStatusInput, type DecisionSource, type DecisionStatus, type DecisionTicketRef, type DecisionUpdateInput, type DecisionUserRef, type DeletedDatabase, type DraftDecisionsResult, type EnrichContactResult, type Epic, type EpicCreateInput, type EpicListOptions, type EpicPriority, type EpicStatus, type EpicUpdateInput, ExponentialClient, type ExponentialConfig, type Feature, type FeatureComment, type FeatureCommentCreateInput, type FeatureCommentReplyInput, type FeatureCommentThreadInput, type FeatureCommentUpdateInput, type FeatureCreateInput, type FeatureKeyResultLink, type FeatureLinkPageInput, type FeatureListOptions, type FeatureScope, type FeatureScopeStatus, type FeatureStatus, type FeatureUpdateInput, type FilterOp, type FinishInput, type FinishResult, type GlobalSearchOptions, type GlobalSearchOutput, type Goal, type GoalChildSummary, type GoalComment, type GoalCommentAddInput, type GoalCommentUpdateInput, type GoalCreateInput, type GoalHealth, type GoalKeyResultSummary, type GoalLifeDomain, type GoalListOptions, type GoalPeriod, type GoalProjectSummary, type GoalSetParentInput, type GoalSetStatusInput, type GoalStats, type GoalStatsOptions, type GoalStatus, type GoalTreeNode, type GoalTreeOptions, type GoalUpdateInput, type GoalUserSummary, type GoalWritableStatus, type HeartbeatResult, type InteractionDirection, type InteractionType, type KanbanStatus, type KeyResult, type KeyResultByObjectiveOptions, type KeyResultCheckIn, type KeyResultCheckInInput, type KeyResultCreateInput, type KeyResultFeatureLink, type KeyResultListOptions, type KeyResultProjectLink, type KeyResultStatus, type KeyResultUnit, type KeyResultUpdateInput, type KnowledgePage, type KnowledgeSearchOptions, type KnowledgeSearchOutput, type KnowledgeSearchResult, type KnowledgeSourceType, type LabelCreateInput, type LabelListOptions, type ListForEntityInput, type Meeting, type MeetingActionSummary, type MeetingCreateInput, type MeetingDecisions, type MeetingListOptions, type MeetingParticipant, type MeetingParticipantInput, type MeetingProjectRef, type MeetingSourceIntegration, type MeetingTypeFilter, type MeetingUpdateInput, type MeetingWorkspaceRef, type ObjectiveWithKeyResults, type Organization, type OrganizationCreateInput, type OrganizationListOutput, type OrganizationSize, type OrganizationsListOptions, type OverdueCohort, type OverdueTriage, type OverdueTriageRow, type PageComment, type PageCommentCreateInput, type PageCommentCreated, type PageCommentReplyInput, type PageCommentThreadInput, type PageCommentUpdateInput, type PageCreateInput, type PageDiff, type PageDiffOptions, type PageDiffSide, type PageGetFormat, type PageGetOptions, type PageHistory, type PageHistoryOptions, type PageListOptions, type PageOutlineEntry, type PageRestoreOptions, type PageRevision, type PageRevisionAuthor, type PageRevisionDetail, type PageRevisionKind, type PageSearchOptions, type PageSearchOutput, type PageSearchResult, type PageUpdateInput, type PillColor, type Pipeline, type PipelineStage, type Priority, type Product, type ProductCreateInput, type ProductUpdateInput, type Project, type ProjectDetail, type ProjectKeyResultLink, type ProjectOutput, type ProjectPriority, type ProjectStatus, type ProjectUpdateInput, type ProjectsListOptions, type ProjectsListOutput, type PropertyAddInput, type PropertyDef, type PropertyRejection, type PropertyType, type PropertyUpdateInput, type PropertyValue, ROUND_MINUTES, type ReadStatus, type RelationConfig, type RelationTargetKind, type Requirement, type RequirementCreateInput, type RequirementKind, type RequirementListOptions, type Resource, type ResourceContentType, type ResourceCreateInput, type ResourceListOptions, type ResourceListResult, type ResourceReadState, type ResourceUpdateInput, type RowListOptions, type RowValuesInput, type RowWriteOptions, type RunMessage, type RunnerEvent, type RunnerEventKind, type ScopeCreateInput, type ScopeListOptions, type ScopeUpdateInput, type SearchResult, type SearchResultType, type SearchResultWorkspace, type SelectOption, type SelectOptionInput, type SetEntityTagsInput, type SetEntityTagsResult, type Tag, type TagEntityType, type TagListResult, type Ticket, type TicketAssignee, type TicketComment, type TicketCommentAddInput, type TicketCommentUpdateInput, type TicketCreateInput, type TicketDependencyEdge, type TicketDetail, type TicketListOptions, type TicketSearchOptions, type TicketStatus, type TicketType, type TicketUpdateInput, TimeApi, type TimeConfirmDayResult, type TimeEntry, type TimeEntrySource, type TimeEntryStatus, type TimeLogBatchResult, type TimeLogInput, type TimeLogOutcome, type TimeLogResult, type TodaysActionRow, type TodaysActions, type TodaysActionsGroup, type UserStory, type UserStoryCreateInput, type UserStoryListOptions, type UserStoryUpdateInput, type WorklogSegment, type Workspace, type WorkspaceMember, type WorkspaceOutput, type WorkspacesListOutput, clearConfig, createConfigStore, getConfigPath, isAuthenticated, isTRPCError, loadConfig, saveConfig, segmentConversation };
6366
+ export { type Action, type ActionComment, type ActionCommentAddInput, type ActionCommentUpdateInput, type ActionCreateInput, type ActionOutput, type ActionStatus, type ActionUpdateInput, type ActionUpsertBySourceInput, type ActionUpsertBySourceResult, type ActionsListOutput, type AddInteractionInput, type AddablePropertyType, type AgentRunStatus, AgentRunsApi, type AppendEventsResult, type Area, type AreaCreateInput, type AreaListOptions, CeremoniesApi, type Ceremony, type CeremonyAddAgendaItemInput, type CeremonyAddedOccurrence, type CeremonyAgenda, type CeremonyAgendaItem, type CeremonyAgendaMatrixPost, type CeremonyAgendaRefType, type CeremonyAgendaResult, type CeremonyAgendaSection, type CeremonyAgendaTemplateSection, type CeremonyBackfillResult, type CeremonyBackfillRow, type CeremonyCreateInput, type CeremonyGenerateAgendaResult, type CeremonyImportDefinition, type CeremonyImportInput, type CeremonyImportResult, type CeremonyKind, type CeremonyListOccurrencesInput, type CeremonyMatrixPostResult, type CeremonyMatrixRemoveResult, type CeremonyMeetingAttachment, type CeremonyMeetingUrlMatch, type CeremonyMyUpdate, type CeremonyNamedRef, type CeremonyOccurrence, type CeremonyOccurrenceListRow, type CeremonyOccurrenceRow, type CeremonyOccurrenceStatus, type CeremonyParticipantUpdate, type CeremonyRecord, type CeremonyRecordedMeeting, type CeremonyRescheduledOccurrence, type CeremonySaveMyUpdateInput, type CeremonySkipProposal, type CeremonySkipResult, type CeremonySummary, type CeremonyTemplate, type CeremonyUpdateInput, type CeremonyUpdateQuestion, type CeremonyUpdateSummary, type CeremonyUserRef, type CeremonyWriteResult, type ClaimedRun, type CommentAuthor, type Contact, type ContactCreateInput, type ContactInteraction, type ContactListOutput, type ContactUpdateInput, type ContactsListOptions, type ConversationMessage, type CsvCellError, type CsvColumnTarget, type CsvCommitResult, type CsvMapping, type CsvPreview, type CsvPreviewColumn, type CsvPreviewRow, DEFAULT_GAP_MINUTES, type Database, type DatabaseCreateInput, type DatabaseFilter, type DatabasePropertyResult, type DatabaseRow, type DatabaseRowsPage, type DatabaseUpdateInput, type DatabaseView, type DayReport, type DayReportActionRow, type DayReportEntry, type DayReportProductRow, type Deal, type DealActivity, type DealCreateInput, type DealMoveInput, type DealUpdateInput, type Decision, type DecisionAdrRef, type DecisionChainRef, type DecisionCreateInput, type DecisionDecider, type DecisionDeciderInput, type DecisionEvidenceTurn, type DecisionFeatureRef, type DecisionLink, type DecisionListOptions, type DecisionListRow, type DecisionMeetingRef, type DecisionOccurrenceRef, type DecisionProductRef, type DecisionProjectRef, type DecisionReviewState, type DecisionSetStatusInput, type DecisionSource, type DecisionStatus, type DecisionTicketRef, type DecisionUpdateInput, type DecisionUserRef, type DeletedDatabase, type DraftDecisionsResult, type EnrichContactResult, type Epic, type EpicCreateInput, type EpicListOptions, type EpicPriority, type EpicStatus, type EpicUpdateInput, ExponentialClient, type ExponentialConfig, type Feature, type FeatureComment, type FeatureCommentCreateInput, type FeatureCommentReplyInput, type FeatureCommentThreadInput, type FeatureCommentUpdateInput, type FeatureCreateInput, type FeatureKeyResultLink, type FeatureLinkPageInput, type FeatureListOptions, type FeatureScope, type FeatureScopeStatus, type FeatureStatus, type FeatureUpdateInput, type FilterOp, type FinishInput, type FinishResult, type GlobalSearchOptions, type GlobalSearchOutput, type Goal, type GoalChildSummary, type GoalComment, type GoalCommentAddInput, type GoalCommentUpdateInput, type GoalCreateInput, type GoalHealth, type GoalKeyResultSummary, type GoalLifeDomain, type GoalListOptions, type GoalPeriod, type GoalProjectSummary, type GoalSetParentInput, type GoalSetStatusInput, type GoalStats, type GoalStatsOptions, type GoalStatus, type GoalTreeNode, type GoalTreeOptions, type GoalUpdateInput, type GoalUserSummary, type GoalWritableStatus, type HeartbeatResult, type InteractionDirection, type InteractionType, type KanbanStatus, type KeyResult, type KeyResultByObjectiveOptions, type KeyResultCheckIn, type KeyResultCheckInInput, type KeyResultCreateInput, type KeyResultFeatureLink, type KeyResultListOptions, type KeyResultProjectLink, type KeyResultStatus, type KeyResultUnit, type KeyResultUpdateInput, type KnowledgePage, type KnowledgeSearchOptions, type KnowledgeSearchOutput, type KnowledgeSearchResult, type KnowledgeSourceType, type LabelCreateInput, type LabelListOptions, type ListForEntityInput, type Meeting, type MeetingActionSummary, type MeetingCreateInput, type MeetingDecisions, type MeetingListOptions, type MeetingParticipant, type MeetingParticipantInput, type MeetingProjectRef, type MeetingSourceIntegration, type MeetingTypeFilter, type MeetingUpdateInput, type MeetingWorkspaceRef, type ObjectiveWithKeyResults, type Organization, type OrganizationCreateInput, type OrganizationListOutput, type OrganizationSize, type OrganizationsListOptions, type OverdueCohort, type OverdueTriage, type OverdueTriageRow, type PageComment, type PageCommentCreateInput, type PageCommentUpdateInput, type PageCreateInput, type PageDiff, type PageDiffOptions, type PageDiffSide, type PageGetFormat, type PageGetOptions, type PageHistory, type PageHistoryOptions, type PageListOptions, type PageOutlineEntry, type PageRestoreOptions, type PageRevision, type PageRevisionAuthor, type PageRevisionDetail, type PageRevisionKind, type PageSearchOptions, type PageSearchOutput, type PageSearchResult, type PageUpdateInput, type PillColor, type Pipeline, type PipelineStage, type Priority, type Product, type ProductCreateInput, type ProductUpdateInput, type Project, type ProjectCeremony, type ProjectDetail, type ProjectKeyResultLink, type ProjectOccurrenceRow, type ProjectOutput, type ProjectPriority, type ProjectStatus, type ProjectUpdateInput, type ProjectsListOptions, type ProjectsListOutput, type PropertyAddInput, type PropertyDef, type PropertyRejection, type PropertyType, type PropertyUpdateInput, type PropertyValue, ROUND_MINUTES, type ReadStatus, type RelationConfig, type RelationTargetKind, type Requirement, type RequirementCreateInput, type RequirementKind, type RequirementListOptions, type Resource, type ResourceContentType, type ResourceCreateInput, type ResourceListOptions, type ResourceListResult, type ResourceReadState, type ResourceUpdateInput, type RowListOptions, type RowValuesInput, type RowWriteOptions, type RunMessage, type RunnerEvent, type RunnerEventKind, type ScopeCreateInput, type ScopeListOptions, type ScopeUpdateInput, type SearchResult, type SearchResultType, type SearchResultWorkspace, type SelectOption, type SelectOptionInput, type SetEntityTagsInput, type SetEntityTagsResult, type Tag, type TagEntityType, type TagListResult, type Ticket, type TicketAssignee, type TicketComment, type TicketCommentAddInput, type TicketCommentUpdateInput, type TicketCreateInput, type TicketDependencyEdge, type TicketDetail, type TicketListOptions, type TicketSearchOptions, type TicketStatus, type TicketType, type TicketUpdateInput, TimeApi, type TimeConfirmDayResult, type TimeEntry, type TimeEntrySource, type TimeEntryStatus, type TimeLogBatchResult, type TimeLogInput, type TimeLogOutcome, type TimeLogResult, type TodaysActionRow, type TodaysActions, type TodaysActionsGroup, type UserStory, type UserStoryCreateInput, type UserStoryListOptions, type UserStoryUpdateInput, type WorklogSegment, type Workspace, type WorkspaceMember, type WorkspaceOutput, type WorkspacesListOutput, clearConfig, createConfigStore, getConfigPath, isAuthenticated, isTRPCError, loadConfig, saveConfig, segmentConversation };