Optionalbundle: BundleDeactivate an extension. Disposes the underlying sandbox. No-op for unknown ids.
If an activate() for the same id is still in flight, we await it
first — otherwise the activation would resolve after this call,
active.set a fresh record, and leak an untracked QuickJS context
the host believes is gone.
Run the extension's entry.deactivate script (if any) and dispose
the sandbox. No-op for unknown ids.
Dispose every active extension. Used on flavor switch / shutdown.
Snapshot of the current activation record, if any.
True iff the extension has an active sandbox.
All active extension ids.
Activate an extension. Creates a sandbox, derives permissions from the granted capabilities, installs the
__ifclite_ctx__global, and runsentry.activateif the bundle declares one. Idempotent — if the extension is already active, returns the existing record.The activate call is fire-and-forget for async returns: the activation record's
activateResult.valuemay be a Promise the sandbox is still resolving. The runtime never awaits async user work because long-running activation would block the host.