@namzu/sdk 37.0.0 → 38.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +1 -0
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/bridge/a2a/mapper.d.ts.map +1 -1
  6. package/dist/bridge/a2a/mapper.js +2 -0
  7. package/dist/bridge/a2a/mapper.js.map +1 -1
  8. package/dist/bridge/sse/mapper.d.ts.map +1 -1
  9. package/dist/bridge/sse/mapper.js +16 -1
  10. package/dist/bridge/sse/mapper.js.map +1 -1
  11. package/dist/config/runtime.d.ts +16 -6
  12. package/dist/config/runtime.d.ts.map +1 -1
  13. package/dist/config/runtime.js +2 -0
  14. package/dist/config/runtime.js.map +1 -1
  15. package/dist/contracts/api.d.ts +1 -1
  16. package/dist/contracts/api.d.ts.map +1 -1
  17. package/dist/manager/agent/lifecycle.d.ts.map +1 -1
  18. package/dist/manager/agent/lifecycle.js +14 -9
  19. package/dist/manager/agent/lifecycle.js.map +1 -1
  20. package/dist/manager/plan/lifecycle.d.ts +1 -1
  21. package/dist/manager/plan/lifecycle.d.ts.map +1 -1
  22. package/dist/manager/plan/lifecycle.js +14 -12
  23. package/dist/manager/plan/lifecycle.js.map +1 -1
  24. package/dist/prompt/coding-agent-doctrine.d.ts +2 -2
  25. package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
  26. package/dist/prompt/coding-agent-doctrine.js +11 -5
  27. package/dist/prompt/coding-agent-doctrine.js.map +1 -1
  28. package/dist/provider/capabilities.d.ts +2 -0
  29. package/dist/provider/capabilities.d.ts.map +1 -1
  30. package/dist/provider/capabilities.js +14 -0
  31. package/dist/provider/capabilities.js.map +1 -1
  32. package/dist/provider/fallback.d.ts.map +1 -1
  33. package/dist/provider/fallback.js +7 -3
  34. package/dist/provider/fallback.js.map +1 -1
  35. package/dist/provider/idle-timeout.d.ts.map +1 -1
  36. package/dist/provider/idle-timeout.js +5 -0
  37. package/dist/provider/idle-timeout.js.map +1 -1
  38. package/dist/provider/retry.d.ts.map +1 -1
  39. package/dist/provider/retry.js +5 -0
  40. package/dist/provider/retry.js.map +1 -1
  41. package/dist/public-runtime.d.ts +1 -0
  42. package/dist/public-runtime.d.ts.map +1 -1
  43. package/dist/public-runtime.js +1 -0
  44. package/dist/public-runtime.js.map +1 -1
  45. package/dist/public-tools.d.ts +1 -0
  46. package/dist/public-tools.d.ts.map +1 -1
  47. package/dist/public-tools.js +1 -0
  48. package/dist/public-tools.js.map +1 -1
  49. package/dist/public-types.d.ts +1 -0
  50. package/dist/public-types.d.ts.map +1 -1
  51. package/dist/run/reporter.d.ts.map +1 -1
  52. package/dist/run/reporter.js +1 -0
  53. package/dist/run/reporter.js.map +1 -1
  54. package/dist/run/token-budget.d.ts +10 -4
  55. package/dist/run/token-budget.d.ts.map +1 -1
  56. package/dist/run/token-budget.js +45 -14
  57. package/dist/run/token-budget.js.map +1 -1
  58. package/dist/runtime/query/executor.d.ts +3 -3
  59. package/dist/runtime/query/executor.d.ts.map +1 -1
  60. package/dist/runtime/query/executor.js +24 -16
  61. package/dist/runtime/query/executor.js.map +1 -1
  62. package/dist/runtime/query/index.d.ts +2 -0
  63. package/dist/runtime/query/index.d.ts.map +1 -1
  64. package/dist/runtime/query/index.js +1 -0
  65. package/dist/runtime/query/index.js.map +1 -1
  66. package/dist/runtime/query/iteration/index.d.ts +2 -0
  67. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  68. package/dist/runtime/query/iteration/index.js +23 -2
  69. package/dist/runtime/query/iteration/index.js.map +1 -1
  70. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  71. package/dist/runtime/query/iteration/stream-turn.js +11 -1
  72. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  73. package/dist/runtime/query/observation-context.d.ts +10 -0
  74. package/dist/runtime/query/observation-context.d.ts.map +1 -0
  75. package/dist/runtime/query/observation-context.js +84 -0
  76. package/dist/runtime/query/observation-context.js.map +1 -0
  77. package/dist/runtime/query/request-context.d.ts +30 -0
  78. package/dist/runtime/query/request-context.d.ts.map +1 -0
  79. package/dist/runtime/query/request-context.js +76 -0
  80. package/dist/runtime/query/request-context.js.map +1 -0
  81. package/dist/runtime/query/request-rich-content.d.ts.map +1 -1
  82. package/dist/runtime/query/request-rich-content.js +6 -3
  83. package/dist/runtime/query/request-rich-content.js.map +1 -1
  84. package/dist/runtime/query/review-policy.d.ts +3 -0
  85. package/dist/runtime/query/review-policy.d.ts.map +1 -1
  86. package/dist/runtime/query/review-policy.js +4 -1
  87. package/dist/runtime/query/review-policy.js.map +1 -1
  88. package/dist/runtime/query/tooling.d.ts +1 -0
  89. package/dist/runtime/query/tooling.d.ts.map +1 -1
  90. package/dist/runtime/query/tooling.js +1 -0
  91. package/dist/runtime/query/tooling.js.map +1 -1
  92. package/dist/sandbox/file-walk-program.d.ts.map +1 -1
  93. package/dist/sandbox/file-walk-program.js +8 -0
  94. package/dist/sandbox/file-walk-program.js.map +1 -1
  95. package/dist/sandbox/file-walk.d.ts.map +1 -1
  96. package/dist/sandbox/file-walk.js +9 -0
  97. package/dist/sandbox/file-walk.js.map +1 -1
  98. package/dist/scheduler/completion-inbox.d.ts.map +1 -1
  99. package/dist/scheduler/completion-inbox.js +3 -0
  100. package/dist/scheduler/completion-inbox.js.map +1 -1
  101. package/dist/scheduler/local.d.ts.map +1 -1
  102. package/dist/scheduler/local.js +2 -0
  103. package/dist/scheduler/local.js.map +1 -1
  104. package/dist/store/run/token-budget-disk.js +3 -0
  105. package/dist/store/run/token-budget-disk.js.map +1 -1
  106. package/dist/testing.d.ts +1 -0
  107. package/dist/testing.d.ts.map +1 -1
  108. package/dist/testing.js +1 -0
  109. package/dist/testing.js.map +1 -1
  110. package/dist/tools/builtins/edit.d.ts.map +1 -1
  111. package/dist/tools/builtins/edit.js +12 -26
  112. package/dist/tools/builtins/edit.js.map +1 -1
  113. package/dist/tools/builtins/file-write-result.d.ts +4 -0
  114. package/dist/tools/builtins/file-write-result.d.ts.map +1 -0
  115. package/dist/tools/builtins/file-write-result.js +72 -0
  116. package/dist/tools/builtins/file-write-result.js.map +1 -0
  117. package/dist/tools/builtins/glob.d.ts.map +1 -1
  118. package/dist/tools/builtins/glob.js +8 -1
  119. package/dist/tools/builtins/glob.js.map +1 -1
  120. package/dist/tools/builtins/grep.d.ts.map +1 -1
  121. package/dist/tools/builtins/grep.js +10 -0
  122. package/dist/tools/builtins/grep.js.map +1 -1
  123. package/dist/tools/builtins/job.d.ts.map +1 -1
  124. package/dist/tools/builtins/job.js +6 -0
  125. package/dist/tools/builtins/job.js.map +1 -1
  126. package/dist/tools/builtins/read-file.d.ts.map +1 -1
  127. package/dist/tools/builtins/read-file.js +10 -0
  128. package/dist/tools/builtins/read-file.js.map +1 -1
  129. package/dist/tools/builtins/write-file.d.ts.map +1 -1
  130. package/dist/tools/builtins/write-file.js +30 -44
  131. package/dist/tools/builtins/write-file.js.map +1 -1
  132. package/dist/tools/coordinator/index.d.ts.map +1 -1
  133. package/dist/tools/coordinator/index.js +3 -0
  134. package/dist/tools/coordinator/index.js.map +1 -1
  135. package/dist/tools/file-read-tracker.d.ts +4 -0
  136. package/dist/tools/file-read-tracker.d.ts.map +1 -0
  137. package/dist/tools/file-read-tracker.js +16 -0
  138. package/dist/tools/file-read-tracker.js.map +1 -0
  139. package/dist/tools/task/list.js +2 -2
  140. package/dist/tools/task/list.js.map +1 -1
  141. package/dist/types/agent/reactive.d.ts +4 -0
  142. package/dist/types/agent/reactive.d.ts.map +1 -1
  143. package/dist/types/agent/scheduler.d.ts +3 -0
  144. package/dist/types/agent/scheduler.d.ts.map +1 -1
  145. package/dist/types/agent/task.d.ts +3 -0
  146. package/dist/types/agent/task.d.ts.map +1 -1
  147. package/dist/types/plugin/index.d.ts +7 -0
  148. package/dist/types/plugin/index.d.ts.map +1 -1
  149. package/dist/types/plugin/index.js.map +1 -1
  150. package/dist/types/provider/chat.d.ts +4 -0
  151. package/dist/types/provider/chat.d.ts.map +1 -1
  152. package/dist/types/provider/config.d.ts +2 -0
  153. package/dist/types/provider/config.d.ts.map +1 -1
  154. package/dist/types/provider/interface.d.ts +2 -0
  155. package/dist/types/provider/interface.d.ts.map +1 -1
  156. package/dist/types/provider/stream.d.ts +6 -0
  157. package/dist/types/provider/stream.d.ts.map +1 -1
  158. package/dist/types/run/config.d.ts +2 -0
  159. package/dist/types/run/config.d.ts.map +1 -1
  160. package/dist/types/run/events.d.ts +13 -0
  161. package/dist/types/run/events.d.ts.map +1 -1
  162. package/dist/types/run/events.js.map +1 -1
  163. package/dist/types/sandbox/index.d.ts +37 -3
  164. package/dist/types/sandbox/index.d.ts.map +1 -1
  165. package/dist/types/sandbox/index.js.map +1 -1
  166. package/dist/types/tool/presentation.d.ts +4 -0
  167. package/dist/types/tool/presentation.d.ts.map +1 -1
  168. package/package.json +1 -1
  169. package/src/agents/ReactiveAgent.ts +1 -0
  170. package/src/bridge/a2a/mapper.ts +2 -0
  171. package/src/bridge/sse/mapper.ts +16 -1
  172. package/src/config/runtime.ts +2 -0
  173. package/src/contracts/api.ts +1 -0
  174. package/src/manager/agent/lifecycle.ts +16 -9
  175. package/src/manager/plan/lifecycle.ts +15 -13
  176. package/src/prompt/coding-agent-doctrine.ts +11 -5
  177. package/src/provider/capabilities.ts +21 -0
  178. package/src/provider/fallback.ts +14 -3
  179. package/src/provider/idle-timeout.ts +6 -0
  180. package/src/provider/retry.ts +6 -0
  181. package/src/public-runtime.ts +2 -0
  182. package/src/public-tools.ts +2 -0
  183. package/src/public-types.ts +6 -0
  184. package/src/run/reporter.ts +1 -0
  185. package/src/run/token-budget.ts +51 -14
  186. package/src/runtime/query/executor.ts +23 -15
  187. package/src/runtime/query/index.ts +3 -0
  188. package/src/runtime/query/iteration/index.ts +28 -2
  189. package/src/runtime/query/iteration/stream-turn.ts +14 -1
  190. package/src/runtime/query/observation-context.ts +86 -0
  191. package/src/runtime/query/request-context.ts +103 -0
  192. package/src/runtime/query/request-rich-content.ts +8 -3
  193. package/src/runtime/query/review-policy.ts +7 -1
  194. package/src/runtime/query/tooling.ts +2 -0
  195. package/src/sandbox/file-walk-program.ts +8 -0
  196. package/src/sandbox/file-walk.ts +9 -0
  197. package/src/scheduler/completion-inbox.ts +3 -0
  198. package/src/scheduler/local.ts +2 -0
  199. package/src/store/run/token-budget-disk.ts +3 -0
  200. package/src/testing.ts +2 -0
  201. package/src/tools/builtins/edit.ts +12 -27
  202. package/src/tools/builtins/file-write-result.ts +84 -0
  203. package/src/tools/builtins/glob.ts +7 -1
  204. package/src/tools/builtins/grep.ts +10 -0
  205. package/src/tools/builtins/job.ts +8 -0
  206. package/src/tools/builtins/read-file.ts +10 -0
  207. package/src/tools/builtins/write-file.ts +39 -44
  208. package/src/tools/coordinator/index.ts +3 -0
  209. package/src/tools/file-read-tracker.ts +16 -0
  210. package/src/tools/task/list.ts +2 -2
  211. package/src/types/agent/reactive.ts +2 -0
  212. package/src/types/agent/scheduler.ts +4 -0
  213. package/src/types/agent/task.ts +4 -0
  214. package/src/types/plugin/index.ts +10 -0
  215. package/src/types/provider/chat.ts +2 -0
  216. package/src/types/provider/config.ts +2 -0
  217. package/src/types/provider/interface.ts +3 -0
  218. package/src/types/provider/stream.ts +7 -0
  219. package/src/types/run/config.ts +2 -0
  220. package/src/types/run/events.ts +13 -0
  221. package/src/types/sandbox/index.ts +43 -4
  222. package/src/types/tool/presentation.ts +4 -0
