@cloudglue/tinycloud 0.3.5 → 0.3.6
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 +3 -3
- package/package.json +1 -1
- package/skills/tinycloud/SKILL.md +8 -1
- package/skills/tinycloud/reference/envelope.md +6 -4
- package/skills/tinycloud/reference/glossary.md +17 -0
- package/skills/tinycloud/reference/pipelines.md +5 -0
- package/skills/tinycloud/reference/setup.md +10 -2
- package/skills/tinycloud/reference/verbs.md +24 -1
- package/skills/tinycloud/tinycloud-skill.json +1 -1
package/README.md
CHANGED
|
@@ -16,11 +16,11 @@ The npm package is a small launcher: on first run it downloads the matching
|
|
|
16
16
|
platform distribution from Cloudglue's CDN (cached under
|
|
17
17
|
`~/.tinycloud/versions/<version>/`), verifies its checksum, and execs the real
|
|
18
18
|
binary. The package version pins the binary version, so
|
|
19
|
-
`npx @cloudglue/tinycloud@0.3.
|
|
19
|
+
`npx @cloudglue/tinycloud@0.3.6` always runs tinycloud 0.3.6. It also adds two
|
|
20
20
|
wrapper commands:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
tinycloud install --version 0.3.
|
|
23
|
+
tinycloud install --version 0.3.6 # pre-download a version
|
|
24
24
|
tinycloud install --latest # install latest stable and pin to it
|
|
25
25
|
tinycloud update # move to latest stable, prune old versions
|
|
26
26
|
```
|
|
@@ -143,7 +143,7 @@ tinycloud caption ./demo.mp4 --format srt --transcript --json
|
|
|
143
143
|
tinycloud clip cut ./demo.mp4 --start 12 --end 28 -o clip.mp4 --json
|
|
144
144
|
# Grounded Q&A over one or more videos
|
|
145
145
|
tinycloud ask "What objections came up?" --in ./demo.mp4 --json
|
|
146
|
-
# Detect faces, or match a known face against a video (0.3.4
|
|
146
|
+
# Detect faces, or match a known face against a video (0.3.4+; query image: JPEG/PNG)
|
|
147
147
|
tinycloud face match ./person.jpg ./demo.mp4 --max-faces 10 --json
|
|
148
148
|
```
|
|
149
149
|
|
package/package.json
CHANGED
|
@@ -91,7 +91,7 @@ tinycloud clip burn ./demo.mp4 --subtitle-file ./captions/demo.srt -o ./out.mp4
|
|
|
91
91
|
|
|
92
92
|
# Faces on a single video (cloud, 0.3.4+) — for collection-scale face search/list, see Collections below
|
|
93
93
|
tinycloud face detect ./demo.mp4 --json # every face → normalized box + timestamp
|
|
94
|
-
tinycloud face match ./person.jpg ./demo.mp4 --max-faces 10 --json # query image, ranked 0–100 similarity
|
|
94
|
+
tinycloud face match ./person.jpg ./demo.mp4 --max-faces 10 --json # query image (JPEG/PNG), ranked 0–100 similarity
|
|
95
95
|
|
|
96
96
|
# Remote videos, async jobs
|
|
97
97
|
tinycloud grab https://youtu.be/<id> -o ./tinycloud-output/grabbed/ --json
|
|
@@ -193,6 +193,13 @@ Authoring your own recipes: [reference/workflow-authoring.md](reference/workflow
|
|
|
193
193
|
(`<cg-playlist>`, `<cg-grid>`, `<cg-chapters>`) rather than hand-rolled
|
|
194
194
|
players, galleries, or segment-list JS — details in
|
|
195
195
|
[reference/verbs.md](reference/verbs.md).
|
|
196
|
+
- Live-API discovery components (0.3.6+): the same embed script also defines
|
|
197
|
+
collection-scoped, **private-site-only** elements that let viewers search/chat
|
|
198
|
+
inside a published site — `<cg-chat>`, `<cg-search>`, `<cg-deep-search>`,
|
|
199
|
+
`<cg-face-search>` (chat/search/deep-search need a media-descriptions or
|
|
200
|
+
rich-transcripts collection; face-search needs face-analysis). `publish`
|
|
201
|
+
**hard-rejects** them on a public site → publish with `--visibility private`.
|
|
202
|
+
See [reference/verbs.md](reference/verbs.md).
|
|
196
203
|
|
|
197
204
|
## 5. Reference (load on demand)
|
|
198
205
|
|
|
@@ -60,10 +60,12 @@ the exit code alone.
|
|
|
60
60
|
|
|
61
61
|
`upstream` on a piped command means the upstream envelope was not `ready` —
|
|
62
62
|
fix the upstream failure, don't retry downstream. `upstream` from a cloud
|
|
63
|
-
call itself is a Cloudglue API failure;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
63
|
+
call itself is a Cloudglue API failure; transient ones (request deadline,
|
|
64
|
+
408/429/5xx, idle-timeout abort) are marked `retryable`, and idempotent reads
|
|
65
|
+
are already auto-retried with backoff before surfacing — so a retryable
|
|
66
|
+
`upstream` means the server may still be processing or retries were exhausted:
|
|
67
|
+
retry later or raise the knob the message names (`TINYCLOUD_HTTP_TIMEOUT_MS` /
|
|
68
|
+
`TINYCLOUD_UPLOAD_TIMEOUT_MS`).
|
|
67
69
|
|
|
68
70
|
## JSON vs JSONL vs text
|
|
69
71
|
|
|
@@ -41,6 +41,15 @@ connector?" or an envelope field needs explaining.
|
|
|
41
41
|
`cloudglue://files/<id>` URI, connector URI, collection, or a bare file-id
|
|
42
42
|
UUID (normalized to `cloudglue://files/<id>`; an existing local path of the
|
|
43
43
|
same name wins).
|
|
44
|
+
- **Supported inputs** — local uploads (`watch`, `extract`, `face`,
|
|
45
|
+
`library collections add`) map by extension: video `.mp4 .mov .webm .mkv .m4v`,
|
|
46
|
+
audio `.mp3 .wav .m4a`. Other extensions upload as `application/octet-stream`
|
|
47
|
+
and may be rejected upstream — transcode to a mapped container first
|
|
48
|
+
(`clip transcode`). Local uploads are bounded by Cloudglue at ~3 GB and
|
|
49
|
+
2 s–3 h (connector ingests allow more). `face match`/`face search` query
|
|
50
|
+
images must be **JPEG or PNG**. Use `grab` for YouTube and
|
|
51
|
+
`library connectors sync` for share links rather than passing those URLs to
|
|
52
|
+
upload verbs.
|
|
44
53
|
- **`ref` / `source_id` / `result_id`** — stable identifiers in every
|
|
45
54
|
envelope. `ref` is a reusable pointer to the analyzed source (including
|
|
46
55
|
`cloud_ready` and the Cloudglue file id) that pipes between verbs;
|
|
@@ -100,6 +109,14 @@ connector?" or an envelope field needs explaining.
|
|
|
100
109
|
events re-dispatched on the element) for custom site HTML, and plays
|
|
101
110
|
standalone or inside the container components (`<cg-playlist>`,
|
|
102
111
|
`<cg-grid>`, `<cg-chapters>`) — see reference/verbs.md.
|
|
112
|
+
- **Discovery components (live API, 0.3.6+)** — the same embed script also
|
|
113
|
+
defines four collection-scoped, **private-site-only** elements that let a
|
|
114
|
+
viewer search or chat inside a published site and play results inline via
|
|
115
|
+
`<cg-video>`: `<cg-chat>`, `<cg-search>`, `<cg-deep-search>` (over a
|
|
116
|
+
media-descriptions / rich-transcripts collection) and `<cg-face-search>` (over
|
|
117
|
+
a face-analysis collection). They carry no share id, but `tinycloud publish`
|
|
118
|
+
rejects them on a public site — publish `--visibility private`. See
|
|
119
|
+
reference/verbs.md.
|
|
103
120
|
|
|
104
121
|
## State and isolation (0.3.3+)
|
|
105
122
|
|
|
@@ -22,6 +22,11 @@ cat sources.txt | tinycloud watch --json
|
|
|
22
22
|
|
|
23
23
|
- Piping watch envelopes into `search` / `probe` / `ask` auto-scopes them via
|
|
24
24
|
`ref.cloudglue_file_id` / collection ids.
|
|
25
|
+
- A verb invoked with an explicit source/scope never reads stdin — only the
|
|
26
|
+
pipe form above (a source-less verb after `|`), `setup --stdin`, and a bare
|
|
27
|
+
`tinycloud` prompt do. When spawning tinycloud non-interactively (a subprocess
|
|
28
|
+
or a script), close or ignore its stdin (`</dev/null`, or Node
|
|
29
|
+
`stdio: ["ignore", …]`) and wrap the call in a timeout as a backstop.
|
|
25
30
|
|
|
26
31
|
## Multi-video batching
|
|
27
32
|
|
|
@@ -99,11 +99,19 @@ binary reports in `--version --json`.
|
|
|
99
99
|
| `TINYCLOUD_HOME` | Isolated state home — config, sessions, cache, jobs, artifacts, skills (default `~/.tinycloud`; same as `--home`). 0.3.3+ |
|
|
100
100
|
| `TINYCLOUD_OUT` | Output base for generated files (wins over a config `outputBase`) |
|
|
101
101
|
| `TINYCLOUD_HTTP_TIMEOUT_MS` | Hard deadline per Cloudglue request (default 120s; `0` disables) |
|
|
102
|
-
| `TINYCLOUD_UPLOAD_TIMEOUT_MS` |
|
|
102
|
+
| `TINYCLOUD_UPLOAD_TIMEOUT_MS` | Total deadline for upload-shaped requests (default 60min; `0` disables) |
|
|
103
|
+
| `TINYCLOUD_UPLOAD_IDLE_TIMEOUT_MS` | Idle (no-progress) deadline for an upload — aborts a wedged transfer in ~1min instead of waiting out the total upload deadline (default 60s; `0` disables) |
|
|
104
|
+
| `TINYCLOUD_HTTP_RETRIES` | Bounded auto-retries for idempotent (GET/HEAD) Cloudglue calls on transient errors — 408/429/5xx, network blips (default 3; `0` disables) |
|
|
105
|
+
| `TINYCLOUD_JOB_WAIT_TIMEOUT_MS` | Wall-clock budget for async job waits (the `waitForReady` poll behind `watch`/`extract`/`face`) (default 10min; `0` disables) |
|
|
103
106
|
|
|
104
107
|
Every Cloudglue request carries a hard deadline, so a stalled route can never
|
|
105
108
|
hang the CLI indefinitely; a timeout surfaces as a retryable `upstream` error
|
|
106
|
-
envelope whose message names the knob to adjust.
|
|
109
|
+
envelope whose message names the knob to adjust. Idempotent reads (GET/HEAD,
|
|
110
|
+
including the status polls behind async waits) auto-retry transient failures
|
|
111
|
+
(408/429/5xx, network blips, idle-timeout aborts) with backoff + jitter before
|
|
112
|
+
surfacing, and uploads abort early if no progress is seen within the idle
|
|
113
|
+
window. Non-idempotent mutations (upload/create/add/delete) are never
|
|
114
|
+
auto-retried — a retryable `upstream` there is yours to re-issue.
|
|
107
115
|
|
|
108
116
|
## Profiles & isolated homes (0.3.3+)
|
|
109
117
|
|
|
@@ -143,7 +143,9 @@ tinycloud face search <image> --in collection:col_… [col_…]
|
|
|
143
143
|
a normalized 0–1 bounding box (`{top,left,width,height}`) plus a timestamp.
|
|
144
144
|
`match` takes a query image — a local file (downscaled and sent inline, **never
|
|
145
145
|
uploaded**) or an http(s) URL — and returns the closest faces ranked by a 0–100
|
|
146
|
-
`similarity`.
|
|
146
|
+
`similarity`. The query image must be a **JPEG or PNG** (Cloudglue face matching
|
|
147
|
+
decodes only JPEG/PNG — webp/heic/gif/bmp are rejected at preflight; a URL must
|
|
148
|
+
likewise point at a JPEG/PNG). Both upload the *video* first like `watch`/`extract`
|
|
147
149
|
(`needs_upload` without `--no-upload`) and cache by source + options, so re-runs
|
|
148
150
|
are free. `--fps`/`--start`/`--end` tune sampling and window;
|
|
149
151
|
`--max-faces`/`--min-similarity` bound `match`, `--limit` bounds `detect`,
|
|
@@ -346,6 +348,27 @@ private share — directly or through a container — on a public site. The full
|
|
|
346
348
|
reference ships with the binary as `references/cg-video.md` inside the
|
|
347
349
|
bundled media-artifact skill (under the install's `skills/` directory).
|
|
348
350
|
|
|
351
|
+
Discovery components (live API, 0.3.6+): the same `/__cg/embed.js` script also
|
|
352
|
+
defines four **collection-scoped** components that let a viewer search or chat
|
|
353
|
+
*inside* a published site and play the referenced moment inline via `<cg-video>`
|
|
354
|
+
— `<cg-chat>` (conversational Q&A, streaming answers + inline moment citations;
|
|
355
|
+
optional `placeholder`), `<cg-search>` (keyword/transcript text search),
|
|
356
|
+
`<cg-deep-search>` (agentic semantic search), and `<cg-face-search>` (upload or
|
|
357
|
+
paste a face image → matching moments). Each takes `collection="<id>"` (plus
|
|
358
|
+
optional `accent-color` and `--cg-height` CSS sizing); the collection's `--type`
|
|
359
|
+
must match the element — `<cg-chat>`/`<cg-search>`/`<cg-deep-search>` need a
|
|
360
|
+
`media-descriptions` or `rich-transcripts` collection, `<cg-face-search>` needs a
|
|
361
|
+
`face-analysis` collection. Unlike the playback elements they carry **no share
|
|
362
|
+
id**, but their live calls are refused on a public site, so `tinycloud publish`
|
|
363
|
+
**hard-rejects** a page that embeds any of them on a public site — publish with
|
|
364
|
+
`--visibility private`. End to end: build a collection of the right type
|
|
365
|
+
(`library collections create … --type …` → `library collections add` → poll
|
|
366
|
+
`library collections show` until each file is `completed`) → author HTML with
|
|
367
|
+
the component → `tinycloud publish <html> --visibility private`. Full reference
|
|
368
|
+
plus a kitchen-sink page wiring every component (props, JS API, events) ships
|
|
369
|
+
with the binary as `references/cg-video.md` and `references/kitchen-sink.html`
|
|
370
|
+
inside the bundled media-artifact skill.
|
|
371
|
+
|
|
349
372
|
### setup — credentials
|
|
350
373
|
|
|
351
374
|
```bash
|