{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=rajkaria/last-turn@0.1.1","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/last-turn@0.1.1","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/rajkaria/last-turn@0.1.1","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/rajkaria/last-turn@0.1.1 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"The turn just finished. What did it cost? Not this month, not this project — that one turn, ninety seconds ago. Model, tokens in, tokens out, how much of the input was cache, the dollars, and today's running total underneath it. The reason this can run twenty times a day is that it does not read your history. It finds the most recently modified transcript under the directories you configure and reads the last 256 KB of it — a tail, not an accounting, and the output says exactly that so nobody mistakes a partial number for a total. \u0060comped\u0060 is the Play that reads everything and prices a month; this is the one you can afford to run between turns. It reads Claude Code and Codex transcripts. Codex reports running totals rather than per-turn ones, so the turn is the difference between consecutive records, and a total that went down is treated as a new session rather than as a negative turn. Codex also names the model once at the top of the session, so when the file is long enough that the model would fall outside","distribution":{"digest":"sha256:03edc1bdc4db2b04f28292084ce7a144b6a94000d5faef7d19ef7ed3c014361f","mediaType":"application/vnd.modiqo.rote-flow","size":81490,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/rajkaria/last-turn@0.1.1","inputPolicy":{"omittedValues":"inspect_full_parameters_before_collecting_values_or_consent","optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/rajkaria/last-turn@0.1.1","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/rajkaria/last-turn@0.1.1.json"},"name":"last-turn","owner":{"kind":"user","slug":"rajkaria"},"parameters":[{"default":"~/.claude/projects","description":"Where Claude Code keeps its session transcripts. Only the tail of the newest file is read.","example":"~/.claude/projects","input":{"allowCustom":true,"choices":[],"label":"Claude dir"},"name":"claude_dir","required":false,"type":"string"},{"default":"~/.codex/sessions","description":"Where Codex keeps its session transcripts. Only the tail of the newest file is read.","example":"~/.codex/sessions","input":{"allowCustom":true,"choices":[],"label":"Codex dir"},"name":"codex_dir","required":false,"type":"string"},{"default":"","description":"Empty uses the price table bundled with the Play. Point it at your own JSON to price with different rates.","example":"~/prices.json","input":{"allowCustom":true,"choices":[],"label":"Rates path"},"name":"rates_path","required":false,"type":"string"},{"default":"","description":"Empty uses the machine's zone. A day boundary is a place, not a fact: this decides when today starts.","example":"Asia/Kolkata","input":{"allowCustom":true,"choices":[],"label":"Tz"},"name":"tz","required":false,"type":"string"},{"default":"false","description":"true runs the whole Play against bundled synthetic input, so a first run needs nothing configured and touches nothing of yours.","example":"false","input":{"allowCustom":true,"choices":[],"label":"Demo"},"name":"demo","required":false,"type":"string"},{"default":"","description":"Empty reads the real clock. An ISO-8601 instant makes the run reproducible, which is how the tests and the demo produce the same bytes on every machine.","example":"2026-09-05T14:22:03Z","input":{"allowCustom":true,"choices":[],"label":"Now"},"name":"now","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/rajkaria/last-turn@0.1.1 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters","whenValuesOmitted":"Run step 1 before collecting inputs or showing defaults; omittedFields are unknown values, not absent defaults or exhaustive choices."},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/rajkaria/last-turn@0.1.1","headlessCommandTemplate":"rote play run https://play.modiqo.ai/rajkaria/last-turn@0.1.1 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.80.0"},"publishedAt":"2026-09-05T17:50:12.126188+00:00","reference":"rajkaria/last-turn@0.1.1","requested":"rajkaria/last-turn","requirements":{"adapters":[],"browser":{"dependencies":[],"runtime":false,"signIn":false},"hostToolRequirements":[{"command":"python3","required":true,"versionRequirement":null}],"localTools":["python3"],"roteCli":{"minimumVersion":"0.91.0"},"sessions":false},"resolution":"latest","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":1,"names":["report"]},"title":"last-turn","type":"play","version":"0.1.1","visibility":"public"}