@cloudglue/tinycloud 0.3.10 → 0.3.12

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
@@ -17,11 +17,11 @@ The npm package is a small launcher: on first run it downloads the matching
17
17
  platform distribution from Cloudglue's CDN (cached under
18
18
  `~/.tinycloud/versions/<version>/`), verifies its checksum, and execs the real
19
19
  binary. The package version pins the binary version, so
20
- `npx @cloudglue/tinycloud@0.3.10` always runs tinycloud 0.3.10. It also adds two
20
+ `npx @cloudglue/tinycloud@0.3.12` always runs tinycloud 0.3.12. It also adds two
21
21
  wrapper commands:
22
22
 
23
23
  ```bash
24
- tinycloud install --version 0.3.10 # pre-download a version
24
+ tinycloud install --version 0.3.12 # pre-download a version
25
25
  tinycloud install --latest # install latest stable and pin to it
26
26
  tinycloud update # move to latest stable, prune old versions
27
27
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudglue/tinycloud",
3
- "version": "0.3.10",
3
+ "version": "0.3.12",
4
4
  "description": "Agent CLI for deep video and image work, by Cloudglue. Downloads the tinycloud binary on first run.",
5
5
  "bin": {
6
6
  "tinycloud": "bin/tinycloud.js"
@@ -39,10 +39,11 @@ connector?" or an envelope field needs explaining.
39
39
  `library collections show <col>` until every `files[].status` is `completed`
40
40
  before querying.
41
41
  - **Data connector** — a linked external source of recordings (Zoom, Grain,
42
- Google Drive, Dropbox, Loom, S3/GCS). `tinycloud library connectors …`
43
- lists, browses (`files`, with provider-specific filters), and syncs
44
- individual items by URI (e.g. `grain://recording/<id>`) so they become
45
- Cloudglue files.
42
+ Gong, Recall, Google Drive, Dropbox, S3/GCS). `tinycloud library connectors …`
43
+ lists, browses (`files`, with provider-specific filters; rows carry provider
44
+ metadata on 0.3.11+), peeks one item's provider metadata without syncing
45
+ (`inspect`, 0.3.11+), and syncs individual items by URI
46
+ (e.g. `grain://recording/<id>`) so they become Cloudglue files.
46
47
  - **Source** — anything a verb accepts as input: a local path, URL,
47
48
  `cloudglue://files/<id>` URI, connector URI, collection, or a bare file-id
