Repository navigation
feat(cli): orca environment config get/set/list — remote settings editor [P0, HIGH-BLAST] - #19
LesleyMurfin wants to merge 5 commits into
Conversation
…tings editor Adds `orca environment config list|get|set` to read and edit a paired server runtime's portable behavior settings over the authenticated E2EE channel, via new environment.config.getAll/setMany RPC methods -> getPortableSettings()/updatePortableSettings() on the runtime. The privilege boundary is a zod .strict() allowlist (portableSettingsShape, 55 appearance/UI/editor keys); the read-projection derives its key list from the same object so read and write cannot drift. Every non-allowlisted key -- auth/credential/oauth, host/runtime/wsl, network/proxy, exec/command, and destructive-guard-bypass -- is rejected at the dispatcher boundary. Re-implemented on current fork main. Verified: typecheck green; env-config 22 tests incl. read-projection secret-leak guard + dangerous-key rejections; allowlist audited against 100% of current GlobalSettings (157 keys), zero dangerous keys admitted. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
🤖 Director diff-level verification (HIGH-BLAST): APPROVE-FOR-DRAFT. Allowlist IS enforced server-side: |
Review — the allowlist is appearance-only. It cannot set the key we opened this for.I opened this PR claiming it makes
The code says so plainly: "Terminal rendering / appearance (the poster-child divergence keys)". NOT in the allowlist: Why that matters — the case this feature would be used forMeasured on our headless serve tonight:
With no setter, the only remedy is hand-editing an 11.9MB The design question (genuine, not rhetorical)The exclusions the design names are "proxy/network-redirect, credential, and destructive-guard So: is widening to The safe-by-default property is right and worth keeping: "newly added Nothing here blocks the PR — it is good work that has sat unproposed for 13 days and should |
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
I've added |
Resolve conflicts from main's split of OrcaRuntimeService and orca-runtime.test.ts into fragment modules: - re-home getPortableSettings/updatePortableSettings onto OrcaRuntimeWithPtyForegroundProcessReads (where getClientSettings now lives) - re-home the portable-settings projection test into orca-runtime-tests/paired-settings.spec.ts - keep both sides of the rpc method manifest and CLI handler helper additions
main now requires every RPC method to declare an RpcMethodPermission (rpc-caller-scope.test.ts). Mirror settings.get/settings.update: getAll is a workspace read, setMany is a settings write.
main's generated RPC params catalog and the new anti-slop no-shape-in-symbol-names rule both landed after this branch forked: register environment.config.* in the catalog and rename portableSettingsShape -> portableSettingsAllowlist.
Merge order: land after #24This is a merge-ordering note, not a review blocker. The coupling below is file adjacency and rebase churn only — it is not a functional dependency. This PR is correct and self-contained on its own: merging out of the suggested order produces a merge conflict someone has to resolve, not a broken build or a missing symbol. Shared files with #24 — 3 of them:
#24 is the much larger change (45 files vs 8 here) and also carries the Note on the generated file: This PR has no file overlap with any other open PR. |
READY FOR REVIEW — fork PR. Do NOT self-merge; Lesley merges every fork PR.⚠️ HIGH-BLAST: writes remote settings — review the 55-key allowlist + write path before merge. Rebase-before-merge required.
feat(cli):
orca environment config get/set/list— remote portable-settings editorDRAFT — fork PR. Do NOT self-merge; Lesley merges every fork PR.⚠️ HIGH BLAST — HOLD for Lesley.
Remote editor for a headless environment's portable settings via CLI. Recovered from PC worktree
orca-fork-f9r2(documented "lost", in fact intact on PC, now pushed).Writes environment configuration on a remote/headless serve. Mutation surface is constrained by a strict 55-key allowlist (get/set/list only allowlisted keys). This is the highest-risk branch in the open-prs topic → do not merge without Lesley's explicit review of the allowlist + write path.
Diff (3-dot vs main)
7 files:
src/cli/handlers/environment.ts,src/main/runtime/rpc/methods/environment-config.ts,src/main/runtime/orca-runtime.ts,src/main/runtime/rpc/methods/index.ts(+ paired tests).Verification (prior session)
Documented 491 tests pass, quorum passed. Director re-verification queued. No local mtl-02 clone survives (reaped) → live re-build not run here; flagged.
Base staleness
Parent is old main
f6ad569; rebase onto currentv1.4.137-rc.1before merge.Guardrails
Draft + HIGH-BLAST HOLD. Base =
LesleyMurfin/orca:main(fork). Merge decision is Lesley's.