@anthropic-ai/claude-agent-sdk 0.3.142 → 0.3.144

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.
@@ -0,0 +1 @@
1
+ export function extractFromBunfs(embeddedPath: string): string
@@ -0,0 +1,156 @@
1
+ /* eslint-disable custom-rules/no-sync-fs */
2
+ // Extracts a file from Bun's $bunfs virtual filesystem to a real temp directory
3
+ // so it can be spawned as a subprocess (child processes cannot access $bunfs).
4
+ //
5
+ // Ships verbatim (unbundled) as the @anthropic-ai/claude-agent-sdk `./extract`
6
+ // export — keep it standalone and Node-importable (no Bun globals, no
7
+ // local-relative imports).
8
+
9
+ import { createHash } from 'crypto'
10
+ import {
11
+ chmodSync,
12
+ existsSync,
13
+ lstatSync,
14
+ mkdirSync,
15
+ readFileSync,
16
+ renameSync,
17
+ unlinkSync,
18
+ writeFileSync,
19
+ } from 'fs'
20
+ import { tmpdir as osTmpdir } from 'os'
21
+ import { basename, join } from 'path'
22
+
23
+ // Inlined from src/utils/tempfile.ts — this file ships verbatim (unbundled) as
24
+ // the @anthropic-ai/claude-agent-sdk/extract export, so it must have zero
25
+ // local-relative imports. Keep behavior in sync with tempfile.ts#tmpdir.
26
+ function tmpdir() {
27
+ if (process.env.CLAUDE_CODE_TMPDIR) {
28
+ return process.env.CLAUDE_CODE_TMPDIR
29
+ }
30
+ if (process.platform === 'darwin') {
31
+ // eslint-disable-next-line custom-rules/no-hardcoded-tmp -- mirrors tempfile.ts: macOS /tmp works fine; os.tmpdir() below is for Android-on-Linux where /tmp isn't writable.
32
+ return '/tmp'
33
+ }
34
+ return osTmpdir()
35
+ }
36
+
37
+ // Inlined from src/utils/tempfile.ts#claudeTempDir + verifyTempDirOwnership —
38
+ // keep behavior in sync. Per-UID Claude temp directory: `{tmpdir()}/claude-{uid}`
39
+ // on Unix, `{tmpdir()}/claude` on Windows (where %TEMP% is already per-user).
40
+ //
41
+ // Defense-in-depth against a local attacker pre-creating the extraction dir
42
+ // before the victim's first run: the content-hash dir name is fully predictable
43
+ // (sha256 of a public npm binary) under shared `/tmp`, and
44
+ // `mkdirSync({recursive:true})` is a silent no-op on a pre-existing dir without
45
+ // enforcing owner or mode. Without this check an attacker-owned directory would
46
+ // be used as-is, letting them swap the binary the SDK later spawns.
47
+ function safeTempBase() {
48
+ const dir = join(
49
+ tmpdir(),
50
+ process.platform === 'win32'
51
+ ? 'claude'
52
+ : `claude-${process.getuid?.() ?? 0}`,
53
+ )
54
+ // Gate on getuid (POSIX-only) rather than process.platform: getuid presence
55
+ // reflects the real OS. No-op on Windows where %TEMP% is already per-user.
56
+ if (typeof process.getuid === 'function') {
57
+ mkdirSync(dir, { recursive: true, mode: 0o700 })
58
+ const uid = process.getuid()
59
+ const st = lstatSync(dir)
60
+ if (!st.isDirectory()) {
61
+ throw new Error(
62
+ `Temp directory ${dir} is not a directory (may be an attacker-planted symlink). Refusing to use it.`,
63
+ )
64
+ }
65
+ if (st.uid !== uid) {
66
+ throw new Error(
67
+ `Temp directory ${dir} is owned by uid ${st.uid}, expected ${uid}. Refusing to use it — another user may have pre-created it.`,
68
+ )
69
+ }
70
+ if ((st.mode & 0o777) !== 0o700) {
71
+ // Owner matches, so this is our own dir from a prior run with a looser
72
+ // umask rather than an attacker pre-create. Tighten it.
73
+ chmodSync(dir, 0o700)
74
+ }
75
+ } else {
76
+ // Windows: best-effort create; verification is skipped (%TEMP% is per-user).
77
+ try {
78
+ mkdirSync(dir, { recursive: true, mode: 0o700 })
79
+ } catch {
80
+ // best-effort; see comment above
81
+ }
82
+ }
83
+ return dir
84
+ }
85
+
86
+ /**
87
+ * If `embeddedPath` is inside Bun's $bunfs virtual filesystem, extract it to a
88
+ * temp directory and return the real path. Otherwise return the path unchanged.
89
+ *
90
+ * Uses a content hash for the directory name so that:
91
+ * - Same binary version reuses the same extracted file (no accumulation)
92
+ * - Different versions get separate directories (no collision)
93
+ * - Concurrent instances are safe (atomic write via temp file + rename)
94
+ *
95
+ * @param {string} embeddedPath — path returned by `import ... with { type: 'file' }`
96
+ * @returns {string} — a real filesystem path that can be spawned as a subprocess
97
+ */
98
+ export function extractFromBunfs(embeddedPath) {
99
+ // Bun single-file embed: `/$bunfs/root/...` (POSIX) or `B:\~BUN\root\...`
100
+ // (Windows — Bun's StandaloneModuleGraph uses `~BUN`, not `$bunfs`, on Windows).
101
+ if (!embeddedPath.includes('$bunfs') && !embeddedPath.includes('~BUN')) {
102
+ return embeddedPath
103
+ }
104
+
105
+ try {
106
+ const content = readFileSync(embeddedPath)
107
+ const hash = createHash('sha256').update(content).digest('hex').slice(0, 16)
108
+ const tmpDir = join(safeTempBase(), `claude-agent-sdk-${hash}`)
109
+ // Preserve the embedded file's basename — ProcessTransport.isNativeBinary()
110
+ // decides whether to spawn directly or via node/bun based on extension, so
111
+ // a native binary must not come out named cli.js.
112
+ const fileName = basename(embeddedPath)
113
+ const tmpPath = join(tmpDir, fileName)
114
+ mkdirSync(tmpDir, { recursive: true, mode: 0o700 })
115
+ // The directory is content-hash-keyed, so an existing tmpPath is byte-
116
+ // identical to what we would write — short-circuit. This is a write
117
+ // idempotency check on a content-addressed path, not a read TOCTOU
118
+ // (the existence IS the contract). Without it, a second call (or a
119
+ // concurrent app instance) on Windows would hit EPERM/EBUSY renaming over
120
+ // the memory-mapped running .exe and fall back to the unspawnable $bunfs
121
+ // path. It also skips a redundant write+chmod on every call.
122
+ if (existsSync(tmpPath)) {
123
+ return tmpPath
124
+ }
125
+ // Write to a temp file and atomically rename to avoid truncation races —
126
+ // concurrent readers always see either the old complete file or the new one.
127
+ const tmpFile = join(tmpDir, `${fileName}.tmp.${process.pid}`)
128
+ writeFileSync(tmpFile, content)
129
+ chmodSync(tmpFile, 0o755)
130
+ try {
131
+ renameSync(tmpFile, tmpPath)
132
+ } catch (e) {
133
+ if ((e.code === 'EPERM' || e.code === 'EBUSY') && existsSync(tmpPath)) {
134
+ // Lost a concurrent first-time-extraction race on Windows: the winner's
135
+ // child holds tmpPath memory-mapped, so the loser's rename over it fails.
136
+ // The content-hash dir guarantees byte-identity, so the winner's file is
137
+ // exactly what we'd have written — use it.
138
+ try {
139
+ unlinkSync(tmpFile)
140
+ } catch {
141
+ // best-effort cleanup of our orphaned .tmp.{pid} file
142
+ }
143
+ return tmpPath
144
+ }
145
+ throw e
146
+ }
147
+ return tmpPath
148
+ } catch (err) {
149
+ // biome-ignore lint/suspicious/noConsole: intentional user-facing warning in standalone SDK helper
150
+ console.warn(
151
+ `[claude-agent-sdk] Failed to extract CLI from $bunfs: ${err.message}. ` +
152
+ `Child processes cannot access $bunfs paths — the CLI will likely fail to start.`,
153
+ )
154
+ return embeddedPath
155
+ }
156
+ }
package/manifest.json CHANGED
@@ -1,47 +1,47 @@
1
1
  {
2
- "version": "2.1.142",
3
- "commit": "880324aad10dc75b18dbac2782d9dfee7cbb1578",
4
- "buildDate": "2026-05-14T16:45:24Z",
2
+ "version": "2.1.144",
3
+ "commit": "32281b6b930f7e2ab4f0b5e2494e263b9c1ffb7e",
4
+ "buildDate": "2026-05-18T18:52:18Z",
5
5
  "platforms": {
6
6
  "darwin-arm64": {
7
7
  "binary": "claude",
8
- "checksum": "772021afa051160b97e04d379738df84d4cacd311e8c199a325fb013b3eaa448",
9
- "size": 207126432
8
+ "checksum": "9886baa4ec4c455f86108464f121732193ee76e5dfceb031005f59f31276a5df",
9
+ "size": 207919008
10
10
  },
11
11
  "darwin-x64": {
12
12
  "binary": "claude",
13
- "checksum": "d00bc6fb38d0837ce811cc862a3b6822795b33dbce8361703b1e5e903bd240fd",
14
- "size": 209640592
13
+ "checksum": "d225c07b713615ceda54cebcfb6280942b113c64dccbaa114b12204e917087f8",
14
+ "size": 210433168
15
15
  },
16
16
  "linux-arm64": {
17
17
  "binary": "claude",
18
- "checksum": "767b13fc28763ca9d663b00f90e501f134b356f1b72dcf0eea59b7e3bed86411",
19
- "size": 232502920
18
+ "checksum": "c8ccccbfce12d684588bd3af366394132f614dcf3c86beb2066f86bde2704513",
19
+ "size": 233289352
20
20
  },
21
21
  "linux-x64": {
22
22
  "binary": "claude",
23
- "checksum": "1249a1dadfe2d48f320bd4e1b657a1a0d82435da76deb11ce509822407cf24ec",
24
- "size": 232625872
23
+ "checksum": "147480774472e5720fd5e83617b3e9299344e7213efa84c326b25bd5a0f20b4e",
24
+ "size": 233404112
25
25
  },
26
26
  "linux-arm64-musl": {
27
27
  "binary": "claude",
28
- "checksum": "43834a6c50954deb6ddb1b49937d15ccae71fbdb3d370e26a461e12c50c122ba",
29
- "size": 225357656
28
+ "checksum": "68a92c68f18cd25676259b12cd799ddf1e8bdac24f927ac50defd8be26a1448d",
29
+ "size": 226144088
30
30
  },
31
31
  "linux-x64-musl": {
32
32
  "binary": "claude",
33
- "checksum": "c645dc32d250a54bb8399630f0ffa88b4ee44ba8e6461e33ed95b2f64f836ea9",
34
- "size": 227019824
33
+ "checksum": "f1f736eb04632ce3f720e04a67ba0209d55726cb88e8e23f6f33b8cd6481b6ca",
34
+ "size": 227798064
35
35
  },
36
36
  "win32-x64": {
37
37
  "binary": "claude.exe",
38
- "checksum": "0778b1c607ee3282ba8ea3f0c684edb05f597454cc0d21386a84576b5434b1c7",
39
- "size": 228456096
38
+ "checksum": "ae150c7d6100e14c67efc90c2b55e0db9cdbcef2b2c7b3cb56998331182e3d2f",
39
+ "size": 229302432
40
40
  },
41
41
  "win32-arm64": {
42
42
  "binary": "claude.exe",
43
- "checksum": "95a966b0729f9f7c28c68df3d63e7f5ac6ac72abab209392800e9a40292f3bfc",
44
- "size": 224420000
43
+ "checksum": "2871ae906ed83f826ce9fa721ec82418c15315e11ab3cb3fe821f3c056fcff4d",
44
+ "size": 225266848
45
45
  }
46
46
  }
47
47
  }
