From 5a901e20345538b490a3faf03b8fa44a56707393 Mon Sep 17 00:00:00 2001 From: KDR Date: Thu, 16 Jul 2026 12:23:08 -0700 Subject: [PATCH] Prepare for tinycloud 0.3.11: connector source metadata + connectors inspect Version parity (package.json, plugin.json, marketplace.json, skill_version, README pin, CLAUDE.md examples + CDN prose) for the 0.3.11 binary, plus doc updates for the Cloudglue SDK 0.7.19 / spec v0.7.9 connector changes: - verbs.md: real per-connector filter matrix (--from/--to on every provider except S3/GCS, Zoom+Gong 6-month lookback, --title-search on five providers), source_metadata populated by all six metadata-bearing providers on sync, filtered-pagination guidance (page until next_page_token is null) - all server-side, valid for 0.3.10 too - verbs.md: `connectors inspect [] ` (0.3.11+, feature library.connectors.inspect.v1) - provider-metadata peek without creating a file, with a `connectors sync` fallback for older binaries; per-file provider `metadata` on `connectors files` rows (0.3.11+) - glossary.md: connector list corrected (Loom was never a connector; added Gong and Recall) Skill floor stays 0.3.7; required_features unchanged (additive pattern - inspect is convenience, not a core video op). --- .claude-plugin/marketplace.json | 4 ++-- .claude-plugin/plugin.json | 2 +- CLAUDE.md | 24 +++++++++++++++--------- README.md | 4 ++-- package.json | 2 +- skills/tinycloud/reference/glossary.md | 9 +++++---- skills/tinycloud/reference/verbs.md | 24 ++++++++++++++++++++---- skills/tinycloud/tinycloud-skill.json | 2 +- 8 files changed, 47 insertions(+), 24 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 1b9486e..fa751c4 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -7,14 +7,14 @@ }, "metadata": { "description": "Deep video and image work for coding agents: analyze, describe, search, caption, clip, detect faces, and publish via the tinycloud CLI.", - "version": "0.3.10" + "version": "0.3.11" }, "plugins": [ { "name": "tinycloud", "source": "./", "description": "Video and image understanding and editing via the tinycloud CLI (Cloudglue): watch/see/extract/search/ask/face over videos and images, captions, clips, collections, plus one-command workflows for sales coaching, blog posts, ad analysis, meeting breakdowns, and YouTube publishing.", - "version": "0.3.10", + "version": "0.3.11", "author": { "name": "Cloudglue" }, "homepage": "https://tinycloud.sh", "repository": "https://github.com/cloudglue/tinycloud", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 2e0ce4e..c7dcb4f 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "name": "tinycloud", "displayName": "Tinycloud Video", "description": "Video and image understanding and editing via the tinycloud CLI (Cloudglue): watch/see/extract/search/ask/face over videos and images, captions, clips, collections, and one-command video workflows.", - "version": "0.3.10", + "version": "0.3.11", "author": { "name": "Cloudglue", "url": "https://cloudglue.dev" }, "homepage": "https://tinycloud.sh", "repository": "https://github.com/cloudglue/tinycloud", diff --git a/CLAUDE.md b/CLAUDE.md index a7b4d52..5d707b1 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -28,16 +28,16 @@ node --test test/unit.test.mjs # just the unit suite TINYCLOUD_TEST_TARBALL=~/Downloads/tinycloud-darwin-arm64.tar.gz npm test # e2e against a real dist tarball # Contract smoke tests against an installed/extracted binary -TINYCLOUD_CMD=/path/to/tinycloud EXPECTED_VERSION=0.3.10 bash scripts/smoke-test.sh +TINYCLOUD_CMD=/path/to/tinycloud EXPECTED_VERSION=0.3.11 bash scripts/smoke-test.sh # Serve a tarball as a fake CDN (modes: --corrupt, --no-manifest) -node test/fixtures/make-fixture-cdn.mjs --tarball .tar.gz --version 0.3.10 --port 8787 +node test/fixtures/make-fixture-cdn.mjs --tarball .tar.gz --version 0.3.11 --port 8787 TINYCLOUD_DIST_URL=http://127.0.0.1:8787 TINYCLOUD_INSTALL_DIR=$(mktemp -d) node bin/tinycloud.js --version --json TINYCLOUD_DIST_URL=http://127.0.0.1:8787 bash install.sh --install-dir $(mktemp -d)/bin # Release manifest tooling (maintainer) -node scripts/generate-manifest.mjs --version 0.3.10 --from-cdn # build manifest + .sha256 sidecars -node scripts/generate-manifest.mjs --check --version 0.3.10 # verify live CDN matches manifest +node scripts/generate-manifest.mjs --version 0.3.11 --from-cdn # build manifest + .sha256 sidecars +node scripts/generate-manifest.mjs --check --version 0.3.11 # verify live CDN matches manifest # Plugin metadata validation claude plugin validate . @@ -103,7 +103,7 @@ stdout (logs on stderr) with `status`: → exit codes 0/0/2/3/3/0/1. `tinycloud commands --json` is the authoritative flag list — verify doc claims against it, not memory (a doc bug shipped once because `--cached` only exists on watch/see/extract/caption/face/workflow). As -of 0.3.10 there are 16 verbs: `see` +of 0.3.11 there are 16 verbs: `see` (0.3.7+) analyzes an **image** (file-level, JPEG/PNG/WebP — the image counterpart of `watch`) and `extract` also takes an image source (features `see.v1`, `extract.images.v1`); 0.3.8 adds @@ -117,7 +117,13 @@ touches stdout/envelopes/logs). Unlike the host-level `profile` verb, `login` IS a normal command **present in `commands --json`** (cost class `network`, `requires_auth: false`) — it is excluded only from the LLM agent's tool set (it blocks on a ~10-min interactive flow). Paste-key + `$CLOUDGLUE_API_KEY` -remain fully supported. The +remain fully supported. 0.3.11 bumps the bundled Cloudglue SDK to 0.7.19 +(connector source metadata for all six metadata-bearing providers — Grain, +Zoom, Recall, Google Drive, Dropbox, Gong) and adds `library connectors +inspect ` (feature `library.connectors.inspect.v1`) — a provider-metadata +peek that never creates a file — plus per-file provider `metadata` on +`connectors files` rows; verbs stay 16 (inspect is a `library` subcommand, +not a verb), features 31→32. The host-level `profile` verb and the leading global flags `--home`/`--profile` (also `$TINYCLOUD_HOME`; 0.3.3+) relocate state and are intentionally absent from `commands --json` — like the launcher's install/update, they're CLI/host @@ -170,9 +176,9 @@ of printing JSON. Any script invoking the binary must redirect `/`), verifies its checksum, and execs the real binary. The package version pins the binary version, so -`npx @cloudglue/tinycloud@0.3.10` always runs tinycloud 0.3.10. It also adds two +`npx @cloudglue/tinycloud@0.3.11` always runs tinycloud 0.3.11. It also adds two wrapper commands: ```bash -tinycloud install --version 0.3.10 # pre-download a version +tinycloud install --version 0.3.11 # pre-download a version tinycloud install --latest # install latest stable and pin to it tinycloud update # move to latest stable, prune old versions ``` diff --git a/package.json b/package.json index ea38884..c68bdf5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cloudglue/tinycloud", - "version": "0.3.10", + "version": "0.3.11", "description": "Agent CLI for deep video and image work, by Cloudglue. Downloads the tinycloud binary on first run.", "bin": { "tinycloud": "bin/tinycloud.js" diff --git a/skills/tinycloud/reference/glossary.md b/skills/tinycloud/reference/glossary.md index 1c6f9a1..452580d 100644 --- a/skills/tinycloud/reference/glossary.md +++ b/skills/tinycloud/reference/glossary.md @@ -39,10 +39,11 @@ connector?" or an envelope field needs explaining. `library collections show ` until every `files[].status` is `completed` before querying. - **Data connector** — a linked external source of recordings (Zoom, Grain, - Google Drive, Dropbox, Loom, S3/GCS). `tinycloud library connectors …` - lists, browses (`files`, with provider-specific filters), and syncs - individual items by URI (e.g. `grain://recording/`) so they become - Cloudglue files. + Gong, Recall, Google Drive, Dropbox, S3/GCS). `tinycloud library connectors …` + lists, browses (`files`, with provider-specific filters; rows carry provider + metadata on 0.3.11+), peeks one item's provider metadata without syncing + (`inspect`, 0.3.11+), and syncs individual items by URI + (e.g. `grain://recording/`) so they become Cloudglue files. - **Source** — anything a verb accepts as input: a local path, URL, `cloudglue://files/` URI, connector URI, collection, or a bare file-id UUID (normalized to `cloudglue://files/`; an existing local path of the diff --git a/skills/tinycloud/reference/verbs.md b/skills/tinycloud/reference/verbs.md index cc4bedf..433d678 100644 --- a/skills/tinycloud/reference/verbs.md +++ b/skills/tinycloud/reference/verbs.md @@ -206,6 +206,7 @@ tinycloud library collections delete --json tinycloud library collections entities [--limit ] [--offset ] --json # read a video's entities tinycloud library connectors list --json tinycloud library connectors files [--limit 25] [--page-token ] --json +tinycloud library connectors inspect [] --json # metadata peek, no file created (0.3.11+) tinycloud library connectors sync [] --json ``` @@ -250,17 +251,32 @@ Dropbox file share links sync server-side via the connector's OAuth (including login-gated links); `zoom.us/rec/share` links resolve best-effort (Zoom mints a new token per copy — the recording-detail link is the reliable form). Link warnings are advisory and surface in `data.warnings` rather than -blocking the sync. Non-connector public URLs (direct media URLs, TikTok, +blocking the sync. Synced files carry provider `source_metadata` (title, +participants, summary) for Grain, Zoom, Recall, Google Drive, Dropbox, and +Gong. Non-connector public URLs (direct media URLs, TikTok, Loom, public Dropbox links without a connector) sync into a standalone Cloudglue file via direct URL ingestion — same command, no connector needed. YouTube URLs cannot sync; use `tinycloud grab` instead. `connectors files` also takes provider-specific filters: `--from`/`--to` -(Zoom, Grain dates), `--folder-id` (Google Drive), `--path` (Dropbox), -`--bucket`/`--prefix` (S3/GCS), `--title-search`/`--team`/`--meeting-type` -(Grain). Collection IDs (`col_…`) are stable; collection names are +(dates — every provider except S3/GCS; Zoom and Gong default to the last +6 months), `--folder-id` (Google Drive), `--path` (Dropbox), +`--bucket`/`--prefix` (S3/GCS — bucket required), `--title-search` (Grain, +Zoom, Google Drive, Dropbox, Gong), `--team`/`--meeting-type` (Grain). +Filters a provider can't honor are ignored, and filtered pages can come back +short or even empty while more remain — keep paging until `next_page_token` +is null. On 0.3.11+ each row also carries provider `metadata` (participants, +host, duration, AI summary) when the source exposes it — use it to pick files +before syncing. Collection IDs (`col_…`) are stable; collection names are display-only. +`connectors inspect ` (0.3.11+, feature `library.connectors.inspect.v1`) +returns one item's provider `source_metadata` WITHOUT materializing a file — +same URI/share-link forms as sync, connector id optional. S3/GCS objects have +nothing richer to inspect. On older binaries it fails with an unknown-command +error — fall back to `connectors sync` (idempotent) and read +`source_metadata` from the sync envelope instead. + ### jobs — async work ```bash diff --git a/skills/tinycloud/tinycloud-skill.json b/skills/tinycloud/tinycloud-skill.json index 8b3e21f..52d09b8 100644 --- a/skills/tinycloud/tinycloud-skill.json +++ b/skills/tinycloud/tinycloud-skill.json @@ -1,5 +1,5 @@ { - "skill_version": "0.3.10", + "skill_version": "0.3.11", "tinycloud": { "min_version": "0.3.7", "supported_range": ">=0.3.7 <0.4.0",