@qoder-ai/qoder-agent-sdk 1.0.15 → 1.0.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +128 -0
  2. package/dist/core/constants.d.ts +2 -2
  3. package/dist/core/deferred-transport.d.ts +23 -0
  4. package/dist/core/errors.d.ts +0 -8
  5. package/dist/core/process-transport.d.ts +3 -0
  6. package/dist/core/runtime-launch-options.d.ts +4 -1
  7. package/dist/core/transport.d.ts +2 -4
  8. package/dist/index.d.ts +10 -11
  9. package/dist/index.js +27 -22
  10. package/dist/mcp/sdk-mcp-server.d.ts +13 -1
  11. package/dist/mcp/tool-policy.d.ts +6 -0
  12. package/dist/protocol/agents.d.ts +0 -3
  13. package/dist/protocol/common.d.ts +0 -9
  14. package/dist/protocol/control.d.ts +35 -11
  15. package/dist/protocol/index.d.ts +4 -3
  16. package/dist/protocol/index.js +1 -1
  17. package/dist/protocol/mcp.d.ts +29 -0
  18. package/dist/protocol/messages.d.ts +34 -18
  19. package/dist/protocol/model-prompt-patches.d.ts +18 -0
  20. package/dist/protocol/version.d.ts +1 -1
  21. package/dist/query/query-runner.d.ts +13 -5
  22. package/dist/session/session-fork.d.ts +1 -27
  23. package/dist/session/session-import.d.ts +10 -0
  24. package/dist/session/session-manager.d.ts +3 -1
  25. package/dist/session/session-materializer.d.ts +15 -0
  26. package/dist/session/session-store.d.ts +45 -0
  27. package/dist/session/transcript-mirror.d.ts +25 -0
  28. package/dist/session/transcript-paths.d.ts +1 -2
  29. package/dist/types/common.d.ts +1 -1
  30. package/dist/types/control.d.ts +1 -1
  31. package/dist/types/hooks.d.ts +1 -1
  32. package/dist/types/index.d.ts +1 -2
  33. package/dist/types/mcp.d.ts +9 -3
  34. package/dist/types/messages.d.ts +21 -2
  35. package/dist/types/options.d.ts +44 -10
  36. package/dist/types/session.d.ts +17 -7
  37. package/dist/types/settings.d.ts +19 -232
  38. package/package.json +3 -14
  39. package/dist/bridge/bridge-api.d.ts +0 -14
  40. package/dist/bridge/bridge-session.d.ts +0 -6
  41. package/dist/bridge/ccr-client.d.ts +0 -72
  42. package/dist/bridge/index.d.ts +0 -9
  43. package/dist/bridge/index.js +0 -3
  44. package/dist/bridge/sse-transport.d.ts +0 -37
  45. package/dist/browser/browser-query.d.ts +0 -24
  46. package/dist/browser/index.d.ts +0 -14
  47. package/dist/browser/index.js +0 -9
  48. package/dist/browser/websocket-transport.d.ts +0 -40
  49. package/dist/direct-connect/direct-connect-transport.d.ts +0 -31
  50. package/dist/direct-connect/url-parser.d.ts +0 -14
  51. package/dist/embed/embed.d.ts +0 -2
  52. package/dist/embed/embed.js +0 -1
  53. package/dist/embed/extract-from-bunfs.d.ts +0 -5
  54. package/dist/types/bridge.d.ts +0 -62
  55. package/dist/types/browser.d.ts +0 -26
@@ -46,6 +46,12 @@ export type SdkMcpToolDefinition<Schema extends AnyZodRawShape = AnyZodRawShape>
46
46
  * stripped at the protocol boundary.
47
47
  */
48
48
  annotations?: ToolAnnotations;
49
+ /** Optional model-facing name. Requires `alwaysLoad: true`. */
50
+ exposedName?: string;
51
+ /** Keep this tool directly available when MCP lazy loading is enabled. */
52
+ alwaysLoad?: boolean;
53
+ /** Optional default permission policy for this MCP tool. */
54
+ permissionPolicy?: 'always_allow' | 'always_ask' | 'always_deny';
49
55
  /** Async handler invoked when the tool is called. */
50
56
  handler: (args: InferShape<Schema>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => Promise<CallToolResult>;
51
57
  };