package/manifest.zst.json CHANGED
@@ -1,55 +1,55 @@
1
1
  {
2
- "version": "2.1.142",
3
- "commit": "880324aad10dc75b18dbac2782d9dfee7cbb1578",
4
- "buildDate": "2026-05-14T16:52:01Z",
2
+ "version": "2.1.144",
3
+ "commit": "32281b6b930f7e2ab4f0b5e2494e263b9c1ffb7e",
4
+ "buildDate": "2026-05-18T18:59:24Z",
5
5
  "platforms": {
6
6
  "darwin-arm64": {
7
7
  "binary": "claude.zst",
8
- "checksum": "0f691f77c8f4d1e7a13813c10d8de3f611c486a24fb8a2f33470b785064f8718",
9
- "size": 42921902,
8
+ "checksum": "ee45631e54620b1493a186c3f68737a586bb9743e8bedd7d40d663ef1488ef72",
9
+ "size": 43055466,
10
10
  "bundle": {
11
- "checksum": "9e0823cd0d41df7bfa8d3f0864f3c8bb52cc4787aa495c0088afbcc8c7261058",
12
- "size": 42924662
11
+ "checksum": "ca17f3dffb8230ec6ccedf35bec149e9ab3a616509d2bc55ae90ed84f88d13e3",
12
+ "size": 43067561
13
13
  }
14
14
  },
15
15
  "darwin-x64": {
16
16
  "binary": "claude.zst",
17
- "checksum": "958d1a9d396a23819ef413c94510619499b3ab04cc4968a6cea7c334999272ea",
18
- "size": 44836769,
17
+ "checksum": "d4023e18885bda3f0edea593cabe97f1d71912b8f3d1daeebb28551fdca2ccb1",
18
+ "size": 44977785,
19
19
  "bundle": {
20
- "checksum": "f3dd24e6cc318032c795fe12c4f259de64a70b58409c187cc231e39f65453595",
21
- "size": 44841630
20
+ "checksum": "0c04c6b629f308b19e1f4048c37fd6705c8e75c236e8f9350b8b20449f06eb1a",
21
+ "size": 44989436
22
22
  }
23
23
  },
24
24
  "linux-arm64": {
25
25
  "binary": "claude.zst",
26
- "checksum": "75c7af4adb9bbd7b48b407d005cdad790a6ecb00e7e6b6de6c2b0c4acafcf81f",
27
- "size": 50714165
26
+ "checksum": "9e1043902191323aa6e2798d6810028241d8ca166d52133e0565a1cb9b3e2f58",
27
+ "size": 50842663
28
28
  },
29
29
  "linux-x64": {
30
30
  "binary": "claude.zst",
31
- "checksum": "7a9f89138613c26b815054bf009a086ed76f1c8c8265484090072d900f10d278",
32
- "size": 51328541
31
+ "checksum": "11faccc6f4fc49184d8e4a847eb2feb7cda225722395f47cd6b61a93751f3edc",
32
+ "size": 51470721
33
33
  },
34
34
  "linux-arm64-musl": {
35
35
  "binary": "claude.zst",
36
- "checksum": "76acedae2ff83dc06e5dc38066bd0fa42ca76c18a9aabb8e63742c01a07f5dfd",
37
- "size": 49338045
36
+ "checksum": "f9c4091a1ba8664c20c1e6f77e99a5a76e772e2a1ca5bf217f88567fbb29fb0e",
37
+ "size": 49480624
38
38
  },
39
39
  "linux-x64-musl": {
40
40
  "binary": "claude.zst",
41
- "checksum": "e6425d37a4cc099cfd1b1b13298c0f2067302decfd8542d0c12c5eb5df435ac6",
42
- "size": 50052852
41
+ "checksum": "4a9a7daa9ff2e36e476196ecc07c305c3e68f36af5dad1a0decdd158525ff204",
42
+ "size": 50191473
43
43
  },
44
44
  "win32-x64": {
45
45
  "binary": "claude.exe.zst",
46
- "checksum": "1183b899719c41f41f3f57fb8580e50845ee645c1878e29744138b8e459d897e",
47
- "size": 52050022
46
+ "checksum": "09ace0211e4eb689df96fca870421a7674ffb15876f1fdb8f887e397141778d1",
47
+ "size": 52206852
48
48
  },
49
49
  "win32-arm64": {
50
50
  "binary": "claude.exe.zst",
51
- "checksum": "ca544b53e4fb45d12bd30f214de6ee85859ec9f89c7e14942bdcfb4a1db576f4",
52
- "size": 50320973
51
+ "checksum": "c061d3098ee1a261375347ffd2350d64d2b8a23a220b68ce3214ebe679395434",
52
+ "size": 50477031
53
53
  }
54
54
  }
55
55
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anthropic-ai/claude-agent-sdk",
3
- "version": "0.3.142",
3
+ "version": "0.3.144",
4
4
  "main": "sdk.mjs",
5
5
  "types": "sdk.d.ts",
6
6
  "exports": {
@@ -8,6 +8,10 @@
8
8
  "types": "./sdk.d.ts",
9
9
  "default": "./sdk.mjs"
10
10
  },
11
+ "./extract": {
12
+ "types": "./extractFromBunfs.d.ts",
13
+ "default": "./extractFromBunfs.js"
14
+ },
11
15
  "./browser": {
12
16
  "types": "./browser-sdk.d.ts",
13
17
  "default": "./browser-sdk.js"
@@ -35,6 +39,10 @@
35
39
  "license": "SEE LICENSE IN README.md",
36
40
  "description": "SDK for building AI agents with Claude Code's capabilities. Programmatically interact with Claude to build autonomous agents that can understand codebases, edit files, and execute workflows.",
37
41
  "homepage": "https://github.com/anthropics/claude-agent-sdk-typescript",
42
+ "repository": {
43
+ "type": "git",
44
+ "url": "https://github.com/anthropics/claude-agent-sdk-typescript.git"
45
+ },
38
46
  "bugs": {
39
47
  "url": "https://github.com/anthropics/claude-agent-sdk-typescript/issues"
40
48
  },
@@ -47,22 +55,20 @@
47
55
  "automation",
48
56
  "code-generation"
49
57
  ],
50
- "dependencies": {
51
- "@anthropic-ai/sdk": "^0.93.0",
52
- "@modelcontextprotocol/sdk": "^1.29.0"
53
- },
54
58
  "peerDependencies": {
59
+ "@anthropic-ai/sdk": ">=0.93.0",
60
+ "@modelcontextprotocol/sdk": "^1.29.0",
55
61
  "zod": "^4.0.0"
56
62
  },
57
63
  "optionalDependencies": {
58
- "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.142",
59
- "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.142",
60
- "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.142",
61
- "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.142",
62
- "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.142",
63
- "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.142",
64
- "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.142",
65
- "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.142"
64
+ "@anthropic-ai/claude-agent-sdk-linux-x64": "0.3.144",
65
+ "@anthropic-ai/claude-agent-sdk-linux-arm64": "0.3.144",
66
+ "@anthropic-ai/claude-agent-sdk-linux-x64-musl": "0.3.144",
67
+ "@anthropic-ai/claude-agent-sdk-linux-arm64-musl": "0.3.144",
68
+ "@anthropic-ai/claude-agent-sdk-darwin-x64": "0.3.144",
69
+ "@anthropic-ai/claude-agent-sdk-darwin-arm64": "0.3.144",
70
+ "@anthropic-ai/claude-agent-sdk-win32-x64": "0.3.144",
71
+ "@anthropic-ai/claude-agent-sdk-win32-arm64": "0.3.144"
66
72
  },
67
73
  "files": [
68
74
  "sdk.mjs",
@@ -75,8 +81,10 @@
75
81
  "assistant.d.ts",
76
82
  "browser-sdk.js",
77
83
  "browser-sdk.d.ts",
84
+ "extractFromBunfs.js",
85
+ "extractFromBunfs.d.ts",
78
86
  "manifest.json",
79
87
  "manifest.zst.json"
80
88
  ],
81
- "claudeCodeVersion": "2.1.142"
89
+ "claudeCodeVersion": "2.1.144"
82
90
  }
