Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.18"
"version": "0.3.19"
},
"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.18",
"version": "0.3.19",
"author": { "name": "Cloudglue" },
"homepage": "https://tinycloud.sh",
"repository": "https://github.com/cloudglue/tinycloud",
Expand Down
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -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.18",
"version": "0.3.19",
"author": { "name": "Cloudglue", "url": "https://cloudglue.dev" },
"homepage": "https://tinycloud.sh",
"repository": "https://github.com/cloudglue/tinycloud",
Expand Down
34 changes: 30 additions & 4 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,33 @@ also rejects `<cg-query>`, `<cg-transcript>`, and `<cg-chapters auto>` (the
private-only; explicit-children `<cg-chapters>` stays public-safe). Because
the skill teaches the new elements and relies on that extended guard, the
floor was raised to 0.3.18 (same merge-after-CDN gate — the dist PR merges
only after CDN `channels.stable` = 0.3.18). The host-level `profile` verb and the leading global flags `--home`/`--profile`
only after CDN `channels.stable` = 0.3.18). 0.3.19 is a **host-agent
reliability release — the silent-stop fix** (no new verbs, flags, or feature
ids — verbs stay 17, features stay 42; the changes live in the interactive
agent and headless `-p`, not the video-verb surface the skill drives, so the
skill floor stays 0.3.18 — the 0.3.13 no-raise pattern): adaptive-thinking
chat models stream a thinking block that spends from the same per-response
`max_tokens` budget as text and tool calls, so a long think could exhaust the
old 8192-token cap, return `stop_reason: max_tokens` with no error, and the
agent silently yielded mid-task with only a duration line (typing `continue`
resumed it). Now a `length`-stopped turn — and an empty `stop`-ended one,
e.g. a dropped stream read as a clean end — surfaces a status line instead of
a quiet handoff; the cap rises to 32000, tunable via
`TINYCLOUD_MODEL_MAX_TOKENS`; a guard blocks the final tool call of a
`length`-stopped message with an error result (truncated tool-call JSON gets
repaired into valid-but-incomplete args, e.g. a write with half a file) so
the model re-issues it in smaller pieces, wired in both the interactive
agent and headless `-p`; a truncated turn auto-continues via a hidden
prompt, bounded to 2 consecutive per user turn, disabled with
`TINYCLOUD_AUTO_CONTINUE=0` or `preferences.autoContinue: false`; streamed
thinking shows a "Reasoning" loader label; and headless `-p --json` traces
gain an additive `stop_reason` field plus a stderr warning on truncation.
Headless `-p` also reaches parity with the interactive agent on model
failures: it gains the 0.3.7 chat-retry layer (`TINYCLOUD_MODEL_RETRIES` now
covers both agents), and an errored turn is truthful — `✖ turn failed` on
stderr, an `error` field in the `--json` trace, exit 1 (previously a
backend blip could exit 0 with an empty, zero-usage trace).
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
concerns, not video operations.
Expand Down Expand Up @@ -313,9 +339,9 @@ of printing JSON. Any script invoking the binary must redirect `</dev/null`
metadata sync) vs live-CDN jobs (`Install + smoke` matrix, npx-against-CDN)
which run only on push to main or manual dispatch — never on PRs, because a
CDN gap would fail every PR.
- The live CDN serves 0.3.18 (latest aliases + v-prefixed pinned tarballs
for 0.3.0 through 0.3.18, with `manifest.json` + `.sha256`
sidecars; `channels.stable` = 0.3.18); all smoke legs are required.
- The live CDN serves 0.3.19 (latest aliases + v-prefixed pinned tarballs
for 0.3.0 through 0.3.19, with `manifest.json` + `.sha256`
sidecars; `channels.stable` = 0.3.19); all smoke legs are required.
- `publish-npm.yml` (tag `v*`): asserts tag == package.json version → gates
on `generate-manifest.mjs --check` against the live CDN → publishes via
npm trusted publishing (OIDC, `id-token: write`, npm ≥ 11.5.1 — no token
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,11 @@ The npm package is a small launcher: on first run it downloads the matching
platform distribution from Cloudglue's CDN (cached under
`~/.tinycloud/versions/<version>/`), verifies its checksum, and execs the real
binary. The package version pins the binary version, so
`npx @cloudglue/tinycloud@0.3.18` always runs tinycloud 0.3.18. It also adds two
`npx @cloudglue/tinycloud@0.3.19` always runs tinycloud 0.3.19. It also adds two
wrapper commands:

```bash
tinycloud install --version 0.3.18 # pre-download a version
tinycloud install --version 0.3.19 # pre-download a version
tinycloud install --latest # install latest stable and pin to it
tinycloud update # move to latest stable, prune old versions
```
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cloudglue/tinycloud",
"version": "0.3.18",
"version": "0.3.19",
"description": "Agent CLI for deep video and image work, by Cloudglue. Downloads the tinycloud binary on first run.",
"bin": {
"tinycloud": "bin/tinycloud.js"
Expand Down
4 changes: 3 additions & 1 deletion skills/tinycloud/reference/setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,9 @@ binary reports in `--version --json`.
| `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) |
| `TINYCLOUD_HTTP_RETRIES` | Bounded auto-retries for idempotent (GET/HEAD) Cloudglue calls on transient errors — 408/429/5xx, network blips (default 5; `0` disables) |
| `TINYCLOUD_JOB_WAIT_TIMEOUT_MS` | Wall-clock budget for async job waits (the `waitForReady` poll behind `watch`/`extract`/`face`) (default 10min; `0` disables) |
| `TINYCLOUD_MODEL_RETRIES` | Client-side retries for the interactive agent's chat-model turns on transient connection errors (default 5; `0` disables). 0.3.7+ |
| `TINYCLOUD_MODEL_RETRIES` | Client-side retries for agent chat-model turns on transient connection errors (default 5; `0` disables). 0.3.7+ interactive; 0.3.19+ also headless `-p` |
| `TINYCLOUD_MODEL_MAX_TOKENS` | Per-response output-token cap for agent chat-model turns (interactive and headless `-p`) — thinking, text, and tool calls share it (default 32000). 0.3.19+ |
| `TINYCLOUD_AUTO_CONTINUE` | `0` stops the interactive agent auto-resuming after an output-token-truncated turn (default on, bounded to 2 consecutive; also `preferences.autoContinue: false` in config). 0.3.19+ |

Every Cloudglue request carries a hard deadline, so a stalled route can never
hang the CLI indefinitely; a timeout surfaces as a retryable `upstream` error
Expand Down
2 changes: 1 addition & 1 deletion skills/tinycloud/tinycloud-skill.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"skill_version": "0.3.18",
"skill_version": "0.3.19",
"tinycloud": {
"min_version": "0.3.18",
"supported_range": ">=0.3.18 <0.4.0",
Expand Down
Loading