From 1f2567022873983358efa5a669d252860f4d2862 Mon Sep 17 00:00:00 2001 From: juhuan <46651841+juhuan@users.noreply.github.com> Date: Tue, 7 Jul 2026 23:57:53 +0800 Subject: [PATCH] feat(sdk): add include_directories option to both SDKs Add `include_directories` (Python) / `includeDirectories` (TypeScript) option that maps to CLI's `--include-directories` flag, allowing users to add extra directories to the workspace context. Python SDK: - Add `include_directories: list[str] | None` to QueryOptions - Map to `--include-directories` (comma-separated) in build_cli_arguments TypeScript SDK: - Add `includeDirectories?: string[]` to TransportOptions and QueryOptions - Add to Zod schema - Pass through to ProcessTransport.buildCliArguments --- packages/sdk-python/src/qwen_code_sdk/transport.py | 3 +++ packages/sdk-python/src/qwen_code_sdk/types.py | 3 +++ packages/sdk-typescript/src/query/createQuery.ts | 1 + .../sdk-typescript/src/transport/ProcessTransport.ts | 10 ++++++++++ .../sdk-typescript/src/types/queryOptionsSchema.ts | 1 + packages/sdk-typescript/src/types/types.ts | 11 +++++++++++ 6 files changed, 29 insertions(+) diff --git a/packages/sdk-python/src/qwen_code_sdk/transport.py b/packages/sdk-python/src/qwen_code_sdk/transport.py index 8542364943f..d54bc0e0d19 100644 --- a/packages/sdk-python/src/qwen_code_sdk/transport.py +++ b/packages/sdk-python/src/qwen_code_sdk/transport.py @@ -227,6 +227,9 @@ def build_cli_arguments(options: QueryOptions) -> list[str]: if options.allowed_tools: args.extend(["--allowed-tools", ",".join(options.allowed_tools)]) + if options.include_directories: + args.extend(["--include-directories", ",".join(options.include_directories)]) + if options.auth_type: args.extend(["--auth-type", options.auth_type]) diff --git a/packages/sdk-python/src/qwen_code_sdk/types.py b/packages/sdk-python/src/qwen_code_sdk/types.py index 3d8ec72038e..75c0707eb4d 100644 --- a/packages/sdk-python/src/qwen_code_sdk/types.py +++ b/packages/sdk-python/src/qwen_code_sdk/types.py @@ -114,6 +114,7 @@ class QueryOptionsDict(TypedDict, total=False): timeout: TimeoutOptionsDict mcp_servers: dict[str, dict[str, Any]] stderr: Callable[[str], None] + include_directories: list[str] @dataclass @@ -139,6 +140,7 @@ class QueryOptions: timeout: TimeoutOptions = TimeoutOptions() mcp_servers: dict[str, dict[str, Any]] | None = None stderr: Callable[[str], None] | None = None + include_directories: list[str] | None = None @classmethod def from_mapping(cls, value: Mapping[str, Any] | None) -> QueryOptions: @@ -183,6 +185,7 @@ def from_mapping(cls, value: Mapping[str, Any] | None) -> QueryOptions: Callable[[str], None] | None, _as_optional_callable(data, "stderr"), ), + include_directories=_as_optional_str_list(data, "include_directories"), ) diff --git a/packages/sdk-typescript/src/query/createQuery.ts b/packages/sdk-typescript/src/query/createQuery.ts index 42d332b15f1..45f217e1713 100644 --- a/packages/sdk-typescript/src/query/createQuery.ts +++ b/packages/sdk-typescript/src/query/createQuery.ts @@ -67,6 +67,7 @@ export function query({ excludeTools: options.excludeTools, allowedTools: options.allowedTools, authType: options.authType, + includeDirectories: options.includeDirectories, includePartialMessages: options.includePartialMessages, resume: options.resume, sessionId, diff --git a/packages/sdk-typescript/src/transport/ProcessTransport.ts b/packages/sdk-typescript/src/transport/ProcessTransport.ts index 1a63e96d550..f57175b50b8 100644 --- a/packages/sdk-typescript/src/transport/ProcessTransport.ts +++ b/packages/sdk-typescript/src/transport/ProcessTransport.ts @@ -317,6 +317,16 @@ export class ProcessTransport implements Transport { args.push('--allowed-tools', this.options.allowedTools.join(',')); } + if ( + this.options.includeDirectories && + this.options.includeDirectories.length > 0 + ) { + args.push( + '--include-directories', + this.options.includeDirectories.join(','), + ); + } + if (this.options.authType) { args.push('--auth-type', this.options.authType); } diff --git a/packages/sdk-typescript/src/types/queryOptionsSchema.ts b/packages/sdk-typescript/src/types/queryOptionsSchema.ts index 702ea1c632d..3aabe99a363 100644 --- a/packages/sdk-typescript/src/types/queryOptionsSchema.ts +++ b/packages/sdk-typescript/src/types/queryOptionsSchema.ts @@ -182,5 +182,6 @@ export const QueryOptionsSchema = z resume: z.string().optional(), sessionId: z.string().optional(), timeout: TimeoutConfigSchema.optional(), + includeDirectories: z.array(z.string()).optional(), }) .strict(); diff --git a/packages/sdk-typescript/src/types/types.ts b/packages/sdk-typescript/src/types/types.ts index 3a7e26ee0aa..a73f13f4716 100644 --- a/packages/sdk-typescript/src/types/types.ts +++ b/packages/sdk-typescript/src/types/types.ts @@ -46,6 +46,11 @@ export type TransportOptions = { * When resume is provided, this should match the resume ID. */ sessionId?: string; + /** + * Additional directories to include in the workspace context. + * Equivalent to CLI's `--include-directories` flag. + */ + includeDirectories?: string[]; }; export interface QuerySystemPromptPreset { @@ -503,4 +508,10 @@ export interface QueryOptions { */ streamClose?: number; }; + + /** + * Additional directories to include in the workspace context. + * Equivalent to CLI's `--include-directories` flag. + */ + includeDirectories?: string[]; }