Prepare for tinycloud 0.3.22: bulk MEDIA imports, --enrich-metadata, Dropbox --recursive (skill floor → 0.3.22) - #31
Conversation
…Dropbox --recursive (skill floor → 0.3.22) tinycloud 0.3.22 (SDK 0.7.28, spec v0.7.21) turns bulk imports from a metadata-collection loader into a general one (features 46→49; verbs stay 17): - An import's `import_type` follows the TARGET COLLECTION's type, inferred at create and fixed for its life. A `metadata` collection still imports source_metadata only (free); any other type (media-descriptions, entities, rich-transcripts, face-analysis) now imports the MEDIA itself, processed like `collections add` — BILLED PER FILE and counted against the account's file usage limits, capped at 10000 files/run whatever --max-files says, resumable with an `append` rerun after a credit/limit stop (feature library.collections.imports.media.v1). Summaries name the kind and a media create/run carries an explicit billing warning, so the skill teaches agents to ask the user first and cap with --max-files. - --enrich-metadata / --no-enrich-metadata (feature library.collections.imports.enrich.v1) backfills fields the connector listing omits — Gong parties + Call Spotlight (re-embedded, so the content becomes searchable) and Dropbox media_info duration/dimensions. Metadata-import only; it and --thumbnails are a 400 on a media import. - --recursive (feature library.connectors.recursive.v1) on `connectors files`, and a `recursive` filter-set key on `imports create`, walk a whole Dropbox subtree under --path instead of its direct children. On the wire it is the STRING "true"/"false". Because the skill teaches the media-import cost model and the new flags, the floor rises to 0.3.22: tinycloud-skill.json min_version/supported_range/skill_version → 0.3.22 and required_features +library.collections.imports.media.v1 +library.collections.imports.enrich.v1 (connector-capability ids stay out of the list, as with iconik/refresh), with preflight.sh kept byte-identical. SKILL.md and reference/verbs.md gain the import_type cost table, the metadata-only-flag rule, and --recursive. Plugin/marketplace metadata moves to 0.3.22 (it had lagged at 0.3.19 since the 0.3.20 and 0.3.21 releases skipped the bump). Merge gate unchanged: the live CDN still serves 0.3.21, so this PR merges only once `channels.stable` = 0.3.22 — preflight against the current CDN binary correctly exits 11 (below floor) until then. Verified: npm test 42/42, and 42/42 again against a real 0.3.22 tarball via TINYCLOUD_TEST_TARBALL; shellcheck clean; all three CI plugin/skill metadata checks pass locally; smoke-test.sh green against the 0.3.22 binary (EXPECTED_VERSION=0.3.22); preflight exits 13 on 0.3.22 (compatible, no creds) and 11 on 0.3.21.
PR SummaryLow Risk Overview Skill docs ( Also documents Reviewed by Cursor Bugbot for commit adca09f. Bugbot is set up for automated code reviews on this repo. Configure here. |
tinycloud 0.3.22 (Cloudglue SDK 0.7.28, spec v0.7.21) turns bulk imports from a metadata-collection loader into a general one. Features 46→49; verbs stay 17.
What the skill now teaches
import_typedecides the cost. An import's kind follows the target collection's type, inferred at create and fixed for its life. Ametadatacollection still importssource_metadataonly (free). Any other type (media-descriptions,entities,rich-transcripts,face-analysis) now imports the media itself, processed likecollections add— billed per file, counted against the account's file usage limits, capped at 10000 files/run, resumable with anappendrerun after a credit stop. Featurelibrary.collections.imports.media.v1.The skill gets this as a cost table plus an explicit instruction to ask the user before starting a media import and to cap it with
--max-files— the summary anddata.import.import_typeare how an agent tells which kind it just created.--enrich-metadata/--no-enrich-metadata(featurelibrary.collections.imports.enrich.v1) — backfills fields the connector listing omits: Gong parties + Call Spotlight (re-embedded, so the content becomes searchable) and Dropboxmedia_infoduration/dimensions. Metadata-import only; it and--thumbnailsare a clean upstream 400 on a media import.--recursive(featurelibrary.connectors.recursive.v1) onconnectors filesand as arecursivefilter-set key onimports create— walks a whole Dropbox subtree under--pathinstead of its direct children, so a tree is one recursive pass rather than one pass per folder. On the wire it's the string"true"/"false".Floor raise
tinycloud-skill.jsonmin_version/supported_range/skill_version→ 0.3.22,required_features+library.collections.imports.media.v1+library.collections.imports.enrich.v1, withpreflight.shMIN_VERSIONandREQUIRED_FEATURESkept byte-identical (CI diffs them).library.connectors.recursive.v1is deliberately not inrequired_features— connector-capability ids are excluded there by convention, the same waylibrary.connectors.iconik.v1and.refresh.v1were handled at the 0.3.15 floor raise.Also in here
.claude-plugin/plugin.jsonandmarketplace.json→ 0.3.22. These had drifted: both were still on 0.3.19 because the 0.3.20 and 0.3.21 releases skipped the bump, and no CI job checks them. Worth deciding whether to add a check — happy to do it in a follow-up rather than widen this PR.Verification
npm testTINYCLOUD_TEST_TARBALL=… npm test(real 0.3.22 tarball)shellcheck install.sh scripts/smoke-test.sh …/preflight.shEXPECTED_VERSION=0.3.22 bash scripts/smoke-test.sh>=0.3.22 <0.4.0) · frontmatterpreflight.shvs the 0.3.22 binaryThe binary-side behavior these docs describe was verified live against an account with 9 active connectors: a media import ingested a real Dropbox file (
files_imported: 1), and--enrich-metadatabackfilledmedia_infoon 5 records that the raw connector listing returns asnull.