mirror of
https://github.com/HeyPuter/puter.git
synced 2026-11-06 22:13:04 +00:00
* fix(ai): finish async media accounting and recheck output access * fix(ai): settle late media jobs on their outcome and keep their slot A job still running when the poll window closes no longer charges its estimate up front. The caller still gets the 504; the job is followed in the background, holding its credit, until it settles, and is metered from the provider's outcome: what it reports, nothing for a failure that reports no cost, the estimate only if it never settles. The driver concurrency slot is now held until the handler and any work it carries on after the response settle, so a disconnect no longer frees a slot while polling continues. A revoked puter_output_path is reported as metadata.outputSaved = false. * fix(ai): bill a lost media job the same in and after the window A poll error that isn't transient now ends the same way whether it hits inside the window or after it: a client-error refusal is a failure the provider doesn't bill, while auth, not-found and unclassified errors mean we lost a job the provider still runs, charged its estimate. A Hailuo clip already billed retries a transient file lookup instead of failing, and a concurrency slot renews from the moment it is held.