granola-toolkit 0.29.0 → 0.31.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.
Files changed (3) hide show
  1. package/README.md +38 -0
  2. package/dist/cli.js +647 -98
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -35,6 +35,7 @@ granola --help
35
35
  granola attach --help
36
36
  granola auth login
37
37
  granola exports --help
38
+ granola folder --help
38
39
  granola meeting --help
39
40
  granola notes --help
40
41
  granola serve --help
@@ -52,6 +53,7 @@ vp pack
52
53
  node dist/cli.js --help
53
54
  node dist/cli.js attach --help
54
55
  node dist/cli.js exports --help
56
+ node dist/cli.js folder --help
55
57
  node dist/cli.js meeting --help
56
58
  node dist/cli.js notes --help
57
59
  node dist/cli.js serve --help
@@ -94,8 +96,11 @@ node dist/cli.js transcripts --format yaml --output ./transcripts-yaml
94
96
  Inspect individual meetings:
95
97
 
96
98
  ```bash
99
+ granola folder list
100
+ granola folder view Team
97
101
  granola meeting list --limit 10
98
102
  granola meeting list --search planning
103
+ granola meeting list --folder Team
99
104
  granola meeting view 1234abcd
100
105
  granola meeting notes 1234abcd
101
106
  granola meeting transcript 1234abcd --format json
@@ -201,6 +206,24 @@ The machine-readable `export` command includes:
201
206
  - structured note data plus rendered Markdown
202
207
  - structured transcript data plus rendered transcript text when available
203
208
 
209
+ ### Folders
210
+
211
+ `folder` exposes Granola document lists as a first-class concept instead of leaving meetings in one flat global list.
212
+
213
+ The flow is:
214
+
215
+ 1. reuse the shared auth path that `notes` and `meeting` already use
216
+ 2. call Granola's document-list API, with `v2` first and `v1` fallback
217
+ 3. normalise folder metadata and document membership into shared folder records
218
+ 4. attach folder membership to meetings in the shared app core
219
+ 5. let folder commands and meeting filters resolve folders by id, prefix, or unique name
220
+
221
+ The current CLI surface includes:
222
+
223
+ - `folder list`
224
+ - `folder view <id|name>`
225
+ - `meeting list --folder <id|name>`
226
+
204
227
  ### Server
205
228
 
206
229
  `serve` starts a long-lived local `Granola Toolkit` server on one shared app instance.
@@ -208,12 +231,17 @@ The machine-readable `export` command includes:
208
231
  The initial server API includes:
209
232
 
210
233
  - `GET /health`
234
+ - `GET /server/info`
211
235
  - `POST /auth/unlock` for password-protected servers
212
236
  - `POST /auth/lock` to clear the browser/API unlock cookie
213
237
  - `GET /auth/status`
214
238
  - `GET /state`
215
239
  - `GET /events` for server-sent state updates
240
+ - `GET /folders`
241
+ - `GET /folders/resolve?q=<query>`
242
+ - `GET /folders/:id`
216
243
  - `GET /meetings`
244
+ - `GET /meetings?folderId=<id>` for folder-scoped meeting lists
217
245
  - `GET /meetings?refresh=true` to bypass the local meeting index and force a live refresh
218
246
  - `GET /meetings/resolve?q=<query>`
219
247
  - `GET /meetings/:id`
@@ -272,6 +300,16 @@ Use it when you want:
272
300
 
273
301
  The attach flow uses the existing local HTTP API plus `GET /events` for live state updates.
274
302
 
303
+ ### Runtime Boundaries
304
+
305
+ The toolkit now keeps its local persistence and transport contracts explicit:
306
+
307
+ - one shared local data directory for export jobs, meeting index data, and any file-backed session state
308
+ - one versioned local HTTP transport contract, exposed by `GET /server/info`
309
+ - one remote client handshake that validates the transport protocol before attaching
310
+
311
+ That keeps the current single-package repo simple, while making a future split into separate server/client packages or remote-hosted clients much less invasive.
312
+
275
313
  ### TUI
276
314
 
277
315
  `tui` starts a full-screen terminal workspace on the shared app core, without requiring the local server or browser client. Use `attach` when you want the same workspace against an existing shared server instance instead.