Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/cli-core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -290,6 +290,7 @@ async function handlePrompt(
promptRetries: globalFlags.promptRetries,
verbose: globalFlags.verbose,
waitForCompletion: flags.wait !== false,
terminal: globalFlags.terminal,
});

if ("queued" in result) {
Expand Down Expand Up @@ -362,6 +363,7 @@ async function handleExec(
suppressSdkConsoleErrors: outputPolicy.suppressSdkConsoleErrors,
timeoutMs: globalFlags.timeout,
verbose: globalFlags.verbose,
terminal: globalFlags.terminal,
promptRetries: globalFlags.promptRetries,
sessionOptions: {
model: globalFlags.model,
Expand Down Expand Up @@ -543,6 +545,7 @@ async function handleSetMode(
authPolicy: globalFlags.authPolicy,
timeoutMs: globalFlags.timeout,
verbose: globalFlags.verbose,
terminal: globalFlags.terminal,
});

if (globalFlags.verbose && result.loadError) {
Expand Down Expand Up @@ -618,6 +621,7 @@ async function handleSetConfigOption(
authPolicy: globalFlags.authPolicy,
timeoutMs: globalFlags.timeout,
verbose: globalFlags.verbose,
terminal: globalFlags.terminal,
});

if (globalFlags.verbose && result.loadError) {
Expand Down Expand Up @@ -712,6 +716,7 @@ async function handleSessionsNew(
authPolicy: globalFlags.authPolicy,
timeoutMs: globalFlags.timeout,
verbose: globalFlags.verbose,
terminal: globalFlags.terminal,
sessionOptions: {
model: globalFlags.model,
allowedTools: globalFlags.allowedTools,
Expand Down Expand Up @@ -752,6 +757,7 @@ async function handleSessionsEnsure(
authPolicy: globalFlags.authPolicy,
timeoutMs: globalFlags.timeout,
verbose: globalFlags.verbose,
terminal: globalFlags.terminal,
sessionOptions: {
model: globalFlags.model,
allowedTools: globalFlags.allowedTools,
Expand Down
5 changes: 4 additions & 1 deletion src/cli/flags.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ export type GlobalFlags = PermissionFlags & {
model?: string;
allowedTools?: string[];
maxTurns?: number;
terminal?: boolean;
promptRetries?: number;
};

Expand Down Expand Up @@ -233,7 +234,8 @@ export function addGlobalFlags(command: Command): Command {
"Queue owner idle TTL before shutdown (0 = keep alive forever) (default: 300)",
parseTtlSeconds,
)
.option("--verbose", "Enable verbose debug logs");
.option("--verbose", "Enable verbose debug logs")
.option("--terminal", "Enable terminal capability (default: true)", true);
}

export function addSessionOption(command: Command): Command {
Expand Down Expand Up @@ -309,6 +311,7 @@ export function resolveGlobalFlags(command: Command, config: ResolvedAcpxConfig)
model: typeof opts.model === "string" ? parseNonEmptyValue("Model", opts.model) : undefined,
allowedTools: Array.isArray(opts.allowedTools) ? opts.allowedTools : undefined,
maxTurns: typeof opts.maxTurns === "number" ? opts.maxTurns : undefined,
terminal: opts.terminal !== false,
promptRetries: typeof opts.promptRetries === "number" ? opts.promptRetries : undefined,
approveAll: opts.approveAll ? true : undefined,
approveReads: opts.approveReads ? true : undefined,
Expand Down
2 changes: 1 addition & 1 deletion src/client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1104,7 +1104,7 @@ export class AcpClient {
readTextFile: true,
writeTextFile: true,
},
terminal: true,
terminal: this.options.terminal !== false,
},
clientInfo: {
name: "acpx",
Expand Down
16 changes: 16 additions & 0 deletions src/session-runtime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ export type RunOnceOptions = {
suppressSdkConsoleErrors?: boolean;
verbose?: boolean;
sessionOptions?: SessionAgentOptions;
terminal?: boolean;
promptRetries?: number;
} & TimedRunOptions;

Expand All @@ -205,6 +206,7 @@ export type SessionCreateOptions = {
authPolicy?: AuthPolicy;
verbose?: boolean;
sessionOptions?: SessionAgentOptions;
terminal?: boolean;
} & TimedRunOptions;

export type SessionSendOptions = {
Expand All @@ -226,6 +228,7 @@ export type SessionSendOptions = {
waitForCompletion?: boolean;
ttlMs?: number;
maxQueueDepth?: number;
terminal?: boolean;
client?: AcpClient;
promptRetries?: number;
} & TimedRunOptions;
Expand All @@ -243,6 +246,7 @@ export type SessionEnsureOptions = {
verbose?: boolean;
walkBoundary?: string;
sessionOptions?: SessionAgentOptions;
terminal?: boolean;
} & TimedRunOptions;

export type SessionCancelOptions = {
Expand All @@ -263,6 +267,7 @@ export type SessionSetModeOptions = {
authCredentials?: Record<string, string>;
authPolicy?: AuthPolicy;
verbose?: boolean;
terminal?: boolean;
} & TimedRunOptions;

export type SessionSetModelOptions = {
Expand All @@ -284,6 +289,7 @@ export type SessionSetConfigOptionOptions = {
authCredentials?: Record<string, string>;
authPolicy?: AuthPolicy;
verbose?: boolean;
terminal?: boolean;
} & TimedRunOptions;

function toPromptResult(
Expand Down Expand Up @@ -337,6 +343,7 @@ type RunSessionPromptOptions = {
timeoutMs?: number;
suppressSdkConsoleErrors?: boolean;
verbose?: boolean;
terminal?: boolean;
promptRetries?: number;
onClientAvailable?: (controller: ActiveSessionController) => void;
onClientClosed?: () => void;
Expand Down Expand Up @@ -665,6 +672,7 @@ async function runSessionPrompt(options: RunSessionPromptOptions): Promise<Sessi
authPolicy: options.authPolicy,
suppressSdkConsoleErrors: options.suppressSdkConsoleErrors,
verbose: options.verbose,
terminal: options.terminal,
sessionOptions: sessionOptionsFromRecord(record),
});
client.updateRuntimeOptions({
Expand Down Expand Up @@ -956,6 +964,7 @@ export async function runOnce(options: RunOnceOptions): Promise<RunPromptResult>
options.onClientOperation?.(operation);
},
sessionOptions: options.sessionOptions,
terminal: options.terminal,
});

try {
Expand Down Expand Up @@ -1136,6 +1145,7 @@ export async function createSessionWithClient(
authPolicy: options.authPolicy,
verbose: options.verbose,
sessionOptions: options.sessionOptions,
terminal: options.terminal,
});

try {
Expand Down Expand Up @@ -1257,6 +1267,7 @@ export async function runSessionQueueOwner(options: QueueOwnerRuntimeOptions): P
authPolicy: options.authPolicy,
suppressSdkConsoleErrors: options.suppressSdkConsoleErrors,
verbose: options.verbose,
terminal: options.terminal,
sessionOptions: sessionOptionsFromRecord(sessionRecord),
});
const ttlMs = normalizeQueueOwnerTtlMs(options.ttlMs);
Expand All @@ -1276,6 +1287,7 @@ export async function runSessionQueueOwner(options: QueueOwnerRuntimeOptions): P
authPolicy: options.authPolicy,
timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
});
},
setSessionModelFallback: async (modelId: string, timeoutMs?: number) => {
Expand All @@ -1301,6 +1313,7 @@ export async function runSessionQueueOwner(options: QueueOwnerRuntimeOptions): P
authPolicy: options.authPolicy,
timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
});
return result.response;
},
Expand Down Expand Up @@ -1481,6 +1494,7 @@ export async function sendSessionDirect(options: SessionSendOptions): Promise<Se
timeoutMs: options.timeoutMs,
suppressSdkConsoleErrors: options.suppressSdkConsoleErrors,
verbose: options.verbose,
terminal: options.terminal,
client: options.client,
});
}
Expand Down Expand Up @@ -1523,6 +1537,7 @@ export async function setSessionMode(
authPolicy: options.authPolicy,
timeoutMs: options.timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
});
}

