Xiangzhe
0a74bfbdea
feat(cli): relay-like CLI closure — target manifest, Codex TOML, Gemini launcher, guards
- canonical executable manifest (bin/cli/cli-manifest.mjs): run/configure/completion
derive targets, aliases and --model wiring from one table; drift test cross-checks
manifest x cliRuntime x UI catalog (tests/unit/cli/cli-manifest-drift.test.ts)
- dashboard Codex generator converged to ~/.codex/config.toml (modern Codex v0.137+,
verified against codex-cli 0.147.0): conservative merge, env_key auth (key never
written), refuses invalid TOML, reports legacy config.yaml as migration note
- omniroute run gemini: launcher over OmniRoute's /v1beta surface via
GOOGLE_GEMINI_BASE_URL + isolated GEMINI_CLI_HOME forcing gemini-api-key auth
(contract proven against @google/gemini-cli 0.50.0); ACP registration kept distinct
- opt-in real smoke harness for upstream CLIs (RUN_CLI_SMOKE=1, credential by env
NAME, redacted output): tests/integration/upstream-cli-smoke.int.test.ts
- container-guard homologation for POST /api/cli-tools/apply (422 in container,
dry-run preview allowed, host write passes) + docs; guard untouched
- typecheck: omniglyphAdapter union narrowing, usageTracking typed signatures
(UsageLike, no any), models.ts isValidModel params — typecheck:core and
typecheck:noimplicit:core now clean
- relay core (prior session of this effort): omniroute run for 6 CLIs, configure
picker with per-context favorites/recents, contexts with optional keychain +
0600 fallback, provider CRUD with recursive redaction, completion updates, docs
2026-08-18 08:25:16 -03:00
..
2026-05-15 02:08:12 -03:00
2026-05-15 01:30:18 -03:00
2026-07-19 14:37:12 -03:00
2026-06-11 04:01:24 -03:00
2026-07-26 03:53:25 -03:00
2026-05-15 02:24:45 -03:00
2026-05-14 23:24:52 -03:00
2026-05-15 00:28:36 -03:00
2026-05-15 01:51:55 -03:00
2026-08-13 04:43:18 -03:00
2026-08-18 08:25:16 -03:00
2026-07-08 16:50:11 -03:00
2026-08-16 00:42:14 -03:00
2026-08-18 08:25:16 -03:00
2026-08-18 08:25:16 -03:00
2026-05-15 02:47:49 -03:00
2026-08-18 08:25:16 -03:00
2026-05-15 00:52:15 -03:00
2026-07-20 15:56:08 -03:00
2026-08-13 04:42:44 -03:00
2026-05-14 23:24:52 -03:00
2026-05-15 09:13:56 -03:00
2026-05-15 02:24:45 -03:00
2026-07-10 18:06:00 -03:00
2026-08-13 04:43:18 -03:00
2026-08-18 08:25:16 -03:00
2026-08-18 08:25:16 -03:00
2026-08-05 22:39:39 -03:00
2026-06-23 03:08:29 -03:00
2026-05-15 02:05:06 -03:00
2026-06-01 14:30:17 -03:00
2026-05-14 23:54:49 -03:00
2026-05-15 02:27:20 -03:00
2026-08-18 08:25:16 -03:00
2026-05-15 02:47:49 -03:00
2026-05-15 03:00:52 -03:00
2026-08-13 04:43:02 -03:00
2026-08-16 02:20:59 -03:00
2026-05-20 23:41:39 -03:00
2026-05-26 23:51:47 -03:00
2026-05-15 02:25:58 -03:00
2026-08-18 08:25:16 -03:00
2026-08-18 08:25:16 -03:00
2026-08-18 08:25:16 -03:00
2026-05-14 23:24:52 -03:00
2026-08-14 11:00:13 -03:00
2026-08-05 21:45:56 -03:00
2026-08-17 16:16:58 -03:00
2026-05-15 04:51:23 -03:00
2026-05-20 09:12:49 -03:00
2026-05-15 02:26:41 -03:00
2026-05-14 23:11:30 -03:00
2026-08-18 08:25:16 -03:00
2026-08-05 21:41:33 -03:00
2026-08-17 08:09:19 -03:00
2026-05-15 02:47:49 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-08-16 00:42:14 -03:00
2026-07-26 03:53:28 -03:00
2026-05-15 00:45:35 -03:00
2026-05-15 01:24:36 -03:00
2026-05-26 23:51:47 -03:00
2026-08-05 16:47:23 -03:00
2026-05-15 00:36:41 -03:00
2026-05-15 02:27:56 -03:00
2026-05-15 02:47:49 -03:00
2026-05-15 02:47:49 -03:00
2026-05-15 09:48:30 -03:00
2026-06-19 06:49:01 -03:00
2026-05-15 02:25:24 -03:00
2026-05-15 04:07:20 -03:00
2026-05-15 10:24:30 -03:00
2026-08-06 05:58:58 -03:00
2026-05-15 00:59:21 -03:00
2026-05-15 01:53:09 -03:00