exponential-sdk 1.16.0 → 1.18.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
@@ -122,6 +122,71 @@ const projectActions = await client.actions.getProjectActions("proj-123");
122
122
 
123
123
  ---
124
124
 
125
+ ### Decisions
126
+
127
+ The workspace Decision Log (ADR-0060). **An open question is a decision with
128
+ status `OPEN`** — there is no separate model, and that is exactly what the
129
+ "Open questions" panel on a meeting page reads.
130
+
131
+ ```typescript
132
+ // Log a decision from a meeting
133
+ await client.decisions.create({
134
+ workspaceId: "ws-123",
135
+ statement: "Ship the importer behind a flag",
136
+ body: "## Context\n...\n## Consequences\n...",
137
+ status: "ACCEPTED",
138
+ source: "AGENT",
139
+ transcriptionSessionId: "meeting-123",
140
+ deciders: [{ name: "Ada", email: "ada@example.com" }],
141
+ });
142
+
143
+ // Log an open question from the same meeting
144
+ await client.decisions.create({
145
+ workspaceId: "ws-123",
146
+ statement: "Do we backfill historical rows?",
147
+ status: "OPEN",
148
+ transcriptionSessionId: "meeting-123",
149
+ });
150
+
151
+ // Both panels for one meeting, drafts included if you can edit it
152
+ const { decisions, canLogDecision } = await client.decisions.listForMeeting("meeting-123");
153
+
154
+ // The log, filtered
155
+ const open = await client.decisions.list({ workspaceId: "ws-123", statuses: ["OPEN"] });
156
+
157
+ // Answer an open question, then record what implemented it
158
+ await client.decisions.setStatus({ workspaceId: "ws-123", decisionId: "d1", status: "ACCEPTED" });
159
+ await client.decisions.linkTicket("ws-123", "d1", "ticket-123");
160
+ ```
161
+
162
+ #### Statuses
163
+
164
+ `OPEN` (open question) · `PROPOSED` · `ACCEPTED` · `SUPERSEDED` · `DEPRECATED`
165
+
166
+ `SUPERSEDED` and `DEPRECATED` are reached through `setStatus`, never as a
167
+ birth state.
168
+
169
+ #### Sources
170
+
171
+ `MEETING` · `MANUAL` · `AGENT`
172
+
173
+ #### Evidence
174
+
175
+ Evidence turns are quotes from the meeting's transcript, and the server checks
176
+ them: the `turnIndex` must resolve to a real turn and the words must be that
177
+ turn's (compared loosely for case, punctuation and whitespace). Turns that
178
+ don't match are **dropped**, and `speaker`/`startTime` are replaced with the
179
+ transcript's own values. Evidence therefore requires `transcriptionSessionId`;
180
+ sending it without one is a `BAD_REQUEST`.
181
+
182
+ ```typescript
183
+ // Let the server propose decisions from a meeting, for someone to review
184
+ const { draftCount, discardedWithoutEvidence } =
185
+ await client.decisions.extractDrafts("meeting-123");
186
+ ```
187
+
188
+ ---
189
+
125
190
  ### Configuration
126
191
 
127
192
  Credentials are stored persistently using the OS keychain via [`conf`](https://github.com/sindresorhus/conf).