@qoder-ai/qoder-agent-sdk 1.0.54 → 1.0.56

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.
@@ -122,6 +122,7 @@ export type SDKControlInitializeRequest = {
122
122
  sdkMcpServers?: string[];
123
123
  sdkMcpToolOverrides?: Record<string, Record<string, McpToolRuntimeOverride>>;
124
124
  promptSuggestions?: boolean;
125
+ includeShellProgress?: boolean;
125
126
  hostActions?: Record<string, never>;
126
127
  goalMaxTurns?: number;
127
128
  supportsCatalogReadyInitialize?: boolean;
@@ -190,6 +191,8 @@ export type SDKControlGenerateSessionTitleRequest = {
190
191
  type: 'generate_session_title';
191
192
  description: string;
192
193
  persist?: boolean;
194
+ /** Opaque per-turn inference identity; defaults to options.customContext. */
195
+ custom_context?: Record<string, string>;
193
196
  };
194
197
  export type SDKControlGenerateSessionTitleResponse = {
195
198
  title: string | null;
@@ -207,6 +210,8 @@ export type AskSideQuestionOptions = {
207
210
  signal?: AbortSignal;
208
211
  /** Previous side-question exchanges to include as local context. */
209
212
  history?: readonly SideQuestionHistoryEntry[];
213
+ /** Overrides options.customContext for this control request only. */
214
+ customContext?: Record<string, string>;
210
215
  };
211
216
  export type SideQuestionRefusalFallback = {
212
217
  originalModel: string;
@@ -223,6 +228,8 @@ export type SDKControlSideQuestionRequest = {
223
228
  subtype: 'side_question';
224
229
  question: string;
225
230
  history?: SideQuestionHistoryEntry[];
231
+ /** Opaque per-turn inference identity; defaults to options.customContext. */
232
+ custom_context?: Record<string, string>;
226
233
  };
227
234
  export type SDKControlSideQuestionResponse = {
228
235
  response: string | null;
@@ -829,6 +836,8 @@ export type SDKControlSetGoalRequest = {
829
836
  objective?: string;
830
837
  status?: SDKGoalStatus;
831
838
  credits_budget?: number | null;
839
+ /** Opaque per-turn inference identity used by goal kickoff turns. */
840
+ custom_context?: Record<string, string>;
832
841
  };
833
842
  export type SDKControlSetGoalResponse = {
834
843
  goal: SDKGoalSnapshot | null;
@@ -22,7 +22,7 @@ export type { EffectiveMemoryConfig, MemoryConsumptionFile, MemoryConsumptionRes
22
22
  export type { EffectiveEvolutionConfig, EffectiveSkillEvolutionConfig, SerializableEvolutionConfig, SerializableSkillEvolutionConfig, SerializableSkillEvolutionGenerationOptions, SkillEvolutionGateInput, SkillEvolutionGateResult, SkillEvolutionMode, SkillEvolutionResult, SkillEvolutionSuggestion, } from './skill-evolution.js';
23
23
  export type { PermissionMode, PermissionBehavior, PermissionScope, CanUseToolPermissionKind, CanUseToolPermissionOption, CanUseToolPermissionDetails, PermissionDecisionClassification, PermissionUpdateDestination, PermissionRuleValue, PermissionUpdate, PermissionResult, } from './permissions.js';
24
24
  export type { McpStdioServerConfig, McpSSEServerConfig, McpHttpServerConfig, McpSdkServerConfig, McpServerConfigForProcessTransport, McpServerStatus, McpServerStatusConfig, McpSetServersResult, OAuthToken, } from './mcp.js';
25
- export type { SDKAssistantMessage, SDKToolNonExecutionKind, SDKToolResultMeta, SDKMessageOrigin, SDKSelectedSkill, SDKUserMessage, SDKUserMessageReplay, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKFileAttachment, SDKSystemMessage, SDKArtifactInfo, SDKArtifactUpdateMessage, SDKAvailableModelsUpdateMessage, SDKCommandsChangedMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKStatusMessage, SDKAPIRetryMessage, SDKModelQueueStatusMessage, SDKControlRequestProgressMessage, SDKCommandLifecycleMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKTaskUpdatedMessage, SDKBackgroundTasksChangedMessage, SDKSessionStateChangedMessage, SDKPlanModeChangedMessage, SDKGoalUpdatedMessage, SDKGoalClearedMessage, SDKSessionTitleChangedMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKMemoryGenerationMessage, SDKMemoryConsumptionMessage, SDKSkillEvolutionMessage, SDKAgentsMdSizeWarningMessage, SDKPermissionDenial, SDKPermissionDeniedMessage, SDKPermissionDeniedReasonType, SDKMessage, } from './messages.js';
25
+ export type { SDKAssistantMessage, SDKToolNonExecutionKind, SDKToolResultMeta, SDKMessageOrigin, SDKSelectedSkill, SDKUserMessage, SDKUserMessageReplay, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKFileAttachment, SDKSystemMessage, SDKArtifactInfo, SDKArtifactUpdateMessage, SDKAvailableModelsUpdateMessage, SDKCommandsChangedMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKStatusMessage, SDKAPIRetryMessage, SDKModelQueueStatusMessage, SDKControlRequestProgressMessage, SDKCommandLifecycleMessage, SDKToolProgressMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKTaskUpdatedMessage, SDKBackgroundTasksChangedMessage, SDKSessionStateChangedMessage, SDKPlanModeChangedMessage, SDKGoalUpdatedMessage, SDKGoalClearedMessage, SDKSessionTitleChangedMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKMemoryGenerationMessage, SDKMemoryConsumptionMessage, SDKSkillEvolutionMessage, SDKAgentsMdSizeWarningMessage, SDKPermissionDenial, SDKPermissionDeniedMessage, SDKPermissionDeniedReasonType, SDKMessage, } from './messages.js';
26
26
  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';
27
27
  export type { AgentMcpServerSpec, AgentDefinition, AgentInfo, AgentMemoryScope, } from './agents.js';
28
28
  export { QoderModelPurpose } from './control.js';
@@ -615,4 +615,28 @@ export type SDKCommandsChangedMessage = {
615
615
  uuid: UUID;
616
616
  session_id: string;
617
617
  };
618
- export type SDKMessage = SDKAgentsMdSizeWarningMessage | SDKAssistantMessage | SDKUserMessage | SDKUserMessageReplay | SDKResultMessage | SDKSystemMessage | SDKArtifactUpdateMessage | SDKAvailableModelsUpdateMessage | SDKCommandsChangedMessage | SDKPermissionDeniedMessage | SDKPartialAssistantMessage | SDKCompactBoundaryMessage | SDKStatusMessage | SDKAPIRetryMessage | SDKModelQueueStatusMessage | SDKControlRequestProgressMessage | SDKCommandLifecycleMessage | SDKHookStartedMessage | SDKHookProgressMessage | SDKHookResponseMessage | SDKTaskNotificationMessage | SDKTaskStartedMessage | SDKTaskProgressMessage | SDKTaskUpdatedMessage | SDKBackgroundTasksChangedMessage | SDKSessionStateChangedMessage | SDKPlanModeChangedMessage | SDKGoalUpdatedMessage | SDKGoalClearedMessage | SDKSessionTitleChangedMessage | SDKFilesPersistedEvent | SDKElicitationCompleteMessage | SDKPromptSuggestionMessage | SDKCloudAgentEventMessage | SDKMemoryGenerationMessage | SDKMemoryConsumptionMessage | SDKSkillEvolutionMessage;
618
+ /** Tool progress; optional shell output is a bounded replacement snapshot, never an append delta. */
619
+ export type SDKToolProgressMessage = {
620
+ type: 'tool_progress';
621
+ uuid: string;
622
+ session_id: string;
623
+ tool_use_id: string;
624
+ tool_name: string;
625
+ parent_tool_use_id: string | null;
626
+ elapsed_time_seconds: number;
627
+ task_id?: string;
628
+ heartbeat?: boolean;
629
+ /** Shell snapshot identity and ordering; absent on elapsed-only notifications. */
630
+ execution_id?: string;
631
+ progress_sequence?: number;
632
+ phase?: 'running' | 'ended';
633
+ started_at_ms?: number;
634
+ elapsed_ms?: number;
635
+ /** UTF-8 preview capped at 4096 bytes. Totals describe the complete output. */
636
+ output?: string;
637
+ total_bytes?: number;
638
+ /** Omitted when the preview is truncated and the producer only has an estimate. */
639
+ total_lines?: number;
640
+ preview_truncated?: boolean;
641
+ };
642
+ export type SDKMessage = SDKToolProgressMessage | SDKAgentsMdSizeWarningMessage | SDKAssistantMessage | SDKUserMessage | SDKUserMessageReplay | SDKResultMessage | SDKSystemMessage | SDKArtifactUpdateMessage | SDKAvailableModelsUpdateMessage | SDKCommandsChangedMessage | SDKPermissionDeniedMessage | SDKPartialAssistantMessage | SDKCompactBoundaryMessage | SDKStatusMessage | SDKAPIRetryMessage | SDKModelQueueStatusMessage | SDKControlRequestProgressMessage | SDKCommandLifecycleMessage | SDKHookStartedMessage | SDKHookProgressMessage | SDKHookResponseMessage | SDKTaskNotificationMessage | SDKTaskStartedMessage | SDKTaskProgressMessage | SDKTaskUpdatedMessage | SDKBackgroundTasksChangedMessage | SDKSessionStateChangedMessage | SDKPlanModeChangedMessage | SDKGoalUpdatedMessage | SDKGoalClearedMessage | SDKSessionTitleChangedMessage | SDKFilesPersistedEvent | SDKElicitationCompleteMessage | SDKPromptSuggestionMessage | SDKCloudAgentEventMessage | SDKMemoryGenerationMessage | SDKMemoryConsumptionMessage | SDKSkillEvolutionMessage;
@@ -57,6 +57,7 @@ type InitConfig = {
57
57
  skills?: string[];
58
58
  planMode?: boolean;
59
59
  promptSuggestions?: boolean;
60
+ includeShellProgress?: boolean;
60
61
  hostActions?: Record<string, never>;
61
62
  goalMaxTurns?: number;
62
63
  enableFileCheckpointing?: boolean;
@@ -133,6 +134,11 @@ export declare class QueryRunner implements InternalQuery {
133
134
  * `--plugin-dir` 配置的插件。详见 DaemonAccountQueryPlane 的头注释。
134
135
  */
135
136
  private readonly daemonAccountQueries?;
137
+ /**
138
+ * daemon 绑定时读取当前 daemon 级代理。存在即表示本 Query 不能单独切代理:
139
+ * `setProxy` 只允许与 daemon 当前值一致(no-op),不一致直接报错。
140
+ */
141
+ private readonly daemonProxyProvider?;
136
142
  private resolveStreamInitialization;
137
143
  private initResponse?;
138
144
  private latestCommands;
@@ -160,7 +166,7 @@ export declare class QueryRunner implements InternalQuery {
160
166
  private closePromise?;
161
167
  private sessionStoreForkBarrierComplete;
162
168
  private inputEnded;
163
- 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>>, fetchServiceAccountToken?: FetchServiceAccountToken, memoryCallbacks?: MemoryRuntimeCallbacks, skillEvolutionCallbacks?: SkillEvolutionRuntimeCallbacks, resolveSessionArtifacts?: ResolveSessionArtifacts, hostActionFallback?: (event: HostActionEvent) => Promise<void>, hostActionDirect?: boolean, daemonAccountQueries?: DaemonAccountQueryPlane);
169
+ 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>>, fetchServiceAccountToken?: FetchServiceAccountToken, memoryCallbacks?: MemoryRuntimeCallbacks, skillEvolutionCallbacks?: SkillEvolutionRuntimeCallbacks, resolveSessionArtifacts?: ResolveSessionArtifacts, hostActionFallback?: (event: HostActionEvent) => Promise<void>, hostActionDirect?: boolean, daemonAccountQueries?: DaemonAccountQueryPlane, daemonProxyProvider?: () => string | null);
164
170
  private getRecord;
165
171
  private normalizeLogPreview;
166
172
  private extractMessagePreview;
@@ -307,6 +313,7 @@ export declare class QueryRunner implements InternalQuery {
307
313
  objective?: string;
308
314
  status?: SDKGoalStatus;
309
315
  creditsBudget?: number | null;
316
+ customContext?: Record<string, string>;
310
317
  }): Promise<SDKGoalSnapshot | null>;
311
318
  setGoalMaxTurns(maxTurns: number | null): Promise<number>;
312
319
  /** 显式用户恢复,不通过 setGoal 激活来隐式增加轮次预算。 */
@@ -341,6 +348,7 @@ export declare class QueryRunner implements InternalQuery {
341
348
  */
342
349
  generateSessionTitle(description: string, options?: {
343
350
  persist?: boolean;
351
+ customContext?: Record<string, string>;
344
352
  }): Promise<SDKControlGenerateSessionTitleResponse['title']>;
345
353
  askSideQuestion(question: string, options?: AskSideQuestionOptions): Promise<SideQuestionResult | null>;
346
354
  /**
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "version": 1,
3
3
  "brand": "global",
4
- "sdkVersion": "1.0.54",
5
- "qoderCliVersion": "1.1.74",
4
+ "sdkVersion": "1.0.56",
5
+ "qoderCliVersion": "1.1.78",
6
6
  "defaultTransport": "worker",
7
7
  "workerRuntime": {
8
8
  "packaged": false,
9
9
  "delivery": "install",
10
10
  "source": "qodercli-worker-runtime",
11
- "urlTemplate": "https://download.qoder.com/qodercli/releases/1.1.74/qodercli-worker-runtime-{target}.tgz",
11
+ "urlTemplate": "https://download.qoder.com/qodercli/releases/1.1.78/qodercli-worker-runtime-{target}.tgz",
12
12
  "artifactNameTemplate": "qodercli-worker-runtime-{target}.tgz",
13
- "sdkVersion": "1.0.54",
14
- "qoderCliVersion": "1.1.74"
13
+ "sdkVersion": "1.0.56",
14
+ "qoderCliVersion": "1.1.78"
15
15
  }
16
16
  }
@@ -9,7 +9,7 @@ import type { SDKMessage as ProtocolSDKMessage, SDKStatusMessage as ProtocolSDKS
9
9
  import type { MessageParam, UUID } from './common.js';
10
10
  import type { PermissionMode } from './permissions.js';
11
11
  import type { SessionKey } from '../session/session-store.js';
12
- export type { SDKAssistantMessage, SDKArtifactInfo, SDKArtifactUpdateMessage, SDKAvailableModelsUpdateMessage, SDKCommandsChangedMessage, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKAPIRetryMessage, SDKModelQueueStatusMessage, SDKControlRequestProgressMessage, SDKCommandLifecycleMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKTaskUpdatedMessage, SDKBackgroundTasksChangedMessage, SDKSessionStateChangedMessage, SDKPlanModeChangedMessage, SDKSessionTitleChangedMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKMemoryGenerationMessage, SDKMemoryConsumptionMessage, SDKSkillEvolutionMessage, SDKAgentsMdSizeWarningMessage, SDKPermissionDenial, SDKMessageOrigin, SDKSelectedSkill, SDKToolNonExecutionKind, SDKToolResultMeta, } from '../protocol/index.js';
12
+ export type { SDKAssistantMessage, SDKArtifactInfo, SDKArtifactUpdateMessage, SDKAvailableModelsUpdateMessage, SDKCommandsChangedMessage, SDKResultSuccess, SDKResultError, SDKResultMessage, SDKPartialAssistantMessage, SDKCompactBoundaryMessage, SDKAPIRetryMessage, SDKModelQueueStatusMessage, SDKControlRequestProgressMessage, SDKCommandLifecycleMessage, SDKToolProgressMessage, SDKHookStartedMessage, SDKHookProgressMessage, SDKHookResponseMessage, SDKTaskNotificationMessage, SDKTaskStartedMessage, SDKTaskProgressMessage, SDKTaskUpdatedMessage, SDKBackgroundTasksChangedMessage, SDKSessionStateChangedMessage, SDKPlanModeChangedMessage, SDKSessionTitleChangedMessage, SDKFilesPersistedEvent, SDKElicitationCompleteMessage, SDKPromptSuggestionMessage, SDKCloudAgentEventMessage, SDKMemoryGenerationMessage, SDKMemoryConsumptionMessage, SDKSkillEvolutionMessage, SDKAgentsMdSizeWarningMessage, SDKPermissionDenial, SDKMessageOrigin, SDKSelectedSkill, SDKToolNonExecutionKind, SDKToolResultMeta, } from '../protocol/index.js';
13
13
  export type SDKUserMessage = {
14
14
  type: 'user';
15
15
  message: MessageParam;
@@ -252,6 +252,8 @@ export type Options = {
252
252
  closeGraceMs?: number;
253
253
  includePartialMessages?: boolean;
254
254
  includeHookEvents?: boolean;
255
+ /** Opt in to bounded foreground shell previews via tool_progress on supported daemons. Defaults to off. */
256
+ includeShellProgress?: boolean;
255
257
  maxTurns?: number;
256
258
  /**
257
259
  * Maximum turns copied into Goals created later in this Query.
@@ -130,9 +130,26 @@ export type PluginValidationReport = {
130
130
  };
131
131
  resources?: PluginResources;
132
132
  };
133
+ /**
134
+ * The daemon surface `validatePlugin` needs. A real `Daemon` satisfies it
135
+ * structurally; hosts inject their handle so validation can run in-process.
136
+ */
137
+ export type PluginValidationDaemon = {
138
+ readonly state: string;
139
+ supportsCapability(capability: string): boolean;
140
+ validatePlugins(paths: readonly string[], options?: {
141
+ configDir?: string;
142
+ }): Promise<PluginValidationReport[]>;
143
+ };
133
144
  export type ValidatePluginOptions = {
134
145
  /** Optional qodercli executable or qoder Worker runtime entry override. */
135
146
  cliPath?: string;
136
147
  env?: Record<string, string>;
137
148
  signal?: AbortSignal;
149
+ /**
150
+ * Optional daemon handle. When it is ready and advertises
151
+ * `daemon_validate_plugins_v1`, validation runs inside the daemon instead of
152
+ * spawning a Worker process; otherwise it falls back transparently.
153
+ */
154
+ daemon?: PluginValidationDaemon;
138
155
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qoder-ai/qoder-agent-sdk",
3
- "version": "1.0.54",
3
+ "version": "1.0.56",
4
4
  "description": "TypeScript SDK for building Qoder-powered coding agents.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -50,7 +50,7 @@
50
50
  "peerDependencies": {
51
51
  "zod": "^3.25.0 || ^4.0.0"
52
52
  },
53
- "qoderCliVersion": "1.1.74",
53
+ "qoderCliVersion": "1.1.78",
54
54
  "qoderSdkBrand": "global",
55
55
  "license": "SEE LICENSE IN LICENSE"
56
56
  }