Sarah Fortune
48529f1a96
feat(onboard): offer codex migration after harness install ( #81192 )
...
Add a post-install seam so the wizard can prompt the user to import their
existing Codex CLI state (skills, archived config/hooks, advisory cached
plugins) through the existing `openclaw migrate codex` flow once the
harness plugin is in place. Fires on both fresh installs and repair runs;
the user can decline at any time.
Trigger sites, both routing through one helper:
- src/plugins/provider-auth-choice.ts: after
`ensureCodexRuntimePluginForModelSelection` reports `installed: true`,
dynamically import `offerPostInstallMigrations` and call it before the
wizard moves on.
- src/commands/onboard-non-interactive/local/auth-choice.plugin-providers.ts:
same call shape with `nonInteractive: true`, so the helper emits a hint
line only and never mutates state.
Helper (src/wizard/setup.post-install-migration.ts) is generic, not
Codex-hardcoded — it resolves migration providers via the manifest
`migrationProviders` contract, filters to providers owned by plugins the
caller flags as installed in this onboarding step, runs `provider.detect`,
and on TTY hands accepted runs to `migrateDefaultCommand`. All detect,
prompt, and migrate failures are swallowed so onboarding never aborts on
this optional offer.
Also harden the Codex app-server subprocess lifecycle now that `detect()`
runs from a hotter onboarding path: isolate the plugin-install
`plugin/read` call (extensions/codex/src/migration/apply.ts) and have the
isolated request wait for child exit with a SIGKILL fallback
(extensions/codex/src/app-server/request.ts) so parents are not held open
by an orphaned codex binary.
Tests:
- src/wizard/setup.post-install-migration.test.ts (new, 10 cases)
- src/commands/onboard-non-interactive/local/auth-choice.plugin-providers.test.ts
extended with hint-call assertions and a not-required-no-offer case.
2026-05-12 16:51:27 -07:00
..
2026-04-28 05:00:53 +01:00
2026-05-11 23:45:19 +01:00
2026-05-12 04:43:55 -07:00
2026-05-12 22:57:53 +01:00
2026-05-07 09:07:18 +01:00
2026-05-07 06:10:05 +01:00
2026-05-07 06:48:13 +01:00
2026-05-11 06:14:48 +01:00
2026-04-29 04:33:15 +01:00
2026-05-02 13:44:49 +01:00
2026-05-02 13:44:49 +01:00
2026-05-11 03:24:08 +01:00
2026-05-02 18:39:26 -07:00
2026-05-11 03:41:00 +01:00
2026-04-29 06:46:02 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 06:41:17 +01:00
2026-05-11 06:35:41 +01:00
2026-05-06 07:40:10 +01:00
2026-05-06 07:40:10 +01:00
2026-05-06 07:40:10 +01:00
2026-05-11 06:27:17 +01:00
2026-05-06 07:40:10 +01:00
2026-05-01 13:47:09 +01:00
2026-05-11 05:18:40 +01:00
2026-05-06 07:40:10 +01:00
2026-05-11 06:37:32 +01:00
2026-04-28 05:00:53 +01:00
2026-05-06 02:15:17 +01:00
2026-05-02 16:15:45 +01:00
2026-05-09 05:40:02 +01:00
2026-05-02 02:59:38 +01:00
2026-05-04 23:50:03 +01:00
2026-05-11 17:18:19 +01:00
2026-05-06 02:15:17 +01:00
2026-04-26 11:28:41 +01:00
2026-05-03 19:07:27 +01:00
2026-05-07 08:43:29 +01:00
2026-05-02 01:58:45 +01:00
2026-05-11 23:24:33 +01:00
2026-05-06 05:03:11 +01:00
2026-05-09 05:21:01 +01:00
2026-04-26 11:28:41 +01:00
2026-04-28 03:28:17 +01:00
2026-05-01 21:00:49 +10:00
2026-05-11 05:17:21 +01:00
2026-05-09 20:40:31 -04:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:24:08 +01:00
2026-05-12 19:08:47 +01:00
2026-05-08 16:59:53 +02:00
2026-05-09 23:25:27 +01:00
2026-05-02 06:36:03 +01:00
2026-05-03 19:07:27 +01:00
2026-05-02 05:30:41 +01:00
2026-05-11 05:51:29 +01:00
2026-04-29 02:29:00 -07:00
2026-05-02 10:17:19 -07:00
2026-05-10 06:07:02 +01:00
2026-05-08 08:14:29 +01:00
2026-05-04 18:13:53 +00:00
2026-05-07 09:07:18 +01:00
2026-04-29 04:33:15 +01:00
2026-05-12 04:07:24 +01:00
2026-05-02 10:40:07 +01:00
2026-05-11 03:41:00 +01:00
2026-05-04 03:01:56 -07:00
2026-04-29 07:40:37 +09:00
2026-05-04 03:01:56 -07:00
2026-05-10 17:40:33 +01:00
2026-05-04 22:12:06 +05:30
2026-05-09 05:40:02 +01:00
2026-05-01 06:55:26 +01:00
2026-05-02 02:35:21 +01:00
2026-05-02 02:35:21 +01:00
2026-05-07 19:27:48 -07:00
2026-05-01 06:55:26 +01:00
2026-05-11 06:35:04 +01:00
2026-05-02 16:15:45 +01:00
2026-05-11 21:55:27 +01:00
2026-05-02 03:34:17 +01:00
2026-05-11 05:12:27 +01:00
2026-05-06 02:15:17 +01:00
2026-05-12 07:51:11 +01:00
2026-05-07 06:48:13 +01:00
2026-05-07 06:48:13 +01:00
2026-05-06 17:33:46 +01:00
2026-05-03 19:07:27 +01:00
2026-05-11 00:48:14 +01:00
2026-05-12 21:52:03 +01:00
2026-05-12 07:08:38 +01:00
2026-05-11 06:34:13 +01:00
2026-05-12 05:10:19 +01:00
2026-05-07 08:43:29 +01:00
2026-05-05 01:51:23 +01:00
2026-05-11 05:19:04 +01:00
2026-05-01 06:55:26 +01:00
2026-05-09 05:21:01 +01:00
2026-05-02 09:29:51 +01:00
2026-05-09 05:40:02 +01:00
2026-05-02 15:55:06 +01:00
2026-04-27 01:57:40 -07:00
2026-05-01 09:01:13 -07:00
2026-05-01 18:13:03 -07:00
2026-05-09 16:57:40 +09:00
2026-05-03 13:17:24 +01:00
2026-05-12 22:50:20 +01:00
2026-05-06 02:15:17 +01:00
2026-05-08 16:59:53 +02:00
2026-05-08 16:59:53 +02:00
2026-05-02 04:05:47 +01:00
2026-05-02 04:05:47 +01:00
2026-04-28 23:31:32 -07:00
2026-05-06 11:41:04 +00:00
2026-05-06 11:41:04 +00:00
2026-05-06 11:41:04 +00:00
2026-05-09 07:04:04 +01:00
2026-05-09 04:11:54 +01:00
2026-05-06 11:41:04 +00:00
2026-05-11 17:28:23 +01:00
2026-05-04 07:04:22 -07:00
2026-05-11 17:18:19 +01:00
2026-05-11 05:49:58 +01:00
2026-05-11 06:33:41 +01:00
2026-05-11 17:21:03 +01:00
2026-05-11 17:16:25 +01:00
2026-05-11 04:45:03 +01:00
2026-05-12 05:44:37 +01:00
2026-05-11 16:10:45 +01:00
2026-05-01 13:47:09 +01:00
2026-05-09 07:04:04 +01:00
2026-05-11 03:24:08 +01:00
2026-05-12 04:35:10 +01:00
2026-05-04 07:04:22 -07:00
2026-05-11 05:50:43 +01:00
2026-05-11 03:24:08 +01:00
2026-04-27 17:07:02 -07:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:59:48 +01:00
2026-05-04 08:04:27 -07:00
2026-05-11 03:41:00 +01:00
2026-05-11 03:24:08 +01:00
2026-05-09 03:31:42 -04:00
2026-05-09 03:31:42 -04:00
2026-05-11 06:26:40 +01:00
2026-05-02 07:29:15 +01:00
2026-04-27 08:39:42 +01:00
2026-04-27 10:34:25 +01:00
2026-05-02 07:29:15 +01:00
2026-05-04 21:33:46 -07:00
2026-05-09 06:06:08 -04:00
2026-05-09 06:06:08 -04:00
2026-05-01 21:32:22 +01:00
2026-05-12 20:28:40 +05:30
2026-05-12 20:28:40 +05:30
2026-05-02 05:16:10 +01:00
2026-05-02 07:27:20 -07:00
2026-05-11 07:10:09 +01:00
2026-05-12 21:48:49 +01:00
2026-05-12 07:01:15 +01:00
2026-05-06 02:15:17 +01:00
2026-05-12 22:48:58 +01:00
2026-05-12 20:28:40 +05:30
2026-05-02 16:11:05 +01:00
2026-05-02 10:17:19 -07:00
2026-05-02 17:33:15 +01:00
2026-04-28 10:34:01 +01:00
2026-04-26 13:43:21 -07:00
2026-05-03 19:07:27 +01:00
2026-05-06 05:03:11 +01:00
2026-05-11 20:05:15 +01:00
2026-04-26 01:03:13 +01:00
2026-05-01 21:32:22 +01:00
2026-05-02 07:29:15 +01:00
2026-05-11 20:56:22 +01:00
2026-05-06 02:15:17 +01:00
2026-05-03 19:07:27 +01:00
2026-05-10 12:13:49 +01:00
2026-05-03 19:07:27 +01:00
2026-05-11 05:43:56 +01:00
2026-04-28 02:03:15 +01:00
2026-05-02 07:29:15 +01:00
2026-05-11 05:09:40 +01:00
2026-05-09 11:26:43 +01:00
2026-05-09 05:36:20 +01:00
2026-04-27 08:35:45 +01:00
2026-05-02 13:19:24 +00:00
2026-05-02 13:19:24 +00:00
2026-05-07 09:07:18 +01:00
2026-05-02 23:32:00 +01:00
2026-05-01 19:44:28 +01:00
2026-05-04 13:39:23 -07:00
2026-05-10 12:37:10 +01:00
2026-05-11 06:38:26 +01:00
2026-05-11 16:58:06 +01:00
2026-05-08 05:28:12 +01:00
2026-05-09 05:40:02 +01:00
2026-05-02 06:21:08 +01:00
2026-05-09 05:21:01 +01:00
2026-05-01 21:32:22 +01:00
2026-05-12 21:52:03 +01:00
2026-05-11 16:58:06 +01:00
2026-05-10 03:21:11 -04:00
2026-05-11 06:11:59 +01:00
2026-05-10 14:23:15 +08:00
2026-05-05 01:39:34 +01:00
2026-05-05 01:39:34 +01:00
2026-05-02 07:51:17 +01:00
2026-05-02 07:51:17 +01:00
2026-05-02 10:15:25 +01:00
2026-04-28 10:57:31 +01:00
2026-05-03 16:07:06 +01:00
2026-05-03 16:07:06 +01:00
2026-05-03 15:58:14 +01:00
2026-05-02 09:29:51 +01:00
2026-05-02 09:29:51 +01:00
2026-04-28 10:34:24 +01:00
2026-05-03 19:07:27 +01:00
2026-05-11 06:18:14 +01:00
2026-05-06 05:03:11 +01:00
2026-05-12 21:48:49 +01:00
2026-05-09 02:34:56 -04:00
2026-05-04 00:41:01 +01:00
2026-04-28 20:39:28 +01:00
2026-05-11 17:09:32 -07:00
2026-05-12 07:03:32 +01:00
2026-05-06 05:03:11 +01:00
2026-05-11 06:49:57 +01:00
2026-04-28 03:11:19 +01:00
2026-04-27 11:25:40 +01:00
2026-05-11 06:48:47 +01:00
2026-05-03 07:38:55 +00:00
2026-05-11 05:12:50 +01:00
2026-05-02 16:15:07 +01:00
2026-05-11 03:47:40 +01:00
2026-05-02 13:44:49 +01:00
2026-05-02 03:38:48 +01:00
2026-05-02 03:38:48 +01:00
2026-05-09 02:34:56 -04:00
2026-05-06 01:46:42 +01:00
2026-05-06 01:46:42 +01:00
2026-05-09 07:48:58 +01:00
2026-05-11 06:31:21 +01:00
2026-05-03 16:15:28 -07:00
2026-05-11 06:25:13 +01:00
2026-05-07 12:49:17 -07:00
2026-05-12 07:08:38 +01:00
2026-05-03 16:48:46 +01:00
2026-05-06 02:15:17 +01:00
2026-05-11 03:41:00 +01:00
2026-05-02 09:54:54 +01:00
2026-05-02 09:54:54 +01:00
2026-05-12 08:17:14 +09:00
2026-05-02 07:04:54 +01:00
2026-05-08 13:39:18 +01:00
2026-05-12 05:43:04 +01:00
2026-04-28 18:03:01 +01:00
2026-05-11 06:04:31 +01:00
2026-05-02 06:36:03 +01:00
2026-05-06 17:33:46 +01:00
2026-05-02 07:51:17 +01:00
2026-05-12 06:52:40 +01:00
2026-05-07 08:43:29 +01:00
2026-05-12 07:49:08 +01:00
2026-05-12 07:49:08 +01:00
2026-05-02 17:33:15 +01:00
2026-05-02 08:19:40 +01:00
2026-05-12 21:18:39 +01:00
2026-05-10 03:04:35 -04:00
2026-05-11 20:56:22 +01:00
2026-04-26 13:43:22 -07:00
2026-05-06 05:03:11 +01:00
2026-05-11 06:34:48 +01:00
2026-05-11 16:16:49 +01:00
2026-04-26 11:36:32 +01:00
2026-05-12 16:51:27 -07:00
2026-05-11 06:42:31 +01:00
2026-05-11 17:09:32 -07:00
2026-05-11 06:19:24 +01:00
2026-05-11 03:41:00 +01:00
2026-05-11 17:16:25 +01:00
2026-05-09 11:26:43 +01:00
2026-05-02 10:15:25 +01:00
2026-05-10 12:37:10 +01:00
2026-04-27 01:02:13 +01:00
2026-05-11 05:07:13 +01:00
2026-05-02 09:54:54 +01:00
2026-05-11 06:08:59 +01:00
2026-05-07 08:09:55 +01:00
2026-04-26 09:21:06 +05:30
2026-05-07 18:49:42 -03:00
2026-05-11 06:43:46 +01:00
2026-05-02 13:30:07 -07:00
2026-05-11 03:41:00 +01:00
2026-05-11 05:42:19 +01:00
2026-05-08 22:29:02 +01:00
2026-05-08 22:29:02 +01:00
2026-05-11 20:56:22 +01:00
2026-05-11 03:41:00 +01:00
2026-05-08 05:28:12 +01:00
2026-05-06 16:17:58 +01:00
2026-05-11 15:31:35 -07:00
2026-05-11 15:31:35 -07:00
2026-05-11 03:41:00 +01:00
2026-05-02 10:15:25 +01:00
2026-04-29 04:33:15 +01:00
2026-05-01 13:47:09 +01:00
2026-05-12 22:46:49 +01:00
2026-05-07 18:49:42 -03:00
2026-05-11 14:17:08 +01:00
2026-05-11 13:16:06 +01:00
2026-05-01 13:48:01 +01:00
2026-05-11 01:35:26 -05:00
2026-05-09 02:34:56 -04:00
2026-05-02 07:04:54 +01:00
2026-05-02 14:44:17 +01:00
2026-05-11 20:05:15 +01:00
2026-05-04 23:50:03 +01:00
2026-05-04 15:11:14 -07:00
2026-05-12 06:37:52 +01:00
2026-05-06 02:15:17 +01:00
2026-05-03 15:15:56 +01:00
2026-05-03 15:15:56 +01:00
2026-05-07 09:07:18 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 03:59:48 +01:00
2026-05-11 06:54:46 +01:00
2026-05-11 05:04:44 +01:00
2026-05-11 03:59:48 +01:00
2026-04-29 03:52:22 +01:00
2026-05-11 13:58:14 +01:00
2026-04-28 03:28:17 +01:00
2026-05-11 04:56:11 +01:00
2026-05-09 05:40:02 +01:00
2026-05-06 05:03:11 +01:00
2026-05-02 23:47:25 -07:00
2026-05-11 03:24:08 +01:00
2026-05-11 13:58:14 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 13:58:14 +01:00
2026-05-11 17:18:19 +01:00
2026-05-11 03:24:08 +01:00
2026-05-11 20:52:41 +02:00
2026-05-11 20:52:41 +02:00
2026-05-12 05:41:21 +01:00
2026-05-04 13:39:23 -07:00
2026-05-11 02:04:17 +01:00
2026-05-01 06:55:26 +01:00
2026-05-07 09:07:18 +01:00
2026-05-03 15:58:14 +01:00
2026-05-03 15:58:14 +01:00
2026-05-12 18:53:38 +01:00
2026-05-07 08:43:29 +01:00
2026-05-11 05:52:40 +01:00
2026-05-01 06:55:26 +01:00
2026-05-11 04:43:53 +01:00
2026-05-08 05:56:38 +01:00
2026-05-06 02:15:17 +01:00
2026-05-02 05:01:39 +01:00
2026-05-11 05:44:45 +01:00
2026-05-02 19:58:19 +01:00
2026-05-09 05:40:02 +01:00
2026-05-11 20:35:33 +01:00
2026-05-09 02:34:56 -04:00
2026-05-11 20:56:22 +01:00
2026-05-03 12:21:59 -07:00
2026-05-09 05:40:02 +01:00
2026-04-29 04:33:15 +01:00
2026-04-27 01:57:40 -07:00
2026-05-02 06:21:08 +01:00
2026-05-10 15:21:43 +01:00
2026-05-10 15:21:43 +01:00
2026-05-10 15:21:43 +01:00
2026-05-12 05:26:27 +01:00
2026-05-08 12:44:01 +05:30
2026-05-09 03:31:42 -04:00
2026-05-12 13:01:22 -07:00
2026-05-12 04:17:16 +01:00
2026-05-09 07:51:49 +08:00
2026-05-12 07:49:08 +01:00
2026-05-12 07:49:08 +01:00
2026-05-01 06:55:26 +01:00
2026-05-09 04:53:25 +01:00
2026-05-02 09:29:51 +01:00
2026-05-12 22:56:41 +01:00
2026-04-29 04:33:15 +01:00
2026-05-08 17:21:54 +01:00
2026-05-02 07:29:15 +01:00
2026-05-04 23:50:03 +01:00
2026-05-04 16:56:05 -07:00
2026-05-09 05:44:40 +01:00
2026-05-02 09:54:54 +01:00
2026-05-11 20:35:33 +01:00
2026-05-04 07:44:34 +01:00
2026-05-03 00:59:55 +09:00
2026-04-26 02:51:48 -07:00
2026-05-02 09:54:54 +01:00
2026-05-03 00:48:37 -07:00
2026-05-11 20:35:33 +01:00
2026-04-29 04:33:15 +01:00
2026-05-11 06:58:28 +01:00
2026-05-11 06:27:17 +01:00
2026-05-12 03:38:01 +01:00
2026-05-12 05:20:50 +01:00
2026-05-11 06:59:29 +01:00
2026-05-11 04:57:21 +01:00
2026-05-12 22:55:08 +01:00