← back to Kickbacks Ai Upstream
src/activation/context.ts
38 lines
import type { Loopback } from "../loopback";
import type { DebugController } from "../debug";
import type { TargetAdapter } from "../adapters/types";
import type { ClaudeCliStatuslineAdapter } from "../adapters/claude-cli/adapter";
import type { CodexCliWrapperAdapter } from "../adapters/codex-cli/adapter";
/** Mutable activation-lifetime state shared by the extracted subsystems
* and the extension.ts orchestrator. Created once in `activate()` and
* disposed in `deactivate()`. Replaces the former module-scope `let`
* variables so all mutable state is bundled in a single object. */
export interface ActivationContext {
timers: NodeJS.Timeout[];
loopback: Loopback | null;
debugCtl: DebugController | null;
cliStatus: ClaudeCliStatuslineAdapter | null;
codexCliStatus: CodexCliWrapperAdapter | null;
ccAdapter: TargetAdapter | null;
codexAdapter: TargetAdapter | null;
lastCliAdId: string | null;
lastCliSpinnerAdId: string | null;
}
/** Create a fresh ActivationContext with all fields at their initial
* (empty / null) values. */
export function createActivationContext(): ActivationContext {
return {
timers: [],
loopback: null,
debugCtl: null,
cliStatus: null,
codexCliStatus: null,
ccAdapter: null,
codexAdapter: null,
lastCliAdId: null,
lastCliSpinnerAdId: null,
};
}