fix(rebase): migrate the replayed E2B branch onto the rebased parent
The linear replay carried old-lineage content over parent-owned files; this checkpoint restores them and adapts the branch to the parent's post-rebase seam: - restore all pty/lsp/subprocess/code-runtime surfaces to the parent's exact content (this branch claims none of them) and drop the net-zero code-runtime-e2b/pty-e2b/lsp-e2b residue and its registrations - widen serializeRemoteEnvironment to the seam's NodeJS.ProcessEnv tombstone contract: an explicit undefined removes an ambient entry - migrate the two E2B fixture Agent stubs to the Inbox-model interface and Session.create - re-apply the branch's gen-doc-graphs roles, THIRD_PARTY_NOTICES e2b row, and packages/README group row (trimmed to the doc budget); regenerate catalogs and re-record bilingual pairings
This commit is contained in:
@@ -84,19 +84,21 @@ export function bootstrapEnvironment(raw: string): Record<string, string> {
|
||||
/**
|
||||
* Overlay explicit entries and serialize one validated E2B environment.
|
||||
* @param raw - The complete NUL-delimited remote environment.
|
||||
* @param explicit - Deliberate caller overrides applied after ambient scrubbing.
|
||||
* @param explicit - Deliberate caller overrides applied after ambient scrubbing; an `undefined` tombstone removes an ambient entry.
|
||||
* @returns NUL-delimited `name=value` entries accepted by `env -i`.
|
||||
*/
|
||||
export function serializeRemoteEnvironment(
|
||||
raw: string,
|
||||
explicit: Readonly<Record<string, string>> | undefined,
|
||||
explicit: Readonly<NodeJS.ProcessEnv> | undefined,
|
||||
): string {
|
||||
const environment = scrubRemoteEnvironment(raw)
|
||||
for (const [name, value] of Object.entries(explicit ?? {})) {
|
||||
if (name.length === 0 || name.includes('=') || name.includes('\0') || value.includes('\0')) {
|
||||
if (name.length === 0 || name.includes('=') || name.includes('\0') || value?.includes('\0') === true) {
|
||||
throw new Error('subprocess-e2b: environment entries require non-empty NUL-free names without = and NUL-free values')
|
||||
}
|
||||
environment.set(name, value)
|
||||
// An explicit undefined is the seam's tombstone: remove the ambient entry.
|
||||
if (value === undefined) environment.delete(name)
|
||||
else environment.set(name, value)
|
||||
}
|
||||
return [...environment].map(([name, value]) => `${name}=${value}\0`).join('')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user