@@ -54,6 +54,10 @@ export interface CreateTaskOptions {
54
54
  */
55
55
  readonly parentSpan?: import('@opentelemetry/api').Span
56
56
 
57
+ /** Approved plan edge for live worker/progress correlation. */
58
+ readonly planId?: string
59
+ readonly planStepId?: string
60
+
57
61
  agentId: string
58
62
 
59
63
  /**
@@ -154,6 +154,10 @@ export interface SendMessageOptions {
154
154
  /** See {@link import('./scheduler.js').CreateTaskOptions.personaOverride}. */
155
155
  readonly personaOverride?: import('../persona/index.js').AgentPersona
156
156
 
157
+ /** Approved plan edge inherited from the delegation tool, when present. */
158
+ readonly planId?: string
159
+ readonly planStepId?: string
160
+
157
161
  agentId: string
158
162
 
159
163
  input: AgentInput
@@ -8,6 +8,10 @@ import {
8
8
  MAX_TOOLS_PER_PLUGIN,
9
9
  PLUGIN_NAME_MAX_LENGTH,
10
10
  } from '../../constants/plugin/index.js'
11
+ import type {
12
+ RequestContextChange,
13
+ RequestContextSnapshot,
14
+ } from '../../runtime/query/request-context.js'
11
15
  import type { PluginId, RunId, SessionId } from '../ids/index.js'
12
16
  import type { Message, ToolResultContent } from '../message/index.js'
13
17
  import type { CancelCause } from '../run/cancel-cause.js'
@@ -142,6 +146,12 @@ export function assertPluginHookEvent(event: PluginHookEvent): void {
142
146
  * contract by accident.
143
147
  */
144
148
  export interface PluginModelRequest {
149
+ /** SDK provider-input content inventory; excludes adapter/server-private transformations. */
150
+ readonly context?: {
151
+ readonly snapshot: RequestContextSnapshot
152
+ /** Compared with the preceding pre_llm_call in this run; absent on the first. */
153
+ readonly change?: RequestContextChange
154
+ }
145
155
  readonly model: string
146
156
  readonly messages: readonly Message[]
147
157
  /** Names only. A hook auditing tool exposure needs the set, not the schemas. */
@@ -34,6 +34,8 @@ export interface ChatCompletionParams {
34
34
  * calls may omit it; a provider then uses its own id, `model`, and index 0.
35
35
  */
36
36
  providerRoute?: ProviderRoute
37
+ /** Opt in to provider-hosted web search. Absent means no hosted search. */
38
+ webSearch?: { mode: 'cached' | 'live' }
37
39
  tools?: LLMToolSchema[]
38
40
  /**
39
41
  * Provider hint naming tools whose model-facing JSON Schema should be
@@ -121,6 +121,8 @@ export interface MockProviderConfig extends MockScript {
121
121
  * degradation is loud instead of silent.
122
122
  */
123
123
  export interface ProviderCapabilities {
124
+ /** Explicit provider-hosted web search support; absent means unsupported. */
125
+ supportsHostedWebSearch?: boolean
124
126
  /** Native JSON Schema response-format mapping. Absent means unsupported. */
125
127
  supportsNativeStructuredOutput?: boolean
126
128
  supportsTools: boolean
@@ -19,6 +19,9 @@ export interface LLMProvider {
19
19
  */
20
20
  readonly capabilities?: ProviderCapabilities
21
21
 
22
+ /** Refine hosted search support for a model and mode. Absent uses the driver-wide declaration. */
23
+ supportsHostedWebSearchFor?(model: string, mode: 'live' | 'cached'): boolean
24
+
22
25
  /**
23
26
  * Retry behaviour this DRIVER wants, when the generic default is wrong
24
27
  * for the vendor behind it.
@@ -9,6 +9,13 @@ export interface StreamChunk {
9
9
  */
10
10
  replayState?: unknown
11
11
  delta: {
12
+ /** Activity executed by the provider, never a local function-call request. */
13
+ hostedTool?: {
14
+ id: string
15
+ name: 'web_search'
16
+ status: 'running' | 'completed' | 'failed'
17
+ }
18
+
12
19
  content?: string
13
20
  toolCalls?: Array<{
14
21
  index: number
@@ -65,6 +65,8 @@ export interface AgentRunConfig {
65
65
  * high-effort and silently was not is worse than a startup error.
66
66
  */
67
67
  effort?: import('../provider/index.js').ReasoningEffort
68
+ /** Provider-hosted search for this run. Explicit opt-in; no local network permission. */
69
+ webSearch?: import('../provider/index.js').ChatCompletionParams['webSearch']
68
70
  tokenBudget: number
69
71
  costLimitUsd?: number
70
72
  maxIterations?: number
@@ -17,6 +17,7 @@ import type { Message } from '../message/index.js'
17
17
  import type { PlanStep } from '../plan/index.js'
18
18
  import type { PluginHookEvent, PluginHookResult } from '../plugin/index.js'
19
19
  import type { TaskStatus } from '../task/index.js'
20
+ import type { ToolResultView } from '../tool/presentation.js'
20
21
  import type { CancelCause } from './cancel-cause.js'
21
22
  import type { FencingToken } from './checkpoint-store.js'
22
23
  import type { Lineage } from './lineage.js'
@@ -367,6 +368,13 @@ type CoreRunEvent =
367
368
  /** Optional completion in [0,1] when the tool genuinely knows it. */
368
369
  fraction?: number
369
370
  }
371
+ /** Provider-executed activity, retained as evidence rather than a local tool request. */
372
+ | {
373
+ type: 'hosted_tool'
374
+ runId: RunId
375
+ iteration: number
376
+ tool: NonNullable<import('../provider/index.js').StreamChunk['delta']['hostedTool']>
377
+ }
370
378
  /**
371
379
  * A model call failed transiently and is being retried after a backoff.
372
380
  *
@@ -426,6 +434,8 @@ type CoreRunEvent =
426
434
  }
427
435
  | {
428
436
  type: 'tool_completed'
437
+ /** Bounded result view; omitted when output was overridden or truncated. */
438
+ presentation?: ToolResultView
429
439
  runId: RunId
430
440
  toolUseId: ToolUseId
431
441
  toolName: string
@@ -797,6 +807,9 @@ type CoreRunEvent =
797
807
  parentAgentId: string
798
808
  childAgentId: string
799
809
  depth: number
810
+ /** Approved plan edge carried while the blocking tool is still live. */
811
+ planId?: string
812
+ planStepId?: string
800
813
  }
801
814
  | {
802
815
  type: 'agent_completed'
@@ -233,6 +233,34 @@ export interface SandboxSpawnOptions {
233
233
  readonly env?: Record<string, string>
234
234
  }
235
235
 
236
+ /**
237
+ * One host-side end of a TCP connection opened from inside the sandbox.
238
+ *
239
+ * The connection is intentionally narrower than general sandbox networking:
240
+ * callers may reach a loopback service already running in the sandbox, while
241
+ * the sandbox's egress policy remains unchanged. This is the primitive a
242
+ * development-workspace gateway uses to publish an HTTP/WebSocket preview
243
+ * without copying the checkout into a second container.
244
+ */
245
+ export interface SandboxTcpConnection {
246
+ /** Queue bytes for the guest. False means pause the producer until onDrain. */
247
+ write(data: string | Uint8Array): boolean
248
+ end(): void
249
+ destroy(): void
250
+ /** Pause/resume bytes arriving from the guest without closing the stream. */
251
+ pause(): void
252
+ resume(): void
253
+ onData(listener: (chunk: Uint8Array) => void): () => void
254
+ onDrain(listener: () => void): () => void
255
+ readonly closed: Promise<void>
256
+ }
257
+
258
+ export interface SandboxTcpConnectOptions {
259
+ readonly port: number
260
+ /** Only guest loopback addresses are supported by the built-in backend. */
261
+ readonly host?: '127.0.0.1' | '::1'
262
+ }
263
+
236
264
  export interface Sandbox {
237
265
  readonly id: SandboxId
238
266
  readonly status: SandboxStatus
@@ -281,11 +309,18 @@ export interface Sandbox {
281
309
  * with `rootDir` as its working directory does not satisfy either the
282
310
  * confinement or the ownership contract.
283
311
  *
284
- * @deprecated No built-in backend currently satisfies both guarantees.
285
- * Use a separately owned terminal backend; this member will be removed in
286
- * a future major release after the repository's deprecation window.
312
+ * The Firecracker backend satisfies both guarantees by owning the PTY in the
313
+ * guest and awaiting its exit before the microVM is released. Backends that
314
+ * cannot provide that boundary omit the capability.
287
315
  */
288
316
  openTerminal?(options: OpenTerminalOptions): Promise<TerminalSession>
317
+ /**
318
+ * Connect to a loopback TCP service owned by this same sandbox.
319
+ *
320
+ * Optional. A backend that cannot preserve the same-workspace boundary must
321
+ * omit this capability rather than proxying to a different filesystem.
322
+ */
323
+ openTcpConnection?(options: SandboxTcpConnectOptions): Promise<SandboxTcpConnection>
289
324
  writeFile(path: string, content: string | Buffer): Promise<void>
290
325
  readFile(path: string): Promise<Buffer>
291
326
  /**
@@ -310,6 +345,7 @@ export interface Sandbox {
310
345
  listFiles(rootPath: string): Promise<readonly SandboxFileEntry[]>
311
346
  /**
312
347
  * Lazily enumerate regular files as absolute paths, without following symlinks.
348
+ * A regular-file root yields that file if its basename matches the pattern.
313
349
  * Cancellation and iterator return stop traversal. Exceeding the examined-entry
314
350
  * budget throws an error with code `ERR_FILE_WALK_LIMIT`; it is not an empty or
315
351
  * complete listing. Hosts requiring bounded search must refuse an absent method.
@@ -475,7 +511,10 @@ export interface ContainerSandboxLayout {
475
511
  * can inspect the post-default layout the model actually sees.
476
512
  */
477
513
  export interface ResolvedContainerSandboxLayout {
478
- readonly outputs: { readonly source: ContainerSandboxMountSource; readonly containerPath: string }
514
+ readonly outputs: {
515
+ readonly source: ContainerSandboxMountSource
516
+ readonly containerPath: string
517
+ }
479
518
  readonly uploads?: {
480
519
  readonly source: ContainerSandboxMountSource
481
520
  readonly containerPath: string
@@ -22,6 +22,8 @@ export type ToolCallView =
22
22
  readonly label: string
23
23
  /** Render this complete authored label without adding the registry name. */
24
24
  readonly presentation?: 'activity'
25
+ /** Successful observations may be grouped by hosts without discarding output. */
26
+ readonly activity?: 'exploration'
25
27
  /** A successful result may add no information beyond the completed call row. */
26
28
  readonly visibility?: 'hidden'
27
29
  }
@@ -32,6 +34,8 @@ export type ToolCallView =
32
34
  */
33
35
  | {
34
36
  readonly kind: 'diff'
37
+ /** Optional operation summary, distinct from the file path. */
38
+ readonly label?: string
35
39
  readonly path?: string
36
40
  readonly before: string
37
41
  readonly after: string