Expand Down Expand Up @@ -1591,6 +1606,7 @@ export async function setSessionConfigOption(
authPolicy: options.authPolicy,
timeoutMs: options.timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
});
}

Expand Down
6 changes: 6 additions & 0 deletions src/session-runtime/prompt-runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ type WithConnectedSessionOptions<T> = {
authPolicy?: AuthPolicy;
timeoutMs?: number;
verbose?: boolean;
terminal?: boolean;
onClientAvailable?: (controller: ActiveSessionController) => void;
onClientClosed?: () => void;
run: (client: AcpClient, sessionId: string, record: SessionRecord) => Promise<T>;
Expand All @@ -92,6 +93,7 @@ async function withConnectedSession<T>(
authCredentials: options.authCredentials,
authPolicy: options.authPolicy,
verbose: options.verbose,
terminal: options.terminal,
sessionOptions: sessionOptionsFromRecord(record),
});
let activeSessionIdForControl = record.acpSessionId;
Expand Down Expand Up @@ -181,6 +183,7 @@ export type RunSessionSetModeDirectOptions = {
authPolicy?: AuthPolicy;
timeoutMs?: number;
verbose?: boolean;
terminal?: boolean;
onClientAvailable?: (controller: ActiveSessionController) => void;
onClientClosed?: () => void;
};
Expand All @@ -195,6 +198,7 @@ export type RunSessionSetConfigOptionDirectOptions = {
authPolicy?: AuthPolicy;
timeoutMs?: number;
verbose?: boolean;
terminal?: boolean;
onClientAvailable?: (controller: ActiveSessionController) => void;
onClientClosed?: () => void;
};
Expand Down Expand Up @@ -223,6 +227,7 @@ export async function runSessionSetModeDirect(
authPolicy: options.authPolicy,
timeoutMs: options.timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
onClientAvailable: options.onClientAvailable,
onClientClosed: options.onClientClosed,
run: async (client, sessionId, record) => {
Expand Down Expand Up @@ -276,6 +281,7 @@ export async function runSessionSetConfigOptionDirect(
authPolicy: options.authPolicy,
timeoutMs: options.timeoutMs,
verbose: options.verbose,
terminal: options.terminal,
onClientAvailable: options.onClientAvailable,
onClientClosed: options.onClientClosed,
run: async (client, sessionId, record) => {
Expand Down
3 changes: 3 additions & 0 deletions src/session-runtime/queue-owner-process.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export type QueueOwnerRuntimeOptions = {
verbose?: boolean;
ttlMs?: number;
maxQueueDepth?: number;
terminal?: boolean;
promptRetries?: number;
};

Expand All @@ -32,6 +33,7 @@ type SessionSendLike = {
verbose?: boolean;
ttlMs?: number;
maxQueueDepth?: number;
terminal?: boolean;
promptRetries?: number;
};

Expand Down Expand Up @@ -130,6 +132,7 @@ export function queueOwnerRuntimeOptionsFromSend(
verbose: options.verbose,
ttlMs: options.ttlMs,
maxQueueDepth: options.maxQueueDepth,
terminal: options.terminal,
promptRetries: options.promptRetries,
};
}
Expand Down
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ export type AcpClientOptions = {
onAcpOutputMessage?: (direction: AcpMessageDirection, message: AcpJsonRpcMessage) => void;
onSessionUpdate?: (notification: SessionNotification) => void;
onClientOperation?: (operation: ClientOperation) => void;
terminal?: boolean;
};

export const SESSION_RECORD_SCHEMA = "acpx.session.v1" as const;
Expand Down