Brennan Benson
99788a91fa
feat(acp): a managed runtime installs only when asked, with progress and cancel ( #29023 )
...
* feat(acp): a managed runtime installs only when asked, with progress and cancel
One installation per runtime owns every change to its releases: it reclaims old ones once, first,
then installs one at a time. An install checks free space, downloads with byte progress, extracts,
hashes each member (abortable), writes the receipt, then publishes by rename, the commit point: a
cancel after it reports success. Reinstall rehashes the pinned release without downloading. A
status read waits, bounded, for a newer revision and rereads the installed release from disk.
* fix(runtime): Install repairs a damaged copy, says when unzip is missing before downloading, and reads a failed download plainly
- Install over a damaged pinned copy downloads and verifies a fresh one, then swaps the damaged
folder into staging, so there is no dead end; status reports the damaged fact.
- A host that cannot unpack the archive (no unzip) reports it in status and refuses Install
without downloading.
- A network failure while downloading reads "Couldn't download …"; the raw error goes to the log.
- Reclamation skips the whole pass when a release folder could not be read.
* fix(runtime): a status read that can't read the installed files fails instead of saying not installed, and extraction uses the extractor the preflight found
* fix(runtime): a host that can't report free disk space still installs, and says so in the log
* fix(runtime): a download that can't be fixed by retrying says so instead of blaming the network
* fix(runtime): Install unpacks the release itself, checks it starts before publishing, and Cancel answers with the outcome
- The managed install unzips in-process (fflate, bundled into main), so a host without unzip can install; the unzip preflight and the missingProgram status field are gone. The Node runtime download keeps its own extractor.
- A runtime may provide validate(): Install starts the downloaded copy once before publishing it, and an existing copy before reusing it; a failure reads "<agent> couldn't start on this host".
- No 'cancelling' phase: Cancel resolves once the work has unwound and returns cancelled, or succeeded when it had already committed.
- Byte progress every 250 ms; status rereads disk and PATH only on a first read or a phase change.
- The declared download size is checked only for an uncompressed body.
- An existing copy whose files hash correctly but whose receipt is missing gets its receipt rewritten instead of reading as damaged forever.
* refactor(runtime): move the steps that put one release on disk out of the installer
The installer class now holds only its lifecycle: the shared operation state, the one-at-a-time
queue, install, cancel, status, reclaim and progress publishing. Reusing a whole copy, the free
space check, the download, unpacking, checking each file, the start check, the receipt, the
publishing rename and the failure sentences move unchanged into managed-runtime-release-install.ts,
which gets the pin, folder, label, signal and two callbacks (progress, and the commit point right
after the rename) instead of the class. No behavior change; this keeps the installer well under
the file-length limit once Remove lands in it.
* chore(deps): lock fflate for the in-process runtime unzip
* fix(runtime): a failed download blames the release only for a proven mismatch, so a refused proxy reads as a network problem
* fix(runtime): runtime downloads skip the HTTP cache, so Remove frees the space and nothing is stored twice
2026-10-16 17:38:02 -07:00
..
2026-10-10 23:51:24 -07:00
2026-10-01 23:37:05 -07:00
2026-10-16 16:20:49 -07:00
2026-10-16 13:33:42 -07:00
2026-10-15 02:51:20 -07:00
2026-10-16 16:24:27 -07:00
2026-10-16 16:24:27 -07:00
2026-10-16 02:52:22 -07:00
2026-10-15 09:55:40 -07:00
2026-10-14 09:25:30 -04:00
2026-10-15 05:06:12 -07:00
2026-10-11 17:48:43 -07:00
2026-10-15 23:18:05 -07:00
2026-10-16 07:13:34 -07:00
2026-10-16 16:41:14 -07:00
2026-10-16 06:26:21 -07:00
2026-10-09 22:26:46 -07:00
2026-10-16 12:45:01 -07:00
2026-10-12 10:47:16 -07:00
2026-10-16 17:12:44 -07:00
2026-10-16 17:12:44 -07:00
2026-10-10 05:24:35 -07:00
2026-10-15 21:07:49 -07:00
2026-10-16 02:52:22 -07:00
2026-10-15 11:18:58 -07:00
2026-10-12 13:52:28 -07:00
2026-10-12 22:19:17 -07:00
2026-10-15 23:18:05 -07:00
2026-10-09 18:32:28 -07:00
2026-10-16 08:46:41 -07:00
2026-10-12 14:31:04 -07:00
2026-10-12 11:28:25 -07:00
2026-10-12 11:37:25 -07:00
2026-10-12 11:37:25 -07:00
2026-10-16 17:26:45 +00:00
2026-10-08 16:08:49 -07:00
2026-10-12 11:37:25 -07:00
2026-10-16 17:12:44 -07:00
2026-10-11 17:48:43 -07:00
2026-10-16 21:38:26 +00:00
2026-10-11 17:48:43 -07:00
2026-10-14 00:25:08 -07:00
2026-10-10 02:01:24 -07:00
2026-10-10 22:36:42 -07:00
2026-10-15 17:38:52 -07:00
2026-10-16 17:06:52 -07:00
2026-10-10 02:01:24 -07:00
2026-10-16 15:53:30 -07:00
2026-10-09 18:32:28 -07:00
2026-10-12 13:28:28 -07:00
2026-10-12 11:37:25 -07:00
2026-10-13 16:14:17 -04:00
2026-10-16 15:53:30 -07:00
2026-10-11 23:45:07 -07:00
2026-10-09 15:57:47 -04:00
2026-10-13 01:55:18 -07:00
2026-10-11 17:48:43 -07:00
2026-10-14 21:16:48 -07:00
2026-10-13 23:37:47 -07:00
2026-10-15 23:18:05 -07:00
2026-10-12 11:37:25 -07:00
2026-10-09 17:19:29 -07:00
2026-10-16 16:41:14 -07:00
2026-10-15 17:38:52 -07:00
2026-10-16 17:38:02 -07:00
2026-10-09 18:32:28 -07:00
2026-10-14 23:27:48 -04:00
2026-10-08 23:58:04 -07:00
2026-10-14 00:25:08 -07:00
2026-10-16 10:27:31 -07:00
2026-10-03 06:42:52 -07:00
2026-10-16 02:52:22 -07:00
2026-10-14 18:22:39 -07:00
2026-10-16 17:34:34 -07:00
2026-10-16 17:06:52 -07:00
2026-10-15 11:18:58 -07:00
2026-10-16 07:17:22 -07:00
2026-10-12 00:55:43 -07:00
2026-10-13 22:41:41 -07:00
2026-10-11 17:48:43 -07:00
2026-10-14 16:14:27 -07:00
2026-10-16 04:14:00 -07:00
2026-10-16 01:13:33 -07:00
2026-10-09 18:32:28 -07:00
2026-10-02 22:13:26 -07:00
2026-10-16 17:12:44 -07:00
2026-10-11 16:06:05 -04:00
2026-10-11 19:35:46 -07:00
2026-10-16 17:38:02 -07:00
2026-10-13 05:21:49 -07:00
2026-10-15 14:21:28 -04:00
2026-10-11 17:48:43 -07:00
2026-10-16 10:39:21 -07:00
2026-10-16 16:24:27 -07:00
2026-10-16 16:58:43 -07:00
2026-10-16 16:24:27 -07:00
2026-10-09 22:33:10 -07:00
2026-10-14 19:31:46 -07:00
2026-10-16 17:27:46 +00:00
2026-10-13 17:14:35 -07:00
2026-10-14 08:55:52 +00:00
2026-10-09 22:26:46 -07:00
2026-10-16 16:06:15 -07:00
2026-10-13 18:06:05 -07:00
2026-10-12 14:19:43 -07:00
2026-10-16 17:12:44 -07:00
2026-10-15 23:18:05 -07:00
2026-10-09 15:57:47 -04:00
2026-10-12 08:06:20 -07:00
2026-10-09 18:32:28 -07:00
2026-10-12 14:30:27 -07:00
2026-10-09 18:32:28 -07:00
2026-10-04 00:24:45 -07:00
2026-10-02 22:13:26 -07:00
2026-10-14 19:11:03 -07:00
2026-10-09 15:57:47 -04:00
2026-10-13 18:06:05 -07:00
2026-10-13 18:06:05 -07:00
2026-10-14 08:55:52 +00:00
2026-10-04 16:55:32 -07:00
2026-10-09 22:26:46 -07:00
2026-10-10 02:01:24 -07:00
2026-10-11 05:57:43 -07:00
2026-10-10 21:39:23 -07:00
2026-10-13 08:18:08 -07:00
2026-10-11 17:48:43 -07:00
2026-10-11 17:48:43 -07:00
2026-10-02 22:13:26 -07:00
2026-10-11 18:43:09 -07:00
2026-10-11 18:43:09 -07:00
2026-10-14 03:24:18 -07:00
2026-10-05 22:23:48 -07:00
2026-10-07 01:00:12 -04:00
2026-10-01 15:38:53 -04:00
2026-10-16 15:53:12 -07:00
2026-10-16 12:41:56 -07:00
2026-10-08 05:36:25 -07:00
2026-10-14 16:14:27 -07:00
2026-10-09 18:32:28 -07:00
2026-10-15 17:59:21 -07:00
2026-10-15 23:18:05 -07:00
2026-10-16 15:53:30 -07:00
2026-10-14 03:24:18 -07:00
2026-10-14 03:24:18 -07:00
2026-10-14 03:24:18 -07:00
2026-10-16 15:53:30 -07:00
2026-10-11 17:48:43 -07:00
2026-10-02 19:00:41 -04:00
2026-10-09 18:32:28 -07:00
2026-10-13 06:23:25 -07:00
2026-10-14 17:52:41 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-13 16:14:17 -04:00
2026-10-11 16:03:26 -04:00
2026-10-11 16:03:26 -04:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-05 12:42:21 -07:00
2026-10-05 12:42:21 -07:00
2026-10-07 03:15:06 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-11 12:46:50 -07:00
2026-10-08 13:41:11 -07:00
2026-10-08 05:36:25 -07:00
2026-10-13 04:48:20 -04:00
2026-10-03 00:50:20 -07:00
2026-10-14 17:13:29 -04:00
2026-10-11 12:46:50 -07:00
2026-10-14 06:20:47 -07:00
2026-10-14 03:47:08 -07:00
2026-10-11 12:46:50 -07:00
2026-10-11 12:46:50 -07:00
2026-10-05 22:12:51 -07:00
2026-10-09 14:21:41 -07:00
2026-10-14 17:56:14 -07:00
2026-10-07 03:15:06 -07:00
2026-10-08 05:36:25 -07:00
2026-10-14 17:56:14 -07:00
2026-10-14 17:56:14 -07:00
2026-10-14 17:56:14 -07:00
2026-10-16 02:47:02 -07:00
2026-10-14 16:53:05 -07:00
2026-10-09 01:08:37 -07:00
2026-10-08 11:01:04 -07:00
2026-10-07 01:49:35 -07:00
2026-10-11 12:46:50 -07:00
2026-10-10 07:30:43 -07:00
2026-10-05 13:39:21 -04:00
2026-10-15 23:13:30 -07:00
2026-10-11 15:41:56 -07:00
2026-10-10 21:22:45 -04:00
2026-10-07 03:03:14 -07:00
2026-10-10 07:30:43 -07:00
2026-10-11 12:46:50 -07:00
2026-10-11 12:46:50 -07:00
2026-10-07 07:39:43 -07:00
2026-10-11 12:46:50 -07:00
2026-10-11 12:46:50 -07:00
2026-10-01 02:08:26 -07:00
2026-10-08 20:32:47 -07:00
2026-10-14 17:56:14 -07:00
2026-10-15 07:32:59 -04:00
2026-10-16 15:53:12 -07:00
2026-10-07 22:44:25 -07:00
2026-10-07 07:39:43 -07:00
2026-10-07 07:39:43 -07:00
2026-09-30 23:37:15 -07:00
2026-10-13 04:48:20 -04:00
2026-10-09 15:57:47 -04:00
2026-10-08 05:36:25 -07:00
2026-10-07 01:00:12 -04:00
2026-10-16 05:15:32 -07:00
2026-10-14 01:18:04 -07:00
2026-10-02 23:21:27 -07:00
2026-10-15 17:38:52 -07:00
2026-10-11 08:23:12 -07:00
2026-10-10 21:39:23 -07:00
2026-10-11 08:23:12 -07:00
2026-10-11 08:23:12 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-14 14:13:51 -07:00
2026-10-14 14:13:51 -07:00
2026-10-11 17:48:43 -07:00
2026-10-11 06:25:41 -07:00
2026-10-11 15:41:56 -07:00
2026-10-11 17:48:43 -07:00
2026-10-11 06:25:41 -07:00
2026-10-11 06:25:41 -07:00
2026-10-11 06:25:41 -07:00
2026-10-02 17:53:54 -07:00
2026-10-15 23:13:09 -07:00
2026-10-15 23:13:09 -07:00
2026-10-05 22:23:48 -07:00
2026-10-14 08:55:52 +00:00
2026-10-04 02:55:59 -07:00
2026-10-03 08:44:32 -07:00
2026-10-04 02:55:59 -07:00
2026-10-10 22:36:42 -07:00
2026-10-11 12:46:50 -07:00
2026-10-11 12:46:50 -07:00
2026-10-09 18:32:28 -07:00
2026-10-09 18:32:28 -07:00
2026-10-06 14:13:39 -07:00
2026-10-11 20:03:34 -07:00
2026-10-16 02:41:05 -07:00
2026-10-14 18:23:35 -07:00
2026-10-16 02:55:10 -07:00
2026-10-14 17:56:14 -07:00
2026-10-07 03:15:06 -07:00
2026-10-09 11:40:51 -07:00
2026-10-07 14:48:28 -07:00
2026-10-07 14:48:28 -07:00
2026-10-12 08:06:20 -07:00
2026-10-02 14:59:24 -04:00
2026-10-13 06:23:25 -07:00
2026-10-13 06:23:25 -07:00
2026-10-03 16:27:02 -07:00
2026-10-11 05:57:43 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 05:57:43 -07:00
2026-10-11 05:57:43 -07:00
2026-10-07 03:15:06 -07:00
2026-10-07 03:15:06 -07:00
2026-10-13 17:09:06 -04:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-16 08:32:34 -07:00
2026-10-11 23:45:07 -07:00
2026-10-03 16:27:02 -07:00
2026-10-11 23:45:07 -07:00
2026-10-12 08:28:58 -07:00
2026-10-15 23:31:35 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-14 08:55:52 +00:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 23:45:07 -07:00
2026-10-11 22:39:47 -07:00
2026-10-12 23:32:38 -07:00
2026-10-13 01:56:55 -07:00
2026-10-13 01:56:55 -07:00
2026-10-09 18:32:28 -07:00
2026-10-13 10:00:55 -07:00
2026-10-06 12:09:58 -07:00
2026-10-06 12:09:58 -07:00
2026-10-04 14:31:22 -07:00
2026-10-04 14:31:22 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-11 17:48:43 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-16 01:25:19 -07:00
2026-10-02 22:13:26 -07:00
2026-10-11 11:48:57 -07:00
2026-10-14 10:58:27 -07:00
2026-10-02 17:53:54 -07:00
2026-10-14 10:58:27 -07:00
2026-10-11 11:48:57 -07:00
2026-10-11 11:48:57 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-11 11:48:57 -07:00
2026-10-14 01:18:04 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-01 23:37:05 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-01 23:37:05 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-14 20:12:16 -07:00
2026-10-02 12:46:13 -07:00
2026-10-02 12:46:13 -07:00
2026-10-14 10:58:27 -07:00
2026-10-15 16:47:44 -07:00
2026-10-15 19:27:51 -07:00
2026-10-14 14:13:51 -07:00
2026-10-01 23:37:05 -07:00
2026-10-02 12:46:13 -07:00
2026-10-01 23:37:05 -07:00
2026-10-01 23:37:05 -07:00
2026-10-02 12:46:13 -07:00
2026-09-30 16:32:20 -07:00
2026-10-08 05:36:25 -07:00
2026-10-11 11:48:57 -07:00
2026-10-11 17:48:43 -07:00
2026-10-14 10:58:27 -07:00
2026-10-14 10:58:27 -07:00
2026-10-02 17:53:54 -07:00
2026-10-14 10:58:27 -07:00
2026-10-14 10:58:27 -07:00
2026-10-14 10:58:27 -07:00
2026-10-07 08:59:23 -07:00
2026-10-14 10:58:27 -07:00
2026-10-07 01:00:12 -04:00
2026-10-07 03:15:06 -07:00
2026-10-04 16:55:32 -07:00
2026-09-30 16:32:20 -07:00
2026-09-30 16:32:20 -07:00
2026-10-12 14:51:32 -07:00
2026-10-12 14:51:32 -07:00
2026-10-11 20:03:34 -07:00
2026-10-13 06:52:35 -07:00
2026-10-12 14:51:32 -07:00
2026-10-12 14:51:32 -07:00
2026-10-11 20:03:34 -07:00
2026-10-11 20:03:34 -07:00
2026-10-16 17:12:44 -07:00
2026-10-16 17:12:44 -07:00
2026-10-09 18:32:28 -07:00
2026-10-14 14:13:51 -07:00
2026-10-14 14:13:51 -07:00
2026-10-11 20:03:34 -07:00
2026-10-11 19:16:47 -07:00
2026-10-16 17:12:44 -07:00
2026-10-12 14:51:32 -07:00
2026-10-16 17:12:44 -07:00
2026-10-12 14:51:32 -07:00
2026-10-16 17:12:44 -07:00
2026-10-12 14:53:09 -07:00
2026-10-11 19:55:53 -07:00
2026-10-11 19:55:53 -07:00
2026-10-10 23:51:24 -07:00
2026-10-10 23:51:24 -07:00
2026-10-10 22:36:42 -07:00
2026-10-03 05:24:35 -07:00
2026-10-07 01:00:12 -04:00