package/sdk.d.ts CHANGED
@@ -957,6 +957,7 @@ export declare type McpHttpServerConfig = {
957
957
  * When true, all tools from this server are always included in the prompt and never deferred behind tool search. Equivalent to setting defer_loading: false on the API. Default: tools are deferred when tool search is enabled. As a side effect this also blocks startup until the server is connected (capped at the standard 5s connect timeout) even though MCP startup is otherwise non-blocking by default, since the tools must be present when the turn-1 prompt is built.
958
958
  */
959
959
  alwaysLoad?: boolean;
960
+
960
961
  };
961
962
 
962
963
  export declare type McpSdkServerConfig = {
@@ -1062,6 +1063,7 @@ export declare type McpSSEServerConfig = {
1062
1063
  * When true, all tools from this server are always included in the prompt and never deferred behind tool search. Equivalent to setting defer_loading: false on the API. Default: tools are deferred when tool search is enabled. As a side effect this also blocks startup until the server is connected (capped at the standard 5s connect timeout) even though MCP startup is otherwise non-blocking by default, since the tools must be present when the turn-1 prompt is built.
1063
1064
  */
1064
1065
  alwaysLoad?: boolean;
1066
+
1065
1067
  };
1066
1068
 
1067
1069
  export declare type McpStdioServerConfig = {
@@ -1073,6 +1075,7 @@ export declare type McpStdioServerConfig = {
1073
1075
  * When true, all tools from this server are always included in the prompt and never deferred behind tool search. Equivalent to setting defer_loading: false on the API. Default: tools are deferred when tool search is enabled. As a side effect this also blocks startup until the server is connected (capped at the standard 5s connect timeout) even though MCP startup is otherwise non-blocking by default, since the tools must be present when the turn-1 prompt is built.
1074
1076
  */
1075
1077
  alwaysLoad?: boolean;
1078
+
1076
1079
  };
1077
1080
 
1078
1081
  /**
@@ -2502,7 +2505,7 @@ export declare type SDKAssistantMessage = {
2502
2505
  task_description?: string;
2503
2506
  };
2504
2507
 
2505
- export declare type SDKAssistantMessageError = 'authentication_failed' | 'oauth_org_not_allowed' | 'billing_error' | 'rate_limit' | 'invalid_request' | 'server_error' | 'unknown' | 'max_output_tokens';
2508
+ export declare type SDKAssistantMessageError = 'authentication_failed' | 'oauth_org_not_allowed' | 'billing_error' | 'rate_limit' | 'invalid_request' | 'model_not_found' | 'server_error' | 'unknown' | 'max_output_tokens';
2506
2509
 
2507
2510
  export declare type SDKAuthStatusMessage = {
2508
2511
  type: 'auth_status';
@@ -3569,7 +3572,7 @@ export declare type SDKTaskUpdatedMessage = {
3569
3572
  * Wire-safe subset of TaskState fields that changed. Excludes abortController, messages, result. Clients merge into their local task map.
3570
3573
  */
3571
3574
  patch: {
3572
- status?: 'pending' | 'running' | 'completed' | 'failed' | 'killed';
3575
+ status?: 'pending' | 'running' | 'completed' | 'failed' | 'killed' | 'paused';
3573
3576
  description?: string;
3574
3577
  end_time?: number;
3575
3578
  total_paused_ms?: number;
@@ -3684,7 +3687,7 @@ export declare type SessionMessage = {
3684
3687
  uuid: string;
3685
3688
  session_id: string;
3686
3689
  message: unknown;
3687
- parent_tool_use_id: null;
3690
+ parent_tool_use_id: string | null;
3688
3691
  };
3689
3692
 
3690
3693
  /**
@@ -4274,6 +4277,10 @@ export declare interface Settings {
4274
4277
  * Which ref new worktrees branch from. 'fresh' (default) branches from origin/<default-branch> for a clean tree. 'head' branches from your current local HEAD so unpushed commits and feature-branch state are present. Applies to --worktree, EnterWorktree, and agent isolation.
4275
4278
  */
4276
4279
  baseRef?: 'fresh' | 'head';
4280
+ /**
4281
+ * 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.
4282
+ */
4283
+ bgIsolation?: 'worktree' | 'none';
4277
4284
  };
4278
4285
  /**
4279
4286
  * Disable all hooks and statusLine execution