init claude-code
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
/**
|
||||
* Teammate mode snapshot module.
|
||||
*
|
||||
* Captures the teammate mode at session startup, following the same pattern
|
||||
* as hooksConfigSnapshot.ts. This ensures that runtime config changes don't
|
||||
* affect the teammate mode for the current session.
|
||||
*/
|
||||
|
||||
import { getGlobalConfig } from '../../../utils/config.js'
|
||||
import { logForDebugging } from '../../../utils/debug.js'
|
||||
import { logError } from '../../../utils/log.js'
|
||||
|
||||
export type TeammateMode = 'auto' | 'tmux' | 'in-process'
|
||||
|
||||
// Module-level variable to hold the captured mode at startup
|
||||
let initialTeammateMode: TeammateMode | null = null
|
||||
|
||||
// CLI override (set before capture if --teammate-mode is provided)
|
||||
let cliTeammateModeOverride: TeammateMode | null = null
|
||||
|
||||
/**
|
||||
* Set the CLI override for teammate mode.
|
||||
* Must be called before captureTeammateModeSnapshot().
|
||||
*/
|
||||
export function setCliTeammateModeOverride(mode: TeammateMode): void {
|
||||
cliTeammateModeOverride = mode
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current CLI override, if any.
|
||||
* Returns null if no CLI override was set.
|
||||
*/
|
||||
export function getCliTeammateModeOverride(): TeammateMode | null {
|
||||
return cliTeammateModeOverride
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear the CLI override and update the snapshot to the new mode.
|
||||
* Called when user changes the setting in the UI, allowing their change to take effect.
|
||||
*
|
||||
* @param newMode - The new mode the user selected (passed directly to avoid race condition)
|
||||
*/
|
||||
export function clearCliTeammateModeOverride(newMode: TeammateMode): void {
|
||||
cliTeammateModeOverride = null
|
||||
initialTeammateMode = newMode
|
||||
logForDebugging(
|
||||
`[TeammateModeSnapshot] CLI override cleared, new mode: ${newMode}`,
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Capture the teammate mode at session startup.
|
||||
* Called early in main.tsx, after CLI args are parsed.
|
||||
* CLI override takes precedence over config.
|
||||
*/
|
||||
export function captureTeammateModeSnapshot(): void {
|
||||
if (cliTeammateModeOverride) {
|
||||
initialTeammateMode = cliTeammateModeOverride
|
||||
logForDebugging(
|
||||
`[TeammateModeSnapshot] Captured from CLI override: ${initialTeammateMode}`,
|
||||
)
|
||||
} else {
|
||||
const config = getGlobalConfig()
|
||||
initialTeammateMode = config.teammateMode ?? 'auto'
|
||||
logForDebugging(
|
||||
`[TeammateModeSnapshot] Captured from config: ${initialTeammateMode}`,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the teammate mode for this session.
|
||||
* Returns the snapshot captured at startup, ignoring any runtime config changes.
|
||||
*/
|
||||
export function getTeammateModeFromSnapshot(): TeammateMode {
|
||||
if (initialTeammateMode === null) {
|
||||
// This indicates an initialization bug - capture should happen in setup()
|
||||
logError(
|
||||
new Error(
|
||||
'getTeammateModeFromSnapshot called before capture - this indicates an initialization bug',
|
||||
),
|
||||
)
|
||||
captureTeammateModeSnapshot()
|
||||
}
|
||||
// Fallback to 'auto' if somehow still null (shouldn't happen, but safe)
|
||||
return initialTeammateMode ?? 'auto'
|
||||
}
|
||||
Reference in New Issue
Block a user