@anthropic-ai/claude-agent-sdk 0.3.237 → 0.3.239

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.
package/sdk.d.ts CHANGED
@@ -1831,6 +1831,9 @@ export declare type Options = {
1831
1831
  * `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=false` env var, and when the user
1832
1832
  * has `promptSuggestionEnabled: false` in settings.json (the env var wins
1833
1833
  * over the setting).
1834
+ * - Also suppressed while the account is near or at its plan usage limit.
1835
+ * `CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=true` keeps them on in the
1836
+ * near-limit case; at the limit they stay off.
1834
1837
  * - Suggestions piggyback on the parent's prompt cache, making them nearly free.
1835
1838
  */
1836
1839
  promptSuggestions?: boolean;
@@ -2496,6 +2499,15 @@ export declare interface Query extends AsyncGenerator<SDKMessage, void> {
2496
2499
  * SDK-side, but callbacks should be idempotent per request_id since a
2497
2500
  * request whose response was lost in the gap will be dispatched again.
2498
2501
  *
2502
+ * Over stdio the CLI also re-registers this query's hooks from the
2503
+ * re-sent request (the response reports `hooks_applied: true`; CLIs that
2504
+ * predate that field ignore hooks here) and resolves any hook callback it
2505
+ * was still waiting on itself — cancelling it at this host, denying a
2506
+ * pending PreToolUse with a retry notice and blocking a pending prompt —
2507
+ * since it cannot tell whether the re-sent callback ids still name the
2508
+ * same hooks. Expect one denied-then-retried tool call or one prompt to
2509
+ * re-send if the call races an unanswered hook.
2510
+ *
2499
2511
  * Unlike {@link Query.initializationResult}, this always sends a fresh request
2500
2512
  * rather than returning the cached first-connect result.
2501
2513
  *
@@ -3114,7 +3126,7 @@ export declare type SDKAuthStatusMessage = {
3114
3126
  };
3115
3127
 
3116
3128
  /**
3117
- * The full set of live background tasks, emitted whenever membership changes (start, completion, kill, a foreground agent being backgrounded). A level signal, unlike the task_started/task_notification edge bookends: consumers that only need 'is background work running' should replace their set with each payload rather than pairing edges, so a missed bookend cannot wedge a stale running indicator. Ordering relative to the bookends for the same transition is unspecified (in practice the level precedes them) and the payload carries ids only, so do not correlate it with the edge stream. The level is per-process: nothing is emitted at startup, so consumers must reset to the empty set whenever the session's CLI process (re)starts and let the next membership change repopulate it.
3129
+ * The full set of live background tasks, emitted whenever membership changes (start, completion, kill, a foreground agent being backgrounded). A level signal, unlike the task_started/task_notification edge bookends: consumers that only need 'is background work running' should replace their set with each payload rather than pairing edges, so a missed bookend cannot wedge a stale running indicator. Ordering relative to the bookends for the same transition is unspecified (in practice the level precedes them) and the payload carries ids only, so do not correlate it with the edge stream. The level is per-process: nothing is emitted at startup, so consumers must reset to the empty set whenever the session's CLI process (re)starts and let the next membership change repopulate it. A host that re-initializes an already-running process (a repeated `initialize` control request, e.g. after reconnecting) is sent a snapshot of the current set right behind the success response to that request, even when it is empty, so it need not wait for a change; CLIs that predate this send nothing there.
3118
3130
  */
3119
3131
  export declare type SDKBackgroundTasksChangedMessage = {
3120
3132
  type: 'system';
@@ -3734,6 +3746,11 @@ export declare type SDKControlInitializeResponse = {
3734
3746
 
3735
3747
 
3736
3748
 
3749
+ /**
3750
+ * Whether the `hooks` this initialize carried were registered: true on a session's first initialize, and on a repeated initialize from the process that owns the CLI's stdin (its set replaces the one registered earlier); false when a repeated initialize's hooks were ignored (a client joining a remote session another client configured). Absent when the request carried no hooks, and on CLIs that predate the field — those ignored `hooks` on every repeated initialize.
3751
+ */
3752
+ hooks_applied?: boolean;
3753
+
3737
3754
 
3738
3755
 
3739
3756
  fast_mode_state?: coreTypes.FastModeState;
@@ -3752,7 +3769,7 @@ declare type SDKControlInterruptRequest = {
3752
3769
  subtype: 'interrupt';
3753
3770
 
3754
3771
  /**
3755
- * When true, the interrupt also cancels every uuid-stamped main-thread command still in the queue or already dequeued for the imminent turn but not yet reachable by the abort (the first-command prewait window) — the same set the response would otherwise list under `still_queued`. Each is closed with a terminal 'cancelled' lifecycle and listed on the response's `cancelled` field. `still_queued` is always empty. (The isFoldInFlight guard cancel_async_message uses does not apply here: this request also aborts the running turn, so a fold-in-flight uuid is never delivered and is swept with the rest. A fold-in-flight uuid's queued_command attachment may already appear in the aborted turn's transcript if the abort landed after the fold's attachment yield — pre-existing leave-queued semantics; it never runs as its own turn.) Uuid-less commands (task notifications) still in the queue are also dequeued but cannot be listed; a uuid-less command already in the prewait window is unreachable by either leg and still runs. When false or absent, queued commands survive the interrupt and are listed under `still_queued` — the interrupt_receipt_v1 contract is unchanged. A Stop-means-stop-everything client (a remote UI's Stop button) sets this true so one round-trip halts the session; a wrapper that wants per-uuid control leaves it false and follows up with cancel_async_message. Advertised by the `interrupt_cancel_queued_v1` capability on system/init; older CLIs ignore the field and behave as if false.
3772
+ * When true, the interrupt also cancels every uuid-stamped main-thread command still in the queue or already dequeued for the imminent turn but not yet reachable by the abort (the first-command prewait window) — the same set the response would otherwise list under `still_queued`. Each is closed with a terminal 'cancelled' lifecycle and listed on the response's `cancelled` field. `still_queued` is then empty, except that a client driving a hosted session lists there what it can no longer recall (a send already in flight to that session, or the first prompt the session was created with). (The isFoldInFlight guard cancel_async_message uses does not apply here: this request also aborts the running turn, so a fold-in-flight uuid is never delivered and is swept with the rest. A fold-in-flight uuid's queued_command attachment may already appear in the aborted turn's transcript if the abort landed after the fold's attachment yield — pre-existing leave-queued semantics; it never runs as its own turn.) Uuid-less commands (task notifications) still in the queue are also dequeued but cannot be listed; a uuid-less command already in the prewait window is unreachable by either leg and still runs. When false or absent, queued commands survive the interrupt and are listed under `still_queued` — the interrupt_receipt_v1 contract is unchanged. A Stop-means-stop-everything client (a remote UI's Stop button) sets this true so one round-trip halts the session; a wrapper that wants per-uuid control leaves it false and follows up with cancel_async_message. Advertised by the `interrupt_cancel_queued_v1` capability on system/init; older CLIs ignore the field and behave as if false.
3756
3773
  */
3757
3774
  cancel_queued?: boolean;
3758
3775
  };
@@ -3762,7 +3779,7 @@ declare type SDKControlInterruptRequest = {
3762
3779
  */
3763
3780
  export declare type SDKControlInterruptResponse = {
3764
3781
  /**
3765
- * Uuids of async user messages that survive this interrupt: commands still in the queue, plus any batch already dequeued for the imminent turn but not yet reachable by the abort. These WILL run unless cancelled first (or unless the request set cancel_queued:true, in which case this list is always empty — every uuid-stamped survivor is removed, emitted a terminal `cancelled` synchronously, and listed under `cancelled` instead). Cancellation granularity: uuids still in the queue are individually cancellable via cancel_async_message; once a batch is dequeued and coalesced into one turn, cancelling a NON-representative member uuid is a no-op (its content still runs), while cancelling the batch-representative uuid drops the WHOLE coalesced batch — in both cases the cancel response reports cancelled:false because the message was no longer in the queue. Coverage caveats: only uuid-STAMPED messages appear (a message enqueued without a uuid still runs but is never listed, so [] does not mean "nothing will run"); only main-thread messages are listed (subagent-addressed messages are out of scope); and the list may include internally-enqueued uuids the client never sent (cron triggers, auto-resume continuations) — ignore unknown uuids rather than treating them as an error. Ordering: on a clean interrupt this receipt is written before the interrupted turn result; a turn that crashes during interrupt handling emits its error result on a direct-write path that may precede the receipt. Snapshot is taken synchronously with abort processing — probing the queue after the interrupted result instead always loses the race against the drain loop, which starts the next queued turn immediately.
3782
+ * Uuids of async user messages that survive this interrupt: commands still in the queue, plus any batch already dequeued for the imminent turn but not yet reachable by the abort. These WILL run unless cancelled first (or unless the request set cancel_queued:true, in which case every uuid-stamped survivor this process holds is removed, emitted a terminal `cancelled` synchronously, and listed under `cancelled` instead — leaving here only what a client driving a hosted session can no longer recall: a send already in flight to that session, or the first prompt the session was created with). Cancellation granularity: uuids still in the queue are individually cancellable via cancel_async_message; once a batch is dequeued and coalesced into one turn, cancelling a NON-representative member uuid is a no-op (its content still runs), while cancelling the batch-representative uuid drops the WHOLE coalesced batch — in both cases the cancel response reports cancelled:false because the message was no longer in the queue. Coverage caveats: only uuid-STAMPED messages appear (a message enqueued without a uuid still runs but is never listed, so [] does not mean "nothing will run"); only main-thread messages are listed (subagent-addressed messages are out of scope); and the list may include internally-enqueued uuids the client never sent (cron triggers, auto-resume continuations) — ignore unknown uuids rather than treating them as an error. Ordering: on a clean interrupt this receipt is written before the interrupted turn result; a turn that crashes during interrupt handling emits its error result on a direct-write path that may precede the receipt. Snapshot is taken synchronously with abort processing — probing the queue after the interrupted result instead always loses the race against the drain loop, which starts the next queued turn immediately.
3766
3783
  */
3767
3784
  still_queued: string[];
3768
3785
  /**
@@ -4355,9 +4372,9 @@ export declare type SDKMessageOrigin = {
4355
4372
  } | {
4356
4373
  kind: 'task-notification';
4357
4374
  /**
4358
- * Present when the delivery is the fired stored prompt of a scheduled task/routine ('scheduled-trigger', stamped from server-asserted provenance; the schedule attests storage, not authorship), or a coordinator co-member SendMessage delivery ('peer-send-message': model-authored text from another of the same user's sessions, verified by the server-stamped receiver co-membership — task-notification for prompt authority, but distinguishable so the receive-side crossSessionInbound setting can apply to it). The harness frames a scheduled-trigger delivery as the session's assigned task instead of the generic background-notification frame. Absent on webhook, PR-steward, plugin, and background-event deliveries.
4375
+ * Present when the delivery is the fired stored prompt of a scheduled task/routine ('scheduled-trigger', stamped from server-asserted provenance; the schedule attests storage, not authorship), a coordinator co-member SendMessage delivery ('peer-send-message': model-authored text from another of the same user's sessions, verified by the server-stamped receiver co-membership — task-notification for prompt authority, but distinguishable so the receive-side crossSessionInbound setting can apply to it), or a Claude Code Projects delivery that Anthropic servers composed for the project's coordinator session and addressed to one of its thread sessions ('projects-relay': the thread's first message, or a relay carrying project messages — stamped from server-asserted provenance). The harness frames a scheduled-trigger delivery as the session's assigned task and a projects-relay delivery that carries the server's relay stamps as a message from the coordinator session (one without them keeps the generic background-notification frame), instead of the generic background-notification frame. Absent on webhook, PR-steward, plugin, and background-event deliveries.
4359
4376
  */
4360
- subkind?: 'scheduled-trigger' | 'peer-send-message';
4377
+ subkind?: 'scheduled-trigger' | 'peer-send-message' | 'projects-relay';
4361
4378
  } | {
4362
4379
  kind: 'coordinator';
4363
4380
  } | {
@@ -4601,6 +4618,7 @@ export declare type SDKResultError = {
4601
4618
  * Per-model totals for every model call made through the query pipeline during this query() call — main loop, Task subagents, sidechains, and internal calls such as compaction and Workflow agents. Cumulative across turns in streaming-input sessions: each result carries the running total so far, so read the latest result rather than summing across results. Internal helper calls outside the query pipeline (e.g. the permission classifier, token-count probes) are excluded; crash/startup-error results may carry zeroed usage, resumed sessions start fresh, and a mid-session /clear resets the running total. The correct field for token/cost accounting; treat it as an estimate, not a billing statement.
4602
4619
  */
4603
4620
  modelUsage: Record<string, ModelUsage>;
4621
+
4604
4622
  permission_denials: SDKPermissionDenial[];
4605
4623
  errors: string[];
4606
4624
  terminal_reason?: TerminalReason;
@@ -4646,6 +4664,7 @@ export declare type SDKResultSuccess = {
4646
4664
  * Per-model totals for every model call made through the query pipeline during this query() call — main loop, Task subagents, sidechains, and internal calls such as compaction and Workflow agents. Cumulative across turns in streaming-input sessions: each result carries the running total so far, so read the latest result rather than summing across results. Internal helper calls outside the query pipeline (e.g. the permission classifier, token-count probes) are excluded; crash/startup-error results may carry zeroed usage, resumed sessions start fresh, and a mid-session /clear resets the running total. The correct field for token/cost accounting; treat it as an estimate, not a billing statement.
4647
4665
  */
4648
4666
  modelUsage: Record<string, ModelUsage>;
4667
+
4649
4668
  permission_denials: SDKPermissionDenial[];
4650
4669
  structured_output?: unknown;
4651
4670
  deferred_tool_use?: SDKDeferredToolUse;
@@ -4796,7 +4815,7 @@ export declare type SDKSystemMessage = {
4796
4815
  */
4797
4816
  effort?: ('low' | 'medium' | 'high' | 'xhigh' | 'max') | null;
4798
4817
  /**
4799
- * Protocol capabilities this CLI supports, so SDK consumers can feature-detect instead of version-sniffing. Open set — ignore unknown values; check each capability for exactly the behavior you use. 'interrupt_receipt_v1' = the interrupt control_response success payload carries still_queued (uuids of async user messages that survive the interrupt). 'interrupt_cancel_queued_v1' = the interrupt control_request honors cancel_queued:true (queued and pending-dispatch commands are cancelled alongside the abort, listed on the response's cancelled field; still_queued is always empty — including any uuid that was mid-fold at the interrupt instant, since this request also aborts and the fold never delivers it). 'queued_notifications' = the CLI accepts inbound queued_notification stream messages and drains them via ReadNotifications (the CCR backend reads this from the persisted init event to decide whether it may send them). Absent on older CLIs.
4818
+ * Protocol capabilities this CLI supports, so SDK consumers can feature-detect instead of version-sniffing. Open set — ignore unknown values; check each capability for exactly the behavior you use. 'interrupt_receipt_v1' = the interrupt control_response success payload carries still_queued (uuids of async user messages that survive the interrupt). 'interrupt_cancel_queued_v1' = the interrupt control_request honors cancel_queued:true (queued and pending-dispatch commands are cancelled alongside the abort, listed on the response's cancelled field; still_queued is then empty — including any uuid that was mid-fold at the interrupt instant, since this request also aborts and the fold never delivers it — except that a client driving a hosted session lists there what it can no longer recall: a send already in flight to that session, or the first prompt the session was created with). 'queued_notifications' = the CLI accepts inbound queued_notification stream messages and drains them via ReadNotifications (the CCR backend reads this from the persisted init event to decide whether it may send them). Absent on older CLIs.
4800
4819
  */
4801
4820
  capabilities?: string[];
4802
4821
 
@@ -4858,6 +4877,14 @@ export declare type SDKTaskStartedMessage = {
4858
4877
  * Subagent type for Task tool subagents.
4859
4878
  */
4860
4879
  subagent_type?: string;
4880
+ /**
4881
+ * Whether the task was registered in the background (true) or in the foreground with the spawning tool call blocking on it (false). A resumed subagent is always registered in the background. A later move to the background arrives as task_updated patch.is_backgrounded. Set for local_agent and local_bash tasks.
4882
+ */
4883
+ is_backgrounded?: boolean;
4884
+ /**
4885
+ * Nesting depth of a spawned subagent (local_agent) task: 1 for a top-level spawn, N+1 when spawned from inside a depth-N agent. Not set on other tasks.
4886
+ */
4887
+ spawn_depth?: number;
4861
4888
  task_type?: string;
4862
4889
  /**
4863
4890
  * meta.name from the workflow script (e.g. 'spec'). Only set when task_type is 'local_workflow'.
@@ -5714,7 +5741,7 @@ export declare interface Settings {
5714
5741
  }[];
5715
5742
  };
5716
5743
  /**
5717
- * Git worktree configuration for --worktree flag.
5744
+ * Git worktree configuration: the CLI --worktree flag, EnterWorktree and agent isolation, plus the location Claude Code Desktop uses for SSH-session worktrees on this machine.
5718
5745
  */
5719
5746
  worktree?: {
5720
5747
  /**
@@ -5733,6 +5760,10 @@ export declare interface Settings {
5733
5760
  * Isolation mode for background sessions in this repo. 'worktree' (default) blocks Edit/Write in the main checkout until EnterWorktree is called. 'none' lets background jobs edit the working copy directly.
5734
5761
  */
5735
5762
  bgIsolation?: 'worktree' | 'none';
5763
+ /**
5764
+ * Directory under which Claude Code Desktop creates the worktrees of SSH sessions that run on this machine (an absolute path or one starting with ~/), instead of <project>/.claude/worktrees. Read by the desktop app from the SSH host user settings; a location chosen in the desktop app's SSH connection settings takes precedence. The CLI (--worktree, EnterWorktree, agent isolation) does not read it yet.
5765
+ */
5766
+ location?: string;
5736
5767
  };
5737
5768
  /**
5738
5769
  * Disable all hooks and statusLine execution
@@ -5893,6 +5924,10 @@ export declare interface Settings {
5893
5924
  headers?: {
5894
5925
  [k: string]: string;
5895
5926
  };
5927
+ /**
5928
+ * Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session's), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace.
5929
+ */
5930
+ headersHelper?: string;
5896
5931
  } | {
5897
5932
  source: 'github';
5898
5933
  /**
@@ -6077,6 +6112,16 @@ export declare interface Settings {
6077
6112
  description?: string;
6078
6113
  version?: string;
6079
6114
  strict?: boolean;
6115
+ /**
6116
+ * HTTP headers sent when downloading this entry's `archive` source.
6117
+ */
6118
+ headers?: {
6119
+ [k: string]: string;
6120
+ };
6121
+ /**
6122
+ * Command that prints a JSON object of HTTP headers for downloading this entry's `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path.
6123
+ */
6124
+ headersHelper?: string;
6080
6125
  }[];
6081
6126
  owner?: {
6082
6127
  /**
@@ -6123,6 +6168,10 @@ export declare interface Settings {
6123
6168
  headers?: {
6124
6169
  [k: string]: string;
6125
6170
  };
6171
+ /**
6172
+ * Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session's), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace.
6173
+ */
6174
+ headersHelper?: string;
6126
6175
  } | {
6127
6176
  source: 'github';
6128
6177
  /**
@@ -6307,6 +6356,16 @@ export declare interface Settings {
6307
6356
  description?: string;
6308
6357
  version?: string;
6309
6358
  strict?: boolean;
6359
+ /**
6360
+ * HTTP headers sent when downloading this entry's `archive` source.
6361
+ */
6362
+ headers?: {
6363
+ [k: string]: string;
6364
+ };
6365
+ /**
6366
+ * Command that prints a JSON object of HTTP headers for downloading this entry's `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path.
6367
+ */
6368
+ headersHelper?: string;
6310
6369
  }[];
6311
6370
  owner?: {
6312
6371
  /**
@@ -6348,6 +6407,10 @@ export declare interface Settings {
6348
6407
  headers?: {
6349
6408
  [k: string]: string;
6350
6409
  };
6410
+ /**
6411
+ * Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session's), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace.
6412
+ */
6413
+ headersHelper?: string;
6351
6414
  } | {
6352
6415
  source: 'github';
6353
6416
  /**
@@ -6532,6 +6595,16 @@ export declare interface Settings {
6532
6595
  description?: string;
6533
6596
  version?: string;
6534
6597
  strict?: boolean;
6598
+ /**
6599
+ * HTTP headers sent when downloading this entry's `archive` source.
6600
+ */
6601
+ headers?: {
6602
+ [k: string]: string;
6603
+ };
6604
+ /**
6605
+ * Command that prints a JSON object of HTTP headers for downloading this entry's `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path.
6606
+ */
6607
+ headersHelper?: string;
6535
6608
  }[];
6536
6609
  owner?: {
6537
6610
  /**
@@ -6563,6 +6636,10 @@ export declare interface Settings {
6563
6636
  headers?: {
6564
6637
  [k: string]: string;
6565
6638
  };
6639
+ /**
6640
+ * Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session's), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace.
6641
+ */
6642
+ headersHelper?: string;
6566
6643
  } | {
6567
6644
  source: 'github';
6568
6645
  /**
@@ -6747,6 +6824,16 @@ export declare interface Settings {
6747
6824
  description?: string;
6748
6825
  version?: string;
6749
6826
  strict?: boolean;
6827
+ /**
6828
+ * HTTP headers sent when downloading this entry's `archive` source.
6829
+ */
6830
+ headers?: {
6831
+ [k: string]: string;
6832
+ };
6833
+ /**
6834
+ * Command that prints a JSON object of HTTP headers for downloading this entry's `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path.
6835
+ */
6836
+ headersHelper?: string;
6750
6837
  }[];
6751
6838
  owner?: {
6752
6839
  /**
@@ -6778,6 +6865,10 @@ export declare interface Settings {
6778
6865
  headers?: {
6779
6866
  [k: string]: string;
6780
6867
  };
6868
+ /**
6869
+ * Command that prints a JSON object of HTTP headers (e.g. a short-lived auth token). Its output overrides `headers` and, like `headers`, is inherited by same-origin archive downloads from this marketplace. Runs from a fixed directory (the Claude config home, never the session's), so give a bare command found via PATH or an absolute path; it is re-run on later refreshes of this marketplace.
6870
+ */
6871
+ headersHelper?: string;
6781
6872
  } | {
6782
6873
  source: 'github';
6783
6874
  /**
@@ -6962,6 +7053,16 @@ export declare interface Settings {
6962
7053
  description?: string;
6963
7054
  version?: string;
6964
7055
  strict?: boolean;
7056
+ /**
7057
+ * HTTP headers sent when downloading this entry's `archive` source.
7058
+ */
7059
+ headers?: {
7060
+ [k: string]: string;
7061
+ };
7062
+ /**
7063
+ * Command that prints a JSON object of HTTP headers for downloading this entry's `archive` source. Runs only when a user explicitly installs or updates this plugin. Unlike a catalog entry, an entry written here does not need `strict: false`: it is declared in a settings file, which has no manifest fields to inline. A declaration in project settings is not operator-authored, so request-routing and client-identity header names are still filtered there. Use an absolute path.
7064
+ */
7065
+ headersHelper?: string;
6965
7066
  }[];
6966
7067
  owner?: {
6967
7068
  /**
@@ -7308,6 +7409,18 @@ export declare interface Settings {
7308
7409
  * Persisted effort level for supported models.
7309
7410
  */
7310
7411
  effortLevel?: 'low' | 'medium' | 'high' | 'xhigh';
7412
+ /**
7413
+ * Per-model settings keyed by canonical model name.
7414
+ */
7415
+ modelSettings?: {
7416
+ [k: string]: {
7417
+ /**
7418
+ * Persisted effort level for this model.
7419
+ */
7420
+ effortLevel?: 'low' | 'medium' | 'high' | 'xhigh';
7421
+ [k: string]: unknown;
7422
+ };
7423
+ };
7311
7424
  /**
7312
7425
  * Enable ultracode for the session: xhigh effort plus standing dynamic-workflow orchestration. Session-scoped — typically provided via --settings or the apply_flag_settings control request; interactive toggles never persist it. Requires workflows to be enabled and an xhigh-capable model.
7313
7426
  */
@@ -7521,6 +7634,10 @@ export declare interface Settings {
7521
7634
  * Key binding mode for the prompt input
7522
7635
  */
7523
7636
  editorMode?: 'normal' | 'vim';
7637
+ /**
7638
+ * Which conventions the prompt's word-editing keys follow: "readline" matches Bash and other readline programs (Ctrl+W deletes back to the previous whitespace; Alt+F and Alt+D stop at the end of the current word and Ctrl+Y can paste back what Alt+D deleted; for Alt+B, Alt+F, Alt+D, Ctrl/Option+Arrow and Option/Ctrl+Backspace a word is a run of letters and digits, so punctuation separates words); "classic" (default) keeps Claude Code's long-standing behavior (Ctrl+W deletes the previous word; the word keys use Unicode word segmentation, so foo_bar and 3.14 are one word)
7639
+ */
7640
+ keybindingFlavor?: 'classic' | 'readline';
7524
7641
  /**
7525
7642
  * Vim INSERT-mode key-sequence remaps, e.g. {"jj": "<Esc>"}. Each key is exactly two printable characters typed in sequence; "<Esc>" (return to NORMAL mode) is the only supported target. Applies when editorMode is "vim".
7526
7643
  */
@@ -8096,13 +8213,17 @@ export declare type UserPromptExpansionHookInput = BaseHookInput & {
8096
8213
  export declare type UserPromptExpansionHookSpecificOutput = {
8097
8214
  hookEventName: 'UserPromptExpansion';
8098
8215
  additionalContext?: string;
8216
+ /**
8217
+ * When decision is "block", omit the original prompt from the block message
8218
+ */
8219
+ suppressOriginalPrompt?: boolean;
8099
8220
  };
8100
8221
 
8101
8222
  export declare type UserPromptSubmitHookInput = BaseHookInput & {
8102
8223
  hook_event_name: 'UserPromptSubmit';
8103
8224
  prompt: string;
8104
8225
  /**
8105
- * Who authored/injected the prompt: `user` = submitted from the interactive composer, `sdk` = non-interactive entrypoint (`-p` / Agent SDK), `loop_wakeup` = dynamic /loop wakeup, `schedule_wakeup` = scheduled-task fire (CronCreate/routine), `system` = other machine-injected turns (peer/channel messages, task notifications, auto-continuation), `poll_event` = the poll-event channel enqueue-time pass (the hook fires when the host submits an event, before its delivery ack exists — a blocking verdict rejects the event). Currently only set for Anthropic-internal sessions while the field is trialed; external payloads omit it.
8226
+ * Who authored/injected the prompt: `user` = submitted from the interactive composer, `sdk` = non-interactive entrypoint (`-p` / Agent SDK), `loop_wakeup` = dynamic /loop wakeup, `schedule_wakeup` = scheduled-task fire (CronCreate/routine), `system` = other machine-injected turns (peer/channel messages, task notifications, auto-continuation), `poll_event` = the poll-event channel enqueue-time pass (the hook fires when the host submits an event, before its delivery ack exists — a blocking verdict rejects the event). Payloads may omit it while the field rolls out.
8106
8227
  */
8107
8228
  source?: 'user' | 'sdk' | 'system' | 'loop_wakeup' | 'schedule_wakeup' | 'poll_event';
8108
8229
  session_title?: string;