MCPcopy
hub / github.com/continuedev/continue / chat

Function chat

extensions/cli/src/commands/chat.ts:546–641  ·  view source on GitHub ↗
(prompt?: string, options: ChatOptions = {})

Source from the content-addressed store, hash-verified

544}
545
546export async function chat(prompt?: string, options: ChatOptions = {}) {
547 // Configure logger based on headless mode
548 configureLogger(options.headless ?? false);
549
550 // Configure headless-aware logging system
551 logging.configureLogger({ headless: options.headless ?? false });
552
553 try {
554 // Record session start
555 telemetryService.recordSessionStart();
556
557 // Start active time tracking
558 telemetryService.startActiveTime();
559
560 // Critical routing: Explicit separation of headless and interactive modes
561 if (options.headless) {
562 // Headless path - no Ink, no TUI, works in TTY-less environments
563 logger.debug("Running in headless mode (TTY-less compatible)");
564 await runHeadlessMode(prompt, options);
565 return;
566 }
567
568 // Interactive path - requires TTY for Ink rendering
569 // If not in headless mode, use unified initialization with TUI
570 if (!options.headless) {
571 // Process flags for TUI mode
572 const { permissionOverrides } = processCommandFlags(options);
573 // Initialize services with onboarding handled internally
574 await initializeServices({
575 options,
576 headless: false,
577 toolPermissionOverrides: permissionOverrides,
578 });
579
580 const agentFileState = await serviceContainer.get<AgentFileServiceState>(
581 SERVICE_NAMES.AGENT_FILE,
582 );
583
584 const initialPrompt = prependPrompt(
585 agentFileState?.agentFile?.prompt,
586 prompt,
587 );
588
589 // Start TUI with skipOnboarding since we already handled it
590 const tuiOptions: any = {
591 initialPrompt,
592 resume: options.resume,
593 fork: options.fork,
594 config: options.config,
595 org: options.org,
596 rule: options.rule,
597 prompt: options.prompt,
598 toolPermissionOverrides: permissionOverrides,
599 skipOnboarding: true,
600 };
601
602 // If we detected piped input, create a custom stdin for TUI
603 if ((options as any).hasPipedInput) {

Callers 2

handleSelectFunction · 0.70
index.tsFile · 0.50

Calls 14

runHeadlessModeFunction · 0.85
processCommandFlagsFunction · 0.85
initializeServicesFunction · 0.85
prependPromptFunction · 0.85
startTUIChatFunction · 0.85
safeStderrFunction · 0.85
formatErrorFunction · 0.85
gracefulExitFunction · 0.85
recordSessionStartMethod · 0.80
startActiveTimeMethod · 0.80
errorMethod · 0.80
stopActiveTimeMethod · 0.80

Tested by

no test coverage detected