Skip to content

Commit 3fabe73

Browse files
cursoragentgersham
andcommitted
Bundle CLI disconnect-only credential contract.
screenrig/cli main dropped auth revoke aliases. Point the packaged-CLI lifecycle gate at agent disconnect and /api/v1/agents/self/disconnect, and pack current CLI main so verify matches. Co-authored-by: Gersham Meharg <gersham@users.noreply.github.com>
1 parent 362a30d commit 3fabe73

10 files changed

Lines changed: 42 additions & 62 deletions

File tree

‎components.lock.json‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
"state": "resolved",
44
"cli": {
55
"repository": "screenrig/cli",
6-
"commit": "46676b18f70dc327e4002e8d073ec5adbb600f1b",
6+
"commit": "77b2abc28aaeaa765b4b7eb5b18b7abd187904bc",
77
"artifact": {
88
"file": "screenrig-cli.tgz",
9-
"sha256": "3e43bb5bb0e5109acd0637678b373d896792143e820336780987e6e3ec7e4947"
9+
"sha256": "53863e310fb53158cba639945690e033f42a3eafb38ced314d000b98d89a47d8"
1010
}
1111
}
1212
}

‎plugins/screenrig/cli/assets/playlist-write.schema.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=d2c37ece4a0742e1e052ecf50380dbee728e5211b73b3ec7701dc65c1bbbd6d5. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
2+
"$comment": "Generated by screenrig-protocol-gen from api/openapi.yaml; sha256=ce27b4fed831ef3e97ad216d61383e8598d0a33d3f8666cfc065942b588cb05e. Shape validation only; run canonical playlist-write-semantics.ts next. Reference resolution and DNS remain server checks.",
33
"$defs": {
44
"CanvasBackground": {
55
"description": "Solid canonical uppercase #RRGGBBAA, or a top-to-bottom linear gradient.",

‎plugins/screenrig/cli/assets/screenrig.runtime.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@
286286
this.allowOpaqueNativeParent = allowOpaqueNativeParent;
287287
this.unsubscribe = this.host.addMessageListener((event) => this.onMessage(event));
288288
}
289+
nativeParentOrigin;
289290
readyState = "inert";
290291
context = null;
291292
capabilities = { ...EMPTY_CAPABILITIES };
@@ -661,6 +662,7 @@
661662
this.windowLike = windowLike;
662663
this.parent = windowLike.parent;
663664
}
665+
windowLike;
664666
parent;
665667
addMessageListener(listener) {
666668
const wrapped = (event) => listener(event);

‎plugins/screenrig/cli/dist/commands.d.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { CliRuntime } from "./runtime.js";
66
import { type TranscodeOptions } from "./media/transcode.js";
77
import { CLI_VERSION } from "./version.js";
88
export { CLI_VERSION };
9-
export declare const USAGE = "screenrig \u2014 ScreenRig localhost v1 control-plane CLI\n\nUsage:\n screenrig [--json] [--api-url URL] [--config PATH]\n [--request-id ID] [--idempotency-key KEY] [--timeout MS]\n [--beta-key KEY]\n <command> [args]\n\nConfiguration (user config JSON, not flags):\n log_socket optional path to an already-listening Unix socket. The CLI\n connects as a client and writes one NDJSON operation-log\n object per line. Absent or empty keeps current behavior.\n Connect or back-pressure drops lines and warns\n log_sink_degraded; it does not fail the command.\n This is a config field only, not a command-line switch.\n\nCommands:\n account show\n agent enroll --email ADDRESS [--name NAME] [--open-dashboard]\n agent connect [--name NAME] [--print-url] [--timeout MS]\n agent status\n agent disconnect --yes [--allow-lockout]\n auth status (deprecated alias for agent status)\n auth revoke --yes [--allow-lockout] (deprecated alias for agent disconnect)\n dashboard [--print-url]\n app pack <directory> [--output FILE]\n app upload <directory> [--name NAME] [--no-wait] [--poll-ms MS]\n app update <id> <directory> --if-match REVISION [--no-wait] [--poll-ms MS]\n app list\n app show <id>\n media generate --prompt TEXT [--aspect-ratio RATIO] [--quality low|medium|high] [--tag TAG]\n media upload <file> [--content-type TYPE] [--tag TAG] [--no-wait] [--poll-ms MS]\n [--no-transcode] [--codec h264|hevc] [--max-fps N]\n [--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]\n [--preset signage-1080p30|signage-4k30] [--no-audio]\n media upload-batch <manifest.json> --state FILE [--concurrency N]\n [--no-transcode] [--tag TAG] [--no-progress]\n media show <id>\n media download <id> [--output FILE]\n media list [--tag TAG] [--primitive image|video]\n media update <id> (--tag TAG | --clear-tag) --if-match REVISION\n media delete <id> --if-match REVISION\n compose catalog\n (local regions, enter/motion, fonts, examples; no network)\n compose batch <file> --output DIRECTORY [--only ID] [--target-width PX --target-height PX] [--safe-area]\n [--lint-only]\n (contact sheet; 1 to 2000 pages)\n playlist validate <file> [--lint-only]\n compose render <file> [--output DIRECTORY] [--combined] [--target-width PX --target-height PX] [--safe-area]\n [--open] [--lint-only]\n playlist preview <file|id> --output DIR [--frame-ms MS] [--contact-sheet] [--lint-only]\n playlist templates\n playlist create <file>\n playlist update <id> <file> --if-match REVISION\n playlist export <id> --output DIRECTORY\n playlist import <directory> [--name NAME] [--update ID --if-match REVISION]\n playlist show <id>\n playlist list\n playlist delete <id> --if-match REVISION\n screen pair CODE [--label LABEL]\n screen provision (--open | --print-url) [--label LABEL]\n browser setup --code CODE [--open]\n screen update <id> [--name NAME] [--playlist-id ID] [--timezone ZONE]\n --if-match REVISION\n screen list [--state archived]\n screen show <id>\n screen assign <id> --playlist-id ID --if-match REVISION\n screen set-timezone <id> --timezone ZONE --if-match REVISION\n screen archive <id> --if-match REVISION\n screen unarchive <id> --if-match REVISION\n screen delete <id> --if-match REVISION\n screen rotate-public-id <id> --if-match REVISION\n screen toast <id> --text TEXT [--level info] [--duration-ms MS]\n screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]\n kv get --application-id ID <key>\n kv set --application-id ID <key> --json-value JSON [--if-match REVISION]\n kv set --application-id ID <key> --file FILE --content-type TYPE [--if-match REVISION]\n kv set --application-id ID <key> --value-base64 BASE64 --content-type TYPE [--if-match REVISION]\n kv delete --application-id ID <key> --if-match REVISION\n kv list --application-id ID\n comment show screen <id>\n comment show playlist <id> [--page PAGE_ID]\n comment set screen <id> (--json-value JSON | --file FILE)\n comment set playlist <id> [--page PAGE_ID] (--json-value JSON | --file FILE)\n comment delete screen <id>\n comment delete playlist <id> [--page PAGE_ID]\n operations get <id>\n operations wait <id> [--timeout MS] [--poll-ms MS]\n operations cancel <id>\n events list [--after CURSOR] [--limit N]\n events follow [--after CURSOR] [--timeout MS]\n playback list [--screen-id ID] [--media-id ID] [--day YYYY-MM-DD]\n feedback bug <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback feature <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback list [--kind bug|feature]\n doctor [--repair-config]\n version\n\nCredits:\n Remaining is a nonnegative whole number (never negative; empty remaining\n displays 0). Below 1000 credits, authenticated responses may warn\n credits_low. Until 1 Jan 2027 08:00 UTC (midnight PT), production fails open:\n billed commands are not rejected for empty remaining and do not return\n HTTP 402. After that instant, remaining below 1 credit is payment_required.\n Empty remaining does not stop or shut off screens in this window.\n media generate is the exception: it is billed per token.\n Text input is $10 / 1M tokens, image input is $16 / 1M, image output is\n $60 / 1M. Quality changes how detailed the still is and therefore how\n many tokens it uses. Remaining that cannot cover the debit returns\n payment_required / 402, including during this window.\n\nLook at the contact sheet before publishing. Fix what the lint names, then look again.\n";
9+
export declare const USAGE = "screenrig \u2014 ScreenRig localhost v1 control-plane CLI\n\nUsage:\n screenrig [--json] [--api-url URL] [--config PATH]\n [--request-id ID] [--idempotency-key KEY] [--timeout MS]\n [--beta-key KEY]\n <command> [args]\n\nConfiguration (user config JSON, not flags):\n log_socket optional path to an already-listening Unix socket. The CLI\n connects as a client and writes one NDJSON operation-log\n object per line. Absent or empty keeps current behavior.\n Connect or back-pressure drops lines and warns\n log_sink_degraded; it does not fail the command.\n This is a config field only, not a command-line switch.\n\nCommands:\n account show\n agent enroll --email ADDRESS [--name NAME] [--open-dashboard]\n agent connect [--name NAME] [--print-url] [--timeout MS]\n Approval expires after 24 hours; --timeout defaults to 86400000 ms.\n Retry agent connect to resume after an interrupted wait.\n agent status\n agent disconnect --yes [--allow-lockout]\n dashboard [--print-url]\n app pack <directory> [--output FILE]\n app upload <directory> [--name NAME] [--no-wait] [--poll-ms MS]\n app update <id> <directory> --if-match REVISION [--no-wait] [--poll-ms MS]\n app list\n app show <id>\n media generate --prompt TEXT [--aspect-ratio RATIO] [--quality low|medium|high] [--tag TAG]\n media upload <file> [--content-type TYPE] [--tag TAG] [--no-wait] [--poll-ms MS]\n [--no-transcode] [--codec h264|hevc] [--max-fps N]\n [--max-edge PIXELS] [--webp-quality 1-100] [--no-progress]\n [--preset signage-1080p30|signage-4k30] [--no-audio]\n media upload-batch <manifest.json> --state FILE [--concurrency N]\n [--no-transcode] [--tag TAG] [--no-progress]\n media show <id>\n media download <id> [--output FILE]\n media list [--tag TAG] [--primitive image|video]\n media update <id> (--tag TAG | --clear-tag) --if-match REVISION\n media delete <id> --if-match REVISION\n compose catalog\n (local regions, enter/motion, fonts, examples; no network)\n compose batch <file> --output DIRECTORY [--only ID] [--target-width PX --target-height PX] [--safe-area]\n [--lint-only]\n (contact sheet; 1 to 2000 pages)\n playlist validate <file> [--lint-only]\n compose render <file> [--output DIRECTORY] [--combined] [--target-width PX --target-height PX] [--safe-area]\n [--open] [--lint-only]\n playlist preview <file|id> --output DIR [--frame-ms MS] [--contact-sheet] [--lint-only]\n playlist templates\n playlist create <file>\n playlist update <id> <file> --if-match REVISION\n playlist export <id> --output DIRECTORY\n playlist import <directory> [--name NAME] [--update ID --if-match REVISION]\n playlist show <id>\n playlist list\n playlist delete <id> --if-match REVISION\n screen pair CODE [--label LABEL]\n screen provision (--open | --print-url) [--label LABEL]\n browser setup --code CODE [--open]\n screen update <id> [--name NAME] [--playlist-id ID] [--timezone ZONE]\n --if-match REVISION\n screen list [--state archived]\n screen show <id>\n screen assign <id> --playlist-id ID --if-match REVISION\n screen set-timezone <id> --timezone ZONE --if-match REVISION\n screen archive <id> --if-match REVISION\n screen unarchive <id> --if-match REVISION\n screen delete <id> --if-match REVISION\n screen rotate-public-id <id> --if-match REVISION\n screen toast <id> --text TEXT [--level info] [--duration-ms MS]\n screen screenshot <id> [--output FILE] [--timeout MS] [--poll-ms MS]\n kv get --application-id ID <key>\n kv set --application-id ID <key> --json-value JSON [--if-match REVISION]\n kv set --application-id ID <key> --file FILE --content-type TYPE [--if-match REVISION]\n kv set --application-id ID <key> --value-base64 BASE64 --content-type TYPE [--if-match REVISION]\n kv delete --application-id ID <key> --if-match REVISION\n kv list --application-id ID\n comment show screen <id>\n comment show playlist <id> [--page PAGE_ID]\n comment set screen <id> (--json-value JSON | --file FILE)\n comment set playlist <id> [--page PAGE_ID] (--json-value JSON | --file FILE)\n comment delete screen <id>\n comment delete playlist <id> [--page PAGE_ID]\n operations get <id>\n operations wait <id> [--timeout MS] [--poll-ms MS]\n operations cancel <id>\n events list [--after CURSOR] [--limit N]\n events follow [--after CURSOR] [--timeout MS]\n playback list [--screen-id ID] [--media-id ID] [--day YYYY-MM-DD]\n feedback bug <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback feature <title> (--body TEXT | --body-file FILE)\n [--command \"GROUP ACTION\"] [--no-context]\n feedback list [--kind bug|feature]\n doctor [--repair-config]\n version\n\nCredits:\n Remaining is a nonnegative whole number (never negative; empty remaining\n displays 0). Below 1000 credits, authenticated responses may warn\n credits_low. Until 1 Jan 2027 08:00 UTC (midnight PT), production fails open:\n billed commands are not rejected for empty remaining and do not return\n HTTP 402. After that instant, remaining below 1 credit is payment_required.\n Empty remaining does not stop or shut off screens in this window.\n media generate is the exception: it is billed per token.\n Text input is $10 / 1M tokens, image input is $16 / 1M, image output is\n $60 / 1M. Quality changes how detailed the still is and therefore how\n many tokens it uses. Remaining that cannot cover the debit returns\n payment_required / 402, including during this window.\n\nLook at the contact sheet before publishing. Fix what the lint names, then look again.\n";
1010
export interface CommandResult {
1111
envelope: ReturnType<typeof successEnvelope<unknown>>;
1212
exitCode: ExitCode;

‎plugins/screenrig/cli/dist/commands.d.ts.map‎

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)