@@ -65,7 +71,7 @@ export type CreateSdkMcpServerOptions = {
65
71
  * SDK's `mcpServers` option.
66
72
  *
67
73
  * NOTE: this factory does **not** call `instance.connect(transport)` itself
68
- * — that wiring lives in `query.ts` / `browser-query.ts`, where the
74
+ * — that wiring lives in `query.ts`, where the
69
75
  * per-query SdkMcpTransport (with its `sendMcpMessage` callback bound to
70
76
  * the query's pending-response map) is constructed. Adding a transport
71
77
  * here would either be wrong (no callback to bind to) or would force every
@@ -92,6 +98,12 @@ export type ToolExtras = {
92
98
  * `SdkMcpToolDefinition.annotations` for the full coverage matrix.
93
99
  */
94
100
  annotations?: ToolAnnotations;
101
+ /** Optional model-facing name. Requires `alwaysLoad: true`. */
102
+ exposedName?: string;
103
+ /** Keep this tool directly available when MCP lazy loading is enabled. */
104
+ alwaysLoad?: boolean;
105
+ /** Optional default permission policy for this tool. */
106
+ permissionPolicy?: 'always_allow' | 'always_ask' | 'always_deny';
95
107
  };
96
108
  /**
97
109
  * Helper to define a single tool for use with `createSdkMcpServer`.
@@ -0,0 +1,6 @@
1
+ import type { McpServerConfig, McpServerConfigForProcessTransport, McpServerToolPolicy } from '../types/mcp.js';
2
+ import type { McpServerConfigForCliTransport, McpToolRuntimeOverride } from '../protocol/mcp.js';
3
+ export declare function validateMcpToolExtension(serverName: string, policy: McpServerToolPolicy): void;
4
+ export declare function collectMcpToolOverrides(serverName: string, policies: McpServerToolPolicy[]): Record<string, McpToolRuntimeOverride> | undefined;
5
+ export declare function normalizeMcpServerForCli(serverName: string, config: McpServerConfigForProcessTransport, policies?: McpServerToolPolicy[]): McpServerConfigForCliTransport;
6
+ export declare function normalizeRuntimeMcpServersForCli(servers: Record<string, McpServerConfig>): Record<string, McpServerConfigForCliTransport>;
@@ -17,12 +17,9 @@ export type AgentDefinition = {
17
17
  prompt: string;
18
18
  model?: string;
19
19
  mcpServers?: AgentMcpServerSpec[];
20
- criticalSystemReminder_EXPERIMENTAL?: string;
21
20
  skills?: string[];
22
21
  initialPrompt?: string;
23
22
  maxTurns?: number;
24
- background?: boolean;
25
- memory?: 'user' | 'project' | 'local';
26
23
  effort?: EffortLevel;
27
24
  permissionMode?: PermissionMode;
28
25
  };
@@ -164,15 +164,6 @@ export type ThinkingDisabled = {
164
164
  type: 'disabled';
165
165
  };
166
166
  export type ThinkingConfig = ThinkingAdaptive | ThinkingEnabled | ThinkingDisabled;
167
- export type OutputFormatType = 'json_schema';
168
- export type JsonSchemaOutputFormat = {
169
- type: 'json_schema';
170
- schema: Record<string, unknown>;
171
- };
172
- export type OutputFormat = JsonSchemaOutputFormat;
173
- export type BaseOutputFormat = {
174
- type: OutputFormatType;
175
- };
176
167
  export type ModelContextWindowEntry = {
177
168
  token_count: number;
178
169
  is_default?: boolean;
@@ -13,12 +13,13 @@
13
13
  */
14
14
  import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
15
15
  import type { HookEvent, HookInput } from './hooks.js';
16
- import type { McpServerStatus, McpSetServersResult, McpServerStatusConfig, McpServerConfigForProcessTransport, OAuthToken } from './mcp.js';
16
+ import type { McpServerStatus, McpSetServersResult, McpServerConfigForCliTransport, McpToolRuntimeOverride, OAuthToken } from './mcp.js';
17
17
  import type { PermissionMode, PermissionUpdate } from './permissions.js';
18
18
  import type { SDKMessage } from './messages.js';
19
19
  import type { AgentDefinition, AgentInfo } from './agents.js';
20
20
  import type { AccountInfo, FastModeState, ModelInfo, SlashCommand, SdkPluginConfig, UsageInfo } from './common.js';
21
21
  import type { PluginDetails } from '../types/plugins.js';
22
+ import type { ModelPromptPatches } from './model-prompt-patches.js';
22
23
  export type SDKControlRequest = {
23
24
  type: 'control_request';
24
25
  request_id: string;
@@ -46,6 +47,23 @@ export type SDKControlCancelRequest = {
46
47
  };
47
48
  export type SDKControlInterruptRequest = {
48
49
  type: 'interrupt';
50
+ /**
51
+ * Cancel queued main-thread commands together with the active turn.
52
+ *
53
+ * This field requires the CLI capability
54
+ * `interrupt_cancel_queued_v1`.
55
+ */
56
+ cancel_queued?: boolean;
57
+ };
58
+ export type SDKControlInterruptResponse = {
59
+ /**
60
+ * UUIDs of queued messages that survive the interrupt and may still run.
61
+ */
62
+ still_queued: string[];
63
+ /**
64
+ * UUIDs cancelled by an interrupt request with `cancel_queued: true`.
65
+ */
66
+ cancelled?: string[];
49
67
  };
50
68
  export type SDKControlPermissionDecisionReasonType = 'rule' | 'mode' | 'subcommandResults' | 'permissionPromptTool' | 'hook' | 'asyncAgent' | 'workingDir' | 'safetyCheck' | 'classifier' | 'other';
51
69
  export type SDKControlPermissionRequest = {
@@ -71,7 +89,7 @@ export type SDKControlPermissionRequest = {
71
89
  * (just `{ type: 'sdk', name }`) on the wire and registers the instance
72
90
  * locally.
73
91
  */
74
- export type ControlMcpServerConfig = McpServerConfigForProcessTransport | McpServerStatusConfig;
92
+ export type ControlMcpServerConfig = McpServerConfigForCliTransport;
75
93
  export type SDKControlInitializeRequest = {
76
94
  type: 'initialize';
77
95
  model?: string;
@@ -84,12 +102,13 @@ export type SDKControlInitializeRequest = {
84
102
  plugins?: SdkPluginConfig[];
85
103
  systemPrompt?: string;
86
104
  appendSystemPrompt?: string;
105
+ modelRequestPatches?: ModelPromptPatches;
87
106
  excludeDynamicSections?: boolean;
88
107
  permissionMode?: PermissionMode;
89
108
  maxThinkingTokens?: number;
90
109
  enableFileCheckpointing?: boolean;
91
110
  sdkMcpServers?: string[];
92
- jsonSchema?: Record<string, unknown>;
111
+ sdkMcpToolOverrides?: Record<string, Record<string, McpToolRuntimeOverride>>;
93
112
  promptSuggestions?: boolean;
94
113
  supportsCatalogReadyInitialize?: boolean;
95
114
  initializeTimeoutMs?: number;
@@ -259,8 +278,8 @@ export type SDKControlRewindFilesRequest = {
259
278
  dry_run?: boolean;
260
279
  };
261
280
  export type SDKControlCancelAsyncMessageRequest = {
262
- type: 'cancel_async_message';
263
- message_id: string;
281
+ subtype: 'cancel_async_message';
282
+ message_uuid: string;
264
283
  };
265
284
  export type SDKControlSeedReadStateRequest = {
266
285
  type: 'seed_read_state';
@@ -308,10 +327,6 @@ export type SDKControlElicitationRequest = {
308
327
  options?: string[];
309
328
  tool_use_id?: string;
310
329
  };
311
- export type SDKControlStopTaskRequest = {
312
- type: 'stop_task';
313
- task_id: string;
314
- };
315
330
  export type SDKControlEndSessionRequest = {
316
331
  type: 'end_session';
317
332
  reason?: string;
@@ -453,7 +468,7 @@ export type SDKControlListPluginsRequest = {
453
468
  export type SDKControlListPluginsResponse = {
454
469
  plugins: PluginDetails[];
455
470
  };
456
- export type SDKControlRequestInner = SDKControlInterruptRequest | SDKControlPermissionRequest | SDKControlInitializeRequest | SDKControlSetPermissionModeRequest | SDKControlSetModelRequest | SDKControlSetProxyRequest | SDKControlGenerateSessionTitleRequest | SDKControlAddDirectoriesRequest | SDKControlSetMaxThinkingTokensRequest | SDKControlMcpStatusRequest | SDKControlGetContextUsageRequest | SDKControlGetUsageInfoRequest | SDKControlGetModelPolicyRequest | SDKControlAccountInfoRequest | SDKHookCallbackRequest | SDKControlMcpMessageRequest | SDKControlRewindFilesRequest | SDKControlCancelAsyncMessageRequest | SDKControlSeedReadStateRequest | SDKControlMcpSetServersRequest | SDKControlReloadPluginsRequest | SDKControlMcpReconnectRequest | SDKControlMcpToggleRequest | SDKControlApplyFlagSettingsRequest | SDKControlGetSettingsRequest | SDKControlElicitationRequest | SDKControlStopTaskRequest | SDKControlEndSessionRequest | SDKControlChannelEnableRequest | SDKControlMcpInjectTokenRequest | SDKControlMcpAuthenticateRequest | SDKControlMcpOAuthCallbackUrlRequest | SDKControlMcpClearAuthRequest | SDKControlGetByokConfigRequest | SDKControlValidateByokModelRequest | SDKControlListPluginsRequest;
471
+ export type SDKControlRequestInner = SDKControlInterruptRequest | SDKControlPermissionRequest | SDKControlInitializeRequest | SDKControlSetPermissionModeRequest | SDKControlSetModelRequest | SDKControlSetProxyRequest | SDKControlGenerateSessionTitleRequest | SDKControlAddDirectoriesRequest | SDKControlSetMaxThinkingTokensRequest | SDKControlMcpStatusRequest | SDKControlGetContextUsageRequest | SDKControlGetUsageInfoRequest | SDKControlGetModelPolicyRequest | SDKControlAccountInfoRequest | SDKHookCallbackRequest | SDKControlMcpMessageRequest | SDKControlRewindFilesRequest | SDKControlCancelAsyncMessageRequest | SDKControlSeedReadStateRequest | SDKControlMcpSetServersRequest | SDKControlReloadPluginsRequest | SDKControlMcpReconnectRequest | SDKControlMcpToggleRequest | SDKControlApplyFlagSettingsRequest | SDKControlGetSettingsRequest | SDKControlElicitationRequest | SDKControlEndSessionRequest | SDKControlChannelEnableRequest | SDKControlMcpInjectTokenRequest | SDKControlMcpAuthenticateRequest | SDKControlMcpOAuthCallbackUrlRequest | SDKControlMcpClearAuthRequest | SDKControlGetByokConfigRequest | SDKControlValidateByokModelRequest | SDKControlListPluginsRequest;
457
472
  export type SDKControlInitializeResponse = {
458
473
  commands: SlashCommand[];
459
474
  agents: AgentInfo[];
@@ -579,5 +594,14 @@ export type SDKControlMcpAuthenticateResponse = {
579
594
  export type SDKKeepAliveMessage = {
580
595
  type: 'keep_alive';
581
596
  };
582
- export type StdoutMessage = SDKMessage | SDKControlResponse | SDKControlRequest | SDKControlCancelRequest | SDKKeepAliveMessage;
597
+ /** SDK-internal post-commit transcript frame emitted by local runtimes. */
598
+ export type TranscriptMirrorMessage = {
599
+ type: 'transcript_mirror';
600
+ filePath: string;
601
+ entries: Array<{
602
+ type: string;
603
+ [key: string]: unknown;
604
+ }>;
605
+ };
606
+ export type StdoutMessage = SDKMessage | SDKControlResponse | SDKControlRequest | SDKControlCancelRequest | SDKKeepAliveMessage | TranscriptMirrorMessage;
583
607
  export {};
@@ -13,13 +13,14 @@
13
13
  * `satisfies z.ZodType<X>`.
14
14
  */
15
15
  export { WIRE_PROTOCOL_VERSION, type WireProtocolVersion } from './version.js';
16
- export type { UUID, BetaMessage, BetaRawMessageStreamEvent, BetaUsage, BetaStopReason, MessageParam, NonNullableUsage, AccountInfo, UsageAddOnQuotaBucket, UsageInfo, UsageOrgResourcePackage, UsageQuotaBucket, ApiKeySource, ExitReason, FastModeState, ConfigScope, SettingSource, SDKAssistantMessageError, SDKStatus, EffortLevel, ThinkingAdaptive, ThinkingEnabled, ThinkingDisabled, ThinkingConfig, OutputFormatType, JsonSchemaOutputFormat, OutputFormat, BaseOutputFormat, ModelInfo, ModelSource, ServerModelJson, ServerModelJsonValue, ModelStrategy, ModelPromotion, LocalizedModelText, ModelContextConfig, ModelContextWindowEntry, ModelEffortEntry, ModelThinkingConfig, ModelThinkingDisabled, ModelThinkingEnabled, PluginInfo, ModelUsage, SlashCommand, ToolConfig, SdkPluginConfig, } from './common.js';
16
+ export type { ModelPromptPatch, ModelPromptPatches, } from './model-prompt-patches.js';
17
+ export type { UUID, BetaMessage, BetaRawMessageStreamEvent, BetaUsage, BetaStopReason, MessageParam, NonNullableUsage, AccountInfo, UsageAddOnQuotaBucket, UsageInfo, UsageOrgResourcePackage, UsageQuotaBucket, ApiKeySource, ExitReason, FastModeState, ConfigScope, SettingSource, SDKAssistantMessageError, SDKStatus, EffortLevel, ThinkingAdaptive, ThinkingEnabled, ThinkingDisabled, ThinkingConfig, ModelInfo, ModelSource, ServerModelJson, ServerModelJsonValue, ModelStrategy, ModelPromotion, LocalizedModelText, ModelContextConfig, ModelContextWindowEntry, ModelEffortEntry, ModelThinkingConfig, ModelThinkingDisabled, ModelThinkingEnabled, PluginInfo, ModelUsage, SlashCommand, ToolConfig, SdkPluginConfig, } from './common.js';
17
18
  export type { AICodeTrackingLaunchOptions, QoderAgentLaunchOptions, QoderCliFlagSettings, } from './launch.js';
18
19
  export { buildQoderCliFlagSettings, buildQoderCliFlagSettingsArgs, } from './launch.js';
19
20
  export type { PermissionMode, PermissionBehavior, PermissionDecisionClassification, PermissionUpdateDestination, PermissionRuleValue, PermissionUpdate, PermissionResult, } from './permissions.js';
20
21
  export type { McpStdioServerConfig, McpSSEServerConfig, McpHttpServerConfig, McpSdkServerConfig, McpServerConfigForProcessTransport, McpServerStatus, McpServerStatusConfig, McpSetServersResult, OAuthToken, } from './mcp.js';
21
- export type { SDKAssistantMessage, SDKUserMessage, SDKUserMessageReplay, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKFileAttachment, SDKSystemMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKStatusMessage, SDKAPIRetryMessage, SDKLocalCommandOutputMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKSessionStateChangedMessage, SDKSessionTitleChangedMessage, SDKBridgeStateMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKPermissionDenial, SDKPermissionDeniedMessage, SDKPermissionDeniedReasonType, SDKMessage, } from './messages.js';
22
+ export type { SDKAssistantMessage, SDKUserMessage, SDKUserMessageReplay, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKFileAttachment, SDKSystemMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKStatusMessage, SDKAPIRetryMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKSessionStateChangedMessage, SDKSessionTitleChangedMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKPermissionDenial, SDKPermissionDeniedMessage, SDKPermissionDeniedReasonType, SDKMessage, } from './messages.js';
22
23
  export type { BaseHookInput, PreToolUseHookInput, PostToolUseHookInput, PostToolUseFailureHookInput, UserPromptSubmitHookInput, SessionStartHookInput, SessionEndHookInput, StopHookInput, StopFailureHookInput, SubagentStartHookInput, SubagentStopHookInput, PreCompactHookInput, PostCompactHookInput, PermissionRequestHookInput, PermissionDeniedHookInput, SetupHookInput, TeammateIdleHookInput, TaskCreatedHookInput, TaskCompletedHookInput, ElicitationHookInput, ElicitationResultHookInput, ConfigChangeHookInput, WorktreeCreateHookInput, WorktreeRemoveHookInput, InstructionsLoadedHookInput, CwdChangedHookInput, FileChangedHookInput, HookInput, PreToolUseHookSpecificOutput, PostToolUseHookSpecificOutput, PostToolUseFailureHookSpecificOutput, UserPromptSubmitHookSpecificOutput, SessionStartHookSpecificOutput, SetupHookSpecificOutput, SubagentStartHookSpecificOutput, PermissionRequestHookSpecificOutput, ElicitationHookSpecificOutput, ElicitationResultHookSpecificOutput, CwdChangedHookSpecificOutput, FileChangedHookSpecificOutput, WorktreeCreateHookSpecificOutput, SyncHookJSONOutput, AsyncHookJSONOutput, HookJSONOutput, HookEvent, } from './hooks.js';
23
24
  export type { AgentMcpServerSpec, AgentDefinition, AgentInfo, } from './agents.js';
24
25
  export { QoderModelPurpose } from './control.js';
25
- export type { SDKControlRequest, SDKControlResponse, SDKControlCancelRequest, SDKControlInterruptRequest, SDKControlPermissionRequest, SDKControlInitializeRequest, SDKControlSetPermissionModeRequest, SDKControlSetModelRequest, SDKControlGenerateSessionTitleRequest, SDKControlGenerateSessionTitleResponse, SDKControlAddDirectoriesRequest, SDKControlAddDirectoriesResponse, SDKControlGetModelPolicyRequest, SDKControlGetModelPolicyResponse, SDKControlSetMaxThinkingTokensRequest, SDKControlMcpStatusRequest, SDKControlGetContextUsageRequest, SDKControlGetUsageInfoRequest, SDKControlGetUsageInfoResponse, SDKControlAccountInfoRequest, SDKHookCallbackRequest, SDKControlMcpMessageRequest, SDKControlRewindFilesRequest, SDKControlCancelAsyncMessageRequest, SDKControlSeedReadStateRequest, SDKControlMcpSetServersRequest, SDKControlReloadPluginsRequest, SDKControlMcpReconnectRequest, SDKControlMcpToggleRequest, SDKControlApplyFlagSettingsRequest, SDKControlGetSettingsRequest, SDKControlElicitationRequest, SDKControlStopTaskRequest, SDKControlEndSessionRequest, SDKControlChannelEnableRequest, SDKControlMcpInjectTokenRequest, SDKControlMcpAuthenticateRequest, SDKControlMcpOAuthCallbackUrlRequest, SDKControlMcpClearAuthRequest, SDKControlRequestInner, SDKControlInitializeResponse, SDKControlGetContextUsageResponse, SDKControlReloadPluginsResponse, SDKControlMcpStatusResponse, SDKControlMcpSetServersResponse, SDKControlMcpAuthenticateResponse, SDKControlGetByokConfigRequest, SDKControlGetByokConfigResponse, SDKControlValidateByokModelRequest, SDKControlValidateByokModelResponse, BYOKModelValidationInput, BYOKProviderInfo, BYOKFieldInfo, BYOKModelTypeInfo, BYOKModelInfo, CustomModel, SDKControlListPluginsRequest, SDKControlListPluginsResponse, SDKKeepAliveMessage, StdoutMessage, ControlMcpServerConfig, } from './control.js';
26
+ export type { SDKControlRequest, SDKControlResponse, SDKControlCancelRequest, SDKControlInterruptRequest, SDKControlInterruptResponse, SDKControlPermissionRequest, SDKControlInitializeRequest, SDKControlSetPermissionModeRequest, SDKControlSetModelRequest, SDKControlGenerateSessionTitleRequest, SDKControlGenerateSessionTitleResponse, SDKControlAddDirectoriesRequest, SDKControlAddDirectoriesResponse, SDKControlGetModelPolicyRequest, SDKControlGetModelPolicyResponse, SDKControlSetMaxThinkingTokensRequest, SDKControlMcpStatusRequest, SDKControlGetContextUsageRequest, SDKControlGetUsageInfoRequest, SDKControlGetUsageInfoResponse, SDKControlAccountInfoRequest, SDKHookCallbackRequest, SDKControlMcpMessageRequest, SDKControlRewindFilesRequest, SDKControlCancelAsyncMessageRequest, SDKControlSeedReadStateRequest, SDKControlMcpSetServersRequest, SDKControlReloadPluginsRequest, SDKControlMcpReconnectRequest, SDKControlMcpToggleRequest, SDKControlApplyFlagSettingsRequest, SDKControlGetSettingsRequest, SDKControlElicitationRequest, SDKControlEndSessionRequest, SDKControlChannelEnableRequest, SDKControlMcpInjectTokenRequest, SDKControlMcpAuthenticateRequest, SDKControlMcpOAuthCallbackUrlRequest, SDKControlMcpClearAuthRequest, SDKControlRequestInner, SDKControlInitializeResponse, SDKControlGetContextUsageResponse, SDKControlReloadPluginsResponse, SDKControlMcpStatusResponse, SDKControlMcpSetServersResponse, SDKControlMcpAuthenticateResponse, SDKControlGetByokConfigRequest, SDKControlGetByokConfigResponse, SDKControlValidateByokModelRequest, SDKControlValidateByokModelResponse, BYOKModelValidationInput, BYOKProviderInfo, BYOKFieldInfo, BYOKModelTypeInfo, BYOKModelInfo, CustomModel, SDKControlListPluginsRequest, SDKControlListPluginsResponse, SDKKeepAliveMessage, StdoutMessage, ControlMcpServerConfig, } from './control.js';
@@ -1 +1 @@
1
- var r="1.0.0";function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function s(e={}){let t={...e.settings??{}},o=e.aiCodeTracking?.installGitCommitHook;if(o!==void 0){let n=t.aiCodeTracking;t.aiCodeTracking={...i(n)?n:{},installGitCommitHook:o}}return t}function l(e={}){let t=s(e);return Object.keys(t).length===0?[]:["--settings",JSON.stringify(t)]}var p={Main:"main",Plan:"plan",Task:"task",Compact:"compact",Title:"title",Suggestion:"suggestion",Generate:"generate",HookPrompt:"hook_prompt",Subagent:"subagent",WebFetch:"web_fetch",ImageGen:"image_gen",Compression:"compression",Utility:"utility"};export{p as QoderModelPurpose,r as WIRE_PROTOCOL_VERSION,s as buildQoderCliFlagSettings,l as buildQoderCliFlagSettingsArgs};
1
+ var r="1.1.0";function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function s(e={}){let t={...e.settings??{}},o=e.aiCodeTracking?.installGitCommitHook;if(o!==void 0){let n=t.aiCodeTracking;t.aiCodeTracking={...i(n)?n:{},installGitCommitHook:o}}return t}function l(e={}){let t=s(e);return Object.keys(t).length===0?[]:["--settings",JSON.stringify(t)]}var p={Main:"main",Plan:"plan",Task:"task",Compact:"compact",Title:"title",Suggestion:"suggestion",Generate:"generate",HookPrompt:"hook_prompt",Subagent:"subagent",WebFetch:"web_fetch",ImageGen:"image_gen",Compression:"compression",Utility:"utility"};export{p as QoderModelPurpose,r as WIRE_PROTOCOL_VERSION,s as buildQoderCliFlagSettings,l as buildQoderCliFlagSettingsArgs};
@@ -15,22 +15,51 @@ export type McpStdioServerConfig = {
15
15
  command: string;
16
16
  args?: string[];
17
17
  env?: Record<string, string>;
18
+ /**
19
+ * Per-server tool-call timeout in milliseconds. Overrides the
20
+ * MCP_TOOL_TIMEOUT environment variable for this server. Hard wall-clock
21
+ * limit per call; progress notifications do not extend it. Values below
22
+ * 1000ms are ignored (falls through to MCP_TOOL_TIMEOUT or the default).
23
+ */
24
+ timeout?: number;
18
25
  };
19
26
  export type McpSSEServerConfig = {
20
27
  type: 'sse';
21
28
  url: string;
22
29
  headers?: Record<string, string>;
30
+ /**
31
+ * Per-server tool-call timeout in milliseconds. Overrides the
32
+ * MCP_TOOL_TIMEOUT environment variable for this server. Hard wall-clock
33
+ * limit per call; progress notifications do not extend it. Values below
34
+ * 1000ms are ignored (falls through to MCP_TOOL_TIMEOUT or the default).
35
+ */
36
+ timeout?: number;
23
37
  };
24
38
  export type McpHttpServerConfig = {
25
39
  type: 'http';
26
40
  url: string;
27
41
  headers?: Record<string, string>;
42
+ /**
43
+ * Per-server tool-call timeout in milliseconds. Overrides the
44
+ * MCP_TOOL_TIMEOUT environment variable for this server. Hard wall-clock
45
+ * limit per call; progress notifications do not extend it. Values below
46
+ * 1000ms are ignored (falls through to MCP_TOOL_TIMEOUT or the default).
47
+ */
48
+ timeout?: number;
28
49
  };
29
50
  export type McpSdkServerConfig = {
30
51
  type: 'sdk';
31
52
  name: string;
32
53
  };
54
+ export type McpToolRuntimeOverride = {
55
+ exposedName?: string;
56
+ alwaysLoad?: boolean;
57
+ };
33
58
  export type McpServerConfigForProcessTransport = McpStdioServerConfig | McpSSEServerConfig | McpHttpServerConfig | McpSdkServerConfig;
59
+ /** Internal SDK -> CLI wire shape after public tool policies are normalized. */
60
+ export type McpServerConfigForCliTransport = McpServerConfigForProcessTransport & {
61
+ toolOverrides?: Record<string, McpToolRuntimeOverride>;
62
+ };
34
63
  export type McpServerStatus = {
35
64
  name: string;
36
65
  status: 'connected' | 'failed' | 'needs-auth' | 'pending' | 'disabled';
@@ -18,6 +18,11 @@ export type SDKAssistantMessage = {
18
18
  message: BetaMessage;
19
19
  parent_tool_use_id: string | null;
20
20
  error?: SDKAssistantMessageError;
21
+ /**
22
+ * Present when an interrupt truncated the model stream before a stop reason
23
+ * arrived. The final content block may end mid-token.
24
+ */
25
+ aborted?: true;
21
26
  uuid: UUID;
22
27
  session_id: string;
23
28
  };
@@ -28,7 +33,17 @@ export type SDKUserMessage = {
28
33
  file_attachments?: SDKFileAttachment[];
29
34
  isSynthetic?: boolean;
30
35
  tool_use_result?: unknown;
36
+ /**
37
+ * Delivery priority. `next` is the default; `now` interrupts the active
38
+ * turn, while `later` waits for the session to become idle.
39
+ */
31
40
  priority?: 'now' | 'next' | 'later';
41
+ /**
42
+ * When false, do not start an assistant turn while the session is idle.
43
+ * Delivery still follows `priority`: `next` can inject at a safe boundary,
44
+ * `later` waits for idle, and `now` interrupts the active turn.
45
+ */
46
+ shouldQuery?: boolean;
32
47
  timestamp?: string;
33
48
  uuid?: UUID;
34
49
  session_id?: string;
@@ -40,7 +55,17 @@ export type SDKUserMessageReplay = {
40
55
  file_attachments?: SDKFileAttachment[];
41
56
  isSynthetic?: boolean;
42
57
  tool_use_result?: unknown;
58
+ /**
59
+ * Delivery priority. `next` is the default; `now` interrupts the active
60
+ * turn, while `later` waits for the session to become idle.
61
+ */
43
62
  priority?: 'now' | 'next' | 'later';
63
+ /**
64
+ * When false, do not start an assistant turn while the session is idle.
65
+ * Delivery still follows `priority`: `next` can inject at a safe boundary,
66
+ * `later` waits for idle, and `now` interrupts the active turn.
67
+ */
68
+ shouldQuery?: boolean;
44
69
  timestamp?: string;
45
70
  uuid: UUID;
46
71
  session_id: string;
@@ -60,7 +85,6 @@ export type SDKResultSuccess = {
60
85
  modelUsage: Record<string, ModelUsage>;
61
86
  permission_denials: SDKPermissionDenial[];
62
87
  error_code?: number;
63
- structured_output?: unknown;
64
88
  deferred_tool_use?: unknown;
65
89
  terminal_reason?: string | null;
66
90
  fast_mode_state?: FastModeState;
@@ -69,7 +93,7 @@ export type SDKResultSuccess = {
69
93
  };
70
94
  export type SDKResultError = {
71
95
  type: 'result';
72
- subtype: 'error_during_execution' | 'error_max_turns' | 'error_max_budget_usd' | 'error_max_structured_output_retries';
96
+ subtype: 'error_during_execution' | 'error_max_turns' | 'error_max_budget_usd';
73
97
  duration_ms: number;
74
98
  duration_api_ms: number;
75
99
  is_error: boolean;
@@ -117,6 +141,13 @@ export type SDKSystemMessage = {
117
141
  output_style: string;
118
142
  skills: string[];
119
143
  plugins: PluginInfo[];
144
+ /**
145
+ * Open protocol capability set advertised by the CLI.
146
+ *
147
+ * Consumers must check the capability required by each behavior and ignore
148
+ * unknown values.
149
+ */
150
+ capabilities?: string[];
120
151
  fast_mode_state?: FastModeState;
121
152
  uuid: UUID;
122
153
  session_id: string;
@@ -162,13 +193,6 @@ export type SDKAPIRetryMessage = {
162
193
  uuid: UUID;
163
194
  session_id: string;
164
195
  };
165
- export type SDKLocalCommandOutputMessage = {
166
- type: 'system';
167
- subtype: 'local_command_output';
168
- content: string;
169
- uuid: UUID;
170
- session_id: string;
171
- };
172
196
  export type SDKHookStartedMessage = {
173
197
  type: 'system';
174
198
  subtype: 'hook_started';
@@ -268,14 +292,6 @@ export type SDKSessionTitleChangedMessage = {
268
292
  uuid: UUID;
269
293
  session_id: string;
270
294
  };
271
- export type SDKBridgeStateMessage = {
272
- type: 'system';
273
- subtype: 'bridge_state';
274
- state: string;
275
- detail?: string;
276
- uuid: UUID;
277
- session_id: string;
278
- };
279
295
  export type SDKFilesPersistedEvent = {
280
296
  type: 'system';
281
297
  subtype: 'files_persisted';
@@ -334,4 +350,4 @@ export type SDKPermissionDeniedMessage = {
334
350
  decision_reason_type?: SDKPermissionDeniedReasonType;
335
351
  decision_reason?: string;
336
352
  };
337
- export type SDKMessage = SDKAssistantMessage | SDKUserMessage | SDKUserMessageReplay | SDKResultMessage | SDKSystemMessage | SDKPermissionDeniedMessage | SDKPartialAssistantMessage | SDKCompactBoundaryMessage | SDKStatusMessage | SDKAPIRetryMessage | SDKLocalCommandOutputMessage | SDKHookStartedMessage | SDKHookProgressMessage | SDKHookResponseMessage | SDKTaskNotificationMessage | SDKTaskStartedMessage | SDKTaskProgressMessage | SDKSessionStateChangedMessage | SDKSessionTitleChangedMessage | SDKBridgeStateMessage | SDKFilesPersistedEvent | SDKElicitationCompleteMessage | SDKPromptSuggestionMessage | SDKCloudAgentEventMessage;
353
+ export type SDKMessage = SDKAssistantMessage | SDKUserMessage | SDKUserMessageReplay | SDKResultMessage | SDKSystemMessage | SDKPermissionDeniedMessage | SDKPartialAssistantMessage | SDKCompactBoundaryMessage | SDKStatusMessage | SDKAPIRetryMessage | SDKHookStartedMessage | SDKHookProgressMessage | SDKHookResponseMessage | SDKTaskNotificationMessage | SDKTaskStartedMessage | SDKTaskProgressMessage | SDKSessionStateChangedMessage | SDKSessionTitleChangedMessage | SDKFilesPersistedEvent | SDKElicitationCompleteMessage | SDKPromptSuggestionMessage | SDKCloudAgentEventMessage;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * A server-side patch applied to the system prompt after model routing.
8
+ */
9
+ export type ModelPromptPatch = {
10
+ action: 'edit_system_prompt';
11
+ content: string;
12
+ };
13
+ /**
14
+ * Model routing key to the ordered prompt patches for that route.
15
+ *
16
+ * Route keys are opaque to the SDK and are forwarded without interpretation.
17
+ */
18
+ export type ModelPromptPatches = Record<string, ModelPromptPatch[]>;
@@ -21,5 +21,5 @@
21
21
  * `system/init` JSONL message. The SDK validates it against the
22
22
  * version it was built against using semver.
23
23
  */
24
- export declare const WIRE_PROTOCOL_VERSION: "1.0.0";
24
+ export declare const WIRE_PROTOCOL_VERSION: "1.1.0";
25
25
  export type WireProtocolVersion = string;
@@ -21,19 +21,22 @@
21
21
  * 3. Implements all Query interface methods for the consumer.
22
22
  */
23
23
  import type { DiagnosticsSink } from '../core/sdk-diagnostics.js';
24
+ import type { ModelPromptPatches } from '../protocol/model-prompt-patches.js';
24
25
  import type { Transport } from '../core/transport.js';
25
26
  import type { SDKMessage, SDKUserMessage } from '../types/messages.js';
26
27
  import type { InternalQuery, OnElicitation } from '../types/options.js';
27
28
  import type { FetchJobToken } from '../types/auth.js';
28
- import type { SDKControlInitializeResponse, SDKControlGetContextUsageResponse, SDKControlGenerateSessionTitleResponse, SDKControlAddDirectoriesResponse, SDKControlReloadPluginsResponse } from '../types/control.js';
29
+ import type { SDKControlInterruptResponse, SDKControlInitializeResponse, SDKControlGetContextUsageResponse, SDKControlGenerateSessionTitleResponse, SDKControlAddDirectoriesResponse, SDKControlReloadPluginsResponse } from '../types/control.js';
29
30
  import type { PermissionMode, CanUseTool } from '../types/permissions.js';
30
31
  import type { HookCallbackMatcher } from '../types/hooks.js';
31
32
  import type { HookEvent as InternalHookEvent } from '../protocol/index.js';
32
33
  import type { McpServerConfig, McpServerStatus, McpSetServersResult, OAuthToken } from '../types/mcp.js';
34
+ import type { McpToolRuntimeOverride } from '../protocol/mcp.js';
33
35
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
34
36
  import type { SdkMcpTransport } from '../mcp/sdk-mcp-transport.js';
35
37
  import { type PendingMcpResponse } from '../mcp/mcp-handler.js';
36
38
  import type { AgentDefinition, AgentInfo } from '../types/agents.js';
39
+ import type { SessionStore, SessionStoreFlush } from '../session/session-store.js';
37
40
  import type { PluginDetails } from '../types/plugins.js';
38
41
  import type { ModelInfo, SlashCommand, AccountInfo, UsageInfo } from '../types/common.js';
39
42
  import type { ModelPolicyProvider } from '../types/model-policy-provider.js';
@@ -42,7 +45,7 @@ import type { BYOKModelValidationInput, BYOKProviderInfo } from '../types/byok.j
42
45
  type InitConfig = {
43
46
  systemPrompt?: string;
44
47
  appendSystemPrompt?: string;
45
- planModeInstructions?: string;
48
+ modelRequestPatches?: ModelPromptPatches;
46
49
  agents?: Record<string, AgentDefinition>;
47
50
  skills?: string[];
48
51
  promptSuggestions?: boolean;
@@ -60,10 +63,10 @@ export declare class QueryRunner implements InternalQuery {
60
63
  private readonly sdkMcpServers;
61
64
  private readonly sdkMcpTransports;
62
65
  private readonly pendingMcpResponses;
66
+ private readonly sdkMcpToolOverrides;
63
67
  private readonly isSingleTurn;
64
68
  private readonly canUseTool?;
65
69
  private readonly abortController?;
66
- private readonly jsonSchema?;
67
70
  private readonly initConfig;
68
71
  private readonly onElicitation?;
69
72
  private readonly onAuthExpired?;
@@ -72,6 +75,7 @@ export declare class QueryRunner implements InternalQuery {
72
75
  private readonly controlRequestTimeoutMs;
73
76
  private readonly resolveModel?;
74
77
  private readonly resolveModelTimeoutMs;
78
+ private readonly transcriptMirrorBatcher?;
75
79
  private initResponse?;
76
80
  private initializationPromise?;
77
81
  private resultMessage?;
@@ -81,7 +85,7 @@ export declare class QueryRunner implements InternalQuery {
81
85
  private protocolHandshakeValidated;
82
86
  private firstResultReceived;
83
87
  private firstResultReceivedResolve?;
84
- constructor(transport: Transport, isSingleTurn: boolean, canUseTool?: CanUseTool, hooks?: Partial<Record<InternalHookEvent, HookCallbackMatcher[]>>, abortController?: AbortController, sdkMcpServers?: Map<string, McpServer>, jsonSchema?: Record<string, unknown>, initConfig?: InitConfig, onElicitation?: OnElicitation, diagnostics?: DiagnosticsSink, onAuthExpired?: () => void, controlRequestTimeoutMs?: number, sdkMcpTransports?: Map<string, SdkMcpTransport>, pendingMcpResponses?: Map<string, PendingMcpResponse>, fetchJobToken?: FetchJobToken, resolveModel?: ModelPolicyProvider, resolveModelTimeoutMs?: number);
88
+ constructor(transport: Transport, isSingleTurn: boolean, canUseTool?: CanUseTool, hooks?: Partial<Record<InternalHookEvent, HookCallbackMatcher[]>>, abortController?: AbortController, sdkMcpServers?: Map<string, McpServer>, initConfig?: InitConfig, onElicitation?: OnElicitation, diagnostics?: DiagnosticsSink, onAuthExpired?: () => void, controlRequestTimeoutMs?: number, sdkMcpTransports?: Map<string, SdkMcpTransport>, pendingMcpResponses?: Map<string, PendingMcpResponse>, fetchJobToken?: FetchJobToken, resolveModel?: ModelPolicyProvider, resolveModelTimeoutMs?: number, sessionStore?: SessionStore, sessionStoreFlush?: SessionStoreFlush, sdkMcpToolOverrides?: Record<string, Record<string, McpToolRuntimeOverride>>);
85
89
  private getRecord;
86
90
  private normalizeLogPreview;
87
91
  private extractMessagePreview;
@@ -191,7 +195,11 @@ export declare class QueryRunner implements InternalQuery {
191
195
  /**
192
196
  * Interrupt the current operation.
193
197
  */
194
- interrupt(): Promise<void>;
198
+ interrupt(): Promise<SDKControlInterruptResponse | undefined>;
199
+ /**
200
+ * Drop a UUID-stamped async user message while it is still queued.
201
+ */
202
+ cancelAsyncMessage(messageUuid: string): Promise<boolean>;
195
203
  /**
196
204
  * Set the permission mode.
197
205
  */
@@ -1,31 +1,5 @@
1
1
  import type { ForkSessionOptions, ForkSessionResult } from '../types/session.js';
2
2
  /**
3
- * Fork a session into a new independent session with fresh UUIDs.
4
- *
5
- * Creates a copy of the source session's JSONL file with all UUIDs
6
- * remapped to new values. This allows the forked session to diverge
7
- * from the original without sharing message identifiers.
8
- *
9
- * Optional parameters:
10
- * - `upToMessageId` — Only copy messages up to and including this message
11
- * - `title` — Set a custom title on the forked session
12
- * - `dir` — Restrict the session search to this working directory
13
- *
14
- * @param sessionId - The source session UUID to fork from
15
- * @param options - Fork options
16
- * @returns The new session's UUID
17
- * @throws Error if the source session is not found
18
- *
19
- * @example
20
- * ```ts
21
- * // Fork the entire session
22
- * const { sessionId: newId } = await forkSession('abc-123');
23
- *
24
- * // Fork up to a specific message with a custom title
25
- * const { sessionId } = await forkSession('abc-123', {
26
- * upToMessageId: 'msg-456',
27
- * title: 'Exploration branch',
28
- * });
29
- * ```
3
+ * Fork a session into a new independent session with remapped message IDs.
30
4
  */
31
5
  export declare function forkSession(sessionId: string, options?: ForkSessionOptions): Promise<ForkSessionResult>;
@@ -0,0 +1,10 @@
1
+ import type { SessionStore } from './session-store.js';
2
+ export type ImportSessionToStoreOptions = {
3
+ dir?: string;
4
+ includeSubagents?: boolean;
5
+ batchSize?: number;
6
+ };
7
+ /**
8
+ * Replay a local transcript and its subagent files into a SessionStore.
9
+ */
10
+ export declare function importSessionToStore(sessionId: string, store: SessionStore, options?: ImportSessionToStoreOptions): Promise<void>;
@@ -96,4 +96,6 @@ export declare function listSubagents(sessionId: string, options?: ListSubagents
96
96
  * @param options.offset - Number of messages to skip
97
97
  * @returns Array of session messages from the subagent
98
98
  */
99
- export declare function getSubagentMessages(sessionId: string, agentId: string, options?: GetSubagentMessagesOptions): Promise<SessionMessage[]>;
99
+ export declare function getSubagentMessages(sessionId: string, agentId: string, options?: GetSubagentMessagesOptions): Promise<SessionMessage[]>;
100
+ /** Delete a session and all child transcripts from a local or external store. */
101
+ export declare function deleteSession(sessionId: string, options?: SessionMutationOptions): Promise<void>;
@@ -0,0 +1,15 @@
1
+ import type { SessionStore } from './session-store.js';
2
+ export type MaterializedSession = {
3
+ configDir: string;
4
+ projectKey: string;
5
+ sessionId: string;
6
+ cleanup(): Promise<void>;
7
+ };
8
+ export declare function materializeSessionFromStore(options: {
9
+ store: SessionStore;
10
+ cwd?: string;
11
+ resume?: string;
12
+ continue?: boolean;
13
+ loadTimeoutMs?: number;
14
+ env?: Record<string, string | undefined>;
15
+ }): Promise<MaterializedSession | undefined>;
@@ -0,0 +1,45 @@
1
+ export type SessionStoreEntry = {
2
+ type: string;
3
+ uuid?: string;
4
+ timestamp?: string;
5
+ [key: string]: unknown;
6
+ };
7
+ export type SessionKey = {
8
+ projectKey: string;
9
+ sessionId: string;
10
+ /** Opaque transcript suffix such as `subagents/agent-<id>` (without `.jsonl`). */
11
+ subpath?: string;
12
+ };
13
+ export type SessionStoreFlush = 'batched' | 'eager';
14
+ export interface SessionStore {
15
+ append(key: SessionKey, entries: SessionStoreEntry[]): Promise<void>;
16
+ load(key: SessionKey): Promise<SessionStoreEntry[] | null>;
17
+ listSessions?(projectKey: string): Promise<Array<{
18
+ sessionId: string;
19
+ mtime: number;
20
+ }>>;
21
+ delete?(key: SessionKey): Promise<void>;
22
+ listSubkeys?(key: Omit<SessionKey, 'subpath'>): Promise<string[]>;
23
+ }
24
+ /** Reference store for tests, examples, and process-local integrations. */
25
+ export declare class InMemorySessionStore implements SessionStore {
26
+ private readonly entries;
27
+ private readonly keys;
28
+ private readonly modifiedAt;
29
+ private lastModifiedAt;
30
+ append(key: SessionKey, entries: SessionStoreEntry[]): Promise<void>;
31
+ load(key: SessionKey): Promise<SessionStoreEntry[] | null>;
32
+ listSessions(projectKey: string): Promise<Array<{
33
+ sessionId: string;
34
+ mtime: number;
35
+ }>>;
36
+ delete(key: SessionKey): Promise<void>;
37
+ listSubkeys(key: Omit<SessionKey, 'subpath'>): Promise<string[]>;
38
+ /** Return all entries for a key. Intended for tests and local development. */
39
+ getEntries(key: SessionKey): SessionStoreEntry[];
40
+ /** Number of stored main transcripts. */
41
+ get size(): number;
42
+ /** Remove all stored entries. */
43
+ clear(): void;
44
+ private deleteSerialized;
45
+ }
@@ -0,0 +1,25 @@
1
+ import type { DiagnosticsSink } from '../core/sdk-diagnostics.js';
2
+ import type { SDKMirrorErrorMessage } from '../types/messages.js';
3
+ import type { SessionKey, SessionStore, SessionStoreEntry, SessionStoreFlush } from './session-store.js';
4
+ export type TranscriptMirrorMessage = {
5
+ type: 'transcript_mirror';
6
+ filePath: string;
7
+ entries: SessionStoreEntry[];
8
+ };
9
+ export declare function isTranscriptMirrorMessage(value: unknown): value is TranscriptMirrorMessage;
10
+ export declare class TranscriptMirrorBatcher {
11
+ private readonly options;
12
+ private readonly states;
13
+ constructor(options: {
14
+ store: SessionStore;
15
+ flushMode: SessionStoreFlush;
16
+ onMirrorError: (message: SDKMirrorErrorMessage) => void;
17
+ diagnostics?: DiagnosticsSink;
18
+ appendTimeoutMs?: number;
19
+ retryDelaysMs?: readonly number[];
20
+ });
21
+ enqueue(message: TranscriptMirrorMessage): void;
22
+ flush(): Promise<void>;
23
+ private drain;
24
+ }
25
+ export declare function sessionKeyFromTranscriptPath(filePath: string): SessionKey;
@@ -7,8 +7,7 @@ export declare function homedir(): string;
7
7
  * Resolve the config directory that contains `projects/`.
8
8
  *
9
9
  * Resolution order:
10
- * 1. `QODER_CONFIG_DIR` — full path override (SDK-only escape hatch for
11
- * tests / sandboxed setups; qodercli does not read this). When set,
10
+ * 1. `QODER_CONFIG_DIR` — full path override shared with qodercli. When set,
12
11
  * `BRAND_CONFIG_DIR_INTERNAL` is NOT appended — the value is used as-is.
13
12
  * 2. `<homedir()>/<BRAND_CONFIG_DIR_INTERNAL>` — default, aligned with
14
13
  * qodercli's `Storage.getGlobalConfigDir()`.