Files
paseo/packages/website
Mohamed Boudra 8e5f536766 Release idle agent runtimes with work guards and live host controls (#7782)
* feat(server): release idle agent runtimes with provider safety checks

Require provider permission before releasing resumable runtimes so foreground idleness does not discard tracked background work. Preserve the saved conversation and serialize prompt admission with runtime closure; allow hosts to disable collection.

* docs: translate idle runtime cleanup configuration and provider contract

* feat(server): collect runtimes after one idle hour with optional provider vetoes

Keep callers resident while local or remote finish notification intent remains outstanding. Daemon-owned work determines baseline eligibility; provider checks add optional vetoes. Own the idle clock and sweep lifecycle in one cleanup module while the manager retains guarded closure.

* feat(agents): control idle runtime release live from host settings

Let hosts retain runtimes without restarting the daemon. Disabling invalidates pending collection decisions while preserving idle clocks for re-enabling. ACP-owned terminals and pending adapter work veto collection until they finish.

* fix(settings): clarify idle agent release with an info tooltip
2026-10-26 12:38:15 +07:00
..
2026-10-24 08:02:33 +02:00

Paseo website

Plugin install counts

Clients report an install by resolving a plugin with X-Paseo-Install: 1 or ?intent=install, using /api/plugins/resolve/<owner>/<slug> or /plugins/<owner>/<slug>.json. Ordinary resolves do not count. These numbers measure install intent, not successful artifact installation or npm downloads.

The worker requires Cloudflare's CF-Connecting-IP header to count a report. It stores the plugin ID plus a SHA-256 hash of the IP in a WEBSITE_CACHE KV key with a one hour TTL, never the raw IP. An existing key skips the count; repeats do not extend the hour. Missing or empty IP headers do not count.

Accepted reports increment the existing all-time total and UTC daily buckets in WEBSITE_CACHE. Daily buckets retain 60 days and supply the website's seven-day and thirty-day rankings. /api/plugins/installs still returns plugin IDs mapped to all-time totals. The registry build reads that endpoint into the published plugin details and index; the website reads windowed counts from KV through its five-minute cache. Existing counts remain intact. The KV guard is advisory: concurrent requests and KV propagation are not serialized.