48
49
  UUID (normalized to `cloudglue://files/<id>`; an existing local path of the
@@ -70,7 +71,8 @@ connector?" or an envelope field needs explaining.
70
71
  (`status`, `data`, `ref`, `meta`, `error`, …). The machine contract; see
71
72
  reference/envelope.md.
72
73
  - **Watch context / describe** — the reusable analysis `tinycloud watch`
73
- produces (summary, segments, transcript-ish context). Cached locally and
74
+ produces (summary, segments with their spoken utterances inlined as
75
+ `speech[]`, transcript-ish context). Cached locally and
74
76
  mirrored in Cloudglue, so later `extract`/`ask`/`search` reuse it instead
75
77
  of re-analyzing.
76
78
  - **See / image describe (0.3.7+)** — the image counterpart of `watch`:
@@ -54,7 +54,7 @@ Flags shared by most verbs are listed once at the bottom.
54
54
  tinycloud watch <source> [--segment uniform:20|chapters|shots|segments]
55
55
  [--shot-min-seconds <s>] [--shot-max-seconds <s>]
56
56
  [--profile default|light|custom] [--speech-only | --visual-only]
57
- [--start <t>] [--end <t>] [--transcript] [--content] [--json-index]
57
+ [--start <t>] [--end <t>] [--transcript] [--content]
58
58
  [--background]
59
59
  ```
60
60
 
@@ -65,6 +65,20 @@ bounds are part of the cache key, so tuned and default shot passes never
65
65
  collide. `watch` is **video/audio only** — point it at an image and it errors
66
66
  ("watch analyzes video/audio; for an image use `tinycloud see`").
67
67
 
68
+ Segments carry the spoken words (0.3.12+): each segment (and embedded shot)
69
+ inlines its overlapping utterances as `speech: string[]`. A source with
70
+ speech but no visual segmentation — an audio file, `--speech-only`, a very
71
+ short or windowed source — gets uniform 20s speech segments synthesized
72
+ (`"segmentation": "uniform:20"`) instead of an empty `segments` list. Caches
73
+ written by older versions heal automatically on the next watch or search.
74
+
75
+ `--transcript` adds the full transcript as `data.transcript` (speaker-labeled
76
+ when more than one speaker); `--content` inlines the complete describe
77
+ markdown as `data.content`. Both are derived per invocation — they don't
78
+ change the cache key and are served on cache hits, so asking for them never
79
+ re-runs an analysis. `--json-index` was removed in 0.3.12 (it had long been a
80
+ no-op; passing it now errors as an unknown flag).
81
+
68
82
  ### see — analyze an image (cloud, 0.3.7+)
69
83
 
70
84
  ```bash
@@ -122,6 +136,9 @@ tinycloud search "<keyword>" [--in <paths|source-ids|collection-ids|all>]
122
136
 
123
137
  Searches cached context locally, including cached `see` image results (0.3.7+),
124
138
  so a describe you've already run is greppable without another cloud call.
139
+ `--field speech` matches the utterances inlined on cached watch segments —
140
+ including speech-only/audio watches (0.3.12+; older cache entries heal in
141
+ place during the scan, nothing is re-billed).
125
142
 
126
143
  ### probe — semantic search (cloud)
127
144
 
@@ -206,6 +223,7 @@ tinycloud library collections delete <col_id> --json
206
223
  tinycloud library collections entities <col_id> <source> [--limit <n>] [--offset <n>] --json # read a video's entities
207
224
  tinycloud library connectors list --json
208
225
  tinycloud library connectors files <connector-id> [--limit 25] [--page-token <t>] --json
226
+ tinycloud library connectors inspect [<connector-id>] <uri-or-share-link> --json # metadata peek, no file created (0.3.11+)
209
227
  tinycloud library connectors sync [<connector-id>] <uri-share-link-or-public-url> --json
210
228
  ```
211
229
 
@@ -250,17 +268,32 @@ Dropbox file share links sync server-side via the connector's OAuth
250
268
  (including login-gated links); `zoom.us/rec/share` links resolve best-effort
251
269
  (Zoom mints a new token per copy — the recording-detail link is the reliable
252
270
  form). Link warnings are advisory and surface in `data.warnings` rather than
253
- blocking the sync. Non-connector public URLs (direct media URLs, TikTok,
271
+ blocking the sync. Synced files carry provider `source_metadata` (title,
272
+ participants, summary) for Grain, Zoom, Recall, Google Drive, Dropbox, and
273
+ Gong. Non-connector public URLs (direct media URLs, TikTok,
254
274
  Loom, public Dropbox links without a connector) sync into a standalone
255
275
  Cloudglue file via direct URL ingestion — same command, no connector needed.
256
276
  YouTube URLs cannot sync; use `tinycloud grab` instead.
257
277
 
258
278
  `connectors files` also takes provider-specific filters: `--from`/`--to`
259
- (Zoom, Grain dates), `--folder-id` (Google Drive), `--path` (Dropbox),
260
- `--bucket`/`--prefix` (S3/GCS), `--title-search`/`--team`/`--meeting-type`
261
- (Grain). Collection IDs (`col_…`) are stable; collection names are
279
+ (dates — every provider except S3/GCS; Zoom and Gong default to the last
280
+ 6 months), `--folder-id` (Google Drive), `--path` (Dropbox),
281
+ `--bucket`/`--prefix` (S3/GCS bucket required), `--title-search` (Grain,
282
+ Zoom, Google Drive, Dropbox, Gong), `--team`/`--meeting-type` (Grain).
283
+ Filters a provider can't honor are ignored, and filtered pages can come back
284
+ short or even empty while more remain — keep paging until `next_page_token`
285
+ is null. On 0.3.11+ each row also carries provider `metadata` (participants,
286
+ host, duration, AI summary) when the source exposes it — use it to pick files
287
+ before syncing. Collection IDs (`col_…`) are stable; collection names are
262
288
  display-only.
263
289
 
290
+ `connectors inspect <uri>` (0.3.11+, feature `library.connectors.inspect.v1`)
291
+ returns one item's provider `source_metadata` WITHOUT materializing a file —
292
+ same URI/share-link forms as sync, connector id optional. S3/GCS objects have
293
+ nothing richer to inspect. On older binaries it fails with an unknown-command
294
+ error — fall back to `connectors sync` (idempotent) and read
295
+ `source_metadata` from the sync envelope instead.
296
+
264
297
  ### jobs — async work
265
298
 
266
299
  ```bash
@@ -9,11 +9,11 @@ set -u
9
9
 
10
10
  # Mirror tinycloud-skill.json: min_version / supported_range upper bound
11
11
  # (CI diffs these against the manifest).
12
- MIN_VERSION="0.3.7"
12
+ MIN_VERSION="0.3.12"
13
13
  MAX_VERSION_EXCLUSIVE="0.4.0"
14
14
  INSTALL_CMD='curl -fsSL https://app.cloudglue.dev/tinycloud.sh | bash'
15
15
  # Kept in sync with ../tinycloud-skill.json required_features (CI diffs them).
16
- REQUIRED_FEATURES="envelope.v1 watch.v1 see.v1 extract.v1 extract.images.v1 caption.v1 search.v1 probe.v1 ask.v1 clip.v1 grab.v1 face.v1 jobs.v1 library.collections.v1 library.collections.create.v1 library.collections.mutate.v1 library.collections.entities.v1 library.sync.url.v1 workflow.v1 publish.v1 publish.manage.v1 publish.video.v1 setup.v1"
16
+ REQUIRED_FEATURES="envelope.v1 watch.v1 watch.speech.v1 see.v1 extract.v1 extract.images.v1 caption.v1 search.v1 probe.v1 ask.v1 clip.v1 grab.v1 face.v1 jobs.v1 library.collections.v1 library.collections.create.v1 library.collections.mutate.v1 library.collections.entities.v1 library.sync.url.v1 workflow.v1 publish.v1 publish.manage.v1 publish.video.v1 setup.v1"
17
17
 
18
18
  # 1) Binary present and responsive?
19
19
  if ! command -v tinycloud >/dev/null 2>&1; then
@@ -1,11 +1,12 @@
1
1
  {
2
- "skill_version": "0.3.10",
2
+ "skill_version": "0.3.12",
3
3
  "tinycloud": {
4
- "min_version": "0.3.7",
5
- "supported_range": ">=0.3.7 <0.4.0",
4
+ "min_version": "0.3.12",
5
+ "supported_range": ">=0.3.12 <0.4.0",
6
6
  "required_features": [
7
7
  "envelope.v1",
8
8
  "watch.v1",
9
+ "watch.speech.v1",
9
10
  "see.v1",
10
11
  "extract.v1",
11
12
  "extract.images.v1",