exponential-sdk 1.27.0 → 1.29.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/README.md CHANGED
@@ -60,6 +60,35 @@ Returns all workspaces you have access to.
60
60
 
61
61
  ---
62
62
 
63
+ ### Positions (roles & responsibilities)
64
+
65
+ The roles shown on a workspace's settings page (ADR-0068). Writes need a
66
+ person's own API token — agent keys get `FORBIDDEN` — and owner/admin, except
67
+ that a holder who is at least a member may edit their Position's remit.
68
+
69
+ ```typescript
70
+ const { positions, members } = await client.positions.list(workspaceId);
71
+
72
+ const cto = await client.positions.create({
73
+ workspaceId,
74
+ title: 'Technical Director',
75
+ remit: 'Architecture, hiring engineers, the release process.',
76
+ notAccountableFor: 'Sales and marketing.',
77
+ holderUserIds: [userId],
78
+ });
79
+
80
+ await client.positions.update({ workspaceId, positionId: cto.id, remit: '...' });
81
+ await client.positions.setHolders(workspaceId, cto.id, [userId, otherUserId]);
82
+ await client.positions.delete(workspaceId, cto.id);
83
+
84
+ // Upsert by title in one transaction; dryRun shows the plan first.
85
+ await client.positions.importMany({ workspaceId, dryRun: true, positions: [
86
+ { title: 'Travel researcher', remit: 'Flights, hotels, visas.', holderUserIds: [] },
87
+ ] });
88
+ ```
89
+
90
+ ---
91
+
63
92
  ### Projects
64
93
 
65
94
  ```typescript
@@ -122,6 +151,42 @@ const projectActions = await client.actions.getProjectActions("proj-123");
122
151
 
123
152
  ---
124
153
 
154
+ ### Ceremonies
155
+
156
+ Recurring meeting definitions (ADR-0059) and their scheduled **occurrences**
157
+ (the page at `/w/<slug>/ceremonies/<ceremonyId>/<occurrenceId>`).
158
+
159
+ ```typescript
160
+ // Definitions (Settings → Ceremonies)
161
+ const ceremonies = await client.ceremonies.list("ws-123"); // { includeInactive: true } for retired ones
162
+ const ceremony = await client.ceremonies.get("ws-123", "cer-123"); // + participants, recent/upcoming occurrences
163
+
164
+ // One meeting instance: agenda snapshot, recordings, notes page id, skip proposal
165
+ const occ = await client.ceremonies.getOccurrence("ws-123", "occ-123");
166
+ const notes = occ.notesPageId ? await client.pages.get(occ.notesPageId) : null;
167
+
168
+ // Occurrences in a window
169
+ await client.ceremonies.listOccurrences({ workspaceId: "ws-123", from, to, ceremonyId: "cer-123" });
170
+
171
+ // Async updates (standups)
172
+ await client.ceremonies.updateSummary("ws-123", "occ-123");
173
+ await client.ceremonies.saveMyUpdate({ workspaceId: "ws-123", occurrenceId: "occ-123", answers: { done: "…" }, submit: true });
174
+
175
+ // Agenda and lifecycle (owner, or workspace owner/admin, for generate/skip/post)
176
+ await client.ceremonies.generateAgenda("ws-123", "occ-123", { circulate: true });
177
+ await client.ceremonies.addAgendaItem({ workspaceId: "ws-123", occurrenceId: "occ-123", sectionKey: "blockers", title: "Pricing" });
178
+ await client.ceremonies.skipOccurrence("ws-123", "occ-123", "Nothing to discuss");
179
+ await client.ceremonies.attachMeeting("meeting-123", "occ-123");
180
+
181
+ // Write definitions
182
+ await client.ceremonies.create({ workspaceId: "ws-123", name: "Weekly Planning", cadenceRule: "FREQ=WEEKLY;BYDAY=MO;BYHOUR=10;BYMINUTE=0", timezone: "Europe/Madrid", startsOn: new Date("2026-10-05") });
183
+ await client.ceremonies.update({ workspaceId: "ws-123", id: "cer-123", isActive: false });
184
+ ```
185
+
186
+ Decisions logged in an occurrence carry its `occurrenceId` (see Decisions below).
187
+
188
+ ---
189
+
125
190
  ### Decisions
126
191
 
127
192
  The workspace Decision Log (ADR-0060). **An open question is a decision with