@anthropic-ai/claude-agent-sdk 0.3.251 → 0.3.257

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
@@ -11,7 +11,7 @@ import type { ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
11
11
  import type { UUID } from 'crypto';
12
12
  import type { Writable } from 'stream';
13
13
  import * as z from 'zod/v4';
14
- import type { ZodRawShape } from 'zod';
14
+ import type { ZodRawShape } from 'zod/v3';
15
15
  import type { ZodRawShape as ZodRawShape_2 } from 'zod/v4';
16
16
 
17
17
  export declare class AbortError extends Error {
@@ -430,6 +430,7 @@ declare namespace coreTypes {
430
430
  SDKHookStartedMessage,
431
431
  SDKInformationalMessage,
432
432
  SDKLocalCommandOutputMessage,
433
+ SDKMcpResourceLink,
433
434
  SDKMemoryRecallMessage,
434
435
  SDKMessageOrigin,
435
436
  SDKMessage,
@@ -1306,6 +1307,10 @@ export declare type ModelInfo = {
1306
1307
  export declare type ModelUsage = {
1307
1308
  inputTokens: number;
1308
1309
  outputTokens: number;
1310
+ /**
1311
+ * Thinking tokens, already counted inside outputTokens. Counts only turns run on CLI versions that record this field: absent when none did, and partial for a resumed session that began on an older version.
1312
+ */
1313
+ thinkingTokens?: number;
1309
1314
  cacheReadInputTokens: number;
1310
1315
  cacheCreationInputTokens: number;
1311
1316
  webSearchRequests: number;
@@ -2134,7 +2139,7 @@ export declare type Options = {
2134
2139
  *
2135
2140
  * @example Custom prompt with cache boundary
2136
2141
  * ```typescript
2137
- * import { SYSTEM_PROMPT_DYNAMIC_BOUNDARY } from '@anthropic-ai/claude-code'
2142
+ * import { SYSTEM_PROMPT_DYNAMIC_BOUNDARY } from '@anthropic-ai/claude-agent-sdk'
2138
2143
  * systemPrompt: [
2139
2144
  * staticInstructions,
2140
2145
  * SYSTEM_PROMPT_DYNAMIC_BOUNDARY,
@@ -2159,12 +2164,62 @@ export declare type Options = {
2159
2164
  * excludeDynamicSections: true,
2160
2165
  * }
2161
2166
  * ```
2167
+ *
2168
+ * `snapshot` — whether the conversation's system prompt is recorded once (in
2169
+ * the session transcript) and reused verbatim on every later request and
2170
+ * `resume` / `continue`, instead of being rendered fresh each time.
2171
+ * **Recommended: `snapshot: true`.** A system prompt that changes
2172
+ * mid-conversation (a CLI upgrade between launches, a flag flip, a different
2173
+ * `append`) invalidates the prompt prefix and, with extended thinking,
2174
+ * discards the model's earlier reasoning; a recorded prompt cannot change
2175
+ * until the conversation is compacted. (It also keeps the API prompt-cache
2176
+ * prefix stable.)
2177
+ *
2178
+ * How it interacts with `append` (and a custom `prompt`):
2179
+ * - **Omitted (default):** passing an `append` or a custom prompt turns the
2180
+ * recording off, so your appended text is applied fresh on every launch —
2181
+ * today's behavior. Only the bare `claude_code` preset is recorded by
2182
+ * default.
2183
+ * - **`snapshot: true`:** if the conversation already has a recorded prompt,
2184
+ * that record is sent as-is (a different `append` or `prompt` passed on a
2185
+ * later launch of the same session is ignored until compaction or a new
2186
+ * session); otherwise Claude Code renders its prompt with your `append`
2187
+ * included, sends that, and records it for the rest of the conversation.
2188
+ * - **`snapshot: false`:** never record; render fresh every request.
2189
+ * A bare string / `string[]` prompt is always `false`; use
2190
+ * `{ type: 'custom', prompt, snapshot: true }` to opt a custom prompt in.
2191
+ * With a recorded prompt, a mid-session model switch or `set_settings`
2192
+ * agent/system-prompt change does not change the prompt either; it takes
2193
+ * effect at the next compaction or in a new session. System-prompt
2194
+ * recording is rolling out: where it is not yet enabled for the account
2195
+ * (and on Bedrock / Vertex / Foundry today) `snapshot` is accepted and has no
2196
+ * effect, so it is safe to set now.
2197
+ *
2198
+ * @example Recommended: preset with an append, recorded for the conversation
2199
+ * ```typescript
2200
+ * systemPrompt: {
2201
+ * type: 'preset',
2202
+ * preset: 'claude_code',
2203
+ * append: 'Always explain your reasoning.',
2204
+ * snapshot: true,
2205
+ * }
2206
+ * ```
2207
+ *
2208
+ * @example Custom prompt, recorded for the conversation
2209
+ * ```typescript
2210
+ * systemPrompt: { type: 'custom', prompt: 'You are a release bot.', snapshot: true }
2211
+ * ```
2162
2212
  */
2163
2213
  systemPrompt?: string | string[] | {
2214
+ type: 'custom';
2215
+ prompt: string | string[];
2216
+ snapshot?: boolean;
2217
+ } | {
2164
2218
  type: 'preset';
2165
2219
  preset: 'claude_code';
2166
2220
  append?: string;
2167
2221
  excludeDynamicSections?: boolean;
2222
+ snapshot?: boolean;
2168
2223
  };
2169
2224
  /**
2170
2225
  * Custom title for a new session. When provided, the session uses this title
@@ -2616,6 +2671,17 @@ export declare interface Query extends AsyncGenerator<SDKMessage, void> {
2616
2671
  applyFlagSettings(settings: {
2617
2672
  [K in keyof Settings]?: K extends 'effortLevel' ? EffortLevel | null : Settings[K] | null;
2618
2673
  }): Promise<void>;
2674
+ /**
2675
+ * Merge settings into a settings FILE through the CLI's own writer — the
2676
+ * same path /config uses (canonical store root, gitignore upkeep,
2677
+ * hardened write) — and live-apply them. Unlike applyFlagSettings, which
2678
+ * only touches the session-scoped flag layer. The handler accepts only an
2679
+ * explicit key allowlist (currently just outputStyle) with string values
2680
+ * — deletion is not supported — and refuses remote transports and
2681
+ * sessions whose --setting-sources exclude the target source. Rejects
2682
+ * with the gate's or writer's error otherwise.
2683
+ */
2684
+ updateSettings(source: 'localSettings', settings: Record<string, unknown>): Promise<void>;
2619
2685
  /**
2620
2686
  * Get the full initialization result, including supported commands, models,
2621
2687
  * account info, and output style configuration.
@@ -2677,9 +2743,15 @@ export declare interface Query extends AsyncGenerator<SDKMessage, void> {
2677
2743
  * Get a breakdown of current context window usage by category
2678
2744
  * (system prompt, tools, messages, MCP tools, memory files, etc.).
2679
2745
  *
2746
+ * `detail: 'full'` counts each category with the token-count API;
2747
+ * `'summary'` answers from the last response's usage and local estimates
2748
+ * without the per-category token-count calls. Defaults to `'full'`.
2749
+ *
2680
2750
  * @returns Context usage breakdown including token counts per category and total usage
2681
2751
  */
2682
- getContextUsage(): Promise<SDKControlGetContextUsageResponse>;
2752
+ getContextUsage(opts?: {
2753
+ detail?: 'summary' | 'full';
2754
+ }): Promise<SDKControlGetContextUsageResponse>;
2683
2755
  /**
2684
2756
  * Get the structured data behind the `/usage` command: session cost and
2685
2757
  * token usage totals plus claude.ai plan rate-limit utilization windows
@@ -2823,6 +2895,8 @@ export declare interface Query extends AsyncGenerator<SDKMessage, void> {
2823
2895
  * @param toolUseId - Optional tool_use block id to target a single task
2824
2896
  * @returns true when at least one task was backgrounded; false only
2825
2897
  * when `toolUseId` was given and it matched no foreground task
2898
+ * @throws when background tasks are disabled for the session
2899
+ * (`CLAUDE_CODE_DISABLE_BACKGROUND_TASKS`) — nothing is backgrounded
2826
2900
  */
2827
2901
  backgroundTasks(toolUseId?: string): Promise<boolean>;
2828
2902
  /**
@@ -2957,7 +3031,7 @@ export declare type RewindFilesResult = {
2957
3031
  export declare type SandboxCredentialsConfig = NonNullable<z.infer<ReturnType<typeof SandboxCredentialsConfigSchema>>>;
2958
3032
 
2959
3033
  declare const SandboxCredentialsConfigSchema: () => z.ZodOptional<z.ZodObject<{
2960
- files: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
3034
+ files: z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodObject<{
2961
3035
  path: z.ZodString;
2962
3036
  mode: z.ZodEnum<{
2963
3037
  deny: "deny";
@@ -2976,7 +3050,7 @@ declare const SandboxCredentialsConfigSchema: () => z.ZodOptional<z.ZodObject<{
2976
3050
  maskDuplicates: z.ZodOptional<z.ZodBoolean>;
2977
3051
  injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
2978
3052
  }, z.core.$strip>>>>;
2979
- envVars: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
3053
+ envVars: z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodObject<{
2980
3054
  name: z.ZodString;
2981
3055
  mode: z.ZodEnum<{
2982
3056
  deny: "deny";
@@ -3089,7 +3163,7 @@ declare const SandboxSettingsSchema: () => z.ZodObject<{
3089
3163
  disabled: z.ZodOptional<z.ZodBoolean>;
3090
3164
  }, z.core.$strip>>;
3091
3165
  credentials: z.ZodOptional<z.ZodObject<{
3092
- files: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
3166
+ files: z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodObject<{
3093
3167
  path: z.ZodString;
3094
3168
  mode: z.ZodEnum<{
3095
3169
  deny: "deny";
@@ -3108,7 +3182,7 @@ declare const SandboxSettingsSchema: () => z.ZodObject<{
3108
3182
  maskDuplicates: z.ZodOptional<z.ZodBoolean>;
3109
3183
  injectHosts: z.ZodOptional<z.ZodArray<z.ZodString>>;
3110
3184
  }, z.core.$strip>>>>;
3111
- envVars: z.ZodOptional<z.ZodArray<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodObject<{
3185
+ envVars: z.ZodOptional<z.ZodArray<z.ZodPreprocess<z.ZodObject<{
3112
3186
  name: z.ZodString;
3113
3187
  mode: z.ZodEnum<{
3114
3188
  deny: "deny";
@@ -3156,8 +3230,8 @@ declare const SandboxSettingsSchema: () => z.ZodObject<{
3156
3230
  command: z.ZodString;
3157
3231
  args: z.ZodOptional<z.ZodArray<z.ZodString>>;
3158
3232
  }, z.core.$strip>>;
3159
- bwrapPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodString>>>;
3160
- socatPath: z.ZodCatch<z.ZodOptional<z.ZodPipe<z.ZodTransform<string | undefined, unknown>, z.ZodString>>>;
3233
+ bwrapPath: z.ZodCatch<z.ZodOptional<z.ZodPreprocess<z.ZodString>>>;
3234
+ socatPath: z.ZodCatch<z.ZodOptional<z.ZodPreprocess<z.ZodString>>>;
3161
3235
  }, z.core.$loose>;
3162
3236
 
3163
3237
  /**
@@ -3252,6 +3326,7 @@ export declare type SDKAssistantMessage = {
3252
3326
 
3253
3327
 
3254
3328
 
3329
+
3255
3330
  };
3256
3331
 
3257
3332
  export declare type SDKAssistantMessageError = 'authentication_failed' | 'oauth_org_not_allowed' | 'account_on_hold' | 'billing_error' | 'rate_limit' | 'overloaded' | 'invalid_request' | 'model_not_found' | 'server_error' | 'unknown' | 'max_output_tokens';
@@ -3499,6 +3574,10 @@ declare type SDKControlGetBinaryVersionRequest = {
3499
3574
  */
3500
3575
  declare type SDKControlGetContextUsageRequest = {
3501
3576
  subtype: 'get_context_usage';
3577
+ /**
3578
+ * 'full' counts each category with the token-count API; 'summary' answers from the last response's usage and local estimates without the per-category token-count calls. Defaults to 'full'.
3579
+ */
3580
+ detail?: 'summary' | 'full';
3502
3581
  };
3503
3582
 
3504
3583
  /**
@@ -3849,6 +3928,10 @@ declare type SDKControlInitializeRequest = {
3849
3928
  jsonSchema?: Record<string, unknown>;
3850
3929
  systemPrompt?: string[];
3851
3930
  appendSystemPrompt?: string;
3931
+ /**
3932
+ * Record the conversation's system prompt once and reuse it verbatim on every later request and resume (recommended: true). Omitted: setting systemPrompt or appendSystemPrompt turns recording off so the appended text applies fresh each launch; only the bare claude_code preset is recorded. true: an existing record in the conversation is sent as-is (a later launch's different systemPrompt/appendSystemPrompt is ignored until compaction); otherwise the prompt is rendered with appendSystemPrompt included, sent, and recorded. false: never record. With a record, a mid-session model switch or set_settings agent/system-prompt change does not alter the prompt until compaction or a new session.
3933
+ */
3934
+ systemPromptSnapshot?: boolean;
3852
3935
  /**
3853
3936
  * Custom workflow body for the plan-mode system reminder. Replaces the default code-implementation phases; the CLI still wraps it with the read-only enforcement preamble and the ExitPlanMode protocol footer.
3854
3937
  */
@@ -4194,7 +4277,7 @@ export declare type SDKControlRequest = {
4194
4277
  request: SDKControlRequestInner;
4195
4278
  };
4196
4279
 
4197
- declare type SDKControlRequestInner = SDKControlInterruptRequest | SDKControlPermissionRequest | SDKControlInitializeRequest | SDKControlSetPermissionModeRequest | SDKControlSetModelRequest | SDKControlSetMaxThinkingTokensRequest | SDKControlRenameSessionRequest | SDKControlSetColorRequest | SDKControlMcpStatusRequest | SDKControlGetContextUsageRequest | SDKControlGetSessionCostRequest | SDKControlListModelsRequest | SDKControlGetUsageRequest | SDKControlGetBinaryVersionRequest | SDKControlMcpCallRequest | SDKControlFileSuggestionsRequest | SDKHookCallbackRequest | SDKControlMcpMessageRequest | SDKControlRewindFilesRequest | SDKControlCancelAsyncMessageRequest | SDKControlReadFileRequest | SDKControlSeedReadStateRequest | SDKControlMcpSetServersRequest | SDKControlRegisterRepoRootRequest | SDKControlReloadPluginsRequest | SDKControlReloadSkillsRequest | SDKControlMcpReconnectRequest | SDKControlMcpToggleRequest | SDKControlStopTaskRequest | SDKControlBackgroundTasksRequest | SDKControlApplyFlagSettingsRequest | SDKControlGetSettingsRequest | SDKControlElicitationRequest | SDKControlRequestUserDialogRequest;
4280
+ declare type SDKControlRequestInner = SDKControlInterruptRequest | SDKControlPermissionRequest | SDKControlInitializeRequest | SDKControlSetPermissionModeRequest | SDKControlSetModelRequest | SDKControlSetMaxThinkingTokensRequest | SDKControlRenameSessionRequest | SDKControlSetColorRequest | SDKControlMcpStatusRequest | SDKControlGetContextUsageRequest | SDKControlGetSessionCostRequest | SDKControlListModelsRequest | SDKControlGetUsageRequest | SDKControlGetBinaryVersionRequest | SDKControlMcpCallRequest | SDKControlFileSuggestionsRequest | SDKHookCallbackRequest | SDKControlMcpMessageRequest | SDKControlRewindFilesRequest | SDKControlCancelAsyncMessageRequest | SDKControlReadFileRequest | SDKControlSeedReadStateRequest | SDKControlMcpSetServersRequest | SDKControlRegisterRepoRootRequest | SDKControlReloadPluginsRequest | SDKControlReloadSkillsRequest | SDKControlMcpReconnectRequest | SDKControlMcpToggleRequest | SDKControlStopTaskRequest | SDKControlBackgroundTasksRequest | SDKControlApplyFlagSettingsRequest | SDKControlGetSettingsRequest | SDKControlUpdateSettingsRequest | SDKControlElicitationRequest | SDKControlRequestUserDialogRequest;
4198
4281
 
4199
4282
  /**
4200
4283
  * Progress for a long-running client-originated control_request (currently only side_question), correlated by request_id. status 'started' means the worker accepted the request and launched the work; 'api_retry' carries the same retry counters as SDKAPIRetryMessage and is present only for that status.
@@ -4306,6 +4389,18 @@ declare type SDKControlStopTaskRequest = {
4306
4389
  task_id: string;
4307
4390
  };
4308
4391
 
4392
+ /**
4393
+ * Merges the provided settings into a settings file through the CLI's own writer (canonical store root, gitignore upkeep, hardened write) and live-applies them — the same path /config uses. Unlike apply_flag_settings, which only touches the session-scoped flag layer. The handler accepts an explicit key allowlist only (currently just outputStyle — the file feeds hook and permission-rule loading, so each key is a security decision), requires string values (key deletion is not supported), and refuses remote transports and sessions whose --setting-sources exclude the target source.
4394
+ */
4395
+ declare type SDKControlUpdateSettingsRequest = {
4396
+ subtype: 'update_settings';
4397
+ /**
4398
+ * Which settings file to write. Only the project's local settings file for now — the scope host UIs need so their writes land exactly where /config's do.
4399
+ */
4400
+ source: 'localSettings';
4401
+ settings: Record<string, unknown>;
4402
+ };
4403
+
4309
4404
  /**
4310
4405
  * Emitted by /clear, plan-mode exit, and fresh-session flows. The surface should mount a fresh transcript under new_conversation_id and reset any cached session title. From internal QueryEvent 'conversation_reset'.
4311
4406
  */
@@ -4453,6 +4548,16 @@ export declare type SDKLocalCommandOutputMessage = {
4453
4548
  session_id: string;
4454
4549
  };
4455
4550
 
4551
+ export declare type SDKMcpResourceLink = {
4552
+ uri: string;
4553
+ name: string;
4554
+ title?: string;
4555
+ description?: string;
4556
+ mimeType?: string;
4557
+ size?: number;
4558
+ annotations?: Record<string, unknown>;
4559
+ };
4560
+
4456
4561
  /**
4457
4562
  * MCP tool definition for SDK servers.
4458
4563
  * Contains a handler function, so not serializable.
@@ -5024,6 +5129,10 @@ export declare type SDKTaskNotificationMessage = {
5024
5129
  tool_uses: number;
5025
5130
  duration_ms: number;
5026
5131
  };
5132
+ /**
5133
+ * CLI-owned: for a backgrounded MCP task (task_type mcp_task) that completed, the `resource_link` content blocks of its final result — the files it returned by reference — collected from the raw result before the CLI renders it as the text the model reads. A backgrounded task's tool_result is the placeholder text and its real result arrives as this notification, so this is where a host learns which files that tool call produced; join to the originating call via tool_use_id. Same fields and caps as tool_use_result.resourceLinks (at most 50 links, 64 KiB serialized), absent when the result had none or the task is any other type. Never populated from the server's _meta.
5134
+ */
5135
+ resource_links?: SDKMcpResourceLink[];
5027
5136
  skip_transcript?: boolean;
5028
5137
  /**
5029
5138
  * True for housekeeping tasks the CLI does not surface as user work (every skip_transcript task, plus auto-started live-update watchers); hosts should exclude them from activity indicators.
@@ -5676,6 +5785,10 @@ export declare interface Settings {
5676
5785
  * Disable the ability to bypass permission prompts
5677
5786
  */
5678
5787
  disableBypassPermissionsMode?: 'disable';
5788
+ /**
5789
+ * Refuse file-tool reads (Read, Grep, Glob, LSP) outside the working directories in every permission mode; true in any settings source wins. Also set when the user picks "block" on the one-time auto-mode prompt for a read outside the working directories.
5790
+ */
5791
+ blockReadsOutsideWorkingDirectories?: boolean;
5679
5792
  /**
5680
5793
  * Additional directories to include in the permission scope
5681
5794
  */
@@ -5724,6 +5837,10 @@ export declare interface Settings {
5724
5837
  * Row subtitle. Defaults to a generic description.
5725
5838
  */
5726
5839
  description?: string;
5840
+ /**
5841
+ * For a model this version of Claude Code does not know: the ID of a model it does know (e.g. "claude-opus-4-8") whose client-side handling — prompt profile, capability and effort defaults — applies to it. Changes neither the row's label nor the model ID sent. Without it, a model-catalog row for a model this version does not know is not offered until Claude Code is updated.
5842
+ */
5843
+ behavesAs?: string;
5727
5844
  }[];
5728
5845
  /**
5729
5846
  * When true, the picker shows only the Default row and these options — the built-in lineup, gateway-discovered models and ANTHROPIC_CUSTOM_MODEL_OPTION are hidden. When false or unset, these options are added after the built-in lineup.
@@ -6086,7 +6203,7 @@ export declare interface Settings {
6086
6203
  */
6087
6204
  httpHookAllowedEnvVars?: string[];
6088
6205
  /**
6089
- * When true (and set in managed settings), only permission rules (allow/deny/ask) from managed settings are respected. User, project, local, and CLI argument permission rules are ignored.
6206
+ * When true (and set in managed settings), permission rules from user, project, local, and --settings files and allow rules from --allowedTools are ignored; only managed settings can add allow rules through settings. --disallowedTools and other deny and ask rules from the command line or the current session still apply.
6090
6207
  */
6091
6208
  allowManagedPermissionRulesOnly?: boolean;
6092
6209
  /**
@@ -7364,7 +7481,7 @@ export declare interface Settings {
7364
7481
  */
7365
7482
  parentSettingsBehavior?: 'first-wins' | 'merge';
7366
7483
  /**
7367
- * Controls how the managed settings sources compose. "first-wins" (default): the highest-priority source present (server-managed > MDM (managed plist / HKLM) > managed-settings.json) is the managed tier alone. "merge": every present source deep-merges with fixed precedence server-managed > MDM > managed-settings.json — scalars take the highest source's value and arrays union, except fallbackModel and the restriction allowlists allowedMcpServers, availableModels, strictKnownMarketplaces and allowedChannelPlugins (the highest source that sets one owns it whole) and the auth pins forceLoginOrgUUID, forceLoginMethod and forceLoginGatewayUrl (highest source only). Honored only from the highest-priority source present; enable it only when every lower source is admin-controlled, since lower sources then contribute entries such as permissions.allow. HKCU and --managed-settings never take part in the merge.
7484
+ * Controls how the managed settings sources compose. "first-wins" (default): the highest-priority source present (server-managed > MDM (managed plist / HKLM) > managed-settings.json) is the managed tier alone. "merge": every present source deep-merges with fixed precedence server-managed > MDM > managed-settings.json — scalars take the highest source's value and arrays union, except fallbackModel, the restriction allowlists allowedMcpServers, availableModels, strictKnownMarketplaces and allowedChannelPlugins, and sandbox.credentials.awsPairs and sandbox.ripgrep (the highest source that sets one owns it whole) and the auth pins forceLoginOrgUUID, forceLoginMethod and forceLoginGatewayUrl (highest source only). Honored only from the highest-priority source present; enable it only when every lower source is admin-controlled, since lower sources then contribute entries such as permissions.allow. HKCU and --managed-settings never take part in the merge.
7368
7485
  */
7369
7486
  managedSourcesBehavior?: 'first-wins' | 'merge';
7370
7487
  /**
@@ -7839,6 +7956,14 @@ export declare interface Settings {
7839
7956
  * Reduce or disable animations for accessibility (spinner shimmer, flash effects, etc.)
7840
7957
  */
7841
7958
  prefersReducedMotion?: boolean;
7959
+ /**
7960
+ * Clock format for times shown in the UI: "auto" (default, follows the locale), "12-hour", "24-hour", "24-hour-utc" ("18:05Z"), or a strftime pattern such as "%H:%M" (any value containing "%"; other values read as "auto"). A pattern replaces the time everywhere; message timestamps show only the pattern, so include %Y-%m-%d for the date. /config offers the presets; a pattern is set here.
7961
+ */
7962
+ timeFormat?: ('auto' | '12-hour' | '24-hour' | '24-hour-utc') | string;
7963
+ /**
7964
+ * IANA time zone for times shown in the UI, e.g. "UTC" or "Europe/Dublin". Default: the system time zone. An unknown name falls back to the system time zone.
7965
+ */
7966
+ timeZone?: string;
7842
7967
 
7843
7968
 
7844
7969