diff --git a/apps/server/src/services/plugins/plugin-api.ts b/apps/server/src/services/plugins/plugin-api.ts
index 3230a74f1d..47e0a24730 100644
--- a/apps/server/src/services/plugins/plugin-api.ts
+++ b/apps/server/src/services/plugins/plugin-api.ts
@@ -55,6 +55,7 @@ import type {
 } from "@get-bb/plugin-sdk";
 import {
   AGENT_TOOL_NAME_PATTERN,
+  assertNoRecursiveJsonSchemaReferences,
   BACKGROUND_NAME_PATTERN,
   CLI_COMMAND_NAME_PATTERN,
   isZodSchemaLike,
@@ -1025,6 +1026,10 @@ export function createPluginApi(options: {
           `tool "${name}" parameters must be a zod schema or a JSON-schema object`,
         );
       }
+      assertNoRecursiveJsonSchemaReferences(
+        inputSchema,
+        `tool "${name}" parameters`,
+      );
       const owner = isAgentToolNameTaken(name);
       if (owner !== undefined) {
         // Cross-plugin collision: the earlier registration wins; this one
diff --git a/apps/server/src/services/plugins/plugin-service.ts b/apps/server/src/services/plugins/plugin-service.ts
index 122956c1a3..59eb8876d4 100644
--- a/apps/server/src/services/plugins/plugin-service.ts
+++ b/apps/server/src/services/plugins/plugin-service.ts
@@ -21,6 +21,7 @@ import {
   type StandardSchemaV1Result,
 } from "@get-bb/plugin-sdk";
 import {
+  assertNoRecursiveJsonSchemaReferences,
   enforcePluginCliOutputLimit,
   PLUGIN_AGENT_DYNAMIC_INSTRUCTIONS_MAX_CHARS,
   PLUGIN_AGENT_SELECTION_MAX_IDS,
@@ -773,6 +774,10 @@ function normalizePluginAgentToolParameters(args: {
       `configure() output.tools[${index}].parameters must have root type "object"`,
     );
   }
+  assertNoRecursiveJsonSchemaReferences(
+    parameters,
+    `configure() output.tools[${index}].parameters`,
+  );
   return parameters;
 }
 
diff --git a/apps/server/test/services/plugins/plugin-agent-tools.test.ts b/apps/server/test/services/plugins/plugin-agent-tools.test.ts
index 549781e934..cf4f9f0aac 100644
--- a/apps/server/test/services/plugins/plugin-agent-tools.test.ts
+++ b/apps/server/test/services/plugins/plugin-agent-tools.test.ts
@@ -271,6 +271,59 @@ describe("bb.agents.registerTool", () => {
     ).toBe(1);
   });
 
+  it("rejects recursive tool schemas before they reach a provider", async () => {
+    const rootDir = await writePlugin(workDir, {
+      name: "bb-plugin-schema-refs",
+      serverSource: "export default function plugin() {}",
+    });
+    await service.installPath(rootDir);
+    const api = service.getApi("schema-refs")!;
+
+    expect(() =>
+      api.agents.registerTool({
+        name: "zod_recursive",
+        description: "Recursive zod schema",
+        parameters: z.object({ value: z.json() }),
+        execute: () => "unused",
+      }),
+    ).toThrow(/recursive JSON Schema \$ref/);
+
+    expect(() =>
+      api.agents.registerTool({
+        name: "raw_recursive",
+        description: "Recursive raw schema",
+        parameters: {
+          type: "object",
+          properties: { node: { $ref: "#node" } },
+          $defs: {
+            node: {
+              $anchor: "node",
+              type: "object",
+              properties: { next: { $ref: "#node" } },
+            },
+          },
+        },
+        execute: () => "unused",
+      }),
+    ).toThrow(
+      'tool "raw_recursive" parameters contains recursive JSON Schema $ref "#node"',
+    );
+
+    api.agents.registerTool({
+      name: "acyclic_ref",
+      description: "Acyclic local reference",
+      parameters: {
+        type: "object",
+        properties: { label: { $ref: "#/$defs/label" } },
+        $defs: { label: { type: "string" } },
+      },
+      execute: () => "ok",
+    });
+    expect(service.listAgentTools().map((tool) => tool.tool.name)).toEqual([
+      "acyclic_ref",
+    ]);
+  });
+
   it("keeps experimental status labels with a registered native tool", async () => {
     const rootDir = await writePlugin(workDir, {
       name: "bb-plugin-readable-tool",
@@ -664,7 +717,16 @@ describe("plugin tools reach thread runtime config", () => {
             if (context.provider.id === "claude-code") {
               throw new Error("conditional failure");
             }
-            return { tools: ["unknown_tool"], skills: [] };
+            return {
+              tools: [{
+                name: "broken_tool",
+                parameters: {
+                  type: "object",
+                  properties: { nested: { $ref: "#" } },
+                },
+              }],
+              skills: [],
+            };
           });
         }
       `,
diff --git a/packages/plugin-sdk/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts b/packages/plugin-sdk/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts
index 3ff18287f4..350e05b7d4 100644
--- a/packages/plugin-sdk/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts
+++ b/packages/plugin-sdk/bundled-types/bb-plugin-sdk-internal-host-policy.d.ts
@@ -266,6 +266,12 @@ declare function readRpcMethodContract(method: string, value: unknown): PluginRp
 /** Duck-typed zod detection: plugin sources may carry their own zod copy,
  * so instanceof is useless — anything with safeParse is treated as zod. */
 declare function isZodSchemaLike(value: unknown): boolean;
+/**
+ * Reject recursive local references before a tool schema reaches a provider.
+ * Some providers reject the complete tool list when any one schema contains a
+ * recursive `$ref`, so this is a shared production/fake-host boundary rule.
+ */
+declare function assertNoRecursiveJsonSchemaReferences(schema: unknown, subject: string): void;
 /** Compact issue summary from a (possibly foreign-instance) zod error. */
 declare function summarizeParseIssues(error: unknown): string;
 declare function enforcePluginCliOutputLimit(result: Omit<PluginCliExecutionResult, "error">, jsonOutput: boolean): PluginCliExecutionResult;
@@ -284,4 +290,4 @@ declare function enforcePluginCliOutputLimit(result: Omit<PluginCliExecutionResu
  */
 declare function adoptHttpRouteResponse(value: unknown): Response;
 
-export { AGENT_TOOL_NAME_PATTERN, BACKGROUND_NAME_PATTERN, CLI_COMMAND_NAME_PATTERN, KV_VALUE_MAX_BYTES, MENTION_PROVIDER_ID_PATTERN, PLUGIN_AGENT_DYNAMIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_SELECTION_MAX_IDS, PLUGIN_AGENT_STATIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, PLUGIN_AGENT_TOOL_PARAMETERS_MAX_BYTES, PLUGIN_HTTP_METHODS, PLUGIN_MENTION_TRIGGER_VALUES, PLUGIN_PROVIDER_COMPOSER_ACTION_VALUES, PLUGIN_PROVIDER_DISPLAY_NAME_MAX_CHARS, PLUGIN_PROVIDER_PERMISSION_MODE_VALUES, PLUGIN_PROVIDER_REASONING_LEVEL_VALUES, PROVIDER_ID_PATTERN, RESERVED_AGENT_TOOL_NAMES, RESERVED_BB_CLI_COMMANDS, RPC_METHOD_PATTERN, SETTING_KEY_PATTERN, adoptHttpRouteResponse, enforcePluginCliOutputLimit, isPluginMentionTrigger, isStandardSchema, isZodSchemaLike, normalizeMentionProviderTriggers, readRpcMethodContract, registerSettingDescriptors, summarizeParseIssues, validatePluginProviderDeclaration, validateSettingsUpdate };
+export { AGENT_TOOL_NAME_PATTERN, BACKGROUND_NAME_PATTERN, CLI_COMMAND_NAME_PATTERN, KV_VALUE_MAX_BYTES, MENTION_PROVIDER_ID_PATTERN, PLUGIN_AGENT_DYNAMIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_SELECTION_MAX_IDS, PLUGIN_AGENT_STATIC_INSTRUCTIONS_MAX_CHARS, PLUGIN_AGENT_STATUS_LABEL_MAX_CHARS, PLUGIN_AGENT_TOOL_PARAMETERS_MAX_BYTES, PLUGIN_HTTP_METHODS, PLUGIN_MENTION_TRIGGER_VALUES, PLUGIN_PROVIDER_COMPOSER_ACTION_VALUES, PLUGIN_PROVIDER_DISPLAY_NAME_MAX_CHARS, PLUGIN_PROVIDER_PERMISSION_MODE_VALUES, PLUGIN_PROVIDER_REASONING_LEVEL_VALUES, PROVIDER_ID_PATTERN, RESERVED_AGENT_TOOL_NAMES, RESERVED_BB_CLI_COMMANDS, RPC_METHOD_PATTERN, SETTING_KEY_PATTERN, adoptHttpRouteResponse, assertNoRecursiveJsonSchemaReferences, enforcePluginCliOutputLimit, isPluginMentionTrigger, isStandardSchema, isZodSchemaLike, normalizeMentionProviderTriggers, readRpcMethodContract, registerSettingDescriptors, summarizeParseIssues, validatePluginProviderDeclaration, validateSettingsUpdate };
diff --git a/packages/plugin-sdk/bundled-types/bb-plugin-sdk.d.ts b/packages/plugin-sdk/bundled-types/bb-plugin-sdk.d.ts
index 95a0b7b77e..62fa9301ef 100644
--- a/packages/plugin-sdk/bundled-types/bb-plugin-sdk.d.ts
+++ b/packages/plugin-sdk/bundled-types/bb-plugin-sdk.d.ts
@@ -14043,7 +14043,7 @@ interface PluginAgentToolSelection {
      * 128 KiB serialized) sent to the provider in place of the registered
      * parameter schema. Execution-side validation still runs the registered
      * parameters, so the override must only narrow what the registered schema
-     * already accepts. */
+     * already accepts. Recursive local `$ref` chains are rejected. */
     parameters: Record<string, unknown>;
 }
 /** Per-resolution selection returned by {@link PluginAgents.configure}. */
@@ -14187,7 +14187,9 @@ interface PluginAgents {
      * start — a tool registered mid-session is not hot-added to running
      * provider sessions. A second registration of the same name within this
      * plugin is rejected; a name already registered by another plugin is
-     * rejected and surfaced as this plugin's status detail.
+     * rejected and surfaced as this plugin's status detail. Recursive local
+     * JSON Schema `$ref` chains are rejected because some model providers reject
+     * the complete tool list when any one tool contains them.
      */
     registerTool<Schema extends z.ZodType>(tool: PluginAgentToolRegistrationBase & {
         parameters: Schema;
diff --git a/packages/plugin-sdk/src/backend-contract.ts b/packages/plugin-sdk/src/backend-contract.ts
index ab0770c86f..4ef04d6265 100644
--- a/packages/plugin-sdk/src/backend-contract.ts
+++ b/packages/plugin-sdk/src/backend-contract.ts
@@ -449,7 +449,7 @@ export interface PluginAgentToolSelection {
    * 128 KiB serialized) sent to the provider in place of the registered
    * parameter schema. Execution-side validation still runs the registered
    * parameters, so the override must only narrow what the registered schema
-   * already accepts. */
+   * already accepts. Recursive local `$ref` chains are rejected. */
   parameters: Record<string, unknown>;
 }
 
@@ -616,7 +616,9 @@ export interface PluginAgents {
    * start — a tool registered mid-session is not hot-added to running
    * provider sessions. A second registration of the same name within this
    * plugin is rejected; a name already registered by another plugin is
-   * rejected and surfaced as this plugin's status detail.
+   * rejected and surfaced as this plugin's status detail. Recursive local
+   * JSON Schema `$ref` chains are rejected because some model providers reject
+   * the complete tool list when any one tool contains them.
    */
   registerTool<Schema extends z.ZodType>(
     tool: PluginAgentToolRegistrationBase & {
diff --git a/packages/plugin-sdk/src/internal/host-policy.ts b/packages/plugin-sdk/src/internal/host-policy.ts
index 60cad89ecf..4233487eb3 100644
--- a/packages/plugin-sdk/src/internal/host-policy.ts
+++ b/packages/plugin-sdk/src/internal/host-policy.ts
@@ -502,6 +502,177 @@ export function isZodSchemaLike(value: unknown): boolean {
   );
 }
 
+const SINGLE_SCHEMA_KEYWORDS = [
+  "additionalItems",
+  "additionalProperties",
+  "contains",
+  "contentSchema",
+  "else",
+  "if",
+  "items",
+  "not",
+  "propertyNames",
+  "then",
+  "unevaluatedItems",
+  "unevaluatedProperties",
+] as const;
+
+const SCHEMA_ARRAY_KEYWORDS = [
+  "allOf",
+  "anyOf",
+  "oneOf",
+  "prefixItems",
+] as const;
+
+const SCHEMA_MAP_KEYWORDS = [
+  "$defs",
+  "definitions",
+  "dependentSchemas",
+  "patternProperties",
+  "properties",
+] as const;
+
+function isJsonSchemaObject(value: unknown): value is Record<string, unknown> {
+  return typeof value === "object" && value !== null && !Array.isArray(value);
+}
+
+function decodeJsonPointerToken(token: string): string {
+  return token.replaceAll("~1", "/").replaceAll("~0", "~");
+}
+
+function resolveLocalJsonSchemaReference(
+  document: Record<string, unknown>,
+  anchors: ReadonlyMap<string, Record<string, unknown>>,
+  reference: string,
+): unknown {
+  if (!reference.startsWith("#")) return undefined;
+  let pointer: string;
+  try {
+    pointer = decodeURIComponent(reference.slice(1));
+  } catch {
+    return undefined;
+  }
+  if (pointer.length === 0) return document;
+  if (!pointer.startsWith("/")) return anchors.get(pointer);
+
+  let current: unknown = document;
+  for (const encodedToken of pointer.slice(1).split("/")) {
+    const token = decodeJsonPointerToken(encodedToken);
+    if (Array.isArray(current)) {
+      if (!/^(0|[1-9][0-9]*)$/.test(token)) return undefined;
+      current = current[Number(token)];
+      continue;
+    }
+    if (!isJsonSchemaObject(current) || !Object.hasOwn(current, token)) {
+      return undefined;
+    }
+    current = current[token];
+  }
+  return current;
+}
+
+function forEachJsonSchemaChild(
+  schema: Record<string, unknown>,
+  visit: (child: unknown) => void,
+): void {
+  for (const keyword of SINGLE_SCHEMA_KEYWORDS) {
+    const child = schema[keyword];
+    if (Array.isArray(child)) {
+      for (const entry of child) visit(entry);
+    } else {
+      visit(child);
+    }
+  }
+  for (const keyword of SCHEMA_ARRAY_KEYWORDS) {
+    const children = schema[keyword];
+    if (!Array.isArray(children)) continue;
+    for (const child of children) visit(child);
+  }
+  for (const keyword of SCHEMA_MAP_KEYWORDS) {
+    const children = schema[keyword];
+    if (!isJsonSchemaObject(children)) continue;
+    for (const child of Object.values(children)) visit(child);
+  }
+  const dependencies = schema.dependencies;
+  if (isJsonSchemaObject(dependencies)) {
+    for (const dependency of Object.values(dependencies)) {
+      if (!Array.isArray(dependency)) visit(dependency);
+    }
+  }
+}
+
+/**
+ * Reject recursive local references before a tool schema reaches a provider.
+ * Some providers reject the complete tool list when any one schema contains a
+ * recursive `$ref`, so this is a shared production/fake-host boundary rule.
+ */
+export function assertNoRecursiveJsonSchemaReferences(
+  schema: unknown,
+  subject: string,
+): void {
+  if (!isJsonSchemaObject(schema)) return;
+  const document = schema;
+  const anchors = new Map<string, Record<string, unknown>>();
+  const indexed = new Set<object>();
+
+  function indexAnchors(candidate: unknown): void {
+    if (!isJsonSchemaObject(candidate) || indexed.has(candidate)) return;
+    indexed.add(candidate);
+    for (const keyword of ["$anchor", "$dynamicAnchor"] as const) {
+      const anchor = candidate[keyword];
+      if (typeof anchor === "string") anchors.set(anchor, candidate);
+    }
+    for (const keyword of ["$id", "id"] as const) {
+      const id = candidate[keyword];
+      if (typeof id === "string" && /^#[^/]+$/.test(id)) {
+        anchors.set(id.slice(1), candidate);
+      }
+    }
+    forEachJsonSchemaChild(candidate, indexAnchors);
+  }
+
+  indexAnchors(document);
+
+  const visited = new Set<object>();
+  const visiting = new Set<object>();
+
+  function visit(
+    candidate: unknown,
+    viaReference?: { keyword: string; value: string },
+  ): void {
+    if (typeof candidate === "boolean" || !isJsonSchemaObject(candidate)) {
+      return;
+    }
+    if (visiting.has(candidate)) {
+      throw new Error(
+        `${subject} contains recursive JSON Schema ${viaReference?.keyword ?? "$ref"} ${JSON.stringify(viaReference?.value ?? "#")}`,
+      );
+    }
+    if (visited.has(candidate)) return;
+
+    visiting.add(candidate);
+    for (const keyword of ["$ref", "$recursiveRef", "$dynamicRef"] as const) {
+      const reference = candidate[keyword];
+      if (typeof reference === "string" && reference.startsWith("#")) {
+        const target = resolveLocalJsonSchemaReference(
+          document,
+          anchors,
+          reference,
+        );
+        if (target !== undefined) {
+          visit(target, { keyword, value: reference });
+        }
+      }
+    }
+    forEachJsonSchemaChild(candidate, visit);
+
+    visiting.delete(candidate);
+    visited.add(candidate);
+  }
+
+  visit(schema);
+}
+
 /** Compact issue summary from a (possibly foreign-instance) zod error. */
 export function summarizeParseIssues(error: unknown): string {
   const issues = (
diff --git a/packages/plugin-sdk/src/testing/__tests__/fake-plugin-host.test.ts b/packages/plugin-sdk/src/testing/__tests__/fake-plugin-host.test.ts
index e2bb813d61..68051f174b 100644
--- a/packages/plugin-sdk/src/testing/__tests__/fake-plugin-host.test.ts
+++ b/packages/plugin-sdk/src/testing/__tests__/fake-plugin-host.test.ts
@@ -727,6 +727,49 @@ describe("agent tools", () => {
     ).rejects.toThrow('tool "lookup_doc" arguments are invalid');
   });
 
+  it("rejects recursive schemas at registration and configuration", async () => {
+    const { bb, harness } = createFakePluginHost();
+
+    expect(() =>
+      bb.agents.registerTool({
+        name: "recursive_zod",
+        description: "Recursive zod schema",
+        parameters: z.object({ value: z.json() }),
+        execute: () => "unused",
+      }),
+    ).toThrow(/recursive JSON Schema \$ref/);
+
+    bb.agents.registerTool({
+      name: "acyclic_ref",
+      description: "Acyclic local reference",
+      parameters: {
+        type: "object",
+        properties: { label: { $ref: "#/$defs/label" } },
+        $defs: { label: { type: "string" } },
+      },
+      execute: () => "ok",
+    });
+    bb.agents.configure(() => ({
+      tools: [
+        {
+          name: "acyclic_ref",
+          parameters: {
+            type: "object",
+            properties: { nested: { $ref: "#" } },
+          },
+        },
+      ],
+      skills: [],
+    }));
+
+    await expect(
+      harness.resolveAgentConfiguration(configurationContext),
+    ).resolves.toEqual({ tools: [], skills: [], instructions: null });
+    expect(harness.logEntries.at(-1)?.message).toContain(
+      "recursive JSON Schema $ref",
+    );
+  });
+
   it("rejects duplicate keyed registrations like the production host", () => {
     const { bb } = createFakePluginHost();
     const tool = {
diff --git a/packages/plugin-sdk/src/testing/fake-plugin-host.ts b/packages/plugin-sdk/src/testing/fake-plugin-host.ts
index 0cba2e539b..e5c4fadfa5 100644
--- a/packages/plugin-sdk/src/testing/fake-plugin-host.ts
+++ b/packages/plugin-sdk/src/testing/fake-plugin-host.ts
@@ -8,6 +8,7 @@ import { z } from "zod";
 import { PLUGIN_INTERACTION_MAX_TITLE_LENGTH } from "@bb/domain/plugin-interaction-limits";
 import {
   AGENT_TOOL_NAME_PATTERN,
+  assertNoRecursiveJsonSchemaReferences,
   BACKGROUND_NAME_PATTERN,
   CLI_COMMAND_NAME_PATTERN,
   enforcePluginCliOutputLimit,
@@ -688,6 +689,10 @@ function normalizeAgentToolParameters(args: {
       `configure() output.tools[${index}].parameters must have root type "object"`,
     );
   }
+  assertNoRecursiveJsonSchemaReferences(
+    parameters,
+    `configure() output.tools[${index}].parameters`,
+  );
   return parameters;
 }
 
@@ -1350,6 +1355,10 @@ function createFakePluginHostInternal(
           `tool "${name}" parameters must be a zod schema or a JSON-schema object`,
         );
       }
+      assertNoRecursiveJsonSchemaReferences(
+        inputSchema,
+        `tool "${name}" parameters`,
+      );
       const record: FakeAgentToolRecord = {
         name,
         description: tool.description,
diff --git a/packages/templates/src/generated/plugin-sdk-dts.generated.ts b/packages/templates/src/generated/plugin-sdk-dts.generated.ts
index ab89f3cc1d..56a6b373ae 100644
--- a/packages/templates/src/generated/plugin-sdk-dts.generated.ts
+++ b/packages/templates/src/generated/plugin-sdk-dts.generated.ts
@@ -2,6 +2,6 @@
 // Generated by packages/templates/scripts/generate-templates.mjs from
 // @get-bb/plugin-sdk/bundled-types. Do not edit directly.
 
-export const PLUGIN_SDK_DTS = "// Portable type declarations for `@get-bb/plugin-sdk`. Unpublished BB\n// workspace contracts are flattened; public subpaths may reuse the\n// package root without requiring any other @bb/* package.\n//\n// Confused by the API, or need a symbol that isn't here? Clone the BB repo\n// and read the real source: https://github.com/get-bb/bb\n\nimport * as react from 'react';\nimport { ComponentType, ReactNode } from 'react';\nimport * as z from 'zod';\nimport { z as z$1 } from 'zod';\nimport Database from 'better-sqlite3';\nimport { Context } from 'hono';\n\n/**\n * App-wide server-backed preferences.\n * Client-local settings stay in the frontend localStorage helpers instead.\n */\ndeclare const appSettingsSchema: z$1.ZodObject<{\n    showKeyboardHints: z$1.ZodBoolean;\n    steerActiveThreadOnEnter: z$1.ZodBoolean;\n    showUnhandledProviderEvents: z$1.ZodBoolean;\n    codexMemoryEnabled: z$1.ZodBoolean;\n    claudeCodeMemoryEnabled: z$1.ZodBoolean;\n    codexSubagentsDisabled: z$1.ZodBoolean;\n    claudeCodeSubagentsDisabled: z$1.ZodBoolean;\n    claudeCodeWorkflowsDisabled: z$1.ZodBoolean;\n    onboardingCompletedAt: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype AppSettings = z$1.infer<typeof appSettingsSchema>;\n\ndeclare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{\n    command: z$1.ZodEnum<{\n        \"thread.jump.1\": \"thread.jump.1\";\n        \"thread.jump.2\": \"thread.jump.2\";\n        \"thread.jump.3\": \"thread.jump.3\";\n        \"thread.jump.4\": \"thread.jump.4\";\n        \"thread.jump.5\": \"thread.jump.5\";\n        \"thread.jump.6\": \"thread.jump.6\";\n        \"thread.jump.7\": \"thread.jump.7\";\n        \"thread.jump.8\": \"thread.jump.8\";\n        \"thread.jump.9\": \"thread.jump.9\";\n        \"question.select.1\": \"question.select.1\";\n        \"question.select.2\": \"question.select.2\";\n        \"question.select.3\": \"question.select.3\";\n        \"question.select.4\": \"question.select.4\";\n        \"question.select.5\": \"question.select.5\";\n        \"question.select.6\": \"question.select.6\";\n        \"question.select.7\": \"question.select.7\";\n        \"question.select.8\": \"question.select.8\";\n        \"question.select.9\": \"question.select.9\";\n        \"pane.focus.1\": \"pane.focus.1\";\n        \"pane.focus.2\": \"pane.focus.2\";\n        \"pane.focus.3\": \"pane.focus.3\";\n        \"pane.focus.4\": \"pane.focus.4\";\n        \"pane.focus.5\": \"pane.focus.5\";\n        \"pane.focus.6\": \"pane.focus.6\";\n        \"pane.focus.7\": \"pane.focus.7\";\n        \"pane.focus.8\": \"pane.focus.8\";\n        \"thread.new\": \"thread.new\";\n        \"thread.search\": \"thread.search\";\n        \"thread.rename\": \"thread.rename\";\n        \"thread.archive\": \"thread.archive\";\n        \"thread.previous\": \"thread.previous\";\n        \"thread.next\": \"thread.next\";\n        \"pane.focus.previous\": \"pane.focus.previous\";\n        \"pane.focus.next\": \"pane.focus.next\";\n        \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n        \"pane.close\": \"pane.close\";\n        \"window.new\": \"window.new\";\n        \"settings.open\": \"settings.open\";\n        \"settings.openServers\": \"settings.openServers\";\n        \"sidebar.toggle\": \"sidebar.toggle\";\n        \"panel.newTab\": \"panel.newTab\";\n        \"panel.close\": \"panel.close\";\n        \"panel.toggle\": \"panel.toggle\";\n        \"file.quickOpen\": \"file.quickOpen\";\n        \"diff.toggle\": \"diff.toggle\";\n        \"terminal.open\": \"terminal.open\";\n        \"composer.focus\": \"composer.focus\";\n        \"modelPicker.toggle\": \"modelPicker.toggle\";\n        \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n        \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n        \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n        \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n        \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n        \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n        \"browser.focusLocation\": \"browser.focusLocation\";\n        \"browser.reload\": \"browser.reload\";\n        \"workspace.openPreferred\": \"workspace.openPreferred\";\n    }>;\n    shortcut: z$1.ZodNullable<z$1.ZodObject<{\n        key: z$1.ZodString;\n        mod: z$1.ZodBoolean;\n        meta: z$1.ZodBoolean;\n        control: z$1.ZodBoolean;\n        alt: z$1.ZodBoolean;\n        shift: z$1.ZodBoolean;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strict>>;\ntype AppKeybindingOverrides = z$1.infer<typeof appKeybindingOverridesSchema>;\n\ninterface JsonObject {\n    [key: string]: JsonValue$1;\n}\ntype JsonValue$1 = string | number | boolean | null | JsonValue$1[] | JsonObject;\n\ndeclare const appThemeSchema: z$1.ZodObject<{\n    themeId: z$1.ZodString;\n    customCss: z$1.ZodNullable<z$1.ZodString>;\n    faviconColor: z$1.ZodEnum<{\n        default: \"default\";\n        red: \"red\";\n        orange: \"orange\";\n        yellow: \"yellow\";\n        green: \"green\";\n        teal: \"teal\";\n        blue: \"blue\";\n        purple: \"purple\";\n        pink: \"pink\";\n    }>;\n    resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n        dark: z$1.ZodString;\n        light: z$1.ZodString;\n        files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>;\ntype AppTheme = z$1.infer<typeof appThemeSchema>;\n/**\n * The complete appearance selection a client sends when changing the palette\n * and/or favicon tint. The server validates `themeId` (built-in id or an\n * existing custom theme) and resolves the CSS from disk for custom themes.\n * Callers changing only one facet must carry the other facet forward explicitly.\n */\ndeclare const appThemeSelectionSchema: z$1.ZodObject<{\n    themeId: z$1.ZodString;\n    faviconColor: z$1.ZodEnum<{\n        default: \"default\";\n        red: \"red\";\n        orange: \"orange\";\n        yellow: \"yellow\";\n        green: \"green\";\n        teal: \"teal\";\n        blue: \"blue\";\n        purple: \"purple\";\n        pink: \"pink\";\n    }>;\n}, z$1.core.$strip>;\ntype AppThemeSelection = z$1.infer<typeof appThemeSelectionSchema>;\n\ndeclare const changedMessageSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"thread\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    metadata: z$1.ZodOptional<z$1.ZodObject<{\n        backgroundActivityChanged: z$1.ZodOptional<z$1.ZodBoolean>;\n        eventTypes: z$1.ZodOptional<z$1.ZodReadonly<z$1.ZodArray<z$1.ZodString & z$1.ZodType<\"thread/started\" | \"thread/identity\" | \"turn/started\" | \"turn/completed\" | \"turn/input/accepted\" | \"thread/name/updated\" | \"thread/compacted\" | \"thread/context/cleared\" | \"thread/goal/updated\" | \"thread/goal/cleared\" | \"item/started\" | \"item/completed\" | \"item/agentMessage/delta\" | \"item/commandExecution/outputDelta\" | \"item/fileChange/outputDelta\" | \"item/reasoning/summaryTextDelta\" | \"item/reasoning/textDelta\" | \"item/plan/delta\" | \"item/mcpToolCall/progress\" | \"item/toolCall/progress\" | \"item/backgroundTask/progress\" | \"item/backgroundTask/completed\" | \"thread/tokenUsage/updated\" | \"thread/contextWindowUsage/updated\" | \"turn/plan/updated\" | \"turn/diff/updated\" | \"provider/error\" | \"provider/rateLimits/updated\" | \"provider/warning\" | \"provider/modelFallback\" | \"provider/unhandled\" | \"client/thread/start\" | \"client/turn/requested\" | \"client/turn/start\" | \"client/turn/rejected\" | \"system/error\" | \"system/manager/user_message\" | \"system/thread/interrupted\" | \"system/operation\" | \"system/permissionGrant/lifecycle\" | \"system/userQuestion/lifecycle\" | \"system/thread-provisioning\" | \"system/provider-turn-watchdog\", string, z$1.core.$ZodTypeInternals<\"thread/started\" | \"thread/identity\" | \"turn/started\" | \"turn/completed\" | \"turn/input/accepted\" | \"thread/name/updated\" | \"thread/compacted\" | \"thread/context/cleared\" | \"thread/goal/updated\" | \"thread/goal/cleared\" | \"item/started\" | \"item/completed\" | \"item/agentMessage/delta\" | \"item/commandExecution/outputDelta\" | \"item/fileChange/outputDelta\" | \"item/reasoning/summaryTextDelta\" | \"item/reasoning/textDelta\" | \"item/plan/delta\" | \"item/mcpToolCall/progress\" | \"item/toolCall/progress\" | \"item/backgroundTask/progress\" | \"item/backgroundTask/completed\" | \"thread/tokenUsage/updated\" | \"thread/contextWindowUsage/updated\" | \"turn/plan/updated\" | \"turn/diff/updated\" | \"provider/error\" | \"provider/rateLimits/updated\" | \"provider/warning\" | \"provider/modelFallback\" | \"provider/unhandled\" | \"client/thread/start\" | \"client/turn/requested\" | \"client/turn/start\" | \"client/turn/rejected\" | \"system/error\" | \"system/manager/user_message\" | \"system/thread/interrupted\" | \"system/operation\" | \"system/permissionGrant/lifecycle\" | \"system/userQuestion/lifecycle\" | \"system/thread-provisioning\" | \"system/provider-turn-watchdog\", string>>>>>;\n        hasPendingInteraction: z$1.ZodOptional<z$1.ZodBoolean>;\n        projectId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"thread-created\": \"thread-created\";\n        \"thread-deleted\": \"thread-deleted\";\n        \"events-appended\": \"events-appended\";\n        \"history-rewritten\": \"history-rewritten\";\n        \"interactions-changed\": \"interactions-changed\";\n        \"status-changed\": \"status-changed\";\n        \"title-changed\": \"title-changed\";\n        \"queue-changed\": \"queue-changed\";\n        \"archived-changed\": \"archived-changed\";\n        \"pin-state-changed\": \"pin-state-changed\";\n        \"parent-changed\": \"parent-changed\";\n        \"environment-changed\": \"environment-changed\";\n        \"read-state-changed\": \"read-state-changed\";\n        \"order-changed\": \"order-changed\";\n        \"tabs-changed\": \"tabs-changed\";\n        \"terminals-changed\": \"terminals-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"project\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"project-created\": \"project-created\";\n        \"project-updated\": \"project-updated\";\n        \"project-deleted\": \"project-deleted\";\n        \"project-sources-changed\": \"project-sources-changed\";\n        \"threads-changed\": \"threads-changed\";\n        \"project-order-changed\": \"project-order-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"environment\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"status-changed\": \"status-changed\";\n        \"environment-created\": \"environment-created\";\n        \"environment-deleted\": \"environment-deleted\";\n        \"metadata-changed\": \"metadata-changed\";\n        \"work-status-changed\": \"work-status-changed\";\n        \"git-refs-changed\": \"git-refs-changed\";\n        \"thread-storage-changed\": \"thread-storage-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"host\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"host-connected\": \"host-connected\";\n        \"host-disconnected\": \"host-disconnected\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"system\">;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"config-changed\": \"config-changed\";\n        \"plugins-changed\": \"plugins-changed\";\n    }>>>;\n}, z$1.core.$strict>], \"entity\">;\ntype ChangedMessage = z$1.infer<typeof changedMessageSchema>;\n\ndeclare const environmentSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodNullable<z$1.ZodString>;\n    projectId: z$1.ZodString;\n    hostId: z$1.ZodString;\n    path: z$1.ZodNullable<z$1.ZodString>;\n    managed: z$1.ZodBoolean;\n    isGitRepo: z$1.ZodBoolean;\n    isWorktree: z$1.ZodBoolean;\n    workspaceProvisionType: z$1.ZodEnum<{\n        unmanaged: \"unmanaged\";\n        \"managed-worktree\": \"managed-worktree\";\n        personal: \"personal\";\n    }>;\n    branchName: z$1.ZodNullable<z$1.ZodString>;\n    baseBranch: z$1.ZodNullable<z$1.ZodString>;\n    defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    mergeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        provisioning: \"provisioning\";\n        ready: \"ready\";\n        retiring: \"retiring\";\n        destroying: \"destroying\";\n        destroyed: \"destroyed\";\n    }>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype Environment = z$1.infer<typeof environmentSchema>;\n\ndeclare const experimentsSchema: z$1.ZodRecord<z$1.ZodEnum<{\n    claudeCodeMockCliTraffic: \"claudeCodeMockCliTraffic\";\n    editMessages: \"editMessages\";\n    newOnboarding: \"newOnboarding\";\n    providerSessionReaping: \"providerSessionReaping\";\n}>, z$1.ZodBoolean>;\ntype Experiments = z$1.infer<typeof experimentsSchema>;\n\ndeclare const hostSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    type: z$1.ZodEnum<{\n        persistent: \"persistent\";\n    }>;\n    status: z$1.ZodEnum<{\n        connected: \"connected\";\n        disconnected: \"disconnected\";\n    }>;\n    maxPermissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    lastSeenAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastRejectedProtocolVersion: z$1.ZodNullable<z$1.ZodNumber>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype Host = z$1.infer<typeof hostSchema>;\n\ndeclare const pendingInteractionResolutionSchema: z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"allow_once\">;\n    grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n        network: z$1.ZodNullable<z$1.ZodObject<{\n            enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n        }, z$1.core.$strip>>;\n        fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n            read: z$1.ZodArray<z$1.ZodString>;\n            write: z$1.ZodArray<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"allow_for_session\">;\n    grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n        network: z$1.ZodNullable<z$1.ZodObject<{\n            enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n        }, z$1.core.$strip>>;\n        fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n            read: z$1.ZodArray<z$1.ZodString>;\n            write: z$1.ZodArray<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"deny\">;\n}, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"user_answer\">;\n    answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n        selected: z$1.ZodArray<z$1.ZodString>;\n        freeText: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"plugin_submitted\">;\n}, z$1.core.$strip>]>;\ntype PendingInteractionResolution = z$1.infer<typeof pendingInteractionResolutionSchema>;\ndeclare const providerPendingInteractionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    origin: z$1.ZodOptional<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"provider\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    payload: z$1.ZodUnion<readonly [z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"approval\">;\n        subject: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            itemId: z$1.ZodString;\n            command: z$1.ZodString;\n            cwd: z$1.ZodNullable<z$1.ZodString>;\n            actions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"read\">;\n                command: z$1.ZodString;\n                name: z$1.ZodString;\n                path: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"listFiles\">;\n                command: z$1.ZodString;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"search\">;\n                command: z$1.ZodString;\n                query: z$1.ZodNullable<z$1.ZodString>;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"unknown\">;\n                command: z$1.ZodString;\n            }, z$1.core.$strip>], \"type\">>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"file_change\">;\n            itemId: z$1.ZodString;\n            writeScope: z$1.ZodNullable<z$1.ZodString>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"permission_grant\">;\n            itemId: z$1.ZodString;\n            toolName: z$1.ZodNullable<z$1.ZodString>;\n            permissions: z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            itemId: z$1.ZodString;\n            plan: z$1.ZodString;\n            planFilePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"kind\">;\n        reason: z$1.ZodNullable<z$1.ZodString>;\n        availableDecisions: z$1.ZodArray<z$1.ZodEnum<{\n            allow_once: \"allow_once\";\n            allow_for_session: \"allow_for_session\";\n            deny: \"deny\";\n        }>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>;\n    resolution: z$1.ZodNullable<z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>>;\n}, z$1.core.$strip>;\ntype ProviderPendingInteraction = z$1.infer<typeof providerPendingInteractionSchema>;\ndeclare const pluginPendingInteractionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    origin: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        pluginId: z$1.ZodString;\n        rendererId: z$1.ZodString;\n    }, z$1.core.$strip>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        title: z$1.ZodString;\n        data: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strip>;\n    resolution: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin_submitted\">;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginPendingInteraction = z$1.infer<typeof pluginPendingInteractionSchema>;\ntype PendingInteraction = ProviderPendingInteraction | PluginPendingInteraction;\n\ndeclare const projectSourceSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    isDefault: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    type: z$1.ZodLiteral<\"local_path\">;\n    hostId: z$1.ZodString;\n    path: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ProjectSource = z$1.infer<typeof projectSourceSchema>;\n\ndeclare const reasoningLevelSchema: z$1.ZodEnum<{\n    none: \"none\";\n    low: \"low\";\n    medium: \"medium\";\n    high: \"high\";\n    xhigh: \"xhigh\";\n    ultracode: \"ultracode\";\n    max: \"max\";\n    ultra: \"ultra\";\n}>;\ntype ReasoningLevel = z$1.infer<typeof reasoningLevelSchema>;\ndeclare const serviceTierSchema: z$1.ZodEnum<{\n    default: \"default\";\n    fast: \"fast\";\n}>;\ntype ServiceTier = z$1.infer<typeof serviceTierSchema>;\ndeclare const permissionModeSchema: z$1.ZodEnum<{\n    full: \"full\";\n    auto: \"auto\";\n    \"accept-edits\": \"accept-edits\";\n}>;\ntype PermissionMode = z$1.infer<typeof permissionModeSchema>;\ndeclare const promptInputSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"text\">;\n    text: z$1.ZodString;\n    mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n        start: z$1.ZodNumber;\n        end: z$1.ZodNumber;\n        resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"thread\">;\n            threadId: z$1.ZodString;\n            projectId: z$1.ZodOptional<z$1.ZodString>;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"project\">;\n            projectId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"section\">;\n            sectionId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"path\">;\n            source: z$1.ZodEnum<{\n                workspace: \"workspace\";\n                \"thread-storage\": \"thread-storage\";\n            }>;\n            entryKind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                user: \"user\";\n                project: \"project\";\n                builtin: \"builtin\";\n            }>;\n            label: z$1.ZodString;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin\">;\n            pluginId: z$1.ZodString;\n            icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n            itemId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">>;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"image\">;\n    url: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"localImage\">;\n    path: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"localFile\">;\n    path: z$1.ZodString;\n    name: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>], \"type\">;\ntype PromptInput = z$1.infer<typeof promptInputSchema>;\ndeclare const resolvedThreadExecutionOptionsSchema: z$1.ZodObject<{\n    seq: z$1.ZodOptional<z$1.ZodNumber>;\n    model: z$1.ZodString;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    source: z$1.ZodEnum<{\n        \"client/thread/start\": \"client/thread/start\";\n        \"client/turn/requested\": \"client/turn/requested\";\n        \"client/turn/start\": \"client/turn/start\";\n    }>;\n}, z$1.core.$strip>;\ntype ResolvedThreadExecutionOptions = z$1.infer<typeof resolvedThreadExecutionOptionsSchema>;\ndeclare const projectExecutionDefaultsSchema: z$1.ZodObject<{\n    providerId: z$1.ZodString;\n    model: z$1.ZodString;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n}, z$1.core.$strip>;\ntype ProjectExecutionDefaults = z$1.infer<typeof projectExecutionDefaultsSchema>;\n\n/** All thread events — provider-originated or system-originated. */\ndeclare const threadEventSchema: z$1.ZodPipe<z$1.ZodUnknown, z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/started\">;\n    threadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/identity\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/started\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        completed: \"completed\";\n        failed: \"failed\";\n        interrupted: \"interrupted\";\n    }>;\n    error: z$1.ZodOptional<z$1.ZodObject<{\n        message: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    providerCheckpointId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/input/accepted\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    clientRequestId: z$1.ZodString;\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/name/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    threadName: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/compacted\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/context/cleared\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/goal/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    objective: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        paused: \"paused\";\n        active: \"active\";\n        budgetLimited: \"budgetLimited\";\n        complete: \"complete\";\n    }>;\n    tokenBudget: z$1.ZodNullable<z$1.ZodNumber>;\n    tokensUsed: z$1.ZodNumber;\n    timeUsedSeconds: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/goal/cleared\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/started\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"userMessage\">;\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n        clientRequestId: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"agentMessage\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commandExecution\">;\n        id: z$1.ZodString;\n        command: z$1.ZodString;\n        cwd: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        aggregatedOutput: z$1.ZodOptional<z$1.ZodString>;\n        exitCode: z$1.ZodOptional<z$1.ZodNumber>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"fileChange\">;\n        id: z$1.ZodString;\n        changes: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                add: \"add\";\n                delete: \"delete\";\n                update: \"update\";\n            }>;\n            movePath: z$1.ZodOptional<z$1.ZodString>;\n            diff: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webSearch\">;\n        id: z$1.ZodString;\n        queries: z$1.ZodArray<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webFetch\">;\n        id: z$1.ZodString;\n        url: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        pattern: z$1.ZodNullable<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"imageView\">;\n        id: z$1.ZodString;\n        path: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"toolCall\">;\n        id: z$1.ZodString;\n        server: z$1.ZodOptional<z$1.ZodString>;\n        tool: z$1.ZodString;\n        arguments: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n            pending: z$1.ZodString;\n            completed: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        result: z$1.ZodOptional<z$1.ZodUnknown>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reasoning\">;\n        id: z$1.ZodString;\n        summary: z$1.ZodArray<z$1.ZodString>;\n        content: z$1.ZodArray<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plan\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"contextCompaction\">;\n        id: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"userMessage\">;\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n        clientRequestId: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"agentMessage\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commandExecution\">;\n        id: z$1.ZodString;\n        command: z$1.ZodString;\n        cwd: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        aggregatedOutput: z$1.ZodOptional<z$1.ZodString>;\n        exitCode: z$1.ZodOptional<z$1.ZodNumber>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"fileChange\">;\n        id: z$1.ZodString;\n        changes: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                add: \"add\";\n                delete: \"delete\";\n                update: \"update\";\n            }>;\n            movePath: z$1.ZodOptional<z$1.ZodString>;\n            diff: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webSearch\">;\n        id: z$1.ZodString;\n        queries: z$1.ZodArray<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webFetch\">;\n        id: z$1.ZodString;\n        url: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        pattern: z$1.ZodNullable<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"imageView\">;\n        id: z$1.ZodString;\n        path: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"toolCall\">;\n        id: z$1.ZodString;\n        server: z$1.ZodOptional<z$1.ZodString>;\n        tool: z$1.ZodString;\n        arguments: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n            pending: z$1.ZodString;\n            completed: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        result: z$1.ZodOptional<z$1.ZodUnknown>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reasoning\">;\n        id: z$1.ZodString;\n        summary: z$1.ZodArray<z$1.ZodString>;\n        content: z$1.ZodArray<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plan\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"contextCompaction\">;\n        id: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/agentMessage/delta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/commandExecution/outputDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    reset: z$1.ZodOptional<z$1.ZodBoolean>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/fileChange/outputDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/reasoning/summaryTextDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/reasoning/textDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/plan/delta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/mcpToolCall/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    message: z$1.ZodOptional<z$1.ZodString>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/toolCall/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    message: z$1.ZodOptional<z$1.ZodString>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/backgroundTask/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/backgroundTask/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/tokenUsage/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    tokenUsage: z$1.ZodObject<{\n        total: z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            inputTokens: z$1.ZodNumber;\n            cachedInputTokens: z$1.ZodNumber;\n            outputTokens: z$1.ZodNumber;\n            reasoningOutputTokens: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        last: z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            inputTokens: z$1.ZodNumber;\n            cachedInputTokens: z$1.ZodNumber;\n            outputTokens: z$1.ZodNumber;\n            reasoningOutputTokens: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        modelContextWindow: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/contextWindowUsage/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    contextWindowUsage: z$1.ZodObject<{\n        usedTokens: z$1.ZodNullable<z$1.ZodNumber>;\n        modelContextWindow: z$1.ZodNullable<z$1.ZodNumber>;\n        estimated: z$1.ZodBoolean;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/plan/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    plan: z$1.ZodArray<z$1.ZodObject<{\n        step: z$1.ZodString;\n        status: z$1.ZodOptional<z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            active: \"active\";\n        }>>;\n    }, z$1.core.$strip>>;\n    explanation: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/diff/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    diff: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/error\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    message: z$1.ZodString;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n    willRetry: z$1.ZodOptional<z$1.ZodBoolean>;\n    errorInfo: z$1.ZodOptional<z$1.ZodObject<{\n        category: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"active-turn-not-steerable\": \"active-turn-not-steerable\";\n            \"bad-request\": \"bad-request\";\n            \"connection-failed\": \"connection-failed\";\n            \"context-window-exceeded\": \"context-window-exceeded\";\n            billing: \"billing\";\n            \"budget-exceeded\": \"budget-exceeded\";\n            internal: \"internal\";\n            \"max-output-tokens\": \"max-output-tokens\";\n            \"max-turns\": \"max-turns\";\n            overloaded: \"overloaded\";\n            policy: \"policy\";\n            \"rate-limit\": \"rate-limit\";\n            sandbox: \"sandbox\";\n            \"stream-disconnected\": \"stream-disconnected\";\n            \"structured-output-retries\": \"structured-output-retries\";\n            \"thread-rollback-failed\": \"thread-rollback-failed\";\n            \"too-many-failed-attempts\": \"too-many-failed-attempts\";\n            unauthorized: \"unauthorized\";\n        }>;\n        providerCode: z$1.ZodNullable<z$1.ZodString>;\n        httpStatusCode: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/rateLimits/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    rateLimits: z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            allowed: \"allowed\";\n            warning: \"warning\";\n            blocked: \"blocked\";\n        }>;\n        kind: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"subscription-window\": \"subscription-window\";\n            credits: \"credits\";\n            \"spend-control\": \"spend-control\";\n        }>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            providerKey: z$1.ZodNullable<z$1.ZodString>;\n            label: z$1.ZodNullable<z$1.ZodString>;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                allowed: \"allowed\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n            }>;\n            resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        reachedReason: z$1.ZodNullable<z$1.ZodString>;\n        overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            allowed: \"allowed\";\n            warning: \"warning\";\n            rejected: \"rejected\";\n            unavailable: \"unavailable\";\n        }>>;\n        overageReason: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/warning\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    category: z$1.ZodEnum<{\n        deprecation: \"deprecation\";\n        config: \"config\";\n        general: \"general\";\n    }>;\n    summary: z$1.ZodOptional<z$1.ZodString>;\n    details: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/modelFallback\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    originalModel: z$1.ZodString;\n    fallbackModel: z$1.ZodString;\n    reason: z$1.ZodEnum<{\n        refusal: \"refusal\";\n        provider: \"provider\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/unhandled\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    rawType: z$1.ZodString;\n    rawEvent: z$1.ZodObject<{\n        jsonrpc: z$1.ZodLiteral<\"2.0\">;\n        id: z$1.ZodOptional<z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodNumber]>>;\n        method: z$1.ZodString;\n        params: z$1.ZodOptional<z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>;\n    }, z$1.core.$strip>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>], \"type\">, z$1.ZodObject<{\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strip>>, z$1.ZodIntersection<z$1.ZodUnion<readonly [z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/thread/start\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/requested\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    requestId: z$1.ZodString;\n    continuationOfRequestId: z$1.ZodOptional<z$1.ZodString>;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    senderThreadId: z$1.ZodNullable<z$1.ZodString>;\n    systemMessageKind: z$1.ZodOptional<z$1.ZodEnum<{\n        \"ownership-assigned\": \"ownership-assigned\";\n        \"ownership-removed\": \"ownership-removed\";\n        \"child-needs-attention\": \"child-needs-attention\";\n        \"child-completed\": \"child-completed\";\n        \"child-failed\": \"child-failed\";\n        \"child-interrupted\": \"child-interrupted\";\n        \"child-outcome-batch\": \"child-outcome-batch\";\n        unlabeled: \"unlabeled\";\n    }>>;\n    systemMessageSubject: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n        threadName: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-batch\">;\n        count: z$1.ZodNumber;\n    }, z$1.core.$strip>], \"kind\">>>;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>>>;\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-start\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"new-turn\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"auto\">;\n        expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"steer\">;\n        expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>], \"kind\">;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n    execution: z$1.ZodObject<{\n        seq: z$1.ZodOptional<z$1.ZodNumber>;\n        model: z$1.ZodString;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        source: z$1.ZodEnum<{\n            \"client/thread/start\": \"client/thread/start\";\n            \"client/turn/requested\": \"client/turn/requested\";\n            \"client/turn/start\": \"client/turn/start\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            readonly: \"readonly\";\n            full: \"full\";\n            auto: \"auto\";\n            \"accept-edits\": \"accept-edits\";\n            \"workspace-write\": \"workspace-write\";\n        }>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/rejected\">;\n    threadId: z$1.ZodString;\n    requestId: z$1.ZodString;\n    reason: z$1.ZodString;\n    message: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/start\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/error\">;\n    threadId: z$1.ZodString;\n    code: z$1.ZodOptional<z$1.ZodString>;\n    message: z$1.ZodString;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n    reconnectAttempt: z$1.ZodOptional<z$1.ZodNumber>;\n    reconnectTotal: z$1.ZodOptional<z$1.ZodNumber>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/manager/user_message\">;\n    threadId: z$1.ZodString;\n    text: z$1.ZodString;\n    toolCallId: z$1.ZodOptional<z$1.ZodString>;\n    turnId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/thread/interrupted\">;\n    threadId: z$1.ZodString;\n    reason: z$1.ZodEnum<{\n        \"manual-stop\": \"manual-stop\";\n        \"host-daemon-restarted\": \"host-daemon-restarted\";\n        \"provider-turn-idle\": \"provider-turn-idle\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/operation\">;\n    threadId: z$1.ZodString;\n    operation: z$1.ZodString;\n    status: z$1.ZodString;\n    message: z$1.ZodString;\n    operationId: z$1.ZodString;\n    metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/permissionGrant/lifecycle\">;\n    threadId: z$1.ZodString;\n    interactionId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    resolution: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">>>;\n    statusReason: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    subject: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"permission_grant\">;\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n        permissions: z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/userQuestion/lifecycle\">;\n    threadId: z$1.ZodString;\n    interactionId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    resolution: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>>;\n    statusReason: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/thread-provisioning\">;\n    threadId: z$1.ZodString;\n    provisioningId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        completed: \"completed\";\n        failed: \"failed\";\n        active: \"active\";\n        cancelled: \"cancelled\";\n    }>;\n    environmentId: z$1.ZodString;\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        type: z$1.ZodEnum<{\n            output: \"output\";\n            step: \"step\";\n        }>;\n        key: z$1.ZodString;\n        text: z$1.ZodString;\n        startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n        status: z$1.ZodOptional<z$1.ZodEnum<{\n            completed: \"completed\";\n            failed: \"failed\";\n            started: \"started\";\n        }>>;\n        metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/provider-turn-watchdog\">;\n    threadId: z$1.ZodString;\n    reason: z$1.ZodLiteral<\"provider-turn-idle\">;\n    thresholdMs: z$1.ZodNumber;\n    elapsedMs: z$1.ZodNumber;\n    activeTurnId: z$1.ZodString;\n    activeTurnStartedAt: z$1.ZodNumber;\n    lastActivityEventSequence: z$1.ZodNumber;\n    lastActivityEventType: z$1.ZodString;\n    lastActivityEventAt: z$1.ZodNumber;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodNullable<z$1.ZodString>;\n    firedAt: z$1.ZodNumber;\n}, z$1.core.$strip>]>, z$1.ZodObject<{\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strip>>]>>;\ntype ThreadEvent = z$1.infer<typeof threadEventSchema>;\ntype ThreadEventType = ThreadEvent[\"type\"];\n\n/**\n * How completely a provider can clone one of its sessions — the single\n * vocabulary shared by the provider declaration\n * (`bb.agents.experimental_registerProvider`), the server→daemon\n * `bridgeLaunch`, and the bridge's `initialize` handshake.\n *\n * - `\"none\"`: sessions cannot be cloned at all.\n * - `\"tip\"`: only the current end of a session can be cloned (ACP\n *   `session/fork`), so thread fork works but edit-past-message rewind\n *   cannot.\n * - `\"checkpoint\"`: a session can be recreated at an earlier point, which is\n *   what edit-past-message rewind needs.\n *\n * The values are ordered least to most capable: a declaration is a ceiling\n * the handshake may narrow but never widen.\n */\ndeclare const PROVIDER_FORK_VALUES: readonly [\"none\", \"tip\", \"checkpoint\"];\ntype ProviderFork = (typeof PROVIDER_FORK_VALUES)[number];\n\ndeclare const providerInfoSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    displayName: z$1.ZodString;\n    logoUrl: z$1.ZodNullable<z$1.ZodString>;\n    capabilities: z$1.ZodObject<{\n        supportsThreadArchive: z$1.ZodBoolean;\n        supportsThreadRename: z$1.ZodBoolean;\n        supportsServiceTier: z$1.ZodBoolean;\n        supportsNativeUserQuestion: z$1.ZodBoolean;\n        supportsFork: z$1.ZodBoolean;\n        supportsSessionRewind: z$1.ZodBoolean;\n        permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n            full: \"full\";\n            auto: \"auto\";\n            \"accept-edits\": \"accept-edits\";\n        }>>;\n    }, z$1.core.$strip>;\n    composerActions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"skills\">;\n        trigger: z$1.ZodEnum<{\n            \"/\": \"/\";\n        }>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plan\">;\n        command: z$1.ZodObject<{\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            trailingText: z$1.ZodString;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"goal\">;\n        command: z$1.ZodObject<{\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            trailingText: z$1.ZodString;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>], \"kind\">>;\n    available: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype ProviderInfo = z$1.infer<typeof providerInfoSchema>;\n\ndeclare const threadEventScopeSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"thread\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"turn\">;\n    turnId: z$1.ZodString;\n}, z$1.core.$strip>], \"kind\">;\ntype ThreadEventScope = z$1.infer<typeof threadEventScopeSchema>;\n\ntype ThreadEventByType = {\n    [TType in ThreadEventType]: Extract<ThreadEvent, {\n        type: TType;\n    }>;\n};\ntype ThreadEventForType<TType extends ThreadEventType> = ThreadEventByType[TType];\ntype StoredThreadEventDataFromEvent<TEvent extends ThreadEvent> = Omit<TEvent, \"threadId\" | \"type\" | \"scope\">;\ninterface ThreadEventRowBase {\n    id: string;\n    scope: ThreadEventScope;\n    threadId: string;\n    seq: number;\n    createdAt: number;\n}\ntype ThreadEventRowFromEvent<TEvent extends ThreadEvent> = ThreadEventRowBase & {\n    type: TEvent[\"type\"];\n    data: StoredThreadEventDataFromEvent<TEvent>;\n};\ntype ThreadEventRowOfType<TType extends ThreadEventType> = ThreadEventRowFromEvent<ThreadEventForType<TType>>;\ntype ThreadEventRow = {\n    [TType in ThreadEventType]: ThreadEventRowOfType<TType>;\n}[ThreadEventType];\n\ndeclare const threadStatusSchema: z$1.ZodEnum<{\n    error: \"error\";\n    active: \"active\";\n    starting: \"starting\";\n    idle: \"idle\";\n    stopping: \"stopping\";\n}>;\ntype ThreadStatus = z$1.infer<typeof threadStatusSchema>;\n\ndeclare const threadTimelinePendingTodosSchema: z$1.ZodObject<{\n    sourceSeq: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    items: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            in_progress: \"in_progress\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ThreadTimelinePendingTodos = z$1.infer<typeof threadTimelinePendingTodosSchema>;\n\ndeclare const threadQueuedMessageSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodString;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    groupWithNext: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadQueuedMessage = z$1.infer<typeof threadQueuedMessageSchema>;\n\ndeclare const createThreadEnvironmentArgsSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"reuse\">;\n    environmentId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"host\">;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    workspace: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unmanaged\">;\n        path: z$1.ZodNullable<z$1.ZodString>;\n        branch: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"existing\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"new\">;\n            baseBranch: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"managed-worktree\">;\n        baseBranch: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"named\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"default\">;\n        }, z$1.core.$strip>], \"kind\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"personal\">;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"project-default\">;\n}, z$1.core.$strip>], \"type\">;\ntype CreateThreadEnvironmentArgs = z$1.infer<typeof createThreadEnvironmentArgsSchema>;\ndeclare const workspaceFileListResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype WorkspaceFileListResponse = z$1.infer<typeof workspaceFileListResponseSchema>;\ndeclare const workspacePathListResponseSchema: z$1.ZodObject<{\n    paths: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        score: z$1.ZodNumber;\n        positions: z$1.ZodArray<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype WorkspacePathListResponse = z$1.infer<typeof workspacePathListResponseSchema>;\n\ndeclare const createProjectSourceRequestSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    hostId: z$1.ZodString;\n    type: z$1.ZodLiteral<\"local_path\">;\n    path: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    hostId: z$1.ZodString;\n    type: z$1.ZodLiteral<\"clone\">;\n    targetPath: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>>;\n    remoteUrl: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>], \"type\">;\ntype CreateProjectSourceRequest = z$1.infer<typeof createProjectSourceRequestSchema>;\ndeclare const createProjectRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    source: z$1.ZodObject<{\n        hostId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"local_path\">;\n        path: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strip>;\ntype CreateProjectRequest = z$1.infer<typeof createProjectRequestSchema>;\ndeclare const threadSectionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadSectionResponse = z$1.infer<typeof threadSectionSchema>;\ndeclare const createThreadSectionRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype CreateThreadSectionRequest = z$1.infer<typeof createThreadSectionRequestSchema>;\ndeclare const updateThreadSectionRequestSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateThreadSectionRequest = z$1.infer<typeof updateThreadSectionRequestSchema>;\ndeclare const deleteThreadSectionRequestSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n}, z$1.core.$strict>;\ntype DeleteThreadSectionRequest = z$1.infer<typeof deleteThreadSectionRequestSchema>;\ndeclare const threadSectionMutationResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    updatedThreadCount: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadSectionMutationResponse = z$1.infer<typeof threadSectionMutationResponseSchema>;\ndeclare const reorderProjectRequestSchema: z$1.ZodObject<{\n    previousProjectId: z$1.ZodNullable<z$1.ZodString>;\n    nextProjectId: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderProjectRequest = z$1.infer<typeof reorderProjectRequestSchema>;\ndeclare const projectListQuerySchema: z$1.ZodObject<{\n    include: z$1.ZodOptional<z$1.ZodString>;\n    includePersonal: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n}, z$1.core.$strip>;\ntype ProjectListQuery = z$1.infer<typeof projectListQuerySchema>;\ndeclare const projectFilesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    limit: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectFilesQuery = z$1.infer<typeof projectFilesQuerySchema>;\ndeclare const projectPathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    limit: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectPathsQuery = z$1.infer<typeof projectPathsQuerySchema>;\ndeclare const projectFileContentQuerySchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectFileContentQuery = z$1.infer<typeof projectFileContentQuerySchema>;\ndeclare const projectBranchesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    hostId: z$1.ZodString;\n    selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ProjectBranchesQuery = z$1.infer<typeof projectBranchesQuerySchema>;\ndeclare const projectBranchesResponseSchema: z$1.ZodObject<{\n    branches: z$1.ZodArray<z$1.ZodString>;\n    branchesTruncated: z$1.ZodBoolean;\n    checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"branch\">;\n        branchName: z$1.ZodString;\n        headSha: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"detached\">;\n        headSha: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unborn\">;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unknown\">;\n        reason: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n    defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    defaultBranchRelation: z$1.ZodNullable<z$1.ZodEnum<{\n        unknown: \"unknown\";\n        equal: \"equal\";\n        \"local-behind\": \"local-behind\";\n        \"local-ahead\": \"local-ahead\";\n        diverged: \"diverged\";\n    }>>;\n    hasUncommittedChanges: z$1.ZodBoolean;\n    operation: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"none\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"merge\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"rebase\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"cherry-pick\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"revert\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unknown\">;\n        reason: z$1.ZodString;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>], \"kind\">;\n    originDefaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    remoteBranches: z$1.ZodArray<z$1.ZodString>;\n    remoteBranchesTruncated: z$1.ZodBoolean;\n    selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        kind: z$1.ZodEnum<{\n            local: \"local\";\n            remote: \"remote\";\n            missing: \"missing\";\n        }>;\n    }, z$1.core.$strip>>;\n    defaultWorktreeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ProjectBranchesResponse = z$1.infer<typeof projectBranchesResponseSchema>;\ndeclare const promptHistoryQuerySchema: z$1.ZodObject<{\n    limit: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PromptHistoryQuery = z$1.infer<typeof promptHistoryQuerySchema>;\ndeclare const promptHistoryResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    createdAt: z$1.ZodNumber;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>>;\ntype PromptHistoryResponse = z$1.infer<typeof promptHistoryResponseSchema>;\ndeclare const updateProjectRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype UpdateProjectRequest = z$1.infer<typeof updateProjectRequestSchema>;\ndeclare const updateProjectSourceRequestSchema: z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"local_path\">;\n    path: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>>;\n    isDefault: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n}, z$1.core.$strict>;\ntype UpdateProjectSourceRequest = z$1.infer<typeof updateProjectSourceRequestSchema>;\ndeclare const commandListResponseSchema: z$1.ZodObject<{\n    commands: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        source: z$1.ZodEnum<{\n            command: \"command\";\n            skill: \"skill\";\n        }>;\n        origin: z$1.ZodEnum<{\n            user: \"user\";\n            project: \"project\";\n            builtin: \"builtin\";\n        }>;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype CommandListResponse = z$1.infer<typeof commandListResponseSchema>;\n/** Query for the complete command catalog available to a project and provider. */\ndeclare const projectCommandsQuerySchema: z$1.ZodObject<{\n    provider: z$1.ZodString;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strict>;\ntype ProjectCommandsQuery = z$1.infer<typeof projectCommandsQuerySchema>;\ndeclare const skillListResponseSchema: z$1.ZodObject<{\n    skills: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        provider: z$1.ZodNullable<z$1.ZodString>;\n        scope: z$1.ZodEnum<{\n            plugin: \"plugin\";\n            \"bb-builtin\": \"bb-builtin\";\n            \"bb-user\": \"bb-user\";\n            \"bb-project\": \"bb-project\";\n            \"provider-user\": \"provider-user\";\n            \"provider-project\": \"provider-project\";\n            \"shared-user\": \"shared-user\";\n            \"shared-project\": \"shared-project\";\n        }>;\n        pluginId: z$1.ZodNullable<z$1.ZodString>;\n        filePath: z$1.ZodString;\n        manageable: z$1.ZodBoolean;\n        registrySkillId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SkillListResponse = z$1.infer<typeof skillListResponseSchema>;\ndeclare const skillContentResponseSchema: z$1.ZodObject<{\n    content: z$1.ZodString;\n    revision: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SkillContentResponse = z$1.infer<typeof skillContentResponseSchema>;\ndeclare const skillFilesResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodString>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype SkillFilesResponse = z$1.infer<typeof skillFilesResponseSchema>;\ndeclare const projectResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    kind: z$1.ZodEnum<{\n        standard: \"standard\";\n        personal: \"personal\";\n    }>;\n    name: z$1.ZodString;\n    gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    sources: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        isDefault: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        type: z$1.ZodLiteral<\"local_path\">;\n        hostId: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProjectResponse = z$1.infer<typeof projectResponseSchema>;\ndeclare const projectWithThreadsResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    kind: z$1.ZodEnum<{\n        standard: \"standard\";\n        personal: \"personal\";\n    }>;\n    name: z$1.ZodString;\n    gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    sources: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        isDefault: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        type: z$1.ZodLiteral<\"local_path\">;\n        hostId: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    threads: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        providerId: z$1.ZodString;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        titleFallback: z$1.ZodNullable<z$1.ZodString>;\n        sectionId: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n        }>;\n        parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n        originKind: z$1.ZodNullable<z$1.ZodEnum<{\n            fork: \"fork\";\n        }>>;\n        originPluginId: z$1.ZodNullable<z$1.ZodString>;\n        visibility: z$1.ZodEnum<{\n            visible: \"visible\";\n            hidden: \"hidden\";\n        }>;\n        archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n        latestAttentionAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        runtime: z$1.ZodObject<{\n            displayStatus: z$1.ZodEnum<{\n                error: \"error\";\n                provisioning: \"provisioning\";\n                stopping: \"stopping\";\n                idle: \"idle\";\n                starting: \"starting\";\n                active: \"active\";\n                \"host-reconnecting\": \"host-reconnecting\";\n                \"waiting-for-host\": \"waiting-for-host\";\n            }>;\n            hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>;\n        activity: z$1.ZodObject<{\n            activeWorkflowCount: z$1.ZodNumber;\n            activeBackgroundAgentCount: z$1.ZodNumber;\n            activeBackgroundCommandCount: z$1.ZodNumber;\n            activePlanModeCount: z$1.ZodNumber;\n            activeGoalCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n        hasPendingInteraction: z$1.ZodBoolean;\n        environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n        environmentName: z$1.ZodNullable<z$1.ZodString>;\n        environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n        environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n            \"managed-worktree\": \"managed-worktree\";\n            \"unmanaged-worktree\": \"unmanaged-worktree\";\n            other: \"other\";\n        }>;\n    }, z$1.core.$strip>>;\n    defaultExecutionOptions: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        model: z$1.ZodString;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProjectWithThreadsResponse = z$1.infer<typeof projectWithThreadsResponseSchema>;\ndeclare const uploadedPromptAttachmentSchema: z$1.ZodObject<{\n    type: z$1.ZodEnum<{\n        localImage: \"localImage\";\n        localFile: \"localFile\";\n    }>;\n    path: z$1.ZodString;\n    name: z$1.ZodString;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype UploadedPromptAttachment = z$1.infer<typeof uploadedPromptAttachmentSchema>;\ndeclare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{\n    sourceProjectId: z$1.ZodString;\n    paths: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype CopyProjectAttachmentsRequest = z$1.infer<typeof copyProjectAttachmentsRequestSchema>;\n\ndeclare const registrySkillSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    skillId: z$1.ZodString;\n    name: z$1.ZodString;\n    installs: z$1.ZodNumber;\n    stars: z$1.ZodNullable<z$1.ZodNumber>;\n    installUrl: z$1.ZodNullable<z$1.ZodString>;\n    url: z$1.ZodString;\n    topic: z$1.ZodNullable<z$1.ZodString>;\n    summary: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype RegistrySkill = z$1.infer<typeof registrySkillSchema>;\ndeclare const registrySkillsPageSchema: z$1.ZodObject<{\n    skills: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        skillId: z$1.ZodString;\n        name: z$1.ZodString;\n        installs: z$1.ZodNumber;\n        stars: z$1.ZodNullable<z$1.ZodNumber>;\n        installUrl: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n        topic: z$1.ZodNullable<z$1.ZodString>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    pagination: z$1.ZodObject<{\n        page: z$1.ZodNumber;\n        perPage: z$1.ZodNumber;\n        total: z$1.ZodNumber;\n        hasMore: z$1.ZodBoolean;\n    }, z$1.core.$strip>;\n    ranking: z$1.ZodEnum<{\n        trending: \"trending\";\n        \"all-time\": \"all-time\";\n    }>;\n}, z$1.core.$strip>;\ntype RegistrySkillsPage = z$1.infer<typeof registrySkillsPageSchema>;\ndeclare const registryRepositoryStarsSchema: z$1.ZodObject<{\n    stars: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype RegistryRepositoryStars = z$1.infer<typeof registryRepositoryStarsSchema>;\ndeclare const registrySkillDetailSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    skillId: z$1.ZodString;\n    hash: z$1.ZodNullable<z$1.ZodString>;\n    files: z$1.ZodNullable<z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        contents: z$1.ZodString;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>;\ntype RegistrySkillDetail = z$1.infer<typeof registrySkillDetailSchema>;\n/**\n * Entries that could not be resolved (dead detail page, malformed id) are\n * omitted rather than failing the batch: each entry is independent upstream,\n * and callers already treat a missing entry as \"unknown\" per card.\n */\ndeclare const registrySkillEntriesResponseSchema: z$1.ZodObject<{\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        skillId: z$1.ZodString;\n        name: z$1.ZodString;\n        installs: z$1.ZodNumber;\n        stars: z$1.ZodNullable<z$1.ZodNumber>;\n        installUrl: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n        topic: z$1.ZodNullable<z$1.ZodString>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype RegistrySkillEntriesResponse = z$1.infer<typeof registrySkillEntriesResponseSchema>;\ndeclare const registrySkillInstallResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    filePath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype RegistrySkillInstallResponse = z$1.infer<typeof registrySkillInstallResponseSchema>;\n\ndeclare const updateEnvironmentRequestSchema: z$1.ZodObject<{\n    mergeBaseBranch: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    name: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n}, z$1.core.$strip>;\ntype UpdateEnvironmentRequest = z$1.infer<typeof updateEnvironmentRequestSchema>;\n/**\n * Query for searching paths in an environment's workspace. Unlike the\n * project-scoped variant this needs no `environmentId` — the environment is\n * the route param — and is project-agnostic, so it works for projectless\n * (personal) environments too.\n */\ndeclare const environmentPathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n}, z$1.core.$strip>;\ntype EnvironmentPathsQuery = z$1.infer<typeof environmentPathsQuerySchema>;\ndeclare const environmentDiffBranchesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype EnvironmentDiffBranchesQuery = z$1.infer<typeof environmentDiffBranchesQuerySchema>;\ndeclare const environmentDiffBranchesResponseSchema: z$1.ZodObject<{\n    branches: z$1.ZodArray<z$1.ZodString>;\n    branchesTruncated: z$1.ZodBoolean;\n    remoteBranches: z$1.ZodArray<z$1.ZodString>;\n    remoteBranchesTruncated: z$1.ZodBoolean;\n    selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        kind: z$1.ZodEnum<{\n            local: \"local\";\n            remote: \"remote\";\n            missing: \"missing\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype EnvironmentDiffBranchesResponse = z$1.infer<typeof environmentDiffBranchesResponseSchema>;\ndeclare const environmentStatusQuerySchema: z$1.ZodObject<{\n    mergeBaseBranch: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodString>>;\n}, z$1.core.$strip>;\ntype EnvironmentStatusQuery = z$1.infer<typeof environmentStatusQuerySchema>;\ndeclare const environmentDiffQuerySchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"uncommitted\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"branch_committed\">;\n    mergeBaseBranch: z$1.ZodPipe<z$1.ZodString, z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"all\">;\n    mergeBaseBranch: z$1.ZodPipe<z$1.ZodString, z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"commit\">;\n    sha: z$1.ZodString;\n}, z$1.core.$strip>], \"target\">;\ntype EnvironmentDiffQuery = z$1.infer<typeof environmentDiffQuerySchema>;\n/**\n * Query for fetching a single file's contents at one side of a diff target.\n * Used by the diff card to reparse the card's patch with full old/new contents\n * so `@pierre/diffs` can render expand-context buttons between hunks.\n *\n * For `branch_committed` / `all`, callers pass the resolved merge-base SHA\n * (`mergeBaseRef`, surfaced by `workspace.diff`) rather than the branch name\n * — the diff itself was computed against that SHA, so reading the old side\n * from the same SHA keeps the file content aligned with the hunk line\n * numbers. Reading from the branch tip is wrong whenever the branch has\n * moved past the merge-base since the file existed there.\n */\ndeclare const environmentDiffFileQuerySchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"uncommitted\">;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"branch_committed\">;\n    mergeBaseRef: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"all\">;\n    mergeBaseRef: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"commit\">;\n    sha: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>], \"target\">;\ntype EnvironmentDiffFileQuery = z$1.infer<typeof environmentDiffFileQuerySchema>;\ndeclare const environmentDiffFileResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n    content: z$1.ZodString;\n    contentEncoding: z$1.ZodEnum<{\n        base64: \"base64\";\n        utf8: \"utf8\";\n    }>;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype EnvironmentDiffFileResponse = z$1.infer<typeof environmentDiffFileResponseSchema>;\ndeclare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    archivedThreadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype EnvironmentArchiveThreadsResponse = z$1.infer<typeof environmentArchiveThreadsResponseSchema>;\ndeclare const pullRequestMergeMethodSchema: z$1.ZodEnum<{\n    merge: \"merge\";\n    squash: \"squash\";\n    rebase: \"rebase\";\n}>;\ntype PullRequestMergeMethod = z$1.infer<typeof pullRequestMergeMethodSchema>;\ndeclare const commitActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"commit\">;\n    message: z$1.ZodString;\n    commitSha: z$1.ZodString;\n    commitSubject: z$1.ZodString;\n}, z$1.core.$strip>;\ntype CommitActionResponse = z$1.infer<typeof commitActionResponseSchema>;\ndeclare const squashMergeActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"squash_merge\">;\n    merged: z$1.ZodBoolean;\n    message: z$1.ZodString;\n    commitSha: z$1.ZodString;\n    commitSubject: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SquashMergeActionResponse = z$1.infer<typeof squashMergeActionResponseSchema>;\ndeclare const pullRequestReadyActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_ready\">;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestReadyActionResponse = z$1.infer<typeof pullRequestReadyActionResponseSchema>;\ndeclare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_merge\">;\n    method: z$1.ZodEnum<{\n        merge: \"merge\";\n        squash: \"squash\";\n        rebase: \"rebase\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestMergeActionResponse = z$1.infer<typeof pullRequestMergeActionResponseSchema>;\ndeclare const pullRequestDraftActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_draft\">;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestDraftActionResponse = z$1.infer<typeof pullRequestDraftActionResponseSchema>;\ndeclare const environmentStatusResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    workspace: z$1.ZodObject<{\n        workingTree: z$1.ZodObject<{\n            insertions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            lineStatsComplete: z$1.ZodBoolean;\n            files: z$1.ZodArray<z$1.ZodObject<{\n                path: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    M: \"M\";\n                    A: \"A\";\n                    D: \"D\";\n                    R: \"R\";\n                    C: \"C\";\n                    U: \"U\";\n                    \"??\": \"??\";\n                    \"?\": \"?\";\n                }>;\n                insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                deletions: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            hasUncommittedChanges: z$1.ZodBoolean;\n            state: z$1.ZodEnum<{\n                clean: \"clean\";\n                untracked: \"untracked\";\n                dirty_uncommitted: \"dirty_uncommitted\";\n                committed_unmerged: \"committed_unmerged\";\n                dirty_and_committed_unmerged: \"dirty_and_committed_unmerged\";\n            }>;\n        }, z$1.core.$strip>;\n        checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"branch\">;\n            branchName: z$1.ZodString;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"detached\">;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unborn\">;\n            branchName: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">;\n        branch: z$1.ZodObject<{\n            currentBranch: z$1.ZodNullable<z$1.ZodString>;\n            defaultBranch: z$1.ZodString;\n        }, z$1.core.$strip>;\n        mergeBase: z$1.ZodNullable<z$1.ZodObject<{\n            insertions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            lineStatsComplete: z$1.ZodBoolean;\n            files: z$1.ZodArray<z$1.ZodObject<{\n                path: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    M: \"M\";\n                    A: \"A\";\n                    D: \"D\";\n                    R: \"R\";\n                    C: \"C\";\n                    U: \"U\";\n                    \"??\": \"??\";\n                    \"?\": \"?\";\n                }>;\n                insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                deletions: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            mergeBaseBranch: z$1.ZodString;\n            baseRef: z$1.ZodNullable<z$1.ZodString>;\n            aheadCount: z$1.ZodNumber;\n            behindCount: z$1.ZodNumber;\n            hasCommittedUnmergedChanges: z$1.ZodBoolean;\n            commits: z$1.ZodArray<z$1.ZodObject<{\n                sha: z$1.ZodString;\n                shortSha: z$1.ZodString;\n                subject: z$1.ZodString;\n                authorName: z$1.ZodString;\n                authoredAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\n/**\n * Structured pull-request lookup outcome. \"absent\" is a real answer — the\n * host checked and the branch has no PR (non-git environments resolve to\n * \"absent\" without a daemon call). \"unavailable\" means the lookup itself\n * failed (gh missing, not authenticated, timeout, unreachable workspace), so\n * callers must not render it as \"no PR exists\".\n */\ndeclare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    pullRequest: z$1.ZodObject<{\n        number: z$1.ZodNumber;\n        title: z$1.ZodString;\n        state: z$1.ZodEnum<{\n            merged: \"merged\";\n            draft: \"draft\";\n            open: \"open\";\n            closed: \"closed\";\n        }>;\n        url: z$1.ZodString;\n        baseRefName: z$1.ZodString;\n        headRefName: z$1.ZodString;\n        updatedAt: z$1.ZodString;\n        checks: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                pending: \"pending\";\n                passing: \"passing\";\n                failing: \"failing\";\n                no_checks: \"no_checks\";\n            }>;\n            totalCount: z$1.ZodNumber;\n            passedCount: z$1.ZodNumber;\n            failedCount: z$1.ZodNumber;\n            pendingCount: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        review: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                none: \"none\";\n                approved: \"approved\";\n                changes_requested: \"changes_requested\";\n                review_required: \"review_required\";\n                review_requested: \"review_requested\";\n            }>;\n            reviewRequestCount: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        mergeability: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                draft: \"draft\";\n                mergeable: \"mergeable\";\n                conflicts: \"conflicts\";\n                blocked: \"blocked\";\n            }>;\n            mergeStateStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                BEHIND: \"BEHIND\";\n                BLOCKED: \"BLOCKED\";\n                CLEAN: \"CLEAN\";\n                DIRTY: \"DIRTY\";\n                DRAFT: \"DRAFT\";\n                HAS_HOOKS: \"HAS_HOOKS\";\n                UNKNOWN: \"UNKNOWN\";\n                UNSTABLE: \"UNSTABLE\";\n            }>>;\n            mergeable: z$1.ZodNullable<z$1.ZodEnum<{\n                UNKNOWN: \"UNKNOWN\";\n                CONFLICTING: \"CONFLICTING\";\n                MERGEABLE: \"MERGEABLE\";\n            }>>;\n        }, z$1.core.$strict>;\n        attention: z$1.ZodEnum<{\n            none: \"none\";\n            merged: \"merged\";\n            draft: \"draft\";\n            closed: \"closed\";\n            changes_requested: \"changes_requested\";\n            review_requested: \"review_requested\";\n            conflicts: \"conflicts\";\n            blocked: \"blocked\";\n            checks_failed: \"checks_failed\";\n            checks_pending: \"checks_pending\";\n            ready_to_merge: \"ready_to_merge\";\n        }>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"absent\">;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    message: z$1.ZodString;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentPullRequestResponse = z$1.infer<typeof environmentPullRequestResponseSchema>;\ndeclare const environmentDiffResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    diff: z$1.ZodObject<{\n        diff: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n        shortstat: z$1.ZodString;\n        files: z$1.ZodString;\n        mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffResponse = z$1.infer<typeof environmentDiffResponseSchema>;\ndeclare const environmentDiffFilesResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        previousPath: z$1.ZodNullable<z$1.ZodString>;\n        changeKind: z$1.ZodEnum<{\n            deleted: \"deleted\";\n            added: \"added\";\n            modified: \"modified\";\n            renamed: \"renamed\";\n            copied: \"copied\";\n            type_changed: \"type_changed\";\n        }>;\n        additions: z$1.ZodNumber;\n        deletions: z$1.ZodNumber;\n        binary: z$1.ZodBoolean;\n        origin: z$1.ZodEnum<{\n            untracked: \"untracked\";\n            tracked: \"tracked\";\n        }>;\n        loadMode: z$1.ZodEnum<{\n            auto: \"auto\";\n            on_demand: \"on_demand\";\n            too_large: \"too_large\";\n        }>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    shortstat: z$1.ZodString;\n    mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n    initialPatches: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        patch: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffFilesResponse = z$1.infer<typeof environmentDiffFilesResponseSchema>;\ndeclare const environmentDiffPatchResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    patches: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        patch: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffPatchResponse = z$1.infer<typeof environmentDiffPatchResponseSchema>;\n/**\n * Body for `POST /diff/patch`: the diff target plus the list of new paths whose\n * patches the client wants. A POST (not GET) because the repeated `paths` array\n * cannot survive flat query parsing. The client supplies only new paths; the\n * server re-derives each file's rename/copy pairing (`previousPath`) from its\n * own TOC.\n */\ndeclare const environmentDiffPatchRequestSchema: z$1.ZodObject<{\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"uncommitted\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"branch_committed\">;\n        mergeBaseBranch: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"all\">;\n        mergeBaseBranch: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commit\">;\n        sha: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">;\n    paths: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype EnvironmentDiffPatchRequest = z$1.infer<typeof environmentDiffPatchRequestSchema>;\ntype EnvironmentStatusResponse = z$1.infer<typeof environmentStatusResponseSchema>;\n\ndeclare const providerUsageResponseSchema: z$1.ZodObject<{\n    codex: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n    claudeCode: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n    cursor: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n}, z$1.core.$strip>;\ntype ProviderUsageResponse = z$1.infer<typeof providerUsageResponseSchema>;\ndeclare const discoverReposResultSchema: z$1.ZodObject<{\n    repos: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        lastActivityAt: z$1.ZodString;\n        originUrl: z$1.ZodNullable<z$1.ZodString>;\n        agentSeen: z$1.ZodBoolean;\n        agentSeenAt: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strict>;\ntype DiscoverReposResult = z$1.infer<typeof discoverReposResultSchema>;\ntype HostDaemonCommandTransport = \"settled\" | \"onlineRpc\";\ntype HostDaemonCommandEnvironmentLane = \"read\" | \"write\";\ntype HostDaemonFlushEventsBeforeResult = boolean | \"when-initiated\";\ninterface HostDaemonCommandDescriptor<Type extends string, Schema extends z$1.ZodTypeAny, ResultSchema extends z$1.ZodTypeAny, Transport extends HostDaemonCommandTransport, Retryable extends boolean> {\n    type: Type;\n    schema: Schema;\n    resultSchema: ResultSchema;\n    transport: Transport;\n    retryable: Retryable;\n    flushEventsBeforeResult: HostDaemonFlushEventsBeforeResult;\n    envLane: HostDaemonCommandEnvironmentLane | null;\n}\ndeclare const hostDaemonCommandRegistry: {\n    \"thread.rewind.discard\": HostDaemonCommandDescriptor<\"thread.rewind.discard\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.rewind.discard\">;\n        leaseId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.rewind.prepare\": HostDaemonCommandDescriptor<\"thread.rewind.prepare\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        projectId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        instructions: z$1.ZodString;\n        dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            inputSchema: z$1.ZodUnknown;\n        }, z$1.core.$strip>>;\n        injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"tree\">;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n            sourceType: z$1.ZodEnum<{\n                builtin: \"builtin\";\n                \"data-dir\": \"data-dir\";\n            }>;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"workspace-path\">;\n            sourceType: z$1.ZodLiteral<\"project\">;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"host-path\">;\n            sourceType: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n            }>;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n        disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        instructionMode: z$1.ZodEnum<{\n            replace: \"replace\";\n            append: \"append\";\n        }>;\n        type: z$1.ZodLiteral<\"thread.rewind.prepare\">;\n        leaseId: z$1.ZodString;\n        sourceProviderThreadId: z$1.ZodString;\n        retainThroughProviderCheckpoint: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerThreadId: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"thread.start\": HostDaemonCommandDescriptor<\"thread.start\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        projectId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        instructions: z$1.ZodString;\n        dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            inputSchema: z$1.ZodUnknown;\n        }, z$1.core.$strip>>;\n        injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"tree\">;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n            sourceType: z$1.ZodEnum<{\n                builtin: \"builtin\";\n                \"data-dir\": \"data-dir\";\n            }>;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"workspace-path\">;\n            sourceType: z$1.ZodLiteral<\"project\">;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"host-path\">;\n            sourceType: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n            }>;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n        disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        instructionMode: z$1.ZodEnum<{\n            replace: \"replace\";\n            append: \"append\";\n        }>;\n        type: z$1.ZodLiteral<\"thread.start\">;\n        requestId: z$1.ZodString;\n        input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>>>;\n        threadStoragePath: z$1.ZodOptional<z$1.ZodString>;\n        fork: z$1.ZodOptional<z$1.ZodObject<{\n            sourceProviderThreadId: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerThreadId: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"turn.submit\": HostDaemonCommandDescriptor<\"turn.submit\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"turn.submit\">;\n        requestId: z$1.ZodString;\n        input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>>>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        resumeContext: z$1.ZodObject<{\n            workspaceContext: z$1.ZodObject<{\n                workspacePath: z$1.ZodString;\n                workspaceProvisionType: z$1.ZodEnum<{\n                    unmanaged: \"unmanaged\";\n                    \"managed-worktree\": \"managed-worktree\";\n                    personal: \"personal\";\n                }>;\n            }, z$1.core.$strip>;\n            bridgeLaunch: z$1.ZodObject<{\n                pluginId: z$1.ZodString;\n                source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"artifact\">;\n                    digest: z$1.ZodString;\n                    byteLength: z$1.ZodNumber;\n                }, z$1.core.$strict>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                    id: z$1.ZodString;\n                }, z$1.core.$strict>], \"kind\">;\n                capabilities: z$1.ZodObject<{\n                    supportsServiceTier: z$1.ZodBoolean;\n                    permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                        full: \"full\";\n                        \"accept-edits\": \"accept-edits\";\n                        auto: \"auto\";\n                    }>>;\n                    supportsThreadArchive: z$1.ZodBoolean;\n                    supportsThreadRename: z$1.ZodBoolean;\n                    fork: z$1.ZodEnum<{\n                        none: \"none\";\n                        tip: \"tip\";\n                        checkpoint: \"checkpoint\";\n                    }>;\n                }, z$1.core.$strict>;\n            }, z$1.core.$strict>;\n            instructionMode: z$1.ZodEnum<{\n                replace: \"replace\";\n                append: \"append\";\n            }>;\n            projectId: z$1.ZodString;\n            providerId: z$1.ZodString;\n            acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n                displayName: z$1.ZodString;\n                command: z$1.ZodString;\n                args: z$1.ZodArray<z$1.ZodString>;\n                env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n                cwd: z$1.ZodOptional<z$1.ZodString>;\n                modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                    listArgs: z$1.ZodArray<z$1.ZodString>;\n                    selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                    primaryModels: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strict>, z$1.ZodTransform<{\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                } | undefined, {\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                }>>>;\n                reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                    flag: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                    configId: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                    user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                    project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                }, z$1.core.$strict>>;\n                permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                    full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n                }, z$1.core.$strict>>;\n            }, z$1.core.$strict>>;\n            instructions: z$1.ZodString;\n            dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                inputSchema: z$1.ZodUnknown;\n            }, z$1.core.$strip>>;\n            injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"tree\">;\n                treeHash: z$1.ZodString;\n                entryPath: z$1.ZodString;\n                sourceType: z$1.ZodEnum<{\n                    builtin: \"builtin\";\n                    \"data-dir\": \"data-dir\";\n                }>;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"workspace-path\">;\n                sourceType: z$1.ZodLiteral<\"project\">;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"host-path\">;\n                sourceType: z$1.ZodEnum<{\n                    \"shared-user\": \"shared-user\";\n                    \"shared-project\": \"shared-project\";\n                }>;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n            disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            providerThreadId: z$1.ZodString;\n        }, z$1.core.$strict>;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"start\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"auto\">;\n            expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"steer\">;\n            expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"mode\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        appliedAs: z$1.ZodEnum<{\n            steer: \"steer\";\n            \"new-turn\": \"new-turn\";\n        }>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"thread.stop\": HostDaemonCommandDescriptor<\"thread.stop\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.stop\">;\n        intent: z$1.ZodEnum<{\n            interrupt: \"interrupt\";\n            release: \"release\";\n        }>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerCheckpointId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.goal.clear\": HostDaemonCommandDescriptor<\"thread.goal.clear\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.goal.clear\">;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        resumeContext: z$1.ZodObject<{\n            workspaceContext: z$1.ZodObject<{\n                workspacePath: z$1.ZodString;\n                workspaceProvisionType: z$1.ZodEnum<{\n                    unmanaged: \"unmanaged\";\n                    \"managed-worktree\": \"managed-worktree\";\n                    personal: \"personal\";\n                }>;\n            }, z$1.core.$strip>;\n            bridgeLaunch: z$1.ZodObject<{\n                pluginId: z$1.ZodString;\n                source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"artifact\">;\n                    digest: z$1.ZodString;\n                    byteLength: z$1.ZodNumber;\n                }, z$1.core.$strict>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                    id: z$1.ZodString;\n                }, z$1.core.$strict>], \"kind\">;\n                capabilities: z$1.ZodObject<{\n                    supportsServiceTier: z$1.ZodBoolean;\n                    permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                        full: \"full\";\n                        \"accept-edits\": \"accept-edits\";\n                        auto: \"auto\";\n                    }>>;\n                    supportsThreadArchive: z$1.ZodBoolean;\n                    supportsThreadRename: z$1.ZodBoolean;\n                    fork: z$1.ZodEnum<{\n                        none: \"none\";\n                        tip: \"tip\";\n                        checkpoint: \"checkpoint\";\n                    }>;\n                }, z$1.core.$strict>;\n            }, z$1.core.$strict>;\n            instructionMode: z$1.ZodEnum<{\n                replace: \"replace\";\n                append: \"append\";\n            }>;\n            projectId: z$1.ZodString;\n            providerId: z$1.ZodString;\n            acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n                displayName: z$1.ZodString;\n                command: z$1.ZodString;\n                args: z$1.ZodArray<z$1.ZodString>;\n                env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n                cwd: z$1.ZodOptional<z$1.ZodString>;\n                modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                    listArgs: z$1.ZodArray<z$1.ZodString>;\n                    selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                    primaryModels: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strict>, z$1.ZodTransform<{\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                } | undefined, {\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                }>>>;\n                reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                    flag: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                    configId: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                    user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                    project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                }, z$1.core.$strict>>;\n                permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                    full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n                }, z$1.core.$strict>>;\n            }, z$1.core.$strict>>;\n            instructions: z$1.ZodString;\n            dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                inputSchema: z$1.ZodUnknown;\n            }, z$1.core.$strip>>;\n            injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"tree\">;\n                treeHash: z$1.ZodString;\n                entryPath: z$1.ZodString;\n                sourceType: z$1.ZodEnum<{\n                    builtin: \"builtin\";\n                    \"data-dir\": \"data-dir\";\n                }>;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"workspace-path\">;\n                sourceType: z$1.ZodLiteral<\"project\">;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"host-path\">;\n                sourceType: z$1.ZodEnum<{\n                    \"shared-user\": \"shared-user\";\n                    \"shared-project\": \"shared-project\";\n                }>;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n            disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            providerThreadId: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cleared: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.plan.cancel\": HostDaemonCommandDescriptor<\"thread.plan.cancel\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.plan.cancel\">;\n        expectedTurnId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cancelled: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.rename\": HostDaemonCommandDescriptor<\"thread.rename\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.rename\">;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.archive\": HostDaemonCommandDescriptor<\"thread.archive\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"thread.archive\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.unarchive\": HostDaemonCommandDescriptor<\"thread.unarchive\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.unarchive\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"interactive.resolve\": HostDaemonCommandDescriptor<\"interactive.resolve\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"interactive.resolve\">;\n        interactionId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n        resolution: z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"allow_once\">;\n            grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"allow_for_session\">;\n            grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"deny\">;\n        }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"user_answer\">;\n            answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n                selected: z$1.ZodArray<z$1.ZodString>;\n                freeText: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin_submitted\">;\n        }, z$1.core.$strip>]>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"codex.inference.complete\": HostDaemonCommandDescriptor<\"codex.inference.complete\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"codex.inference.complete\">;\n        model: z$1.ZodString;\n        reasoningEffort: z$1.ZodLiteral<\"none\">;\n        prompt: z$1.ZodString;\n        outputSchema: z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        model: z$1.ZodString;\n        value: z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"codex.voice.transcribe\": HostDaemonCommandDescriptor<\"codex.voice.transcribe\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"codex.voice.transcribe\">;\n        model: z$1.ZodString;\n        audioBase64: z$1.ZodString;\n        mimeType: z$1.ZodString;\n        filename: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        model: z$1.ZodString;\n        text: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"environment.provision\": HostDaemonCommandDescriptor<\"environment.provision\", z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        workspaceProvisionType: z$1.ZodLiteral<\"unmanaged\">;\n        path: z$1.ZodString;\n        checkout: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"existing\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"new\">;\n            name: z$1.ZodString;\n            baseBranch: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        sourcePath: z$1.ZodString;\n        targetPath: z$1.ZodString;\n        branchName: z$1.ZodString;\n        baseBranch: z$1.ZodNullable<z$1.ZodString>;\n        setupTimeoutMs: z$1.ZodNumber;\n        workspaceProvisionType: z$1.ZodLiteral<\"managed-worktree\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        workspaceProvisionType: z$1.ZodLiteral<\"personal\">;\n        targetPath: z$1.ZodString;\n    }, z$1.core.$strict>], \"workspaceProvisionType\">, z$1.ZodObject<{\n        path: z$1.ZodString;\n        isGitRepo: z$1.ZodBoolean;\n        isWorktree: z$1.ZodBoolean;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        transcript: z$1.ZodArray<z$1.ZodObject<{\n            type: z$1.ZodEnum<{\n                output: \"output\";\n                step: \"step\";\n            }>;\n            key: z$1.ZodString;\n            text: z$1.ZodString;\n            startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            status: z$1.ZodOptional<z$1.ZodEnum<{\n                started: \"started\";\n                completed: \"completed\";\n                failed: \"failed\";\n            }>>;\n            metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"project.clone\": HostDaemonCommandDescriptor<\"project.clone\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.clone\">;\n        remoteUrl: z$1.ZodString;\n        projectSlug: z$1.ZodString;\n        targetPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"environment.provision.cancel\": HostDaemonCommandDescriptor<\"environment.provision.cancel\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision.cancel\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        aborted: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"environment.destroy\": HostDaemonCommandDescriptor<\"environment.destroy\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"environment.destroy\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.commit\": HostDaemonCommandDescriptor<\"workspace.commit\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.commit\">;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commitSha: z$1.ZodString;\n        commitSubject: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.squash_merge\": HostDaemonCommandDescriptor<\"workspace.squash_merge\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.squash_merge\">;\n        targetBranch: z$1.ZodString;\n        commitMessage: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commitSha: z$1.ZodString;\n        commitSubject: z$1.ZodString;\n        merged: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.pull_request_action\": HostDaemonCommandDescriptor<\"workspace.pull_request_action\", z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"ready\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"draft\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"merge\">;\n        method: z$1.ZodEnum<{\n            merge: \"merge\";\n            squash: \"squash\";\n            rebase: \"rebase\";\n        }>;\n    }, z$1.core.$strict>], \"operation\">, z$1.ZodObject<{}, z$1.core.$strict>, \"settled\", false>;\n    \"host.list_files\": HostDaemonCommandDescriptor<\"host.list_files\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_files\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        files: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.list_paths\": HostDaemonCommandDescriptor<\"host.list_paths\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_paths\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n        includeFiles: z$1.ZodBoolean;\n        includeDirectories: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        paths: z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n            score: z$1.ZodNumber;\n            positions: z$1.ZodArray<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.mkdir\": HostDaemonCommandDescriptor<\"host.mkdir\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.mkdir\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        recursive: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.move_path\": HostDaemonCommandDescriptor<\"host.move_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.move_path\">;\n        sourcePath: z$1.ZodString;\n        destinationPath: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.remove_path\": HostDaemonCommandDescriptor<\"host.remove_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.remove_path\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        recursive: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.browse_directory\": HostDaemonCommandDescriptor<\"host.browse_directory\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.browse_directory\">;\n        path: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        directory: z$1.ZodString;\n        parent: z$1.ZodNullable<z$1.ZodString>;\n        entries: z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.paths_exist\": HostDaemonCommandDescriptor<\"host.paths_exist\", z$1.ZodObject<{\n        paths: z$1.ZodPipe<z$1.ZodArray<z$1.ZodString>, z$1.ZodTransform<string[], string[]>>;\n        type: z$1.ZodLiteral<\"host.paths_exist\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        existence: z$1.ZodRecord<z$1.ZodString, z$1.ZodBoolean>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"project.inspect\": HostDaemonCommandDescriptor<\"project.inspect\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.inspect\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"project.clone_default_path\": HostDaemonCommandDescriptor<\"project.clone_default_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.clone_default_path\">;\n        projectSlug: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.pick_folder\": HostDaemonCommandDescriptor<\"host.pick_folder\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.pick_folder\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, \"onlineRpc\", false>;\n    \"plugin.host.call\": HostDaemonCommandDescriptor<\"plugin.host.call\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.call\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n        artifact: z$1.ZodObject<{\n            digest: z$1.ZodString;\n            byteLength: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        callId: z$1.ZodString;\n        method: z$1.ZodString;\n        input: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        output: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"plugin.host.cancel\": HostDaemonCommandDescriptor<\"plugin.host.cancel\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.cancel\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n        callId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cancelled: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"plugin.host.dispose\": HostDaemonCommandDescriptor<\"plugin.host.dispose\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.dispose\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        disposed: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"connect-tunnel.ensure-identity\": HostDaemonCommandDescriptor<\"connect-tunnel.ensure-identity\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"connect-tunnel.ensure-identity\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        label: z$1.ZodString;\n        baseDomain: z$1.ZodString;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.list_commands\": HostDaemonCommandDescriptor<\"host.list_commands\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_commands\">;\n        providerId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n            user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commands: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                project: \"project\";\n                user: \"user\";\n            }>;\n            description: z$1.ZodNullable<z$1.ZodString>;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.list_skills\": HostDaemonCommandDescriptor<\"host.list_skills\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_skills\">;\n        providerId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n            user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        skills: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            name: z$1.ZodString;\n            description: z$1.ZodNullable<z$1.ZodString>;\n            filePath: z$1.ZodString;\n            rootKind: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n                plugin: \"plugin\";\n                \"bb-project\": \"bb-project\";\n                \"bb-data-dir\": \"bb-data-dir\";\n                \"bb-builtin\": \"bb-builtin\";\n                \"provider-project\": \"provider-project\";\n                \"provider-user\": \"provider-user\";\n            }>;\n            linked: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.delete_skill\": HostDaemonCommandDescriptor<\"host.delete_skill\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.delete_skill\">;\n        scope: z$1.ZodEnum<{\n            \"bb-project\": \"bb-project\";\n            \"provider-project\": \"provider-project\";\n            \"provider-user\": \"provider-user\";\n            \"bb-user\": \"bb-user\";\n        }>;\n        name: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        rootPath: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        deletedPath: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", false>;\n    \"host.write_skill\": HostDaemonCommandDescriptor<\"host.write_skill\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.write_skill\">;\n        scope: z$1.ZodEnum<{\n            \"bb-project\": \"bb-project\";\n            \"bb-user\": \"bb-user\";\n        }>;\n        name: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        content: z$1.ZodString;\n        expectedSha256: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"written\">;\n        filePath: z$1.ZodString;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"conflict\">;\n        currentSha256: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>], \"outcome\">, \"onlineRpc\", false>;\n    \"host.install_global_skills\": HostDaemonCommandDescriptor<\"host.install_global_skills\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.install_global_skills\">;\n        skills: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        installations: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.global_skills_status\": HostDaemonCommandDescriptor<\"host.global_skills_status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.global_skills_status\">;\n        names: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        entries: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n            treeHash: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.list_branches\": HostDaemonCommandDescriptor<\"host.list_branches\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_branches\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        branches: z$1.ZodArray<z$1.ZodString>;\n        branchesTruncated: z$1.ZodBoolean;\n        checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"branch\">;\n            branchName: z$1.ZodString;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"detached\">;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unborn\">;\n            branchName: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranchRelation: z$1.ZodNullable<z$1.ZodEnum<{\n            unknown: \"unknown\";\n            equal: \"equal\";\n            \"local-behind\": \"local-behind\";\n            \"local-ahead\": \"local-ahead\";\n            diverged: \"diverged\";\n        }>>;\n        hasUncommittedChanges: z$1.ZodBoolean;\n        operation: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"none\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"rebase\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"cherry-pick\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"revert\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>], \"kind\">;\n        originDefaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        remoteBranches: z$1.ZodArray<z$1.ZodString>;\n        remoteBranchesTruncated: z$1.ZodBoolean;\n        selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                local: \"local\";\n                remote: \"remote\";\n                missing: \"missing\";\n            }>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.file_metadata\": HostDaemonCommandDescriptor<\"host.file_metadata\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.file_metadata\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        modifiedAtMs: z$1.ZodNumber;\n        sizeBytes: z$1.ZodNumber;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.read_file\": HostDaemonCommandDescriptor<\"host.read_file\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.read_file\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        ref: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodNumber;\n        modifiedAtMs: z$1.ZodOptional<z$1.ZodNumber>;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.read_file_relative\": HostDaemonCommandDescriptor<\"host.read_file_relative\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.read_file_relative\">;\n        rootPath: z$1.ZodString;\n        path: z$1.ZodString;\n        dotfiles: z$1.ZodEnum<{\n            deny: \"deny\";\n            allow: \"allow\";\n        }>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodNumber;\n        modifiedAtMs: z$1.ZodOptional<z$1.ZodNumber>;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.write_file\": HostDaemonCommandDescriptor<\"host.write_file\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.write_file\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        createParents: z$1.ZodBoolean;\n        expectedSha256: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n        mode: z$1.ZodOptional<z$1.ZodNumber>;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"written\">;\n        sha256: z$1.ZodString;\n        sizeBytes: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"conflict\">;\n        currentSha256: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", false>;\n    \"provider.list_models\": HostDaemonCommandDescriptor<\"provider.list_models\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider.list_models\">;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        cwd: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        models: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            model: z$1.ZodString;\n            displayName: z$1.ZodString;\n            routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n            description: z$1.ZodString;\n            supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n                reasoningEffort: z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>;\n                description: z$1.ZodString;\n            }, z$1.core.$strip>>;\n            defaultReasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            isDefault: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n        selectedOnlyModels: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            model: z$1.ZodString;\n            displayName: z$1.ZodString;\n            routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n            description: z$1.ZodString;\n            supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n                reasoningEffort: z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>;\n                description: z$1.ZodString;\n            }, z$1.core.$strip>>;\n            defaultReasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            isDefault: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"known_acp_agents.status\": HostDaemonCommandDescriptor<\"known_acp_agents.status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"known_acp_agents.status\">;\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            executableName: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            executableName: z$1.ZodString;\n            installed: z$1.ZodBoolean;\n            executablePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"provider.usage\": HostDaemonCommandDescriptor<\"provider.usage\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider.usage\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        codex: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n        claudeCode: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n        cursor: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"workspace.discover_repos\": HostDaemonCommandDescriptor<\"workspace.discover_repos\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"workspace.discover_repos\">;\n        maxDepth: z$1.ZodNumber;\n        sinceDays: z$1.ZodNumber;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        repos: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n            lastActivityAt: z$1.ZodString;\n            originUrl: z$1.ZodNullable<z$1.ZodString>;\n            agentSeen: z$1.ZodBoolean;\n            agentSeenAt: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"provider_cli.status\": HostDaemonCommandDescriptor<\"provider_cli.status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider_cli.status\">;\n    }, z$1.core.$strict>, z$1.ZodRecord<z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>, z$1.ZodObject<{\n        displayName: z$1.ZodString;\n        executableName: z$1.ZodString;\n        executablePath: z$1.ZodNullable<z$1.ZodString>;\n        installed: z$1.ZodBoolean;\n        installSource: z$1.ZodEnum<{\n            notInstalled: \"notInstalled\";\n            npmGlobal: \"npmGlobal\";\n            external: \"external\";\n        }>;\n        currentVersion: z$1.ZodNullable<z$1.ZodString>;\n        latestVersion: z$1.ZodNullable<z$1.ZodString>;\n        minimumSupportedVersion: z$1.ZodNullable<z$1.ZodString>;\n        npmPackageName: z$1.ZodNullable<z$1.ZodString>;\n        npmGlobalPackageVersion: z$1.ZodNullable<z$1.ZodString>;\n        installAction: z$1.ZodNullable<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                install: \"install\";\n                update: \"update\";\n            }>;\n            label: z$1.ZodEnum<{\n                Install: \"Install\";\n                Update: \"Update\";\n            }>;\n            commandKind: z$1.ZodEnum<{\n                exec: \"exec\";\n                shell: \"shell\";\n            }>;\n            command: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        needsUpdate: z$1.ZodBoolean;\n        versionUnsupported: z$1.ZodBoolean;\n    }, z$1.core.$strip>>, \"onlineRpc\", true>;\n    \"provider_cli.install\": HostDaemonCommandDescriptor<\"provider_cli.install\", z$1.ZodObject<{\n        provider: z$1.ZodEnum<{\n            codex: \"codex\";\n            claudeCode: \"claudeCode\";\n            cursor: \"cursor\";\n        }>;\n        actionKind: z$1.ZodEnum<{\n            install: \"install\";\n            update: \"update\";\n        }>;\n        type: z$1.ZodLiteral<\"provider_cli.install\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        events: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"started\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            command: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"output\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            stream: z$1.ZodEnum<{\n                stdout: \"stdout\";\n                stderr: \"stderr\";\n            }>;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"completed\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n            signal: z$1.ZodNullable<z$1.ZodString>;\n            success: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"error\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            message: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"workspace.status\": HostDaemonCommandDescriptor<\"workspace.status\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.status\">;\n        mergeBaseBranch: z$1.ZodOptional<z$1.ZodString>;\n        maxUntrackedLineStatFiles: z$1.ZodNumber;\n        maxUntrackedLineStatBytes: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        workspaceStatus: z$1.ZodObject<{\n            workingTree: z$1.ZodObject<{\n                insertions: z$1.ZodNumber;\n                deletions: z$1.ZodNumber;\n                lineStatsComplete: z$1.ZodBoolean;\n                files: z$1.ZodArray<z$1.ZodObject<{\n                    path: z$1.ZodString;\n                    status: z$1.ZodEnum<{\n                        M: \"M\";\n                        A: \"A\";\n                        D: \"D\";\n                        R: \"R\";\n                        C: \"C\";\n                        U: \"U\";\n                        \"??\": \"??\";\n                        \"?\": \"?\";\n                    }>;\n                    insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                    deletions: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>>;\n                hasUncommittedChanges: z$1.ZodBoolean;\n                state: z$1.ZodEnum<{\n                    clean: \"clean\";\n                    untracked: \"untracked\";\n                    dirty_uncommitted: \"dirty_uncommitted\";\n                    committed_unmerged: \"committed_unmerged\";\n                    dirty_and_committed_unmerged: \"dirty_and_committed_unmerged\";\n                }>;\n            }, z$1.core.$strip>;\n            checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"branch\">;\n                branchName: z$1.ZodString;\n                headSha: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"detached\">;\n                headSha: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"unborn\">;\n                branchName: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"unknown\">;\n                reason: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">;\n            branch: z$1.ZodObject<{\n                currentBranch: z$1.ZodNullable<z$1.ZodString>;\n                defaultBranch: z$1.ZodString;\n            }, z$1.core.$strip>;\n            mergeBase: z$1.ZodNullable<z$1.ZodObject<{\n                insertions: z$1.ZodNumber;\n                deletions: z$1.ZodNumber;\n                lineStatsComplete: z$1.ZodBoolean;\n                files: z$1.ZodArray<z$1.ZodObject<{\n                    path: z$1.ZodString;\n                    status: z$1.ZodEnum<{\n                        M: \"M\";\n                        A: \"A\";\n                        D: \"D\";\n                        R: \"R\";\n                        C: \"C\";\n                        U: \"U\";\n                        \"??\": \"??\";\n                        \"?\": \"?\";\n                    }>;\n                    insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                    deletions: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>>;\n                mergeBaseBranch: z$1.ZodString;\n                baseRef: z$1.ZodNullable<z$1.ZodString>;\n                aheadCount: z$1.ZodNumber;\n                behindCount: z$1.ZodNumber;\n                hasCommittedUnmergedChanges: z$1.ZodBoolean;\n                commits: z$1.ZodArray<z$1.ZodObject<{\n                    sha: z$1.ZodString;\n                    shortSha: z$1.ZodString;\n                    subject: z$1.ZodString;\n                    authorName: z$1.ZodString;\n                    authoredAt: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diff\": HostDaemonCommandDescriptor<\"workspace.diff\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diff\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        maxDiffBytes: z$1.ZodNumber;\n        maxFileListBytes: z$1.ZodNumber;\n        maxUntrackedFiles: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        diff: z$1.ZodObject<{\n            diff: z$1.ZodString;\n            truncated: z$1.ZodBoolean;\n            shortstat: z$1.ZodString;\n            files: z$1.ZodString;\n            mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diffFiles\": HostDaemonCommandDescriptor<\"workspace.diffFiles\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diffFiles\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        maxFiles: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        files: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            previousPath: z$1.ZodNullable<z$1.ZodString>;\n            statusLetter: z$1.ZodEnum<{\n                M: \"M\";\n                A: \"A\";\n                D: \"D\";\n                R: \"R\";\n                C: \"C\";\n                T: \"T\";\n            }>;\n            additions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            binary: z$1.ZodBoolean;\n            origin: z$1.ZodEnum<{\n                untracked: \"untracked\";\n                tracked: \"tracked\";\n            }>;\n        }, z$1.core.$strip>>;\n        shortstat: z$1.ZodString;\n        mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diffPatch\": HostDaemonCommandDescriptor<\"workspace.diffPatch\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diffPatch\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        paths: z$1.ZodArray<z$1.ZodString>;\n        maxBytesPerFile: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        patches: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            patch: z$1.ZodString;\n            truncated: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.pull_request\": HostDaemonCommandDescriptor<\"workspace.pull_request\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request\">;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        pullRequest: z$1.ZodObject<{\n            number: z$1.ZodNumber;\n            title: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                OPEN: \"OPEN\";\n                CLOSED: \"CLOSED\";\n                MERGED: \"MERGED\";\n            }>;\n            url: z$1.ZodString;\n            isDraft: z$1.ZodBoolean;\n            baseRefName: z$1.ZodString;\n            headRefName: z$1.ZodString;\n            updatedAt: z$1.ZodString;\n            checks: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    completed: \"completed\";\n                    queued: \"queued\";\n                    in_progress: \"in_progress\";\n                }>;\n                conclusion: z$1.ZodNullable<z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    success: \"success\";\n                    cancelled: \"cancelled\";\n                    failure: \"failure\";\n                    skipped: \"skipped\";\n                    neutral: \"neutral\";\n                    timed_out: \"timed_out\";\n                    action_required: \"action_required\";\n                    startup_failure: \"startup_failure\";\n                    stale: \"stale\";\n                }>>;\n                url: z$1.ZodNullable<z$1.ZodString>;\n                startedAt: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strict>>;\n            reviewDecision: z$1.ZodNullable<z$1.ZodEnum<{\n                APPROVED: \"APPROVED\";\n                CHANGES_REQUESTED: \"CHANGES_REQUESTED\";\n                REVIEW_REQUIRED: \"REVIEW_REQUIRED\";\n            }>>;\n            reviewRequestCount: z$1.ZodNumber;\n            mergeStateStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                BEHIND: \"BEHIND\";\n                BLOCKED: \"BLOCKED\";\n                CLEAN: \"CLEAN\";\n                DIRTY: \"DIRTY\";\n                DRAFT: \"DRAFT\";\n                HAS_HOOKS: \"HAS_HOOKS\";\n                UNKNOWN: \"UNKNOWN\";\n                UNSTABLE: \"UNSTABLE\";\n            }>>;\n            mergeable: z$1.ZodNullable<z$1.ZodEnum<{\n                UNKNOWN: \"UNKNOWN\";\n                CONFLICTING: \"CONFLICTING\";\n                MERGEABLE: \"MERGEABLE\";\n            }>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"absent\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n};\ntype HostDaemonCommandRegistry = typeof hostDaemonCommandRegistry;\ntype AnyHostDaemonCommandDescriptor = HostDaemonCommandRegistry[keyof HostDaemonCommandRegistry];\ntype HostDaemonCommandDescriptorForTransport<Transport extends HostDaemonCommandTransport> = Extract<AnyHostDaemonCommandDescriptor, {\n    transport: Transport;\n}>;\ntype HostDaemonResultSchemaMapForTransport<Transport extends HostDaemonCommandTransport> = {\n    [Descriptor in HostDaemonCommandDescriptorForTransport<Transport> as Descriptor[\"type\"]]: Descriptor[\"resultSchema\"];\n};\ntype HostDaemonOnlineRpcResultSchemaMap = HostDaemonResultSchemaMapForTransport<\"onlineRpc\">;\ntype HostDaemonOnlineRpcResultByType = {\n    [K in keyof HostDaemonOnlineRpcResultSchemaMap]: z$1.infer<HostDaemonOnlineRpcResultSchemaMap[K]>;\n};\n\ndeclare const pickFolderResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PickFolderResponse = z$1.infer<typeof pickFolderResponseSchema>;\ndeclare const pathsExistRequestSchema: z$1.ZodObject<{\n    paths: z$1.ZodPipe<z$1.ZodArray<z$1.ZodString>, z$1.ZodTransform<string[], string[]>>;\n}, z$1.core.$strip>;\ntype PathsExistRequest = z$1.infer<typeof pathsExistRequestSchema>;\ndeclare const pathsExistResponseSchema: z$1.ZodObject<{\n    existence: z$1.ZodRecord<z$1.ZodString, z$1.ZodBoolean>;\n}, z$1.core.$strip>;\ntype PathsExistResponse = z$1.infer<typeof pathsExistResponseSchema>;\ndeclare const providerCliStatusResponseSchema: z$1.ZodRecord<z$1.ZodEnum<{\n    codex: \"codex\";\n    claudeCode: \"claudeCode\";\n    cursor: \"cursor\";\n}>, z$1.ZodObject<{\n    displayName: z$1.ZodString;\n    executableName: z$1.ZodString;\n    executablePath: z$1.ZodNullable<z$1.ZodString>;\n    installed: z$1.ZodBoolean;\n    installSource: z$1.ZodEnum<{\n        notInstalled: \"notInstalled\";\n        npmGlobal: \"npmGlobal\";\n        external: \"external\";\n    }>;\n    currentVersion: z$1.ZodNullable<z$1.ZodString>;\n    latestVersion: z$1.ZodNullable<z$1.ZodString>;\n    minimumSupportedVersion: z$1.ZodNullable<z$1.ZodString>;\n    npmPackageName: z$1.ZodNullable<z$1.ZodString>;\n    npmGlobalPackageVersion: z$1.ZodNullable<z$1.ZodString>;\n    installAction: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            install: \"install\";\n            update: \"update\";\n        }>;\n        label: z$1.ZodEnum<{\n            Install: \"Install\";\n            Update: \"Update\";\n        }>;\n        commandKind: z$1.ZodEnum<{\n            exec: \"exec\";\n            shell: \"shell\";\n        }>;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    needsUpdate: z$1.ZodBoolean;\n    versionUnsupported: z$1.ZodBoolean;\n}, z$1.core.$strip>>;\ntype ProviderCliStatusResponse = z$1.infer<typeof providerCliStatusResponseSchema>;\ndeclare const providerCliInstallRequestSchema: z$1.ZodObject<{\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    actionKind: z$1.ZodEnum<{\n        install: \"install\";\n        update: \"update\";\n    }>;\n}, z$1.core.$strip>;\ntype ProviderCliInstallRequest = z$1.infer<typeof providerCliInstallRequestSchema>;\ndeclare const providerCliInstallEventSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"started\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    command: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"output\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    stream: z$1.ZodEnum<{\n        stdout: \"stdout\";\n        stderr: \"stderr\";\n    }>;\n    text: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"completed\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    signal: z$1.ZodNullable<z$1.ZodString>;\n    success: z$1.ZodBoolean;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"error\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>], \"type\">;\ntype ProviderCliInstallEvent = z$1.infer<typeof providerCliInstallEventSchema>;\n\ninterface CreateFilePreviewResponse {\n    baseUrl: string;\n    expiresAtMs: number;\n}\ntype HostFileReadResponse = HostDaemonOnlineRpcResultByType[\"host.read_file\"];\ntype HostFileWriteResponse = HostDaemonOnlineRpcResultByType[\"host.write_file\"];\ntype HostFileListResponse = HostDaemonOnlineRpcResultByType[\"host.list_files\"];\ntype HostPathListResponse = HostDaemonOnlineRpcResultByType[\"host.list_paths\"];\ntype HostMkdirResponse = HostDaemonOnlineRpcResultByType[\"host.mkdir\"];\ntype HostMovePathResponse = HostDaemonOnlineRpcResultByType[\"host.move_path\"];\ntype HostRemovePathResponse = HostDaemonOnlineRpcResultByType[\"host.remove_path\"];\n\n/**\n * Query for `GET /hosts/:id/directory`, the interactive path browser's\n * single-level directory read. `path` is an absolute directory on the host;\n * omitting it lists the host's home directory (the daemon resolves it, since a\n * remote caller cannot know the host's home).\n */\ndeclare const hostDirectoryQuerySchema: z$1.ZodObject<{\n    path: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype HostDirectoryQuery = z$1.infer<typeof hostDirectoryQuerySchema>;\ndeclare const hostDirectoryListingSchema: z$1.ZodObject<{\n    directory: z$1.ZodString;\n    parent: z$1.ZodNullable<z$1.ZodString>;\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        name: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype HostDirectoryListing = z$1.infer<typeof hostDirectoryListingSchema>;\n/** Project name is sent so the daemon can derive its host-local checkout path. */\ndeclare const hostCloneDefaultPathQuerySchema: z$1.ZodObject<{\n    projectId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype HostCloneDefaultPathQuery = z$1.infer<typeof hostCloneDefaultPathQuerySchema>;\ndeclare const hostCloneDefaultPathResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n}, z$1.core.$strict>;\ntype HostCloneDefaultPathResponse = z$1.infer<typeof hostCloneDefaultPathResponseSchema>;\ndeclare const createHostJoinCodeResponseSchema: z$1.ZodObject<{\n    joinCode: z$1.ZodString;\n    hostId: z$1.ZodString;\n    expiresAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype CreateHostJoinCodeResponse = z$1.infer<typeof createHostJoinCodeResponseSchema>;\ndeclare const updateHostRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateHostRequest = z$1.infer<typeof updateHostRequestSchema>;\ndeclare const hostRetryUpdateResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strict>;\ntype HostRetryUpdateResponse = z$1.infer<typeof hostRetryUpdateResponseSchema>;\ntype HostPathsExistRequest = PathsExistRequest;\ntype HostPathsExistResponse = PathsExistResponse;\ndeclare const hostPickFolderRequestSchema: z$1.ZodObject<{\n    clientHostId: z$1.ZodString;\n}, z$1.core.$strict>;\ntype HostPickFolderRequest = z$1.infer<typeof hostPickFolderRequestSchema>;\ntype HostPickFolderResponse = PickFolderResponse;\ntype HostProviderCliStatusResponse = ProviderCliStatusResponse;\ntype HostProviderCliInstallRequest = ProviderCliInstallRequest;\ntype HostProviderCliInstallEvent = ProviderCliInstallEvent;\n\ndeclare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    outcome: z$1.ZodEnum<{\n        unavailable: \"unavailable\";\n        incompatible: \"incompatible\";\n        current: \"current\";\n        \"update-available\": \"update-available\";\n        pinned: \"pinned\";\n    }>;\n    devMode: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n    installed: z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>;\n    candidate: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    blocked: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        reasons: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginUpdateCheckEntry = z$1.infer<typeof pluginUpdateCheckEntrySchema>;\ndeclare const pluginApplyUpdateResultSchema: z$1.ZodObject<{\n    applied: z$1.ZodBoolean;\n    from: z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>;\n    to: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    outcome: z$1.ZodEnum<{\n        current: \"current\";\n        updated: \"updated\";\n        \"rolled-back\": \"rolled-back\";\n    }>;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginApplyUpdateResult$1 = z$1.infer<typeof pluginApplyUpdateResultSchema>;\ndeclare const pluginSourceDetailSchema: z$1.ZodObject<{\n    requested: z$1.ZodString;\n    resolved: z$1.ZodString;\n    subdirectory: z$1.ZodOptional<z$1.ZodString>;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n    resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n    integrity: z$1.ZodOptional<z$1.ZodString>;\n    registry: z$1.ZodOptional<z$1.ZodString>;\n    engines: z$1.ZodObject<{\n        bb: z$1.ZodOptional<z$1.ZodString>;\n        bbPluginSdk: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    installedAt: z$1.ZodOptional<z$1.ZodNumber>;\n    history: z$1.ZodArray<z$1.ZodObject<{\n        version: z$1.ZodString;\n        activatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginSourceDetail = z$1.infer<typeof pluginSourceDetailSchema>;\ndeclare const installedPluginSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    rootDir: z$1.ZodString;\n    version: z$1.ZodString;\n    provenance: z$1.ZodEnum<{\n        builtin: \"builtin\";\n        direct: \"direct\";\n        catalog: \"catalog\";\n    }>;\n    isOrphanedBuiltin: z$1.ZodBoolean;\n    catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n    catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n    publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n    sourceDisplay: z$1.ZodString;\n    updateState: z$1.ZodObject<{\n        outcome: z$1.ZodOptional<z$1.ZodEnum<{\n            unavailable: \"unavailable\";\n            incompatible: \"incompatible\";\n            current: \"current\";\n            \"update-available\": \"update-available\";\n            pinned: \"pinned\";\n        }>>;\n        detail: z$1.ZodOptional<z$1.ZodString>;\n        availableVersion: z$1.ZodOptional<z$1.ZodString>;\n        blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n        blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n        lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n            version: z$1.ZodString;\n            at: z$1.ZodNumber;\n            detail: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n    enabled: z$1.ZodBoolean;\n    description: z$1.ZodNullable<z$1.ZodString>;\n    name: z$1.ZodNullable<z$1.ZodString>;\n    icon: z$1.ZodNullable<z$1.ZodString>;\n    iconUrl: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        running: \"running\";\n        missing: \"missing\";\n        incompatible: \"incompatible\";\n        disabled: \"disabled\";\n        degraded: \"degraded\";\n        \"needs-configuration\": \"needs-configuration\";\n    }>;\n    statusDetail: z$1.ZodNullable<z$1.ZodString>;\n    handlerStats: z$1.ZodObject<{\n        count: z$1.ZodNumber;\n        totalMs: z$1.ZodNumber;\n        maxMs: z$1.ZodNumber;\n        errorCount: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    services: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        state: z$1.ZodEnum<{\n            running: \"running\";\n            stopped: \"stopped\";\n            backoff: \"backoff\";\n        }>;\n    }, z$1.core.$strip>>;\n    schedules: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        cron: z$1.ZodString;\n        nextRunAt: z$1.ZodNumber;\n        lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            ok: \"ok\";\n        }>>;\n        lastError: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        summary: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            skill: \"skill\";\n            theme: \"theme\";\n            \"agent-tool\": \"agent-tool\";\n            \"thread-integration\": \"thread-integration\";\n        }>;\n        id: z$1.ZodString;\n        label: z$1.ZodString;\n        detail: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>>;\n    hasSettings: z$1.ZodBoolean;\n    app: z$1.ZodObject<{\n        hasApp: z$1.ZodBoolean;\n        bundle: z$1.ZodNullable<z$1.ZodObject<{\n            jsUrl: z$1.ZodString;\n            cssUrl: z$1.ZodNullable<z$1.ZodString>;\n            hash: z$1.ZodString;\n            sdkMajor: z$1.ZodNumber;\n            sdkVersion: z$1.ZodString;\n            compatible: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n    logoUrl: z$1.ZodNullable<z$1.ZodString>;\n    logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype InstalledPlugin = z$1.infer<typeof installedPluginSchema>;\ndeclare const pluginListResponseSchema: z$1.ZodObject<{\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        rootDir: z$1.ZodString;\n        version: z$1.ZodString;\n        provenance: z$1.ZodEnum<{\n            builtin: \"builtin\";\n            direct: \"direct\";\n            catalog: \"catalog\";\n        }>;\n        isOrphanedBuiltin: z$1.ZodBoolean;\n        catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n        catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n        publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n        sourceDisplay: z$1.ZodString;\n        updateState: z$1.ZodObject<{\n            outcome: z$1.ZodOptional<z$1.ZodEnum<{\n                unavailable: \"unavailable\";\n                incompatible: \"incompatible\";\n                current: \"current\";\n                \"update-available\": \"update-available\";\n                pinned: \"pinned\";\n            }>>;\n            detail: z$1.ZodOptional<z$1.ZodString>;\n            availableVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n                version: z$1.ZodString;\n                at: z$1.ZodNumber;\n                detail: z$1.ZodString;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        enabled: z$1.ZodBoolean;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        icon: z$1.ZodNullable<z$1.ZodString>;\n        iconUrl: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            missing: \"missing\";\n            incompatible: \"incompatible\";\n            disabled: \"disabled\";\n            degraded: \"degraded\";\n            \"needs-configuration\": \"needs-configuration\";\n        }>;\n        statusDetail: z$1.ZodNullable<z$1.ZodString>;\n        handlerStats: z$1.ZodObject<{\n            count: z$1.ZodNumber;\n            totalMs: z$1.ZodNumber;\n            maxMs: z$1.ZodNumber;\n            errorCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        services: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                stopped: \"stopped\";\n                backoff: \"backoff\";\n            }>;\n        }, z$1.core.$strip>>;\n        schedules: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            cron: z$1.ZodString;\n            nextRunAt: z$1.ZodNumber;\n            lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n            lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                error: \"error\";\n                running: \"running\";\n                ok: \"ok\";\n            }>>;\n            lastError: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            summary: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                skill: \"skill\";\n                theme: \"theme\";\n                \"agent-tool\": \"agent-tool\";\n                \"thread-integration\": \"thread-integration\";\n            }>;\n            id: z$1.ZodString;\n            label: z$1.ZodString;\n            detail: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        hasSettings: z$1.ZodBoolean;\n        app: z$1.ZodObject<{\n            hasApp: z$1.ZodBoolean;\n            bundle: z$1.ZodNullable<z$1.ZodObject<{\n                jsUrl: z$1.ZodString;\n                cssUrl: z$1.ZodNullable<z$1.ZodString>;\n                hash: z$1.ZodString;\n                sdkMajor: z$1.ZodNumber;\n                sdkVersion: z$1.ZodString;\n                compatible: z$1.ZodBoolean;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginListResponse = z$1.infer<typeof pluginListResponseSchema>;\ndeclare const pluginReloadResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        rootDir: z$1.ZodString;\n        version: z$1.ZodString;\n        provenance: z$1.ZodEnum<{\n            builtin: \"builtin\";\n            direct: \"direct\";\n            catalog: \"catalog\";\n        }>;\n        isOrphanedBuiltin: z$1.ZodBoolean;\n        catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n        catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n        publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n        sourceDisplay: z$1.ZodString;\n        updateState: z$1.ZodObject<{\n            outcome: z$1.ZodOptional<z$1.ZodEnum<{\n                unavailable: \"unavailable\";\n                incompatible: \"incompatible\";\n                current: \"current\";\n                \"update-available\": \"update-available\";\n                pinned: \"pinned\";\n            }>>;\n            detail: z$1.ZodOptional<z$1.ZodString>;\n            availableVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n                version: z$1.ZodString;\n                at: z$1.ZodNumber;\n                detail: z$1.ZodString;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        enabled: z$1.ZodBoolean;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        icon: z$1.ZodNullable<z$1.ZodString>;\n        iconUrl: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            missing: \"missing\";\n            incompatible: \"incompatible\";\n            disabled: \"disabled\";\n            degraded: \"degraded\";\n            \"needs-configuration\": \"needs-configuration\";\n        }>;\n        statusDetail: z$1.ZodNullable<z$1.ZodString>;\n        handlerStats: z$1.ZodObject<{\n            count: z$1.ZodNumber;\n            totalMs: z$1.ZodNumber;\n            maxMs: z$1.ZodNumber;\n            errorCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        services: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                stopped: \"stopped\";\n                backoff: \"backoff\";\n            }>;\n        }, z$1.core.$strip>>;\n        schedules: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            cron: z$1.ZodString;\n            nextRunAt: z$1.ZodNumber;\n            lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n            lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                error: \"error\";\n                running: \"running\";\n                ok: \"ok\";\n            }>>;\n            lastError: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            summary: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                skill: \"skill\";\n                theme: \"theme\";\n                \"agent-tool\": \"agent-tool\";\n                \"thread-integration\": \"thread-integration\";\n            }>;\n            id: z$1.ZodString;\n            label: z$1.ZodString;\n            detail: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        hasSettings: z$1.ZodBoolean;\n        app: z$1.ZodObject<{\n            hasApp: z$1.ZodBoolean;\n            bundle: z$1.ZodNullable<z$1.ZodObject<{\n                jsUrl: z$1.ZodString;\n                cssUrl: z$1.ZodNullable<z$1.ZodString>;\n                hash: z$1.ZodString;\n                sdkMajor: z$1.ZodNumber;\n                sdkVersion: z$1.ZodString;\n                compatible: z$1.ZodBoolean;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginReloadResponse = z$1.infer<typeof pluginReloadResponseSchema>;\ndeclare const pluginRemoveResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strip>;\ntype PluginRemoveResponse = z$1.infer<typeof pluginRemoveResponseSchema>;\ndeclare const pluginSettingsResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    schema: z$1.ZodRecord<z$1.ZodString, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"string\">;\n        secret: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"boolean\">;\n        default: z$1.ZodOptional<z$1.ZodBoolean>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"select\">;\n        options: z$1.ZodArray<z$1.ZodString>;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project\">;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>], \"type\">>;\n    values: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>;\n}, z$1.core.$strip>;\ntype PluginSettingsResponse = z$1.infer<typeof pluginSettingsResponseSchema>;\ndeclare const pluginTokenResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    token: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PluginTokenResponse = z$1.infer<typeof pluginTokenResponseSchema>;\ndeclare const pluginCatalogStatusSchema: z$1.ZodObject<{\n    pluginCount: z$1.ZodNumber;\n    includedPluginCount: z$1.ZodNumber;\n    optionalPluginCount: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype PluginCatalogStatus = z$1.infer<typeof pluginCatalogStatusSchema>;\ndeclare const pluginCatalogSearchResultSchema: z$1.ZodObject<{\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    description: z$1.ZodString;\n    icon: z$1.ZodNullable<z$1.ZodString>;\n    iconUrl: z$1.ZodNullable<z$1.ZodString>;\n    category: z$1.ZodString;\n    source: z$1.ZodString;\n    marketplace: z$1.ZodString;\n    marketplaceDisplayName: z$1.ZodString;\n    publisherKey: z$1.ZodString;\n    publisherLabel: z$1.ZodString;\n    official: z$1.ZodBoolean;\n    author: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        url: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    installed: z$1.ZodBoolean;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginCatalogSearchResult$1 = z$1.infer<typeof pluginCatalogSearchResultSchema>;\n/**\n * The true source an install will run against, resolved before anything runs.\n * Both kinds report the exact artifact they resolve to right now — a commit\n * for git, a version and its integrity for npm — so a range or tag install is\n * confirmed against the exact code it will fetch.\n */\ndeclare const pluginCatalogResolvedSourceSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"npm\">;\n    package: z$1.ZodString;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tag: z$1.ZodOptional<z$1.ZodString>;\n    registry: z$1.ZodOptional<z$1.ZodString>;\n    resolvedVersion: z$1.ZodOptional<z$1.ZodString>;\n    resolvedIntegrity: z$1.ZodOptional<z$1.ZodString>;\n    unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"git\">;\n    url: z$1.ZodString;\n    subdir: z$1.ZodOptional<z$1.ZodString>;\n    ref: z$1.ZodOptional<z$1.ZodString>;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n    resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n    resolvedCommit: z$1.ZodOptional<z$1.ZodString>;\n    unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>], \"kind\">;\ntype PluginCatalogResolvedSource = z$1.infer<typeof pluginCatalogResolvedSourceSchema>;\n/**\n * What `POST /plugin-catalog/install` would do with the same arguments, shown\n * to the user before anything runs. `bundled` entries install from the copy\n * inside the app; `marketplace` entries install from their listed source.\n */\ndeclare const pluginCatalogInstallPlanSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"bundled\">;\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    source: z$1.ZodString;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"marketplace\">;\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    marketplace: z$1.ZodString;\n    marketplaceDisplayName: z$1.ZodString;\n    official: z$1.ZodBoolean;\n    author: z$1.ZodObject<{\n        name: z$1.ZodString;\n        url: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    source: z$1.ZodString;\n    resolvedSource: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"npm\">;\n        package: z$1.ZodString;\n        range: z$1.ZodOptional<z$1.ZodString>;\n        tag: z$1.ZodOptional<z$1.ZodString>;\n        registry: z$1.ZodOptional<z$1.ZodString>;\n        resolvedVersion: z$1.ZodOptional<z$1.ZodString>;\n        resolvedIntegrity: z$1.ZodOptional<z$1.ZodString>;\n        unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"git\">;\n        url: z$1.ZodString;\n        subdir: z$1.ZodOptional<z$1.ZodString>;\n        ref: z$1.ZodOptional<z$1.ZodString>;\n        range: z$1.ZodOptional<z$1.ZodString>;\n        tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n        resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n        resolvedCommit: z$1.ZodOptional<z$1.ZodString>;\n        unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>], \"kind\">;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>], \"kind\">;\ntype PluginCatalogInstallPlan = z$1.infer<typeof pluginCatalogInstallPlanSchema>;\ndeclare const pluginMarketplaceSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    displayName: z$1.ZodString;\n    description: z$1.ZodNullable<z$1.ZodString>;\n    official: z$1.ZodBoolean;\n    sourceKind: z$1.ZodEnum<{\n        path: \"path\";\n        git: \"git\";\n        https: \"https\";\n    }>;\n    source: z$1.ZodString;\n    resolvedCommit: z$1.ZodNullable<z$1.ZodString>;\n    entryCount: z$1.ZodNumber;\n    lastRefreshAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastAttemptAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastError: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginMarketplace = z$1.infer<typeof pluginMarketplaceSchema>;\ndeclare const pluginMarketplaceRefreshResultSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    ok: z$1.ZodBoolean;\n    error: z$1.ZodNullable<z$1.ZodString>;\n    marketplace: z$1.ZodObject<{\n        name: z$1.ZodString;\n        displayName: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        official: z$1.ZodBoolean;\n        sourceKind: z$1.ZodEnum<{\n            path: \"path\";\n            git: \"git\";\n            https: \"https\";\n        }>;\n        source: z$1.ZodString;\n        resolvedCommit: z$1.ZodNullable<z$1.ZodString>;\n        entryCount: z$1.ZodNumber;\n        lastRefreshAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastAttemptAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastError: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype PluginMarketplaceRefreshResult$1 = z$1.infer<typeof pluginMarketplaceRefreshResultSchema>;\n\ndeclare const systemExecutionOptionsResponseSchema: z$1.ZodObject<{\n    providers: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        displayName: z$1.ZodString;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        capabilities: z$1.ZodObject<{\n            supportsThreadArchive: z$1.ZodBoolean;\n            supportsThreadRename: z$1.ZodBoolean;\n            supportsServiceTier: z$1.ZodBoolean;\n            supportsNativeUserQuestion: z$1.ZodBoolean;\n            supportsFork: z$1.ZodBoolean;\n            supportsSessionRewind: z$1.ZodBoolean;\n            permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                \"accept-edits\": \"accept-edits\";\n                auto: \"auto\";\n                full: \"full\";\n            }>>;\n        }, z$1.core.$strip>;\n        composerActions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"skills\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            command: z$1.ZodObject<{\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                trailingText: z$1.ZodString;\n            }, z$1.core.$strip>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"goal\">;\n            command: z$1.ZodObject<{\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                trailingText: z$1.ZodString;\n            }, z$1.core.$strip>;\n        }, z$1.core.$strip>], \"kind\">>;\n        available: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    permissionCeiling: z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>;\n    models: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        model: z$1.ZodString;\n        displayName: z$1.ZodString;\n        routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n        description: z$1.ZodString;\n        supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n            reasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            description: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        defaultReasoningEffort: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        isDefault: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    selectedOnlyModels: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        model: z$1.ZodString;\n        displayName: z$1.ZodString;\n        routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n        description: z$1.ZodString;\n        supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n            reasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            description: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        defaultReasoningEffort: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        isDefault: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    modelLoadError: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        code: z$1.ZodEnum<{\n            failed: \"failed\";\n            provider_unavailable: \"provider_unavailable\";\n            missing_executable: \"missing_executable\";\n            auth_required: \"auth_required\";\n            timeout: \"timeout\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SystemExecutionOptionsResponse = z$1.infer<typeof systemExecutionOptionsResponseSchema>;\n/**\n * Routes provider discovery through an environment's host or an explicit\n * host. Omitting both preserves the primary-host fallback.\n */\ndeclare const systemProvidersQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemProvidersQuery = z$1.infer<typeof systemProvidersQuerySchema>;\ndeclare const systemExecutionOptionsQuerySchema: z$1.ZodObject<{\n    providerId: z$1.ZodOptional<z$1.ZodString>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemExecutionOptionsQuery = z$1.infer<typeof systemExecutionOptionsQuerySchema>;\n/** Omission preserves the existing behavior of reading the primary machine. */\ndeclare const systemUsageLimitsQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemUsageLimitsQuery = z$1.infer<typeof systemUsageLimitsQuerySchema>;\ndeclare const systemVoiceTranscriptionResponseSchema: z$1.ZodObject<{\n    text: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemVoiceTranscriptionResponse = z$1.infer<typeof systemVoiceTranscriptionResponseSchema>;\ndeclare const onboardingAgentOverviewSchema: z$1.ZodObject<{\n    agents: z$1.ZodArray<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        displayName: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            connected: \"connected\";\n            unauthenticated: \"unauthenticated\";\n            expired: \"expired\";\n            not_installed: \"not_installed\";\n        }>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        canInstall: z$1.ZodBoolean;\n        loginCommand: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype OnboardingAgentOverview = z$1.infer<typeof onboardingAgentOverviewSchema>;\n/** Omission reads the primary machine, matching the usage-limits route. */\ndeclare const systemOnboardingReposQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemOnboardingReposQuery = z$1.infer<typeof systemOnboardingReposQuerySchema>;\n/**\n * Onboarding funnel events, reported by the app and forwarded to the server's\n * anonymous telemetry. Categorical or counts only — never paths, project names,\n * or account emails.\n */\ndeclare const onboardingTelemetryEventSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_started\">;\n    agentState: z$1.ZodEnum<{\n        connected: \"connected\";\n        none: \"none\";\n        signed_out: \"signed_out\";\n    }>;\n    detectedAgentCount: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_step_completed\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_step_skipped\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_completed\">;\n    agentState: z$1.ZodEnum<{\n        connected: \"connected\";\n        none: \"none\";\n        signed_out: \"signed_out\";\n    }>;\n    projectsAdded: z$1.ZodNumber;\n    durationMs: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_dismissed\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>], \"name\">;\ntype OnboardingTelemetryEvent = z$1.infer<typeof onboardingTelemetryEventSchema>;\ndeclare const systemConfigResponseSchema: z$1.ZodObject<{\n    generalSettings: z$1.ZodObject<{\n        showKeyboardHints: z$1.ZodBoolean;\n        steerActiveThreadOnEnter: z$1.ZodBoolean;\n        showUnhandledProviderEvents: z$1.ZodBoolean;\n        codexMemoryEnabled: z$1.ZodBoolean;\n        claudeCodeMemoryEnabled: z$1.ZodBoolean;\n        codexSubagentsDisabled: z$1.ZodBoolean;\n        claudeCodeSubagentsDisabled: z$1.ZodBoolean;\n        claudeCodeWorkflowsDisabled: z$1.ZodBoolean;\n        onboardingCompletedAt: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>;\n    keybindings: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        desktopOnly: z$1.ZodBoolean;\n        shortcut: z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>;\n        when: z$1.ZodObject<{\n            all: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n            none: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>>;\n    defaultKeybindings: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        desktopOnly: z$1.ZodBoolean;\n        when: z$1.ZodObject<{\n            all: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n            none: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n        }, z$1.core.$strict>;\n        shortcut: z$1.ZodNullable<z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    keybindingOverrides: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        shortcut: z$1.ZodNullable<z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    experiments: z$1.ZodRecord<z$1.ZodEnum<{\n        claudeCodeMockCliTraffic: \"claudeCodeMockCliTraffic\";\n        editMessages: \"editMessages\";\n        newOnboarding: \"newOnboarding\";\n        providerSessionReaping: \"providerSessionReaping\";\n    }>, z$1.ZodBoolean>;\n    appearance: z$1.ZodObject<{\n        themeId: z$1.ZodString;\n        customCss: z$1.ZodNullable<z$1.ZodString>;\n        faviconColor: z$1.ZodEnum<{\n            default: \"default\";\n            red: \"red\";\n            orange: \"orange\";\n            yellow: \"yellow\";\n            green: \"green\";\n            teal: \"teal\";\n            blue: \"blue\";\n            purple: \"purple\";\n            pink: \"pink\";\n        }>;\n        resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n            dark: z$1.ZodString;\n            light: z$1.ZodString;\n            files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>;\n    customThemes: z$1.ZodArray<z$1.ZodString>;\n    pluginThemes: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        pluginId: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    featureFlags: z$1.ZodObject<{\n        placeholder: z$1.ZodBoolean;\n        timelineWindowEventBudget: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    hostDaemonPort: z$1.ZodNullable<z$1.ZodNumber>;\n    serverUrl: z$1.ZodString;\n    primaryHostId: z$1.ZodNullable<z$1.ZodString>;\n    primaryHostPlatform: z$1.ZodNullable<z$1.ZodEnum<{\n        unknown: \"unknown\";\n        darwin: \"darwin\";\n        linux: \"linux\";\n        wsl: \"wsl\";\n    }>>;\n    voiceTranscriptionEnabled: z$1.ZodBoolean;\n    dataDir: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemConfigResponse = z$1.infer<typeof systemConfigResponseSchema>;\ndeclare const systemAttentionResponseSchema: z$1.ZodObject<{\n    hasAttention: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype SystemAttentionResponse = z$1.infer<typeof systemAttentionResponseSchema>;\n/**\n * Theme catalog: the on-disk custom-theme directory plus the discovered custom\n * themes and the active palette. Drives `bb theme list` / `bb theme dir`.\n */\ndeclare const themeCatalogResponseSchema: z$1.ZodObject<{\n    dir: z$1.ZodString;\n    custom: z$1.ZodArray<z$1.ZodString>;\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        pluginId: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    active: z$1.ZodObject<{\n        themeId: z$1.ZodString;\n        customCss: z$1.ZodNullable<z$1.ZodString>;\n        faviconColor: z$1.ZodEnum<{\n            default: \"default\";\n            red: \"red\";\n            orange: \"orange\";\n            yellow: \"yellow\";\n            green: \"green\";\n            teal: \"teal\";\n            blue: \"blue\";\n            purple: \"purple\";\n            pink: \"pink\";\n        }>;\n        resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n            dark: z$1.ZodString;\n            light: z$1.ZodString;\n            files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype ThemeCatalogResponse = z$1.infer<typeof themeCatalogResponseSchema>;\ndeclare const systemVersionResponseSchema: z$1.ZodObject<{\n    currentVersion: z$1.ZodString;\n    latestVersion: z$1.ZodNullable<z$1.ZodString>;\n    source: z$1.ZodLiteral<\"npm\">;\n    updateAvailable: z$1.ZodBoolean;\n    isDevelopment: z$1.ZodBoolean;\n    upgradeCommand: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemVersionResponse = z$1.infer<typeof systemVersionResponseSchema>;\ndeclare const systemConfigReloadResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strip>;\ndeclare const systemCliSkillsStatusResponseSchema: z$1.ZodObject<{\n    machines: z$1.ZodArray<z$1.ZodObject<{\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            missing: \"missing\";\n            installed: \"installed\";\n            outdated: \"outdated\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SystemCliSkillsStatusResponse = z$1.infer<typeof systemCliSkillsStatusResponseSchema>;\n/** The machines to copy the built-in bb CLI skills onto. */\ndeclare const systemInstallCliSkillsRequestSchema: z$1.ZodObject<{\n    hostIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemInstallCliSkillsRequest = z$1.infer<typeof systemInstallCliSkillsRequestSchema>;\n/**\n * One entry per requested machine. A machine that is offline or otherwise\n * refuses the install fails on its own without taking the others down, so the\n * caller can report exactly which machines got the skills.\n */\ndeclare const systemInstallCliSkillsResponseSchema: z$1.ZodObject<{\n    results: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        installations: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<false>;\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        errorMessage: z$1.ZodString;\n    }, z$1.core.$strip>], \"ok\">>;\n}, z$1.core.$strip>;\ntype SystemInstallCliSkillsResponse = z$1.infer<typeof systemInstallCliSkillsResponseSchema>;\ntype SystemConfigReloadResponse = z$1.infer<typeof systemConfigReloadResponseSchema>;\n\ndeclare const terminalSessionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodNullable<z$1.ZodString>;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    hostId: z$1.ZodString;\n    title: z$1.ZodString;\n    initialCwd: z$1.ZodString;\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n    status: z$1.ZodEnum<{\n        starting: \"starting\";\n        disconnected: \"disconnected\";\n        running: \"running\";\n        exited: \"exited\";\n    }>;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    closeReason: z$1.ZodNullable<z$1.ZodEnum<{\n        user: \"user\";\n        \"thread-deleted\": \"thread-deleted\";\n        \"process-exit\": \"process-exit\";\n        \"daemon-disconnect\": \"daemon-disconnect\";\n        \"environment-destroyed\": \"environment-destroyed\";\n        \"thread-archived\": \"thread-archived\";\n        \"open-timeout\": \"open-timeout\";\n    }>>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    lastUserInputAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TerminalSession = z$1.infer<typeof terminalSessionSchema>;\ndeclare const terminalListResponseSchema: z$1.ZodObject<{\n    sessions: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        hostId: z$1.ZodString;\n        title: z$1.ZodString;\n        initialCwd: z$1.ZodString;\n        cols: z$1.ZodNumber;\n        rows: z$1.ZodNumber;\n        status: z$1.ZodEnum<{\n            starting: \"starting\";\n            disconnected: \"disconnected\";\n            running: \"running\";\n            exited: \"exited\";\n        }>;\n        exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n        closeReason: z$1.ZodNullable<z$1.ZodEnum<{\n            user: \"user\";\n            \"thread-deleted\": \"thread-deleted\";\n            \"process-exit\": \"process-exit\";\n            \"daemon-disconnect\": \"daemon-disconnect\";\n            \"environment-destroyed\": \"environment-destroyed\";\n            \"thread-archived\": \"thread-archived\";\n            \"open-timeout\": \"open-timeout\";\n        }>>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        lastUserInputAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype TerminalListResponse = z$1.infer<typeof terminalListResponseSchema>;\ndeclare const createTerminalRequestSchema: z$1.ZodObject<{\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n    start: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"shell\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"command\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strict>], \"mode\">>;\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"environment\">;\n        environmentId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"host_path\">;\n        hostId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>], \"kind\">;\n    title: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype CreateTerminalRequest = z$1.infer<typeof createTerminalRequestSchema>;\ndeclare const updateTerminalRequestSchema: z$1.ZodObject<{\n    title: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateTerminalRequest = z$1.infer<typeof updateTerminalRequestSchema>;\ndeclare const terminalInputRequestSchema: z$1.ZodObject<{\n    dataBase64: z$1.ZodString;\n}, z$1.core.$strict>;\ntype TerminalInputRequest = z$1.infer<typeof terminalInputRequestSchema>;\ndeclare const terminalResizeRequestSchema: z$1.ZodObject<{\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype TerminalResizeRequest = z$1.infer<typeof terminalResizeRequestSchema>;\ndeclare const terminalOutputQuerySchema: z$1.ZodObject<{\n    sinceSeq: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n    tailBytes: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n    limitChunks: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n}, z$1.core.$strict>;\ntype TerminalOutputQuery = z$1.infer<typeof terminalOutputQuerySchema>;\ndeclare const terminalOutputResponseSchema: z$1.ZodObject<{\n    chunks: z$1.ZodArray<z$1.ZodObject<{\n        seq: z$1.ZodNumber;\n        dataBase64: z$1.ZodString;\n    }, z$1.core.$strict>>;\n    nextSeq: z$1.ZodNumber;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strict>;\ntype TerminalOutputResponse = z$1.infer<typeof terminalOutputResponseSchema>;\n\ndeclare const timelineRowStatusSchema: z$1.ZodEnum<{\n    error: \"error\";\n    pending: \"pending\";\n    completed: \"completed\";\n    interrupted: \"interrupted\";\n}>;\ntype TimelineRowStatus = z$1.infer<typeof timelineRowStatusSchema>;\ndeclare const timelineRowBaseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype TimelineRowBase = z$1.infer<typeof timelineRowBaseSchema>;\ndeclare const timelineConversationRowSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"conversation\">;\n    text: z$1.ZodString;\n    attachments: z$1.ZodNullable<z$1.ZodObject<{\n        webImages: z$1.ZodNumber;\n        localImages: z$1.ZodNumber;\n        localFiles: z$1.ZodNumber;\n        imageUrls: z$1.ZodArray<z$1.ZodString>;\n        localImagePaths: z$1.ZodArray<z$1.ZodString>;\n        localFilePaths: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    role: z$1.ZodLiteral<\"user\">;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        agent: \"agent\";\n        system: \"system\";\n    }>;\n    senderThreadId: z$1.ZodNullable<z$1.ZodString>;\n    systemMessageKind: z$1.ZodEnum<{\n        \"ownership-assigned\": \"ownership-assigned\";\n        \"ownership-removed\": \"ownership-removed\";\n        \"child-needs-attention\": \"child-needs-attention\";\n        \"child-completed\": \"child-completed\";\n        \"child-failed\": \"child-failed\";\n        \"child-interrupted\": \"child-interrupted\";\n        \"child-outcome-batch\": \"child-outcome-batch\";\n        unlabeled: \"unlabeled\";\n    }>;\n    systemMessageSubject: z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n        threadName: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-batch\">;\n        count: z$1.ZodNumber;\n    }, z$1.core.$strip>], \"kind\">>;\n    turnRequest: z$1.ZodObject<{\n        isGrouped: z$1.ZodBoolean;\n        kind: z$1.ZodEnum<{\n            message: \"message\";\n            steer: \"steer\";\n        }>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            accepted: \"accepted\";\n            rejected: \"rejected\";\n        }>;\n    }, z$1.core.$strip>;\n    mentions: z$1.ZodArray<z$1.ZodObject<{\n        start: z$1.ZodNumber;\n        end: z$1.ZodNumber;\n        resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"thread\">;\n            threadId: z$1.ZodString;\n            projectId: z$1.ZodOptional<z$1.ZodString>;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"project\">;\n            projectId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"section\">;\n            sectionId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"path\">;\n            source: z$1.ZodEnum<{\n                workspace: \"workspace\";\n                \"thread-storage\": \"thread-storage\";\n            }>;\n            entryKind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                user: \"user\";\n                project: \"project\";\n                builtin: \"builtin\";\n            }>;\n            label: z$1.ZodString;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin\">;\n            pluginId: z$1.ZodString;\n            icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n            itemId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"conversation\">;\n    text: z$1.ZodString;\n    attachments: z$1.ZodNullable<z$1.ZodObject<{\n        webImages: z$1.ZodNumber;\n        localImages: z$1.ZodNumber;\n        localFiles: z$1.ZodNumber;\n        imageUrls: z$1.ZodArray<z$1.ZodString>;\n        localImagePaths: z$1.ZodArray<z$1.ZodString>;\n        localFilePaths: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    role: z$1.ZodLiteral<\"assistant\">;\n    turnRequest: z$1.ZodNull;\n}, z$1.core.$strip>], \"role\">;\ntype TimelineConversationRow = z$1.infer<typeof timelineConversationRowSchema>;\ndeclare const timelineSystemRowSchema: z$1.ZodUnion<readonly [z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodNullable<z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>>;\n    systemKind: z$1.ZodEnum<{\n        error: \"error\";\n        debug: \"debug\";\n        reconnect: \"reconnect\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodNullable<z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>>;\n    systemKind: z$1.ZodLiteral<\"operation\">;\n    operationKind: z$1.ZodEnum<{\n        generic: \"generic\";\n        compaction: \"compaction\";\n        \"context-clear\": \"context-clear\";\n        \"thread-provisioning\": \"thread-provisioning\";\n        \"thread-interrupted\": \"thread-interrupted\";\n        \"provider-unhandled\": \"provider-unhandled\";\n        warning: \"warning\";\n        deprecation: \"deprecation\";\n    }>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    systemKind: z$1.ZodLiteral<\"operation\">;\n    operationKind: z$1.ZodLiteral<\"parent-change\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    parentChange: z$1.ZodObject<{\n        action: z$1.ZodEnum<{\n            assign: \"assign\";\n            release: \"release\";\n            transfer: \"transfer\";\n        }>;\n        previousParentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        previousParentThreadTitle: z$1.ZodNullable<z$1.ZodString>;\n        nextParentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        nextParentThreadTitle: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>], \"operationKind\">]>;\ntype TimelineSystemRow = z$1.infer<typeof timelineSystemRowSchema>;\ninterface TimelineWorkRowBase extends TimelineRowBase {\n    kind: \"work\";\n    status: TimelineRowStatus;\n}\ndeclare const timelineCommandWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"command\">;\n    callId: z$1.ZodString;\n    command: z$1.ZodString;\n    cwd: z$1.ZodNullable<z$1.ZodString>;\n    source: z$1.ZodNullable<z$1.ZodString>;\n    output: z$1.ZodString;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n    activityIntents: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"read\">;\n        command: z$1.ZodString;\n        name: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"list_files\">;\n        command: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"search\">;\n        command: z$1.ZodString;\n        query: z$1.ZodNullable<z$1.ZodString>;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unknown\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype TimelineCommandWorkRow = z$1.infer<typeof timelineCommandWorkRowSchema>;\ndeclare const timelineToolWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"tool\">;\n    callId: z$1.ZodString;\n    toolName: z$1.ZodString;\n    toolArgs: z$1.ZodNullable<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>>;\n    statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n        pending: z$1.ZodString;\n        completed: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    output: z$1.ZodString;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n    activityIntents: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"read\">;\n        command: z$1.ZodString;\n        name: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"list_files\">;\n        command: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"search\">;\n        command: z$1.ZodString;\n        query: z$1.ZodNullable<z$1.ZodString>;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unknown\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype TimelineToolWorkRow = z$1.infer<typeof timelineToolWorkRowSchema>;\ndeclare const timelineFileChangeWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"file-change\">;\n    callId: z$1.ZodString;\n    change: z$1.ZodObject<{\n        path: z$1.ZodString;\n        kind: z$1.ZodNullable<z$1.ZodString>;\n        movePath: z$1.ZodNullable<z$1.ZodString>;\n        diff: z$1.ZodNullable<z$1.ZodString>;\n        diffStats: z$1.ZodObject<{\n            added: z$1.ZodNumber;\n            removed: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>;\n    stdout: z$1.ZodNullable<z$1.ZodString>;\n    stderr: z$1.ZodNullable<z$1.ZodString>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n}, z$1.core.$strip>;\ntype TimelineFileChangeWorkRow = z$1.infer<typeof timelineFileChangeWorkRowSchema>;\ndeclare const timelineWebSearchWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"web-search\">;\n    callId: z$1.ZodString;\n    queries: z$1.ZodArray<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWebSearchWorkRow = z$1.infer<typeof timelineWebSearchWorkRowSchema>;\ndeclare const timelineWebFetchWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"web-fetch\">;\n    callId: z$1.ZodString;\n    url: z$1.ZodString;\n    prompt: z$1.ZodNullable<z$1.ZodString>;\n    pattern: z$1.ZodNullable<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWebFetchWorkRow = z$1.infer<typeof timelineWebFetchWorkRowSchema>;\ndeclare const timelineImageViewWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"image-view\">;\n    callId: z$1.ZodString;\n    path: z$1.ZodString;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineImageViewWorkRow = z$1.infer<typeof timelineImageViewWorkRowSchema>;\ndeclare const timelineApprovalWorkRowSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"approval\">;\n    interactionId: z$1.ZodString;\n    target: z$1.ZodObject<{\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    approvalKind: z$1.ZodLiteral<\"file-edit\">;\n    lifecycle: z$1.ZodEnum<{\n        denied: \"denied\";\n        waiting: \"waiting\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"approval\">;\n    interactionId: z$1.ZodString;\n    target: z$1.ZodObject<{\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    approvalKind: z$1.ZodLiteral<\"permission-grant\">;\n    lifecycle: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        denied: \"denied\";\n        resolving: \"resolving\";\n        granted: \"granted\";\n    }>;\n    grantScope: z$1.ZodNullable<z$1.ZodEnum<{\n        turn: \"turn\";\n        session: \"session\";\n    }>>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>], \"approvalKind\">;\ntype TimelineApprovalWorkRow = z$1.infer<typeof timelineApprovalWorkRowSchema>;\ndeclare const timelineQuestionWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"question\">;\n    interactionId: z$1.ZodString;\n    lifecycle: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        answered: \"answered\";\n    }>;\n    questions: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        prompt: z$1.ZodString;\n        shortLabel: z$1.ZodOptional<z$1.ZodString>;\n        multiSelect: z$1.ZodBoolean;\n        options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n            value: z$1.ZodString;\n            label: z$1.ZodString;\n            description: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        allowFreeText: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    answers: z$1.ZodNullable<z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n        selected: z$1.ZodArray<z$1.ZodString>;\n        freeText: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype TimelineQuestionWorkRow = z$1.infer<typeof timelineQuestionWorkRowSchema>;\ninterface TimelineDelegationWorkRow extends TimelineWorkRowBase {\n    workKind: \"delegation\";\n    callId: string;\n    toolName: string;\n    subagentType: string | null;\n    description: string | null;\n    output: string;\n    completedAt: number | null;\n    childRows: TimelineRow[];\n}\n/**\n * A provider background task — a dynamic workflow (Claude Code Workflow tool)\n * or a backgrounded shell command (Bash run_in_background), discriminated by\n * `taskType`. The row outlives its spawning turn: progress and terminal state\n * arrive via thread-scoped events folded into this single row. `workflow` is\n * the merged phase/agent tree, present only for workflows; null for shell\n * commands and for workflows the provider reported no progress records for\n * (degraded rendering falls back to description + summary). `model` is the\n * spawning delegation's requested model for background agents; null for\n * commands, workflows, legacy events, and providers that do not expose it.\n */\ndeclare const timelineWorkflowWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"workflow\">;\n    itemId: z$1.ZodString;\n    taskType: z$1.ZodString;\n    workflowName: z$1.ZodNullable<z$1.ZodString>;\n    description: z$1.ZodString;\n    model: z$1.ZodNullable<z$1.ZodString>;\n    taskStatus: z$1.ZodEnum<{\n        pending: \"pending\";\n        completed: \"completed\";\n        running: \"running\";\n        paused: \"paused\";\n        failed: \"failed\";\n        killed: \"killed\";\n        stopped: \"stopped\";\n    }>;\n    workflow: z$1.ZodNullable<z$1.ZodObject<{\n        phases: z$1.ZodArray<z$1.ZodObject<{\n            index: z$1.ZodNumber;\n            title: z$1.ZodString;\n            kind: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            index: z$1.ZodNumber;\n            label: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                failed: \"failed\";\n                queued: \"queued\";\n                done: \"done\";\n                skipped: \"skipped\";\n            }>;\n            model: z$1.ZodString;\n            attempt: z$1.ZodNumber;\n            cached: z$1.ZodBoolean;\n            lastProgressAt: z$1.ZodNumber;\n            phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n            phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n            agentType: z$1.ZodOptional<z$1.ZodString>;\n            isolation: z$1.ZodOptional<z$1.ZodString>;\n            queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastToolName: z$1.ZodOptional<z$1.ZodString>;\n            lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n            promptPreview: z$1.ZodOptional<z$1.ZodString>;\n            resultPreview: z$1.ZodOptional<z$1.ZodString>;\n            error: z$1.ZodOptional<z$1.ZodString>;\n            tokens: z$1.ZodOptional<z$1.ZodNumber>;\n            toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n            durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>;\n    usage: z$1.ZodNullable<z$1.ZodObject<{\n        totalTokens: z$1.ZodNumber;\n        toolUses: z$1.ZodNumber;\n        durationMs: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    summary: z$1.ZodNullable<z$1.ZodString>;\n    error: z$1.ZodNullable<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWorkflowWorkRow = z$1.infer<typeof timelineWorkflowWorkRowSchema>;\ntype TimelineWorkRow = TimelineCommandWorkRow | TimelineToolWorkRow | TimelineFileChangeWorkRow | TimelineWebSearchWorkRow | TimelineWebFetchWorkRow | TimelineImageViewWorkRow | TimelineApprovalWorkRow | TimelineQuestionWorkRow | TimelineDelegationWorkRow | TimelineWorkflowWorkRow;\ninterface TimelineTurnRow extends TimelineRowBase {\n    kind: \"turn\";\n    turnId: string;\n    status: TimelineRowStatus;\n    summaryCount: number;\n    completedAt: number | null;\n    children: TimelineRow[] | null;\n}\ntype TimelineSourceRow = TimelineConversationRow | TimelineWorkRow | TimelineSystemRow;\ntype TimelineRow = TimelineSourceRow | TimelineTurnRow;\n\ndeclare const createExecutionInputSourcesSchema: z$1.ZodObject<{\n    providerId: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    model: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n}, z$1.core.$strict>;\ntype CreateExecutionInputSources = z$1.infer<typeof createExecutionInputSourcesSchema>;\ndeclare const createThreadRequestSchema: z$1.ZodObject<{\n    projectId: z$1.ZodString;\n    providerId: z$1.ZodOptional<z$1.ZodString>;\n    origin: z$1.ZodEnum<{\n        plugin: \"plugin\";\n        app: \"app\";\n        cli: \"cli\";\n        sdk: \"sdk\";\n    }>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n    title: z$1.ZodOptional<z$1.ZodString>;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        providerId: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    environment: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reuse\">;\n        environmentId: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host\">;\n        hostId: z$1.ZodOptional<z$1.ZodString>;\n        workspace: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"unmanaged\">;\n            path: z$1.ZodNullable<z$1.ZodString>;\n            branch: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"existing\">;\n                name: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"new\">;\n                baseBranch: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"managed-worktree\">;\n            baseBranch: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"named\">;\n                name: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"default\">;\n            }, z$1.core.$strip>], \"kind\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"personal\">;\n        }, z$1.core.$strip>], \"type\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project-default\">;\n    }, z$1.core.$strip>], \"type\">;\n    parentThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sectionId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    sourceThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sourceSeqEnd: z$1.ZodOptional<z$1.ZodNumber>;\n    startedOnBehalfOf: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodObject<{\n        initiator: z$1.ZodEnum<{\n            agent: \"agent\";\n            system: \"system\";\n        }>;\n        senderThreadId: z$1.ZodString;\n    }, z$1.core.$strip>>>;\n    originKind: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>>;\n}, z$1.core.$strip>;\ntype CreateThreadRequest = z$1.infer<typeof createThreadRequestSchema>;\ndeclare const forkThreadRequestSchema: z$1.ZodObject<{\n    sourceThreadId: z$1.ZodString;\n    sourceSeqEnd: z$1.ZodOptional<z$1.ZodNumber>;\n    input: z$1.ZodOptional<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>>;\n    agentContextSeed: z$1.ZodOptional<z$1.ZodArray<z$1.ZodIntersection<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">, z$1.ZodObject<{\n        visibility: z$1.ZodLiteral<\"agent-only\">;\n    }, z$1.core.$strip>>>>;\n    title: z$1.ZodOptional<z$1.ZodString>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    visibility: z$1.ZodDefault<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n    workspace: z$1.ZodDefault<z$1.ZodEnum<{\n        reuse: \"reuse\";\n        isolated: \"isolated\";\n    }>>;\n    origin: z$1.ZodDefault<z$1.ZodEnum<{\n        plugin: \"plugin\";\n        app: \"app\";\n        cli: \"cli\";\n        sdk: \"sdk\";\n    }>>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ForkThreadRequest = z$1.infer<typeof forkThreadRequestSchema>;\ndeclare const sendMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    mode: z$1.ZodEnum<{\n        steer: \"steer\";\n        start: \"start\";\n        auto: \"auto\";\n        \"queue-if-active\": \"queue-if-active\";\n        \"steer-if-active\": \"steer-if-active\";\n    }>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SendMessageRequest = z$1.infer<typeof sendMessageRequestSchema>;\ndeclare const providerRateLimitRecoveryStatusSchema: z$1.ZodObject<{\n    reason: z$1.ZodEnum<{\n        eligible: \"eligible\";\n        \"thread-not-failed\": \"thread-not-failed\";\n        \"no-failed-turn\": \"no-failed-turn\";\n        \"input-not-accepted\": \"input-not-accepted\";\n        \"no-rate-limit-state\": \"no-rate-limit-state\";\n        \"no-terminal-rate-limit-error\": \"no-terminal-rate-limit-error\";\n        \"provider-will-retry\": \"provider-will-retry\";\n        \"manual-only\": \"manual-only\";\n        \"output-or-side-effect-observed\": \"output-or-side-effect-observed\";\n        superseded: \"superseded\";\n        \"execution-unavailable\": \"execution-unavailable\";\n    }>;\n    scopeKey: z$1.ZodString;\n    hostId: z$1.ZodString;\n    rateLimits: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            warning: \"warning\";\n            blocked: \"blocked\";\n            allowed: \"allowed\";\n        }>;\n        kind: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"subscription-window\": \"subscription-window\";\n            credits: \"credits\";\n            \"spend-control\": \"spend-control\";\n        }>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            providerKey: z$1.ZodNullable<z$1.ZodString>;\n            label: z$1.ZodNullable<z$1.ZodString>;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n                allowed: \"allowed\";\n            }>;\n            resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        reachedReason: z$1.ZodNullable<z$1.ZodString>;\n        overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            rejected: \"rejected\";\n            warning: \"warning\";\n            unavailable: \"unavailable\";\n            allowed: \"allowed\";\n        }>>;\n        overageReason: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    candidate: z$1.ZodNullable<z$1.ZodObject<{\n        failedRequestId: z$1.ZodString;\n        turnId: z$1.ZodString;\n        automatic: z$1.ZodBoolean;\n        resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        rateLimits: z$1.ZodObject<{\n            providerId: z$1.ZodString;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n                allowed: \"allowed\";\n            }>;\n            kind: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                \"subscription-window\": \"subscription-window\";\n                credits: \"credits\";\n                \"spend-control\": \"spend-control\";\n            }>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                providerKey: z$1.ZodNullable<z$1.ZodString>;\n                label: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    warning: \"warning\";\n                    blocked: \"blocked\";\n                    allowed: \"allowed\";\n                }>;\n                resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            reachedReason: z$1.ZodNullable<z$1.ZodString>;\n            overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                rejected: \"rejected\";\n                warning: \"warning\";\n                unavailable: \"unavailable\";\n                allowed: \"allowed\";\n            }>>;\n            overageReason: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProviderRateLimitRecoveryStatus = z$1.infer<typeof providerRateLimitRecoveryStatusSchema>;\ndeclare const continueAfterProviderRateLimitRequestSchema: z$1.ZodObject<{\n    failedRequestId: z$1.ZodString;\n    mode: z$1.ZodOptional<z$1.ZodEnum<{\n        automatic: \"automatic\";\n        manual: \"manual\";\n    }>>;\n}, z$1.core.$strict>;\ntype ContinueAfterProviderRateLimitRequest = z$1.infer<typeof continueAfterProviderRateLimitRequestSchema>;\ndeclare const continueAfterProviderRateLimitResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    requestId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ContinueAfterProviderRateLimitResponse = z$1.infer<typeof continueAfterProviderRateLimitResponseSchema>;\ndeclare const editMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    operationId: z$1.ZodString;\n    expectedRequestSequence: z$1.ZodOptional<z$1.ZodNumber>;\n}, z$1.core.$strict>;\ntype EditMessageRequest = z$1.infer<typeof editMessageRequestSchema>;\ndeclare const editMessageResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    operationId: z$1.ZodString;\n    requestSequence: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype EditMessageResponse = z$1.infer<typeof editMessageResponseSchema>;\ndeclare const createQueuedMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype CreateQueuedMessageRequest = z$1.infer<typeof createQueuedMessageRequestSchema>;\ndeclare const updateQueuedMessageRequestSchema: z$1.ZodObject<{\n    expectedUpdatedAt: z$1.ZodNumber;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype UpdateQueuedMessageRequest = z$1.infer<typeof updateQueuedMessageRequestSchema>;\ndeclare const sendQueuedMessageRequestSchema: z$1.ZodObject<{\n    mode: z$1.ZodEnum<{\n        steer: \"steer\";\n        auto: \"auto\";\n    }>;\n}, z$1.core.$strip>;\ntype SendQueuedMessageRequest = z$1.infer<typeof sendQueuedMessageRequestSchema>;\ndeclare const reorderQueuedMessageRequestSchema: z$1.ZodObject<{\n    previousQueuedMessageId: z$1.ZodNullable<z$1.ZodString>;\n    nextQueuedMessageId: z$1.ZodNullable<z$1.ZodString>;\n    groupBoundaryQueuedMessageId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderQueuedMessageRequest = z$1.infer<typeof reorderQueuedMessageRequestSchema>;\ndeclare const setQueuedMessageGroupBoundaryRequestSchema: z$1.ZodObject<{\n    expectedGroupedPrefixQueuedMessageIds: z$1.ZodArray<z$1.ZodString>;\n    groupBoundaryQueuedMessageId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SetQueuedMessageGroupBoundaryRequest = z$1.infer<typeof setQueuedMessageGroupBoundaryRequestSchema>;\ndeclare const sendQueuedMessageResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    queuedMessage: z$1.ZodObject<{\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        user: \"user\";\n                        project: \"project\";\n                        builtin: \"builtin\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        model: z$1.ZodString;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        groupWithNext: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype SendQueuedMessageResponse = z$1.infer<typeof sendQueuedMessageResponseSchema>;\ndeclare const threadListResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activity: z$1.ZodObject<{\n        activeWorkflowCount: z$1.ZodNumber;\n        activeBackgroundAgentCount: z$1.ZodNumber;\n        activeBackgroundCommandCount: z$1.ZodNumber;\n        activePlanModeCount: z$1.ZodNumber;\n        activeGoalCount: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n    hasPendingInteraction: z$1.ZodBoolean;\n    environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n    environmentName: z$1.ZodNullable<z$1.ZodString>;\n    environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n    environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n        \"managed-worktree\": \"managed-worktree\";\n        \"unmanaged-worktree\": \"unmanaged-worktree\";\n        other: \"other\";\n    }>;\n}, z$1.core.$strip>>;\ntype ThreadListResponse = z$1.infer<typeof threadListResponseSchema>;\ndeclare const resolveThreadMentionsRequestSchema: z$1.ZodObject<{\n    threadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype ResolveThreadMentionsRequest = z$1.infer<typeof resolveThreadMentionsRequestSchema>;\ndeclare const resolveThreadMentionsResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    threadId: z$1.ZodString;\n    projectId: z$1.ZodString;\n    label: z$1.ZodString;\n}, z$1.core.$strict>>;\ntype ResolveThreadMentionsResponse = z$1.infer<typeof resolveThreadMentionsResponseSchema>;\ndeclare const threadSearchResponseSchema: z$1.ZodObject<{\n    active: z$1.ZodObject<{\n        total: z$1.ZodNumber;\n        results: z$1.ZodArray<z$1.ZodObject<{\n            thread: z$1.ZodObject<{\n                id: z$1.ZodString;\n                projectId: z$1.ZodString;\n                environmentId: z$1.ZodNullable<z$1.ZodString>;\n                providerId: z$1.ZodString;\n                title: z$1.ZodNullable<z$1.ZodString>;\n                titleFallback: z$1.ZodNullable<z$1.ZodString>;\n                sectionId: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    error: \"error\";\n                    stopping: \"stopping\";\n                    idle: \"idle\";\n                    starting: \"starting\";\n                    active: \"active\";\n                }>;\n                parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n                sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n                originKind: z$1.ZodNullable<z$1.ZodEnum<{\n                    fork: \"fork\";\n                }>>;\n                originPluginId: z$1.ZodNullable<z$1.ZodString>;\n                visibility: z$1.ZodEnum<{\n                    visible: \"visible\";\n                    hidden: \"hidden\";\n                }>;\n                archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n                latestAttentionAt: z$1.ZodNumber;\n                createdAt: z$1.ZodNumber;\n                updatedAt: z$1.ZodNumber;\n                runtime: z$1.ZodObject<{\n                    displayStatus: z$1.ZodEnum<{\n                        error: \"error\";\n                        provisioning: \"provisioning\";\n                        stopping: \"stopping\";\n                        idle: \"idle\";\n                        starting: \"starting\";\n                        active: \"active\";\n                        \"host-reconnecting\": \"host-reconnecting\";\n                        \"waiting-for-host\": \"waiting-for-host\";\n                    }>;\n                    hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>;\n                activity: z$1.ZodObject<{\n                    activeWorkflowCount: z$1.ZodNumber;\n                    activeBackgroundAgentCount: z$1.ZodNumber;\n                    activeBackgroundCommandCount: z$1.ZodNumber;\n                    activePlanModeCount: z$1.ZodNumber;\n                    activeGoalCount: z$1.ZodNumber;\n                }, z$1.core.$strip>;\n                pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n                hasPendingInteraction: z$1.ZodBoolean;\n                environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n                environmentName: z$1.ZodNullable<z$1.ZodString>;\n                environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n                environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n                    \"managed-worktree\": \"managed-worktree\";\n                    \"unmanaged-worktree\": \"unmanaged-worktree\";\n                    other: \"other\";\n                }>;\n            }, z$1.core.$strip>;\n            matches: z$1.ZodArray<z$1.ZodObject<{\n                sourceKind: z$1.ZodEnum<{\n                    title: \"title\";\n                    title_fallback: \"title_fallback\";\n                    user_message: \"user_message\";\n                    assistant_message: \"assistant_message\";\n                    system_message: \"system_message\";\n                }>;\n                text: z$1.ZodString;\n                highlightRanges: z$1.ZodArray<z$1.ZodObject<{\n                    start: z$1.ZodNumber;\n                    end: z$1.ZodNumber;\n                }, z$1.core.$strict>>;\n                sourceSeq: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n    archived: z$1.ZodObject<{\n        total: z$1.ZodNumber;\n        results: z$1.ZodArray<z$1.ZodObject<{\n            thread: z$1.ZodObject<{\n                id: z$1.ZodString;\n                projectId: z$1.ZodString;\n                environmentId: z$1.ZodNullable<z$1.ZodString>;\n                providerId: z$1.ZodString;\n                title: z$1.ZodNullable<z$1.ZodString>;\n                titleFallback: z$1.ZodNullable<z$1.ZodString>;\n                sectionId: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    error: \"error\";\n                    stopping: \"stopping\";\n                    idle: \"idle\";\n                    starting: \"starting\";\n                    active: \"active\";\n                }>;\n                parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n                sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n                originKind: z$1.ZodNullable<z$1.ZodEnum<{\n                    fork: \"fork\";\n                }>>;\n                originPluginId: z$1.ZodNullable<z$1.ZodString>;\n                visibility: z$1.ZodEnum<{\n                    visible: \"visible\";\n                    hidden: \"hidden\";\n                }>;\n                archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n                latestAttentionAt: z$1.ZodNumber;\n                createdAt: z$1.ZodNumber;\n                updatedAt: z$1.ZodNumber;\n                runtime: z$1.ZodObject<{\n                    displayStatus: z$1.ZodEnum<{\n                        error: \"error\";\n                        provisioning: \"provisioning\";\n                        stopping: \"stopping\";\n                        idle: \"idle\";\n                        starting: \"starting\";\n                        active: \"active\";\n                        \"host-reconnecting\": \"host-reconnecting\";\n                        \"waiting-for-host\": \"waiting-for-host\";\n                    }>;\n                    hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>;\n                activity: z$1.ZodObject<{\n                    activeWorkflowCount: z$1.ZodNumber;\n                    activeBackgroundAgentCount: z$1.ZodNumber;\n                    activeBackgroundCommandCount: z$1.ZodNumber;\n                    activePlanModeCount: z$1.ZodNumber;\n                    activeGoalCount: z$1.ZodNumber;\n                }, z$1.core.$strip>;\n                pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n                hasPendingInteraction: z$1.ZodBoolean;\n                environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n                environmentName: z$1.ZodNullable<z$1.ZodString>;\n                environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n                environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n                    \"managed-worktree\": \"managed-worktree\";\n                    \"unmanaged-worktree\": \"unmanaged-worktree\";\n                    other: \"other\";\n                }>;\n            }, z$1.core.$strip>;\n            matches: z$1.ZodArray<z$1.ZodObject<{\n                sourceKind: z$1.ZodEnum<{\n                    title: \"title\";\n                    title_fallback: \"title_fallback\";\n                    user_message: \"user_message\";\n                    assistant_message: \"assistant_message\";\n                    system_message: \"system_message\";\n                }>;\n                text: z$1.ZodString;\n                highlightRanges: z$1.ZodArray<z$1.ZodObject<{\n                    start: z$1.ZodNumber;\n                    end: z$1.ZodNumber;\n                }, z$1.core.$strict>>;\n                sourceSeq: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>;\ntype ThreadSearchResponse = z$1.infer<typeof threadSearchResponseSchema>;\ndeclare const threadResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activeBackgroundAgentCount: z$1.ZodNumber;\n    canSpawnChild: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype ThreadResponse = z$1.infer<typeof threadResponseSchema>;\ndeclare const threadGetQuerySchema: z$1.ZodObject<{\n    include: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadGetQuery = z$1.infer<typeof threadGetQuerySchema>;\ndeclare const threadWithIncludesResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activeBackgroundAgentCount: z$1.ZodNumber;\n    canSpawnChild: z$1.ZodBoolean;\n    environment: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        projectId: z$1.ZodString;\n        hostId: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n        managed: z$1.ZodBoolean;\n        isGitRepo: z$1.ZodBoolean;\n        isWorktree: z$1.ZodBoolean;\n        workspaceProvisionType: z$1.ZodEnum<{\n            personal: \"personal\";\n            \"managed-worktree\": \"managed-worktree\";\n            unmanaged: \"unmanaged\";\n        }>;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n        baseBranch: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        mergeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            ready: \"ready\";\n            retiring: \"retiring\";\n            destroying: \"destroying\";\n            destroyed: \"destroyed\";\n        }>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>>;\n    host: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodString;\n        type: z$1.ZodEnum<{\n            persistent: \"persistent\";\n        }>;\n        status: z$1.ZodEnum<{\n            disconnected: \"disconnected\";\n            connected: \"connected\";\n        }>;\n        maxPermissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n        lastSeenAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastRejectedProtocolVersion: z$1.ZodNullable<z$1.ZodNumber>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>;\ntype ThreadWithIncludesResponse = z$1.infer<typeof threadWithIncludesResponseSchema>;\ndeclare const threadPendingInteractionsResponseSchema: z$1.ZodArray<z$1.ZodUnion<readonly [z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    origin: z$1.ZodOptional<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"provider\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    payload: z$1.ZodUnion<readonly [z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"approval\">;\n        subject: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            itemId: z$1.ZodString;\n            command: z$1.ZodString;\n            cwd: z$1.ZodNullable<z$1.ZodString>;\n            actions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"read\">;\n                command: z$1.ZodString;\n                name: z$1.ZodString;\n                path: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"listFiles\">;\n                command: z$1.ZodString;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"search\">;\n                command: z$1.ZodString;\n                query: z$1.ZodNullable<z$1.ZodString>;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"unknown\">;\n                command: z$1.ZodString;\n            }, z$1.core.$strip>], \"type\">>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"file_change\">;\n            itemId: z$1.ZodString;\n            writeScope: z$1.ZodNullable<z$1.ZodString>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"permission_grant\">;\n            itemId: z$1.ZodString;\n            toolName: z$1.ZodNullable<z$1.ZodString>;\n            permissions: z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            itemId: z$1.ZodString;\n            plan: z$1.ZodString;\n            planFilePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"kind\">;\n        reason: z$1.ZodNullable<z$1.ZodString>;\n        availableDecisions: z$1.ZodArray<z$1.ZodEnum<{\n            allow_once: \"allow_once\";\n            allow_for_session: \"allow_for_session\";\n            deny: \"deny\";\n        }>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>;\n    resolution: z$1.ZodNullable<z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    origin: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        pluginId: z$1.ZodString;\n        rendererId: z$1.ZodString;\n    }, z$1.core.$strip>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        title: z$1.ZodString;\n        data: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strip>;\n    resolution: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin_submitted\">;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>]>>;\ntype ThreadPendingInteractionsResponse = z$1.infer<typeof threadPendingInteractionsResponseSchema>;\ndeclare const threadQueuedMessageListResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodString;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    groupWithNext: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>>;\ntype ThreadQueuedMessageListResponse = z$1.infer<typeof threadQueuedMessageListResponseSchema>;\ndeclare const threadChildSummaryResponseSchema: z$1.ZodObject<{\n    nonDeletedChildCount: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadChildSummaryResponse = z$1.infer<typeof threadChildSummaryResponseSchema>;\ndeclare const deleteThreadRequestSchema: z$1.ZodObject<{\n    childThreadsConfirmed: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype DeleteThreadRequest = z$1.infer<typeof deleteThreadRequestSchema>;\ndeclare const updateThreadRequestSchema: z$1.ZodObject<{\n    title: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    sectionId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    parentThreadId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>>;\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n}, z$1.core.$strip>;\ntype UpdateThreadRequest = z$1.infer<typeof updateThreadRequestSchema>;\ndeclare const reorderPinnedThreadRequestSchema: z$1.ZodObject<{\n    previousThreadId: z$1.ZodNullable<z$1.ZodString>;\n    nextThreadId: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderPinnedThreadRequest = z$1.infer<typeof reorderPinnedThreadRequestSchema>;\n/**\n * Requested placement for a thread opened in the app's split layout. Edge\n * placements add panes through the eighth pane; at the cap they replace the\n * focused pane. `replace` always replaces the focused pane.\n */\ndeclare const threadOpenSplitSchema: z$1.ZodEnum<{\n    right: \"right\";\n    down: \"down\";\n    left: \"left\";\n    top: \"top\";\n    replace: \"replace\";\n}>;\ntype ThreadOpenSplit = z$1.infer<typeof threadOpenSplitSchema>;\n/** Optional secondary-panel file to open with a thread. */\ndeclare const threadOpenFileSchema: z$1.ZodObject<{\n    source: z$1.ZodEnum<{\n        workspace: \"workspace\";\n        \"thread-storage\": \"thread-storage\";\n    }>;\n    path: z$1.ZodString;\n    lineNumber: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strict>;\ntype ThreadOpenFile = z$1.infer<typeof threadOpenFileSchema>;\n/** Response for POST /threads/:id/open: how many connected clients received it. */\ndeclare const threadOpenResponseSchema: z$1.ZodObject<{\n    delivered: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadOpenResponse = z$1.infer<typeof threadOpenResponseSchema>;\n/** Presentation action for one thread pane in each connected app window. */\ndeclare const threadPaneActionSchema: z$1.ZodEnum<{\n    maximize: \"maximize\";\n    restore: \"restore\";\n    toggle: \"toggle\";\n    spotlight: \"spotlight\";\n    \"clear-spotlight\": \"clear-spotlight\";\n}>;\ntype ThreadPaneAction = z$1.infer<typeof threadPaneActionSchema>;\n/** Number of connected app clients that received the pane action. */\ndeclare const threadPaneActionResponseSchema: z$1.ZodObject<{\n    delivered: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadPaneActionResponse = z$1.infer<typeof threadPaneActionResponseSchema>;\ndeclare const threadArchiveAllResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    archivedThreadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadArchiveAllResponse = z$1.infer<typeof threadArchiveAllResponseSchema>;\ndeclare const threadListQuerySchema: z$1.ZodObject<{\n    projectId: z$1.ZodOptional<z$1.ZodString>;\n    parentThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sourceThreadId: z$1.ZodOptional<z$1.ZodString>;\n    archived: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    sectionId: z$1.ZodOptional<z$1.ZodString>;\n    unsectioned: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    hasParent: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    originKind: z$1.ZodOptional<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n    includeHidden: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    offset: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadListQuery = z$1.infer<typeof threadListQuerySchema>;\ndeclare const threadSearchQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodString;\n    limitPerGroup: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadSearchQuery = z$1.infer<typeof threadSearchQuerySchema>;\ndeclare const threadTimelineQuerySchema: z$1.ZodObject<{\n    includeNestedRows: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    segmentLimit: z$1.ZodOptional<z$1.ZodString>;\n    beforeAnchorSeq: z$1.ZodOptional<z$1.ZodString>;\n    beforeAnchorId: z$1.ZodOptional<z$1.ZodString>;\n    summaryOnly: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    afterSequence: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadTimelineQuery = z$1.infer<typeof threadTimelineQuerySchema>;\ndeclare const timelineTurnSummaryDetailsQuerySchema: z$1.ZodObject<{\n    turnId: z$1.ZodString;\n    sourceSeqStart: z$1.ZodString;\n    sourceSeqEnd: z$1.ZodString;\n}, z$1.core.$strip>;\ntype TimelineTurnSummaryDetailsQuery = z$1.infer<typeof timelineTurnSummaryDetailsQuerySchema>;\ndeclare const threadStorageFilesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadStorageFilesQuery = z$1.infer<typeof threadStorageFilesQuerySchema>;\ndeclare const threadStoragePathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n}, z$1.core.$strip>;\ntype ThreadStoragePathsQuery = z$1.infer<typeof threadStoragePathsQuerySchema>;\ndeclare const timelineTurnSummaryDetailsResponseSchema: z$1.ZodObject<{\n    rows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n}, z$1.core.$strip>;\ntype TimelineTurnSummaryDetailsResponse = z$1.infer<typeof timelineTurnSummaryDetailsResponseSchema>;\ndeclare const threadTimelineResponseSchema: z$1.ZodObject<{\n    rows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n    activePromptMode: z$1.ZodNullable<z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"plan\">;\n        providerId: z$1.ZodString;\n        prompt: z$1.ZodString;\n    }, z$1.core.$strict>>;\n    activeThinking: z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        startedAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    activeWorkflows: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodString;\n        turnId: z$1.ZodNullable<z$1.ZodString>;\n        sourceSeqStart: z$1.ZodNumber;\n        sourceSeqEnd: z$1.ZodNumber;\n        startedAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        kind: z$1.ZodLiteral<\"work\">;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            pending: \"pending\";\n            completed: \"completed\";\n            interrupted: \"interrupted\";\n        }>;\n        workKind: z$1.ZodLiteral<\"workflow\">;\n        itemId: z$1.ZodString;\n        taskType: z$1.ZodString;\n        workflowName: z$1.ZodNullable<z$1.ZodString>;\n        description: z$1.ZodString;\n        model: z$1.ZodNullable<z$1.ZodString>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            running: \"running\";\n            paused: \"paused\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        workflow: z$1.ZodNullable<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodNullable<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n        error: z$1.ZodNullable<z$1.ZodString>;\n        completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    activeBackgroundCommands: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodString;\n        turnId: z$1.ZodNullable<z$1.ZodString>;\n        sourceSeqStart: z$1.ZodNumber;\n        sourceSeqEnd: z$1.ZodNumber;\n        startedAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        kind: z$1.ZodLiteral<\"work\">;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            pending: \"pending\";\n            completed: \"completed\";\n            interrupted: \"interrupted\";\n        }>;\n        workKind: z$1.ZodLiteral<\"workflow\">;\n        itemId: z$1.ZodString;\n        taskType: z$1.ZodString;\n        workflowName: z$1.ZodNullable<z$1.ZodString>;\n        description: z$1.ZodString;\n        model: z$1.ZodNullable<z$1.ZodString>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            running: \"running\";\n            paused: \"paused\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        workflow: z$1.ZodNullable<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodNullable<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n        error: z$1.ZodNullable<z$1.ZodString>;\n        completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    pendingTodos: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        items: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            text: z$1.ZodString;\n            status: z$1.ZodEnum<{\n                pending: \"pending\";\n                completed: \"completed\";\n                in_progress: \"in_progress\";\n            }>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>;\n    goal: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        objective: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            active: \"active\";\n            paused: \"paused\";\n            budgetLimited: \"budgetLimited\";\n            complete: \"complete\";\n        }>;\n        tokenBudget: z$1.ZodNullable<z$1.ZodNumber>;\n        tokensUsed: z$1.ZodNumber;\n        timeUsedSeconds: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    modelFallback: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        detectedAt: z$1.ZodNumber;\n        originalModel: z$1.ZodString;\n        fallbackModel: z$1.ZodString;\n        reason: z$1.ZodEnum<{\n            provider: \"provider\";\n            refusal: \"refusal\";\n        }>;\n        message: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    contextWindowUsage: z$1.ZodOptional<z$1.ZodObject<{\n        usedTokens: z$1.ZodNumber;\n        modelContextWindow: z$1.ZodNumber;\n        estimated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    timelinePage: z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            latest: \"latest\";\n            older: \"older\";\n        }>;\n        segmentLimit: z$1.ZodNumber;\n        returnedSegmentCount: z$1.ZodNumber;\n        hasOlderRows: z$1.ZodBoolean;\n        olderCursor: z$1.ZodNullable<z$1.ZodObject<{\n            anchorSeq: z$1.ZodNumber;\n            anchorId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n    maxSeq: z$1.ZodNumber;\n    delta: z$1.ZodOptional<z$1.ZodObject<{\n        upsertRows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n        rowOrder: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ThreadTimelineResponse = z$1.infer<typeof threadTimelineResponseSchema>;\ndeclare const threadConversationOutlineResponseSchema: z$1.ZodObject<{\n    items: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        role: z$1.ZodEnum<{\n            user: \"user\";\n            assistant: \"assistant\";\n        }>;\n        preview: z$1.ZodString;\n        attachmentSummary: z$1.ZodNullable<z$1.ZodObject<{\n            imageCount: z$1.ZodNumber;\n            fileCount: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    maxSeq: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadConversationOutlineResponse = z$1.infer<typeof threadConversationOutlineResponseSchema>;\ndeclare const threadStorageFileListResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    storageRootPath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ThreadStorageFileListResponse = z$1.infer<typeof threadStorageFileListResponseSchema>;\ndeclare const threadStoragePathListResponseSchema: z$1.ZodObject<{\n    paths: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        score: z$1.ZodNumber;\n        positions: z$1.ZodArray<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    storageRootPath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ThreadStoragePathListResponse = z$1.infer<typeof threadStoragePathListResponseSchema>;\n\ndeclare const threadTabsResponseSchema: z$1.ZodObject<{\n    revision: z$1.ZodNumber;\n    tabs: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"thread-info\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"git-diff\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        actionId: z$1.ZodString;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"plugin-panel\">;\n        paramsJson: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodString;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"workspace-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        projectId: z$1.ZodNullable<z$1.ZodString>;\n        source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"working-tree\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"head\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge-base\">;\n            ref: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">;\n        statusLabel: z$1.ZodNullable<z$1.ZodLiteral<\"deleted\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"host-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        isPinned: z$1.ZodBoolean;\n        kind: z$1.ZodLiteral<\"thread-storage-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"browser\">;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"new-tab\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"side-chat\">;\n        sourceMessageText: z$1.ZodString;\n        sourceSeqEnd: z$1.ZodNullable<z$1.ZodNumber>;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"terminal\">;\n        terminalId: z$1.ZodString;\n    }, z$1.core.$strict>], \"kind\">>;\n}, z$1.core.$strict>;\ntype ThreadTabsResponse = z$1.infer<typeof threadTabsResponseSchema>;\ndeclare const updateThreadTabsRequestSchema: z$1.ZodObject<{\n    expectedRevision: z$1.ZodNumber;\n    tabs: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"thread-info\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"git-diff\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        actionId: z$1.ZodString;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"plugin-panel\">;\n        paramsJson: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodString;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"workspace-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        projectId: z$1.ZodNullable<z$1.ZodString>;\n        source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"working-tree\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"head\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge-base\">;\n            ref: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">;\n        statusLabel: z$1.ZodNullable<z$1.ZodLiteral<\"deleted\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"host-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        isPinned: z$1.ZodBoolean;\n        kind: z$1.ZodLiteral<\"thread-storage-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"browser\">;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"new-tab\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"side-chat\">;\n        sourceMessageText: z$1.ZodString;\n        sourceSeqEnd: z$1.ZodNullable<z$1.ZodNumber>;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"terminal\">;\n        terminalId: z$1.ZodString;\n    }, z$1.core.$strict>], \"kind\">>;\n}, z$1.core.$strict>;\ntype UpdateThreadTabsRequest = z$1.infer<typeof updateThreadTabsRequestSchema>;\n\n/**\n * A value that survives a JSON round trip without coercion or data loss.\n *\n * Host boundaries still validate values at runtime because TypeScript cannot\n * exclude non-finite numbers and plugin bundles can bypass static types.\n */\ntype JsonValue = string | number | boolean | null | JsonValue[] | {\n    [key: string]: JsonValue;\n};\n\n/** A JSON-safe path segment reported by a Standard Schema validation issue. */\ntype PluginRpcIssuePathSegment = string | number;\n/** Validator-neutral validation detail carried by an RPC error envelope. */\ninterface PluginRpcValidationIssue {\n    message: string;\n    path?: PluginRpcIssuePathSegment[];\n}\n/** Stable wire error categories for plugin RPC. */\ntype PluginRpcErrorCode = \"invalid_json\" | \"invalid_input\" | \"handler_error\" | \"invalid_output\" | \"non_json_result\" | \"unknown_method\";\n/** Structured RPC failure returned as `{ ok: false, error }`. */\ninterface PluginRpcError {\n    code: PluginRpcErrorCode;\n    message: string;\n    issues?: PluginRpcValidationIssue[];\n}\n/**\n * The validator-neutral subset of Standard Schema v1 used by plugin RPC.\n * Zod 4 schemas implement this interface directly; other validators can do\n * the same without becoming part of BB's public protocol.\n */\ninterface StandardSchemaV1<Input = unknown, Output = Input> {\n    readonly \"~standard\": {\n        readonly version: 1;\n        readonly vendor: string;\n        readonly validate: (value: unknown) => StandardSchemaV1Result<Output> | Promise<StandardSchemaV1Result<Output>>;\n        readonly types?: {\n            readonly input: Input;\n            readonly output: Output;\n        };\n    };\n}\ntype StandardSchemaV1Result<Output> = {\n    readonly value: Output;\n    readonly issues?: undefined;\n} | {\n    readonly issues: readonly StandardSchemaV1Issue[];\n};\ninterface StandardSchemaV1Issue {\n    readonly message: string;\n    readonly path?: PropertyKey | readonly (PropertyKey | {\n        readonly key: PropertyKey;\n    })[];\n}\ntype StandardSchemaV1InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"input\"];\ntype StandardSchemaV1InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"output\"];\ninterface PluginRpcMethodContract<InputSchema extends StandardSchemaV1 = StandardSchemaV1, OutputSchema extends StandardSchemaV1 = StandardSchemaV1> {\n    readonly input: InputSchema;\n    readonly output: OutputSchema;\n}\ntype PluginRpcContract = Readonly<Record<string, PluginRpcMethodContract>>;\n/** Define a shared RPC contract while preserving exact method/schema types. */\ndeclare function defineRpcContract<const Contract extends PluginRpcContract>(contract: Contract): Contract;\ntype PluginRpcHandlers<Contract extends PluginRpcContract> = {\n    [Method in keyof Contract]: (input: StandardSchemaV1InferOutput<Contract[Method][\"input\"]>) => StandardSchemaV1InferInput<Contract[Method][\"output\"]> | Promise<StandardSchemaV1InferInput<Contract[Method][\"output\"]>>;\n};\ntype PluginRpcCallInput<Method extends PluginRpcMethodContract> = StandardSchemaV1InferInput<Method[\"input\"]>;\ntype PluginRpcCallArgs<Method extends PluginRpcMethodContract> = null extends PluginRpcCallInput<Method> ? [input?: PluginRpcCallInput<Method>] : [input: PluginRpcCallInput<Method>];\ntype PluginRpcResult<Method extends PluginRpcMethodContract> = StandardSchemaV1InferOutput<Method[\"output\"]>;\n\n/**\n * The `@get-bb/plugin-sdk/app` contract (plugin design §5.2) — pure types with no\n * side effects. The BB app imports these to keep its real implementation in\n * sync (`satisfies PluginSdkApp`). Plugin authors import the same shapes through\n * `@get-bb/plugin-sdk/app`.\n *\n * Per-slot props are versioned contracts: additive-only within an SDK major.\n */\n/** Props passed to a `homepageSection` component. */\ninterface PluginHomepageSectionProps {\n    /** Project in view on the compose surface; null when none is selected. */\n    projectId: string | null;\n}\n/**\n * Props passed to a `settingsSection` component.\n *\n * Deliberately empty in V1; versioned additive like the other slot props.\n */\ninterface PluginSettingsSectionProps {\n}\n/** Props passed to a `navPanel` component (it owns its whole route). */\ninterface PluginNavPanelProps {\n    /**\n     * The route remainder after the panel root, \"\" at the root. The panel's\n     * route is `/plugins/<pluginId>/<path>/*`, so a deep link like\n     * `/plugins/notes/notes/work/ideas.md` renders the panel with\n     * `subPath: \"work/ideas.md\"`. Navigate within the panel via\n     * `useBbNavigate().toPluginPanel(path, { subPath })` — browser\n     * back/forward then walks panel-internal history.\n     */\n    subPath: string;\n}\n/**\n * Props passed to a panel tab opened by a `threadPanelAction`.\n *\n * This slot is rendered only for an existing thread. Use\n * `experimental_newThreadPanelAction` for the root New thread screen.\n */\ninterface PluginThreadPanelProps {\n    threadId: string;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\n/** Props passed to a panel tab opened by `experimental_newThreadPanelAction`. */\ninterface PluginNewThreadPanelProps {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\ninterface PluginPendingInteractionView {\n    id: string;\n    threadId: string;\n    title: string;\n    payload: JsonValue;\n    createdAt: number;\n    expiresAt: number | null;\n}\ninterface PluginPendingInteractionProps {\n    interaction: PluginPendingInteractionView;\n    submit(value: JsonValue): Promise<void>;\n    cancel(): Promise<void>;\n}\n/**\n * Props for a `sidebarFooterAction` — host-rendered (no plugin component).\n * Deliberately empty; the registration's `run` carries the behavior.\n */\ninterface PluginSidebarFooterActionProps {\n}\n/**\n * Props passed to an `experimental_threadList` component — the sidebar's\n * scrolling thread area, replaced wholesale by one plugin.\n */\ninterface PluginThreadListProps {\n    /** The thread the route currently shows; null on non-thread routes. */\n    activeThreadId: string | null;\n    /** The project the route currently shows; null when none is selected. */\n    activeProjectId: string | null;\n    /** True on phone-width viewports and coarse pointers. */\n    isCompactViewport: boolean;\n    /**\n     * Call after the user opens a thread. It closes the mobile sidebar drawer,\n     * and it clears the host search field on every viewport. Always call it, or\n     * the sidebar stays in search mode after the thread opens.\n     */\n    onNavigate: () => void;\n    /**\n     * The host search field's current text, or \"\" when the field is closed.\n     * The host owns that field, so a plugin list filters by this rather than\n     * shipping a second search box.\n     */\n    searchQuery: string;\n    /**\n     * BB's thread list, bound to this sidebar instance. Render it to delegate\n     * conditionally without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Props passed to an `experimental_threadHeaderAction` component, rendered in\n * the thread header's action row.\n */\ninterface PluginThreadHeaderActionProps {\n    /**\n     * The thread this header belongs to. Never null: the slot is not rendered\n     * on the compose screen or other non-thread routes. A split layout renders\n     * one header per pane, so the component mounts once per visible thread,\n     * each with its own id — keep per-thread state in the component, never in a\n     * module-level singleton.\n     */\n    threadId: string;\n    projectId: string;\n    /**\n     * True on phone-width viewports and coarse pointers. Collapse to an\n     * icon-sized control when it is true — the row is short.\n     */\n    isCompactViewport: boolean;\n}\n/**\n * Where a file being opened by a `fileOpener` lives. `path` semantics follow\n * the source: workspace paths are relative to the environment's worktree,\n * thread-storage paths are relative to the thread's storage root, host paths\n * are absolute on the thread's host.\n */\ninterface PluginFileOpenerSource {\n    kind: \"workspace\" | \"host\" | \"thread-storage\";\n    threadId: string | null;\n    environmentId: string | null;\n    projectId: string | null;\n}\n/** Props passed to a `fileOpener` component (rendered as a panel file tab). */\ninterface PluginFileOpenerProps {\n    path: string;\n    source: PluginFileOpenerSource;\n    /**\n     * BB's file preview, bound to this file. Render it to delegate conditionally\n     * without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Message context passed to a `messageDirective` component — the assistant\n * (or nested agent) message that contained the directive.\n */\ninterface PluginMessageDirectiveMessage {\n    id: string;\n    threadId: string;\n    turnId: string | null;\n    projectId: string | null;\n}\n/**\n * Open a worktree-relative file in the host's workspace file viewer. Returns\n * true when the host accepted the path; false when the path is invalid or the\n * viewer declined it.\n */\ntype PluginMessageDirectiveOpenWorkspaceFile = (path: string) => boolean;\n/**\n * Props passed to a `messageDirective` component. Attributes are untrusted\n * strings parsed from the directive; the plugin validates its own fields.\n */\ninterface PluginMessageDirectiveProps {\n    /** Parsed, untrusted directive attributes (e.g. `{ file: \"demo.html\" }`). */\n    attributes: Readonly<Record<string, string>>;\n    /** Original directive source text (useful for diagnostics / crash fallback). */\n    source: string;\n    message: PluginMessageDirectiveMessage;\n    /**\n     * Opens a worktree-relative file in the host's workspace file viewer. Null\n     * when the message surface has no workspace viewer available.\n     */\n    openWorkspaceFile: PluginMessageDirectiveOpenWorkspaceFile | null;\n}\ninterface PluginHomepageSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    component: ComponentType<PluginHomepageSectionProps>;\n}\ninterface PluginSettingsSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Optional host-rendered section heading. */\n    title?: string;\n    /**\n     * Optional one-line host-rendered subheading under `title`, in the built-in\n     * SettingsSection idiom (ignored when `title` is absent).\n     */\n    description?: string;\n    component: ComponentType<PluginSettingsSectionProps>;\n}\ninterface PluginNavPanelRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /** URL segment under `/plugins/<pluginId>/`; letters, digits, `-`, `_`. */\n    path: string;\n    component: ComponentType<PluginNavPanelProps>;\n    /**\n     * Optional presentational component rendered at the trailing edge of this\n     * panel's sidebar row. It receives no props so it can own a narrow live\n     * value through the ordinary SDK hooks without coupling that state to the\n     * host sidebar. The host does not mount it on compact viewports and clips it\n     * to a small, single-line box on wider viewports. It shares the trailing\n     * action column, fading out for the host's options button on hover or focus;\n     * do not render controls or rely on unbounded content here.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_sidebarAccessory?: ComponentType;\n    /**\n     * Optional component rendered on the right side of the shared title bar\n     * (e.g. a sync button or a count). Contained separately from the body: a\n     * throwing headerContent is hidden without breaking the title bar.\n     */\n    headerContent?: ComponentType<PluginNavPanelProps>;\n}\n/**\n * Context handed to a `threadPanelAction`'s `run`.\n *\n * The action is thread-only and is never offered on the root New thread\n * screen, so `threadId` is always present.\n */\ninterface PluginThreadPanelActionContext {\n    /** The thread whose panel launcher invoked the action. */\n    threadId: string;\n    /**\n     * Open a tab in the thread's side panel rendering this action's\n     * `component`. `title` labels the tab (default: the action's `title`);\n     * `params` must be JSON-serializable — it is persisted with the tab and\n     * reaches the component as its `params` prop. Opening with params\n     * identical to an already-open tab of this action focuses that tab\n     * (updating its title) instead of duplicating it. May be called more than\n     * once (different params ⇒ multiple tabs) or not at all.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\ninterface PluginThreadPanelActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /**\n     * Icon hint (BB icon name) used when the plugin ships no logo; the\n     * launcher row and opened tabs prefer the plugin's logo.\n     */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginThreadPanelProps>;\n    /**\n     * How the host frames the tab content. \"padded\" (default) wraps the\n     * component in the panel's scroll container with standard padding —\n     * right for document-like content. \"flush\" gives the component the full\n     * tab area (no padding, definite height, no host scrolling) — right for\n     * app-like content that manages its own layout, such as\n     * `ThreadChat`.\n     */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action: call your RPC methods, show a\n     * toast, and/or open panel tabs via `context.openPanel`. Omitted =\n     * immediately open a panel tab with defaults. Errors (sync or async) are\n     * contained and logged; they never break the launcher.\n     */\n    run?(context: PluginThreadPanelActionContext): void | Promise<void>;\n}\n/** Context handed to an `experimental_newThreadPanelAction`'s `run`. */\ninterface PluginNewThreadPanelActionContext {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * Open a tab in the root New thread screen's side panel rendering this\n     * action's `component`. The title, params, deduplication, and error\n     * semantics match `threadPanelAction`.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\n/** Registration for the root New thread screen's panel Actions list. */\ninterface PluginNewThreadPanelActionRegistration {\n    /** Unique within this slot for the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /** Icon hint (BB icon name) used when the plugin ships no logo. */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginNewThreadPanelProps>;\n    /** Host framing; matches `threadPanelAction`. */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action. Omitted = immediately open a\n     * panel tab with defaults. Errors are contained and logged.\n     */\n    run?(context: PluginNewThreadPanelActionContext): void | Promise<void>;\n}\ninterface PluginPendingInteractionRegistration {\n    /** Matches `rendererId` passed to `bb.ui.requestInput`. */\n    id: string;\n    component: ComponentType<PluginPendingInteractionProps>;\n}\n/** Context handed to a `sidebarFooterAction`'s `run`. */\ninterface PluginSidebarFooterActionContext {\n    /**\n     * Navigate to this plugin's detail page in Tools, where declarative settings\n     * and `settingsSection` slots render.\n     */\n    openSettings(): void;\n}\n/**\n * An icon button in the app sidebar footer (next to Settings / bug report).\n * Host-rendered for consistent chrome — plugins supply icon, label, and\n * `run` behavior only.\n */\ninterface PluginSidebarFooterActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip and accessible label for the icon button. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /**\n     * Runs when the user activates the action (e.g. call `openSettings()`,\n     * open a panel via other surfaces, toast). Errors (sync or async) are\n     * contained and logged; they never break the sidebar.\n     */\n    run(context: PluginSidebarFooterActionContext): void | Promise<void>;\n}\n/**\n * The one status bb would paint for a thread, already resolved through the\n * host's precedence (attention before work; plan and goal before the generic\n * spinner). Draw your own glyph for it — the SDK ships no status component.\n *\n * Treat an unrecognized value as \"none\": bb adds kinds over time, and an\n * older plugin must degrade to drawing nothing rather than throwing.\n *\n * \"draft\" and \"working-draft\" are never reported here: an unsubmitted composer\n * draft is per-client state the host reads per row, which an array-wide view\n * cannot. A thread holding a draft reports whatever it would report without\n * one.\n */\ntype PluginSidebarThreadIndicator = \"unread-error\" | \"waiting-for-input\" | \"working-draft\" | \"workflow\" | \"background-agent\" | \"background-command\" | \"plan-mode\" | \"goal\" | \"runtime\" | \"draft\" | \"unread-success\" | \"none\";\n/**\n * How a thread's environment presents its workspace: a worktree bb manages,\n * a worktree the user manages, or anything else (a plain checkout).\n */\ntype PluginSidebarWorkspaceKind = \"managed-worktree\" | \"unmanaged-worktree\" | \"other\";\n/** Live work counts on a thread. All zero means nothing is running. */\ninterface PluginSidebarThreadActivity {\n    workflows: number;\n    backgroundAgents: number;\n    backgroundCommands: number;\n    planMode: number;\n    goals: number;\n}\n/**\n * One thread in the sidebar's live view.\n *\n * A deliberate copy of the fields a sidebar needs — not a re-export of the\n * host's internal thread row type, which changes whenever the app needs a\n * field. Timestamps are epoch milliseconds.\n */\ninterface PluginSidebarThread {\n    id: string;\n    projectId: string;\n    /** Null while a thread is still unnamed; pair with `titleFallback`. */\n    title: string | null;\n    titleFallback: string | null;\n    /** The thread this one was forked from or spawned under; null at the root. */\n    parentThreadId: string | null;\n    sectionId: string | null;\n    /** How this thread came to exist under its parent; null for root threads. */\n    originKind: \"fork\" | null;\n    /** The plugin that spawned it, or null for non-plugin origins. */\n    originPluginId: string | null;\n    /** The agent provider this thread runs on, e.g. \"codex\", \"claude-code\". */\n    providerId: string;\n    /** The agent is blocked on the user: an approval or a question. */\n    hasPendingInteraction: boolean;\n    activity: PluginSidebarThreadActivity;\n    indicator: PluginSidebarThreadIndicator;\n    /**\n     * The host's accessible label for `indicator`, e.g. \"Thread needs user\n     * input\"; null when the indicator is \"none\". Use it for `aria-label` so\n     * screen-reader text stays consistent across sidebars.\n     */\n    indicatorLabel: string | null;\n    isUnread: boolean;\n    isPinned: boolean;\n    isArchived: boolean;\n    environment: {\n        id: string | null;\n        name: string | null;\n        branchName: string | null;\n        workspaceDisplayKind: PluginSidebarWorkspaceKind;\n    } | null;\n    /**\n     * The machine this thread's work runs on, with the name resolved for you.\n     * Null when the thread has no environment yet, or when its host is not in\n     * the known-hosts list. Useful where a thread has no branch to show — a\n     * personal-project thread has a machine but no worktree.\n     */\n    host: {\n        id: string;\n        name: string;\n    } | null;\n    createdAt: number;\n    updatedAt: number;\n    lastReadAt: number | null;\n    latestAttentionAt: number;\n}\n/**\n * The pull request for a thread's branch, narrowed to what a sidebar row\n * needs. `attention` is bb's rolled-up \"does this need you\" signal, so a row\n * can colour a badge without reading checks, review, and mergeability itself.\n */\ninterface PluginSidebarPullRequest {\n    number: number;\n    title: string;\n    url: string;\n    state: \"draft\" | \"open\" | \"merged\" | \"closed\";\n    attention: \"checks_failed\" | \"checks_pending\" | \"changes_requested\" | \"review_requested\" | \"conflicts\" | \"blocked\" | \"draft\" | \"ready_to_merge\" | \"merged\" | \"closed\" | \"none\";\n}\ninterface PluginSidebarThreadPullRequestState {\n    /** True while the first lookup for this thread's environment is in flight. */\n    isLoading: boolean;\n    /**\n     * The pull request, or null when the branch has none, the thread has no\n     * environment, or the lookup could not run (a git-host hiccup). A row should\n     * treat null as \"nothing to show\", never as an error.\n     */\n    pullRequest: PluginSidebarPullRequest | null;\n}\n/** One project in the sidebar's live view. */\ninterface PluginSidebarProject {\n    id: string;\n    name: string;\n    /** True for the implicit personal project. */\n    isPersonal: boolean;\n}\ninterface PluginSidebarThreadsState {\n    status: \"loading\" | \"ready\" | \"error\";\n    threads: readonly PluginSidebarThread[];\n    projects: readonly PluginSidebarProject[];\n}\n/**\n * Act on threads from a plugin surface. Every method routes to the host's own\n * flow, so optimistic updates, toasts, dialogs, pane closing, and route repair\n * behave exactly as they do in the built-in sidebar. Unknown thread ids are\n * ignored by `open` and rejected by the rest.\n */\ninterface PluginSidebarThreadActions {\n    /**\n     * Navigate to a thread. `split: true` applies bb's split placement rules —\n     * a right split by default, focus when the thread is already open, replace\n     * at the pane cap — and falls back to plain navigation where splits are off.\n     */\n    open(threadId: string, options?: {\n        split?: boolean;\n    }): void;\n    /**\n     * Go to the new-thread screen. Passing `projectId` also makes that project\n     * the composer's selection, so the thread is created where you asked.\n     */\n    openNewThread(options?: {\n        projectId?: string;\n        focusPrompt?: boolean;\n    }): void;\n    setPinned(threadId: string, pinned: boolean): Promise<void>;\n    setRead(threadId: string, read: boolean): Promise<void>;\n    /** Silent rename — no dialog. For inline editing in your own row. */\n    rename(threadId: string, title: string): Promise<void>;\n    /** Archives the thread AND its children, closing any panes showing them. */\n    archive(threadId: string): void;\n    /**\n     * Opens bb's delete confirmation, which counts child threads first. Deletion\n     * is destructive and recursive, so the host owns the confirmation: there is\n     * deliberately no silent `delete`.\n     */\n    requestDelete(threadId: string): void;\n}\n/**\n * Render a plugin component in the thread header's action row.\n *\n * The frontend sibling of the backend `bb.ui.registerThreadAction`, which\n * renders a host-owned button and runs server-side. Use that one for \"do a\n * thing\"; use this one when the control must draw live state.\n *\n * The host places it at the left end of the action row, before the workspace\n * button, git actions, the panel toggle, maximize, and close. That row is a\n * 48px chrome row with 28px controls: render one inline control that fits, and\n * put anything taller in a portalled popover.\n */\ninterface PluginThreadHeaderActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Names the region the host wraps around your component (a labelled group).\n     * It does NOT label your control: an icon-only button still needs its own\n     * accessible name.\n     */\n    title: string;\n    component: ComponentType<PluginThreadHeaderActionProps>;\n}\n/** One pane's place in the split layout, as fractions of the split area. */\ninterface PluginSidebarSplitPane {\n    paneId: string;\n    rect: {\n        x: number;\n        y: number;\n        width: number;\n        height: number;\n    };\n    /** This pane holds the thread the row represents. */\n    isMe: boolean;\n    isFocused: boolean;\n}\n/**\n * Drag-to-split support for one row, plus where that thread currently sits in\n * the split layout.\n */\ninterface PluginSidebarThreadSplit {\n    /**\n     * Spread onto the row's interactive element. Carries the pointer handler\n     * that starts a split drag; empty when splits are unavailable, so spreading\n     * it is always safe.\n     *\n     * The host owns every rule: the gesture engages only once the pointer leaves\n     * the sidebar toward the main area (so a list with its own drag-to-reorder\n     * keeps working), an edge drop splits, a center drop replaces, an\n     * already-open thread focuses its pane, and the pane cap coerces a split\n     * into a replace.\n     */\n    splitProps: {\n        onPointerDown?: (event: react.PointerEvent<HTMLElement>) => void;\n    };\n    /**\n     * False on compact viewports, when the user disabled splits, and for an\n     * unknown thread id. Gate any \"open in split\" affordance you draw on it.\n     */\n    isAvailable: boolean;\n    /**\n     * Where this thread sits in the split layout, or null when it is not open in\n     * one (including single-pane layouts). Draw a mini-map, a tint, or nothing.\n     */\n    layout: {\n        panes: readonly PluginSidebarSplitPane[];\n    } | null;\n}\n/**\n * Replace the sidebar's thread list with a plugin component.\n *\n * Unlike every other slot, this one is EXCLUSIVE: two lists cannot share one\n * scroll area. Registering activates the replacement while the plugin is\n * enabled. If multiple plugins register one, the first in deterministic slot\n * order is active by default; removing it reveals the next. The user can pin\n * BB's list or a specific provider under Settings → Appearance. A plugin can\n * also use its own setting and render `experimental_Original` conditionally.\n * An absent or crashing replacement falls back to BB's list rather than\n * leaving the user with no sidebar.\n *\n * The plugin gets the scrolling list and nothing else. The New-thread button,\n * the search field, the plugin nav rows, and the footer stay host-rendered in\n * every sidebar — they are shared surfaces (other plugins live in two of\n * them), and a replaced list must not be able to remove them.\n */\ninterface PluginThreadListRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label shown in Settings → Appearance and capability details. */\n    title: string;\n    /** Optional one-line description shown with the provider choice. */\n    description?: string;\n    component: ComponentType<PluginThreadListProps>;\n}\n/**\n * Register this plugin as a viewer/editor for file extensions. By default,\n * matching files render the first applicable opener in deterministic slot\n * order. The user can pin BB's preview or a specific opener per extension\n * under Settings → Files. The file tab's \"Open with\" menu can override that\n * choice for one open. A plugin can also use its own setting and render\n * `experimental_Original` conditionally. Applies to working-tree, host, and\n * thread-storage files — never to git-ref snapshots (diff views always use\n * BB's preview).\n */\ninterface PluginFileOpenerRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label in the \"Open with\" menu (e.g. \"Notes editor\"). */\n    title: string;\n    /** Lowercase extensions without the dot (e.g. [\"md\", \"mdx\"]). */\n    extensions: readonly string[];\n    component: ComponentType<PluginFileOpenerProps>;\n}\n/**\n * Register a leaf message directive rendered inside assistant (and nested\n * agent) message Markdown. `id` is the directive name: `inline-vis` matches\n * `::inline-vis{file=\"demo.html\"}`.\n */\ninterface PluginMessageDirectiveRegistration {\n    /**\n     * The directive name. Lowercase kebab-case beginning with a letter.\n     */\n    id: string;\n    component: ComponentType<PluginMessageDirectiveProps>;\n}\n/**\n * A narrow, stable reference to one rendered chat message — NOT an internal\n * timeline row. `sourceSeqEnd` is the last source event sequence the message\n * covers, the anchor the server accepts for provider-history forks.\n */\ninterface ThreadChatMessageReference {\n    id: string;\n    threadId: string;\n    role: \"user\" | \"assistant\";\n    /** Visible text of the message. */\n    text: string;\n    sourceSeqEnd: number;\n}\ninterface PluginMessageActionThreadPanelOptions {\n    /** A `threadPanelAction` id registered by this same plugin. */\n    actionId: string;\n    title?: string;\n    params?: JsonValue;\n}\n/** Context handed to a `messageAction`'s `run`. */\ninterface PluginMessageActionContext {\n    /** The thread whose timeline surfaced the action. */\n    threadId: string;\n    message: ThreadChatMessageReference;\n    /**\n     * Present only when the action was invoked from the text-selection menu;\n     * the exact text the user highlighted inside `message`.\n     */\n    selectedText?: string;\n    /**\n     * Open one of this plugin's `threadPanelAction` components in the current\n     * thread's side panel — the registration-callback equivalent of\n     * `useBbNavigate().openThreadPanel`. Returns true when the host\n     * accepted (the action id exists and the surface has a panel); false\n     * otherwise.\n     */\n    openPanel(options: PluginMessageActionThreadPanelOptions): boolean;\n}\n/**\n * An action on chat messages: an icon button in the per-message action bar\n * (user and assistant messages) and an entry in the assistant-message\n * text-selection menu. Host-rendered chrome — the plugin supplies title,\n * icon hint, and `run` behavior only.\n */\ninterface PluginMessageActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(context: PluginMessageActionContext): void | Promise<void>;\n}\n/**\n * Supply the inline React mark bb draws for one agent provider.\n *\n * A manifest `branding.icon` (or a provider's `logoUrl`) is fetched and drawn\n * through `<img>`, a separate document where `currentColor` resolves to black\n * — invisible on dark themes and unreachable from app CSS. A component is\n * rendered inline, so it inherits the app's theme colors and the host's sizing\n * classes. Register a static color logo as a file and a theme-aware mark here.\n *\n * The host passes only `className` (sizing plus the provider's color class);\n * the component must render an inline SVG (or other inline markup) and must\n * not fetch. One registration per provider id per plugin; when two plugins\n * claim the same provider id the host keeps the first by plugin id and warns.\n */\ninterface PluginProviderIconRegistration {\n    /**\n     * The provider this mark is for — the id bb knows the provider by (the\n     * provider declaration's id, e.g. `codex` or `acp-cursor`), not the plugin\n     * id. Letters, digits, `-`, `_`.\n     */\n    providerId: string;\n    /** Inline, theme-aware mark. Receives the host's sizing/color className. */\n    icon: ComponentType<{\n        className?: string;\n    }>;\n}\ninterface PluginAppSlots {\n    homepageSection(registration: PluginHomepageSectionRegistration): void;\n    settingsSection(registration: PluginSettingsSectionRegistration): void;\n    navPanel(registration: PluginNavPanelRegistration): void;\n    /**\n     * Add an action to an existing thread's panel launcher. This slot is\n     * thread-only; use `experimental_newThreadPanelAction` for root compose.\n     */\n    threadPanelAction(registration: PluginThreadPanelActionRegistration): void;\n    /**\n     * Add an action to the root New thread screen's panel launcher (see\n     * {@link PluginNewThreadPanelActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_newThreadPanelAction(registration: PluginNewThreadPanelActionRegistration): void;\n    pendingInteraction(registration: PluginPendingInteractionRegistration): void;\n    sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void;\n    /**\n     * Replace the sidebar's thread list (see\n     * {@link PluginThreadListRegistration}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_threadList(registration: PluginThreadListRegistration): void;\n    /**\n     * Render a component in the thread header's action row (see\n     * {@link PluginThreadHeaderActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_threadHeaderAction(registration: PluginThreadHeaderActionRegistration): void;\n    fileOpener(registration: PluginFileOpenerRegistration): void;\n    messageDirective(registration: PluginMessageDirectiveRegistration): void;\n    messageAction(registration: PluginMessageActionRegistration): void;\n    /**\n     * Draw one agent provider's icon with an inline React component instead of\n     * its `<img>`-rendered logo file (see\n     * {@link PluginProviderIconRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_providerIcon(registration: PluginProviderIconRegistration): void;\n}\ninterface PluginAppComposer {\n    customize(registration: ComposerCustomization): void;\n}\n/** Stable lifecycle values for one content-script instance in one bb client. */\ninterface PluginContentScriptContext {\n    /** The id of the plugin that owns this script. */\n    readonly pluginId: string;\n    /** Monotonic per-client generation, starting at 1. */\n    readonly generation: number;\n    /** Aborted before cleanup begins on replacement, deactivation, or teardown. */\n    readonly signal: AbortSignal;\n    /**\n     * Persistently decorate any thread row for this plugin generation.\n     *\n     * The status is owned by the frontend generation and therefore survives\n     * route changes. Passing `null` clears the plugin's status for that thread.\n     * The host clears every remaining status when the frontend generation\n     * deactivates.\n     *\n     * Optional so bundles can feature-detect support while this experimental\n     * surface rolls out across 0.x clients.\n     */\n    readonly experimental_setThreadRowStatus?: (threadId: string, status: PluginComposerThreadRowStatus | null) => void;\n}\n/** Cleanup returned by a frontend content script. */\ntype PluginContentScriptDisposer = () => void | Promise<void>;\n/**\n * Trusted same-origin JavaScript/TypeScript mounted once per active frontend\n * generation in each bb app window or browser tab.\n */\ninterface PluginContentScriptRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Install behavior into the bb app shell. The host awaits a returned\n     * promise, contains failures, and calls the returned disposer exactly once.\n     */\n    mount(context: PluginContentScriptContext): void | PluginContentScriptDisposer | Promise<void | PluginContentScriptDisposer>;\n}\n/** Lifecycle surface for trusted frontend content scripts. */\ninterface PluginAppContentScripts {\n    register(registration: PluginContentScriptRegistration): void;\n}\ninterface PluginAppBuilder {\n    slots: PluginAppSlots;\n    composer: PluginAppComposer;\n    contentScripts: PluginAppContentScripts;\n}\ntype PluginAppSetup = (app: PluginAppBuilder) => void;\n/**\n * The opaque product of `definePluginApp` — a plugin's `app.tsx` default\n * export. The host re-runs `setup` against a fresh collector on every\n * (re)interpretation, replacing that plugin's registrations wholesale.\n */\ninterface PluginAppDefinition {\n    /** Brand the host checks before interpreting a bundle's default export. */\n    readonly __bbPluginApp: true;\n    readonly setup: PluginAppSetup;\n}\ninterface PluginRpcClient<Contract extends PluginRpcContract = PluginRpcContract> {\n    /**\n     * Invoke one of the plugin's `bb.rpc` methods (POST\n     * /api/v1/plugins/&lt;id&gt;/rpc/&lt;method&gt;). Resolves with the method's\n     * inferred output; rejects with an `Error` carrying the server's message,\n     * stable `code`, and validation `issues` when present.\n     */\n    call<Method extends Extract<keyof Contract, string>>(method: Method, ...args: PluginRpcCallArgs<Contract[Method]>): Promise<PluginRpcResult<Contract[Method]>>;\n}\ninterface PluginSettingsState {\n    /**\n     * Effective non-secret setting values (secret settings are excluded —\n     * read them server-side). Undefined while loading or unavailable.\n     */\n    values: Record<string, string | boolean> | undefined;\n    isLoading: boolean;\n}\n/** State of the app's shared realtime connection to the bb server. */\ntype PluginRealtimeConnectionState = \"connecting\" | \"connected\" | \"reconnecting\";\n/** Where `useComposer()` writes. */\ntype PluginComposerScope = {\n    kind: \"thread\";\n    threadId: string;\n} | {\n    kind: \"queued-message\";\n    threadId: string;\n    queuedMessageId: string;\n} | {\n    kind: \"side-chat\";\n    projectId: string;\n    parentThreadId: string;\n    tabId: string;\n    childThreadId: string | null;\n} | {\n    kind: \"new-thread\";\n    /** Root compose's effective selected project; null only while unresolved. */\n    projectId: string | null;\n};\n/** One plugin-owned composer customization registration. */\ninterface ComposerCustomization {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Composer kinds where this customization is active; omit for all kinds. */\n    scopes?: readonly PluginComposerScope[\"kind\"][];\n    actions?: readonly {\n        id: string;\n        component: ComponentType;\n    }[];\n    banners?: readonly {\n        id: string;\n        /** Host chrome around the banner. Defaults to `\"card\"`. */\n        chrome?: \"card\" | \"bare\";\n        component: ComponentType;\n    }[];\n    plusMenu?: readonly ComposerPlusMenuItem[];\n    richText?: ComposerRichTextSpec;\n}\n/** Host-rendered menu row in the composer's `+` menu. */\ninterface ComposerPlusMenuItem {\n    id: string;\n    label: string;\n    /** BB icon name; unknown names fall back to the generic plugin icon. */\n    icon?: string;\n    /** Accessible description for the host-rendered row. */\n    description?: string;\n    disabled?: boolean | ((view: ComposerView) => boolean);\n    run(context: {\n        composer: PluginComposerApi;\n        view: ComposerView;\n    }): void | Promise<void>;\n}\n/** Reactive read-side of the composer a plugin surface is mounted in. */\ninterface ComposerView {\n    scope: PluginComposerScope;\n    layout: \"expanded\" | \"compact\" | \"zen\";\n    draft: {\n        text: string;\n        isEmpty: boolean;\n        attachmentCount: number;\n    };\n    run: {\n        isRunning: boolean;\n        isSubmitting: boolean;\n    };\n}\ninterface ComposerRichTextSpec {\n    /** Content-derived paint: match ranges receive `className`; text is never mutated. */\n    effects?: readonly {\n        id: string;\n        /** Plain-text offsets into the current structured draft. */\n        match(text: string): readonly {\n            from: number;\n            to: number;\n        }[];\n        className: string;\n    }[];\n    /** Debounced, read-only observation of the structured draft. */\n    onDraftChange?(draft: ComposerStructuredDraft, view: ComposerView): void;\n}\ninterface ComposerStructuredDraft {\n    text: string;\n    mentions: readonly {\n        from: number;\n        to: number;\n        provider: string;\n        id: string;\n        label: string;\n    }[];\n}\n/** Host-rendered paint applied to the editable composer text. */\ninterface PluginComposerTextEffect {\n    className: string;\n}\n/** Host-rendered status that temporarily replaces a thread's draft glyph. */\ninterface PluginComposerThreadRowStatus {\n    /** BB icon-name hint; unknown names fall back to the generic plugin icon. */\n    icon: string;\n    /** Accessible label for the status glyph. */\n    label: string;\n    /**\n     * Semantic host treatment for the status glyph. `running` automatically\n     * shimmers; terminal `success` and `error` tones are static. Defaults to the\n     * neutral tone.\n     */\n    tone?: \"default\" | \"running\" | \"success\" | \"error\";\n}\n/** An @-mention pill bound to one of the calling plugin's mention providers. */\ninterface PluginComposerMention {\n    /** Mention provider id registered by THIS plugin via `bb.ui.registerMentionProvider`. */\n    provider: string;\n    /** Item id your provider's `resolve` will receive at send time. */\n    id: string;\n    /** Pill text shown in the composer. */\n    label: string;\n}\n/**\n * Programmatic access to the chat composer draft — the same shared draft the\n * built-in \"Add to chat\" affordances (file preview, diff, terminal selections)\n * write to. While a queued message is being edited, writes land in that\n * message's inline editor. In a side chat, writes land in the visible side-chat\n * draft. Otherwise, inside a thread context writes land in that thread's draft;\n * anywhere else (nav panel, homepage section) they seed the new-thread composer\n * draft, which persists until the user sends or clears it.\n */\ninterface PluginComposerApi {\n    scope: PluginComposerScope;\n    /** Current plain text for this composer scope. */\n    readonly text: string;\n    /**\n     * Replace the draft's plain text. Attachments are preserved. Inline mentions\n     * outside the changed range are preserved and rebased; mentions overlapped\n     * by the replacement are removed because their text representation changed.\n     */\n    setText(next: string): void;\n    /**\n     * Replace the draft's plain text from the latest committed value. Uses the\n     * same structured-state reconciliation as `setText`.\n     */\n    updateText(updater: (current: string) => string): void;\n    /** Clear plain text without clearing independently attached files. */\n    clear(): void;\n    /**\n     * Apply a host-rendered effect to this composer's editable text, or clear it.\n     * Effects are scoped to the calling plugin and automatically clear when the\n     * slot unmounts or its composer scope changes.\n     */\n    setTextEffect(effect: PluginComposerTextEffect | null): void;\n    /**\n     * Lock or unlock editing for this composer. Locks are scoped to the calling\n     * plugin and automatically release when the slot unmounts or its composer\n     * scope changes.\n     */\n    setInputLock(locked: boolean): void;\n    /**\n     * Append text to the draft as a `> ` blockquote block and focus the\n     * composer. Blank text is a no-op. This is the \"reference this selection\n     * in chat\" primitive.\n     */\n    addQuote(text: string): void;\n    /**\n     * Insert an @-mention pill that resolves through this plugin's mention\n     * provider at send time — the durable way to reference an entity whose\n     * content should be fetched fresh when the message is sent.\n     */\n    insertMention(mention: PluginComposerMention): void;\n    /** Focus the composer caret at the end of the draft. */\n    focus(): void;\n}\n/**\n * A consumer-supplied action on the messages of one `ThreadChat` instance,\n * rendered in the embedded timeline's per-message action bar alongside the\n * native and slot-registered actions. Unlike the `messageAction` slot this is\n * scoped to the rendering component, not registered globally.\n */\ninterface ThreadChatMessageAction {\n    /** Unique within this ThreadChat instance; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Message roles the action applies to. Omitted = both user and assistant\n     * messages.\n     */\n    roles?: readonly (\"user\" | \"assistant\")[];\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(message: ThreadChatMessageReference): void | Promise<void>;\n}\n/**\n * Props of the host-owned `ThreadChat` component — one thread's chat\n * (timeline, and for the composer variants the full send/queue/draft\n * engine), rendered by the BB app inside a plugin slot. This is the\n * deliberate exception to the no-host-components rule (§5.5): a stable\n * product capability, not a UI kit. Versioned additive like slot props;\n * internal timeline rows, query hooks, and prompt-box configuration are\n * deliberately not exposed.\n */\ninterface ThreadChatProps {\n    threadId: string;\n    /**\n     * \"full\" (default) is the page presentation (centered reading width);\n     * \"compact\" is the side-panel presentation; \"timeline\" renders the\n     * transcript without a composer.\n     */\n    variant?: \"full\" | \"compact\" | \"timeline\";\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the composer (ignored by `variant: \"timeline\"`). */\n    focusRequest?: number;\n    /**\n     * Who controls the permission mode sends run with. \"inherit\" (default)\n     * pins every send to the thread's own resolved default and renders the\n     * picker as a dimmed label — a plugin surface can never widen it.\n     * \"editable\" gives this chat its own picker, so the user can raise or\n     * lower permissions for this thread independently of the thread it was\n     * forked from. Ignored by `variant: \"timeline\"` (no composer).\n     */\n    permissionPolicy?: \"inherit\" | \"editable\";\n    className?: string;\n    /** Rendered above the conversation, scrolling with it. */\n    leadingContent?: ReactNode;\n    /**\n     * Actions rendered in this instance's per-message action bar (see\n     * {@link ThreadChatMessageAction}).\n     */\n    messageActions?: readonly ThreadChatMessageAction[];\n}\n/**\n * Every selection the composer resolved, JSON-serializable so a plugin can\n * forward it to its own backend rpc verbatim and hand it straight to\n * `bb.sdk.threads.spawn`.\n *\n * The split is deliberate: the composer owns *user selections*, the plugin\n * owns *filing and attribution*. `bb.sdk.threads.spawn` auto-fills\n * `origin: \"plugin\"` and `originPluginId`, so a thread created this way stays\n * attributed to the plugin — which it would not be if the component created\n * the thread itself. The plugin adds `sectionId`, `parentThreadId`, `title`,\n * and `visibility` to the request on its own; they are deliberately not\n * composer props.\n */\ninterface NewThreadRequest {\n    projectId: string;\n    providerId: string;\n    model: string;\n    reasoningLevel: ReasoningLevel;\n    permissionMode: PermissionMode;\n    /** Omitted when the selected provider has no service tiers. */\n    serviceTier?: ServiceTier;\n    /**\n     * Per-field provenance (caller-explicit vs. default) for the execution\n     * options above, forwarded to `spawn` so the server records what the user\n     * actually chose.\n     */\n    executionInputSources: CreateExecutionInputSources;\n    environment: CreateThreadEnvironmentArgs;\n    input: PromptInput[];\n}\n/**\n * Props of the host-owned `experimental_NewThreadComposer` component — bb's\n * full new-thread compose surface (prompt editor with @-mentions and expand,\n * attachments, provider/model/reasoning picker, voice, submit, and the row\n * beneath with project, environment, branch-from, and permission mode),\n * rendered by the BB app inside a plugin slot.\n *\n * It is the create-side counterpart to `ThreadChat`: same deliberate\n * exception to the no-host-components rule (§5.5), same additive versioning.\n */\ninterface NewThreadComposerProps {\n    /** Seeds the project picker. The user can change it. */\n    defaultProjectId?: string;\n    /**\n     * Seeds the provider picker. Like every `default*` prop this is a SEED, not\n     * a controlled value: the composer stays uncontrolled, the user can change\n     * it, and when omitted the composer falls back to the project's remembered\n     * execution defaults exactly as before. When provided it takes precedence\n     * over those project defaults.\n     *\n     * Re-seeding: the `default*` props are value-compared each render. When any\n     * of them changes after mount, the composer re-seeds EVERY execution and\n     * environment selection from the new props — including selections the user\n     * had already touched — so switching between two saved records in the same\n     * mounted composer reloads that record's values (the same rule\n     * `defaultProjectId` already follows).\n     *\n     * Every seeded field is reported as caller-explicit in the submitted\n     * request's `executionInputSources`. That is what makes the seed survive\n     * `threads.spawn`: the server drops a requested `providerId`/`model` that\n     * carries no provenance source and re-derives it from the project's stored\n     * defaults, which would silently undo the seed.\n     */\n    defaultProviderId?: string;\n    /** Seeds the model picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultModel?: string;\n    /**\n     * Seeds the reasoning-level picker. Same seed semantics as\n     * {@link defaultProviderId}. If the seeded model does not support this\n     * level, the composer reconciles to the closest supported one.\n     */\n    defaultReasoningLevel?: ReasoningLevel;\n    /**\n     * Seeds the service-tier picker. Same seed semantics as\n     * {@link defaultProviderId}. Ignored (and omitted from the submitted\n     * request) when the selected provider has no service tiers.\n     */\n    defaultServiceTier?: ServiceTier;\n    /** Seeds the permission-mode picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultPermissionMode?: PermissionMode;\n    /**\n     * Seeds the environment and branch pickers from a previously submitted\n     * `NewThreadRequest.environment`. Same seed semantics as\n     * {@link defaultProviderId}: a seed the user can change, taking precedence\n     * over the composer's own environment default when provided.\n     *\n     * Round trip: feeding a submitted request's `environment` back in and\n     * resubmitting untouched reproduces an equivalent environment, with these\n     * documented limits — the composer cannot represent every args variant:\n     *\n     * - `{ type: \"project-default\" }` seeds nothing; the composer resolves its\n     *   own default and submits that concrete environment instead.\n     * - A `host` environment whose host no longer exists (or whose project has\n     *   no source on it) falls back to the composer's default host, exactly as\n     *   the primary compose surface would.\n     * - A `reuse` environment whose worktree no longer has unarchived threads\n     *   falls back the same way.\n     * - An `unmanaged` workspace's `path` has no composer control; the seeded\n     *   selection submits `path: null` (the host's configured checkout). The\n     *   composer itself never produces a non-null `path`, so real round trips\n     *   are unaffected.\n     * - A `managed-worktree` with `baseBranch: { kind: \"default\" }` leaves the\n     *   branch picker on its default, which may resolve to a named base branch\n     *   when the project configures a dedicated worktree base — the same branch\n     *   the original `default` submission would have created from.\n     */\n    defaultEnvironment?: CreateThreadEnvironmentArgs;\n    /** Seeds the draft, only while the draft is still empty. */\n    initialPrompt?: string;\n    placeholder?: string;\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the editor. */\n    focusRequest?: number;\n    className?: string;\n    /**\n     * Where the draft persists. Drafts survive reloads and are shared by every\n     * composer using the same key; defaults to a key scoped to this plugin.\n     */\n    draftKey?: string;\n    /**\n     * Fires on submit with every selection resolved. The draft clears when this\n     * resolves and is KEPT if it throws, so a failed create never loses what the\n     * user typed.\n     */\n    onSubmit: (request: NewThreadRequest) => void | Promise<void>;\n}\n/**\n * Props of the host-owned `Markdown` component — bb's chat message renderer\n * (the same typography, spacing, and code styling as timeline messages).\n * Use it wherever plugin UI quotes or previews message content so it reads\n * like the rest of the chat. Like `ThreadChat`, this is a stable product\n * capability, not a UI kit; renderer internals stay private.\n */\ninterface MarkdownProps {\n    /** Markdown source, rendered exactly like a chat message body. */\n    content: string;\n    className?: string;\n}\n/** Current app selection, derived from the route. */\ninterface BbContext {\n    projectId: string | null;\n    threadId: string | null;\n}\ninterface BbNavigate {\n    toThread(threadId: string): void;\n    toProject(projectId: string): void;\n    /**\n     * Navigate to one of this plugin's own nav panels by its `path`.\n     * `subPath` targets a location inside the panel (the component's\n     * `subPath` prop); `replace` swaps the current history entry instead of\n     * pushing — use it for redirects so back does not bounce.\n     */\n    toPluginPanel(path: string, options?: {\n        subPath?: string;\n        replace?: boolean;\n    }): void;\n    /**\n     * Navigate to the root compose surface (the new-thread screen). Pass\n     * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the\n     * composer on arrival — the pairing behind \"Create via chat\" style entry\n     * points that drop the user into chat with a prefilled prompt.\n     */\n    toCompose(options?: {\n        initialPrompt?: string;\n        focusPrompt?: boolean;\n    }): void;\n    /**\n     * Open one of this plugin's registered thread-panel actions in the current\n     * thread surface. Returns false when the surface has no thread side panel or\n     * the action is unavailable.\n     */\n    openThreadPanel(options: {\n        actionId: string;\n        title?: string;\n        params?: JsonValue;\n    }): boolean;\n}\n/**\n * Everything `@get-bb/plugin-sdk/app` resolves to at runtime. The BB app builds\n * the real implementation and `satisfies` this interface; `bb plugin build`\n * shims the specifier to that object on `globalThis.__bbPluginRuntime`.\n */\ninterface PluginSdkApp {\n    definePluginApp(setup: PluginAppSetup): PluginAppDefinition;\n    useRpc<Contract extends PluginRpcContract = PluginRpcContract>(): PluginRpcClient<Contract>;\n    useRealtime(channel: string, handler: (payload: unknown) => void): void;\n    /**\n     * Observe the same shared connection that delivers `useRealtime` signals.\n     * Use a subsequent transition to `connected` to reconcile server state that\n     * may have changed while ephemeral signals could not be delivered. The first\n     * connection can transition from `connecting` and is not a reconnection.\n     */\n    useRealtimeConnectionState(): PluginRealtimeConnectionState;\n    useSettings(): PluginSettingsState;\n    useBbContext(): BbContext;\n    useBbNavigate(): BbNavigate;\n    useComposer(): PluginComposerApi;\n    /**\n     * The sidebar's live thread view (see {@link PluginSidebarThreadsState}).\n     * Reads the host's own cache and realtime subscriptions, so it costs no\n     * extra request and updates exactly when the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreads(): PluginSidebarThreadsState;\n    /**\n     * Thread actions bound to the host's mutations (see\n     * {@link PluginSidebarThreadActions}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadActions(): PluginSidebarThreadActions;\n    /**\n     * The pull request for one thread's branch (see\n     * {@link PluginSidebarThreadPullRequestState}).\n     *\n     * Per row and opt-in, because it costs a git-host lookup: it is NOT on the\n     * thread payload every sidebar loads. Threads sharing an environment share\n     * one query, and the host owns the polling and staleness rules — an open PR\n     * with pending checks refreshes, a merged one does not.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadPullRequest(threadId: string): PluginSidebarThreadPullRequestState;\n    /**\n     * Per-row drag-to-split support (see {@link PluginSidebarThreadSplit}).\n     * Call it once per rendered row, like the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadSplit(threadId: string): PluginSidebarThreadSplit;\n    /**\n     * The host-owned chat component (see {@link ThreadChatProps}). Together\n     * with `Markdown`, the only components the SDK ships — everything else\n     * stays vendored per §5.5.\n     */\n    ThreadChat: ComponentType<ThreadChatProps>;\n    /**\n     * The host-owned chat-message markdown renderer (see\n     * {@link MarkdownProps}).\n     */\n    Markdown: ComponentType<MarkdownProps>;\n    /**\n     * The host-owned new-thread compose surface (see\n     * {@link NewThreadComposerProps}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_NewThreadComposer: ComponentType<NewThreadComposerProps>;\n    useComposerView(): ComposerView;\n}\n\ninterface EnvironmentActionArgs {\n    environmentId: string;\n}\ninterface EnvironmentGetArgs extends EnvironmentActionArgs {\n    signal?: AbortSignal;\n}\ntype EnvironmentMergeBaseBranchUpdateValue = Exclude<UpdateEnvironmentRequest[\"mergeBaseBranch\"], undefined>;\ntype EnvironmentNameUpdateValue = Exclude<UpdateEnvironmentRequest[\"name\"], undefined>;\ninterface EnvironmentMergeBaseBranchUpdate {\n    mergeBaseBranch: EnvironmentMergeBaseBranchUpdateValue;\n    name?: EnvironmentNameUpdateValue;\n}\ninterface EnvironmentNameUpdate {\n    mergeBaseBranch?: EnvironmentMergeBaseBranchUpdateValue;\n    name: EnvironmentNameUpdateValue;\n}\ntype EnvironmentUpdateFields = EnvironmentMergeBaseBranchUpdate | EnvironmentNameUpdate;\ntype EnvironmentUpdateArgs = EnvironmentUpdateFields & {\n    environmentId: string;\n};\ninterface EnvironmentStatusArgs extends EnvironmentStatusQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ntype EnvironmentDiffArgs = EnvironmentDiffQuery & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ntype EnvironmentDiffFileArgs = EnvironmentDiffFileQuery & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ninterface EnvironmentDiffBranchesArgs extends EnvironmentDiffBranchesQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ninterface EnvironmentCommitArgs {\n    environmentId: string;\n}\ninterface EnvironmentSquashMergeArgs {\n    environmentId: string;\n    mergeBaseBranch: string;\n}\ninterface EnvironmentPullRequestMergeArgs {\n    environmentId: string;\n    method: PullRequestMergeMethod;\n}\ntype EnvironmentDiffPatchArgs = EnvironmentDiffPatchRequest & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ninterface EnvironmentPathsArgs extends EnvironmentPathsQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ntype EnvironmentArchiveThreadsResult = EnvironmentArchiveThreadsResponse;\ntype EnvironmentCommitResult = CommitActionResponse;\ntype EnvironmentDiffResult = EnvironmentDiffResponse;\ntype EnvironmentDiffBranchesResult = EnvironmentDiffBranchesResponse;\ntype EnvironmentDiffFileResult = EnvironmentDiffFileResponse;\ntype EnvironmentDiffFilesResult = EnvironmentDiffFilesResponse;\ntype EnvironmentDiffPatchResult = EnvironmentDiffPatchResponse;\ntype EnvironmentGetResult = Environment;\ntype EnvironmentMarkPullRequestDraftResult = PullRequestDraftActionResponse;\ntype EnvironmentMarkPullRequestReadyResult = PullRequestReadyActionResponse;\ntype EnvironmentMergePullRequestResult = PullRequestMergeActionResponse;\ntype EnvironmentPathsResult = WorkspacePathListResponse;\ntype EnvironmentPullRequestResult = EnvironmentPullRequestResponse;\ntype EnvironmentSquashMergeResult = SquashMergeActionResponse;\ntype EnvironmentStatusResult = EnvironmentStatusResponse;\ntype EnvironmentUpdateResult = Environment;\ninterface EnvironmentsArea {\n    archiveThreads(args: EnvironmentActionArgs): Promise<EnvironmentArchiveThreadsResult>;\n    commit(args: EnvironmentCommitArgs): Promise<EnvironmentCommitResult>;\n    diff(args: EnvironmentDiffArgs): Promise<EnvironmentDiffResult>;\n    diffBranches(args: EnvironmentDiffBranchesArgs): Promise<EnvironmentDiffBranchesResult>;\n    diffFile(args: EnvironmentDiffFileArgs): Promise<EnvironmentDiffFileResult>;\n    diffFiles(args: EnvironmentDiffArgs): Promise<EnvironmentDiffFilesResult>;\n    diffPatch(args: EnvironmentDiffPatchArgs): Promise<EnvironmentDiffPatchResult>;\n    get(args: EnvironmentGetArgs): Promise<EnvironmentGetResult>;\n    pullRequest(args: EnvironmentGetArgs): Promise<EnvironmentPullRequestResult>;\n    markPullRequestDraft(args: EnvironmentActionArgs): Promise<EnvironmentMarkPullRequestDraftResult>;\n    markPullRequestReady(args: EnvironmentActionArgs): Promise<EnvironmentMarkPullRequestReadyResult>;\n    mergePullRequest(args: EnvironmentPullRequestMergeArgs): Promise<EnvironmentMergePullRequestResult>;\n    paths(args: EnvironmentPathsArgs): Promise<EnvironmentPathsResult>;\n    squashMerge(args: EnvironmentSquashMergeArgs): Promise<EnvironmentSquashMergeResult>;\n    status(args: EnvironmentStatusArgs): Promise<EnvironmentStatusResult>;\n    update(args: EnvironmentUpdateArgs): Promise<EnvironmentUpdateResult>;\n}\n\n/**\n * Host file primitives. `hostId` may be omitted to target the server's\n * primary (local) host. `rootPath`, when set, confines the target beneath\n * that absolute root on the host (symlink-safe).\n */\ninterface FileReadArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    signal?: AbortSignal;\n}\ninterface FileWriteArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    content: string;\n    /** Defaults to \"utf8\". */\n    contentEncoding?: \"utf8\" | \"base64\";\n    /** Defaults to false. */\n    createParents?: boolean;\n    /**\n     * Optimistic-concurrency guard: omitted → unconditional write; a hash →\n     * write only when the current content hashes to it (use `read().sha256`);\n     * null → create-only. A failed guard resolves to the `conflict` outcome.\n     */\n    expectedSha256?: string | null;\n    /** POSIX permission bits used when creating a file (for example 0o600). */\n    mode?: number;\n}\ninterface FileListArgs {\n    hostId?: string;\n    path: string;\n    query?: string;\n    limit?: number;\n    signal?: AbortSignal;\n}\ninterface PathListArgs extends FileListArgs {\n    includeFiles: boolean;\n    includeDirectories: boolean;\n}\ninterface FileMkdirArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    recursive?: boolean;\n}\ninterface FileMoveArgs {\n    hostId?: string;\n    sourcePath: string;\n    destinationPath: string;\n    rootPath?: string;\n}\ninterface FileRemoveArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    recursive?: boolean;\n}\ninterface FilePreviewArgs {\n    hostId?: string;\n    rootPath: string;\n    signal?: AbortSignal;\n    ttlMs?: number;\n}\ntype FileReadResult = HostFileReadResponse;\ntype FileWriteResult = HostFileWriteResponse;\ntype FileListResult = HostFileListResponse;\ntype PathListResult = HostPathListResponse;\ntype FileMkdirResult = HostMkdirResponse;\ntype FileMoveResult = HostMovePathResponse;\ntype FileRemoveResult = HostRemovePathResponse;\ntype FilePreviewResult = CreateFilePreviewResponse;\ninterface FilesArea {\n    read(args: FileReadArgs): Promise<FileReadResult>;\n    write(args: FileWriteArgs): Promise<FileWriteResult>;\n    list(args: FileListArgs): Promise<FileListResult>;\n    listPaths(args: PathListArgs): Promise<PathListResult>;\n    mkdir(args: FileMkdirArgs): Promise<FileMkdirResult>;\n    move(args: FileMoveArgs): Promise<FileMoveResult>;\n    remove(args: FileRemoveArgs): Promise<FileRemoveResult>;\n    createPreview(args: FilePreviewArgs): Promise<FilePreviewResult>;\n}\n\ninterface GuideRenderArgs {\n    chapter?: string;\n}\ninterface GuideRenderResult {\n    chapter?: string;\n    content: string;\n}\ninterface GuideArea {\n    render(args?: GuideRenderArgs): GuideRenderResult;\n}\n\ninterface HostGetArgs {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostDeleteArgs {\n    hostId: string;\n}\ninterface HostUpdateArgs extends UpdateHostRequest {\n    hostId: string;\n}\ninterface HostRetryUpdateArgs {\n    hostId: string;\n}\ninterface HostDirectoryArgs extends HostDirectoryQuery {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostCloneDefaultPathArgs extends HostCloneDefaultPathQuery {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostPathsExistArgs extends HostPathsExistRequest {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostPickFolderArgs extends HostPickFolderRequest {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostProviderCliInstallArgs extends HostProviderCliInstallRequest {\n    hostId: string;\n}\ninterface HostListArgs {\n    signal?: AbortSignal;\n}\ntype HostCreateJoinCodeResult = CreateHostJoinCodeResponse;\ntype HostDeleteResult = {\n    ok: true;\n};\ntype HostDirectoryResult = HostDirectoryListing;\ntype HostGetResult = Host;\ntype HostCloneDefaultPathResult = HostCloneDefaultPathResponse;\ntype HostProviderCliInstallResult = HostProviderCliInstallEvent[];\ntype HostListResult = Host[];\ntype HostPathsExistResult = HostPathsExistResponse;\ntype HostPickFolderResult = HostPickFolderResponse;\ntype HostProviderCliStatusResult = HostProviderCliStatusResponse;\ntype HostRetryUpdateResult = HostRetryUpdateResponse;\ntype HostUpdateResult = Host;\ninterface HostsArea {\n    createJoinCode(): Promise<HostCreateJoinCodeResult>;\n    delete(args: HostDeleteArgs): Promise<HostDeleteResult>;\n    directory(args: HostDirectoryArgs): Promise<HostDirectoryResult>;\n    get(args: HostGetArgs): Promise<HostGetResult>;\n    cloneDefaultPath(args: HostCloneDefaultPathArgs): Promise<HostCloneDefaultPathResult>;\n    installProviderCli(args: HostProviderCliInstallArgs): Promise<HostProviderCliInstallResult>;\n    list(args?: HostListArgs): Promise<HostListResult>;\n    pathsExist(args: HostPathsExistArgs): Promise<HostPathsExistResult>;\n    pickFolder(args: HostPickFolderArgs): Promise<HostPickFolderResult>;\n    providerCliStatus(args: HostGetArgs): Promise<HostProviderCliStatusResult>;\n    retryUpdate(args: HostRetryUpdateArgs): Promise<HostRetryUpdateResult>;\n    update(args: HostUpdateArgs): Promise<HostUpdateResult>;\n}\n\ninterface ProjectListArgs {\n    include?: ProjectListQuery[\"include\"];\n    /** Include the singleton personal project. Defaults to false for compatibility. */\n    includePersonal?: boolean;\n    signal?: AbortSignal;\n}\ninterface ProjectCreateArgs extends CreateProjectRequest {\n}\ninterface ProjectGetArgs {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectUpdateArgs extends UpdateProjectRequest {\n    projectId: string;\n}\ninterface ProjectDeleteArgs {\n    projectId: string;\n}\ninterface ProjectReorderArgs extends ReorderProjectRequest {\n    projectId: string;\n}\ninterface ProjectPromptHistoryArgs extends PromptHistoryQuery {\n    projectId: string;\n    signal?: AbortSignal;\n}\n/** Select one project workspace source, or omit both for the primary host. */\ntype ProjectWorkspaceRoutingArgs = {\n    environmentId: string;\n    hostId?: never;\n} | {\n    environmentId?: never;\n    hostId: string;\n} | {\n    environmentId?: never;\n    hostId?: never;\n};\ntype ProjectFilesArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectFilesQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectPathsArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectPathsQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectCommandsArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectCommandsQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectFileContentArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectFileContentQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ninterface ProjectBranchesArgs extends ProjectBranchesQuery {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectDefaultExecutionOptionsArgs {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectAttachmentFileLike {\n    arrayBuffer(): Promise<ArrayBuffer>;\n    readonly name: string;\n    readonly type?: string;\n}\ninterface ProjectAttachmentUploadArgsBase {\n    /** MIME override. Omit to use the File/Blob type, when available. */\n    mimeType?: string;\n    projectId: string;\n}\n/**\n * Upload bytes owned by this SDK client. A bare Blob/byte buffer needs an\n * explicit filename; File-like values can supply their own name.\n */\ntype ProjectAttachmentUploadArgs = ProjectAttachmentUploadArgsBase & ({\n    clientFile: ProjectAttachmentFileLike;\n    filename?: string;\n} | {\n    clientFile: ArrayBuffer | Blob | Uint8Array;\n    filename: string;\n});\ninterface ProjectAttachmentReadArgs {\n    path: string;\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectAttachmentCopyArgs extends CopyProjectAttachmentsRequest {\n    projectId: string;\n}\ntype ProjectSourceAddArgs = CreateProjectSourceRequest & {\n    projectId: string;\n};\ninterface ProjectSourceUpdateArgs extends UpdateProjectSourceRequest {\n    projectId: string;\n    sourceId: string;\n}\ninterface ProjectSourceDeleteArgs {\n    projectId: string;\n    sourceId: string;\n}\ntype ProjectBranchesResult = ProjectBranchesResponse;\ninterface ProjectAttachmentReadResult {\n    bytes: Uint8Array;\n    mimeType: string;\n    sizeBytes: number;\n}\ntype ProjectAttachmentUploadResult = UploadedPromptAttachment;\ntype ProjectCommandsResult = CommandListResponse;\ntype ProjectCreateResult = ProjectResponse;\ntype ProjectDefaultExecutionOptionsResult = ProjectExecutionDefaults | null;\ntype ProjectDeleteResult = {\n    ok: true;\n};\ninterface ProjectFileContentResult {\n    /** UTF-8 text or base64, as selected by `contentEncoding`. */\n    content: string;\n    contentEncoding: \"utf8\" | \"base64\";\n    mimeType: string;\n    sizeBytes: number;\n}\ntype ProjectFilesResult = WorkspaceFileListResponse;\ntype ProjectGetResult = ProjectResponse;\ntype ProjectListResult = ProjectResponse[] | ProjectWithThreadsResponse[];\ntype ProjectPathsResult = WorkspacePathListResponse;\ntype ProjectPromptHistoryResult = PromptHistoryResponse;\ntype ProjectReorderResult = ProjectResponse[];\ntype ProjectSourceAddResult = ProjectSource;\ntype ProjectSourceDeleteResult = {\n    ok: true;\n};\ntype ProjectSourceUpdateResult = ProjectSource;\ntype ProjectUpdateResult = ProjectResponse;\ninterface ProjectSourcesArea {\n    add(args: ProjectSourceAddArgs): Promise<ProjectSourceAddResult>;\n    delete(args: ProjectSourceDeleteArgs): Promise<ProjectSourceDeleteResult>;\n    update(args: ProjectSourceUpdateArgs): Promise<ProjectSourceUpdateResult>;\n}\ninterface ProjectAttachmentsArea {\n    copy(args: ProjectAttachmentCopyArgs): Promise<void>;\n    read(args: ProjectAttachmentReadArgs): Promise<ProjectAttachmentReadResult>;\n    upload(args: ProjectAttachmentUploadArgs): Promise<ProjectAttachmentUploadResult>;\n}\ninterface ProjectsArea {\n    attachments: ProjectAttachmentsArea;\n    branches(args: ProjectBranchesArgs): Promise<ProjectBranchesResult>;\n    commands(args: ProjectCommandsArgs): Promise<ProjectCommandsResult>;\n    create(args: ProjectCreateArgs): Promise<ProjectCreateResult>;\n    defaultExecutionOptions(args: ProjectDefaultExecutionOptionsArgs): Promise<ProjectDefaultExecutionOptionsResult>;\n    delete(args: ProjectDeleteArgs): Promise<ProjectDeleteResult>;\n    fileContent(args: ProjectFileContentArgs): Promise<ProjectFileContentResult>;\n    files(args: ProjectFilesArgs): Promise<ProjectFilesResult>;\n    get(args: ProjectGetArgs): Promise<ProjectGetResult>;\n    list(args?: ProjectListArgs): Promise<ProjectListResult>;\n    paths(args: ProjectPathsArgs): Promise<ProjectPathsResult>;\n    promptHistory(args: ProjectPromptHistoryArgs): Promise<ProjectPromptHistoryResult>;\n    reorder(args: ProjectReorderArgs): Promise<ProjectReorderResult>;\n    sources: ProjectSourcesArea;\n    update(args: ProjectUpdateArgs): Promise<ProjectUpdateResult>;\n}\n\n/** Select exactly one provider-discovery host source, or omit both for primary. */\ntype ProviderHostRoutingArgs = {\n    environmentId: string;\n    hostId?: never;\n} | {\n    environmentId?: never;\n    hostId: string;\n} | {\n    environmentId?: never;\n    hostId?: never;\n};\ntype ProviderListArgs = ProviderHostRoutingArgs & {\n    signal?: AbortSignal;\n};\ntype ProviderModelsArgs = ProviderHostRoutingArgs & {\n    providerId?: string;\n    signal?: AbortSignal;\n};\ntype ProviderListResult = ProviderInfo[];\ntype ProviderModelsResult = SystemExecutionOptionsResponse;\ninterface ProvidersArea {\n    /** List providers on the environment host, explicit host, or primary host. */\n    list(args?: ProviderListArgs): Promise<ProviderListResult>;\n    /** List models on the environment host, explicit host, or primary host. */\n    models(args?: ProviderModelsArgs): Promise<ProviderModelsResult>;\n}\n\ninterface PluginIdArgs {\n    pluginId: string;\n}\n/** Install directly from a path:, git:, npm:, or builtin: source spec. */\ninterface PluginInstallArgs {\n    /**\n     * `path:<dir>`, `builtin:<name>`, `npm:<package>[@<version|tag|range>]`, or\n     * `git:<url>[@<spec>]`. A git spec is one ref, or a semver range resolved\n     * over the repository's `[<tagPrefix>]vX.Y.Z` release tags:\n     * `git:<url>@semver:<range>` and `git:<url>@semver:<tagPrefix>:<range>` say\n     * range explicitly, `git:<url>@ref:<name>` says ref explicitly, and a bare\n     * `^1.2.0` resolves over tags unless the repository also has a ref of that\n     * literal name (which is refused as ambiguous).\n     */\n    source: string;\n    /**\n     * Directory of a multi-plugin repository to install, relative to the\n     * repository root (`git:` and `path:` sources only).\n     */\n    subdirectory?: string;\n    /**\n     * Name of a `.bb/plugins.json` collection entry to install, resolved to its\n     * directory in the repository. Mutually exclusive with `subdirectory`.\n     */\n    plugin?: string;\n}\n/** Install a catalog entry, from BB's official catalog or another marketplace. */\ninterface PluginCatalogInstallArgs {\n    entryId: string;\n    /**\n     * Marketplace that lists the entry. Omitted resolves across every\n     * marketplace: exactly one match installs, none falls back to the bundled\n     * official plugin of that name, and several are refused as ambiguous.\n     */\n    marketplace?: string;\n    /**\n     * Source facts returned by installPlan for a third-party entry. The server\n     * refuses the install when the listing or its git commit changed afterward.\n     */\n    confirmedSource?: PluginCatalogResolvedSource;\n}\n/** Ask what an install would do before confirming it. */\ninterface PluginCatalogInstallPlanArgs {\n    entryId: string;\n    marketplace?: string;\n    signal?: AbortSignal;\n}\n/** Add a marketplace by `https:` manifest URL, `git:<url>[@ref]`, or `path:<dir>`. */\ninterface PluginMarketplaceAddArgs {\n    source: string;\n}\ninterface PluginMarketplaceListArgs {\n    signal?: AbortSignal;\n}\ninterface PluginMarketplaceRefreshArgs {\n    /** One marketplace to refresh; omitted refreshes every one of them. */\n    name?: string;\n    signal?: AbortSignal;\n}\ninterface PluginMarketplaceRemoveArgs {\n    name: string;\n}\ninterface PluginReloadArgs {\n    pluginId?: string;\n}\ninterface PluginSettingsUpdateArgs extends PluginIdArgs {\n    values: Record<string, JsonValue$1>;\n}\ninterface PluginTokenArgs extends PluginIdArgs {\n    rotate?: boolean;\n}\ninterface PluginCheckUpdatesArgs {\n    pluginId?: string;\n    signal?: AbortSignal;\n}\ninterface PluginRpcArgs<TOutput> extends PluginIdArgs {\n    input?: JsonValue$1;\n    method: string;\n    outputSchema: z$1.ZodType<TOutput>;\n}\ninterface PluginCatalogSearchArgs {\n    query: string;\n    signal?: AbortSignal;\n}\ninterface PluginCatalogStatusArgs {\n    signal?: AbortSignal;\n}\ninterface PluginGetSettingsArgs extends PluginIdArgs {\n    signal?: AbortSignal;\n}\ninterface PluginGetSourceArgs extends PluginIdArgs {\n    signal?: AbortSignal;\n}\ninterface PluginListArgs {\n    signal?: AbortSignal;\n}\ninterface PluginListUpdateResultsArgs {\n    signal?: AbortSignal;\n}\ntype PluginDisableResult = InstalledPlugin;\ntype PluginEnableResult = InstalledPlugin;\ntype PluginGetSettingsResult = PluginSettingsResponse;\ntype PluginInstallResult = InstalledPlugin;\ntype PluginListResult = PluginListResponse;\ntype PluginReloadResult = PluginReloadResponse;\ntype PluginRemoveResult = PluginRemoveResponse;\ntype PluginTokenResult = PluginTokenResponse;\ntype PluginUpdateSettingsResult = PluginSettingsResponse;\ntype PluginGetSourceResult = PluginSourceDetail;\ntype PluginCheckUpdatesResult = PluginUpdateCheckEntry[];\ntype PluginApplyUpdateResult = PluginApplyUpdateResult$1;\ntype PluginCatalogStatusResult = PluginCatalogStatus;\ntype PluginCatalogSearchResult = PluginCatalogSearchResult$1[];\ntype PluginCatalogInstallPlanResult = PluginCatalogInstallPlan;\ntype PluginMarketplaceListResult = PluginMarketplace[];\ntype PluginMarketplaceAddResult = PluginMarketplace;\ntype PluginMarketplaceRefreshResult = PluginMarketplaceRefreshResult$1[];\ninterface PluginMarketplaceRemoveResult {\n    /** Installs whose provenance became `direct`; they keep running as before. */\n    convertedPluginIds: string[];\n}\ninterface PluginCatalogArea {\n    install(args: PluginCatalogInstallArgs): Promise<PluginInstallResult>;\n    /** The true resolved source an install would use, before anything runs. */\n    installPlan(args: PluginCatalogInstallPlanArgs): Promise<PluginCatalogInstallPlanResult>;\n    search(args: PluginCatalogSearchArgs): Promise<PluginCatalogSearchResult>;\n    status(args?: PluginCatalogStatusArgs): Promise<PluginCatalogStatusResult>;\n}\n/** Registered marketplaces. Adding one installs nothing; removing one uninstalls nothing. */\ninterface PluginMarketplacesArea {\n    add(args: PluginMarketplaceAddArgs): Promise<PluginMarketplaceAddResult>;\n    list(args?: PluginMarketplaceListArgs): Promise<PluginMarketplaceListResult>;\n    refresh(args?: PluginMarketplaceRefreshArgs): Promise<PluginMarketplaceRefreshResult>;\n    remove(args: PluginMarketplaceRemoveArgs): Promise<PluginMarketplaceRemoveResult>;\n}\ninterface PluginsArea {\n    applyUpdate(args: PluginIdArgs): Promise<PluginApplyUpdateResult>;\n    callRpc<TOutput>(args: PluginRpcArgs<TOutput>): Promise<TOutput>;\n    checkUpdates(args?: PluginCheckUpdatesArgs): Promise<PluginCheckUpdatesResult>;\n    catalog: PluginCatalogArea;\n    marketplaces: PluginMarketplacesArea;\n    disable(args: PluginIdArgs): Promise<PluginDisableResult>;\n    enable(args: PluginIdArgs): Promise<PluginEnableResult>;\n    getSettings(args: PluginGetSettingsArgs): Promise<PluginGetSettingsResult>;\n    getSource(args: PluginGetSourceArgs): Promise<PluginGetSourceResult>;\n    install(args: PluginInstallArgs): Promise<PluginInstallResult>;\n    list(args?: PluginListArgs): Promise<PluginListResult>;\n    listUpdateResults(args?: PluginListUpdateResultsArgs): Promise<PluginCheckUpdatesResult>;\n    reload(args?: PluginReloadArgs): Promise<PluginReloadResult>;\n    remove(args: PluginIdArgs): Promise<PluginRemoveResult>;\n    token(args: PluginTokenArgs): Promise<PluginTokenResult>;\n    updateSettings(args: PluginSettingsUpdateArgs): Promise<PluginUpdateSettingsResult>;\n}\n\ntype BbRealtimeUnsubscribe = () => void;\ntype BbRealtimeEventName = \"thread:changed\" | \"project:changed\" | \"environment:changed\" | \"host:changed\" | \"system:changed\" | \"system:config-changed\" | \"realtime:connection\";\ntype ThreadRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"thread\";\n}>;\ntype ProjectRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"project\";\n}>;\ntype EnvironmentRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"environment\";\n}>;\ntype HostRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"host\";\n}>;\ntype SystemRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"system\";\n}>;\ntype BbRealtimeConnectionState = \"connecting\" | \"connected\" | \"disconnected\";\ninterface BbRealtimeConnectionEvent {\n    reconnectDelayMs: number | null;\n    reconnected: boolean;\n    state: BbRealtimeConnectionState;\n}\n/**\n * Entity-changed events are delivered as one shared object to every matching\n * listener; their payload types are readonly so a listener cannot mutate what\n * the next listener receives.\n */\ninterface BbRealtimeEventMap {\n    \"thread:changed\": ThreadRealtimeEvent;\n    \"project:changed\": ProjectRealtimeEvent;\n    \"environment:changed\": EnvironmentRealtimeEvent;\n    \"host:changed\": HostRealtimeEvent;\n    \"system:changed\": SystemRealtimeEvent;\n    \"system:config-changed\": SystemRealtimeEvent;\n    \"realtime:connection\": BbRealtimeConnectionEvent;\n}\ntype BbRealtimeCallback<TEventName extends BbRealtimeEventName> = (event: BbRealtimeEventMap[TEventName]) => void;\ninterface ThreadRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"thread:changed\">;\n    event: \"thread:changed\";\n    threadId?: string;\n}\ninterface ProjectRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"project:changed\">;\n    event: \"project:changed\";\n    projectId?: string;\n}\ninterface EnvironmentRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"environment:changed\">;\n    environmentId?: string;\n    event: \"environment:changed\";\n}\ninterface HostRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"host:changed\">;\n    event: \"host:changed\";\n    hostId?: string;\n}\ninterface SystemRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"system:changed\">;\n    event: \"system:changed\";\n}\ninterface SystemConfigRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"system:config-changed\">;\n    event: \"system:config-changed\";\n}\n/**\n * Connection listeners are pure observers — they never open or hold the\n * socket. A listener registered while a socket already exists receives the\n * latest connection event as a snapshot on the next microtask, so a status\n * UI mounted after connect still learns the current state.\n */\ninterface RealtimeConnectionSubscribeArgs {\n    callback: BbRealtimeCallback<\"realtime:connection\">;\n    event: \"realtime:connection\";\n}\ntype BbRealtimeSubscribeArgsUnion = ThreadRealtimeSubscribeArgs | ProjectRealtimeSubscribeArgs | EnvironmentRealtimeSubscribeArgs | HostRealtimeSubscribeArgs | SystemRealtimeSubscribeArgs | SystemConfigRealtimeSubscribeArgs | RealtimeConnectionSubscribeArgs;\ntype BbRealtimeSubscribeArgs<TEventName extends BbRealtimeEventName = BbRealtimeEventName> = Extract<BbRealtimeSubscribeArgsUnion, {\n    event: TEventName;\n}>;\ninterface BbRealtime {\n    subscribe<TEventName extends BbRealtimeEventName>(args: BbRealtimeSubscribeArgs<TEventName>): BbRealtimeUnsubscribe;\n}\n\ninterface StatusGetArgs {\n    projectId?: string;\n    signal?: AbortSignal;\n    threadId?: string;\n}\ninterface StatusThreadSummary {\n    environmentId: string | null;\n    id: string;\n    parentThreadId: string | null;\n    pinnedAt: number | null;\n    projectId: string;\n    status: ThreadStatus;\n    title: string | null;\n}\ntype StatusProject = ProjectResponse;\ntype StatusChildThreads = ThreadListResponse;\ninterface StatusResult {\n    childThreads: StatusChildThreads | null;\n    pendingTodos: ThreadTimelinePendingTodos | null;\n    project: StatusProject | null;\n    thread: StatusThreadSummary | null;\n}\ninterface StatusArea {\n    get(args?: StatusGetArgs): Promise<StatusResult>;\n}\n\ninterface SkillWorkspaceArgs {\n    projectId: string;\n    environmentId: string | null;\n}\ninterface SkillListArgs extends SkillWorkspaceArgs {\n    signal?: AbortSignal;\n}\ninterface SkillIdentityArgs extends SkillListArgs {\n    skillId: string;\n}\ninterface SkillContentArgs extends SkillIdentityArgs {\n    path: string;\n}\ninterface SkillUpdateArgs extends SkillWorkspaceArgs {\n    skillId: string;\n    content: string;\n    revision: string;\n}\ninterface SkillDeleteArgs extends SkillWorkspaceArgs {\n    skillId: string;\n}\n/**\n * Registry calls proxy out to skills.sh and GitHub, and the browse grid fans\n * out one per card. Callers pass their query's AbortSignal so abandoning a\n * page cancels its requests instead of leaving them in flight.\n */\ninterface AbortableArgs {\n    signal?: AbortSignal;\n}\ninterface RegistrySkillsSearchArgs extends AbortableArgs {\n    query?: string;\n    page?: number;\n    perPage?: number;\n}\ninterface RegistrySkillIdArgs extends AbortableArgs {\n    registrySkillId: string;\n}\ninterface RegistrySkillEntriesArgs extends AbortableArgs {\n    registrySkillIds: readonly string[];\n}\ninterface RegistrySkillSourceArgs extends AbortableArgs {\n    source: string;\n    skillId: string;\n}\ninterface RegistryRepositoryArgs extends AbortableArgs {\n    source: string;\n}\n/**\n * Install is a mutation and deliberately takes no signal: its body is parsed\n * with a strict schema, so an extra key would throw at runtime.\n */\ninterface RegistrySkillInstallArgs {\n    registrySkillId: string;\n}\ninterface SkillsRegistryArea {\n    detail(args: RegistrySkillSourceArgs): Promise<RegistrySkillDetail>;\n    entries(args: RegistrySkillEntriesArgs): Promise<RegistrySkillEntriesResponse>;\n    get(args: RegistrySkillIdArgs): Promise<RegistrySkill>;\n    install(args: RegistrySkillInstallArgs): Promise<RegistrySkillInstallResponse>;\n    repositoryStars(args: RegistryRepositoryArgs): Promise<RegistryRepositoryStars>;\n    search(args?: RegistrySkillsSearchArgs): Promise<RegistrySkillsPage>;\n}\ninterface SkillsArea {\n    getContent(args: SkillContentArgs): Promise<SkillContentResponse>;\n    list(args: SkillListArgs): Promise<SkillListResponse>;\n    listFiles(args: SkillIdentityArgs): Promise<SkillFilesResponse>;\n    registry: SkillsRegistryArea;\n    remove(args: SkillDeleteArgs): Promise<{\n        deletedPath: string;\n    }>;\n    update(args: SkillUpdateArgs): Promise<{\n        filePath: string;\n        revision: string;\n    }>;\n}\n\ntype ThemeGetResult = AppTheme;\ntype ThemeCatalogResult = ThemeCatalogResponse;\ntype ThemeSetInput = AppThemeSelection;\ntype ThemeSetResult = AppTheme;\ninterface ThemeCatalogArgs {\n    signal?: AbortSignal;\n}\ninterface ThemeGetArgs {\n    signal?: AbortSignal;\n}\ninterface ThemeArea {\n    /** The active app palette, resolved server-side (built-in id or custom CSS). */\n    get(args?: ThemeGetArgs): Promise<ThemeGetResult>;\n    /** The custom-theme directory plus discovered themes and the active palette. */\n    catalog(args?: ThemeCatalogArgs): Promise<ThemeCatalogResult>;\n    /** Set the complete app appearance selection in one request. */\n    set(selection: ThemeSetInput): Promise<ThemeSetResult>;\n    /**\n     * Activate a palette by id while preserving the active favicon color. This\n     * compatibility shorthand reads the active appearance before writing the\n     * complete selection; prefer the object form when both values are known.\n     */\n    set(themeId: string): Promise<ThemeSetResult>;\n}\n\ninterface SystemAttentionArgs {\n    signal?: AbortSignal;\n}\ninterface SystemConfigArgs {\n    signal?: AbortSignal;\n}\ninterface SystemExecutionOptionsArgs extends SystemExecutionOptionsQuery {\n    signal?: AbortSignal;\n}\ninterface SystemUsageLimitsArgs extends SystemUsageLimitsQuery {\n    signal?: AbortSignal;\n}\ninterface SystemVersionArgs {\n    force?: boolean;\n    signal?: AbortSignal;\n}\ninterface SystemVoiceTranscriptionArgs {\n    file: Blob;\n    prompt?: string;\n    signal?: AbortSignal;\n}\ntype SystemAttentionResult = SystemAttentionResponse;\ntype SystemConfigResult = SystemConfigResponse;\ntype SystemExecutionOptionsResult = SystemExecutionOptionsResponse;\ntype SystemReloadConfigResult = SystemConfigReloadResponse;\ntype SystemInstallCliSkillsArgs = SystemInstallCliSkillsRequest;\ninterface SystemCliSkillsStatusArgs {\n    /** Omit for every enrolled machine. */\n    hostIds?: readonly string[];\n    signal?: AbortSignal;\n}\ntype SystemCliSkillsStatusResult = SystemCliSkillsStatusResponse;\ntype SystemInstallCliSkillsResult = SystemInstallCliSkillsResponse;\ntype SystemVoiceTranscriptionResult = SystemVoiceTranscriptionResponse;\ntype SystemUpdateExperimentsResult = Experiments;\ntype SystemUpdateGeneralSettingsResult = AppSettings;\ntype SystemUpdateKeyboardSettingsResult = AppKeybindingOverrides;\ntype SystemUsageLimitsResult = ProviderUsageResponse;\ninterface SystemOnboardingArgs extends SystemProvidersQuery {\n    signal?: AbortSignal;\n}\ninterface SystemOnboardingReposArgs extends SystemOnboardingReposQuery {\n    signal?: AbortSignal;\n}\ntype SystemOnboardingAgentsResult = OnboardingAgentOverview;\ntype SystemOnboardingReposResult = DiscoverReposResult;\ntype SystemVersionResult = SystemVersionResponse;\ninterface SystemArea {\n    attention(args?: SystemAttentionArgs): Promise<SystemAttentionResult>;\n    config(args?: SystemConfigArgs): Promise<SystemConfigResult>;\n    executionOptions(args?: SystemExecutionOptionsArgs): Promise<SystemExecutionOptionsResult>;\n    /**\n     * Copy bb's built-in CLI skills into each named machine's global agent skill\n     * roots (`~/.agents/skills` and `~/.claude/skills`). Machines install\n     * independently; the result reports each machine's outcome.\n     */\n    /** Per-machine install state of bb's built-in CLI skills. */\n    cliSkillsStatus(args?: SystemCliSkillsStatusArgs): Promise<SystemCliSkillsStatusResult>;\n    installCliSkills(args: SystemInstallCliSkillsArgs): Promise<SystemInstallCliSkillsResult>;\n    reloadConfig(): Promise<SystemReloadConfigResult>;\n    transcribeVoice(args: SystemVoiceTranscriptionArgs): Promise<SystemVoiceTranscriptionResult>;\n    updateExperiments(args: Experiments): Promise<SystemUpdateExperimentsResult>;\n    updateGeneralSettings(args: AppSettings): Promise<SystemUpdateGeneralSettingsResult>;\n    updateKeyboardSettings(args: AppKeybindingOverrides): Promise<SystemUpdateKeyboardSettingsResult>;\n    /** Report one onboarding funnel event to anonymous telemetry. */\n    onboardingEvent(args: OnboardingTelemetryEvent): Promise<{\n        ok: true;\n    }>;\n    /** Live agent state for onboarding: install, auth, and plan per provider. */\n    onboardingAgents(args?: SystemOnboardingArgs): Promise<SystemOnboardingAgentsResult>;\n    /** Candidate projects discovered on the host, ranked for onboarding. */\n    onboardingRepos(args?: SystemOnboardingReposArgs): Promise<SystemOnboardingReposResult>;\n    usageLimits(args?: SystemUsageLimitsArgs): Promise<SystemUsageLimitsResult>;\n    version(args?: SystemVersionArgs): Promise<SystemVersionResult>;\n}\n\ninterface TerminalThreadScope {\n    cwd?: never;\n    environmentId?: never;\n    hostId?: never;\n    kind: \"thread\";\n    threadId: string;\n}\ninterface TerminalEnvironmentScope {\n    environmentId: string;\n    cwd?: never;\n    hostId?: never;\n    kind: \"environment\";\n    threadId?: never;\n}\ninterface TerminalHostPathListScope {\n    /** Optional exact initial working-directory filter on the selected host. */\n    cwd?: string;\n    environmentId?: never;\n    hostId: string;\n    kind: \"host_path\";\n    threadId?: never;\n}\ninterface TerminalHostPathCreateScope {\n    /** Null starts in the selected host's home directory. */\n    cwd: string | null;\n    environmentId?: never;\n    hostId: string;\n    kind: \"host_path\";\n    threadId?: never;\n}\ntype TerminalListScope = TerminalThreadScope | TerminalEnvironmentScope | TerminalHostPathListScope;\ntype TerminalCreateScope = TerminalThreadScope | TerminalEnvironmentScope | TerminalHostPathCreateScope;\ninterface TerminalListArgs {\n    signal?: AbortSignal;\n    scope: TerminalListScope;\n}\ninterface TerminalCreateArgs {\n    cols: number;\n    rows: number;\n    scope: TerminalCreateScope;\n    start?: CreateTerminalRequest[\"start\"];\n    title?: string;\n}\ninterface TerminalTargetArgs {\n    terminalId: string;\n}\ninterface TerminalGetArgs extends TerminalTargetArgs {\n    signal?: AbortSignal;\n}\ninterface TerminalRenameArgs extends TerminalTargetArgs {\n    title: UpdateTerminalRequest[\"title\"];\n}\ninterface TerminalCloseArgs extends TerminalTargetArgs {\n    mode: \"force\" | \"if-clean\";\n}\ninterface TerminalInputArgs extends TerminalTargetArgs {\n    dataBase64: TerminalInputRequest[\"dataBase64\"];\n}\ninterface TerminalResizeArgs extends TerminalTargetArgs {\n    cols: TerminalResizeRequest[\"cols\"];\n    rows: TerminalResizeRequest[\"rows\"];\n}\ninterface TerminalOutputArgs extends TerminalTargetArgs {\n    limitChunks?: TerminalOutputQuery[\"limitChunks\"];\n    signal?: AbortSignal;\n    sinceSeq?: TerminalOutputQuery[\"sinceSeq\"];\n    tailBytes?: TerminalOutputQuery[\"tailBytes\"];\n}\ntype TerminalRestartArgs = TerminalTargetArgs;\ntype TerminalListResult = TerminalListResponse;\ntype TerminalCreateResult = TerminalSession;\ntype TerminalGetResult = TerminalSession;\ntype TerminalRenameResult = TerminalSession;\ntype TerminalCloseResult = TerminalSession;\ntype TerminalInputResult = TerminalSession;\ntype TerminalResizeResult = TerminalSession;\ntype TerminalOutputResult = TerminalOutputResponse;\ntype TerminalRestartResult = TerminalSession;\ninterface TerminalsArea {\n    close(args: TerminalCloseArgs): Promise<TerminalCloseResult>;\n    create(args: TerminalCreateArgs): Promise<TerminalCreateResult>;\n    get(args: TerminalGetArgs): Promise<TerminalGetResult>;\n    input(args: TerminalInputArgs): Promise<TerminalInputResult>;\n    list(args: TerminalListArgs): Promise<TerminalListResult>;\n    output(args: TerminalOutputArgs): Promise<TerminalOutputResult>;\n    rename(args: TerminalRenameArgs): Promise<TerminalRenameResult>;\n    /**\n     * Replace a terminal with a shell at the same scope, size, and title.\n     * The server serializes concurrent restarts and opens the replacement before\n     * closing the old session, so a failed open leaves the old terminal running.\n     * The original command is not replayed because terminal sessions do not\n     * persist launch commands. The replacement has a new terminal ID.\n     */\n    restart(args: TerminalRestartArgs): Promise<TerminalRestartResult>;\n    resize(args: TerminalResizeArgs): Promise<TerminalResizeResult>;\n}\n\ninterface ThreadListArgs {\n    archived?: boolean;\n    sectionId?: string;\n    hasParent?: boolean;\n    includeHidden?: boolean;\n    limit?: number;\n    offset?: number;\n    originKind?: ThreadListQuery[\"originKind\"];\n    originPluginId?: string;\n    parentThreadId?: string;\n    projectId?: string;\n    signal?: AbortSignal;\n    sourceThreadId?: string;\n    unsectioned?: boolean;\n}\ninterface ThreadSearchArgs extends ThreadSearchQuery {\n    signal?: AbortSignal;\n}\ninterface ThreadResolveMentionsArgs extends ResolveThreadMentionsRequest {\n    signal?: AbortSignal;\n}\ninterface ThreadGetArgs {\n    include?: ThreadGetQuery[\"include\"];\n    signal?: AbortSignal;\n    threadId: string;\n}\ntype ThreadGetResult = ThreadResponse | ThreadWithIncludesResponse;\ntype ThreadListResult = ThreadListResponse;\ntype ThreadSearchResult = ThreadSearchResponse;\ntype ThreadResolveMentionsResult = ResolveThreadMentionsResponse;\ninterface ThreadOutputResponse {\n    output: string | null;\n}\ntype ThreadMutationResult = ThreadResponse;\ntype ThreadSpawnResult = ThreadResponse;\ntype ThreadForkResult = ThreadResponse;\ntype ThreadInteractionGetResult = PendingInteraction;\ntype ThreadInteractionListResult = ThreadPendingInteractionsResponse;\ntype ThreadInteractionResolveResult = PendingInteraction;\ntype ThreadInteractionRespondResult = PendingInteraction;\ntype ThreadInteractionCancelResult = PendingInteraction;\ntype ThreadEventsListResult = ThreadEventRow[];\ntype ThreadEventWaitResult = ThreadEventRow | null;\ntype ThreadTimelineResult = ThreadTimelineResponse;\ntype ThreadArchiveResult = ThreadArchiveAllResponse;\ntype ThreadOpenResult = ThreadOpenResponse;\ntype ThreadPaneActionResult = ThreadPaneActionResponse;\ntype ThreadDeleteResult = {\n    ok: true;\n};\ntype ThreadSendResult = {\n    ok: true;\n};\ntype ThreadRateLimitRecoveryResult = ProviderRateLimitRecoveryStatus;\ntype ThreadContinueAfterRateLimitResult = ContinueAfterProviderRateLimitResponse;\ntype ThreadEditMessageResult = EditMessageResponse;\ntype ThreadStopResult = {\n    ok: true;\n};\ntype ThreadCompactResult = {\n    ok: true;\n};\ntype ThreadBannerActionResult = {\n    ok: true;\n};\ntype ThreadUnarchiveResult = {\n    ok: true;\n};\ntype ThreadArchiveAllResult = ThreadArchiveAllResponse;\ntype ThreadReadStateResult = ThreadResponse;\ntype ThreadPinOrderResult = ThreadListResponse;\ntype ThreadPromptHistoryResult = PromptHistoryResponse;\ntype ThreadQueuedMessagesResult = ThreadQueuedMessageListResponse;\ntype ThreadQueuedMessageCreateResult = ThreadQueuedMessage;\ntype ThreadQueuedMessageUpdateResult = ThreadQueuedMessage;\ntype ThreadQueuedMessageDeleteResult = {\n    ok: true;\n};\ntype ThreadQueuedMessageReorderResult = ThreadQueuedMessageListResponse;\ntype ThreadQueuedMessageSendResult = SendQueuedMessageResponse;\ntype ThreadQueuedMessageGroupBoundaryResult = ThreadQueuedMessageListResponse;\ntype ThreadTabsResult = ThreadTabsResponse;\ntype ThreadTabsUpdateResult = ThreadTabsResponse;\ntype ThreadStorageFilesResult = ThreadStorageFileListResponse;\ntype ThreadStoragePathsResult = ThreadStoragePathListResponse;\ntype ThreadChildSummaryResult = ThreadChildSummaryResponse;\ntype ThreadDefaultExecutionOptionsResult = ResolvedThreadExecutionOptions | null;\ntype ThreadConversationOutlineResult = ThreadConversationOutlineResponse;\ntype ThreadTimelineTurnSummaryDetailsResult = TimelineTurnSummaryDetailsResponse;\ninterface ThreadSpawnBaseArgs extends Omit<CreateThreadRequest, \"input\" | \"origin\" | \"originKind\" | \"startedOnBehalfOf\"> {\n    origin?: CreateThreadRequest[\"origin\"];\n    originKind?: CreateThreadRequest[\"originKind\"];\n    startedOnBehalfOf?: CreateThreadRequest[\"startedOnBehalfOf\"];\n}\ntype ThreadSpawnArgs = ThreadSpawnBaseArgs & ({\n    input: CreateThreadRequest[\"input\"];\n    prompt?: never;\n} | {\n    input?: never;\n    prompt: string;\n});\ninterface ThreadForkArgs extends Omit<ForkThreadRequest, \"origin\" | \"visibility\" | \"workspace\"> {\n    origin?: ForkThreadRequest[\"origin\"];\n    visibility?: ForkThreadRequest[\"visibility\"];\n    workspace?: ForkThreadRequest[\"workspace\"];\n}\ninterface ThreadUpdateArgs extends UpdateThreadRequest {\n    threadId: string;\n}\ninterface ThreadDeleteArgs extends DeleteThreadRequest {\n    threadId: string;\n}\ninterface ThreadSendArgs extends SendMessageRequest {\n    threadId: string;\n}\ninterface ThreadEditMessageArgs extends EditMessageRequest {\n    threadId: string;\n}\ninterface ThreadActionArgs {\n    threadId: string;\n}\ninterface ThreadContinueAfterRateLimitArgs extends ThreadActionArgs {\n    failedRequestId: string;\n    mode: NonNullable<ContinueAfterProviderRateLimitRequest[\"mode\"]>;\n}\ninterface ThreadStatusArgs extends ThreadActionArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadPromptHistoryArgs extends PromptHistoryQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadPinOrderArgs extends ReorderPinnedThreadRequest {\n    threadId: string;\n}\ninterface ThreadQueuedMessageArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadQueuedMessageCreateArgs extends CreateQueuedMessageRequest {\n    threadId: string;\n}\ninterface ThreadQueuedMessageUpdateArgs extends ThreadQueuedMessageTargetArgs, UpdateQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageTargetArgs {\n    queuedMessageId: string;\n    threadId: string;\n}\ninterface ThreadQueuedMessageSendArgs extends ThreadQueuedMessageTargetArgs, SendQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageReorderArgs extends ThreadQueuedMessageTargetArgs, ReorderQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageGroupBoundaryArgs extends SetQueuedMessageGroupBoundaryRequest {\n    threadId: string;\n}\ninterface ThreadStorageFilesArgs extends ThreadStorageFilesQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadStoragePathsArgs extends ThreadStoragePathsQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadTimelineTurnSummaryDetailsArgs extends TimelineTurnSummaryDetailsQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadTabsUpdateArgs extends UpdateThreadTabsRequest {\n    threadId: string;\n}\ninterface ThreadOpenArgs {\n    threadId: string;\n    split?: ThreadOpenSplit;\n    file: ThreadOpenFile | null;\n}\ninterface ThreadPaneActionArgs {\n    action: ThreadPaneAction;\n    threadId: string;\n}\ninterface ThreadEventsListArgs {\n    afterSeq?: string;\n    limit?: string;\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadEventWaitArgs {\n    afterSeq?: string;\n    signal?: AbortSignal;\n    threadId: string;\n    type: string;\n    waitMs: string;\n}\ninterface ThreadTimelineArgs extends ThreadTimelineQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadOutputArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadInteractionListArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadInteractionTargetArgs {\n    interactionId: string;\n    threadId: string;\n}\ninterface ThreadInteractionGetArgs extends ThreadInteractionTargetArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadInteractionResolveArgs extends ThreadInteractionTargetArgs {\n    resolution: PendingInteractionResolution;\n}\ninterface ThreadInteractionRespondArgs extends ThreadInteractionTargetArgs {\n    value: JsonValue$1;\n}\ntype ThreadWaitTarget = {\n    kind: \"status\";\n    status: ThreadStatus;\n} | {\n    kind: \"event\";\n    eventType: string;\n};\ninterface ThreadWaitArgs {\n    event?: string;\n    pollIntervalMs?: number;\n    signal?: AbortSignal;\n    status?: ThreadStatus;\n    threadId: string;\n    timeoutMs?: number;\n}\ntype ThreadWaitResult = {\n    event: NonNullable<ThreadEventWaitResult>;\n    matched: true;\n    target: Extract<ThreadWaitTarget, {\n        kind: \"event\";\n    }>;\n    threadId: string;\n} | {\n    matched: true;\n    target: Extract<ThreadWaitTarget, {\n        kind: \"status\";\n    }>;\n    thread: ThreadGetResult;\n    threadId: string;\n};\ninterface ThreadInteractionsArea {\n    cancel(args: ThreadInteractionTargetArgs): Promise<ThreadInteractionCancelResult>;\n    get(args: ThreadInteractionGetArgs): Promise<ThreadInteractionGetResult>;\n    list(args: ThreadInteractionListArgs): Promise<ThreadInteractionListResult>;\n    resolve(args: ThreadInteractionResolveArgs): Promise<ThreadInteractionResolveResult>;\n    respond(args: ThreadInteractionRespondArgs): Promise<ThreadInteractionRespondResult>;\n}\ninterface ThreadEventsArea {\n    list(args: ThreadEventsListArgs): Promise<ThreadEventsListResult>;\n    wait(args: ThreadEventWaitArgs): Promise<ThreadEventWaitResult>;\n}\ninterface ThreadQueuedMessagesArea {\n    create(args: ThreadQueuedMessageCreateArgs): Promise<ThreadQueuedMessageCreateResult>;\n    delete(args: ThreadQueuedMessageTargetArgs): Promise<ThreadQueuedMessageDeleteResult>;\n    list(args: ThreadQueuedMessageArgs): Promise<ThreadQueuedMessagesResult>;\n    reorder(args: ThreadQueuedMessageReorderArgs): Promise<ThreadQueuedMessageReorderResult>;\n    send(args: ThreadQueuedMessageSendArgs): Promise<ThreadQueuedMessageSendResult>;\n    setGroupBoundary(args: ThreadQueuedMessageGroupBoundaryArgs): Promise<ThreadQueuedMessageGroupBoundaryResult>;\n    update(args: ThreadQueuedMessageUpdateArgs): Promise<ThreadQueuedMessageUpdateResult>;\n}\ninterface ThreadTabsArea {\n    get(args: ThreadStatusArgs): Promise<ThreadTabsResult>;\n    update(args: ThreadTabsUpdateArgs): Promise<ThreadTabsUpdateResult>;\n}\ninterface ThreadsArea {\n    archive(args: ThreadActionArgs): Promise<ThreadArchiveResult>;\n    archiveAll(args: ThreadActionArgs): Promise<ThreadArchiveAllResult>;\n    childSummary(args: ThreadStatusArgs): Promise<ThreadChildSummaryResult>;\n    continueAfterRateLimit(args: ThreadContinueAfterRateLimitArgs): Promise<ThreadContinueAfterRateLimitResult>;\n    compact(args: ThreadActionArgs): Promise<ThreadCompactResult>;\n    cancelPlan(args: ThreadActionArgs): Promise<ThreadBannerActionResult>;\n    clearGoal(args: ThreadActionArgs): Promise<ThreadBannerActionResult>;\n    conversationOutline(args: ThreadStatusArgs): Promise<ThreadConversationOutlineResult>;\n    defaultExecutionOptions(args: ThreadStatusArgs): Promise<ThreadDefaultExecutionOptionsResult>;\n    delete(args: ThreadDeleteArgs): Promise<ThreadDeleteResult>;\n    editMessage(args: ThreadEditMessageArgs): Promise<ThreadEditMessageResult>;\n    events: ThreadEventsArea;\n    fork(args: ThreadForkArgs): Promise<ThreadForkResult>;\n    get(args: ThreadGetArgs): Promise<ThreadGetResult>;\n    interactions: ThreadInteractionsArea;\n    list(args?: ThreadListArgs): Promise<ThreadListResult>;\n    markRead(args: ThreadActionArgs): Promise<ThreadReadStateResult>;\n    markUnread(args: ThreadActionArgs): Promise<ThreadReadStateResult>;\n    open(args: ThreadOpenArgs): Promise<ThreadOpenResult>;\n    paneAction(args: ThreadPaneActionArgs): Promise<ThreadPaneActionResult>;\n    output(args: ThreadOutputArgs): Promise<ThreadOutputResponse>;\n    pin(args: ThreadActionArgs): Promise<ThreadMutationResult>;\n    promptHistory(args: ThreadPromptHistoryArgs): Promise<ThreadPromptHistoryResult>;\n    queuedMessages: ThreadQueuedMessagesArea;\n    rateLimitRecovery(args: ThreadStatusArgs): Promise<ThreadRateLimitRecoveryResult>;\n    reorderPinned(args: ThreadPinOrderArgs): Promise<ThreadPinOrderResult>;\n    resolveMentions(args: ThreadResolveMentionsArgs): Promise<ThreadResolveMentionsResult>;\n    search(args: ThreadSearchArgs): Promise<ThreadSearchResult>;\n    send(args: ThreadSendArgs): Promise<ThreadSendResult>;\n    spawn(args: ThreadSpawnArgs): Promise<ThreadSpawnResult>;\n    /**\n     * Stop active work and release the loaded agent runtime. This operation is\n     * idempotent and preserves thread history for a later resume.\n     */\n    stop(args: ThreadActionArgs): Promise<ThreadStopResult>;\n    tabs: ThreadTabsArea;\n    timeline(args: ThreadTimelineArgs): Promise<ThreadTimelineResult>;\n    timelineTurnSummaryDetails(args: ThreadTimelineTurnSummaryDetailsArgs): Promise<ThreadTimelineTurnSummaryDetailsResult>;\n    storageFiles(args: ThreadStorageFilesArgs): Promise<ThreadStorageFilesResult>;\n    storagePaths(args: ThreadStoragePathsArgs): Promise<ThreadStoragePathsResult>;\n    unarchive(args: ThreadActionArgs): Promise<ThreadUnarchiveResult>;\n    unpin(args: ThreadActionArgs): Promise<ThreadMutationResult>;\n    update(args: ThreadUpdateArgs): Promise<ThreadMutationResult>;\n    wait(args: ThreadWaitArgs): Promise<ThreadWaitResult>;\n}\n\ntype ThreadSectionCreateResult = ThreadSectionResponse;\ntype ThreadSectionUpdateResult = ThreadSectionMutationResponse;\ntype ThreadSectionDeleteResult = ThreadSectionMutationResponse;\ntype ThreadSectionListResult = ThreadSectionResponse[];\ninterface ThreadSectionListArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadSectionsArea {\n    create(args: CreateThreadSectionRequest): Promise<ThreadSectionCreateResult>;\n    delete(args: DeleteThreadSectionRequest): Promise<ThreadSectionDeleteResult>;\n    list(args?: ThreadSectionListArgs): Promise<ThreadSectionListResult>;\n    update(args: UpdateThreadSectionRequest): Promise<ThreadSectionUpdateResult>;\n}\n\ninterface BbSdk extends BbRealtime {\n    environments: EnvironmentsArea;\n    files: FilesArea;\n    guide: GuideArea;\n    hosts: HostsArea;\n    projects: ProjectsArea;\n    plugins: PluginsArea;\n    providers: ProvidersArea;\n    skills: SkillsArea;\n    status: StatusArea;\n    system: SystemArea;\n    terminals: TerminalsArea;\n    theme: ThemeArea;\n    threadSections: ThreadSectionsArea;\n    threads: ThreadsArea;\n}\n\ninterface ExperimentalHostSignalContract<PayloadSchema extends StandardSchemaV1 = StandardSchemaV1> {\n    readonly payload: PayloadSchema;\n}\ntype ExperimentalHostSignals = Readonly<Record<string, ExperimentalHostSignalContract>>;\ninterface ExperimentalHostCallOptions {\n    readonly hostId: string;\n    readonly signal?: AbortSignal;\n}\ninterface ExperimentalHostClient<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}> {\n    call<MethodName extends keyof Contract & string>(method: MethodName, input: StandardSchemaV1InferInput<Contract[MethodName][\"input\"]>, options: ExperimentalHostCallOptions): Promise<PluginRpcResult<Contract[MethodName]>>;\n    /**\n     * Subscribe to unexpected exits of this plugin's worker on a host daemon.\n     * Graceful reload, disable, uninstall, and daemon shutdown do not emit this\n     * event. A later call starts a fresh worker.\n     */\n    experimental_onWorkerExit(handler: (event: {\n        readonly hostId: string;\n    }) => void | Promise<void>): () => void;\n    /** Subscribe to a validated, ephemeral signal from this plugin's host entry. */\n    experimental_onSignal<SignalName extends keyof Signals & string>(signal: SignalName, handler: (event: ExperimentalHostSignalEvent<Signals, SignalName>) => void | Promise<void>): () => void;\n}\ninterface ExperimentalHostSignalEvent<Signals extends ExperimentalHostSignals, SignalName extends keyof Signals & string> {\n    readonly hostId: string;\n    readonly payload: StandardSchemaV1InferOutput<Signals[SignalName][\"payload\"]>;\n}\ninterface ExperimentalHostPaths {\n    /** Persistent directory scoped to this plugin on this daemon. */\n    readonly dataDir: string;\n    /** Temporary directory scoped to this worker process. */\n    readonly tempDir: string;\n}\ntype ExperimentalHostWatchChangeType = \"create\" | \"update\" | \"delete\";\ninterface ExperimentalHostWatchChange {\n    readonly path: string;\n    readonly type: ExperimentalHostWatchChangeType;\n}\ntype ExperimentalHostWatchEvent = {\n    readonly kind: \"changed\";\n    readonly changes: readonly ExperimentalHostWatchChange[];\n} | {\n    readonly kind: \"rescan-required\";\n} | {\n    readonly kind: \"watch-error\";\n    readonly message: string;\n};\ninterface ExperimentalHostWatchOptions {\n    /** Absolute directory observed by the daemon's native watcher service. */\n    readonly rootPath: string;\n    /** Root-relative ignore entries using the native watcher syntax. */\n    readonly ignoredPaths?: readonly string[];\n    /** Quiet period before one coalesced delivery. Defaults to 75 ms. */\n    readonly debounceMs?: number;\n    /** Maximum time changes may wait. Defaults to 500 ms. */\n    readonly maxWaitMs?: number;\n}\ninterface ExperimentalHostWatchSubscription {\n    dispose(): Promise<void>;\n}\ninterface ExperimentalHostWorkerLease {\n    /** Release this worker-retention lease. Safe to call more than once. */\n    dispose(): Promise<void>;\n}\ntype ExperimentalHostWatchListener = (event: ExperimentalHostWatchEvent) => void | Promise<void>;\ninterface ExperimentalHostRpcContext<Signals extends ExperimentalHostSignals = {}> {\n    /** Aborted when this request is cancelled or its worker is disposed. */\n    readonly signal: AbortSignal;\n    /** Aborted once for the lifetime of this worker process. */\n    readonly lifecycle: {\n        readonly signal: AbortSignal;\n    };\n    readonly experimental_paths: ExperimentalHostPaths;\n    /** Publish a validated, ephemeral event to this plugin's server entry. */\n    experimental_emitSignal<SignalName extends keyof Signals & string>(signal: SignalName, payload: StandardSchemaV1InferInput<Signals[SignalName][\"payload\"]>): Promise<void>;\n    /** Observe raw filesystem changes through the daemon's native watcher. */\n    experimental_watch(options: ExperimentalHostWatchOptions, listener: ExperimentalHostWatchListener): Promise<ExperimentalHostWatchSubscription>;\n    /**\n     * Keep this worker alive after the current call finishes. Active calls and\n     * filesystem watches already retain it; use this only for other background\n     * work. The daemon may stop an unretained worker after an idle period.\n     */\n    experimental_retainWorker(): ExperimentalHostWorkerLease;\n}\ntype ExperimentalHostRpcHandlers<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}> = {\n    [MethodName in keyof Contract]: (input: StandardSchemaV1InferOutput<Contract[MethodName][\"input\"]>, context: ExperimentalHostRpcContext<Signals>) => StandardSchemaV1InferInput<Contract[MethodName][\"output\"]> | Promise<StandardSchemaV1InferInput<Contract[MethodName][\"output\"]>>;\n};\ninterface ExperimentalHostEntry<Contract extends PluginRpcContract = PluginRpcContract, Signals extends ExperimentalHostSignals = {}> {\n    readonly experimental_apiVersion: 1;\n    readonly contract: Contract;\n    readonly experimental_signals?: Signals;\n    readonly handlers: ExperimentalHostRpcHandlers<Contract, Signals>;\n    readonly dispose?: () => void | Promise<void>;\n}\n/** Define the single host executable exported by `bb.host`. */\ndeclare function experimental_defineHostEntry<const Contract extends PluginRpcContract, const Signals extends ExperimentalHostSignals = {}>(args: {\n    contract: Contract;\n    experimental_signals?: Signals;\n    handlers: ExperimentalHostRpcHandlers<Contract, Signals>;\n    dispose?: () => void | Promise<void>;\n}): ExperimentalHostEntry<Contract, Signals>;\n\n/**\n * The backend plugin API contract — the `bb` object handed to a plugin's\n * `server.ts` factory (`export default function plugin(bb: BbPluginApi)`).\n *\n * Types only: the implementation lives in the BB server\n * (apps/server/src/services/plugins/plugin-api.ts), which imports these\n * shapes so the contract and the implementation cannot drift. Plugin authors\n * import them type-only (`import type { BbPluginApi } from\n * \"@get-bb/plugin-sdk\"`); the import is erased when BB loads the file.\n *\n * Runtime classes stay host-side. NeedsConfigurationError in particular is\n * matched by NAME, so plugin code needs no runtime import:\n * `throw Object.assign(new Error(msg), { name: \"NeedsConfigurationError\" })`.\n */\ninterface PluginLogger {\n    debug(message: string): void;\n    info(message: string): void;\n    warn(message: string): void;\n    error(message: string): void;\n}\n/**\n * Declarative settings descriptors (`bb.settings.define`). Deliberately plain\n * data — not zod — so the host can render settings forms and the CLI can\n * parse values without executing plugin code.\n */\ntype PluginSettingDescriptor = {\n    type: \"string\";\n    label: string;\n    description?: string;\n    /** Stored in a 0600 file under <dataDir>/plugins/<id>/secrets/, never in the db or sent to the frontend. */\n    secret?: true;\n    default?: string;\n} | {\n    type: \"boolean\";\n    label: string;\n    description?: string;\n    default?: boolean;\n} | {\n    type: \"select\";\n    label: string;\n    description?: string;\n    options: string[];\n    default?: string;\n} | {\n    type: \"project\";\n    label: string;\n    description?: string;\n    default?: string;\n};\ntype PluginSettingDescriptors = Record<string, PluginSettingDescriptor>;\ntype PluginSettingValue = string | boolean;\n/** `default` present → non-optional value; absent → `T | undefined`. */\ntype PluginSettingsValues<Ds extends Record<string, PluginSettingDescriptor>> = {\n    [K in keyof Ds]: Ds[K] extends {\n        default: string | boolean;\n    } ? PluginSettingValueOf<Ds[K]> : PluginSettingValueOf<Ds[K]> | undefined;\n};\ntype PluginSettingValueOf<D extends PluginSettingDescriptor> = D extends {\n    type: \"boolean\";\n} ? boolean : string;\ninterface PluginSettingsHandle<Ds extends Record<string, PluginSettingDescriptor>> {\n    /** Load-safe: callable inside the factory. */\n    get(): Promise<PluginSettingsValues<Ds>>;\n    /** Fires after values change through the settings route/CLI. */\n    onChange(listener: (next: PluginSettingsValues<Ds>, prev: PluginSettingsValues<Ds>) => void): void;\n}\ninterface PluginSettings {\n    define<Ds extends Record<string, PluginSettingDescriptor>>(descriptors: Ds): PluginSettingsHandle<Ds>;\n}\ninterface PluginKvStorage {\n    get<T>(key: string): Promise<T | undefined>;\n    set(key: string, value: unknown): Promise<void>;\n    delete(key: string): Promise<void>;\n    list(prefix?: string): Promise<string[]>;\n}\ninterface PluginStorage {\n    /** Namespaced JSON key-value rows in bb.db; values ≤256KB each. */\n    kv: PluginKvStorage;\n    /**\n     * Open (or reuse the path of) the plugin's own SQLite database at\n     * <dataDir>/plugins/<id>/data.db — the server's better-sqlite3, WAL mode,\n     * busy_timeout 5000. Handles are host-tracked and closed on\n     * dispose/reload; a closed handle throws on use.\n     */\n    database(): Database.Database;\n    /**\n     * Ordered-statement migration helper: statement index = migration id in a\n     * `_bb_migrations` table; unapplied statements run in one transaction.\n     * Append-only — never reorder or edit shipped statements.\n     */\n    migrate(db: Database.Database, statements: string[]): void;\n}\n/**\n * Thread lifecycle events a plugin can observe (design §4.5). Observe-only:\n * handlers run fire-and-forget after the transition is applied and can never\n * block or veto it. `thread` is the same public DTO GET /threads/:id serves.\n */\ninterface PluginThreadEventPayloads {\n    /** Fired after a thread row is created. */\n    \"thread.created\": {\n        thread: ThreadResponse;\n    };\n    /** Fired when a thread transitions into `active`. */\n    \"thread.active\": {\n        thread: ThreadResponse;\n    };\n    /** Fired when a thread transitions into `idle`. `lastAssistantText` is\n     * assembled the same way GET /threads/:id/output is. */\n    \"thread.idle\": {\n        thread: ThreadResponse;\n        lastAssistantText: string | null;\n    };\n    /** Fired when a thread transitions into `error`. `error` is the latest\n     * system/error event message, when one exists. */\n    \"thread.failed\": {\n        thread: ThreadResponse;\n        error: string | null;\n    };\n    /** Fired after a thread is archived (including cascade archives). */\n    \"thread.archived\": {\n        thread: ThreadResponse;\n    };\n    /** Fired after a thread is soft-deleted. */\n    \"thread.deleted\": {\n        thread: ThreadResponse;\n    };\n}\ntype PluginThreadEventName = keyof PluginThreadEventPayloads;\ntype PluginThreadEventHandler<E extends PluginThreadEventName> = (payload: PluginThreadEventPayloads[E]) => void | Promise<void>;\ntype PluginHttpAuthMode = \"local\" | \"token\" | \"none\";\ntype PluginHttpHandler = (context: Context) => Response | Promise<Response>;\ninterface PluginHttp {\n    /**\n     * Register an HTTP route, mounted at\n     * `/api/v1/plugins/<id>/http/<path>`. Auth modes (default \"local\"):\n     * - \"local\": Origin/Host must be a local BB app origin; non-GET requires\n     *   content-type application/json (forces a CORS preflight).\n     * - \"token\": requires the per-plugin token (`bb plugin token <id>`) via\n     *   the x-bb-plugin-token header or ?token=.\n     * - \"none\": no checks — only for signature-verified webhooks.\n     */\n    route(method: string, path: string, handler: PluginHttpHandler, opts?: {\n        auth?: PluginHttpAuthMode;\n    }): void;\n}\ninterface PluginRpc {\n    /**\n     * Register a Standard Schema-driven rpc contract and its inferred handlers,\n     * served at POST\n     * `/api/v1/plugins/<id>/rpc/<method>` with \"local\" auth semantics. The\n     * host validates input before invocation and output before strict JSON\n     * serialization. The response is `{ ok: true, result }` or\n     * `{ ok: false, error: { code, message, issues? } }`.\n     */\n    register<Contract extends PluginRpcContract>(contract: Contract, handlers: PluginRpcHandlers<Contract>): void;\n}\ninterface PluginRealtime {\n    /**\n     * Broadcast an ephemeral `plugin-signal` WS message\n     * `{ pluginId, channel, payload }` to every connected client (V1 has no\n     * per-channel subscriptions). `payload` must be JSON-serializable;\n     * `undefined` is normalized to `null`. Nothing is persisted.\n     */\n    publish(channel: string, payload: unknown): void;\n}\ninterface PluginBackground {\n    /**\n     * Register a long-lived background service. `start` runs after the\n     * factory completes and should resolve when `signal` aborts\n     * (dispose/reload/disable/shutdown). A crash restarts it with capped\n     * exponential backoff; throwing NeedsConfigurationError marks the plugin\n     * `needs-configuration` and stops restarting until the next load.\n     */\n    service(name: string, service: {\n        start(signal: AbortSignal): void | Promise<void>;\n    }): void;\n    /**\n     * Register a cron schedule (5-field expression, server-local time). The\n     * durable row keyed (pluginId, name) is upserted at load; the periodic\n     * sweep claims due rows with a CAS on next_run_at, but only while this\n     * plugin is loaded. Failures land in last_status/last_error, visible in\n     * `bb plugin list`.\n     */\n    schedule(name: string, cron: string, fn: () => void | Promise<void>): void;\n}\ninterface PluginCliCommandInfo {\n    name: string;\n    summary: string;\n    usage: string;\n}\n/** Context forwarded from the invoking CLI when known; all fields optional. */\ninterface PluginCliContext {\n    cwd?: string;\n    threadId?: string;\n    projectId?: string;\n    /** Aborted when the invoking CLI HTTP request disconnects. */\n    signal?: AbortSignal;\n}\ntype PluginInteractionCancelReason = \"user\" | \"request-aborted\" | \"thread-stopped\" | \"thread-deleted\" | \"plugin-disposed\" | \"server-restarted\" | \"timeout\";\ntype PluginInteractionResult = {\n    outcome: \"submitted\";\n    value: JsonValue;\n} | {\n    outcome: \"cancelled\";\n    reason: PluginInteractionCancelReason;\n};\ninterface PluginInteractionRequest {\n    threadId: string;\n    rendererId: string;\n    title: string;\n    payload: JsonValue;\n    /** Defaults to ten minutes; capped at one hour. */\n    timeoutMs?: number;\n}\ninterface PluginCliResult {\n    exitCode: number;\n    stdout?: string;\n    stderr?: string;\n}\n/**\n * Maximum combined UTF-8 bytes accepted from plugin CLI stdout and stderr.\n * This is the shared source of truth for production and the testing harness.\n */\ndeclare const PLUGIN_CLI_OUTPUT_MAX_BYTES: number;\ninterface PluginCliOutputLimitError {\n    code: \"plugin_cli_output_too_large\";\n    message: string;\n    maxBytes: number;\n    stdoutBytes: number;\n    stderrBytes: number;\n    totalBytes: number;\n}\n/** Normalized host result returned by the plugin CLI HTTP/testing boundary. */\ninterface PluginCliExecutionResult {\n    exitCode: number;\n    stdout: string;\n    stderr: string;\n    error?: PluginCliOutputLimitError;\n}\ninterface PluginCliRegistration {\n    /** Top-level command name (`bb <name> …`): lowercase [a-z0-9-]+, and not\n     * a core bb command (see RESERVED_BB_CLI_COMMANDS in the server). */\n    name: string;\n    summary: string;\n    /** Subcommand metadata rendered in help and the plugin-commands skill\n     * without executing plugin code. Parsing argv is plugin-owned. */\n    commands?: PluginCliCommandInfo[];\n    run(argv: string[], ctx: PluginCliContext): PluginCliResult | Promise<PluginCliResult>;\n}\ninterface PluginCli {\n    /**\n     * Register this plugin's `bb` subcommand. One registration per factory\n     * execution; a repeated call is rejected. Core bb commands always win\n     * name collisions; reserved names are rejected at registration.\n     */\n    register(registration: PluginCliRegistration): void;\n}\n/** Per-turn context handed to bb.agents context providers (design §4.4). */\n/** MCP-style content parts a native tool may return (design §4.4). */\ntype PluginAgentToolContentPart = {\n    type: \"text\";\n    text: string;\n} | {\n    type: \"image\";\n    data: string;\n    mimeType: string;\n};\ntype PluginAgentToolResult = string | {\n    content: PluginAgentToolContentPart[];\n    isError?: boolean;\n};\n/** Per-call context handed to a native tool's execute (design §4.4). */\ninterface PluginAgentToolContext {\n    threadId: string;\n    projectId: string;\n    /** The tool-call request's abort signal (aborts if the daemon round-trip\n     * is torn down mid-call). */\n    signal: AbortSignal;\n}\n/**\n * Native timeline labels for a plugin tool, keyed by BB's own timeline row\n * status. This is experimental: BB may refine its presentation contract\n * before the field is stabilized.\n */\ninterface PluginAgentToolExperimentalStatusLabels {\n    /** Label shown while the tool call is pending. */\n    pending: string;\n    /** Label shown after the tool call completes successfully. */\n    completed: string;\n}\ninterface PluginAgentToolRegistrationBase {\n    /** Tool name shown to the model: [a-zA-Z0-9_-]+, unique across plugins,\n     * and not a built-in dynamic tool (see RESERVED_AGENT_TOOL_NAMES in the\n     * server). */\n    name: string;\n    description: string;\n    /**\n     * Optional usage snippet appended to the thread instructions whenever\n     * this tool is in the session's tool set (mirrors the built-in\n     * update_environment_directory guidance). Limited to 4096 characters.\n     */\n    instructions?: string;\n    /**\n     * Optional native timeline labels. When omitted, BB shows the standard\n     * tool name and arguments (for example, `Ran tool search_docs …`). Labels\n     * apply only while the call is pending and after successful completion;\n     * approval, error, and interruption states keep BB's standard rendering.\n     */\n    experimental_statusLabels?: PluginAgentToolExperimentalStatusLabels;\n}\n/** Stable, plain-data context resolved by the server for one agent session. */\ninterface PluginAgentConfigurationContext {\n    thread: {\n        id: string;\n        title: string | null;\n        parentThreadId: string | null;\n        sourceThreadId: string | null;\n    };\n    project: {\n        id: string;\n        kind: \"standard\" | \"personal\";\n        name: string;\n        gitRemoteUrl: string | null;\n    };\n    environment: {\n        id: string;\n        name: string | null;\n        path: string | null;\n        workspaceProvisionType: \"unmanaged\" | \"managed-worktree\" | \"personal\";\n        branchName: string | null;\n    };\n    host: {\n        id: string;\n        name: string;\n    };\n    provider: {\n        id: string;\n        model: string;\n        /**\n         * The provider's declared capabilities, so a plugin can decide what to\n         * contribute from what the provider says it does rather than from its own\n         * copy of a provider id list.\n         */\n        capabilities: {\n            /**\n             * The provider ships its own user-question affordance and bb routes it\n             * into the pending-interaction path. A plugin offering the same thing\n             * should withhold it here, or the model gets two ways to ask once.\n             */\n            supportsNativeUserQuestion: boolean;\n        };\n    };\n    /** How the thread was spawned. A side chat is the builtin side-chat\n     * plugin's fork: `{ kind: \"fork\", pluginId: \"side-chat\" }`. */\n    origin: {\n        kind: \"fork\" | null;\n        pluginId: string | null;\n    };\n}\n/** Object form of a {@link PluginAgentConfiguration} tools entry: selects a\n * registered tool and overrides the parameter schema advertised to the\n * provider for this resolution only. */\ninterface PluginAgentToolSelection {\n    /** Name of a tool registered by this plugin via `registerTool`. */\n    name: string;\n    /** JSON-schema object (root `type: \"object\"`, JSON-serializable, at most\n     * 128 KiB serialized) sent to the provider in place of the registered\n     * parameter schema. Execution-side validation still runs the registered\n     * parameters, so the override must only narrow what the registered schema\n     * already accepts. */\n    parameters: Record<string, unknown>;\n}\n/** Per-resolution selection returned by {@link PluginAgents.configure}. */\ninterface PluginAgentConfiguration {\n    /** Tool names registered by this plugin, or {@link PluginAgentToolSelection}\n     * entries to also override a tool's advertised parameter schema for this\n     * resolution. Duplicate or unknown names, or an invalid override, reject\n     * this plugin's complete selection for the resolution. */\n    tools: Array<string | PluginAgentToolSelection>;\n    /** Skill frontmatter names from this plugin's manifest skill roots.\n     * Duplicate or unknown names reject this plugin's complete selection. */\n    skills: string[];\n    /** Optional dynamic instructions. Output is truncated to 4096 characters. */\n    instructions?: string;\n}\n/**\n * Permission modes a provider can run a session in — BB's own permission\n * vocabulary, ordered least (\"accept-edits\") to most (\"full\") privileged.\n */\ntype PluginProviderPermissionMode = \"accept-edits\" | \"auto\" | \"full\";\n/**\n * Coarse reasoning-effort ladder entries, ordered lowest to highest. The\n * declared ladder is a fallback only: precise per-model reasoning sets come\n * from the provider's model list at runtime.\n */\ntype PluginProviderReasoningLevel = \"none\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"ultracode\" | \"max\" | \"ultra\";\n/**\n * Composer actions a provider supports, by name only. The skills\n * slash-command typeahead is universal — BB injects skills into every\n * provider — so it is implicit and never declared, and the composer owns the\n * trigger syntax (`/plan `, `/goal `) rather than each declaration repeating\n * it.\n */\ntype PluginProviderComposerAction = \"plan\" | \"goal\";\n/**\n * Pre-session capability facts about a provider. A capability earns a field\n * here only when it passes BOTH tests: (1) a consumer outside the provider's\n * own plugin needs the fact, and (2) the fact is needed before / without a\n * live session (picker rendering, route gating, cross-plugin tool\n * composition — including with the host offline). Every boolean is a\n * provider-native fact — the provider implements the feature; the flag only\n * tells external consumers it exists. Everything else is a handshake fact the\n * bridge reports at `initialize`, where it cannot drift from behavior.\n */\ninterface PluginProviderCapabilities {\n    /** The provider accepts a fast/priority service-tier choice — shows the\n     * service-tier toggle in the picker. */\n    supportsServiceTier: boolean;\n    /** The provider ships its own native ask-user-question tool — the\n     * ask-user-question plugin skips registering its duplicate. */\n    supportsNativeUserQuestion: boolean;\n    /**\n     * How completely the provider can clone a session: `\"none\"` (not at all),\n     * `\"tip\"` (only the current end, so thread fork works but edit-past-message\n     * rewind cannot), or `\"checkpoint\"` (recreate the session at an earlier\n     * point, which rewind needs). Gates the fork and edit-past-message\n     * affordances. The bridge reports the same fact at `initialize`, where it\n     * may narrow this declaration but never widen it.\n     */\n    fork: ProviderFork;\n    /** The provider accepts an explicit context-compaction request — gates the\n     * compact affordance. */\n    supportsManualCompaction: boolean;\n    /** The provider keeps its own thread archive, so BB mirrors archive and\n     * unarchive onto it instead of tracking the state only in bb's own rows. */\n    supportsThreadArchive: boolean;\n    /** The provider stores a thread name of its own, so BB forwards renames to\n     * it. */\n    supportsThreadRename: boolean;\n    /** The provider can run BB's Workflow tools — gates the workflows opt-in on\n     * new threads. */\n    supportsWorkflows: boolean;\n    /** Permission modes the provider can actually run in. Non-empty, no\n     * duplicates. */\n    permissionModes: readonly PluginProviderPermissionMode[];\n    /** The provider's coarse fallback reasoning ladder (see\n     * {@link PluginProviderReasoningLevel}). Non-empty, no duplicates. */\n    reasoningLevels: readonly PluginProviderReasoningLevel[];\n}\n/**\n * One provider this plugin contributes to BB's provider registry.\n *\n * Ids are stable public identifiers — thread rows and routes reference them —\n * and are collision-rejected: a declaration whose id matches another plugin's\n * live registration, or reserves a first-party provider it does not own, is\n * refused. Registrations are replaced wholesale on plugin reload, like every\n * other plugin surface.\n *\n * A declaration is metadata only. The implementation is the plugin's own\n * provider bridge, named by `bb.providerBridge` in the manifest and built into\n * the artifact BB ships to hosts — declaring a provider without one is\n * refused, because the picker entry would exist and no turn on it could ever\n * run.\n */\ninterface PluginProviderDeclaration {\n    /** Stable provider id: 2–64 characters of lowercase letters, digits, and\n     * \"-\", starting with a letter or digit. Existing ids must never change —\n     * threads persist them. */\n    id: string;\n    /** Picker display name: 1–80 characters, non-blank. */\n    displayName: string;\n    /**\n     * Optional picker icon, in the same grammar as `bb.branding.icon`: either a\n     * named host glyph (`\"Zap\"`) or a plugin-relative path starting with `\"./\"`\n     * (`\"./icons/agent.svg\"`). Paths follow the manifest entry-path escape rules\n     * — no leading \"/\", no \"..\" segments, no backslashes.\n     */\n    icon?: string;\n    /** Pre-session capability facts (see the declaration tests on\n     * {@link PluginProviderCapabilities}). */\n    capabilities: PluginProviderCapabilities;\n    /** Composer actions this provider supports. No duplicates; may be empty\n     * (the universal skills typeahead is implicit). */\n    composerActions: readonly PluginProviderComposerAction[];\n}\ninterface PluginAgents {\n    /**\n     * Select this plugin's statically registered tools and manifest skills for\n     * each thread/session resolution, with optional dynamic instructions. The\n     * callback is synchronous and runs at `thread.start` / `turn.submit`; it\n     * never rebuilds registrations. Exactly one callback may be registered per\n     * factory execution. A throw, malformed result, duplicate id, unknown id,\n     * or more than 256 tool/skill ids fails closed for this plugin only.\n     *\n     * Tools take effect when the provider session is next started or resumed;\n     * an already-running session is not hot-mutated. Instructions follow the\n     * same boundary: a live provider session keeps the instructions it was\n     * constructed with, and a changed selection applies when the session is\n     * next constructed. Skill changes follow BB's environment runtime policy:\n     * a busy runtime keeps its current catalog until a safe relaunch. Side chats\n     * are ordinary plugin-owned forks here — read `origin` to detect them — and\n     * their returned tool, skill, and dynamic-instruction selections apply at the\n     * same boundaries.\n     */\n    configure(provider: (context: PluginAgentConfigurationContext) => PluginAgentConfiguration): void;\n    /**\n     * Register a native dynamic tool (design §4.4). `parameters` is either a\n     * zod schema (validated per call; execute receives the parsed value) or a\n     * plain JSON-schema object (no validation; execute receives the raw\n     * arguments as `unknown`). Tool-set changes apply on the NEXT session\n     * start — a tool registered mid-session is not hot-added to running\n     * provider sessions. A second registration of the same name within this\n     * plugin is rejected; a name already registered by another plugin is\n     * rejected and surfaced as this plugin's status detail.\n     */\n    registerTool<Schema extends z.ZodType>(tool: PluginAgentToolRegistrationBase & {\n        parameters: Schema;\n        execute(params: z.output<Schema>, ctx: PluginAgentToolContext): PluginAgentToolResult | Promise<PluginAgentToolResult>;\n    }): void;\n    registerTool(tool: PluginAgentToolRegistrationBase & {\n        /** Raw JSON-schema escape hatch; params arrive unvalidated. */\n        parameters: Record<string, unknown>;\n        execute(params: unknown, ctx: PluginAgentToolContext): PluginAgentToolResult | Promise<PluginAgentToolResult>;\n    }): void;\n    /**\n     * Contribute a dynamic section appended to thread instructions. The\n     * provider runs when a thread's runtime command config is resolved\n     * (thread.start / turn.submit); return null to contribute nothing for\n     * that resolution. A live provider session keeps the instructions it was\n     * constructed with — a changed contribution takes effect when the\n     * provider session is next constructed (thread start or resume after a\n     * daemon restart, environment switch, or provider restart), never\n     * mid-session. Must be synchronous and fast — it sits on the\n     * thread-start path. Output longer than 4096 characters is truncated; a\n     * throwing provider is logged against the plugin and contributes nothing.\n     * A repeated registration within one factory execution is rejected.\n     */\n    contributeInstructions(provider: (ctx: {\n        threadId: string;\n        projectId: string;\n    }) => string | null): void;\n    /**\n     * Register an agent provider this plugin contributes (experimental — see\n     * docs/api_to_audit.md before relying on it). The declaration is validated\n     * at call time; the provider joins the server's provider registry when the\n     * plugin load commits and then appears in provider listings. Ids are stable\n     * and collision-rejected: an id already claimed by a core provider or\n     * another plugin fails this plugin's load. A plugin may register several\n     * providers and may re-register after `dispose()` (a settings-driven\n     * re-declaration); registrations are replaced wholesale on plugin reload,\n     * like every other surface. The disposer removes the registration.\n     */\n    experimental_registerProvider(declaration: PluginProviderDeclaration): {\n        dispose(): void;\n    };\n}\ntype PluginMentionTrigger = \"@\" | \"#\" | \"$\" | \"!\" | \"~\";\n/** Search context handed to a mention provider (design §4.9). `projectId`/\n * `threadId` are null when the composer has not committed one yet. */\ninterface PluginMentionSearchContext {\n    trigger: PluginMentionTrigger;\n    query: string;\n    projectId: string | null;\n    threadId: string | null;\n}\n/** One row a mention provider returns from `search`. `id` is the provider's\n * own item id — the host namespaces it before it reaches the wire. */\ninterface PluginMentionItem {\n    id: string;\n    title: string;\n    subtitle?: string;\n    icon?: string;\n}\ninterface PluginMentionProviderRegistration {\n    /** Unique within this plugin: [a-zA-Z0-9_-]+ (no \":\" — the host composes\n     * wire item ids as \"<providerId>:<itemId>\"). */\n    id: string;\n    /** Section label shown above this provider's rows in the mention menu. */\n    label: string;\n    /**\n     * Composer trigger characters this provider should answer. Omit to use the\n     * default `@` mention trigger. Valid triggers are `@`, `#`, `$`, `!`, and `~`.\n     */\n    triggers?: readonly PluginMentionTrigger[];\n    /**\n     * Runs server-side as the user types after one of this provider's triggers\n     * in the composer. Each call is time-boxed (2s) and failure-isolated: a slow\n     * or throwing provider contributes an empty list — it can never break the\n     * mention menu.\n     */\n    search(ctx: PluginMentionSearchContext): PluginMentionItem[] | Promise<PluginMentionItem[]>;\n    /**\n     * Resolves one picked item into agent context, called once per unique\n     * item at message send time. The returned `context` is attached to the\n     * message as an agent-visible (user-hidden) prompt input. Throwing blocks\n     * the send with a visible error.\n     */\n    resolve(itemId: string): {\n        context: string;\n    } | Promise<{\n        context: string;\n    }>;\n}\ninterface PluginUi {\n    /** Block until the app submits or cancels a plugin-owned composer form. */\n    requestInput(request: PluginInteractionRequest, options?: {\n        signal?: AbortSignal;\n    }): Promise<PluginInteractionResult>;\n    /**\n     * Register a mention provider for the shipped app's composer (design §4.9).\n     * Providers default to the `@` trigger and may opt into `#`, `$`, `!`, or\n     * `~` with `triggers`. Items group under `label` in the mention menu; a\n     * picked item becomes a `{ kind: \"plugin\" }` mention resource whose context\n     * is resolved once at send time. Multiple providers per plugin; ids must be\n     * unique within the plugin.\n     */\n    registerMentionProvider(provider: PluginMentionProviderRegistration): void;\n}\ninterface PluginEvents {\n    /**\n     * Add a thread lifecycle listener. Multiple listeners for the same event are\n     * additive and run independently in registration order.\n     */\n    on<E extends PluginThreadEventName>(event: E, handler: PluginThreadEventHandler<E>): void;\n}\ninterface PluginServerApi {\n    /**\n     * This BB server's own loopback base URL (e.g. \"http://127.0.0.1:38886\"),\n     * which serves the SPA + /api + /ws. For plugins that proxy or relay\n     * traffic back to the server itself (e.g. a tunnel). Bind-gated like\n     * `bb.sdk`: reading it before the server is listening throws, so prefer\n     * reading it from handlers, services, and timers.\n     */\n    readonly loopbackBaseUrl: string;\n}\ninterface PluginSharedPortTunnelIdentity {\n    /** Gate routing label assigned to this machine. */\n    label: string;\n    /** Gate apex without a scheme, e.g. \"getbb.app\". */\n    baseDomain: string;\n}\ninterface PluginHosts {\n    /** Create the owning plugin's typed client for its singular `bb.host` entry. */\n    experimental_client<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}>(args: {\n        contract: Contract;\n        experimental_signals?: Signals;\n    }): ExperimentalHostClient<Contract, Signals>;\n    /**\n     * Ensure this enrolled host has a gate label and return its read-only public\n     * identity. The daemon chooses the trusted gate and desired label; plugins\n     * cannot influence either credential-bearing destination.\n     */\n    ensureSharedPortTunnel(hostId: string): Promise<PluginSharedPortTunnelIdentity>;\n    /**\n     * Replace this plugin's desired shared-loopback ports for one host. The\n     * server aggregates declarations, owns generations, and delivers the\n     * resulting set to that host's daemon. Tunnel identity is deliberately not\n     * accepted here: it is owned by the daemon's trusted enrollment.\n     */\n    declareSharedPorts(hostId: string, ports: readonly number[]): void;\n}\ninterface PluginStatusApi {\n    /**\n     * Mark this plugin `needs-configuration` (with a message shown in\n     * `bb plugin list` and the UI) instead of failing — e.g. a factory or\n     * service that finds no API key configured. Cleared on the next load;\n     * saving settings does not auto-reload in V1, so ask the user to\n     * `bb plugin reload <id>` after configuring.\n     */\n    needsConfiguration(message: string): void;\n}\n/**\n * The API object handed to a plugin's factory (design §4). Implemented by\n * the BB server; this contract is what plugin `server.ts` files compile\n * against.\n */\ninterface BbPluginApi {\n    /** The plugin's own id (namespaces storage, routes, commands). */\n    readonly pluginId: string;\n    /** Leveled, plugin-scoped logger. */\n    readonly log: PluginLogger;\n    /** Declarative settings (design §4.2). */\n    readonly settings: PluginSettings;\n    /** Namespaced KV + per-plugin database (design §4.3). */\n    readonly storage: PluginStorage;\n    /** HTTP routes under /api/v1/plugins/<id>/http/* (design §4.6). */\n    readonly http: PluginHttp;\n    /** RPC methods under /api/v1/plugins/<id>/rpc/<method> (design §4.6). */\n    readonly rpc: PluginRpc;\n    /** Ephemeral push to connected frontends (design §4.7). */\n    readonly realtime: PluginRealtime;\n    /** Long-lived services + cron schedules (design §4.8). */\n    readonly background: PluginBackground;\n    /** Agent-facing `bb` CLI subcommand (design §4.4). */\n    readonly cli: PluginCli;\n    /** Per-turn agent context contributions (design §4.4). */\n    readonly agents: PluginAgents;\n    /** Host-rendered UI contributions (design §4.9). */\n    readonly ui: PluginUi;\n    /** Additive plugin lifecycle listeners (design §4.5). */\n    readonly events: PluginEvents;\n    /** Plugin-reported status (needs-configuration). */\n    readonly status: PluginStatusApi;\n    /** Read-only facts about the running server (loopback base URL). */\n    readonly server: PluginServerApi;\n    /** Server-to-daemon host control-plane declarations. */\n    readonly hosts: PluginHosts;\n    /**\n     * The full BB SDK, bound to this server over loopback (design §4.1).\n     * Bind-gated: reading this before the host binds the SDK throws. The real\n     * server binds it before loading plugins, so it is available from the\n     * moment factories run there — but isolated harnesses may not, so prefer\n     * using it from handlers, services, and timers for portability.\n     * `threads.spawn` defaults `origin` to \"plugin\" and `originPluginId` to\n     * this plugin's id so spawned threads are attributed automatically.\n     */\n    readonly sdk: BbSdk;\n    /**\n     * Register cleanup to run on reload/disable/shutdown. Hooks run LIFO.\n     * The sanctioned place to clear timers and close connections.\n     */\n    onDispose(hook: () => void | Promise<void>): void;\n}\n\nexport { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract, experimental_defineHostEntry };\nexport type { BbContext, BbNavigate, BbPluginApi, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolExperimentalStatusLabels, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageActionThreadPanelOptions, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderIconRegistration, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginRealtime, PluginRealtimeConnectionState, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginStatusApi, PluginStorage, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps };\n";
+export const PLUGIN_SDK_DTS = "// Portable type declarations for `@get-bb/plugin-sdk`. Unpublished BB\n// workspace contracts are flattened; public subpaths may reuse the\n// package root without requiring any other @bb/* package.\n//\n// Confused by the API, or need a symbol that isn't here? Clone the BB repo\n// and read the real source: https://github.com/get-bb/bb\n\nimport * as react from 'react';\nimport { ComponentType, ReactNode } from 'react';\nimport * as z from 'zod';\nimport { z as z$1 } from 'zod';\nimport Database from 'better-sqlite3';\nimport { Context } from 'hono';\n\n/**\n * App-wide server-backed preferences.\n * Client-local settings stay in the frontend localStorage helpers instead.\n */\ndeclare const appSettingsSchema: z$1.ZodObject<{\n    showKeyboardHints: z$1.ZodBoolean;\n    steerActiveThreadOnEnter: z$1.ZodBoolean;\n    showUnhandledProviderEvents: z$1.ZodBoolean;\n    codexMemoryEnabled: z$1.ZodBoolean;\n    claudeCodeMemoryEnabled: z$1.ZodBoolean;\n    codexSubagentsDisabled: z$1.ZodBoolean;\n    claudeCodeSubagentsDisabled: z$1.ZodBoolean;\n    claudeCodeWorkflowsDisabled: z$1.ZodBoolean;\n    onboardingCompletedAt: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype AppSettings = z$1.infer<typeof appSettingsSchema>;\n\ndeclare const appKeybindingOverridesSchema: z$1.ZodArray<z$1.ZodObject<{\n    command: z$1.ZodEnum<{\n        \"thread.jump.1\": \"thread.jump.1\";\n        \"thread.jump.2\": \"thread.jump.2\";\n        \"thread.jump.3\": \"thread.jump.3\";\n        \"thread.jump.4\": \"thread.jump.4\";\n        \"thread.jump.5\": \"thread.jump.5\";\n        \"thread.jump.6\": \"thread.jump.6\";\n        \"thread.jump.7\": \"thread.jump.7\";\n        \"thread.jump.8\": \"thread.jump.8\";\n        \"thread.jump.9\": \"thread.jump.9\";\n        \"question.select.1\": \"question.select.1\";\n        \"question.select.2\": \"question.select.2\";\n        \"question.select.3\": \"question.select.3\";\n        \"question.select.4\": \"question.select.4\";\n        \"question.select.5\": \"question.select.5\";\n        \"question.select.6\": \"question.select.6\";\n        \"question.select.7\": \"question.select.7\";\n        \"question.select.8\": \"question.select.8\";\n        \"question.select.9\": \"question.select.9\";\n        \"pane.focus.1\": \"pane.focus.1\";\n        \"pane.focus.2\": \"pane.focus.2\";\n        \"pane.focus.3\": \"pane.focus.3\";\n        \"pane.focus.4\": \"pane.focus.4\";\n        \"pane.focus.5\": \"pane.focus.5\";\n        \"pane.focus.6\": \"pane.focus.6\";\n        \"pane.focus.7\": \"pane.focus.7\";\n        \"pane.focus.8\": \"pane.focus.8\";\n        \"thread.new\": \"thread.new\";\n        \"thread.search\": \"thread.search\";\n        \"thread.rename\": \"thread.rename\";\n        \"thread.archive\": \"thread.archive\";\n        \"thread.previous\": \"thread.previous\";\n        \"thread.next\": \"thread.next\";\n        \"pane.focus.previous\": \"pane.focus.previous\";\n        \"pane.focus.next\": \"pane.focus.next\";\n        \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n        \"pane.close\": \"pane.close\";\n        \"window.new\": \"window.new\";\n        \"settings.open\": \"settings.open\";\n        \"settings.openServers\": \"settings.openServers\";\n        \"sidebar.toggle\": \"sidebar.toggle\";\n        \"panel.newTab\": \"panel.newTab\";\n        \"panel.close\": \"panel.close\";\n        \"panel.toggle\": \"panel.toggle\";\n        \"file.quickOpen\": \"file.quickOpen\";\n        \"diff.toggle\": \"diff.toggle\";\n        \"terminal.open\": \"terminal.open\";\n        \"composer.focus\": \"composer.focus\";\n        \"modelPicker.toggle\": \"modelPicker.toggle\";\n        \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n        \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n        \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n        \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n        \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n        \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n        \"browser.focusLocation\": \"browser.focusLocation\";\n        \"browser.reload\": \"browser.reload\";\n        \"workspace.openPreferred\": \"workspace.openPreferred\";\n    }>;\n    shortcut: z$1.ZodNullable<z$1.ZodObject<{\n        key: z$1.ZodString;\n        mod: z$1.ZodBoolean;\n        meta: z$1.ZodBoolean;\n        control: z$1.ZodBoolean;\n        alt: z$1.ZodBoolean;\n        shift: z$1.ZodBoolean;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strict>>;\ntype AppKeybindingOverrides = z$1.infer<typeof appKeybindingOverridesSchema>;\n\ninterface JsonObject {\n    [key: string]: JsonValue$1;\n}\ntype JsonValue$1 = string | number | boolean | null | JsonValue$1[] | JsonObject;\n\ndeclare const appThemeSchema: z$1.ZodObject<{\n    themeId: z$1.ZodString;\n    customCss: z$1.ZodNullable<z$1.ZodString>;\n    faviconColor: z$1.ZodEnum<{\n        default: \"default\";\n        red: \"red\";\n        orange: \"orange\";\n        yellow: \"yellow\";\n        green: \"green\";\n        teal: \"teal\";\n        blue: \"blue\";\n        purple: \"purple\";\n        pink: \"pink\";\n    }>;\n    resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n        dark: z$1.ZodString;\n        light: z$1.ZodString;\n        files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>;\ntype AppTheme = z$1.infer<typeof appThemeSchema>;\n/**\n * The complete appearance selection a client sends when changing the palette\n * and/or favicon tint. The server validates `themeId` (built-in id or an\n * existing custom theme) and resolves the CSS from disk for custom themes.\n * Callers changing only one facet must carry the other facet forward explicitly.\n */\ndeclare const appThemeSelectionSchema: z$1.ZodObject<{\n    themeId: z$1.ZodString;\n    faviconColor: z$1.ZodEnum<{\n        default: \"default\";\n        red: \"red\";\n        orange: \"orange\";\n        yellow: \"yellow\";\n        green: \"green\";\n        teal: \"teal\";\n        blue: \"blue\";\n        purple: \"purple\";\n        pink: \"pink\";\n    }>;\n}, z$1.core.$strip>;\ntype AppThemeSelection = z$1.infer<typeof appThemeSelectionSchema>;\n\ndeclare const changedMessageSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"thread\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    metadata: z$1.ZodOptional<z$1.ZodObject<{\n        backgroundActivityChanged: z$1.ZodOptional<z$1.ZodBoolean>;\n        eventTypes: z$1.ZodOptional<z$1.ZodReadonly<z$1.ZodArray<z$1.ZodString & z$1.ZodType<\"thread/started\" | \"thread/identity\" | \"turn/started\" | \"turn/completed\" | \"turn/input/accepted\" | \"thread/name/updated\" | \"thread/compacted\" | \"thread/context/cleared\" | \"thread/goal/updated\" | \"thread/goal/cleared\" | \"item/started\" | \"item/completed\" | \"item/agentMessage/delta\" | \"item/commandExecution/outputDelta\" | \"item/fileChange/outputDelta\" | \"item/reasoning/summaryTextDelta\" | \"item/reasoning/textDelta\" | \"item/plan/delta\" | \"item/mcpToolCall/progress\" | \"item/toolCall/progress\" | \"item/backgroundTask/progress\" | \"item/backgroundTask/completed\" | \"thread/tokenUsage/updated\" | \"thread/contextWindowUsage/updated\" | \"turn/plan/updated\" | \"turn/diff/updated\" | \"provider/error\" | \"provider/rateLimits/updated\" | \"provider/warning\" | \"provider/modelFallback\" | \"provider/unhandled\" | \"client/thread/start\" | \"client/turn/requested\" | \"client/turn/start\" | \"client/turn/rejected\" | \"system/error\" | \"system/manager/user_message\" | \"system/thread/interrupted\" | \"system/operation\" | \"system/permissionGrant/lifecycle\" | \"system/userQuestion/lifecycle\" | \"system/thread-provisioning\" | \"system/provider-turn-watchdog\", string, z$1.core.$ZodTypeInternals<\"thread/started\" | \"thread/identity\" | \"turn/started\" | \"turn/completed\" | \"turn/input/accepted\" | \"thread/name/updated\" | \"thread/compacted\" | \"thread/context/cleared\" | \"thread/goal/updated\" | \"thread/goal/cleared\" | \"item/started\" | \"item/completed\" | \"item/agentMessage/delta\" | \"item/commandExecution/outputDelta\" | \"item/fileChange/outputDelta\" | \"item/reasoning/summaryTextDelta\" | \"item/reasoning/textDelta\" | \"item/plan/delta\" | \"item/mcpToolCall/progress\" | \"item/toolCall/progress\" | \"item/backgroundTask/progress\" | \"item/backgroundTask/completed\" | \"thread/tokenUsage/updated\" | \"thread/contextWindowUsage/updated\" | \"turn/plan/updated\" | \"turn/diff/updated\" | \"provider/error\" | \"provider/rateLimits/updated\" | \"provider/warning\" | \"provider/modelFallback\" | \"provider/unhandled\" | \"client/thread/start\" | \"client/turn/requested\" | \"client/turn/start\" | \"client/turn/rejected\" | \"system/error\" | \"system/manager/user_message\" | \"system/thread/interrupted\" | \"system/operation\" | \"system/permissionGrant/lifecycle\" | \"system/userQuestion/lifecycle\" | \"system/thread-provisioning\" | \"system/provider-turn-watchdog\", string>>>>>;\n        hasPendingInteraction: z$1.ZodOptional<z$1.ZodBoolean>;\n        projectId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"thread-created\": \"thread-created\";\n        \"thread-deleted\": \"thread-deleted\";\n        \"events-appended\": \"events-appended\";\n        \"history-rewritten\": \"history-rewritten\";\n        \"interactions-changed\": \"interactions-changed\";\n        \"status-changed\": \"status-changed\";\n        \"title-changed\": \"title-changed\";\n        \"queue-changed\": \"queue-changed\";\n        \"archived-changed\": \"archived-changed\";\n        \"pin-state-changed\": \"pin-state-changed\";\n        \"parent-changed\": \"parent-changed\";\n        \"environment-changed\": \"environment-changed\";\n        \"read-state-changed\": \"read-state-changed\";\n        \"order-changed\": \"order-changed\";\n        \"tabs-changed\": \"tabs-changed\";\n        \"terminals-changed\": \"terminals-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"project\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"project-created\": \"project-created\";\n        \"project-updated\": \"project-updated\";\n        \"project-deleted\": \"project-deleted\";\n        \"project-sources-changed\": \"project-sources-changed\";\n        \"threads-changed\": \"threads-changed\";\n        \"project-order-changed\": \"project-order-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"environment\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"status-changed\": \"status-changed\";\n        \"environment-created\": \"environment-created\";\n        \"environment-deleted\": \"environment-deleted\";\n        \"metadata-changed\": \"metadata-changed\";\n        \"work-status-changed\": \"work-status-changed\";\n        \"git-refs-changed\": \"git-refs-changed\";\n        \"thread-storage-changed\": \"thread-storage-changed\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"host\">;\n    id: z$1.ZodOptional<z$1.ZodString>;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"host-connected\": \"host-connected\";\n        \"host-disconnected\": \"host-disconnected\";\n    }>>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"changed\">;\n    entity: z$1.ZodLiteral<\"system\">;\n    changes: z$1.ZodReadonly<z$1.ZodArray<z$1.ZodEnum<{\n        \"config-changed\": \"config-changed\";\n        \"plugins-changed\": \"plugins-changed\";\n    }>>>;\n}, z$1.core.$strict>], \"entity\">;\ntype ChangedMessage = z$1.infer<typeof changedMessageSchema>;\n\ndeclare const environmentSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodNullable<z$1.ZodString>;\n    projectId: z$1.ZodString;\n    hostId: z$1.ZodString;\n    path: z$1.ZodNullable<z$1.ZodString>;\n    managed: z$1.ZodBoolean;\n    isGitRepo: z$1.ZodBoolean;\n    isWorktree: z$1.ZodBoolean;\n    workspaceProvisionType: z$1.ZodEnum<{\n        unmanaged: \"unmanaged\";\n        \"managed-worktree\": \"managed-worktree\";\n        personal: \"personal\";\n    }>;\n    branchName: z$1.ZodNullable<z$1.ZodString>;\n    baseBranch: z$1.ZodNullable<z$1.ZodString>;\n    defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    mergeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        provisioning: \"provisioning\";\n        ready: \"ready\";\n        retiring: \"retiring\";\n        destroying: \"destroying\";\n        destroyed: \"destroyed\";\n    }>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype Environment = z$1.infer<typeof environmentSchema>;\n\ndeclare const experimentsSchema: z$1.ZodRecord<z$1.ZodEnum<{\n    claudeCodeMockCliTraffic: \"claudeCodeMockCliTraffic\";\n    editMessages: \"editMessages\";\n    newOnboarding: \"newOnboarding\";\n    providerSessionReaping: \"providerSessionReaping\";\n}>, z$1.ZodBoolean>;\ntype Experiments = z$1.infer<typeof experimentsSchema>;\n\ndeclare const hostSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    type: z$1.ZodEnum<{\n        persistent: \"persistent\";\n    }>;\n    status: z$1.ZodEnum<{\n        connected: \"connected\";\n        disconnected: \"disconnected\";\n    }>;\n    maxPermissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    lastSeenAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastRejectedProtocolVersion: z$1.ZodNullable<z$1.ZodNumber>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype Host = z$1.infer<typeof hostSchema>;\n\ndeclare const pendingInteractionResolutionSchema: z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"allow_once\">;\n    grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n        network: z$1.ZodNullable<z$1.ZodObject<{\n            enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n        }, z$1.core.$strip>>;\n        fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n            read: z$1.ZodArray<z$1.ZodString>;\n            write: z$1.ZodArray<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"allow_for_session\">;\n    grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n        network: z$1.ZodNullable<z$1.ZodObject<{\n            enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n        }, z$1.core.$strip>>;\n        fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n            read: z$1.ZodArray<z$1.ZodString>;\n            write: z$1.ZodArray<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    decision: z$1.ZodLiteral<\"deny\">;\n}, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"user_answer\">;\n    answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n        selected: z$1.ZodArray<z$1.ZodString>;\n        freeText: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"plugin_submitted\">;\n}, z$1.core.$strip>]>;\ntype PendingInteractionResolution = z$1.infer<typeof pendingInteractionResolutionSchema>;\ndeclare const providerPendingInteractionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    origin: z$1.ZodOptional<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"provider\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    payload: z$1.ZodUnion<readonly [z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"approval\">;\n        subject: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            itemId: z$1.ZodString;\n            command: z$1.ZodString;\n            cwd: z$1.ZodNullable<z$1.ZodString>;\n            actions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"read\">;\n                command: z$1.ZodString;\n                name: z$1.ZodString;\n                path: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"listFiles\">;\n                command: z$1.ZodString;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"search\">;\n                command: z$1.ZodString;\n                query: z$1.ZodNullable<z$1.ZodString>;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"unknown\">;\n                command: z$1.ZodString;\n            }, z$1.core.$strip>], \"type\">>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"file_change\">;\n            itemId: z$1.ZodString;\n            writeScope: z$1.ZodNullable<z$1.ZodString>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"permission_grant\">;\n            itemId: z$1.ZodString;\n            toolName: z$1.ZodNullable<z$1.ZodString>;\n            permissions: z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            itemId: z$1.ZodString;\n            plan: z$1.ZodString;\n            planFilePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"kind\">;\n        reason: z$1.ZodNullable<z$1.ZodString>;\n        availableDecisions: z$1.ZodArray<z$1.ZodEnum<{\n            allow_once: \"allow_once\";\n            allow_for_session: \"allow_for_session\";\n            deny: \"deny\";\n        }>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>;\n    resolution: z$1.ZodNullable<z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>>;\n}, z$1.core.$strip>;\ntype ProviderPendingInteraction = z$1.infer<typeof providerPendingInteractionSchema>;\ndeclare const pluginPendingInteractionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    origin: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        pluginId: z$1.ZodString;\n        rendererId: z$1.ZodString;\n    }, z$1.core.$strip>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        title: z$1.ZodString;\n        data: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strip>;\n    resolution: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin_submitted\">;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginPendingInteraction = z$1.infer<typeof pluginPendingInteractionSchema>;\ntype PendingInteraction = ProviderPendingInteraction | PluginPendingInteraction;\n\ndeclare const projectSourceSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    isDefault: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    type: z$1.ZodLiteral<\"local_path\">;\n    hostId: z$1.ZodString;\n    path: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ProjectSource = z$1.infer<typeof projectSourceSchema>;\n\ndeclare const reasoningLevelSchema: z$1.ZodEnum<{\n    none: \"none\";\n    low: \"low\";\n    medium: \"medium\";\n    high: \"high\";\n    xhigh: \"xhigh\";\n    ultracode: \"ultracode\";\n    max: \"max\";\n    ultra: \"ultra\";\n}>;\ntype ReasoningLevel = z$1.infer<typeof reasoningLevelSchema>;\ndeclare const serviceTierSchema: z$1.ZodEnum<{\n    default: \"default\";\n    fast: \"fast\";\n}>;\ntype ServiceTier = z$1.infer<typeof serviceTierSchema>;\ndeclare const permissionModeSchema: z$1.ZodEnum<{\n    full: \"full\";\n    auto: \"auto\";\n    \"accept-edits\": \"accept-edits\";\n}>;\ntype PermissionMode = z$1.infer<typeof permissionModeSchema>;\ndeclare const promptInputSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"text\">;\n    text: z$1.ZodString;\n    mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n        start: z$1.ZodNumber;\n        end: z$1.ZodNumber;\n        resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"thread\">;\n            threadId: z$1.ZodString;\n            projectId: z$1.ZodOptional<z$1.ZodString>;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"project\">;\n            projectId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"section\">;\n            sectionId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"path\">;\n            source: z$1.ZodEnum<{\n                workspace: \"workspace\";\n                \"thread-storage\": \"thread-storage\";\n            }>;\n            entryKind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                user: \"user\";\n                project: \"project\";\n                builtin: \"builtin\";\n            }>;\n            label: z$1.ZodString;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin\">;\n            pluginId: z$1.ZodString;\n            icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n            itemId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">>;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"image\">;\n    url: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"localImage\">;\n    path: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z$1.ZodLiteral<\"localFile\">;\n    path: z$1.ZodString;\n    name: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>], \"type\">;\ntype PromptInput = z$1.infer<typeof promptInputSchema>;\ndeclare const resolvedThreadExecutionOptionsSchema: z$1.ZodObject<{\n    seq: z$1.ZodOptional<z$1.ZodNumber>;\n    model: z$1.ZodString;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    source: z$1.ZodEnum<{\n        \"client/thread/start\": \"client/thread/start\";\n        \"client/turn/requested\": \"client/turn/requested\";\n        \"client/turn/start\": \"client/turn/start\";\n    }>;\n}, z$1.core.$strip>;\ntype ResolvedThreadExecutionOptions = z$1.infer<typeof resolvedThreadExecutionOptionsSchema>;\ndeclare const projectExecutionDefaultsSchema: z$1.ZodObject<{\n    providerId: z$1.ZodString;\n    model: z$1.ZodString;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n}, z$1.core.$strip>;\ntype ProjectExecutionDefaults = z$1.infer<typeof projectExecutionDefaultsSchema>;\n\n/** All thread events — provider-originated or system-originated. */\ndeclare const threadEventSchema: z$1.ZodPipe<z$1.ZodUnknown, z$1.ZodUnion<readonly [z$1.ZodIntersection<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/started\">;\n    threadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/identity\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/started\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        completed: \"completed\";\n        failed: \"failed\";\n        interrupted: \"interrupted\";\n    }>;\n    error: z$1.ZodOptional<z$1.ZodObject<{\n        message: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    providerCheckpointId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/input/accepted\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    clientRequestId: z$1.ZodString;\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/name/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    threadName: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/compacted\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/context/cleared\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/goal/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    objective: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        paused: \"paused\";\n        active: \"active\";\n        budgetLimited: \"budgetLimited\";\n        complete: \"complete\";\n    }>;\n    tokenBudget: z$1.ZodNullable<z$1.ZodNumber>;\n    tokensUsed: z$1.ZodNumber;\n    timeUsedSeconds: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/goal/cleared\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/started\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"userMessage\">;\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n        clientRequestId: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"agentMessage\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commandExecution\">;\n        id: z$1.ZodString;\n        command: z$1.ZodString;\n        cwd: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        aggregatedOutput: z$1.ZodOptional<z$1.ZodString>;\n        exitCode: z$1.ZodOptional<z$1.ZodNumber>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"fileChange\">;\n        id: z$1.ZodString;\n        changes: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                add: \"add\";\n                delete: \"delete\";\n                update: \"update\";\n            }>;\n            movePath: z$1.ZodOptional<z$1.ZodString>;\n            diff: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webSearch\">;\n        id: z$1.ZodString;\n        queries: z$1.ZodArray<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webFetch\">;\n        id: z$1.ZodString;\n        url: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        pattern: z$1.ZodNullable<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"imageView\">;\n        id: z$1.ZodString;\n        path: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"toolCall\">;\n        id: z$1.ZodString;\n        server: z$1.ZodOptional<z$1.ZodString>;\n        tool: z$1.ZodString;\n        arguments: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n            pending: z$1.ZodString;\n            completed: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        result: z$1.ZodOptional<z$1.ZodUnknown>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reasoning\">;\n        id: z$1.ZodString;\n        summary: z$1.ZodArray<z$1.ZodString>;\n        content: z$1.ZodArray<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plan\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"contextCompaction\">;\n        id: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"userMessage\">;\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n        clientRequestId: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"agentMessage\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commandExecution\">;\n        id: z$1.ZodString;\n        command: z$1.ZodString;\n        cwd: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        aggregatedOutput: z$1.ZodOptional<z$1.ZodString>;\n        exitCode: z$1.ZodOptional<z$1.ZodNumber>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"fileChange\">;\n        id: z$1.ZodString;\n        changes: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                add: \"add\";\n                delete: \"delete\";\n                update: \"update\";\n            }>;\n            movePath: z$1.ZodOptional<z$1.ZodString>;\n            diff: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            waiting_for_approval: \"waiting_for_approval\";\n            denied: \"denied\";\n        }>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webSearch\">;\n        id: z$1.ZodString;\n        queries: z$1.ZodArray<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"webFetch\">;\n        id: z$1.ZodString;\n        url: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        pattern: z$1.ZodNullable<z$1.ZodString>;\n        resultText: z$1.ZodNullable<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"imageView\">;\n        id: z$1.ZodString;\n        path: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"toolCall\">;\n        id: z$1.ZodString;\n        server: z$1.ZodOptional<z$1.ZodString>;\n        tool: z$1.ZodString;\n        arguments: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n            pending: z$1.ZodString;\n            completed: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        result: z$1.ZodOptional<z$1.ZodUnknown>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        truncation: z$1.ZodOptional<z$1.ZodObject<{\n            aggregatedOutput: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            result: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n            resultText: z$1.ZodOptional<z$1.ZodObject<{\n                originalLength: z$1.ZodNumber;\n                retainedHeadLength: z$1.ZodNumber;\n                retainedTailLength: z$1.ZodNumber;\n                truncatedAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reasoning\">;\n        id: z$1.ZodString;\n        summary: z$1.ZodArray<z$1.ZodString>;\n        content: z$1.ZodArray<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plan\">;\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"contextCompaction\">;\n        id: z$1.ZodString;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/agentMessage/delta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/commandExecution/outputDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    reset: z$1.ZodOptional<z$1.ZodBoolean>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/fileChange/outputDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/reasoning/summaryTextDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/reasoning/textDelta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/plan/delta\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    delta: z$1.ZodString;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/mcpToolCall/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    message: z$1.ZodOptional<z$1.ZodString>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/toolCall/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    itemId: z$1.ZodString;\n    message: z$1.ZodOptional<z$1.ZodString>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/backgroundTask/progress\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"item/backgroundTask/completed\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    item: z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"backgroundTask\">;\n        id: z$1.ZodString;\n        taskType: z$1.ZodString;\n        description: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            interrupted: \"interrupted\";\n        }>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            running: \"running\";\n            paused: \"paused\";\n            completed: \"completed\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        skipTranscript: z$1.ZodBoolean;\n        workflowName: z$1.ZodOptional<z$1.ZodString>;\n        workflow: z$1.ZodOptional<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodOptional<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodOptional<z$1.ZodString>;\n        error: z$1.ZodOptional<z$1.ZodString>;\n        outputFile: z$1.ZodOptional<z$1.ZodString>;\n        parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/tokenUsage/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    tokenUsage: z$1.ZodObject<{\n        total: z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            inputTokens: z$1.ZodNumber;\n            cachedInputTokens: z$1.ZodNumber;\n            outputTokens: z$1.ZodNumber;\n            reasoningOutputTokens: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        last: z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            inputTokens: z$1.ZodNumber;\n            cachedInputTokens: z$1.ZodNumber;\n            outputTokens: z$1.ZodNumber;\n            reasoningOutputTokens: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        modelContextWindow: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"thread/contextWindowUsage/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    contextWindowUsage: z$1.ZodObject<{\n        usedTokens: z$1.ZodNullable<z$1.ZodNumber>;\n        modelContextWindow: z$1.ZodNullable<z$1.ZodNumber>;\n        estimated: z$1.ZodBoolean;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/plan/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    plan: z$1.ZodArray<z$1.ZodObject<{\n        step: z$1.ZodString;\n        status: z$1.ZodOptional<z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            failed: \"failed\";\n            active: \"active\";\n        }>>;\n    }, z$1.core.$strip>>;\n    explanation: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"turn/diff/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    diff: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/error\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    message: z$1.ZodString;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n    willRetry: z$1.ZodOptional<z$1.ZodBoolean>;\n    errorInfo: z$1.ZodOptional<z$1.ZodObject<{\n        category: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"active-turn-not-steerable\": \"active-turn-not-steerable\";\n            \"bad-request\": \"bad-request\";\n            \"connection-failed\": \"connection-failed\";\n            \"context-window-exceeded\": \"context-window-exceeded\";\n            billing: \"billing\";\n            \"budget-exceeded\": \"budget-exceeded\";\n            internal: \"internal\";\n            \"max-output-tokens\": \"max-output-tokens\";\n            \"max-turns\": \"max-turns\";\n            overloaded: \"overloaded\";\n            policy: \"policy\";\n            \"rate-limit\": \"rate-limit\";\n            sandbox: \"sandbox\";\n            \"stream-disconnected\": \"stream-disconnected\";\n            \"structured-output-retries\": \"structured-output-retries\";\n            \"thread-rollback-failed\": \"thread-rollback-failed\";\n            \"too-many-failed-attempts\": \"too-many-failed-attempts\";\n            unauthorized: \"unauthorized\";\n        }>;\n        providerCode: z$1.ZodNullable<z$1.ZodString>;\n        httpStatusCode: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/rateLimits/updated\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    rateLimits: z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            allowed: \"allowed\";\n            warning: \"warning\";\n            blocked: \"blocked\";\n        }>;\n        kind: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"subscription-window\": \"subscription-window\";\n            credits: \"credits\";\n            \"spend-control\": \"spend-control\";\n        }>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            providerKey: z$1.ZodNullable<z$1.ZodString>;\n            label: z$1.ZodNullable<z$1.ZodString>;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                allowed: \"allowed\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n            }>;\n            resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        reachedReason: z$1.ZodNullable<z$1.ZodString>;\n        overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            allowed: \"allowed\";\n            warning: \"warning\";\n            rejected: \"rejected\";\n            unavailable: \"unavailable\";\n        }>>;\n        overageReason: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/warning\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    category: z$1.ZodEnum<{\n        deprecation: \"deprecation\";\n        config: \"config\";\n        general: \"general\";\n    }>;\n    summary: z$1.ZodOptional<z$1.ZodString>;\n    details: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/modelFallback\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    originalModel: z$1.ZodString;\n    fallbackModel: z$1.ZodString;\n    reason: z$1.ZodEnum<{\n        refusal: \"refusal\";\n        provider: \"provider\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"provider/unhandled\">;\n    threadId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    rawType: z$1.ZodString;\n    rawEvent: z$1.ZodObject<{\n        jsonrpc: z$1.ZodLiteral<\"2.0\">;\n        id: z$1.ZodOptional<z$1.ZodUnion<readonly [z$1.ZodString, z$1.ZodNumber]>>;\n        method: z$1.ZodString;\n        params: z$1.ZodOptional<z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>;\n    }, z$1.core.$strip>;\n    parentToolCallId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>], \"type\">, z$1.ZodObject<{\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strip>>, z$1.ZodIntersection<z$1.ZodUnion<readonly [z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/thread/start\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/requested\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    requestId: z$1.ZodString;\n    continuationOfRequestId: z$1.ZodOptional<z$1.ZodString>;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    senderThreadId: z$1.ZodNullable<z$1.ZodString>;\n    systemMessageKind: z$1.ZodOptional<z$1.ZodEnum<{\n        \"ownership-assigned\": \"ownership-assigned\";\n        \"ownership-removed\": \"ownership-removed\";\n        \"child-needs-attention\": \"child-needs-attention\";\n        \"child-completed\": \"child-completed\";\n        \"child-failed\": \"child-failed\";\n        \"child-interrupted\": \"child-interrupted\";\n        \"child-outcome-batch\": \"child-outcome-batch\";\n        unlabeled: \"unlabeled\";\n    }>>;\n    systemMessageSubject: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n        threadName: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-batch\">;\n        count: z$1.ZodNumber;\n    }, z$1.core.$strip>], \"kind\">>>;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>>>;\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-start\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"new-turn\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"auto\">;\n        expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"steer\">;\n        expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>], \"kind\">;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n    execution: z$1.ZodObject<{\n        seq: z$1.ZodOptional<z$1.ZodNumber>;\n        model: z$1.ZodString;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        source: z$1.ZodEnum<{\n            \"client/thread/start\": \"client/thread/start\";\n            \"client/turn/requested\": \"client/turn/requested\";\n            \"client/turn/start\": \"client/turn/start\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            readonly: \"readonly\";\n            full: \"full\";\n            auto: \"auto\";\n            \"accept-edits\": \"accept-edits\";\n            \"workspace-write\": \"workspace-write\";\n        }>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/rejected\">;\n    threadId: z$1.ZodString;\n    requestId: z$1.ZodString;\n    reason: z$1.ZodString;\n    message: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"client/turn/start\">;\n    threadId: z$1.ZodString;\n    direction: z$1.ZodLiteral<\"outbound\">;\n    source: z$1.ZodEnum<{\n        spawn: \"spawn\";\n        tell: \"tell\";\n    }>;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        system: \"system\";\n        agent: \"agent\";\n    }>;\n    request: z$1.ZodObject<{\n        method: z$1.ZodEnum<{\n            \"thread/start\": \"thread/start\";\n            \"turn/start\": \"turn/start\";\n        }>;\n        params: z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/error\">;\n    threadId: z$1.ZodString;\n    code: z$1.ZodOptional<z$1.ZodString>;\n    message: z$1.ZodString;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n    reconnectAttempt: z$1.ZodOptional<z$1.ZodNumber>;\n    reconnectTotal: z$1.ZodOptional<z$1.ZodNumber>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/manager/user_message\">;\n    threadId: z$1.ZodString;\n    text: z$1.ZodString;\n    toolCallId: z$1.ZodOptional<z$1.ZodString>;\n    turnId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/thread/interrupted\">;\n    threadId: z$1.ZodString;\n    reason: z$1.ZodEnum<{\n        \"manual-stop\": \"manual-stop\";\n        \"host-daemon-restarted\": \"host-daemon-restarted\";\n        \"provider-turn-idle\": \"provider-turn-idle\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/operation\">;\n    threadId: z$1.ZodString;\n    operation: z$1.ZodString;\n    status: z$1.ZodString;\n    message: z$1.ZodString;\n    operationId: z$1.ZodString;\n    metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/permissionGrant/lifecycle\">;\n    threadId: z$1.ZodString;\n    interactionId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    resolution: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">>>;\n    statusReason: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    subject: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"permission_grant\">;\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n        permissions: z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/userQuestion/lifecycle\">;\n    threadId: z$1.ZodString;\n    interactionId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    resolution: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>>;\n    statusReason: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/thread-provisioning\">;\n    threadId: z$1.ZodString;\n    provisioningId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        completed: \"completed\";\n        failed: \"failed\";\n        active: \"active\";\n        cancelled: \"cancelled\";\n    }>;\n    environmentId: z$1.ZodString;\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        type: z$1.ZodEnum<{\n            output: \"output\";\n            step: \"step\";\n        }>;\n        key: z$1.ZodString;\n        text: z$1.ZodString;\n        startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n        status: z$1.ZodOptional<z$1.ZodEnum<{\n            completed: \"completed\";\n            failed: \"failed\";\n            started: \"started\";\n        }>>;\n        metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"system/provider-turn-watchdog\">;\n    threadId: z$1.ZodString;\n    reason: z$1.ZodLiteral<\"provider-turn-idle\">;\n    thresholdMs: z$1.ZodNumber;\n    elapsedMs: z$1.ZodNumber;\n    activeTurnId: z$1.ZodString;\n    activeTurnStartedAt: z$1.ZodNumber;\n    lastActivityEventSequence: z$1.ZodNumber;\n    lastActivityEventType: z$1.ZodString;\n    lastActivityEventAt: z$1.ZodNumber;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodNullable<z$1.ZodString>;\n    firedAt: z$1.ZodNumber;\n}, z$1.core.$strip>]>, z$1.ZodObject<{\n    scope: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"turn\">;\n        turnId: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n}, z$1.core.$strip>>]>>;\ntype ThreadEvent = z$1.infer<typeof threadEventSchema>;\ntype ThreadEventType = ThreadEvent[\"type\"];\n\n/**\n * How completely a provider can clone one of its sessions — the single\n * vocabulary shared by the provider declaration\n * (`bb.agents.experimental_registerProvider`), the server→daemon\n * `bridgeLaunch`, and the bridge's `initialize` handshake.\n *\n * - `\"none\"`: sessions cannot be cloned at all.\n * - `\"tip\"`: only the current end of a session can be cloned (ACP\n *   `session/fork`), so thread fork works but edit-past-message rewind\n *   cannot.\n * - `\"checkpoint\"`: a session can be recreated at an earlier point, which is\n *   what edit-past-message rewind needs.\n *\n * The values are ordered least to most capable: a declaration is a ceiling\n * the handshake may narrow but never widen.\n */\ndeclare const PROVIDER_FORK_VALUES: readonly [\"none\", \"tip\", \"checkpoint\"];\ntype ProviderFork = (typeof PROVIDER_FORK_VALUES)[number];\n\ndeclare const providerInfoSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    displayName: z$1.ZodString;\n    logoUrl: z$1.ZodNullable<z$1.ZodString>;\n    capabilities: z$1.ZodObject<{\n        supportsThreadArchive: z$1.ZodBoolean;\n        supportsThreadRename: z$1.ZodBoolean;\n        supportsServiceTier: z$1.ZodBoolean;\n        supportsNativeUserQuestion: z$1.ZodBoolean;\n        supportsFork: z$1.ZodBoolean;\n        supportsSessionRewind: z$1.ZodBoolean;\n        permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n            full: \"full\";\n            auto: \"auto\";\n            \"accept-edits\": \"accept-edits\";\n        }>>;\n    }, z$1.core.$strip>;\n    composerActions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"skills\">;\n        trigger: z$1.ZodEnum<{\n            \"/\": \"/\";\n        }>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plan\">;\n        command: z$1.ZodObject<{\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            trailingText: z$1.ZodString;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"goal\">;\n        command: z$1.ZodObject<{\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            trailingText: z$1.ZodString;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>], \"kind\">>;\n    available: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype ProviderInfo = z$1.infer<typeof providerInfoSchema>;\n\ndeclare const threadEventScopeSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"thread\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"turn\">;\n    turnId: z$1.ZodString;\n}, z$1.core.$strip>], \"kind\">;\ntype ThreadEventScope = z$1.infer<typeof threadEventScopeSchema>;\n\ntype ThreadEventByType = {\n    [TType in ThreadEventType]: Extract<ThreadEvent, {\n        type: TType;\n    }>;\n};\ntype ThreadEventForType<TType extends ThreadEventType> = ThreadEventByType[TType];\ntype StoredThreadEventDataFromEvent<TEvent extends ThreadEvent> = Omit<TEvent, \"threadId\" | \"type\" | \"scope\">;\ninterface ThreadEventRowBase {\n    id: string;\n    scope: ThreadEventScope;\n    threadId: string;\n    seq: number;\n    createdAt: number;\n}\ntype ThreadEventRowFromEvent<TEvent extends ThreadEvent> = ThreadEventRowBase & {\n    type: TEvent[\"type\"];\n    data: StoredThreadEventDataFromEvent<TEvent>;\n};\ntype ThreadEventRowOfType<TType extends ThreadEventType> = ThreadEventRowFromEvent<ThreadEventForType<TType>>;\ntype ThreadEventRow = {\n    [TType in ThreadEventType]: ThreadEventRowOfType<TType>;\n}[ThreadEventType];\n\ndeclare const threadStatusSchema: z$1.ZodEnum<{\n    error: \"error\";\n    active: \"active\";\n    starting: \"starting\";\n    idle: \"idle\";\n    stopping: \"stopping\";\n}>;\ntype ThreadStatus = z$1.infer<typeof threadStatusSchema>;\n\ndeclare const threadTimelinePendingTodosSchema: z$1.ZodObject<{\n    sourceSeq: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    items: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            in_progress: \"in_progress\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ThreadTimelinePendingTodos = z$1.infer<typeof threadTimelinePendingTodosSchema>;\n\ndeclare const threadQueuedMessageSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodString;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        full: \"full\";\n        auto: \"auto\";\n        \"accept-edits\": \"accept-edits\";\n    }>;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    groupWithNext: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadQueuedMessage = z$1.infer<typeof threadQueuedMessageSchema>;\n\ndeclare const createThreadEnvironmentArgsSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"reuse\">;\n    environmentId: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"host\">;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    workspace: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unmanaged\">;\n        path: z$1.ZodNullable<z$1.ZodString>;\n        branch: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"existing\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"new\">;\n            baseBranch: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"managed-worktree\">;\n        baseBranch: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"named\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"default\">;\n        }, z$1.core.$strip>], \"kind\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"personal\">;\n    }, z$1.core.$strip>], \"type\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"project-default\">;\n}, z$1.core.$strip>], \"type\">;\ntype CreateThreadEnvironmentArgs = z$1.infer<typeof createThreadEnvironmentArgsSchema>;\ndeclare const workspaceFileListResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype WorkspaceFileListResponse = z$1.infer<typeof workspaceFileListResponseSchema>;\ndeclare const workspacePathListResponseSchema: z$1.ZodObject<{\n    paths: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        score: z$1.ZodNumber;\n        positions: z$1.ZodArray<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype WorkspacePathListResponse = z$1.infer<typeof workspacePathListResponseSchema>;\n\ndeclare const createProjectSourceRequestSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    hostId: z$1.ZodString;\n    type: z$1.ZodLiteral<\"local_path\">;\n    path: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    hostId: z$1.ZodString;\n    type: z$1.ZodLiteral<\"clone\">;\n    targetPath: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>>;\n    remoteUrl: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>], \"type\">;\ntype CreateProjectSourceRequest = z$1.infer<typeof createProjectSourceRequestSchema>;\ndeclare const createProjectRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    source: z$1.ZodObject<{\n        hostId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"local_path\">;\n        path: z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strip>;\ntype CreateProjectRequest = z$1.infer<typeof createProjectRequestSchema>;\ndeclare const threadSectionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadSectionResponse = z$1.infer<typeof threadSectionSchema>;\ndeclare const createThreadSectionRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype CreateThreadSectionRequest = z$1.infer<typeof createThreadSectionRequestSchema>;\ndeclare const updateThreadSectionRequestSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateThreadSectionRequest = z$1.infer<typeof updateThreadSectionRequestSchema>;\ndeclare const deleteThreadSectionRequestSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n}, z$1.core.$strict>;\ntype DeleteThreadSectionRequest = z$1.infer<typeof deleteThreadSectionRequestSchema>;\ndeclare const threadSectionMutationResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    name: z$1.ZodString;\n    updatedThreadCount: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadSectionMutationResponse = z$1.infer<typeof threadSectionMutationResponseSchema>;\ndeclare const reorderProjectRequestSchema: z$1.ZodObject<{\n    previousProjectId: z$1.ZodNullable<z$1.ZodString>;\n    nextProjectId: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderProjectRequest = z$1.infer<typeof reorderProjectRequestSchema>;\ndeclare const projectListQuerySchema: z$1.ZodObject<{\n    include: z$1.ZodOptional<z$1.ZodString>;\n    includePersonal: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n}, z$1.core.$strip>;\ntype ProjectListQuery = z$1.infer<typeof projectListQuerySchema>;\ndeclare const projectFilesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    limit: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectFilesQuery = z$1.infer<typeof projectFilesQuerySchema>;\ndeclare const projectPathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    limit: z$1.ZodOptional<z$1.ZodOptional<z$1.ZodString>>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectPathsQuery = z$1.infer<typeof projectPathsQuerySchema>;\ndeclare const projectFileContentQuerySchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strip>;\ntype ProjectFileContentQuery = z$1.infer<typeof projectFileContentQuerySchema>;\ndeclare const projectBranchesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    hostId: z$1.ZodString;\n    selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ProjectBranchesQuery = z$1.infer<typeof projectBranchesQuerySchema>;\ndeclare const projectBranchesResponseSchema: z$1.ZodObject<{\n    branches: z$1.ZodArray<z$1.ZodString>;\n    branchesTruncated: z$1.ZodBoolean;\n    checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"branch\">;\n        branchName: z$1.ZodString;\n        headSha: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"detached\">;\n        headSha: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unborn\">;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unknown\">;\n        reason: z$1.ZodString;\n    }, z$1.core.$strip>], \"kind\">;\n    defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    defaultBranchRelation: z$1.ZodNullable<z$1.ZodEnum<{\n        unknown: \"unknown\";\n        equal: \"equal\";\n        \"local-behind\": \"local-behind\";\n        \"local-ahead\": \"local-ahead\";\n        diverged: \"diverged\";\n    }>>;\n    hasUncommittedChanges: z$1.ZodBoolean;\n    operation: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"none\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"merge\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"rebase\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"cherry-pick\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"revert\">;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"unknown\">;\n        reason: z$1.ZodString;\n        hasConflicts: z$1.ZodBoolean;\n    }, z$1.core.$strip>], \"kind\">;\n    originDefaultBranch: z$1.ZodNullable<z$1.ZodString>;\n    remoteBranches: z$1.ZodArray<z$1.ZodString>;\n    remoteBranchesTruncated: z$1.ZodBoolean;\n    selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        kind: z$1.ZodEnum<{\n            local: \"local\";\n            remote: \"remote\";\n            missing: \"missing\";\n        }>;\n    }, z$1.core.$strip>>;\n    defaultWorktreeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ProjectBranchesResponse = z$1.infer<typeof projectBranchesResponseSchema>;\ndeclare const promptHistoryQuerySchema: z$1.ZodObject<{\n    limit: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PromptHistoryQuery = z$1.infer<typeof promptHistoryQuerySchema>;\ndeclare const promptHistoryResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    createdAt: z$1.ZodNumber;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>>;\ntype PromptHistoryResponse = z$1.infer<typeof promptHistoryResponseSchema>;\ndeclare const updateProjectRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype UpdateProjectRequest = z$1.infer<typeof updateProjectRequestSchema>;\ndeclare const updateProjectSourceRequestSchema: z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"local_path\">;\n    path: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodTransform<string, string>>>;\n    isDefault: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n}, z$1.core.$strict>;\ntype UpdateProjectSourceRequest = z$1.infer<typeof updateProjectSourceRequestSchema>;\ndeclare const commandListResponseSchema: z$1.ZodObject<{\n    commands: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        source: z$1.ZodEnum<{\n            command: \"command\";\n            skill: \"skill\";\n        }>;\n        origin: z$1.ZodEnum<{\n            user: \"user\";\n            project: \"project\";\n            builtin: \"builtin\";\n        }>;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype CommandListResponse = z$1.infer<typeof commandListResponseSchema>;\n/** Query for the complete command catalog available to a project and provider. */\ndeclare const projectCommandsQuerySchema: z$1.ZodObject<{\n    provider: z$1.ZodString;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodOptional<z$1.ZodString>>>;\n}, z$1.core.$strict>;\ntype ProjectCommandsQuery = z$1.infer<typeof projectCommandsQuerySchema>;\ndeclare const skillListResponseSchema: z$1.ZodObject<{\n    skills: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        provider: z$1.ZodNullable<z$1.ZodString>;\n        scope: z$1.ZodEnum<{\n            plugin: \"plugin\";\n            \"bb-builtin\": \"bb-builtin\";\n            \"bb-user\": \"bb-user\";\n            \"bb-project\": \"bb-project\";\n            \"provider-user\": \"provider-user\";\n            \"provider-project\": \"provider-project\";\n            \"shared-user\": \"shared-user\";\n            \"shared-project\": \"shared-project\";\n        }>;\n        pluginId: z$1.ZodNullable<z$1.ZodString>;\n        filePath: z$1.ZodString;\n        manageable: z$1.ZodBoolean;\n        registrySkillId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SkillListResponse = z$1.infer<typeof skillListResponseSchema>;\ndeclare const skillContentResponseSchema: z$1.ZodObject<{\n    content: z$1.ZodString;\n    revision: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SkillContentResponse = z$1.infer<typeof skillContentResponseSchema>;\ndeclare const skillFilesResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodString>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype SkillFilesResponse = z$1.infer<typeof skillFilesResponseSchema>;\ndeclare const projectResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    kind: z$1.ZodEnum<{\n        standard: \"standard\";\n        personal: \"personal\";\n    }>;\n    name: z$1.ZodString;\n    gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    sources: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        isDefault: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        type: z$1.ZodLiteral<\"local_path\">;\n        hostId: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProjectResponse = z$1.infer<typeof projectResponseSchema>;\ndeclare const projectWithThreadsResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    kind: z$1.ZodEnum<{\n        standard: \"standard\";\n        personal: \"personal\";\n    }>;\n    name: z$1.ZodString;\n    gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    sources: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        isDefault: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        type: z$1.ZodLiteral<\"local_path\">;\n        hostId: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    threads: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        projectId: z$1.ZodString;\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        providerId: z$1.ZodString;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        titleFallback: z$1.ZodNullable<z$1.ZodString>;\n        sectionId: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n        }>;\n        parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n        originKind: z$1.ZodNullable<z$1.ZodEnum<{\n            fork: \"fork\";\n        }>>;\n        originPluginId: z$1.ZodNullable<z$1.ZodString>;\n        visibility: z$1.ZodEnum<{\n            visible: \"visible\";\n            hidden: \"hidden\";\n        }>;\n        archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n        latestAttentionAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        runtime: z$1.ZodObject<{\n            displayStatus: z$1.ZodEnum<{\n                error: \"error\";\n                provisioning: \"provisioning\";\n                stopping: \"stopping\";\n                idle: \"idle\";\n                starting: \"starting\";\n                active: \"active\";\n                \"host-reconnecting\": \"host-reconnecting\";\n                \"waiting-for-host\": \"waiting-for-host\";\n            }>;\n            hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>;\n        activity: z$1.ZodObject<{\n            activeWorkflowCount: z$1.ZodNumber;\n            activeBackgroundAgentCount: z$1.ZodNumber;\n            activeBackgroundCommandCount: z$1.ZodNumber;\n            activePlanModeCount: z$1.ZodNumber;\n            activeGoalCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n        hasPendingInteraction: z$1.ZodBoolean;\n        environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n        environmentName: z$1.ZodNullable<z$1.ZodString>;\n        environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n        environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n            \"managed-worktree\": \"managed-worktree\";\n            \"unmanaged-worktree\": \"unmanaged-worktree\";\n            other: \"other\";\n        }>;\n    }, z$1.core.$strip>>;\n    defaultExecutionOptions: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        model: z$1.ZodString;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProjectWithThreadsResponse = z$1.infer<typeof projectWithThreadsResponseSchema>;\ndeclare const uploadedPromptAttachmentSchema: z$1.ZodObject<{\n    type: z$1.ZodEnum<{\n        localImage: \"localImage\";\n        localFile: \"localFile\";\n    }>;\n    path: z$1.ZodString;\n    name: z$1.ZodString;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype UploadedPromptAttachment = z$1.infer<typeof uploadedPromptAttachmentSchema>;\ndeclare const copyProjectAttachmentsRequestSchema: z$1.ZodObject<{\n    sourceProjectId: z$1.ZodString;\n    paths: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype CopyProjectAttachmentsRequest = z$1.infer<typeof copyProjectAttachmentsRequestSchema>;\n\ndeclare const registrySkillSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    skillId: z$1.ZodString;\n    name: z$1.ZodString;\n    installs: z$1.ZodNumber;\n    stars: z$1.ZodNullable<z$1.ZodNumber>;\n    installUrl: z$1.ZodNullable<z$1.ZodString>;\n    url: z$1.ZodString;\n    topic: z$1.ZodNullable<z$1.ZodString>;\n    summary: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype RegistrySkill = z$1.infer<typeof registrySkillSchema>;\ndeclare const registrySkillsPageSchema: z$1.ZodObject<{\n    skills: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        skillId: z$1.ZodString;\n        name: z$1.ZodString;\n        installs: z$1.ZodNumber;\n        stars: z$1.ZodNullable<z$1.ZodNumber>;\n        installUrl: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n        topic: z$1.ZodNullable<z$1.ZodString>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    pagination: z$1.ZodObject<{\n        page: z$1.ZodNumber;\n        perPage: z$1.ZodNumber;\n        total: z$1.ZodNumber;\n        hasMore: z$1.ZodBoolean;\n    }, z$1.core.$strip>;\n    ranking: z$1.ZodEnum<{\n        trending: \"trending\";\n        \"all-time\": \"all-time\";\n    }>;\n}, z$1.core.$strip>;\ntype RegistrySkillsPage = z$1.infer<typeof registrySkillsPageSchema>;\ndeclare const registryRepositoryStarsSchema: z$1.ZodObject<{\n    stars: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype RegistryRepositoryStars = z$1.infer<typeof registryRepositoryStarsSchema>;\ndeclare const registrySkillDetailSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    skillId: z$1.ZodString;\n    hash: z$1.ZodNullable<z$1.ZodString>;\n    files: z$1.ZodNullable<z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        contents: z$1.ZodString;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>;\ntype RegistrySkillDetail = z$1.infer<typeof registrySkillDetailSchema>;\n/**\n * Entries that could not be resolved (dead detail page, malformed id) are\n * omitted rather than failing the batch: each entry is independent upstream,\n * and callers already treat a missing entry as \"unknown\" per card.\n */\ndeclare const registrySkillEntriesResponseSchema: z$1.ZodObject<{\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        skillId: z$1.ZodString;\n        name: z$1.ZodString;\n        installs: z$1.ZodNumber;\n        stars: z$1.ZodNullable<z$1.ZodNumber>;\n        installUrl: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n        topic: z$1.ZodNullable<z$1.ZodString>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype RegistrySkillEntriesResponse = z$1.infer<typeof registrySkillEntriesResponseSchema>;\ndeclare const registrySkillInstallResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    filePath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype RegistrySkillInstallResponse = z$1.infer<typeof registrySkillInstallResponseSchema>;\n\ndeclare const updateEnvironmentRequestSchema: z$1.ZodObject<{\n    mergeBaseBranch: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    name: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n}, z$1.core.$strip>;\ntype UpdateEnvironmentRequest = z$1.infer<typeof updateEnvironmentRequestSchema>;\n/**\n * Query for searching paths in an environment's workspace. Unlike the\n * project-scoped variant this needs no `environmentId` — the environment is\n * the route param — and is project-agnostic, so it works for projectless\n * (personal) environments too.\n */\ndeclare const environmentPathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n}, z$1.core.$strip>;\ntype EnvironmentPathsQuery = z$1.infer<typeof environmentPathsQuerySchema>;\ndeclare const environmentDiffBranchesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype EnvironmentDiffBranchesQuery = z$1.infer<typeof environmentDiffBranchesQuerySchema>;\ndeclare const environmentDiffBranchesResponseSchema: z$1.ZodObject<{\n    branches: z$1.ZodArray<z$1.ZodString>;\n    branchesTruncated: z$1.ZodBoolean;\n    remoteBranches: z$1.ZodArray<z$1.ZodString>;\n    remoteBranchesTruncated: z$1.ZodBoolean;\n    selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        kind: z$1.ZodEnum<{\n            local: \"local\";\n            remote: \"remote\";\n            missing: \"missing\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype EnvironmentDiffBranchesResponse = z$1.infer<typeof environmentDiffBranchesResponseSchema>;\ndeclare const environmentStatusQuerySchema: z$1.ZodObject<{\n    mergeBaseBranch: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodString, z$1.ZodString>>;\n}, z$1.core.$strip>;\ntype EnvironmentStatusQuery = z$1.infer<typeof environmentStatusQuerySchema>;\ndeclare const environmentDiffQuerySchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"uncommitted\">;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"branch_committed\">;\n    mergeBaseBranch: z$1.ZodPipe<z$1.ZodString, z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"all\">;\n    mergeBaseBranch: z$1.ZodPipe<z$1.ZodString, z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"commit\">;\n    sha: z$1.ZodString;\n}, z$1.core.$strip>], \"target\">;\ntype EnvironmentDiffQuery = z$1.infer<typeof environmentDiffQuerySchema>;\n/**\n * Query for fetching a single file's contents at one side of a diff target.\n * Used by the diff card to reparse the card's patch with full old/new contents\n * so `@pierre/diffs` can render expand-context buttons between hunks.\n *\n * For `branch_committed` / `all`, callers pass the resolved merge-base SHA\n * (`mergeBaseRef`, surfaced by `workspace.diff`) rather than the branch name\n * — the diff itself was computed against that SHA, so reading the old side\n * from the same SHA keeps the file content aligned with the hunk line\n * numbers. Reading from the branch tip is wrong whenever the branch has\n * moved past the merge-base since the file existed there.\n */\ndeclare const environmentDiffFileQuerySchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"uncommitted\">;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"branch_committed\">;\n    mergeBaseRef: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"all\">;\n    mergeBaseRef: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    target: z$1.ZodLiteral<\"commit\">;\n    sha: z$1.ZodString;\n    path: z$1.ZodString;\n    side: z$1.ZodEnum<{\n        old: \"old\";\n        new: \"new\";\n    }>;\n}, z$1.core.$strip>], \"target\">;\ntype EnvironmentDiffFileQuery = z$1.infer<typeof environmentDiffFileQuerySchema>;\ndeclare const environmentDiffFileResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n    content: z$1.ZodString;\n    contentEncoding: z$1.ZodEnum<{\n        base64: \"base64\";\n        utf8: \"utf8\";\n    }>;\n    mimeType: z$1.ZodOptional<z$1.ZodString>;\n    sizeBytes: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype EnvironmentDiffFileResponse = z$1.infer<typeof environmentDiffFileResponseSchema>;\ndeclare const environmentArchiveThreadsResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    archivedThreadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype EnvironmentArchiveThreadsResponse = z$1.infer<typeof environmentArchiveThreadsResponseSchema>;\ndeclare const pullRequestMergeMethodSchema: z$1.ZodEnum<{\n    merge: \"merge\";\n    squash: \"squash\";\n    rebase: \"rebase\";\n}>;\ntype PullRequestMergeMethod = z$1.infer<typeof pullRequestMergeMethodSchema>;\ndeclare const commitActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"commit\">;\n    message: z$1.ZodString;\n    commitSha: z$1.ZodString;\n    commitSubject: z$1.ZodString;\n}, z$1.core.$strip>;\ntype CommitActionResponse = z$1.infer<typeof commitActionResponseSchema>;\ndeclare const squashMergeActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"squash_merge\">;\n    merged: z$1.ZodBoolean;\n    message: z$1.ZodString;\n    commitSha: z$1.ZodString;\n    commitSubject: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SquashMergeActionResponse = z$1.infer<typeof squashMergeActionResponseSchema>;\ndeclare const pullRequestReadyActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_ready\">;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestReadyActionResponse = z$1.infer<typeof pullRequestReadyActionResponseSchema>;\ndeclare const pullRequestMergeActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_merge\">;\n    method: z$1.ZodEnum<{\n        merge: \"merge\";\n        squash: \"squash\";\n        rebase: \"rebase\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestMergeActionResponse = z$1.infer<typeof pullRequestMergeActionResponseSchema>;\ndeclare const pullRequestDraftActionResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    action: z$1.ZodLiteral<\"pull_request_draft\">;\n    message: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PullRequestDraftActionResponse = z$1.infer<typeof pullRequestDraftActionResponseSchema>;\ndeclare const environmentStatusResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    workspace: z$1.ZodObject<{\n        workingTree: z$1.ZodObject<{\n            insertions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            lineStatsComplete: z$1.ZodBoolean;\n            files: z$1.ZodArray<z$1.ZodObject<{\n                path: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    M: \"M\";\n                    A: \"A\";\n                    D: \"D\";\n                    R: \"R\";\n                    C: \"C\";\n                    U: \"U\";\n                    \"??\": \"??\";\n                    \"?\": \"?\";\n                }>;\n                insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                deletions: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            hasUncommittedChanges: z$1.ZodBoolean;\n            state: z$1.ZodEnum<{\n                clean: \"clean\";\n                untracked: \"untracked\";\n                dirty_uncommitted: \"dirty_uncommitted\";\n                committed_unmerged: \"committed_unmerged\";\n                dirty_and_committed_unmerged: \"dirty_and_committed_unmerged\";\n            }>;\n        }, z$1.core.$strip>;\n        checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"branch\">;\n            branchName: z$1.ZodString;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"detached\">;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unborn\">;\n            branchName: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">;\n        branch: z$1.ZodObject<{\n            currentBranch: z$1.ZodNullable<z$1.ZodString>;\n            defaultBranch: z$1.ZodString;\n        }, z$1.core.$strip>;\n        mergeBase: z$1.ZodNullable<z$1.ZodObject<{\n            insertions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            lineStatsComplete: z$1.ZodBoolean;\n            files: z$1.ZodArray<z$1.ZodObject<{\n                path: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    M: \"M\";\n                    A: \"A\";\n                    D: \"D\";\n                    R: \"R\";\n                    C: \"C\";\n                    U: \"U\";\n                    \"??\": \"??\";\n                    \"?\": \"?\";\n                }>;\n                insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                deletions: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            mergeBaseBranch: z$1.ZodString;\n            baseRef: z$1.ZodNullable<z$1.ZodString>;\n            aheadCount: z$1.ZodNumber;\n            behindCount: z$1.ZodNumber;\n            hasCommittedUnmergedChanges: z$1.ZodBoolean;\n            commits: z$1.ZodArray<z$1.ZodObject<{\n                sha: z$1.ZodString;\n                shortSha: z$1.ZodString;\n                subject: z$1.ZodString;\n                authorName: z$1.ZodString;\n                authoredAt: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\n/**\n * Structured pull-request lookup outcome. \"absent\" is a real answer — the\n * host checked and the branch has no PR (non-git environments resolve to\n * \"absent\" without a daemon call). \"unavailable\" means the lookup itself\n * failed (gh missing, not authenticated, timeout, unreachable workspace), so\n * callers must not render it as \"no PR exists\".\n */\ndeclare const environmentPullRequestResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    pullRequest: z$1.ZodObject<{\n        number: z$1.ZodNumber;\n        title: z$1.ZodString;\n        state: z$1.ZodEnum<{\n            merged: \"merged\";\n            draft: \"draft\";\n            open: \"open\";\n            closed: \"closed\";\n        }>;\n        url: z$1.ZodString;\n        baseRefName: z$1.ZodString;\n        headRefName: z$1.ZodString;\n        updatedAt: z$1.ZodString;\n        checks: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                pending: \"pending\";\n                passing: \"passing\";\n                failing: \"failing\";\n                no_checks: \"no_checks\";\n            }>;\n            totalCount: z$1.ZodNumber;\n            passedCount: z$1.ZodNumber;\n            failedCount: z$1.ZodNumber;\n            pendingCount: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        review: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                none: \"none\";\n                approved: \"approved\";\n                changes_requested: \"changes_requested\";\n                review_required: \"review_required\";\n                review_requested: \"review_requested\";\n            }>;\n            reviewRequestCount: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        mergeability: z$1.ZodObject<{\n            state: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                draft: \"draft\";\n                mergeable: \"mergeable\";\n                conflicts: \"conflicts\";\n                blocked: \"blocked\";\n            }>;\n            mergeStateStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                BEHIND: \"BEHIND\";\n                BLOCKED: \"BLOCKED\";\n                CLEAN: \"CLEAN\";\n                DIRTY: \"DIRTY\";\n                DRAFT: \"DRAFT\";\n                HAS_HOOKS: \"HAS_HOOKS\";\n                UNKNOWN: \"UNKNOWN\";\n                UNSTABLE: \"UNSTABLE\";\n            }>>;\n            mergeable: z$1.ZodNullable<z$1.ZodEnum<{\n                UNKNOWN: \"UNKNOWN\";\n                CONFLICTING: \"CONFLICTING\";\n                MERGEABLE: \"MERGEABLE\";\n            }>>;\n        }, z$1.core.$strict>;\n        attention: z$1.ZodEnum<{\n            none: \"none\";\n            merged: \"merged\";\n            draft: \"draft\";\n            closed: \"closed\";\n            changes_requested: \"changes_requested\";\n            review_requested: \"review_requested\";\n            conflicts: \"conflicts\";\n            blocked: \"blocked\";\n            checks_failed: \"checks_failed\";\n            checks_pending: \"checks_pending\";\n            ready_to_merge: \"ready_to_merge\";\n        }>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"absent\">;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    message: z$1.ZodString;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentPullRequestResponse = z$1.infer<typeof environmentPullRequestResponseSchema>;\ndeclare const environmentDiffResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    diff: z$1.ZodObject<{\n        diff: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n        shortstat: z$1.ZodString;\n        files: z$1.ZodString;\n        mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffResponse = z$1.infer<typeof environmentDiffResponseSchema>;\ndeclare const environmentDiffFilesResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        previousPath: z$1.ZodNullable<z$1.ZodString>;\n        changeKind: z$1.ZodEnum<{\n            deleted: \"deleted\";\n            added: \"added\";\n            modified: \"modified\";\n            renamed: \"renamed\";\n            copied: \"copied\";\n            type_changed: \"type_changed\";\n        }>;\n        additions: z$1.ZodNumber;\n        deletions: z$1.ZodNumber;\n        binary: z$1.ZodBoolean;\n        origin: z$1.ZodEnum<{\n            untracked: \"untracked\";\n            tracked: \"tracked\";\n        }>;\n        loadMode: z$1.ZodEnum<{\n            auto: \"auto\";\n            on_demand: \"on_demand\";\n            too_large: \"too_large\";\n        }>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    shortstat: z$1.ZodString;\n    mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n    initialPatches: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        patch: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffFilesResponse = z$1.infer<typeof environmentDiffFilesResponseSchema>;\ndeclare const environmentDiffPatchResponseSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"available\">;\n    patches: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        patch: z$1.ZodString;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"not_applicable\">;\n    reason: z$1.ZodEnum<{\n        non_git_environment: \"non_git_environment\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    outcome: z$1.ZodLiteral<\"unavailable\">;\n    failure: z$1.ZodObject<{\n        code: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            path_not_found: \"path_not_found\";\n            not_git_repo: \"not_git_repo\";\n            not_worktree: \"not_worktree\";\n            workspace_type_mismatch: \"workspace_type_mismatch\";\n            permission_denied: \"permission_denied\";\n            unknown_environment: \"unknown_environment\";\n        }>;\n        workspacePath: z$1.ZodString;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>], \"outcome\">;\ntype EnvironmentDiffPatchResponse = z$1.infer<typeof environmentDiffPatchResponseSchema>;\n/**\n * Body for `POST /diff/patch`: the diff target plus the list of new paths whose\n * patches the client wants. A POST (not GET) because the repeated `paths` array\n * cannot survive flat query parsing. The client supplies only new paths; the\n * server re-derives each file's rename/copy pairing (`previousPath`) from its\n * own TOC.\n */\ndeclare const environmentDiffPatchRequestSchema: z$1.ZodObject<{\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"uncommitted\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"branch_committed\">;\n        mergeBaseBranch: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"all\">;\n        mergeBaseBranch: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"commit\">;\n        sha: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">;\n    paths: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype EnvironmentDiffPatchRequest = z$1.infer<typeof environmentDiffPatchRequestSchema>;\ntype EnvironmentStatusResponse = z$1.infer<typeof environmentStatusResponseSchema>;\n\ndeclare const providerUsageResponseSchema: z$1.ZodObject<{\n    codex: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n    claudeCode: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n    cursor: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"ok\">;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            label: z$1.ZodString;\n            usedPercent: z$1.ZodNumber;\n            resetsAt: z$1.ZodNullable<z$1.ZodString>;\n            cost: z$1.ZodOptional<z$1.ZodObject<{\n                usedUsdCents: z$1.ZodNumber;\n                limitUsdCents: z$1.ZodNumber;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"not_installed\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"unauthenticated\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"expired\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        status: z$1.ZodLiteral<\"error\">;\n        message: z$1.ZodString;\n        planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n    }, z$1.core.$strip>], \"status\">;\n}, z$1.core.$strip>;\ntype ProviderUsageResponse = z$1.infer<typeof providerUsageResponseSchema>;\ndeclare const discoverReposResultSchema: z$1.ZodObject<{\n    repos: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        lastActivityAt: z$1.ZodString;\n        originUrl: z$1.ZodNullable<z$1.ZodString>;\n        agentSeen: z$1.ZodBoolean;\n        agentSeenAt: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>>;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strict>;\ntype DiscoverReposResult = z$1.infer<typeof discoverReposResultSchema>;\ntype HostDaemonCommandTransport = \"settled\" | \"onlineRpc\";\ntype HostDaemonCommandEnvironmentLane = \"read\" | \"write\";\ntype HostDaemonFlushEventsBeforeResult = boolean | \"when-initiated\";\ninterface HostDaemonCommandDescriptor<Type extends string, Schema extends z$1.ZodTypeAny, ResultSchema extends z$1.ZodTypeAny, Transport extends HostDaemonCommandTransport, Retryable extends boolean> {\n    type: Type;\n    schema: Schema;\n    resultSchema: ResultSchema;\n    transport: Transport;\n    retryable: Retryable;\n    flushEventsBeforeResult: HostDaemonFlushEventsBeforeResult;\n    envLane: HostDaemonCommandEnvironmentLane | null;\n}\ndeclare const hostDaemonCommandRegistry: {\n    \"thread.rewind.discard\": HostDaemonCommandDescriptor<\"thread.rewind.discard\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.rewind.discard\">;\n        leaseId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.rewind.prepare\": HostDaemonCommandDescriptor<\"thread.rewind.prepare\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        projectId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        instructions: z$1.ZodString;\n        dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            inputSchema: z$1.ZodUnknown;\n        }, z$1.core.$strip>>;\n        injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"tree\">;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n            sourceType: z$1.ZodEnum<{\n                builtin: \"builtin\";\n                \"data-dir\": \"data-dir\";\n            }>;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"workspace-path\">;\n            sourceType: z$1.ZodLiteral<\"project\">;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"host-path\">;\n            sourceType: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n            }>;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n        disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        instructionMode: z$1.ZodEnum<{\n            replace: \"replace\";\n            append: \"append\";\n        }>;\n        type: z$1.ZodLiteral<\"thread.rewind.prepare\">;\n        leaseId: z$1.ZodString;\n        sourceProviderThreadId: z$1.ZodString;\n        retainThroughProviderCheckpoint: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerThreadId: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"thread.start\": HostDaemonCommandDescriptor<\"thread.start\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        projectId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        instructions: z$1.ZodString;\n        dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            inputSchema: z$1.ZodUnknown;\n        }, z$1.core.$strip>>;\n        injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"tree\">;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n            sourceType: z$1.ZodEnum<{\n                builtin: \"builtin\";\n                \"data-dir\": \"data-dir\";\n            }>;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"workspace-path\">;\n            sourceType: z$1.ZodLiteral<\"project\">;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            name: z$1.ZodString;\n            description: z$1.ZodString;\n            kind: z$1.ZodLiteral<\"host-path\">;\n            sourceType: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n            }>;\n            sourceRootPath: z$1.ZodString;\n            skillFilePath: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n        disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        instructionMode: z$1.ZodEnum<{\n            replace: \"replace\";\n            append: \"append\";\n        }>;\n        type: z$1.ZodLiteral<\"thread.start\">;\n        requestId: z$1.ZodString;\n        input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>>>;\n        threadStoragePath: z$1.ZodOptional<z$1.ZodString>;\n        fork: z$1.ZodOptional<z$1.ZodObject<{\n            sourceProviderThreadId: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerThreadId: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"turn.submit\": HostDaemonCommandDescriptor<\"turn.submit\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"turn.submit\">;\n        requestId: z$1.ZodString;\n        input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        inputGroups: z$1.ZodOptional<z$1.ZodArray<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        builtin: \"builtin\";\n                        project: \"project\";\n                        user: \"user\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>>>;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        resumeContext: z$1.ZodObject<{\n            workspaceContext: z$1.ZodObject<{\n                workspacePath: z$1.ZodString;\n                workspaceProvisionType: z$1.ZodEnum<{\n                    unmanaged: \"unmanaged\";\n                    \"managed-worktree\": \"managed-worktree\";\n                    personal: \"personal\";\n                }>;\n            }, z$1.core.$strip>;\n            bridgeLaunch: z$1.ZodObject<{\n                pluginId: z$1.ZodString;\n                source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"artifact\">;\n                    digest: z$1.ZodString;\n                    byteLength: z$1.ZodNumber;\n                }, z$1.core.$strict>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                    id: z$1.ZodString;\n                }, z$1.core.$strict>], \"kind\">;\n                capabilities: z$1.ZodObject<{\n                    supportsServiceTier: z$1.ZodBoolean;\n                    permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                        full: \"full\";\n                        \"accept-edits\": \"accept-edits\";\n                        auto: \"auto\";\n                    }>>;\n                    supportsThreadArchive: z$1.ZodBoolean;\n                    supportsThreadRename: z$1.ZodBoolean;\n                    fork: z$1.ZodEnum<{\n                        none: \"none\";\n                        tip: \"tip\";\n                        checkpoint: \"checkpoint\";\n                    }>;\n                }, z$1.core.$strict>;\n            }, z$1.core.$strict>;\n            instructionMode: z$1.ZodEnum<{\n                replace: \"replace\";\n                append: \"append\";\n            }>;\n            projectId: z$1.ZodString;\n            providerId: z$1.ZodString;\n            acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n                displayName: z$1.ZodString;\n                command: z$1.ZodString;\n                args: z$1.ZodArray<z$1.ZodString>;\n                env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n                cwd: z$1.ZodOptional<z$1.ZodString>;\n                modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                    listArgs: z$1.ZodArray<z$1.ZodString>;\n                    selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                    primaryModels: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strict>, z$1.ZodTransform<{\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                } | undefined, {\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                }>>>;\n                reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                    flag: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                    configId: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                    user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                    project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                }, z$1.core.$strict>>;\n                permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                    full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n                }, z$1.core.$strict>>;\n            }, z$1.core.$strict>>;\n            instructions: z$1.ZodString;\n            dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                inputSchema: z$1.ZodUnknown;\n            }, z$1.core.$strip>>;\n            injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"tree\">;\n                treeHash: z$1.ZodString;\n                entryPath: z$1.ZodString;\n                sourceType: z$1.ZodEnum<{\n                    builtin: \"builtin\";\n                    \"data-dir\": \"data-dir\";\n                }>;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"workspace-path\">;\n                sourceType: z$1.ZodLiteral<\"project\">;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"host-path\">;\n                sourceType: z$1.ZodEnum<{\n                    \"shared-user\": \"shared-user\";\n                    \"shared-project\": \"shared-project\";\n                }>;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n            disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            providerThreadId: z$1.ZodString;\n        }, z$1.core.$strict>;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"start\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"auto\">;\n            expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            mode: z$1.ZodLiteral<\"steer\">;\n            expectedTurnId: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"mode\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        appliedAs: z$1.ZodEnum<{\n            steer: \"steer\";\n            \"new-turn\": \"new-turn\";\n        }>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"thread.stop\": HostDaemonCommandDescriptor<\"thread.stop\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.stop\">;\n        intent: z$1.ZodEnum<{\n            interrupt: \"interrupt\";\n            release: \"release\";\n        }>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        providerCheckpointId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.goal.clear\": HostDaemonCommandDescriptor<\"thread.goal.clear\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.goal.clear\">;\n        options: z$1.ZodIntersection<z$1.ZodObject<{\n            model: z$1.ZodString;\n            serviceTier: z$1.ZodEnum<{\n                default: \"default\";\n                fast: \"fast\";\n            }>;\n            reasoningLevel: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            claudeCodePermissionMode: z$1.ZodOptional<z$1.ZodLiteral<\"plan\">>;\n            claudeCodeMockCliTraffic: z$1.ZodOptional<z$1.ZodObject<{\n                enabled: z$1.ZodBoolean;\n                endpoint: z$1.ZodString;\n            }, z$1.core.$strict>>;\n            workflowsEnabled: z$1.ZodBoolean;\n            memoryEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n            providerSubagentsEnabled: z$1.ZodOptional<z$1.ZodBoolean>;\n        }, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"accept-edits\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"user\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"auto\">;\n            permissionScope: z$1.ZodLiteral<\"workspace\">;\n            approvalReviewer: z$1.ZodLiteral<\"automatic\">;\n            permissionEscalation: z$1.ZodEnum<{\n                ask: \"ask\";\n                deny: \"deny\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            permissionMode: z$1.ZodLiteral<\"full\">;\n            permissionScope: z$1.ZodLiteral<\"full\">;\n            approvalReviewer: z$1.ZodNull;\n            permissionEscalation: z$1.ZodNull;\n        }, z$1.core.$strip>], \"permissionMode\">>;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        resumeContext: z$1.ZodObject<{\n            workspaceContext: z$1.ZodObject<{\n                workspacePath: z$1.ZodString;\n                workspaceProvisionType: z$1.ZodEnum<{\n                    unmanaged: \"unmanaged\";\n                    \"managed-worktree\": \"managed-worktree\";\n                    personal: \"personal\";\n                }>;\n            }, z$1.core.$strip>;\n            bridgeLaunch: z$1.ZodObject<{\n                pluginId: z$1.ZodString;\n                source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"artifact\">;\n                    digest: z$1.ZodString;\n                    byteLength: z$1.ZodNumber;\n                }, z$1.core.$strict>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                    id: z$1.ZodString;\n                }, z$1.core.$strict>], \"kind\">;\n                capabilities: z$1.ZodObject<{\n                    supportsServiceTier: z$1.ZodBoolean;\n                    permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                        full: \"full\";\n                        \"accept-edits\": \"accept-edits\";\n                        auto: \"auto\";\n                    }>>;\n                    supportsThreadArchive: z$1.ZodBoolean;\n                    supportsThreadRename: z$1.ZodBoolean;\n                    fork: z$1.ZodEnum<{\n                        none: \"none\";\n                        tip: \"tip\";\n                        checkpoint: \"checkpoint\";\n                    }>;\n                }, z$1.core.$strict>;\n            }, z$1.core.$strict>;\n            instructionMode: z$1.ZodEnum<{\n                replace: \"replace\";\n                append: \"append\";\n            }>;\n            projectId: z$1.ZodString;\n            providerId: z$1.ZodString;\n            acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n                displayName: z$1.ZodString;\n                command: z$1.ZodString;\n                args: z$1.ZodArray<z$1.ZodString>;\n                env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n                cwd: z$1.ZodOptional<z$1.ZodString>;\n                modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                    listArgs: z$1.ZodArray<z$1.ZodString>;\n                    selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                    primaryModels: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strict>, z$1.ZodTransform<{\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                } | undefined, {\n                    listArgs: string[];\n                    primaryModels: string[];\n                    selectFlag?: string | undefined;\n                }>>>;\n                reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                    flag: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                    configId: z$1.ZodString;\n                    supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                    levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }> & z$1.core.$partial, z$1.ZodString>>;\n                    defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                        none: \"none\";\n                        low: \"low\";\n                        medium: \"medium\";\n                        high: \"high\";\n                        xhigh: \"xhigh\";\n                        ultracode: \"ultracode\";\n                        max: \"max\";\n                        ultra: \"ultra\";\n                    }>>;\n                }, z$1.core.$strict>>;\n                nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                    user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                    project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                }, z$1.core.$strict>>;\n                permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                    full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                    insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n                }, z$1.core.$strict>>;\n            }, z$1.core.$strict>>;\n            instructions: z$1.ZodString;\n            dynamicTools: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                inputSchema: z$1.ZodUnknown;\n            }, z$1.core.$strip>>;\n            injectedSkillSources: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"tree\">;\n                treeHash: z$1.ZodString;\n                entryPath: z$1.ZodString;\n                sourceType: z$1.ZodEnum<{\n                    builtin: \"builtin\";\n                    \"data-dir\": \"data-dir\";\n                }>;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"workspace-path\">;\n                sourceType: z$1.ZodLiteral<\"project\">;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                name: z$1.ZodString;\n                description: z$1.ZodString;\n                kind: z$1.ZodLiteral<\"host-path\">;\n                sourceType: z$1.ZodEnum<{\n                    \"shared-user\": \"shared-user\";\n                    \"shared-project\": \"shared-project\";\n                }>;\n                sourceRootPath: z$1.ZodString;\n                skillFilePath: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n            disallowedTools: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            providerThreadId: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cleared: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.plan.cancel\": HostDaemonCommandDescriptor<\"thread.plan.cancel\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.plan.cancel\">;\n        expectedTurnId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cancelled: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"thread.rename\": HostDaemonCommandDescriptor<\"thread.rename\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.rename\">;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.archive\": HostDaemonCommandDescriptor<\"thread.archive\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"thread.archive\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"thread.unarchive\": HostDaemonCommandDescriptor<\"thread.unarchive\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"thread.unarchive\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"interactive.resolve\": HostDaemonCommandDescriptor<\"interactive.resolve\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        threadId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"interactive.resolve\">;\n        interactionId: z$1.ZodString;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n        resolution: z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"allow_once\">;\n            grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"allow_for_session\">;\n            grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            decision: z$1.ZodLiteral<\"deny\">;\n        }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"user_answer\">;\n            answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n                selected: z$1.ZodArray<z$1.ZodString>;\n                freeText: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin_submitted\">;\n        }, z$1.core.$strip>]>;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"codex.inference.complete\": HostDaemonCommandDescriptor<\"codex.inference.complete\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"codex.inference.complete\">;\n        model: z$1.ZodString;\n        reasoningEffort: z$1.ZodLiteral<\"none\">;\n        prompt: z$1.ZodString;\n        outputSchema: z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        model: z$1.ZodString;\n        value: z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"codex.voice.transcribe\": HostDaemonCommandDescriptor<\"codex.voice.transcribe\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"codex.voice.transcribe\">;\n        model: z$1.ZodString;\n        audioBase64: z$1.ZodString;\n        mimeType: z$1.ZodString;\n        filename: z$1.ZodString;\n        prompt: z$1.ZodNullable<z$1.ZodString>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        model: z$1.ZodString;\n        text: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"environment.provision\": HostDaemonCommandDescriptor<\"environment.provision\", z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        workspaceProvisionType: z$1.ZodLiteral<\"unmanaged\">;\n        path: z$1.ZodString;\n        checkout: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"existing\">;\n            name: z$1.ZodString;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"new\">;\n            name: z$1.ZodString;\n            baseBranch: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        sourcePath: z$1.ZodString;\n        targetPath: z$1.ZodString;\n        branchName: z$1.ZodString;\n        baseBranch: z$1.ZodNullable<z$1.ZodString>;\n        setupTimeoutMs: z$1.ZodNumber;\n        workspaceProvisionType: z$1.ZodLiteral<\"managed-worktree\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision\">;\n        initiator: z$1.ZodNullable<z$1.ZodObject<{\n            threadId: z$1.ZodString;\n            provisioningId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n        workspaceProvisionType: z$1.ZodLiteral<\"personal\">;\n        targetPath: z$1.ZodString;\n    }, z$1.core.$strict>], \"workspaceProvisionType\">, z$1.ZodObject<{\n        path: z$1.ZodString;\n        isGitRepo: z$1.ZodBoolean;\n        isWorktree: z$1.ZodBoolean;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        transcript: z$1.ZodArray<z$1.ZodObject<{\n            type: z$1.ZodEnum<{\n                output: \"output\";\n                step: \"step\";\n            }>;\n            key: z$1.ZodString;\n            text: z$1.ZodString;\n            startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            status: z$1.ZodOptional<z$1.ZodEnum<{\n                started: \"started\";\n                completed: \"completed\";\n                failed: \"failed\";\n            }>>;\n            metadata: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodString, z$1.ZodUnknown>>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"project.clone\": HostDaemonCommandDescriptor<\"project.clone\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.clone\">;\n        remoteUrl: z$1.ZodString;\n        projectSlug: z$1.ZodString;\n        targetPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"settled\", false>;\n    \"environment.provision.cancel\": HostDaemonCommandDescriptor<\"environment.provision.cancel\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        type: z$1.ZodLiteral<\"environment.provision.cancel\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        aborted: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"environment.destroy\": HostDaemonCommandDescriptor<\"environment.destroy\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"environment.destroy\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{}, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.commit\": HostDaemonCommandDescriptor<\"workspace.commit\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.commit\">;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commitSha: z$1.ZodString;\n        commitSubject: z$1.ZodString;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.squash_merge\": HostDaemonCommandDescriptor<\"workspace.squash_merge\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.squash_merge\">;\n        targetBranch: z$1.ZodString;\n        commitMessage: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commitSha: z$1.ZodString;\n        commitSubject: z$1.ZodString;\n        merged: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"settled\", false>;\n    \"workspace.pull_request_action\": HostDaemonCommandDescriptor<\"workspace.pull_request_action\", z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"ready\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"draft\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request_action\">;\n        operation: z$1.ZodLiteral<\"merge\">;\n        method: z$1.ZodEnum<{\n            merge: \"merge\";\n            squash: \"squash\";\n            rebase: \"rebase\";\n        }>;\n    }, z$1.core.$strict>], \"operation\">, z$1.ZodObject<{}, z$1.core.$strict>, \"settled\", false>;\n    \"host.list_files\": HostDaemonCommandDescriptor<\"host.list_files\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_files\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        files: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.list_paths\": HostDaemonCommandDescriptor<\"host.list_paths\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_paths\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n        includeFiles: z$1.ZodBoolean;\n        includeDirectories: z$1.ZodBoolean;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        paths: z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n            score: z$1.ZodNumber;\n            positions: z$1.ZodArray<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.mkdir\": HostDaemonCommandDescriptor<\"host.mkdir\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.mkdir\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        recursive: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.move_path\": HostDaemonCommandDescriptor<\"host.move_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.move_path\">;\n        sourcePath: z$1.ZodString;\n        destinationPath: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.remove_path\": HostDaemonCommandDescriptor<\"host.remove_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.remove_path\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        recursive: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.browse_directory\": HostDaemonCommandDescriptor<\"host.browse_directory\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.browse_directory\">;\n        path: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        directory: z$1.ZodString;\n        parent: z$1.ZodNullable<z$1.ZodString>;\n        entries: z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.paths_exist\": HostDaemonCommandDescriptor<\"host.paths_exist\", z$1.ZodObject<{\n        paths: z$1.ZodPipe<z$1.ZodArray<z$1.ZodString>, z$1.ZodTransform<string[], string[]>>;\n        type: z$1.ZodLiteral<\"host.paths_exist\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        existence: z$1.ZodRecord<z$1.ZodString, z$1.ZodBoolean>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"project.inspect\": HostDaemonCommandDescriptor<\"project.inspect\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.inspect\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        gitRemoteUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"project.clone_default_path\": HostDaemonCommandDescriptor<\"project.clone_default_path\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project.clone_default_path\">;\n        projectSlug: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.pick_folder\": HostDaemonCommandDescriptor<\"host.pick_folder\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.pick_folder\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, \"onlineRpc\", false>;\n    \"plugin.host.call\": HostDaemonCommandDescriptor<\"plugin.host.call\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.call\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n        artifact: z$1.ZodObject<{\n            digest: z$1.ZodString;\n            byteLength: z$1.ZodNumber;\n        }, z$1.core.$strict>;\n        callId: z$1.ZodString;\n        method: z$1.ZodString;\n        input: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n        timeoutMs: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        output: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"plugin.host.cancel\": HostDaemonCommandDescriptor<\"plugin.host.cancel\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.cancel\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n        callId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        cancelled: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"plugin.host.dispose\": HostDaemonCommandDescriptor<\"plugin.host.dispose\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"plugin.host.dispose\">;\n        pluginId: z$1.ZodString;\n        generation: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        disposed: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"connect-tunnel.ensure-identity\": HostDaemonCommandDescriptor<\"connect-tunnel.ensure-identity\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"connect-tunnel.ensure-identity\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        label: z$1.ZodString;\n        baseDomain: z$1.ZodString;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.list_commands\": HostDaemonCommandDescriptor<\"host.list_commands\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_commands\">;\n        providerId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n            user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        commands: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                project: \"project\";\n                user: \"user\";\n            }>;\n            description: z$1.ZodNullable<z$1.ZodString>;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.list_skills\": HostDaemonCommandDescriptor<\"host.list_skills\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_skills\">;\n        providerId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n            user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        skills: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            name: z$1.ZodString;\n            description: z$1.ZodNullable<z$1.ZodString>;\n            filePath: z$1.ZodString;\n            rootKind: z$1.ZodEnum<{\n                \"shared-user\": \"shared-user\";\n                \"shared-project\": \"shared-project\";\n                plugin: \"plugin\";\n                \"bb-project\": \"bb-project\";\n                \"bb-data-dir\": \"bb-data-dir\";\n                \"bb-builtin\": \"bb-builtin\";\n                \"provider-project\": \"provider-project\";\n                \"provider-user\": \"provider-user\";\n            }>;\n            linked: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.delete_skill\": HostDaemonCommandDescriptor<\"host.delete_skill\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.delete_skill\">;\n        scope: z$1.ZodEnum<{\n            \"bb-project\": \"bb-project\";\n            \"provider-project\": \"provider-project\";\n            \"provider-user\": \"provider-user\";\n            \"bb-user\": \"bb-user\";\n        }>;\n        name: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        rootPath: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        deletedPath: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", false>;\n    \"host.write_skill\": HostDaemonCommandDescriptor<\"host.write_skill\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.write_skill\">;\n        scope: z$1.ZodEnum<{\n            \"bb-project\": \"bb-project\";\n            \"bb-user\": \"bb-user\";\n        }>;\n        name: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n        content: z$1.ZodString;\n        expectedSha256: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"written\">;\n        filePath: z$1.ZodString;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"conflict\">;\n        currentSha256: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>], \"outcome\">, \"onlineRpc\", false>;\n    \"host.install_global_skills\": HostDaemonCommandDescriptor<\"host.install_global_skills\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.install_global_skills\">;\n        skills: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            treeHash: z$1.ZodString;\n            entryPath: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        installations: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"host.global_skills_status\": HostDaemonCommandDescriptor<\"host.global_skills_status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.global_skills_status\">;\n        names: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        entries: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n            treeHash: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"host.list_branches\": HostDaemonCommandDescriptor<\"host.list_branches\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.list_branches\">;\n        path: z$1.ZodString;\n        query: z$1.ZodOptional<z$1.ZodString>;\n        selectedBranch: z$1.ZodOptional<z$1.ZodString>;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        branches: z$1.ZodArray<z$1.ZodString>;\n        branchesTruncated: z$1.ZodBoolean;\n        checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"branch\">;\n            branchName: z$1.ZodString;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"detached\">;\n            headSha: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unborn\">;\n            branchName: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranchRelation: z$1.ZodNullable<z$1.ZodEnum<{\n            unknown: \"unknown\";\n            equal: \"equal\";\n            \"local-behind\": \"local-behind\";\n            \"local-ahead\": \"local-ahead\";\n            diverged: \"diverged\";\n        }>>;\n        hasUncommittedChanges: z$1.ZodBoolean;\n        operation: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"none\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"rebase\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"cherry-pick\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"revert\">;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"unknown\">;\n            reason: z$1.ZodString;\n            hasConflicts: z$1.ZodBoolean;\n        }, z$1.core.$strip>], \"kind\">;\n        originDefaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        remoteBranches: z$1.ZodArray<z$1.ZodString>;\n        remoteBranchesTruncated: z$1.ZodBoolean;\n        selectedBranch: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            kind: z$1.ZodEnum<{\n                local: \"local\";\n                remote: \"remote\";\n                missing: \"missing\";\n            }>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.file_metadata\": HostDaemonCommandDescriptor<\"host.file_metadata\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.file_metadata\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        modifiedAtMs: z$1.ZodNumber;\n        sizeBytes: z$1.ZodNumber;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.read_file\": HostDaemonCommandDescriptor<\"host.read_file\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.read_file\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        ref: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodNumber;\n        modifiedAtMs: z$1.ZodOptional<z$1.ZodNumber>;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.read_file_relative\": HostDaemonCommandDescriptor<\"host.read_file_relative\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.read_file_relative\">;\n        rootPath: z$1.ZodString;\n        path: z$1.ZodString;\n        dotfiles: z$1.ZodEnum<{\n            deny: \"deny\";\n            allow: \"allow\";\n        }>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        path: z$1.ZodString;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodNumber;\n        modifiedAtMs: z$1.ZodOptional<z$1.ZodNumber>;\n        sha256: z$1.ZodString;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"host.write_file\": HostDaemonCommandDescriptor<\"host.write_file\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host.write_file\">;\n        path: z$1.ZodString;\n        rootPath: z$1.ZodOptional<z$1.ZodString>;\n        content: z$1.ZodString;\n        contentEncoding: z$1.ZodEnum<{\n            base64: \"base64\";\n            utf8: \"utf8\";\n        }>;\n        createParents: z$1.ZodBoolean;\n        expectedSha256: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n        mode: z$1.ZodOptional<z$1.ZodNumber>;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"written\">;\n        sha256: z$1.ZodString;\n        sizeBytes: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"conflict\">;\n        currentSha256: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", false>;\n    \"provider.list_models\": HostDaemonCommandDescriptor<\"provider.list_models\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider.list_models\">;\n        providerId: z$1.ZodString;\n        acpLaunchSpec: z$1.ZodOptional<z$1.ZodObject<{\n            displayName: z$1.ZodString;\n            command: z$1.ZodString;\n            args: z$1.ZodArray<z$1.ZodString>;\n            env: z$1.ZodRecord<z$1.ZodString, z$1.ZodString>;\n            cwd: z$1.ZodOptional<z$1.ZodString>;\n            modelCli: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodObject<{\n                listArgs: z$1.ZodArray<z$1.ZodString>;\n                selectFlag: z$1.ZodOptional<z$1.ZodString>;\n                primaryModels: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strict>, z$1.ZodTransform<{\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            } | undefined, {\n                listArgs: string[];\n                primaryModels: string[];\n                selectFlag?: string | undefined;\n            }>>>;\n            reasoningCli: z$1.ZodOptional<z$1.ZodObject<{\n                flag: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeReasoning: z$1.ZodOptional<z$1.ZodObject<{\n                configId: z$1.ZodString;\n                supportedLevels: z$1.ZodArray<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n                levelValues: z$1.ZodOptional<z$1.ZodRecord<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }> & z$1.core.$partial, z$1.ZodString>>;\n                defaultLevel: z$1.ZodOptional<z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>>;\n            }, z$1.core.$strict>>;\n            nativeSkillRoots: z$1.ZodOptional<z$1.ZodObject<{\n                user: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n                project: z$1.ZodDefault<z$1.ZodArray<z$1.ZodString>>;\n            }, z$1.core.$strict>>;\n            permissionCli: z$1.ZodOptional<z$1.ZodObject<{\n                full: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                workspaceWrite: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                readonly: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n                insertAfterArgs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n        bridgeLaunch: z$1.ZodObject<{\n            pluginId: z$1.ZodString;\n            source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"artifact\">;\n                digest: z$1.ZodString;\n                byteLength: z$1.ZodNumber;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"daemon-bundled\">;\n                id: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">;\n            capabilities: z$1.ZodObject<{\n                supportsServiceTier: z$1.ZodBoolean;\n                permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                    full: \"full\";\n                    \"accept-edits\": \"accept-edits\";\n                    auto: \"auto\";\n                }>>;\n                supportsThreadArchive: z$1.ZodBoolean;\n                supportsThreadRename: z$1.ZodBoolean;\n                fork: z$1.ZodEnum<{\n                    none: \"none\";\n                    tip: \"tip\";\n                    checkpoint: \"checkpoint\";\n                }>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strict>;\n        cwd: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        models: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            model: z$1.ZodString;\n            displayName: z$1.ZodString;\n            routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n            description: z$1.ZodString;\n            supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n                reasoningEffort: z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>;\n                description: z$1.ZodString;\n            }, z$1.core.$strip>>;\n            defaultReasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            isDefault: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n        selectedOnlyModels: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            model: z$1.ZodString;\n            displayName: z$1.ZodString;\n            routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n            description: z$1.ZodString;\n            supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n                reasoningEffort: z$1.ZodEnum<{\n                    none: \"none\";\n                    low: \"low\";\n                    medium: \"medium\";\n                    high: \"high\";\n                    xhigh: \"xhigh\";\n                    ultracode: \"ultracode\";\n                    max: \"max\";\n                    ultra: \"ultra\";\n                }>;\n                description: z$1.ZodString;\n            }, z$1.core.$strip>>;\n            defaultReasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            isDefault: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"known_acp_agents.status\": HostDaemonCommandDescriptor<\"known_acp_agents.status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"known_acp_agents.status\">;\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            executableName: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            executableName: z$1.ZodString;\n            installed: z$1.ZodBoolean;\n            executablePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"provider.usage\": HostDaemonCommandDescriptor<\"provider.usage\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider.usage\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        codex: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n        claudeCode: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n        cursor: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"ok\">;\n            accountEmail: z$1.ZodNullable<z$1.ZodString>;\n            planLabel: z$1.ZodNullable<z$1.ZodString>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                label: z$1.ZodString;\n                usedPercent: z$1.ZodNumber;\n                resetsAt: z$1.ZodNullable<z$1.ZodString>;\n                cost: z$1.ZodOptional<z$1.ZodObject<{\n                    usedUsdCents: z$1.ZodNumber;\n                    limitUsdCents: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"not_installed\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"unauthenticated\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"expired\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            status: z$1.ZodLiteral<\"error\">;\n            message: z$1.ZodString;\n            planLabel: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n            accountEmail: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodString>>;\n        }, z$1.core.$strip>], \"status\">;\n    }, z$1.core.$strip>, \"onlineRpc\", true>;\n    \"workspace.discover_repos\": HostDaemonCommandDescriptor<\"workspace.discover_repos\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"workspace.discover_repos\">;\n        maxDepth: z$1.ZodNumber;\n        sinceDays: z$1.ZodNumber;\n        limit: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        repos: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            name: z$1.ZodString;\n            lastActivityAt: z$1.ZodString;\n            originUrl: z$1.ZodNullable<z$1.ZodString>;\n            agentSeen: z$1.ZodBoolean;\n            agentSeenAt: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strict>>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strict>, \"onlineRpc\", true>;\n    \"provider_cli.status\": HostDaemonCommandDescriptor<\"provider_cli.status\", z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"provider_cli.status\">;\n    }, z$1.core.$strict>, z$1.ZodRecord<z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>, z$1.ZodObject<{\n        displayName: z$1.ZodString;\n        executableName: z$1.ZodString;\n        executablePath: z$1.ZodNullable<z$1.ZodString>;\n        installed: z$1.ZodBoolean;\n        installSource: z$1.ZodEnum<{\n            notInstalled: \"notInstalled\";\n            npmGlobal: \"npmGlobal\";\n            external: \"external\";\n        }>;\n        currentVersion: z$1.ZodNullable<z$1.ZodString>;\n        latestVersion: z$1.ZodNullable<z$1.ZodString>;\n        minimumSupportedVersion: z$1.ZodNullable<z$1.ZodString>;\n        npmPackageName: z$1.ZodNullable<z$1.ZodString>;\n        npmGlobalPackageVersion: z$1.ZodNullable<z$1.ZodString>;\n        installAction: z$1.ZodNullable<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                install: \"install\";\n                update: \"update\";\n            }>;\n            label: z$1.ZodEnum<{\n                Install: \"Install\";\n                Update: \"Update\";\n            }>;\n            commandKind: z$1.ZodEnum<{\n                exec: \"exec\";\n                shell: \"shell\";\n            }>;\n            command: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        needsUpdate: z$1.ZodBoolean;\n        versionUnsupported: z$1.ZodBoolean;\n    }, z$1.core.$strip>>, \"onlineRpc\", true>;\n    \"provider_cli.install\": HostDaemonCommandDescriptor<\"provider_cli.install\", z$1.ZodObject<{\n        provider: z$1.ZodEnum<{\n            codex: \"codex\";\n            claudeCode: \"claudeCode\";\n            cursor: \"cursor\";\n        }>;\n        actionKind: z$1.ZodEnum<{\n            install: \"install\";\n            update: \"update\";\n        }>;\n        type: z$1.ZodLiteral<\"provider_cli.install\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        events: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"started\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            command: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"output\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            stream: z$1.ZodEnum<{\n                stdout: \"stdout\";\n                stderr: \"stderr\";\n            }>;\n            text: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"completed\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n            signal: z$1.ZodNullable<z$1.ZodString>;\n            success: z$1.ZodBoolean;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"error\">;\n            provider: z$1.ZodEnum<{\n                codex: \"codex\";\n                claudeCode: \"claudeCode\";\n                cursor: \"cursor\";\n            }>;\n            message: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">>;\n    }, z$1.core.$strict>, \"onlineRpc\", false>;\n    \"workspace.status\": HostDaemonCommandDescriptor<\"workspace.status\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.status\">;\n        mergeBaseBranch: z$1.ZodOptional<z$1.ZodString>;\n        maxUntrackedLineStatFiles: z$1.ZodNumber;\n        maxUntrackedLineStatBytes: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        workspaceStatus: z$1.ZodObject<{\n            workingTree: z$1.ZodObject<{\n                insertions: z$1.ZodNumber;\n                deletions: z$1.ZodNumber;\n                lineStatsComplete: z$1.ZodBoolean;\n                files: z$1.ZodArray<z$1.ZodObject<{\n                    path: z$1.ZodString;\n                    status: z$1.ZodEnum<{\n                        M: \"M\";\n                        A: \"A\";\n                        D: \"D\";\n                        R: \"R\";\n                        C: \"C\";\n                        U: \"U\";\n                        \"??\": \"??\";\n                        \"?\": \"?\";\n                    }>;\n                    insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                    deletions: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>>;\n                hasUncommittedChanges: z$1.ZodBoolean;\n                state: z$1.ZodEnum<{\n                    clean: \"clean\";\n                    untracked: \"untracked\";\n                    dirty_uncommitted: \"dirty_uncommitted\";\n                    committed_unmerged: \"committed_unmerged\";\n                    dirty_and_committed_unmerged: \"dirty_and_committed_unmerged\";\n                }>;\n            }, z$1.core.$strip>;\n            checkout: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"branch\">;\n                branchName: z$1.ZodString;\n                headSha: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"detached\">;\n                headSha: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"unborn\">;\n                branchName: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"unknown\">;\n                reason: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">;\n            branch: z$1.ZodObject<{\n                currentBranch: z$1.ZodNullable<z$1.ZodString>;\n                defaultBranch: z$1.ZodString;\n            }, z$1.core.$strip>;\n            mergeBase: z$1.ZodNullable<z$1.ZodObject<{\n                insertions: z$1.ZodNumber;\n                deletions: z$1.ZodNumber;\n                lineStatsComplete: z$1.ZodBoolean;\n                files: z$1.ZodArray<z$1.ZodObject<{\n                    path: z$1.ZodString;\n                    status: z$1.ZodEnum<{\n                        M: \"M\";\n                        A: \"A\";\n                        D: \"D\";\n                        R: \"R\";\n                        C: \"C\";\n                        U: \"U\";\n                        \"??\": \"??\";\n                        \"?\": \"?\";\n                    }>;\n                    insertions: z$1.ZodNullable<z$1.ZodNumber>;\n                    deletions: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>>;\n                mergeBaseBranch: z$1.ZodString;\n                baseRef: z$1.ZodNullable<z$1.ZodString>;\n                aheadCount: z$1.ZodNumber;\n                behindCount: z$1.ZodNumber;\n                hasCommittedUnmergedChanges: z$1.ZodBoolean;\n                commits: z$1.ZodArray<z$1.ZodObject<{\n                    sha: z$1.ZodString;\n                    shortSha: z$1.ZodString;\n                    subject: z$1.ZodString;\n                    authorName: z$1.ZodString;\n                    authoredAt: z$1.ZodNumber;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diff\": HostDaemonCommandDescriptor<\"workspace.diff\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diff\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        maxDiffBytes: z$1.ZodNumber;\n        maxFileListBytes: z$1.ZodNumber;\n        maxUntrackedFiles: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        diff: z$1.ZodObject<{\n            diff: z$1.ZodString;\n            truncated: z$1.ZodBoolean;\n            shortstat: z$1.ZodString;\n            files: z$1.ZodString;\n            mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diffFiles\": HostDaemonCommandDescriptor<\"workspace.diffFiles\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diffFiles\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        maxFiles: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        files: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            previousPath: z$1.ZodNullable<z$1.ZodString>;\n            statusLetter: z$1.ZodEnum<{\n                M: \"M\";\n                A: \"A\";\n                D: \"D\";\n                R: \"R\";\n                C: \"C\";\n                T: \"T\";\n            }>;\n            additions: z$1.ZodNumber;\n            deletions: z$1.ZodNumber;\n            binary: z$1.ZodBoolean;\n            origin: z$1.ZodEnum<{\n                untracked: \"untracked\";\n                tracked: \"tracked\";\n            }>;\n        }, z$1.core.$strip>>;\n        shortstat: z$1.ZodString;\n        mergeBaseRef: z$1.ZodNullable<z$1.ZodString>;\n        truncated: z$1.ZodBoolean;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.diffPatch\": HostDaemonCommandDescriptor<\"workspace.diffPatch\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.diffPatch\">;\n        target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"uncommitted\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"branch_committed\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"all\">;\n            mergeBaseBranch: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"commit\">;\n            sha: z$1.ZodString;\n        }, z$1.core.$strip>], \"type\">;\n        paths: z$1.ZodArray<z$1.ZodString>;\n        maxBytesPerFile: z$1.ZodNumber;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        patches: z$1.ZodArray<z$1.ZodObject<{\n            path: z$1.ZodString;\n            patch: z$1.ZodString;\n            truncated: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        failure: z$1.ZodObject<{\n            code: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                path_not_found: \"path_not_found\";\n                not_git_repo: \"not_git_repo\";\n                not_worktree: \"not_worktree\";\n                workspace_type_mismatch: \"workspace_type_mismatch\";\n                permission_denied: \"permission_denied\";\n                unknown_environment: \"unknown_environment\";\n            }>;\n            workspacePath: z$1.ZodString;\n            message: z$1.ZodString;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n    \"workspace.pull_request\": HostDaemonCommandDescriptor<\"workspace.pull_request\", z$1.ZodObject<{\n        environmentId: z$1.ZodString;\n        workspaceContext: z$1.ZodObject<{\n            workspacePath: z$1.ZodString;\n            workspaceProvisionType: z$1.ZodEnum<{\n                unmanaged: \"unmanaged\";\n                \"managed-worktree\": \"managed-worktree\";\n                personal: \"personal\";\n            }>;\n        }, z$1.core.$strip>;\n        type: z$1.ZodLiteral<\"workspace.pull_request\">;\n    }, z$1.core.$strict>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"available\">;\n        pullRequest: z$1.ZodObject<{\n            number: z$1.ZodNumber;\n            title: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                OPEN: \"OPEN\";\n                CLOSED: \"CLOSED\";\n                MERGED: \"MERGED\";\n            }>;\n            url: z$1.ZodString;\n            isDraft: z$1.ZodBoolean;\n            baseRefName: z$1.ZodString;\n            headRefName: z$1.ZodString;\n            updatedAt: z$1.ZodString;\n            checks: z$1.ZodArray<z$1.ZodObject<{\n                name: z$1.ZodString;\n                status: z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    completed: \"completed\";\n                    queued: \"queued\";\n                    in_progress: \"in_progress\";\n                }>;\n                conclusion: z$1.ZodNullable<z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    success: \"success\";\n                    cancelled: \"cancelled\";\n                    failure: \"failure\";\n                    skipped: \"skipped\";\n                    neutral: \"neutral\";\n                    timed_out: \"timed_out\";\n                    action_required: \"action_required\";\n                    startup_failure: \"startup_failure\";\n                    stale: \"stale\";\n                }>>;\n                url: z$1.ZodNullable<z$1.ZodString>;\n                startedAt: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strict>>;\n            reviewDecision: z$1.ZodNullable<z$1.ZodEnum<{\n                APPROVED: \"APPROVED\";\n                CHANGES_REQUESTED: \"CHANGES_REQUESTED\";\n                REVIEW_REQUIRED: \"REVIEW_REQUIRED\";\n            }>>;\n            reviewRequestCount: z$1.ZodNumber;\n            mergeStateStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                BEHIND: \"BEHIND\";\n                BLOCKED: \"BLOCKED\";\n                CLEAN: \"CLEAN\";\n                DIRTY: \"DIRTY\";\n                DRAFT: \"DRAFT\";\n                HAS_HOOKS: \"HAS_HOOKS\";\n                UNKNOWN: \"UNKNOWN\";\n                UNSTABLE: \"UNSTABLE\";\n            }>>;\n            mergeable: z$1.ZodNullable<z$1.ZodEnum<{\n                UNKNOWN: \"UNKNOWN\";\n                CONFLICTING: \"CONFLICTING\";\n                MERGEABLE: \"MERGEABLE\";\n            }>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"absent\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        outcome: z$1.ZodLiteral<\"unavailable\">;\n        message: z$1.ZodString;\n    }, z$1.core.$strict>], \"outcome\">, \"onlineRpc\", true>;\n};\ntype HostDaemonCommandRegistry = typeof hostDaemonCommandRegistry;\ntype AnyHostDaemonCommandDescriptor = HostDaemonCommandRegistry[keyof HostDaemonCommandRegistry];\ntype HostDaemonCommandDescriptorForTransport<Transport extends HostDaemonCommandTransport> = Extract<AnyHostDaemonCommandDescriptor, {\n    transport: Transport;\n}>;\ntype HostDaemonResultSchemaMapForTransport<Transport extends HostDaemonCommandTransport> = {\n    [Descriptor in HostDaemonCommandDescriptorForTransport<Transport> as Descriptor[\"type\"]]: Descriptor[\"resultSchema\"];\n};\ntype HostDaemonOnlineRpcResultSchemaMap = HostDaemonResultSchemaMapForTransport<\"onlineRpc\">;\ntype HostDaemonOnlineRpcResultByType = {\n    [K in keyof HostDaemonOnlineRpcResultSchemaMap]: z$1.infer<HostDaemonOnlineRpcResultSchemaMap[K]>;\n};\n\ndeclare const pickFolderResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PickFolderResponse = z$1.infer<typeof pickFolderResponseSchema>;\ndeclare const pathsExistRequestSchema: z$1.ZodObject<{\n    paths: z$1.ZodPipe<z$1.ZodArray<z$1.ZodString>, z$1.ZodTransform<string[], string[]>>;\n}, z$1.core.$strip>;\ntype PathsExistRequest = z$1.infer<typeof pathsExistRequestSchema>;\ndeclare const pathsExistResponseSchema: z$1.ZodObject<{\n    existence: z$1.ZodRecord<z$1.ZodString, z$1.ZodBoolean>;\n}, z$1.core.$strip>;\ntype PathsExistResponse = z$1.infer<typeof pathsExistResponseSchema>;\ndeclare const providerCliStatusResponseSchema: z$1.ZodRecord<z$1.ZodEnum<{\n    codex: \"codex\";\n    claudeCode: \"claudeCode\";\n    cursor: \"cursor\";\n}>, z$1.ZodObject<{\n    displayName: z$1.ZodString;\n    executableName: z$1.ZodString;\n    executablePath: z$1.ZodNullable<z$1.ZodString>;\n    installed: z$1.ZodBoolean;\n    installSource: z$1.ZodEnum<{\n        notInstalled: \"notInstalled\";\n        npmGlobal: \"npmGlobal\";\n        external: \"external\";\n    }>;\n    currentVersion: z$1.ZodNullable<z$1.ZodString>;\n    latestVersion: z$1.ZodNullable<z$1.ZodString>;\n    minimumSupportedVersion: z$1.ZodNullable<z$1.ZodString>;\n    npmPackageName: z$1.ZodNullable<z$1.ZodString>;\n    npmGlobalPackageVersion: z$1.ZodNullable<z$1.ZodString>;\n    installAction: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            install: \"install\";\n            update: \"update\";\n        }>;\n        label: z$1.ZodEnum<{\n            Install: \"Install\";\n            Update: \"Update\";\n        }>;\n        commandKind: z$1.ZodEnum<{\n            exec: \"exec\";\n            shell: \"shell\";\n        }>;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    needsUpdate: z$1.ZodBoolean;\n    versionUnsupported: z$1.ZodBoolean;\n}, z$1.core.$strip>>;\ntype ProviderCliStatusResponse = z$1.infer<typeof providerCliStatusResponseSchema>;\ndeclare const providerCliInstallRequestSchema: z$1.ZodObject<{\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    actionKind: z$1.ZodEnum<{\n        install: \"install\";\n        update: \"update\";\n    }>;\n}, z$1.core.$strip>;\ntype ProviderCliInstallRequest = z$1.infer<typeof providerCliInstallRequestSchema>;\ndeclare const providerCliInstallEventSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"started\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    command: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"output\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    stream: z$1.ZodEnum<{\n        stdout: \"stdout\";\n        stderr: \"stderr\";\n    }>;\n    text: z$1.ZodString;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"completed\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    signal: z$1.ZodNullable<z$1.ZodString>;\n    success: z$1.ZodBoolean;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    type: z$1.ZodLiteral<\"error\">;\n    provider: z$1.ZodEnum<{\n        codex: \"codex\";\n        claudeCode: \"claudeCode\";\n        cursor: \"cursor\";\n    }>;\n    message: z$1.ZodString;\n}, z$1.core.$strip>], \"type\">;\ntype ProviderCliInstallEvent = z$1.infer<typeof providerCliInstallEventSchema>;\n\ninterface CreateFilePreviewResponse {\n    baseUrl: string;\n    expiresAtMs: number;\n}\ntype HostFileReadResponse = HostDaemonOnlineRpcResultByType[\"host.read_file\"];\ntype HostFileWriteResponse = HostDaemonOnlineRpcResultByType[\"host.write_file\"];\ntype HostFileListResponse = HostDaemonOnlineRpcResultByType[\"host.list_files\"];\ntype HostPathListResponse = HostDaemonOnlineRpcResultByType[\"host.list_paths\"];\ntype HostMkdirResponse = HostDaemonOnlineRpcResultByType[\"host.mkdir\"];\ntype HostMovePathResponse = HostDaemonOnlineRpcResultByType[\"host.move_path\"];\ntype HostRemovePathResponse = HostDaemonOnlineRpcResultByType[\"host.remove_path\"];\n\n/**\n * Query for `GET /hosts/:id/directory`, the interactive path browser's\n * single-level directory read. `path` is an absolute directory on the host;\n * omitting it lists the host's home directory (the daemon resolves it, since a\n * remote caller cannot know the host's home).\n */\ndeclare const hostDirectoryQuerySchema: z$1.ZodObject<{\n    path: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype HostDirectoryQuery = z$1.infer<typeof hostDirectoryQuerySchema>;\ndeclare const hostDirectoryListingSchema: z$1.ZodObject<{\n    directory: z$1.ZodString;\n    parent: z$1.ZodNullable<z$1.ZodString>;\n    entries: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        name: z$1.ZodString;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype HostDirectoryListing = z$1.infer<typeof hostDirectoryListingSchema>;\n/** Project name is sent so the daemon can derive its host-local checkout path. */\ndeclare const hostCloneDefaultPathQuerySchema: z$1.ZodObject<{\n    projectId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype HostCloneDefaultPathQuery = z$1.infer<typeof hostCloneDefaultPathQuerySchema>;\ndeclare const hostCloneDefaultPathResponseSchema: z$1.ZodObject<{\n    path: z$1.ZodString;\n}, z$1.core.$strict>;\ntype HostCloneDefaultPathResponse = z$1.infer<typeof hostCloneDefaultPathResponseSchema>;\ndeclare const createHostJoinCodeResponseSchema: z$1.ZodObject<{\n    joinCode: z$1.ZodString;\n    hostId: z$1.ZodString;\n    expiresAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype CreateHostJoinCodeResponse = z$1.infer<typeof createHostJoinCodeResponseSchema>;\ndeclare const updateHostRequestSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateHostRequest = z$1.infer<typeof updateHostRequestSchema>;\ndeclare const hostRetryUpdateResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strict>;\ntype HostRetryUpdateResponse = z$1.infer<typeof hostRetryUpdateResponseSchema>;\ntype HostPathsExistRequest = PathsExistRequest;\ntype HostPathsExistResponse = PathsExistResponse;\ndeclare const hostPickFolderRequestSchema: z$1.ZodObject<{\n    clientHostId: z$1.ZodString;\n}, z$1.core.$strict>;\ntype HostPickFolderRequest = z$1.infer<typeof hostPickFolderRequestSchema>;\ntype HostPickFolderResponse = PickFolderResponse;\ntype HostProviderCliStatusResponse = ProviderCliStatusResponse;\ntype HostProviderCliInstallRequest = ProviderCliInstallRequest;\ntype HostProviderCliInstallEvent = ProviderCliInstallEvent;\n\ndeclare const pluginUpdateCheckEntrySchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    outcome: z$1.ZodEnum<{\n        unavailable: \"unavailable\";\n        incompatible: \"incompatible\";\n        current: \"current\";\n        \"update-available\": \"update-available\";\n        pinned: \"pinned\";\n    }>;\n    devMode: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n    installed: z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>;\n    candidate: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    blocked: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        reasons: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginUpdateCheckEntry = z$1.infer<typeof pluginUpdateCheckEntrySchema>;\ndeclare const pluginApplyUpdateResultSchema: z$1.ZodObject<{\n    applied: z$1.ZodBoolean;\n    from: z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>;\n    to: z$1.ZodOptional<z$1.ZodObject<{\n        version: z$1.ZodString;\n        display: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    outcome: z$1.ZodEnum<{\n        current: \"current\";\n        updated: \"updated\";\n        \"rolled-back\": \"rolled-back\";\n    }>;\n    detail: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginApplyUpdateResult$1 = z$1.infer<typeof pluginApplyUpdateResultSchema>;\ndeclare const pluginSourceDetailSchema: z$1.ZodObject<{\n    requested: z$1.ZodString;\n    resolved: z$1.ZodString;\n    subdirectory: z$1.ZodOptional<z$1.ZodString>;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n    resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n    integrity: z$1.ZodOptional<z$1.ZodString>;\n    registry: z$1.ZodOptional<z$1.ZodString>;\n    engines: z$1.ZodObject<{\n        bb: z$1.ZodOptional<z$1.ZodString>;\n        bbPluginSdk: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    installedAt: z$1.ZodOptional<z$1.ZodNumber>;\n    history: z$1.ZodArray<z$1.ZodObject<{\n        version: z$1.ZodString;\n        activatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginSourceDetail = z$1.infer<typeof pluginSourceDetailSchema>;\ndeclare const installedPluginSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    source: z$1.ZodString;\n    rootDir: z$1.ZodString;\n    version: z$1.ZodString;\n    provenance: z$1.ZodEnum<{\n        builtin: \"builtin\";\n        direct: \"direct\";\n        catalog: \"catalog\";\n    }>;\n    isOrphanedBuiltin: z$1.ZodBoolean;\n    catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n    catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n    publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n    sourceDisplay: z$1.ZodString;\n    updateState: z$1.ZodObject<{\n        outcome: z$1.ZodOptional<z$1.ZodEnum<{\n            unavailable: \"unavailable\";\n            incompatible: \"incompatible\";\n            current: \"current\";\n            \"update-available\": \"update-available\";\n            pinned: \"pinned\";\n        }>>;\n        detail: z$1.ZodOptional<z$1.ZodString>;\n        availableVersion: z$1.ZodOptional<z$1.ZodString>;\n        blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n        blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n        lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n        lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n            version: z$1.ZodString;\n            at: z$1.ZodNumber;\n            detail: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n    enabled: z$1.ZodBoolean;\n    description: z$1.ZodNullable<z$1.ZodString>;\n    name: z$1.ZodNullable<z$1.ZodString>;\n    icon: z$1.ZodNullable<z$1.ZodString>;\n    iconUrl: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        running: \"running\";\n        missing: \"missing\";\n        incompatible: \"incompatible\";\n        disabled: \"disabled\";\n        degraded: \"degraded\";\n        \"needs-configuration\": \"needs-configuration\";\n    }>;\n    statusDetail: z$1.ZodNullable<z$1.ZodString>;\n    handlerStats: z$1.ZodObject<{\n        count: z$1.ZodNumber;\n        totalMs: z$1.ZodNumber;\n        maxMs: z$1.ZodNumber;\n        errorCount: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    services: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        state: z$1.ZodEnum<{\n            running: \"running\";\n            stopped: \"stopped\";\n            backoff: \"backoff\";\n        }>;\n    }, z$1.core.$strip>>;\n    schedules: z$1.ZodArray<z$1.ZodObject<{\n        name: z$1.ZodString;\n        cron: z$1.ZodString;\n        nextRunAt: z$1.ZodNumber;\n        lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            ok: \"ok\";\n        }>>;\n        lastError: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        summary: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            skill: \"skill\";\n            theme: \"theme\";\n            \"agent-tool\": \"agent-tool\";\n            \"thread-integration\": \"thread-integration\";\n        }>;\n        id: z$1.ZodString;\n        label: z$1.ZodString;\n        detail: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>>;\n    hasSettings: z$1.ZodBoolean;\n    app: z$1.ZodObject<{\n        hasApp: z$1.ZodBoolean;\n        bundle: z$1.ZodNullable<z$1.ZodObject<{\n            jsUrl: z$1.ZodString;\n            cssUrl: z$1.ZodNullable<z$1.ZodString>;\n            hash: z$1.ZodString;\n            sdkMajor: z$1.ZodNumber;\n            sdkVersion: z$1.ZodString;\n            compatible: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>;\n    logoUrl: z$1.ZodNullable<z$1.ZodString>;\n    logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype InstalledPlugin = z$1.infer<typeof installedPluginSchema>;\ndeclare const pluginListResponseSchema: z$1.ZodObject<{\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        rootDir: z$1.ZodString;\n        version: z$1.ZodString;\n        provenance: z$1.ZodEnum<{\n            builtin: \"builtin\";\n            direct: \"direct\";\n            catalog: \"catalog\";\n        }>;\n        isOrphanedBuiltin: z$1.ZodBoolean;\n        catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n        catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n        publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n        sourceDisplay: z$1.ZodString;\n        updateState: z$1.ZodObject<{\n            outcome: z$1.ZodOptional<z$1.ZodEnum<{\n                unavailable: \"unavailable\";\n                incompatible: \"incompatible\";\n                current: \"current\";\n                \"update-available\": \"update-available\";\n                pinned: \"pinned\";\n            }>>;\n            detail: z$1.ZodOptional<z$1.ZodString>;\n            availableVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n                version: z$1.ZodString;\n                at: z$1.ZodNumber;\n                detail: z$1.ZodString;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        enabled: z$1.ZodBoolean;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        icon: z$1.ZodNullable<z$1.ZodString>;\n        iconUrl: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            missing: \"missing\";\n            incompatible: \"incompatible\";\n            disabled: \"disabled\";\n            degraded: \"degraded\";\n            \"needs-configuration\": \"needs-configuration\";\n        }>;\n        statusDetail: z$1.ZodNullable<z$1.ZodString>;\n        handlerStats: z$1.ZodObject<{\n            count: z$1.ZodNumber;\n            totalMs: z$1.ZodNumber;\n            maxMs: z$1.ZodNumber;\n            errorCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        services: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                stopped: \"stopped\";\n                backoff: \"backoff\";\n            }>;\n        }, z$1.core.$strip>>;\n        schedules: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            cron: z$1.ZodString;\n            nextRunAt: z$1.ZodNumber;\n            lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n            lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                error: \"error\";\n                running: \"running\";\n                ok: \"ok\";\n            }>>;\n            lastError: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            summary: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                skill: \"skill\";\n                theme: \"theme\";\n                \"agent-tool\": \"agent-tool\";\n                \"thread-integration\": \"thread-integration\";\n            }>;\n            id: z$1.ZodString;\n            label: z$1.ZodString;\n            detail: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        hasSettings: z$1.ZodBoolean;\n        app: z$1.ZodObject<{\n            hasApp: z$1.ZodBoolean;\n            bundle: z$1.ZodNullable<z$1.ZodObject<{\n                jsUrl: z$1.ZodString;\n                cssUrl: z$1.ZodNullable<z$1.ZodString>;\n                hash: z$1.ZodString;\n                sdkMajor: z$1.ZodNumber;\n                sdkVersion: z$1.ZodString;\n                compatible: z$1.ZodBoolean;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginListResponse = z$1.infer<typeof pluginListResponseSchema>;\ndeclare const pluginReloadResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        source: z$1.ZodString;\n        rootDir: z$1.ZodString;\n        version: z$1.ZodString;\n        provenance: z$1.ZodEnum<{\n            builtin: \"builtin\";\n            direct: \"direct\";\n            catalog: \"catalog\";\n        }>;\n        isOrphanedBuiltin: z$1.ZodBoolean;\n        catalogEntryId: z$1.ZodOptional<z$1.ZodString>;\n        catalogMarketplaceName: z$1.ZodOptional<z$1.ZodString>;\n        publisherLabel: z$1.ZodNullable<z$1.ZodString>;\n        sourceDisplay: z$1.ZodString;\n        updateState: z$1.ZodObject<{\n            outcome: z$1.ZodOptional<z$1.ZodEnum<{\n                unavailable: \"unavailable\";\n                incompatible: \"incompatible\";\n                current: \"current\";\n                \"update-available\": \"update-available\";\n                pinned: \"pinned\";\n            }>>;\n            detail: z$1.ZodOptional<z$1.ZodString>;\n            availableVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedVersion: z$1.ZodOptional<z$1.ZodString>;\n            blockedReasons: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n            lastCheckAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastFailure: z$1.ZodOptional<z$1.ZodObject<{\n                version: z$1.ZodString;\n                at: z$1.ZodNumber;\n                detail: z$1.ZodString;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        enabled: z$1.ZodBoolean;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        icon: z$1.ZodNullable<z$1.ZodString>;\n        iconUrl: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            running: \"running\";\n            missing: \"missing\";\n            incompatible: \"incompatible\";\n            disabled: \"disabled\";\n            degraded: \"degraded\";\n            \"needs-configuration\": \"needs-configuration\";\n        }>;\n        statusDetail: z$1.ZodNullable<z$1.ZodString>;\n        handlerStats: z$1.ZodObject<{\n            count: z$1.ZodNumber;\n            totalMs: z$1.ZodNumber;\n            maxMs: z$1.ZodNumber;\n            errorCount: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n        services: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                stopped: \"stopped\";\n                backoff: \"backoff\";\n            }>;\n        }, z$1.core.$strip>>;\n        schedules: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            cron: z$1.ZodString;\n            nextRunAt: z$1.ZodNumber;\n            lastRunAt: z$1.ZodNullable<z$1.ZodNumber>;\n            lastStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                error: \"error\";\n                running: \"running\";\n                ok: \"ok\";\n            }>>;\n            lastError: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        cliCommand: z$1.ZodNullable<z$1.ZodObject<{\n            name: z$1.ZodString;\n            summary: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        capabilities: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            kind: z$1.ZodEnum<{\n                skill: \"skill\";\n                theme: \"theme\";\n                \"agent-tool\": \"agent-tool\";\n                \"thread-integration\": \"thread-integration\";\n            }>;\n            id: z$1.ZodString;\n            label: z$1.ZodString;\n            detail: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        hasSettings: z$1.ZodBoolean;\n        app: z$1.ZodObject<{\n            hasApp: z$1.ZodBoolean;\n            bundle: z$1.ZodNullable<z$1.ZodObject<{\n                jsUrl: z$1.ZodString;\n                cssUrl: z$1.ZodNullable<z$1.ZodString>;\n                hash: z$1.ZodString;\n                sdkMajor: z$1.ZodNumber;\n                sdkVersion: z$1.ZodString;\n                compatible: z$1.ZodBoolean;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        logoDarkUrl: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype PluginReloadResponse = z$1.infer<typeof pluginReloadResponseSchema>;\ndeclare const pluginRemoveResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strip>;\ntype PluginRemoveResponse = z$1.infer<typeof pluginRemoveResponseSchema>;\ndeclare const pluginSettingsResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    schema: z$1.ZodRecord<z$1.ZodString, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"string\">;\n        secret: z$1.ZodOptional<z$1.ZodLiteral<true>>;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"boolean\">;\n        default: z$1.ZodOptional<z$1.ZodBoolean>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"select\">;\n        options: z$1.ZodArray<z$1.ZodString>;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project\">;\n        default: z$1.ZodOptional<z$1.ZodString>;\n        label: z$1.ZodString;\n        description: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>], \"type\">>;\n    values: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>;\n}, z$1.core.$strip>;\ntype PluginSettingsResponse = z$1.infer<typeof pluginSettingsResponseSchema>;\ndeclare const pluginTokenResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    token: z$1.ZodString;\n}, z$1.core.$strip>;\ntype PluginTokenResponse = z$1.infer<typeof pluginTokenResponseSchema>;\ndeclare const pluginCatalogStatusSchema: z$1.ZodObject<{\n    pluginCount: z$1.ZodNumber;\n    includedPluginCount: z$1.ZodNumber;\n    optionalPluginCount: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype PluginCatalogStatus = z$1.infer<typeof pluginCatalogStatusSchema>;\ndeclare const pluginCatalogSearchResultSchema: z$1.ZodObject<{\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    description: z$1.ZodString;\n    icon: z$1.ZodNullable<z$1.ZodString>;\n    iconUrl: z$1.ZodNullable<z$1.ZodString>;\n    category: z$1.ZodString;\n    source: z$1.ZodString;\n    marketplace: z$1.ZodString;\n    marketplaceDisplayName: z$1.ZodString;\n    publisherKey: z$1.ZodString;\n    publisherLabel: z$1.ZodString;\n    official: z$1.ZodBoolean;\n    author: z$1.ZodNullable<z$1.ZodObject<{\n        name: z$1.ZodString;\n        url: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    installed: z$1.ZodBoolean;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginCatalogSearchResult$1 = z$1.infer<typeof pluginCatalogSearchResultSchema>;\n/**\n * The true source an install will run against, resolved before anything runs.\n * Both kinds report the exact artifact they resolve to right now — a commit\n * for git, a version and its integrity for npm — so a range or tag install is\n * confirmed against the exact code it will fetch.\n */\ndeclare const pluginCatalogResolvedSourceSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"npm\">;\n    package: z$1.ZodString;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tag: z$1.ZodOptional<z$1.ZodString>;\n    registry: z$1.ZodOptional<z$1.ZodString>;\n    resolvedVersion: z$1.ZodOptional<z$1.ZodString>;\n    resolvedIntegrity: z$1.ZodOptional<z$1.ZodString>;\n    unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"git\">;\n    url: z$1.ZodString;\n    subdir: z$1.ZodOptional<z$1.ZodString>;\n    ref: z$1.ZodOptional<z$1.ZodString>;\n    range: z$1.ZodOptional<z$1.ZodString>;\n    tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n    resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n    resolvedCommit: z$1.ZodOptional<z$1.ZodString>;\n    unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>], \"kind\">;\ntype PluginCatalogResolvedSource = z$1.infer<typeof pluginCatalogResolvedSourceSchema>;\n/**\n * What `POST /plugin-catalog/install` would do with the same arguments, shown\n * to the user before anything runs. `bundled` entries install from the copy\n * inside the app; `marketplace` entries install from their listed source.\n */\ndeclare const pluginCatalogInstallPlanSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"bundled\">;\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    source: z$1.ZodString;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    kind: z$1.ZodLiteral<\"marketplace\">;\n    entryId: z$1.ZodString;\n    pluginId: z$1.ZodString;\n    displayName: z$1.ZodString;\n    marketplace: z$1.ZodString;\n    marketplaceDisplayName: z$1.ZodString;\n    official: z$1.ZodBoolean;\n    author: z$1.ZodObject<{\n        name: z$1.ZodString;\n        url: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    source: z$1.ZodString;\n    resolvedSource: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"npm\">;\n        package: z$1.ZodString;\n        range: z$1.ZodOptional<z$1.ZodString>;\n        tag: z$1.ZodOptional<z$1.ZodString>;\n        registry: z$1.ZodOptional<z$1.ZodString>;\n        resolvedVersion: z$1.ZodOptional<z$1.ZodString>;\n        resolvedIntegrity: z$1.ZodOptional<z$1.ZodString>;\n        unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"git\">;\n        url: z$1.ZodString;\n        subdir: z$1.ZodOptional<z$1.ZodString>;\n        ref: z$1.ZodOptional<z$1.ZodString>;\n        range: z$1.ZodOptional<z$1.ZodString>;\n        tagPrefix: z$1.ZodOptional<z$1.ZodString>;\n        resolvedTag: z$1.ZodOptional<z$1.ZodString>;\n        resolvedCommit: z$1.ZodOptional<z$1.ZodString>;\n        unresolvedReason: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strict>], \"kind\">;\n    compatible: z$1.ZodBoolean;\n    incompatibleReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>], \"kind\">;\ntype PluginCatalogInstallPlan = z$1.infer<typeof pluginCatalogInstallPlanSchema>;\ndeclare const pluginMarketplaceSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    displayName: z$1.ZodString;\n    description: z$1.ZodNullable<z$1.ZodString>;\n    official: z$1.ZodBoolean;\n    sourceKind: z$1.ZodEnum<{\n        path: \"path\";\n        git: \"git\";\n        https: \"https\";\n    }>;\n    source: z$1.ZodString;\n    resolvedCommit: z$1.ZodNullable<z$1.ZodString>;\n    entryCount: z$1.ZodNumber;\n    lastRefreshAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastAttemptAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastError: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype PluginMarketplace = z$1.infer<typeof pluginMarketplaceSchema>;\ndeclare const pluginMarketplaceRefreshResultSchema: z$1.ZodObject<{\n    name: z$1.ZodString;\n    ok: z$1.ZodBoolean;\n    error: z$1.ZodNullable<z$1.ZodString>;\n    marketplace: z$1.ZodObject<{\n        name: z$1.ZodString;\n        displayName: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n        official: z$1.ZodBoolean;\n        sourceKind: z$1.ZodEnum<{\n            path: \"path\";\n            git: \"git\";\n            https: \"https\";\n        }>;\n        source: z$1.ZodString;\n        resolvedCommit: z$1.ZodNullable<z$1.ZodString>;\n        entryCount: z$1.ZodNumber;\n        lastRefreshAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastAttemptAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastError: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype PluginMarketplaceRefreshResult$1 = z$1.infer<typeof pluginMarketplaceRefreshResultSchema>;\n\ndeclare const systemExecutionOptionsResponseSchema: z$1.ZodObject<{\n    providers: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        displayName: z$1.ZodString;\n        logoUrl: z$1.ZodNullable<z$1.ZodString>;\n        capabilities: z$1.ZodObject<{\n            supportsThreadArchive: z$1.ZodBoolean;\n            supportsThreadRename: z$1.ZodBoolean;\n            supportsServiceTier: z$1.ZodBoolean;\n            supportsNativeUserQuestion: z$1.ZodBoolean;\n            supportsFork: z$1.ZodBoolean;\n            supportsSessionRewind: z$1.ZodBoolean;\n            permissionModes: z$1.ZodArray<z$1.ZodEnum<{\n                \"accept-edits\": \"accept-edits\";\n                auto: \"auto\";\n                full: \"full\";\n            }>>;\n        }, z$1.core.$strip>;\n        composerActions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"skills\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            command: z$1.ZodObject<{\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                trailingText: z$1.ZodString;\n            }, z$1.core.$strip>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"goal\">;\n            command: z$1.ZodObject<{\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                trailingText: z$1.ZodString;\n            }, z$1.core.$strip>;\n        }, z$1.core.$strip>], \"kind\">>;\n        available: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    permissionCeiling: z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>;\n    models: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        model: z$1.ZodString;\n        displayName: z$1.ZodString;\n        routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n        description: z$1.ZodString;\n        supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n            reasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            description: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        defaultReasoningEffort: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        isDefault: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    selectedOnlyModels: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        model: z$1.ZodString;\n        displayName: z$1.ZodString;\n        routeProviderId: z$1.ZodOptional<z$1.ZodString>;\n        description: z$1.ZodString;\n        supportedReasoningEfforts: z$1.ZodArray<z$1.ZodObject<{\n            reasoningEffort: z$1.ZodEnum<{\n                none: \"none\";\n                low: \"low\";\n                medium: \"medium\";\n                high: \"high\";\n                xhigh: \"xhigh\";\n                ultracode: \"ultracode\";\n                max: \"max\";\n                ultra: \"ultra\";\n            }>;\n            description: z$1.ZodString;\n        }, z$1.core.$strip>>;\n        defaultReasoningEffort: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        isDefault: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    modelLoadError: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        code: z$1.ZodEnum<{\n            failed: \"failed\";\n            provider_unavailable: \"provider_unavailable\";\n            missing_executable: \"missing_executable\";\n            auth_required: \"auth_required\";\n            timeout: \"timeout\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SystemExecutionOptionsResponse = z$1.infer<typeof systemExecutionOptionsResponseSchema>;\n/**\n * Routes provider discovery through an environment's host or an explicit\n * host. Omitting both preserves the primary-host fallback.\n */\ndeclare const systemProvidersQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemProvidersQuery = z$1.infer<typeof systemProvidersQuerySchema>;\ndeclare const systemExecutionOptionsQuerySchema: z$1.ZodObject<{\n    providerId: z$1.ZodOptional<z$1.ZodString>;\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n    environmentId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemExecutionOptionsQuery = z$1.infer<typeof systemExecutionOptionsQuerySchema>;\n/** Omission preserves the existing behavior of reading the primary machine. */\ndeclare const systemUsageLimitsQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemUsageLimitsQuery = z$1.infer<typeof systemUsageLimitsQuerySchema>;\ndeclare const systemVoiceTranscriptionResponseSchema: z$1.ZodObject<{\n    text: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemVoiceTranscriptionResponse = z$1.infer<typeof systemVoiceTranscriptionResponseSchema>;\ndeclare const onboardingAgentOverviewSchema: z$1.ZodObject<{\n    agents: z$1.ZodArray<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        displayName: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            connected: \"connected\";\n            unauthenticated: \"unauthenticated\";\n            expired: \"expired\";\n            not_installed: \"not_installed\";\n        }>;\n        planLabel: z$1.ZodNullable<z$1.ZodString>;\n        accountEmail: z$1.ZodNullable<z$1.ZodString>;\n        canInstall: z$1.ZodBoolean;\n        loginCommand: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype OnboardingAgentOverview = z$1.infer<typeof onboardingAgentOverviewSchema>;\n/** Omission reads the primary machine, matching the usage-limits route. */\ndeclare const systemOnboardingReposQuerySchema: z$1.ZodObject<{\n    hostId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemOnboardingReposQuery = z$1.infer<typeof systemOnboardingReposQuerySchema>;\n/**\n * Onboarding funnel events, reported by the app and forwarded to the server's\n * anonymous telemetry. Categorical or counts only — never paths, project names,\n * or account emails.\n */\ndeclare const onboardingTelemetryEventSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_started\">;\n    agentState: z$1.ZodEnum<{\n        connected: \"connected\";\n        none: \"none\";\n        signed_out: \"signed_out\";\n    }>;\n    detectedAgentCount: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_step_completed\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_step_skipped\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_completed\">;\n    agentState: z$1.ZodEnum<{\n        connected: \"connected\";\n        none: \"none\";\n        signed_out: \"signed_out\";\n    }>;\n    projectsAdded: z$1.ZodNumber;\n    durationMs: z$1.ZodNumber;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    name: z$1.ZodLiteral<\"onboarding_dismissed\">;\n    step: z$1.ZodEnum<{\n        agents: \"agents\";\n        projects: \"projects\";\n    }>;\n}, z$1.core.$strip>], \"name\">;\ntype OnboardingTelemetryEvent = z$1.infer<typeof onboardingTelemetryEventSchema>;\ndeclare const systemConfigResponseSchema: z$1.ZodObject<{\n    generalSettings: z$1.ZodObject<{\n        showKeyboardHints: z$1.ZodBoolean;\n        steerActiveThreadOnEnter: z$1.ZodBoolean;\n        showUnhandledProviderEvents: z$1.ZodBoolean;\n        codexMemoryEnabled: z$1.ZodBoolean;\n        claudeCodeMemoryEnabled: z$1.ZodBoolean;\n        codexSubagentsDisabled: z$1.ZodBoolean;\n        claudeCodeSubagentsDisabled: z$1.ZodBoolean;\n        claudeCodeWorkflowsDisabled: z$1.ZodBoolean;\n        onboardingCompletedAt: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>;\n    keybindings: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        desktopOnly: z$1.ZodBoolean;\n        shortcut: z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>;\n        when: z$1.ZodObject<{\n            all: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n            none: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n        }, z$1.core.$strict>;\n    }, z$1.core.$strict>>;\n    defaultKeybindings: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        desktopOnly: z$1.ZodBoolean;\n        when: z$1.ZodObject<{\n            all: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n            none: z$1.ZodArray<z$1.ZodEnum<{\n                mainSurface: \"mainSurface\";\n                modalOpen: \"modalOpen\";\n                editableFocus: \"editableFocus\";\n                terminalFocus: \"terminalFocus\";\n                browserFocus: \"browserFocus\";\n                modelPickerOpen: \"modelPickerOpen\";\n                questionOpen: \"questionOpen\";\n                promptAvailable: \"promptAvailable\";\n                splitActive: \"splitActive\";\n                webSurface: \"webSurface\";\n                macPlatform: \"macPlatform\";\n            }>>;\n        }, z$1.core.$strict>;\n        shortcut: z$1.ZodNullable<z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    keybindingOverrides: z$1.ZodArray<z$1.ZodObject<{\n        command: z$1.ZodEnum<{\n            \"thread.new\": \"thread.new\";\n            \"thread.search\": \"thread.search\";\n            \"thread.rename\": \"thread.rename\";\n            \"thread.archive\": \"thread.archive\";\n            \"thread.previous\": \"thread.previous\";\n            \"thread.next\": \"thread.next\";\n            \"thread.jump.1\": \"thread.jump.1\";\n            \"thread.jump.2\": \"thread.jump.2\";\n            \"thread.jump.3\": \"thread.jump.3\";\n            \"thread.jump.4\": \"thread.jump.4\";\n            \"thread.jump.5\": \"thread.jump.5\";\n            \"thread.jump.6\": \"thread.jump.6\";\n            \"thread.jump.7\": \"thread.jump.7\";\n            \"thread.jump.8\": \"thread.jump.8\";\n            \"thread.jump.9\": \"thread.jump.9\";\n            \"pane.focus.previous\": \"pane.focus.previous\";\n            \"pane.focus.next\": \"pane.focus.next\";\n            \"pane.focus.1\": \"pane.focus.1\";\n            \"pane.focus.2\": \"pane.focus.2\";\n            \"pane.focus.3\": \"pane.focus.3\";\n            \"pane.focus.4\": \"pane.focus.4\";\n            \"pane.focus.5\": \"pane.focus.5\";\n            \"pane.focus.6\": \"pane.focus.6\";\n            \"pane.focus.7\": \"pane.focus.7\";\n            \"pane.focus.8\": \"pane.focus.8\";\n            \"pane.maximize.toggle\": \"pane.maximize.toggle\";\n            \"pane.close\": \"pane.close\";\n            \"window.new\": \"window.new\";\n            \"settings.open\": \"settings.open\";\n            \"settings.openServers\": \"settings.openServers\";\n            \"sidebar.toggle\": \"sidebar.toggle\";\n            \"panel.newTab\": \"panel.newTab\";\n            \"panel.close\": \"panel.close\";\n            \"panel.toggle\": \"panel.toggle\";\n            \"file.quickOpen\": \"file.quickOpen\";\n            \"diff.toggle\": \"diff.toggle\";\n            \"terminal.open\": \"terminal.open\";\n            \"composer.focus\": \"composer.focus\";\n            \"modelPicker.toggle\": \"modelPicker.toggle\";\n            \"modelPicker.cycleModel\": \"modelPicker.cycleModel\";\n            \"modelPicker.cycleModelBackward\": \"modelPicker.cycleModelBackward\";\n            \"modelPicker.cycleProvider\": \"modelPicker.cycleProvider\";\n            \"modelPicker.cycleProviderBackward\": \"modelPicker.cycleProviderBackward\";\n            \"modelPicker.cycleReasoning\": \"modelPicker.cycleReasoning\";\n            \"modelPicker.cycleReasoningBackward\": \"modelPicker.cycleReasoningBackward\";\n            \"browser.focusLocation\": \"browser.focusLocation\";\n            \"browser.reload\": \"browser.reload\";\n            \"workspace.openPreferred\": \"workspace.openPreferred\";\n            \"question.select.1\": \"question.select.1\";\n            \"question.select.2\": \"question.select.2\";\n            \"question.select.3\": \"question.select.3\";\n            \"question.select.4\": \"question.select.4\";\n            \"question.select.5\": \"question.select.5\";\n            \"question.select.6\": \"question.select.6\";\n            \"question.select.7\": \"question.select.7\";\n            \"question.select.8\": \"question.select.8\";\n            \"question.select.9\": \"question.select.9\";\n        }>;\n        shortcut: z$1.ZodNullable<z$1.ZodObject<{\n            key: z$1.ZodString;\n            mod: z$1.ZodBoolean;\n            meta: z$1.ZodBoolean;\n            control: z$1.ZodBoolean;\n            alt: z$1.ZodBoolean;\n            shift: z$1.ZodBoolean;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    experiments: z$1.ZodRecord<z$1.ZodEnum<{\n        claudeCodeMockCliTraffic: \"claudeCodeMockCliTraffic\";\n        editMessages: \"editMessages\";\n        newOnboarding: \"newOnboarding\";\n        providerSessionReaping: \"providerSessionReaping\";\n    }>, z$1.ZodBoolean>;\n    appearance: z$1.ZodObject<{\n        themeId: z$1.ZodString;\n        customCss: z$1.ZodNullable<z$1.ZodString>;\n        faviconColor: z$1.ZodEnum<{\n            default: \"default\";\n            red: \"red\";\n            orange: \"orange\";\n            yellow: \"yellow\";\n            green: \"green\";\n            teal: \"teal\";\n            blue: \"blue\";\n            purple: \"purple\";\n            pink: \"pink\";\n        }>;\n        resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n            dark: z$1.ZodString;\n            light: z$1.ZodString;\n            files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>;\n    customThemes: z$1.ZodArray<z$1.ZodString>;\n    pluginThemes: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        pluginId: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    featureFlags: z$1.ZodObject<{\n        placeholder: z$1.ZodBoolean;\n        timelineWindowEventBudget: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    hostDaemonPort: z$1.ZodNullable<z$1.ZodNumber>;\n    serverUrl: z$1.ZodString;\n    primaryHostId: z$1.ZodNullable<z$1.ZodString>;\n    primaryHostPlatform: z$1.ZodNullable<z$1.ZodEnum<{\n        unknown: \"unknown\";\n        darwin: \"darwin\";\n        linux: \"linux\";\n        wsl: \"wsl\";\n    }>>;\n    voiceTranscriptionEnabled: z$1.ZodBoolean;\n    dataDir: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemConfigResponse = z$1.infer<typeof systemConfigResponseSchema>;\ndeclare const systemAttentionResponseSchema: z$1.ZodObject<{\n    hasAttention: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype SystemAttentionResponse = z$1.infer<typeof systemAttentionResponseSchema>;\n/**\n * Theme catalog: the on-disk custom-theme directory plus the discovered custom\n * themes and the active palette. Drives `bb theme list` / `bb theme dir`.\n */\ndeclare const themeCatalogResponseSchema: z$1.ZodObject<{\n    dir: z$1.ZodString;\n    custom: z$1.ZodArray<z$1.ZodString>;\n    plugins: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        pluginId: z$1.ZodString;\n        name: z$1.ZodString;\n        description: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    active: z$1.ZodObject<{\n        themeId: z$1.ZodString;\n        customCss: z$1.ZodNullable<z$1.ZodString>;\n        faviconColor: z$1.ZodEnum<{\n            default: \"default\";\n            red: \"red\";\n            orange: \"orange\";\n            yellow: \"yellow\";\n            green: \"green\";\n            teal: \"teal\";\n            blue: \"blue\";\n            purple: \"purple\";\n            pink: \"pink\";\n        }>;\n        resolvedCodeTheme: z$1.ZodDefault<z$1.ZodObject<{\n            dark: z$1.ZodString;\n            light: z$1.ZodString;\n            files: z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonObject, unknown, z$1.core.$ZodTypeInternals<JsonObject, unknown>>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype ThemeCatalogResponse = z$1.infer<typeof themeCatalogResponseSchema>;\ndeclare const systemVersionResponseSchema: z$1.ZodObject<{\n    currentVersion: z$1.ZodString;\n    latestVersion: z$1.ZodNullable<z$1.ZodString>;\n    source: z$1.ZodLiteral<\"npm\">;\n    updateAvailable: z$1.ZodBoolean;\n    isDevelopment: z$1.ZodBoolean;\n    upgradeCommand: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SystemVersionResponse = z$1.infer<typeof systemVersionResponseSchema>;\ndeclare const systemConfigReloadResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n}, z$1.core.$strip>;\ndeclare const systemCliSkillsStatusResponseSchema: z$1.ZodObject<{\n    machines: z$1.ZodArray<z$1.ZodObject<{\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            missing: \"missing\";\n            installed: \"installed\";\n            outdated: \"outdated\";\n        }>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype SystemCliSkillsStatusResponse = z$1.infer<typeof systemCliSkillsStatusResponseSchema>;\n/** The machines to copy the built-in bb CLI skills onto. */\ndeclare const systemInstallCliSkillsRequestSchema: z$1.ZodObject<{\n    hostIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SystemInstallCliSkillsRequest = z$1.infer<typeof systemInstallCliSkillsRequestSchema>;\n/**\n * One entry per requested machine. A machine that is offline or otherwise\n * refuses the install fails on its own without taking the others down, so the\n * caller can report exactly which machines got the skills.\n */\ndeclare const systemInstallCliSkillsResponseSchema: z$1.ZodObject<{\n    results: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        ok: z$1.ZodLiteral<true>;\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        installations: z$1.ZodArray<z$1.ZodObject<{\n            name: z$1.ZodString;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        ok: z$1.ZodLiteral<false>;\n        hostId: z$1.ZodString;\n        hostName: z$1.ZodString;\n        errorMessage: z$1.ZodString;\n    }, z$1.core.$strip>], \"ok\">>;\n}, z$1.core.$strip>;\ntype SystemInstallCliSkillsResponse = z$1.infer<typeof systemInstallCliSkillsResponseSchema>;\ntype SystemConfigReloadResponse = z$1.infer<typeof systemConfigReloadResponseSchema>;\n\ndeclare const terminalSessionSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodNullable<z$1.ZodString>;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    hostId: z$1.ZodString;\n    title: z$1.ZodString;\n    initialCwd: z$1.ZodString;\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n    status: z$1.ZodEnum<{\n        starting: \"starting\";\n        disconnected: \"disconnected\";\n        running: \"running\";\n        exited: \"exited\";\n    }>;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    closeReason: z$1.ZodNullable<z$1.ZodEnum<{\n        user: \"user\";\n        \"thread-deleted\": \"thread-deleted\";\n        \"process-exit\": \"process-exit\";\n        \"daemon-disconnect\": \"daemon-disconnect\";\n        \"environment-destroyed\": \"environment-destroyed\";\n        \"thread-archived\": \"thread-archived\";\n        \"open-timeout\": \"open-timeout\";\n    }>>;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    lastUserInputAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TerminalSession = z$1.infer<typeof terminalSessionSchema>;\ndeclare const terminalListResponseSchema: z$1.ZodObject<{\n    sessions: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        hostId: z$1.ZodString;\n        title: z$1.ZodString;\n        initialCwd: z$1.ZodString;\n        cols: z$1.ZodNumber;\n        rows: z$1.ZodNumber;\n        status: z$1.ZodEnum<{\n            starting: \"starting\";\n            disconnected: \"disconnected\";\n            running: \"running\";\n            exited: \"exited\";\n        }>;\n        exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n        closeReason: z$1.ZodNullable<z$1.ZodEnum<{\n            user: \"user\";\n            \"thread-deleted\": \"thread-deleted\";\n            \"process-exit\": \"process-exit\";\n            \"daemon-disconnect\": \"daemon-disconnect\";\n            \"environment-destroyed\": \"environment-destroyed\";\n            \"thread-archived\": \"thread-archived\";\n            \"open-timeout\": \"open-timeout\";\n        }>>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        lastUserInputAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype TerminalListResponse = z$1.infer<typeof terminalListResponseSchema>;\ndeclare const createTerminalRequestSchema: z$1.ZodObject<{\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n    start: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"shell\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"command\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strict>], \"mode\">>;\n    target: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"environment\">;\n        environmentId: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"host_path\">;\n        hostId: z$1.ZodString;\n        cwd: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>], \"kind\">;\n    title: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype CreateTerminalRequest = z$1.infer<typeof createTerminalRequestSchema>;\ndeclare const updateTerminalRequestSchema: z$1.ZodObject<{\n    title: z$1.ZodString;\n}, z$1.core.$strict>;\ntype UpdateTerminalRequest = z$1.infer<typeof updateTerminalRequestSchema>;\ndeclare const terminalInputRequestSchema: z$1.ZodObject<{\n    dataBase64: z$1.ZodString;\n}, z$1.core.$strict>;\ntype TerminalInputRequest = z$1.infer<typeof terminalInputRequestSchema>;\ndeclare const terminalResizeRequestSchema: z$1.ZodObject<{\n    cols: z$1.ZodNumber;\n    rows: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype TerminalResizeRequest = z$1.infer<typeof terminalResizeRequestSchema>;\ndeclare const terminalOutputQuerySchema: z$1.ZodObject<{\n    sinceSeq: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n    tailBytes: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n    limitChunks: z$1.ZodOptional<z$1.ZodCoercedNumber<unknown>>;\n}, z$1.core.$strict>;\ntype TerminalOutputQuery = z$1.infer<typeof terminalOutputQuerySchema>;\ndeclare const terminalOutputResponseSchema: z$1.ZodObject<{\n    chunks: z$1.ZodArray<z$1.ZodObject<{\n        seq: z$1.ZodNumber;\n        dataBase64: z$1.ZodString;\n    }, z$1.core.$strict>>;\n    nextSeq: z$1.ZodNumber;\n    truncated: z$1.ZodBoolean;\n}, z$1.core.$strict>;\ntype TerminalOutputResponse = z$1.infer<typeof terminalOutputResponseSchema>;\n\ndeclare const timelineRowStatusSchema: z$1.ZodEnum<{\n    error: \"error\";\n    pending: \"pending\";\n    completed: \"completed\";\n    interrupted: \"interrupted\";\n}>;\ntype TimelineRowStatus = z$1.infer<typeof timelineRowStatusSchema>;\ndeclare const timelineRowBaseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype TimelineRowBase = z$1.infer<typeof timelineRowBaseSchema>;\ndeclare const timelineConversationRowSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"conversation\">;\n    text: z$1.ZodString;\n    attachments: z$1.ZodNullable<z$1.ZodObject<{\n        webImages: z$1.ZodNumber;\n        localImages: z$1.ZodNumber;\n        localFiles: z$1.ZodNumber;\n        imageUrls: z$1.ZodArray<z$1.ZodString>;\n        localImagePaths: z$1.ZodArray<z$1.ZodString>;\n        localFilePaths: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    role: z$1.ZodLiteral<\"user\">;\n    initiator: z$1.ZodEnum<{\n        user: \"user\";\n        agent: \"agent\";\n        system: \"system\";\n    }>;\n    senderThreadId: z$1.ZodNullable<z$1.ZodString>;\n    systemMessageKind: z$1.ZodEnum<{\n        \"ownership-assigned\": \"ownership-assigned\";\n        \"ownership-removed\": \"ownership-removed\";\n        \"child-needs-attention\": \"child-needs-attention\";\n        \"child-completed\": \"child-completed\";\n        \"child-failed\": \"child-failed\";\n        \"child-interrupted\": \"child-interrupted\";\n        \"child-outcome-batch\": \"child-outcome-batch\";\n        unlabeled: \"unlabeled\";\n    }>;\n    systemMessageSubject: z$1.ZodNullable<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread\">;\n        threadId: z$1.ZodString;\n        threadName: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"thread-batch\">;\n        count: z$1.ZodNumber;\n    }, z$1.core.$strip>], \"kind\">>;\n    turnRequest: z$1.ZodObject<{\n        isGrouped: z$1.ZodBoolean;\n        kind: z$1.ZodEnum<{\n            message: \"message\";\n            steer: \"steer\";\n        }>;\n        status: z$1.ZodEnum<{\n            pending: \"pending\";\n            accepted: \"accepted\";\n            rejected: \"rejected\";\n        }>;\n    }, z$1.core.$strip>;\n    mentions: z$1.ZodArray<z$1.ZodObject<{\n        start: z$1.ZodNumber;\n        end: z$1.ZodNumber;\n        resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"thread\">;\n            threadId: z$1.ZodString;\n            projectId: z$1.ZodOptional<z$1.ZodString>;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"project\">;\n            projectId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"section\">;\n            sectionId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"path\">;\n            source: z$1.ZodEnum<{\n                workspace: \"workspace\";\n                \"thread-storage\": \"thread-storage\";\n            }>;\n            entryKind: z$1.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            trigger: z$1.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z$1.ZodString;\n            source: z$1.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z$1.ZodEnum<{\n                user: \"user\";\n                project: \"project\";\n                builtin: \"builtin\";\n            }>;\n            label: z$1.ZodString;\n            argumentHint: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plugin\">;\n            pluginId: z$1.ZodString;\n            icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n            itemId: z$1.ZodString;\n            label: z$1.ZodString;\n        }, z$1.core.$strip>], \"kind\">>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"conversation\">;\n    text: z$1.ZodString;\n    attachments: z$1.ZodNullable<z$1.ZodObject<{\n        webImages: z$1.ZodNumber;\n        localImages: z$1.ZodNumber;\n        localFiles: z$1.ZodNumber;\n        imageUrls: z$1.ZodArray<z$1.ZodString>;\n        localImagePaths: z$1.ZodArray<z$1.ZodString>;\n        localFilePaths: z$1.ZodArray<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    role: z$1.ZodLiteral<\"assistant\">;\n    turnRequest: z$1.ZodNull;\n}, z$1.core.$strip>], \"role\">;\ntype TimelineConversationRow = z$1.infer<typeof timelineConversationRowSchema>;\ndeclare const timelineSystemRowSchema: z$1.ZodUnion<readonly [z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodNullable<z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>>;\n    systemKind: z$1.ZodEnum<{\n        error: \"error\";\n        debug: \"debug\";\n        reconnect: \"reconnect\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodNullable<z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>>;\n    systemKind: z$1.ZodLiteral<\"operation\">;\n    operationKind: z$1.ZodEnum<{\n        generic: \"generic\";\n        compaction: \"compaction\";\n        \"context-clear\": \"context-clear\";\n        \"thread-provisioning\": \"thread-provisioning\";\n        \"thread-interrupted\": \"thread-interrupted\";\n        \"provider-unhandled\": \"provider-unhandled\";\n        warning: \"warning\";\n        deprecation: \"deprecation\";\n    }>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"system\">;\n    title: z$1.ZodString;\n    detail: z$1.ZodNullable<z$1.ZodString>;\n    systemKind: z$1.ZodLiteral<\"operation\">;\n    operationKind: z$1.ZodLiteral<\"parent-change\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    parentChange: z$1.ZodObject<{\n        action: z$1.ZodEnum<{\n            assign: \"assign\";\n            release: \"release\";\n            transfer: \"transfer\";\n        }>;\n        previousParentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        previousParentThreadTitle: z$1.ZodNullable<z$1.ZodString>;\n        nextParentThreadId: z$1.ZodNullable<z$1.ZodString>;\n        nextParentThreadTitle: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>], \"operationKind\">]>;\ntype TimelineSystemRow = z$1.infer<typeof timelineSystemRowSchema>;\ninterface TimelineWorkRowBase extends TimelineRowBase {\n    kind: \"work\";\n    status: TimelineRowStatus;\n}\ndeclare const timelineCommandWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"command\">;\n    callId: z$1.ZodString;\n    command: z$1.ZodString;\n    cwd: z$1.ZodNullable<z$1.ZodString>;\n    source: z$1.ZodNullable<z$1.ZodString>;\n    output: z$1.ZodString;\n    exitCode: z$1.ZodNullable<z$1.ZodNumber>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n    activityIntents: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"read\">;\n        command: z$1.ZodString;\n        name: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"list_files\">;\n        command: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"search\">;\n        command: z$1.ZodString;\n        query: z$1.ZodNullable<z$1.ZodString>;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unknown\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype TimelineCommandWorkRow = z$1.infer<typeof timelineCommandWorkRowSchema>;\ndeclare const timelineToolWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"tool\">;\n    callId: z$1.ZodString;\n    toolName: z$1.ZodString;\n    toolArgs: z$1.ZodNullable<z$1.ZodRecord<z$1.ZodString, z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>>>;\n    statusLabels: z$1.ZodOptional<z$1.ZodObject<{\n        pending: z$1.ZodString;\n        completed: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    output: z$1.ZodString;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n    activityIntents: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"read\">;\n        command: z$1.ZodString;\n        name: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"list_files\">;\n        command: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"search\">;\n        command: z$1.ZodString;\n        query: z$1.ZodNullable<z$1.ZodString>;\n        path: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"unknown\">;\n        command: z$1.ZodString;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype TimelineToolWorkRow = z$1.infer<typeof timelineToolWorkRowSchema>;\ndeclare const timelineFileChangeWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"file-change\">;\n    callId: z$1.ZodString;\n    change: z$1.ZodObject<{\n        path: z$1.ZodString;\n        kind: z$1.ZodNullable<z$1.ZodString>;\n        movePath: z$1.ZodNullable<z$1.ZodString>;\n        diff: z$1.ZodNullable<z$1.ZodString>;\n        diffStats: z$1.ZodObject<{\n            added: z$1.ZodNumber;\n            removed: z$1.ZodNumber;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>;\n    stdout: z$1.ZodNullable<z$1.ZodString>;\n    stderr: z$1.ZodNullable<z$1.ZodString>;\n    approvalStatus: z$1.ZodNullable<z$1.ZodEnum<{\n        waiting_for_approval: \"waiting_for_approval\";\n        denied: \"denied\";\n    }>>;\n}, z$1.core.$strip>;\ntype TimelineFileChangeWorkRow = z$1.infer<typeof timelineFileChangeWorkRowSchema>;\ndeclare const timelineWebSearchWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"web-search\">;\n    callId: z$1.ZodString;\n    queries: z$1.ZodArray<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWebSearchWorkRow = z$1.infer<typeof timelineWebSearchWorkRowSchema>;\ndeclare const timelineWebFetchWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"web-fetch\">;\n    callId: z$1.ZodString;\n    url: z$1.ZodString;\n    prompt: z$1.ZodNullable<z$1.ZodString>;\n    pattern: z$1.ZodNullable<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWebFetchWorkRow = z$1.infer<typeof timelineWebFetchWorkRowSchema>;\ndeclare const timelineImageViewWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"image-view\">;\n    callId: z$1.ZodString;\n    path: z$1.ZodString;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineImageViewWorkRow = z$1.infer<typeof timelineImageViewWorkRowSchema>;\ndeclare const timelineApprovalWorkRowSchema: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"approval\">;\n    interactionId: z$1.ZodString;\n    target: z$1.ZodObject<{\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    approvalKind: z$1.ZodLiteral<\"file-edit\">;\n    lifecycle: z$1.ZodEnum<{\n        denied: \"denied\";\n        waiting: \"waiting\";\n    }>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"approval\">;\n    interactionId: z$1.ZodString;\n    target: z$1.ZodObject<{\n        itemId: z$1.ZodString;\n        toolName: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>;\n    approvalKind: z$1.ZodLiteral<\"permission-grant\">;\n    lifecycle: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        denied: \"denied\";\n        resolving: \"resolving\";\n        granted: \"granted\";\n    }>;\n    grantScope: z$1.ZodNullable<z$1.ZodEnum<{\n        turn: \"turn\";\n        session: \"session\";\n    }>>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>], \"approvalKind\">;\ntype TimelineApprovalWorkRow = z$1.infer<typeof timelineApprovalWorkRowSchema>;\ndeclare const timelineQuestionWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"question\">;\n    interactionId: z$1.ZodString;\n    lifecycle: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        answered: \"answered\";\n    }>;\n    questions: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        prompt: z$1.ZodString;\n        shortLabel: z$1.ZodOptional<z$1.ZodString>;\n        multiSelect: z$1.ZodBoolean;\n        options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n            value: z$1.ZodString;\n            label: z$1.ZodString;\n            description: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>>;\n        allowFreeText: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    answers: z$1.ZodNullable<z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n        selected: z$1.ZodArray<z$1.ZodString>;\n        freeText: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>>>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype TimelineQuestionWorkRow = z$1.infer<typeof timelineQuestionWorkRowSchema>;\ninterface TimelineDelegationWorkRow extends TimelineWorkRowBase {\n    workKind: \"delegation\";\n    callId: string;\n    toolName: string;\n    subagentType: string | null;\n    description: string | null;\n    output: string;\n    completedAt: number | null;\n    childRows: TimelineRow[];\n}\n/**\n * A provider background task — a dynamic workflow (Claude Code Workflow tool)\n * or a backgrounded shell command (Bash run_in_background), discriminated by\n * `taskType`. The row outlives its spawning turn: progress and terminal state\n * arrive via thread-scoped events folded into this single row. `workflow` is\n * the merged phase/agent tree, present only for workflows; null for shell\n * commands and for workflows the provider reported no progress records for\n * (degraded rendering falls back to description + summary). `model` is the\n * spawning delegation's requested model for background agents; null for\n * commands, workflows, legacy events, and providers that do not expose it.\n */\ndeclare const timelineWorkflowWorkRowSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    sourceSeqStart: z$1.ZodNumber;\n    sourceSeqEnd: z$1.ZodNumber;\n    startedAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    kind: z$1.ZodLiteral<\"work\">;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        pending: \"pending\";\n        completed: \"completed\";\n        interrupted: \"interrupted\";\n    }>;\n    workKind: z$1.ZodLiteral<\"workflow\">;\n    itemId: z$1.ZodString;\n    taskType: z$1.ZodString;\n    workflowName: z$1.ZodNullable<z$1.ZodString>;\n    description: z$1.ZodString;\n    model: z$1.ZodNullable<z$1.ZodString>;\n    taskStatus: z$1.ZodEnum<{\n        pending: \"pending\";\n        completed: \"completed\";\n        running: \"running\";\n        paused: \"paused\";\n        failed: \"failed\";\n        killed: \"killed\";\n        stopped: \"stopped\";\n    }>;\n    workflow: z$1.ZodNullable<z$1.ZodObject<{\n        phases: z$1.ZodArray<z$1.ZodObject<{\n            index: z$1.ZodNumber;\n            title: z$1.ZodString;\n            kind: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n        agents: z$1.ZodArray<z$1.ZodObject<{\n            index: z$1.ZodNumber;\n            label: z$1.ZodString;\n            state: z$1.ZodEnum<{\n                running: \"running\";\n                failed: \"failed\";\n                queued: \"queued\";\n                done: \"done\";\n                skipped: \"skipped\";\n            }>;\n            model: z$1.ZodString;\n            attempt: z$1.ZodNumber;\n            cached: z$1.ZodBoolean;\n            lastProgressAt: z$1.ZodNumber;\n            phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n            phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n            agentType: z$1.ZodOptional<z$1.ZodString>;\n            isolation: z$1.ZodOptional<z$1.ZodString>;\n            queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n            lastToolName: z$1.ZodOptional<z$1.ZodString>;\n            lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n            promptPreview: z$1.ZodOptional<z$1.ZodString>;\n            resultPreview: z$1.ZodOptional<z$1.ZodString>;\n            error: z$1.ZodOptional<z$1.ZodString>;\n            tokens: z$1.ZodOptional<z$1.ZodNumber>;\n            toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n            durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>;\n    usage: z$1.ZodNullable<z$1.ZodObject<{\n        totalTokens: z$1.ZodNumber;\n        toolUses: z$1.ZodNumber;\n        durationMs: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    summary: z$1.ZodNullable<z$1.ZodString>;\n    error: z$1.ZodNullable<z$1.ZodString>;\n    completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strip>;\ntype TimelineWorkflowWorkRow = z$1.infer<typeof timelineWorkflowWorkRowSchema>;\ntype TimelineWorkRow = TimelineCommandWorkRow | TimelineToolWorkRow | TimelineFileChangeWorkRow | TimelineWebSearchWorkRow | TimelineWebFetchWorkRow | TimelineImageViewWorkRow | TimelineApprovalWorkRow | TimelineQuestionWorkRow | TimelineDelegationWorkRow | TimelineWorkflowWorkRow;\ninterface TimelineTurnRow extends TimelineRowBase {\n    kind: \"turn\";\n    turnId: string;\n    status: TimelineRowStatus;\n    summaryCount: number;\n    completedAt: number | null;\n    children: TimelineRow[] | null;\n}\ntype TimelineSourceRow = TimelineConversationRow | TimelineWorkRow | TimelineSystemRow;\ntype TimelineRow = TimelineSourceRow | TimelineTurnRow;\n\ndeclare const createExecutionInputSourcesSchema: z$1.ZodObject<{\n    providerId: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    model: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n}, z$1.core.$strict>;\ntype CreateExecutionInputSources = z$1.infer<typeof createExecutionInputSourcesSchema>;\ndeclare const createThreadRequestSchema: z$1.ZodObject<{\n    projectId: z$1.ZodString;\n    providerId: z$1.ZodOptional<z$1.ZodString>;\n    origin: z$1.ZodEnum<{\n        plugin: \"plugin\";\n        app: \"app\";\n        cli: \"cli\";\n        sdk: \"sdk\";\n    }>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n    title: z$1.ZodOptional<z$1.ZodString>;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        providerId: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    environment: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"reuse\">;\n        environmentId: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"host\">;\n        hostId: z$1.ZodOptional<z$1.ZodString>;\n        workspace: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"unmanaged\">;\n            path: z$1.ZodNullable<z$1.ZodString>;\n            branch: z$1.ZodOptional<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"existing\">;\n                name: z$1.ZodString;\n            }, z$1.core.$strict>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"new\">;\n                baseBranch: z$1.ZodString;\n            }, z$1.core.$strict>], \"kind\">>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"managed-worktree\">;\n            baseBranch: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"named\">;\n                name: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"default\">;\n            }, z$1.core.$strip>], \"kind\">;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            type: z$1.ZodLiteral<\"personal\">;\n        }, z$1.core.$strip>], \"type\">;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        type: z$1.ZodLiteral<\"project-default\">;\n    }, z$1.core.$strip>], \"type\">;\n    parentThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sectionId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    sourceThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sourceSeqEnd: z$1.ZodOptional<z$1.ZodNumber>;\n    startedOnBehalfOf: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodObject<{\n        initiator: z$1.ZodEnum<{\n            agent: \"agent\";\n            system: \"system\";\n        }>;\n        senderThreadId: z$1.ZodString;\n    }, z$1.core.$strip>>>;\n    originKind: z$1.ZodDefault<z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>>;\n}, z$1.core.$strip>;\ntype CreateThreadRequest = z$1.infer<typeof createThreadRequestSchema>;\ndeclare const forkThreadRequestSchema: z$1.ZodObject<{\n    sourceThreadId: z$1.ZodString;\n    sourceSeqEnd: z$1.ZodOptional<z$1.ZodNumber>;\n    input: z$1.ZodOptional<z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>>;\n    agentContextSeed: z$1.ZodOptional<z$1.ZodArray<z$1.ZodIntersection<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">, z$1.ZodObject<{\n        visibility: z$1.ZodLiteral<\"agent-only\">;\n    }, z$1.core.$strip>>>>;\n    title: z$1.ZodOptional<z$1.ZodString>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    visibility: z$1.ZodDefault<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n    workspace: z$1.ZodDefault<z$1.ZodEnum<{\n        reuse: \"reuse\";\n        isolated: \"isolated\";\n    }>>;\n    origin: z$1.ZodDefault<z$1.ZodEnum<{\n        plugin: \"plugin\";\n        app: \"app\";\n        cli: \"cli\";\n        sdk: \"sdk\";\n    }>>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ForkThreadRequest = z$1.infer<typeof forkThreadRequestSchema>;\ndeclare const sendMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    mode: z$1.ZodEnum<{\n        steer: \"steer\";\n        start: \"start\";\n        auto: \"auto\";\n        \"queue-if-active\": \"queue-if-active\";\n        \"steer-if-active\": \"steer-if-active\";\n    }>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype SendMessageRequest = z$1.infer<typeof sendMessageRequestSchema>;\ndeclare const providerRateLimitRecoveryStatusSchema: z$1.ZodObject<{\n    reason: z$1.ZodEnum<{\n        eligible: \"eligible\";\n        \"thread-not-failed\": \"thread-not-failed\";\n        \"no-failed-turn\": \"no-failed-turn\";\n        \"input-not-accepted\": \"input-not-accepted\";\n        \"no-rate-limit-state\": \"no-rate-limit-state\";\n        \"no-terminal-rate-limit-error\": \"no-terminal-rate-limit-error\";\n        \"provider-will-retry\": \"provider-will-retry\";\n        \"manual-only\": \"manual-only\";\n        \"output-or-side-effect-observed\": \"output-or-side-effect-observed\";\n        superseded: \"superseded\";\n        \"execution-unavailable\": \"execution-unavailable\";\n    }>;\n    scopeKey: z$1.ZodString;\n    hostId: z$1.ZodString;\n    rateLimits: z$1.ZodNullable<z$1.ZodObject<{\n        providerId: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            warning: \"warning\";\n            blocked: \"blocked\";\n            allowed: \"allowed\";\n        }>;\n        kind: z$1.ZodEnum<{\n            unknown: \"unknown\";\n            \"subscription-window\": \"subscription-window\";\n            credits: \"credits\";\n            \"spend-control\": \"spend-control\";\n        }>;\n        windows: z$1.ZodArray<z$1.ZodObject<{\n            providerKey: z$1.ZodNullable<z$1.ZodString>;\n            label: z$1.ZodNullable<z$1.ZodString>;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n                allowed: \"allowed\";\n            }>;\n            resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        }, z$1.core.$strip>>;\n        reachedReason: z$1.ZodNullable<z$1.ZodString>;\n        overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n            rejected: \"rejected\";\n            warning: \"warning\";\n            unavailable: \"unavailable\";\n            allowed: \"allowed\";\n        }>>;\n        overageReason: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strip>>;\n    candidate: z$1.ZodNullable<z$1.ZodObject<{\n        failedRequestId: z$1.ZodString;\n        turnId: z$1.ZodString;\n        automatic: z$1.ZodBoolean;\n        resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n        rateLimits: z$1.ZodObject<{\n            providerId: z$1.ZodString;\n            status: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                warning: \"warning\";\n                blocked: \"blocked\";\n                allowed: \"allowed\";\n            }>;\n            kind: z$1.ZodEnum<{\n                unknown: \"unknown\";\n                \"subscription-window\": \"subscription-window\";\n                credits: \"credits\";\n                \"spend-control\": \"spend-control\";\n            }>;\n            windows: z$1.ZodArray<z$1.ZodObject<{\n                providerKey: z$1.ZodNullable<z$1.ZodString>;\n                label: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    unknown: \"unknown\";\n                    warning: \"warning\";\n                    blocked: \"blocked\";\n                    allowed: \"allowed\";\n                }>;\n                resetsAtMs: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n            reachedReason: z$1.ZodNullable<z$1.ZodString>;\n            overageStatus: z$1.ZodNullable<z$1.ZodEnum<{\n                rejected: \"rejected\";\n                warning: \"warning\";\n                unavailable: \"unavailable\";\n                allowed: \"allowed\";\n            }>>;\n            overageReason: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ProviderRateLimitRecoveryStatus = z$1.infer<typeof providerRateLimitRecoveryStatusSchema>;\ndeclare const continueAfterProviderRateLimitRequestSchema: z$1.ZodObject<{\n    failedRequestId: z$1.ZodString;\n    mode: z$1.ZodOptional<z$1.ZodEnum<{\n        automatic: \"automatic\";\n        manual: \"manual\";\n    }>>;\n}, z$1.core.$strict>;\ntype ContinueAfterProviderRateLimitRequest = z$1.infer<typeof continueAfterProviderRateLimitRequestSchema>;\ndeclare const continueAfterProviderRateLimitResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    requestId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ContinueAfterProviderRateLimitResponse = z$1.infer<typeof continueAfterProviderRateLimitResponseSchema>;\ndeclare const editMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    operationId: z$1.ZodString;\n    expectedRequestSequence: z$1.ZodOptional<z$1.ZodNumber>;\n}, z$1.core.$strict>;\ntype EditMessageRequest = z$1.infer<typeof editMessageRequestSchema>;\ndeclare const editMessageResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    operationId: z$1.ZodString;\n    requestSequence: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype EditMessageResponse = z$1.infer<typeof editMessageResponseSchema>;\ndeclare const createQueuedMessageRequestSchema: z$1.ZodObject<{\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodOptional<z$1.ZodString>;\n    serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>;\n    permissionMode: z$1.ZodOptional<z$1.ZodPipe<z$1.ZodUnion<readonly [z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>, z$1.ZodLiteral<\"workspace-write\">]>, z$1.ZodTransform<\"accept-edits\" | \"auto\" | \"full\", \"accept-edits\" | \"auto\" | \"full\" | \"workspace-write\">>>;\n    executionInputSources: z$1.ZodOptional<z$1.ZodObject<{\n        model: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        serviceTier: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        reasoningLevel: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n        permissionMode: z$1.ZodOptional<z$1.ZodEnum<{\n            explicit: \"explicit\";\n            \"client-preference\": \"client-preference\";\n        }>>;\n    }, z$1.core.$strict>>;\n    senderThreadId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype CreateQueuedMessageRequest = z$1.infer<typeof createQueuedMessageRequestSchema>;\ndeclare const updateQueuedMessageRequestSchema: z$1.ZodObject<{\n    expectedUpdatedAt: z$1.ZodNumber;\n    input: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n}, z$1.core.$strip>;\ntype UpdateQueuedMessageRequest = z$1.infer<typeof updateQueuedMessageRequestSchema>;\ndeclare const sendQueuedMessageRequestSchema: z$1.ZodObject<{\n    mode: z$1.ZodEnum<{\n        steer: \"steer\";\n        auto: \"auto\";\n    }>;\n}, z$1.core.$strip>;\ntype SendQueuedMessageRequest = z$1.infer<typeof sendQueuedMessageRequestSchema>;\ndeclare const reorderQueuedMessageRequestSchema: z$1.ZodObject<{\n    previousQueuedMessageId: z$1.ZodNullable<z$1.ZodString>;\n    nextQueuedMessageId: z$1.ZodNullable<z$1.ZodString>;\n    groupBoundaryQueuedMessageId: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderQueuedMessageRequest = z$1.infer<typeof reorderQueuedMessageRequestSchema>;\ndeclare const setQueuedMessageGroupBoundaryRequestSchema: z$1.ZodObject<{\n    expectedGroupedPrefixQueuedMessageIds: z$1.ZodArray<z$1.ZodString>;\n    groupBoundaryQueuedMessageId: z$1.ZodString;\n}, z$1.core.$strip>;\ntype SetQueuedMessageGroupBoundaryRequest = z$1.infer<typeof setQueuedMessageGroupBoundaryRequestSchema>;\ndeclare const sendQueuedMessageResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    queuedMessage: z$1.ZodObject<{\n        id: z$1.ZodString;\n        content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"text\">;\n            text: z$1.ZodString;\n            mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n                start: z$1.ZodNumber;\n                end: z$1.ZodNumber;\n                resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"thread\">;\n                    threadId: z$1.ZodString;\n                    projectId: z$1.ZodOptional<z$1.ZodString>;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"project\">;\n                    projectId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"section\">;\n                    sectionId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"path\">;\n                    source: z$1.ZodEnum<{\n                        workspace: \"workspace\";\n                        \"thread-storage\": \"thread-storage\";\n                    }>;\n                    entryKind: z$1.ZodEnum<{\n                        file: \"file\";\n                        directory: \"directory\";\n                    }>;\n                    path: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"command\">;\n                    trigger: z$1.ZodEnum<{\n                        \"/\": \"/\";\n                    }>;\n                    name: z$1.ZodString;\n                    source: z$1.ZodEnum<{\n                        command: \"command\";\n                        skill: \"skill\";\n                    }>;\n                    origin: z$1.ZodEnum<{\n                        user: \"user\";\n                        project: \"project\";\n                        builtin: \"builtin\";\n                    }>;\n                    label: z$1.ZodString;\n                    argumentHint: z$1.ZodNullable<z$1.ZodString>;\n                }, z$1.core.$strip>, z$1.ZodObject<{\n                    kind: z$1.ZodLiteral<\"plugin\">;\n                    pluginId: z$1.ZodString;\n                    icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                    itemId: z$1.ZodString;\n                    label: z$1.ZodString;\n                }, z$1.core.$strip>], \"kind\">>;\n            }, z$1.core.$strip>>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"image\">;\n            url: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localImage\">;\n            path: z$1.ZodString;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            visibility: z$1.ZodOptional<z$1.ZodEnum<{\n                \"agent-only\": \"agent-only\";\n            }>>;\n            type: z$1.ZodLiteral<\"localFile\">;\n            path: z$1.ZodString;\n            name: z$1.ZodOptional<z$1.ZodString>;\n            sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n            mimeType: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>], \"type\">>;\n        model: z$1.ZodString;\n        reasoningLevel: z$1.ZodEnum<{\n            none: \"none\";\n            low: \"low\";\n            medium: \"medium\";\n            high: \"high\";\n            xhigh: \"xhigh\";\n            ultracode: \"ultracode\";\n            max: \"max\";\n            ultra: \"ultra\";\n        }>;\n        permissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n        serviceTier: z$1.ZodEnum<{\n            default: \"default\";\n            fast: \"fast\";\n        }>;\n        groupWithNext: z$1.ZodBoolean;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n}, z$1.core.$strip>;\ntype SendQueuedMessageResponse = z$1.infer<typeof sendQueuedMessageResponseSchema>;\ndeclare const threadListResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activity: z$1.ZodObject<{\n        activeWorkflowCount: z$1.ZodNumber;\n        activeBackgroundAgentCount: z$1.ZodNumber;\n        activeBackgroundCommandCount: z$1.ZodNumber;\n        activePlanModeCount: z$1.ZodNumber;\n        activeGoalCount: z$1.ZodNumber;\n    }, z$1.core.$strip>;\n    pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n    hasPendingInteraction: z$1.ZodBoolean;\n    environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n    environmentName: z$1.ZodNullable<z$1.ZodString>;\n    environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n    environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n        \"managed-worktree\": \"managed-worktree\";\n        \"unmanaged-worktree\": \"unmanaged-worktree\";\n        other: \"other\";\n    }>;\n}, z$1.core.$strip>>;\ntype ThreadListResponse = z$1.infer<typeof threadListResponseSchema>;\ndeclare const resolveThreadMentionsRequestSchema: z$1.ZodObject<{\n    threadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strict>;\ntype ResolveThreadMentionsRequest = z$1.infer<typeof resolveThreadMentionsRequestSchema>;\ndeclare const resolveThreadMentionsResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    threadId: z$1.ZodString;\n    projectId: z$1.ZodString;\n    label: z$1.ZodString;\n}, z$1.core.$strict>>;\ntype ResolveThreadMentionsResponse = z$1.infer<typeof resolveThreadMentionsResponseSchema>;\ndeclare const threadSearchResponseSchema: z$1.ZodObject<{\n    active: z$1.ZodObject<{\n        total: z$1.ZodNumber;\n        results: z$1.ZodArray<z$1.ZodObject<{\n            thread: z$1.ZodObject<{\n                id: z$1.ZodString;\n                projectId: z$1.ZodString;\n                environmentId: z$1.ZodNullable<z$1.ZodString>;\n                providerId: z$1.ZodString;\n                title: z$1.ZodNullable<z$1.ZodString>;\n                titleFallback: z$1.ZodNullable<z$1.ZodString>;\n                sectionId: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    error: \"error\";\n                    stopping: \"stopping\";\n                    idle: \"idle\";\n                    starting: \"starting\";\n                    active: \"active\";\n                }>;\n                parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n                sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n                originKind: z$1.ZodNullable<z$1.ZodEnum<{\n                    fork: \"fork\";\n                }>>;\n                originPluginId: z$1.ZodNullable<z$1.ZodString>;\n                visibility: z$1.ZodEnum<{\n                    visible: \"visible\";\n                    hidden: \"hidden\";\n                }>;\n                archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n                latestAttentionAt: z$1.ZodNumber;\n                createdAt: z$1.ZodNumber;\n                updatedAt: z$1.ZodNumber;\n                runtime: z$1.ZodObject<{\n                    displayStatus: z$1.ZodEnum<{\n                        error: \"error\";\n                        provisioning: \"provisioning\";\n                        stopping: \"stopping\";\n                        idle: \"idle\";\n                        starting: \"starting\";\n                        active: \"active\";\n                        \"host-reconnecting\": \"host-reconnecting\";\n                        \"waiting-for-host\": \"waiting-for-host\";\n                    }>;\n                    hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>;\n                activity: z$1.ZodObject<{\n                    activeWorkflowCount: z$1.ZodNumber;\n                    activeBackgroundAgentCount: z$1.ZodNumber;\n                    activeBackgroundCommandCount: z$1.ZodNumber;\n                    activePlanModeCount: z$1.ZodNumber;\n                    activeGoalCount: z$1.ZodNumber;\n                }, z$1.core.$strip>;\n                pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n                hasPendingInteraction: z$1.ZodBoolean;\n                environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n                environmentName: z$1.ZodNullable<z$1.ZodString>;\n                environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n                environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n                    \"managed-worktree\": \"managed-worktree\";\n                    \"unmanaged-worktree\": \"unmanaged-worktree\";\n                    other: \"other\";\n                }>;\n            }, z$1.core.$strip>;\n            matches: z$1.ZodArray<z$1.ZodObject<{\n                sourceKind: z$1.ZodEnum<{\n                    title: \"title\";\n                    title_fallback: \"title_fallback\";\n                    user_message: \"user_message\";\n                    assistant_message: \"assistant_message\";\n                    system_message: \"system_message\";\n                }>;\n                text: z$1.ZodString;\n                highlightRanges: z$1.ZodArray<z$1.ZodObject<{\n                    start: z$1.ZodNumber;\n                    end: z$1.ZodNumber;\n                }, z$1.core.$strict>>;\n                sourceSeq: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n    archived: z$1.ZodObject<{\n        total: z$1.ZodNumber;\n        results: z$1.ZodArray<z$1.ZodObject<{\n            thread: z$1.ZodObject<{\n                id: z$1.ZodString;\n                projectId: z$1.ZodString;\n                environmentId: z$1.ZodNullable<z$1.ZodString>;\n                providerId: z$1.ZodString;\n                title: z$1.ZodNullable<z$1.ZodString>;\n                titleFallback: z$1.ZodNullable<z$1.ZodString>;\n                sectionId: z$1.ZodNullable<z$1.ZodString>;\n                status: z$1.ZodEnum<{\n                    error: \"error\";\n                    stopping: \"stopping\";\n                    idle: \"idle\";\n                    starting: \"starting\";\n                    active: \"active\";\n                }>;\n                parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n                sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n                originKind: z$1.ZodNullable<z$1.ZodEnum<{\n                    fork: \"fork\";\n                }>>;\n                originPluginId: z$1.ZodNullable<z$1.ZodString>;\n                visibility: z$1.ZodEnum<{\n                    visible: \"visible\";\n                    hidden: \"hidden\";\n                }>;\n                archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n                lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n                latestAttentionAt: z$1.ZodNumber;\n                createdAt: z$1.ZodNumber;\n                updatedAt: z$1.ZodNumber;\n                runtime: z$1.ZodObject<{\n                    displayStatus: z$1.ZodEnum<{\n                        error: \"error\";\n                        provisioning: \"provisioning\";\n                        stopping: \"stopping\";\n                        idle: \"idle\";\n                        starting: \"starting\";\n                        active: \"active\";\n                        \"host-reconnecting\": \"host-reconnecting\";\n                        \"waiting-for-host\": \"waiting-for-host\";\n                    }>;\n                    hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n                }, z$1.core.$strip>;\n                activity: z$1.ZodObject<{\n                    activeWorkflowCount: z$1.ZodNumber;\n                    activeBackgroundAgentCount: z$1.ZodNumber;\n                    activeBackgroundCommandCount: z$1.ZodNumber;\n                    activePlanModeCount: z$1.ZodNumber;\n                    activeGoalCount: z$1.ZodNumber;\n                }, z$1.core.$strip>;\n                pinSortKey: z$1.ZodNullable<z$1.ZodString>;\n                hasPendingInteraction: z$1.ZodBoolean;\n                environmentHostId: z$1.ZodNullable<z$1.ZodString>;\n                environmentName: z$1.ZodNullable<z$1.ZodString>;\n                environmentBranchName: z$1.ZodNullable<z$1.ZodString>;\n                environmentWorkspaceDisplayKind: z$1.ZodEnum<{\n                    \"managed-worktree\": \"managed-worktree\";\n                    \"unmanaged-worktree\": \"unmanaged-worktree\";\n                    other: \"other\";\n                }>;\n            }, z$1.core.$strip>;\n            matches: z$1.ZodArray<z$1.ZodObject<{\n                sourceKind: z$1.ZodEnum<{\n                    title: \"title\";\n                    title_fallback: \"title_fallback\";\n                    user_message: \"user_message\";\n                    assistant_message: \"assistant_message\";\n                    system_message: \"system_message\";\n                }>;\n                text: z$1.ZodString;\n                highlightRanges: z$1.ZodArray<z$1.ZodObject<{\n                    start: z$1.ZodNumber;\n                    end: z$1.ZodNumber;\n                }, z$1.core.$strict>>;\n                sourceSeq: z$1.ZodNullable<z$1.ZodNumber>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n}, z$1.core.$strict>;\ntype ThreadSearchResponse = z$1.infer<typeof threadSearchResponseSchema>;\ndeclare const threadResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activeBackgroundAgentCount: z$1.ZodNumber;\n    canSpawnChild: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype ThreadResponse = z$1.infer<typeof threadResponseSchema>;\ndeclare const threadGetQuerySchema: z$1.ZodObject<{\n    include: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadGetQuery = z$1.infer<typeof threadGetQuerySchema>;\ndeclare const threadWithIncludesResponseSchema: z$1.ZodObject<{\n    id: z$1.ZodString;\n    projectId: z$1.ZodString;\n    environmentId: z$1.ZodNullable<z$1.ZodString>;\n    providerId: z$1.ZodString;\n    title: z$1.ZodNullable<z$1.ZodString>;\n    titleFallback: z$1.ZodNullable<z$1.ZodString>;\n    sectionId: z$1.ZodNullable<z$1.ZodString>;\n    status: z$1.ZodEnum<{\n        error: \"error\";\n        stopping: \"stopping\";\n        idle: \"idle\";\n        starting: \"starting\";\n        active: \"active\";\n    }>;\n    parentThreadId: z$1.ZodNullable<z$1.ZodString>;\n    sourceThreadId: z$1.ZodNullable<z$1.ZodString>;\n    originKind: z$1.ZodNullable<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodNullable<z$1.ZodString>;\n    visibility: z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>;\n    archivedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    pinnedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    deletedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    lastReadAt: z$1.ZodNullable<z$1.ZodNumber>;\n    latestAttentionAt: z$1.ZodNumber;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n    runtime: z$1.ZodObject<{\n        displayStatus: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            stopping: \"stopping\";\n            idle: \"idle\";\n            starting: \"starting\";\n            active: \"active\";\n            \"host-reconnecting\": \"host-reconnecting\";\n            \"waiting-for-host\": \"waiting-for-host\";\n        }>;\n        hostReconnectGraceExpiresAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>;\n    activeBackgroundAgentCount: z$1.ZodNumber;\n    canSpawnChild: z$1.ZodBoolean;\n    environment: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodNullable<z$1.ZodString>;\n        projectId: z$1.ZodString;\n        hostId: z$1.ZodString;\n        path: z$1.ZodNullable<z$1.ZodString>;\n        managed: z$1.ZodBoolean;\n        isGitRepo: z$1.ZodBoolean;\n        isWorktree: z$1.ZodBoolean;\n        workspaceProvisionType: z$1.ZodEnum<{\n            personal: \"personal\";\n            \"managed-worktree\": \"managed-worktree\";\n            unmanaged: \"unmanaged\";\n        }>;\n        branchName: z$1.ZodNullable<z$1.ZodString>;\n        baseBranch: z$1.ZodNullable<z$1.ZodString>;\n        defaultBranch: z$1.ZodNullable<z$1.ZodString>;\n        mergeBaseBranch: z$1.ZodNullable<z$1.ZodString>;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            provisioning: \"provisioning\";\n            ready: \"ready\";\n            retiring: \"retiring\";\n            destroying: \"destroying\";\n            destroyed: \"destroyed\";\n        }>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>>;\n    host: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        name: z$1.ZodString;\n        type: z$1.ZodEnum<{\n            persistent: \"persistent\";\n        }>;\n        status: z$1.ZodEnum<{\n            disconnected: \"disconnected\";\n            connected: \"connected\";\n        }>;\n        maxPermissionMode: z$1.ZodEnum<{\n            \"accept-edits\": \"accept-edits\";\n            auto: \"auto\";\n            full: \"full\";\n        }>;\n        lastSeenAt: z$1.ZodNullable<z$1.ZodNumber>;\n        lastRejectedProtocolVersion: z$1.ZodNullable<z$1.ZodNumber>;\n        createdAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>>;\n}, z$1.core.$strip>;\ntype ThreadWithIncludesResponse = z$1.infer<typeof threadWithIncludesResponseSchema>;\ndeclare const threadPendingInteractionsResponseSchema: z$1.ZodArray<z$1.ZodUnion<readonly [z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodString;\n    providerId: z$1.ZodString;\n    providerThreadId: z$1.ZodString;\n    providerRequestId: z$1.ZodString;\n    origin: z$1.ZodOptional<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"provider\">;\n        providerId: z$1.ZodString;\n        providerThreadId: z$1.ZodString;\n        providerRequestId: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    payload: z$1.ZodUnion<readonly [z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"approval\">;\n        subject: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"command\">;\n            itemId: z$1.ZodString;\n            command: z$1.ZodString;\n            cwd: z$1.ZodNullable<z$1.ZodString>;\n            actions: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"read\">;\n                command: z$1.ZodString;\n                name: z$1.ZodString;\n                path: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"listFiles\">;\n                command: z$1.ZodString;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"search\">;\n                command: z$1.ZodString;\n                query: z$1.ZodNullable<z$1.ZodString>;\n                path: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                type: z$1.ZodLiteral<\"unknown\">;\n                command: z$1.ZodString;\n            }, z$1.core.$strip>], \"type\">>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"file_change\">;\n            itemId: z$1.ZodString;\n            writeScope: z$1.ZodNullable<z$1.ZodString>;\n            sessionGrant: z$1.ZodNullable<z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"permission_grant\">;\n            itemId: z$1.ZodString;\n            toolName: z$1.ZodNullable<z$1.ZodString>;\n            permissions: z$1.ZodObject<{\n                network: z$1.ZodNullable<z$1.ZodObject<{\n                    enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n                }, z$1.core.$strip>>;\n                fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                    read: z$1.ZodArray<z$1.ZodString>;\n                    write: z$1.ZodArray<z$1.ZodString>;\n                }, z$1.core.$strip>>;\n            }, z$1.core.$strict>;\n        }, z$1.core.$strip>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"plan\">;\n            itemId: z$1.ZodString;\n            plan: z$1.ZodString;\n            planFilePath: z$1.ZodNullable<z$1.ZodString>;\n        }, z$1.core.$strip>], \"kind\">;\n        reason: z$1.ZodNullable<z$1.ZodString>;\n        availableDecisions: z$1.ZodArray<z$1.ZodEnum<{\n            allow_once: \"allow_once\";\n            allow_for_session: \"allow_for_session\";\n            deny: \"deny\";\n        }>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_question\">;\n        questions: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            prompt: z$1.ZodString;\n            shortLabel: z$1.ZodOptional<z$1.ZodString>;\n            multiSelect: z$1.ZodBoolean;\n            options: z$1.ZodOptional<z$1.ZodArray<z$1.ZodObject<{\n                value: z$1.ZodString;\n                label: z$1.ZodString;\n                description: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>>;\n            allowFreeText: z$1.ZodBoolean;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>;\n    resolution: z$1.ZodNullable<z$1.ZodUnion<readonly [z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_once\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"allow_for_session\">;\n        grantedPermissions: z$1.ZodNullable<z$1.ZodObject<{\n            network: z$1.ZodNullable<z$1.ZodObject<{\n                enabled: z$1.ZodNullable<z$1.ZodBoolean>;\n            }, z$1.core.$strip>>;\n            fileSystem: z$1.ZodNullable<z$1.ZodObject<{\n                read: z$1.ZodArray<z$1.ZodString>;\n                write: z$1.ZodArray<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        decision: z$1.ZodLiteral<\"deny\">;\n    }, z$1.core.$strip>], \"decision\">, z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"user_answer\">;\n        answers: z$1.ZodRecord<z$1.ZodString, z$1.ZodObject<{\n            selected: z$1.ZodArray<z$1.ZodString>;\n            freeText: z$1.ZodOptional<z$1.ZodString>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>]>>;\n}, z$1.core.$strip>, z$1.ZodObject<{\n    id: z$1.ZodString;\n    threadId: z$1.ZodString;\n    status: z$1.ZodEnum<{\n        pending: \"pending\";\n        interrupted: \"interrupted\";\n        resolving: \"resolving\";\n        resolved: \"resolved\";\n    }>;\n    statusReason: z$1.ZodNullable<z$1.ZodString>;\n    createdAt: z$1.ZodNumber;\n    expiresAt: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodNumber>>;\n    resolvedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    turnId: z$1.ZodNullable<z$1.ZodString>;\n    origin: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        pluginId: z$1.ZodString;\n        rendererId: z$1.ZodString;\n    }, z$1.core.$strip>;\n    payload: z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin\">;\n        title: z$1.ZodString;\n        data: z$1.ZodType<JsonValue$1, unknown, z$1.core.$ZodTypeInternals<JsonValue$1, unknown>>;\n    }, z$1.core.$strip>;\n    resolution: z$1.ZodNullable<z$1.ZodObject<{\n        kind: z$1.ZodLiteral<\"plugin_submitted\">;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>]>>;\ntype ThreadPendingInteractionsResponse = z$1.infer<typeof threadPendingInteractionsResponseSchema>;\ndeclare const threadQueuedMessageListResponseSchema: z$1.ZodArray<z$1.ZodObject<{\n    id: z$1.ZodString;\n    content: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"text\">;\n        text: z$1.ZodString;\n        mentions: z$1.ZodDefault<z$1.ZodArray<z$1.ZodObject<{\n            start: z$1.ZodNumber;\n            end: z$1.ZodNumber;\n            resource: z$1.ZodPipe<z$1.ZodTransform<unknown, unknown>, z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"thread\">;\n                threadId: z$1.ZodString;\n                projectId: z$1.ZodOptional<z$1.ZodString>;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"project\">;\n                projectId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"section\">;\n                sectionId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"path\">;\n                source: z$1.ZodEnum<{\n                    workspace: \"workspace\";\n                    \"thread-storage\": \"thread-storage\";\n                }>;\n                entryKind: z$1.ZodEnum<{\n                    file: \"file\";\n                    directory: \"directory\";\n                }>;\n                path: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"command\">;\n                trigger: z$1.ZodEnum<{\n                    \"/\": \"/\";\n                }>;\n                name: z$1.ZodString;\n                source: z$1.ZodEnum<{\n                    command: \"command\";\n                    skill: \"skill\";\n                }>;\n                origin: z$1.ZodEnum<{\n                    user: \"user\";\n                    project: \"project\";\n                    builtin: \"builtin\";\n                }>;\n                label: z$1.ZodString;\n                argumentHint: z$1.ZodNullable<z$1.ZodString>;\n            }, z$1.core.$strip>, z$1.ZodObject<{\n                kind: z$1.ZodLiteral<\"plugin\">;\n                pluginId: z$1.ZodString;\n                icon: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n                itemId: z$1.ZodString;\n                label: z$1.ZodString;\n            }, z$1.core.$strip>], \"kind\">>;\n        }, z$1.core.$strip>>>;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"image\">;\n        url: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localImage\">;\n        path: z$1.ZodString;\n    }, z$1.core.$strip>, z$1.ZodObject<{\n        visibility: z$1.ZodOptional<z$1.ZodEnum<{\n            \"agent-only\": \"agent-only\";\n        }>>;\n        type: z$1.ZodLiteral<\"localFile\">;\n        path: z$1.ZodString;\n        name: z$1.ZodOptional<z$1.ZodString>;\n        sizeBytes: z$1.ZodOptional<z$1.ZodNumber>;\n        mimeType: z$1.ZodOptional<z$1.ZodString>;\n    }, z$1.core.$strip>], \"type\">>;\n    model: z$1.ZodString;\n    reasoningLevel: z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>;\n    permissionMode: z$1.ZodEnum<{\n        \"accept-edits\": \"accept-edits\";\n        auto: \"auto\";\n        full: \"full\";\n    }>;\n    serviceTier: z$1.ZodEnum<{\n        default: \"default\";\n        fast: \"fast\";\n    }>;\n    groupWithNext: z$1.ZodBoolean;\n    createdAt: z$1.ZodNumber;\n    updatedAt: z$1.ZodNumber;\n}, z$1.core.$strip>>;\ntype ThreadQueuedMessageListResponse = z$1.infer<typeof threadQueuedMessageListResponseSchema>;\ndeclare const threadChildSummaryResponseSchema: z$1.ZodObject<{\n    nonDeletedChildCount: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadChildSummaryResponse = z$1.infer<typeof threadChildSummaryResponseSchema>;\ndeclare const deleteThreadRequestSchema: z$1.ZodObject<{\n    childThreadsConfirmed: z$1.ZodBoolean;\n}, z$1.core.$strip>;\ntype DeleteThreadRequest = z$1.infer<typeof deleteThreadRequestSchema>;\ndeclare const updateThreadRequestSchema: z$1.ZodObject<{\n    title: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    sectionId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    parentThreadId: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    model: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodString>>;\n    reasoningLevel: z$1.ZodOptional<z$1.ZodNullable<z$1.ZodEnum<{\n        none: \"none\";\n        low: \"low\";\n        medium: \"medium\";\n        high: \"high\";\n        xhigh: \"xhigh\";\n        ultracode: \"ultracode\";\n        max: \"max\";\n        ultra: \"ultra\";\n    }>>>;\n    visibility: z$1.ZodOptional<z$1.ZodEnum<{\n        visible: \"visible\";\n        hidden: \"hidden\";\n    }>>;\n}, z$1.core.$strip>;\ntype UpdateThreadRequest = z$1.infer<typeof updateThreadRequestSchema>;\ndeclare const reorderPinnedThreadRequestSchema: z$1.ZodObject<{\n    previousThreadId: z$1.ZodNullable<z$1.ZodString>;\n    nextThreadId: z$1.ZodNullable<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ReorderPinnedThreadRequest = z$1.infer<typeof reorderPinnedThreadRequestSchema>;\n/**\n * Requested placement for a thread opened in the app's split layout. Edge\n * placements add panes through the eighth pane; at the cap they replace the\n * focused pane. `replace` always replaces the focused pane.\n */\ndeclare const threadOpenSplitSchema: z$1.ZodEnum<{\n    right: \"right\";\n    down: \"down\";\n    left: \"left\";\n    top: \"top\";\n    replace: \"replace\";\n}>;\ntype ThreadOpenSplit = z$1.infer<typeof threadOpenSplitSchema>;\n/** Optional secondary-panel file to open with a thread. */\ndeclare const threadOpenFileSchema: z$1.ZodObject<{\n    source: z$1.ZodEnum<{\n        workspace: \"workspace\";\n        \"thread-storage\": \"thread-storage\";\n    }>;\n    path: z$1.ZodString;\n    lineNumber: z$1.ZodNullable<z$1.ZodNumber>;\n}, z$1.core.$strict>;\ntype ThreadOpenFile = z$1.infer<typeof threadOpenFileSchema>;\n/** Response for POST /threads/:id/open: how many connected clients received it. */\ndeclare const threadOpenResponseSchema: z$1.ZodObject<{\n    delivered: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadOpenResponse = z$1.infer<typeof threadOpenResponseSchema>;\n/** Presentation action for one thread pane in each connected app window. */\ndeclare const threadPaneActionSchema: z$1.ZodEnum<{\n    maximize: \"maximize\";\n    restore: \"restore\";\n    toggle: \"toggle\";\n    spotlight: \"spotlight\";\n    \"clear-spotlight\": \"clear-spotlight\";\n}>;\ntype ThreadPaneAction = z$1.infer<typeof threadPaneActionSchema>;\n/** Number of connected app clients that received the pane action. */\ndeclare const threadPaneActionResponseSchema: z$1.ZodObject<{\n    delivered: z$1.ZodNumber;\n}, z$1.core.$strip>;\ntype ThreadPaneActionResponse = z$1.infer<typeof threadPaneActionResponseSchema>;\ndeclare const threadArchiveAllResponseSchema: z$1.ZodObject<{\n    ok: z$1.ZodLiteral<true>;\n    archivedThreadIds: z$1.ZodArray<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadArchiveAllResponse = z$1.infer<typeof threadArchiveAllResponseSchema>;\ndeclare const threadListQuerySchema: z$1.ZodObject<{\n    projectId: z$1.ZodOptional<z$1.ZodString>;\n    parentThreadId: z$1.ZodOptional<z$1.ZodString>;\n    sourceThreadId: z$1.ZodOptional<z$1.ZodString>;\n    archived: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    sectionId: z$1.ZodOptional<z$1.ZodString>;\n    unsectioned: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    hasParent: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    originKind: z$1.ZodOptional<z$1.ZodEnum<{\n        fork: \"fork\";\n    }>>;\n    originPluginId: z$1.ZodOptional<z$1.ZodString>;\n    includeHidden: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    offset: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadListQuery = z$1.infer<typeof threadListQuerySchema>;\ndeclare const threadSearchQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodString;\n    limitPerGroup: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadSearchQuery = z$1.infer<typeof threadSearchQuerySchema>;\ndeclare const threadTimelineQuerySchema: z$1.ZodObject<{\n    includeNestedRows: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    segmentLimit: z$1.ZodOptional<z$1.ZodString>;\n    beforeAnchorSeq: z$1.ZodOptional<z$1.ZodString>;\n    beforeAnchorId: z$1.ZodOptional<z$1.ZodString>;\n    summaryOnly: z$1.ZodOptional<z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>>;\n    afterSequence: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadTimelineQuery = z$1.infer<typeof threadTimelineQuerySchema>;\ndeclare const timelineTurnSummaryDetailsQuerySchema: z$1.ZodObject<{\n    turnId: z$1.ZodString;\n    sourceSeqStart: z$1.ZodString;\n    sourceSeqEnd: z$1.ZodString;\n}, z$1.core.$strip>;\ntype TimelineTurnSummaryDetailsQuery = z$1.infer<typeof timelineTurnSummaryDetailsQuerySchema>;\ndeclare const threadStorageFilesQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n}, z$1.core.$strip>;\ntype ThreadStorageFilesQuery = z$1.infer<typeof threadStorageFilesQuerySchema>;\ndeclare const threadStoragePathsQuerySchema: z$1.ZodObject<{\n    query: z$1.ZodOptional<z$1.ZodString>;\n    limit: z$1.ZodOptional<z$1.ZodString>;\n    includeFiles: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n    includeDirectories: z$1.ZodEnum<{\n        true: \"true\";\n        false: \"false\";\n    }>;\n}, z$1.core.$strip>;\ntype ThreadStoragePathsQuery = z$1.infer<typeof threadStoragePathsQuerySchema>;\ndeclare const timelineTurnSummaryDetailsResponseSchema: z$1.ZodObject<{\n    rows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n}, z$1.core.$strip>;\ntype TimelineTurnSummaryDetailsResponse = z$1.infer<typeof timelineTurnSummaryDetailsResponseSchema>;\ndeclare const threadTimelineResponseSchema: z$1.ZodObject<{\n    rows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n    activePromptMode: z$1.ZodNullable<z$1.ZodObject<{\n        mode: z$1.ZodLiteral<\"plan\">;\n        providerId: z$1.ZodString;\n        prompt: z$1.ZodString;\n    }, z$1.core.$strict>>;\n    activeThinking: z$1.ZodNullable<z$1.ZodObject<{\n        id: z$1.ZodString;\n        text: z$1.ZodString;\n        startedAt: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    activeWorkflows: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodString;\n        turnId: z$1.ZodNullable<z$1.ZodString>;\n        sourceSeqStart: z$1.ZodNumber;\n        sourceSeqEnd: z$1.ZodNumber;\n        startedAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        kind: z$1.ZodLiteral<\"work\">;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            pending: \"pending\";\n            completed: \"completed\";\n            interrupted: \"interrupted\";\n        }>;\n        workKind: z$1.ZodLiteral<\"workflow\">;\n        itemId: z$1.ZodString;\n        taskType: z$1.ZodString;\n        workflowName: z$1.ZodNullable<z$1.ZodString>;\n        description: z$1.ZodString;\n        model: z$1.ZodNullable<z$1.ZodString>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            running: \"running\";\n            paused: \"paused\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        workflow: z$1.ZodNullable<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodNullable<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n        error: z$1.ZodNullable<z$1.ZodString>;\n        completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    activeBackgroundCommands: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        threadId: z$1.ZodString;\n        turnId: z$1.ZodNullable<z$1.ZodString>;\n        sourceSeqStart: z$1.ZodNumber;\n        sourceSeqEnd: z$1.ZodNumber;\n        startedAt: z$1.ZodNumber;\n        createdAt: z$1.ZodNumber;\n        kind: z$1.ZodLiteral<\"work\">;\n        status: z$1.ZodEnum<{\n            error: \"error\";\n            pending: \"pending\";\n            completed: \"completed\";\n            interrupted: \"interrupted\";\n        }>;\n        workKind: z$1.ZodLiteral<\"workflow\">;\n        itemId: z$1.ZodString;\n        taskType: z$1.ZodString;\n        workflowName: z$1.ZodNullable<z$1.ZodString>;\n        description: z$1.ZodString;\n        model: z$1.ZodNullable<z$1.ZodString>;\n        taskStatus: z$1.ZodEnum<{\n            pending: \"pending\";\n            completed: \"completed\";\n            running: \"running\";\n            paused: \"paused\";\n            failed: \"failed\";\n            killed: \"killed\";\n            stopped: \"stopped\";\n        }>;\n        workflow: z$1.ZodNullable<z$1.ZodObject<{\n            phases: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                title: z$1.ZodString;\n                kind: z$1.ZodOptional<z$1.ZodString>;\n            }, z$1.core.$strip>>;\n            agents: z$1.ZodArray<z$1.ZodObject<{\n                index: z$1.ZodNumber;\n                label: z$1.ZodString;\n                state: z$1.ZodEnum<{\n                    running: \"running\";\n                    failed: \"failed\";\n                    queued: \"queued\";\n                    done: \"done\";\n                    skipped: \"skipped\";\n                }>;\n                model: z$1.ZodString;\n                attempt: z$1.ZodNumber;\n                cached: z$1.ZodBoolean;\n                lastProgressAt: z$1.ZodNumber;\n                phaseIndex: z$1.ZodOptional<z$1.ZodNumber>;\n                phaseTitle: z$1.ZodOptional<z$1.ZodString>;\n                agentType: z$1.ZodOptional<z$1.ZodString>;\n                isolation: z$1.ZodOptional<z$1.ZodString>;\n                queuedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                startedAt: z$1.ZodOptional<z$1.ZodNumber>;\n                lastToolName: z$1.ZodOptional<z$1.ZodString>;\n                lastToolSummary: z$1.ZodOptional<z$1.ZodString>;\n                promptPreview: z$1.ZodOptional<z$1.ZodString>;\n                resultPreview: z$1.ZodOptional<z$1.ZodString>;\n                error: z$1.ZodOptional<z$1.ZodString>;\n                tokens: z$1.ZodOptional<z$1.ZodNumber>;\n                toolCalls: z$1.ZodOptional<z$1.ZodNumber>;\n                durationMs: z$1.ZodOptional<z$1.ZodNumber>;\n            }, z$1.core.$strip>>;\n        }, z$1.core.$strip>>;\n        usage: z$1.ZodNullable<z$1.ZodObject<{\n            totalTokens: z$1.ZodNumber;\n            toolUses: z$1.ZodNumber;\n            durationMs: z$1.ZodNumber;\n        }, z$1.core.$strip>>;\n        summary: z$1.ZodNullable<z$1.ZodString>;\n        error: z$1.ZodNullable<z$1.ZodString>;\n        completedAt: z$1.ZodNullable<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    pendingTodos: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        items: z$1.ZodArray<z$1.ZodObject<{\n            id: z$1.ZodString;\n            text: z$1.ZodString;\n            status: z$1.ZodEnum<{\n                pending: \"pending\";\n                completed: \"completed\";\n                in_progress: \"in_progress\";\n            }>;\n        }, z$1.core.$strip>>;\n    }, z$1.core.$strip>>;\n    goal: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        updatedAt: z$1.ZodNumber;\n        objective: z$1.ZodString;\n        status: z$1.ZodEnum<{\n            active: \"active\";\n            paused: \"paused\";\n            budgetLimited: \"budgetLimited\";\n            complete: \"complete\";\n        }>;\n        tokenBudget: z$1.ZodNullable<z$1.ZodNumber>;\n        tokensUsed: z$1.ZodNumber;\n        timeUsedSeconds: z$1.ZodNumber;\n    }, z$1.core.$strip>>;\n    modelFallback: z$1.ZodNullable<z$1.ZodObject<{\n        sourceSeq: z$1.ZodNumber;\n        detectedAt: z$1.ZodNumber;\n        originalModel: z$1.ZodString;\n        fallbackModel: z$1.ZodString;\n        reason: z$1.ZodEnum<{\n            provider: \"provider\";\n            refusal: \"refusal\";\n        }>;\n        message: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    contextWindowUsage: z$1.ZodOptional<z$1.ZodObject<{\n        usedTokens: z$1.ZodNumber;\n        modelContextWindow: z$1.ZodNumber;\n        estimated: z$1.ZodBoolean;\n    }, z$1.core.$strip>>;\n    timelinePage: z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            latest: \"latest\";\n            older: \"older\";\n        }>;\n        segmentLimit: z$1.ZodNumber;\n        returnedSegmentCount: z$1.ZodNumber;\n        hasOlderRows: z$1.ZodBoolean;\n        olderCursor: z$1.ZodNullable<z$1.ZodObject<{\n            anchorSeq: z$1.ZodNumber;\n            anchorId: z$1.ZodString;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>;\n    maxSeq: z$1.ZodNumber;\n    delta: z$1.ZodOptional<z$1.ZodObject<{\n        upsertRows: z$1.ZodArray<z$1.ZodType<TimelineRow, unknown, z$1.core.$ZodTypeInternals<TimelineRow, unknown>>>;\n        rowOrder: z$1.ZodOptional<z$1.ZodArray<z$1.ZodString>>;\n    }, z$1.core.$strip>>;\n}, z$1.core.$strip>;\ntype ThreadTimelineResponse = z$1.infer<typeof threadTimelineResponseSchema>;\ndeclare const threadConversationOutlineResponseSchema: z$1.ZodObject<{\n    items: z$1.ZodArray<z$1.ZodObject<{\n        id: z$1.ZodString;\n        role: z$1.ZodEnum<{\n            user: \"user\";\n            assistant: \"assistant\";\n        }>;\n        preview: z$1.ZodString;\n        attachmentSummary: z$1.ZodNullable<z$1.ZodObject<{\n            imageCount: z$1.ZodNumber;\n            fileCount: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n    }, z$1.core.$strict>>;\n    maxSeq: z$1.ZodNumber;\n}, z$1.core.$strict>;\ntype ThreadConversationOutlineResponse = z$1.infer<typeof threadConversationOutlineResponseSchema>;\ndeclare const threadStorageFileListResponseSchema: z$1.ZodObject<{\n    files: z$1.ZodArray<z$1.ZodObject<{\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    storageRootPath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ThreadStorageFileListResponse = z$1.infer<typeof threadStorageFileListResponseSchema>;\ndeclare const threadStoragePathListResponseSchema: z$1.ZodObject<{\n    paths: z$1.ZodArray<z$1.ZodObject<{\n        kind: z$1.ZodEnum<{\n            file: \"file\";\n            directory: \"directory\";\n        }>;\n        path: z$1.ZodString;\n        name: z$1.ZodString;\n        score: z$1.ZodNumber;\n        positions: z$1.ZodArray<z$1.ZodNumber>;\n    }, z$1.core.$strip>>;\n    truncated: z$1.ZodBoolean;\n    storageRootPath: z$1.ZodString;\n}, z$1.core.$strip>;\ntype ThreadStoragePathListResponse = z$1.infer<typeof threadStoragePathListResponseSchema>;\n\ndeclare const threadTabsResponseSchema: z$1.ZodObject<{\n    revision: z$1.ZodNumber;\n    tabs: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"thread-info\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"git-diff\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        actionId: z$1.ZodString;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"plugin-panel\">;\n        paramsJson: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodString;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"workspace-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        projectId: z$1.ZodNullable<z$1.ZodString>;\n        source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"working-tree\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"head\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge-base\">;\n            ref: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">;\n        statusLabel: z$1.ZodNullable<z$1.ZodLiteral<\"deleted\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"host-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        isPinned: z$1.ZodBoolean;\n        kind: z$1.ZodLiteral<\"thread-storage-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"browser\">;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"new-tab\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"side-chat\">;\n        sourceMessageText: z$1.ZodString;\n        sourceSeqEnd: z$1.ZodNullable<z$1.ZodNumber>;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"terminal\">;\n        terminalId: z$1.ZodString;\n    }, z$1.core.$strict>], \"kind\">>;\n}, z$1.core.$strict>;\ntype ThreadTabsResponse = z$1.infer<typeof threadTabsResponseSchema>;\ndeclare const updateThreadTabsRequestSchema: z$1.ZodObject<{\n    expectedRevision: z$1.ZodNumber;\n    tabs: z$1.ZodArray<z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"thread-info\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"git-diff\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        actionId: z$1.ZodString;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"plugin-panel\">;\n        paramsJson: z$1.ZodNullable<z$1.ZodString>;\n        pluginId: z$1.ZodString;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"workspace-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        projectId: z$1.ZodNullable<z$1.ZodString>;\n        source: z$1.ZodDiscriminatedUnion<[z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"working-tree\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"head\">;\n        }, z$1.core.$strict>, z$1.ZodObject<{\n            kind: z$1.ZodLiteral<\"merge-base\">;\n            ref: z$1.ZodString;\n        }, z$1.core.$strict>], \"kind\">;\n        statusLabel: z$1.ZodNullable<z$1.ZodLiteral<\"deleted\">>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"host-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        isPinned: z$1.ZodBoolean;\n        kind: z$1.ZodLiteral<\"thread-storage-file-preview\">;\n        lineRange: z$1.ZodNullable<z$1.ZodObject<{\n            endLineNumber: z$1.ZodNumber;\n            startLineNumber: z$1.ZodNumber;\n        }, z$1.core.$strict>>;\n        path: z$1.ZodString;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        environmentId: z$1.ZodNullable<z$1.ZodString>;\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"browser\">;\n        title: z$1.ZodNullable<z$1.ZodString>;\n        url: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"new-tab\">;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"side-chat\">;\n        sourceMessageText: z$1.ZodString;\n        sourceSeqEnd: z$1.ZodNullable<z$1.ZodNumber>;\n        threadId: z$1.ZodNullable<z$1.ZodString>;\n        title: z$1.ZodString;\n    }, z$1.core.$strict>, z$1.ZodObject<{\n        id: z$1.ZodString;\n        kind: z$1.ZodLiteral<\"terminal\">;\n        terminalId: z$1.ZodString;\n    }, z$1.core.$strict>], \"kind\">>;\n}, z$1.core.$strict>;\ntype UpdateThreadTabsRequest = z$1.infer<typeof updateThreadTabsRequestSchema>;\n\n/**\n * A value that survives a JSON round trip without coercion or data loss.\n *\n * Host boundaries still validate values at runtime because TypeScript cannot\n * exclude non-finite numbers and plugin bundles can bypass static types.\n */\ntype JsonValue = string | number | boolean | null | JsonValue[] | {\n    [key: string]: JsonValue;\n};\n\n/** A JSON-safe path segment reported by a Standard Schema validation issue. */\ntype PluginRpcIssuePathSegment = string | number;\n/** Validator-neutral validation detail carried by an RPC error envelope. */\ninterface PluginRpcValidationIssue {\n    message: string;\n    path?: PluginRpcIssuePathSegment[];\n}\n/** Stable wire error categories for plugin RPC. */\ntype PluginRpcErrorCode = \"invalid_json\" | \"invalid_input\" | \"handler_error\" | \"invalid_output\" | \"non_json_result\" | \"unknown_method\";\n/** Structured RPC failure returned as `{ ok: false, error }`. */\ninterface PluginRpcError {\n    code: PluginRpcErrorCode;\n    message: string;\n    issues?: PluginRpcValidationIssue[];\n}\n/**\n * The validator-neutral subset of Standard Schema v1 used by plugin RPC.\n * Zod 4 schemas implement this interface directly; other validators can do\n * the same without becoming part of BB's public protocol.\n */\ninterface StandardSchemaV1<Input = unknown, Output = Input> {\n    readonly \"~standard\": {\n        readonly version: 1;\n        readonly vendor: string;\n        readonly validate: (value: unknown) => StandardSchemaV1Result<Output> | Promise<StandardSchemaV1Result<Output>>;\n        readonly types?: {\n            readonly input: Input;\n            readonly output: Output;\n        };\n    };\n}\ntype StandardSchemaV1Result<Output> = {\n    readonly value: Output;\n    readonly issues?: undefined;\n} | {\n    readonly issues: readonly StandardSchemaV1Issue[];\n};\ninterface StandardSchemaV1Issue {\n    readonly message: string;\n    readonly path?: PropertyKey | readonly (PropertyKey | {\n        readonly key: PropertyKey;\n    })[];\n}\ntype StandardSchemaV1InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"input\"];\ntype StandardSchemaV1InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"output\"];\ninterface PluginRpcMethodContract<InputSchema extends StandardSchemaV1 = StandardSchemaV1, OutputSchema extends StandardSchemaV1 = StandardSchemaV1> {\n    readonly input: InputSchema;\n    readonly output: OutputSchema;\n}\ntype PluginRpcContract = Readonly<Record<string, PluginRpcMethodContract>>;\n/** Define a shared RPC contract while preserving exact method/schema types. */\ndeclare function defineRpcContract<const Contract extends PluginRpcContract>(contract: Contract): Contract;\ntype PluginRpcHandlers<Contract extends PluginRpcContract> = {\n    [Method in keyof Contract]: (input: StandardSchemaV1InferOutput<Contract[Method][\"input\"]>) => StandardSchemaV1InferInput<Contract[Method][\"output\"]> | Promise<StandardSchemaV1InferInput<Contract[Method][\"output\"]>>;\n};\ntype PluginRpcCallInput<Method extends PluginRpcMethodContract> = StandardSchemaV1InferInput<Method[\"input\"]>;\ntype PluginRpcCallArgs<Method extends PluginRpcMethodContract> = null extends PluginRpcCallInput<Method> ? [input?: PluginRpcCallInput<Method>] : [input: PluginRpcCallInput<Method>];\ntype PluginRpcResult<Method extends PluginRpcMethodContract> = StandardSchemaV1InferOutput<Method[\"output\"]>;\n\n/**\n * The `@get-bb/plugin-sdk/app` contract (plugin design §5.2) — pure types with no\n * side effects. The BB app imports these to keep its real implementation in\n * sync (`satisfies PluginSdkApp`). Plugin authors import the same shapes through\n * `@get-bb/plugin-sdk/app`.\n *\n * Per-slot props are versioned contracts: additive-only within an SDK major.\n */\n/** Props passed to a `homepageSection` component. */\ninterface PluginHomepageSectionProps {\n    /** Project in view on the compose surface; null when none is selected. */\n    projectId: string | null;\n}\n/**\n * Props passed to a `settingsSection` component.\n *\n * Deliberately empty in V1; versioned additive like the other slot props.\n */\ninterface PluginSettingsSectionProps {\n}\n/** Props passed to a `navPanel` component (it owns its whole route). */\ninterface PluginNavPanelProps {\n    /**\n     * The route remainder after the panel root, \"\" at the root. The panel's\n     * route is `/plugins/<pluginId>/<path>/*`, so a deep link like\n     * `/plugins/notes/notes/work/ideas.md` renders the panel with\n     * `subPath: \"work/ideas.md\"`. Navigate within the panel via\n     * `useBbNavigate().toPluginPanel(path, { subPath })` — browser\n     * back/forward then walks panel-internal history.\n     */\n    subPath: string;\n}\n/**\n * Props passed to a panel tab opened by a `threadPanelAction`.\n *\n * This slot is rendered only for an existing thread. Use\n * `experimental_newThreadPanelAction` for the root New thread screen.\n */\ninterface PluginThreadPanelProps {\n    threadId: string;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\n/** Props passed to a panel tab opened by `experimental_newThreadPanelAction`. */\ninterface PluginNewThreadPanelProps {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\ninterface PluginPendingInteractionView {\n    id: string;\n    threadId: string;\n    title: string;\n    payload: JsonValue;\n    createdAt: number;\n    expiresAt: number | null;\n}\ninterface PluginPendingInteractionProps {\n    interaction: PluginPendingInteractionView;\n    submit(value: JsonValue): Promise<void>;\n    cancel(): Promise<void>;\n}\n/**\n * Props for a `sidebarFooterAction` — host-rendered (no plugin component).\n * Deliberately empty; the registration's `run` carries the behavior.\n */\ninterface PluginSidebarFooterActionProps {\n}\n/**\n * Props passed to an `experimental_threadList` component — the sidebar's\n * scrolling thread area, replaced wholesale by one plugin.\n */\ninterface PluginThreadListProps {\n    /** The thread the route currently shows; null on non-thread routes. */\n    activeThreadId: string | null;\n    /** The project the route currently shows; null when none is selected. */\n    activeProjectId: string | null;\n    /** True on phone-width viewports and coarse pointers. */\n    isCompactViewport: boolean;\n    /**\n     * Call after the user opens a thread. It closes the mobile sidebar drawer,\n     * and it clears the host search field on every viewport. Always call it, or\n     * the sidebar stays in search mode after the thread opens.\n     */\n    onNavigate: () => void;\n    /**\n     * The host search field's current text, or \"\" when the field is closed.\n     * The host owns that field, so a plugin list filters by this rather than\n     * shipping a second search box.\n     */\n    searchQuery: string;\n    /**\n     * BB's thread list, bound to this sidebar instance. Render it to delegate\n     * conditionally without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Props passed to an `experimental_threadHeaderAction` component, rendered in\n * the thread header's action row.\n */\ninterface PluginThreadHeaderActionProps {\n    /**\n     * The thread this header belongs to. Never null: the slot is not rendered\n     * on the compose screen or other non-thread routes. A split layout renders\n     * one header per pane, so the component mounts once per visible thread,\n     * each with its own id — keep per-thread state in the component, never in a\n     * module-level singleton.\n     */\n    threadId: string;\n    projectId: string;\n    /**\n     * True on phone-width viewports and coarse pointers. Collapse to an\n     * icon-sized control when it is true — the row is short.\n     */\n    isCompactViewport: boolean;\n}\n/**\n * Where a file being opened by a `fileOpener` lives. `path` semantics follow\n * the source: workspace paths are relative to the environment's worktree,\n * thread-storage paths are relative to the thread's storage root, host paths\n * are absolute on the thread's host.\n */\ninterface PluginFileOpenerSource {\n    kind: \"workspace\" | \"host\" | \"thread-storage\";\n    threadId: string | null;\n    environmentId: string | null;\n    projectId: string | null;\n}\n/** Props passed to a `fileOpener` component (rendered as a panel file tab). */\ninterface PluginFileOpenerProps {\n    path: string;\n    source: PluginFileOpenerSource;\n    /**\n     * BB's file preview, bound to this file. Render it to delegate conditionally\n     * without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Message context passed to a `messageDirective` component — the assistant\n * (or nested agent) message that contained the directive.\n */\ninterface PluginMessageDirectiveMessage {\n    id: string;\n    threadId: string;\n    turnId: string | null;\n    projectId: string | null;\n}\n/**\n * Open a worktree-relative file in the host's workspace file viewer. Returns\n * true when the host accepted the path; false when the path is invalid or the\n * viewer declined it.\n */\ntype PluginMessageDirectiveOpenWorkspaceFile = (path: string) => boolean;\n/**\n * Props passed to a `messageDirective` component. Attributes are untrusted\n * strings parsed from the directive; the plugin validates its own fields.\n */\ninterface PluginMessageDirectiveProps {\n    /** Parsed, untrusted directive attributes (e.g. `{ file: \"demo.html\" }`). */\n    attributes: Readonly<Record<string, string>>;\n    /** Original directive source text (useful for diagnostics / crash fallback). */\n    source: string;\n    message: PluginMessageDirectiveMessage;\n    /**\n     * Opens a worktree-relative file in the host's workspace file viewer. Null\n     * when the message surface has no workspace viewer available.\n     */\n    openWorkspaceFile: PluginMessageDirectiveOpenWorkspaceFile | null;\n}\ninterface PluginHomepageSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    component: ComponentType<PluginHomepageSectionProps>;\n}\ninterface PluginSettingsSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Optional host-rendered section heading. */\n    title?: string;\n    /**\n     * Optional one-line host-rendered subheading under `title`, in the built-in\n     * SettingsSection idiom (ignored when `title` is absent).\n     */\n    description?: string;\n    component: ComponentType<PluginSettingsSectionProps>;\n}\ninterface PluginNavPanelRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /** URL segment under `/plugins/<pluginId>/`; letters, digits, `-`, `_`. */\n    path: string;\n    component: ComponentType<PluginNavPanelProps>;\n    /**\n     * Optional presentational component rendered at the trailing edge of this\n     * panel's sidebar row. It receives no props so it can own a narrow live\n     * value through the ordinary SDK hooks without coupling that state to the\n     * host sidebar. The host does not mount it on compact viewports and clips it\n     * to a small, single-line box on wider viewports. It shares the trailing\n     * action column, fading out for the host's options button on hover or focus;\n     * do not render controls or rely on unbounded content here.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_sidebarAccessory?: ComponentType;\n    /**\n     * Optional component rendered on the right side of the shared title bar\n     * (e.g. a sync button or a count). Contained separately from the body: a\n     * throwing headerContent is hidden without breaking the title bar.\n     */\n    headerContent?: ComponentType<PluginNavPanelProps>;\n}\n/**\n * Context handed to a `threadPanelAction`'s `run`.\n *\n * The action is thread-only and is never offered on the root New thread\n * screen, so `threadId` is always present.\n */\ninterface PluginThreadPanelActionContext {\n    /** The thread whose panel launcher invoked the action. */\n    threadId: string;\n    /**\n     * Open a tab in the thread's side panel rendering this action's\n     * `component`. `title` labels the tab (default: the action's `title`);\n     * `params` must be JSON-serializable — it is persisted with the tab and\n     * reaches the component as its `params` prop. Opening with params\n     * identical to an already-open tab of this action focuses that tab\n     * (updating its title) instead of duplicating it. May be called more than\n     * once (different params ⇒ multiple tabs) or not at all.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\ninterface PluginThreadPanelActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /**\n     * Icon hint (BB icon name) used when the plugin ships no logo; the\n     * launcher row and opened tabs prefer the plugin's logo.\n     */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginThreadPanelProps>;\n    /**\n     * How the host frames the tab content. \"padded\" (default) wraps the\n     * component in the panel's scroll container with standard padding —\n     * right for document-like content. \"flush\" gives the component the full\n     * tab area (no padding, definite height, no host scrolling) — right for\n     * app-like content that manages its own layout, such as\n     * `ThreadChat`.\n     */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action: call your RPC methods, show a\n     * toast, and/or open panel tabs via `context.openPanel`. Omitted =\n     * immediately open a panel tab with defaults. Errors (sync or async) are\n     * contained and logged; they never break the launcher.\n     */\n    run?(context: PluginThreadPanelActionContext): void | Promise<void>;\n}\n/** Context handed to an `experimental_newThreadPanelAction`'s `run`. */\ninterface PluginNewThreadPanelActionContext {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * Open a tab in the root New thread screen's side panel rendering this\n     * action's `component`. The title, params, deduplication, and error\n     * semantics match `threadPanelAction`.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\n/** Registration for the root New thread screen's panel Actions list. */\ninterface PluginNewThreadPanelActionRegistration {\n    /** Unique within this slot for the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /** Icon hint (BB icon name) used when the plugin ships no logo. */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginNewThreadPanelProps>;\n    /** Host framing; matches `threadPanelAction`. */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action. Omitted = immediately open a\n     * panel tab with defaults. Errors are contained and logged.\n     */\n    run?(context: PluginNewThreadPanelActionContext): void | Promise<void>;\n}\ninterface PluginPendingInteractionRegistration {\n    /** Matches `rendererId` passed to `bb.ui.requestInput`. */\n    id: string;\n    component: ComponentType<PluginPendingInteractionProps>;\n}\n/** Context handed to a `sidebarFooterAction`'s `run`. */\ninterface PluginSidebarFooterActionContext {\n    /**\n     * Navigate to this plugin's detail page in Tools, where declarative settings\n     * and `settingsSection` slots render.\n     */\n    openSettings(): void;\n}\n/**\n * An icon button in the app sidebar footer (next to Settings / bug report).\n * Host-rendered for consistent chrome — plugins supply icon, label, and\n * `run` behavior only.\n */\ninterface PluginSidebarFooterActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip and accessible label for the icon button. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /**\n     * Runs when the user activates the action (e.g. call `openSettings()`,\n     * open a panel via other surfaces, toast). Errors (sync or async) are\n     * contained and logged; they never break the sidebar.\n     */\n    run(context: PluginSidebarFooterActionContext): void | Promise<void>;\n}\n/**\n * The one status bb would paint for a thread, already resolved through the\n * host's precedence (attention before work; plan and goal before the generic\n * spinner). Draw your own glyph for it — the SDK ships no status component.\n *\n * Treat an unrecognized value as \"none\": bb adds kinds over time, and an\n * older plugin must degrade to drawing nothing rather than throwing.\n *\n * \"draft\" and \"working-draft\" are never reported here: an unsubmitted composer\n * draft is per-client state the host reads per row, which an array-wide view\n * cannot. A thread holding a draft reports whatever it would report without\n * one.\n */\ntype PluginSidebarThreadIndicator = \"unread-error\" | \"waiting-for-input\" | \"working-draft\" | \"workflow\" | \"background-agent\" | \"background-command\" | \"plan-mode\" | \"goal\" | \"runtime\" | \"draft\" | \"unread-success\" | \"none\";\n/**\n * How a thread's environment presents its workspace: a worktree bb manages,\n * a worktree the user manages, or anything else (a plain checkout).\n */\ntype PluginSidebarWorkspaceKind = \"managed-worktree\" | \"unmanaged-worktree\" | \"other\";\n/** Live work counts on a thread. All zero means nothing is running. */\ninterface PluginSidebarThreadActivity {\n    workflows: number;\n    backgroundAgents: number;\n    backgroundCommands: number;\n    planMode: number;\n    goals: number;\n}\n/**\n * One thread in the sidebar's live view.\n *\n * A deliberate copy of the fields a sidebar needs — not a re-export of the\n * host's internal thread row type, which changes whenever the app needs a\n * field. Timestamps are epoch milliseconds.\n */\ninterface PluginSidebarThread {\n    id: string;\n    projectId: string;\n    /** Null while a thread is still unnamed; pair with `titleFallback`. */\n    title: string | null;\n    titleFallback: string | null;\n    /** The thread this one was forked from or spawned under; null at the root. */\n    parentThreadId: string | null;\n    sectionId: string | null;\n    /** How this thread came to exist under its parent; null for root threads. */\n    originKind: \"fork\" | null;\n    /** The plugin that spawned it, or null for non-plugin origins. */\n    originPluginId: string | null;\n    /** The agent provider this thread runs on, e.g. \"codex\", \"claude-code\". */\n    providerId: string;\n    /** The agent is blocked on the user: an approval or a question. */\n    hasPendingInteraction: boolean;\n    activity: PluginSidebarThreadActivity;\n    indicator: PluginSidebarThreadIndicator;\n    /**\n     * The host's accessible label for `indicator`, e.g. \"Thread needs user\n     * input\"; null when the indicator is \"none\". Use it for `aria-label` so\n     * screen-reader text stays consistent across sidebars.\n     */\n    indicatorLabel: string | null;\n    isUnread: boolean;\n    isPinned: boolean;\n    isArchived: boolean;\n    environment: {\n        id: string | null;\n        name: string | null;\n        branchName: string | null;\n        workspaceDisplayKind: PluginSidebarWorkspaceKind;\n    } | null;\n    /**\n     * The machine this thread's work runs on, with the name resolved for you.\n     * Null when the thread has no environment yet, or when its host is not in\n     * the known-hosts list. Useful where a thread has no branch to show — a\n     * personal-project thread has a machine but no worktree.\n     */\n    host: {\n        id: string;\n        name: string;\n    } | null;\n    createdAt: number;\n    updatedAt: number;\n    lastReadAt: number | null;\n    latestAttentionAt: number;\n}\n/**\n * The pull request for a thread's branch, narrowed to what a sidebar row\n * needs. `attention` is bb's rolled-up \"does this need you\" signal, so a row\n * can colour a badge without reading checks, review, and mergeability itself.\n */\ninterface PluginSidebarPullRequest {\n    number: number;\n    title: string;\n    url: string;\n    state: \"draft\" | \"open\" | \"merged\" | \"closed\";\n    attention: \"checks_failed\" | \"checks_pending\" | \"changes_requested\" | \"review_requested\" | \"conflicts\" | \"blocked\" | \"draft\" | \"ready_to_merge\" | \"merged\" | \"closed\" | \"none\";\n}\ninterface PluginSidebarThreadPullRequestState {\n    /** True while the first lookup for this thread's environment is in flight. */\n    isLoading: boolean;\n    /**\n     * The pull request, or null when the branch has none, the thread has no\n     * environment, or the lookup could not run (a git-host hiccup). A row should\n     * treat null as \"nothing to show\", never as an error.\n     */\n    pullRequest: PluginSidebarPullRequest | null;\n}\n/** One project in the sidebar's live view. */\ninterface PluginSidebarProject {\n    id: string;\n    name: string;\n    /** True for the implicit personal project. */\n    isPersonal: boolean;\n}\ninterface PluginSidebarThreadsState {\n    status: \"loading\" | \"ready\" | \"error\";\n    threads: readonly PluginSidebarThread[];\n    projects: readonly PluginSidebarProject[];\n}\n/**\n * Act on threads from a plugin surface. Every method routes to the host's own\n * flow, so optimistic updates, toasts, dialogs, pane closing, and route repair\n * behave exactly as they do in the built-in sidebar. Unknown thread ids are\n * ignored by `open` and rejected by the rest.\n */\ninterface PluginSidebarThreadActions {\n    /**\n     * Navigate to a thread. `split: true` applies bb's split placement rules —\n     * a right split by default, focus when the thread is already open, replace\n     * at the pane cap — and falls back to plain navigation where splits are off.\n     */\n    open(threadId: string, options?: {\n        split?: boolean;\n    }): void;\n    /**\n     * Go to the new-thread screen. Passing `projectId` also makes that project\n     * the composer's selection, so the thread is created where you asked.\n     */\n    openNewThread(options?: {\n        projectId?: string;\n        focusPrompt?: boolean;\n    }): void;\n    setPinned(threadId: string, pinned: boolean): Promise<void>;\n    setRead(threadId: string, read: boolean): Promise<void>;\n    /** Silent rename — no dialog. For inline editing in your own row. */\n    rename(threadId: string, title: string): Promise<void>;\n    /** Archives the thread AND its children, closing any panes showing them. */\n    archive(threadId: string): void;\n    /**\n     * Opens bb's delete confirmation, which counts child threads first. Deletion\n     * is destructive and recursive, so the host owns the confirmation: there is\n     * deliberately no silent `delete`.\n     */\n    requestDelete(threadId: string): void;\n}\n/**\n * Render a plugin component in the thread header's action row.\n *\n * The frontend sibling of the backend `bb.ui.registerThreadAction`, which\n * renders a host-owned button and runs server-side. Use that one for \"do a\n * thing\"; use this one when the control must draw live state.\n *\n * The host places it at the left end of the action row, before the workspace\n * button, git actions, the panel toggle, maximize, and close. That row is a\n * 48px chrome row with 28px controls: render one inline control that fits, and\n * put anything taller in a portalled popover.\n */\ninterface PluginThreadHeaderActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Names the region the host wraps around your component (a labelled group).\n     * It does NOT label your control: an icon-only button still needs its own\n     * accessible name.\n     */\n    title: string;\n    component: ComponentType<PluginThreadHeaderActionProps>;\n}\n/** One pane's place in the split layout, as fractions of the split area. */\ninterface PluginSidebarSplitPane {\n    paneId: string;\n    rect: {\n        x: number;\n        y: number;\n        width: number;\n        height: number;\n    };\n    /** This pane holds the thread the row represents. */\n    isMe: boolean;\n    isFocused: boolean;\n}\n/**\n * Drag-to-split support for one row, plus where that thread currently sits in\n * the split layout.\n */\ninterface PluginSidebarThreadSplit {\n    /**\n     * Spread onto the row's interactive element. Carries the pointer handler\n     * that starts a split drag; empty when splits are unavailable, so spreading\n     * it is always safe.\n     *\n     * The host owns every rule: the gesture engages only once the pointer leaves\n     * the sidebar toward the main area (so a list with its own drag-to-reorder\n     * keeps working), an edge drop splits, a center drop replaces, an\n     * already-open thread focuses its pane, and the pane cap coerces a split\n     * into a replace.\n     */\n    splitProps: {\n        onPointerDown?: (event: react.PointerEvent<HTMLElement>) => void;\n    };\n    /**\n     * False on compact viewports, when the user disabled splits, and for an\n     * unknown thread id. Gate any \"open in split\" affordance you draw on it.\n     */\n    isAvailable: boolean;\n    /**\n     * Where this thread sits in the split layout, or null when it is not open in\n     * one (including single-pane layouts). Draw a mini-map, a tint, or nothing.\n     */\n    layout: {\n        panes: readonly PluginSidebarSplitPane[];\n    } | null;\n}\n/**\n * Replace the sidebar's thread list with a plugin component.\n *\n * Unlike every other slot, this one is EXCLUSIVE: two lists cannot share one\n * scroll area. Registering activates the replacement while the plugin is\n * enabled. If multiple plugins register one, the first in deterministic slot\n * order is active by default; removing it reveals the next. The user can pin\n * BB's list or a specific provider under Settings → Appearance. A plugin can\n * also use its own setting and render `experimental_Original` conditionally.\n * An absent or crashing replacement falls back to BB's list rather than\n * leaving the user with no sidebar.\n *\n * The plugin gets the scrolling list and nothing else. The New-thread button,\n * the search field, the plugin nav rows, and the footer stay host-rendered in\n * every sidebar — they are shared surfaces (other plugins live in two of\n * them), and a replaced list must not be able to remove them.\n */\ninterface PluginThreadListRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label shown in Settings → Appearance and capability details. */\n    title: string;\n    /** Optional one-line description shown with the provider choice. */\n    description?: string;\n    component: ComponentType<PluginThreadListProps>;\n}\n/**\n * Register this plugin as a viewer/editor for file extensions. By default,\n * matching files render the first applicable opener in deterministic slot\n * order. The user can pin BB's preview or a specific opener per extension\n * under Settings → Files. The file tab's \"Open with\" menu can override that\n * choice for one open. A plugin can also use its own setting and render\n * `experimental_Original` conditionally. Applies to working-tree, host, and\n * thread-storage files — never to git-ref snapshots (diff views always use\n * BB's preview).\n */\ninterface PluginFileOpenerRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label in the \"Open with\" menu (e.g. \"Notes editor\"). */\n    title: string;\n    /** Lowercase extensions without the dot (e.g. [\"md\", \"mdx\"]). */\n    extensions: readonly string[];\n    component: ComponentType<PluginFileOpenerProps>;\n}\n/**\n * Register a leaf message directive rendered inside assistant (and nested\n * agent) message Markdown. `id` is the directive name: `inline-vis` matches\n * `::inline-vis{file=\"demo.html\"}`.\n */\ninterface PluginMessageDirectiveRegistration {\n    /**\n     * The directive name. Lowercase kebab-case beginning with a letter.\n     */\n    id: string;\n    component: ComponentType<PluginMessageDirectiveProps>;\n}\n/**\n * A narrow, stable reference to one rendered chat message — NOT an internal\n * timeline row. `sourceSeqEnd` is the last source event sequence the message\n * covers, the anchor the server accepts for provider-history forks.\n */\ninterface ThreadChatMessageReference {\n    id: string;\n    threadId: string;\n    role: \"user\" | \"assistant\";\n    /** Visible text of the message. */\n    text: string;\n    sourceSeqEnd: number;\n}\ninterface PluginMessageActionThreadPanelOptions {\n    /** A `threadPanelAction` id registered by this same plugin. */\n    actionId: string;\n    title?: string;\n    params?: JsonValue;\n}\n/** Context handed to a `messageAction`'s `run`. */\ninterface PluginMessageActionContext {\n    /** The thread whose timeline surfaced the action. */\n    threadId: string;\n    message: ThreadChatMessageReference;\n    /**\n     * Present only when the action was invoked from the text-selection menu;\n     * the exact text the user highlighted inside `message`.\n     */\n    selectedText?: string;\n    /**\n     * Open one of this plugin's `threadPanelAction` components in the current\n     * thread's side panel — the registration-callback equivalent of\n     * `useBbNavigate().openThreadPanel`. Returns true when the host\n     * accepted (the action id exists and the surface has a panel); false\n     * otherwise.\n     */\n    openPanel(options: PluginMessageActionThreadPanelOptions): boolean;\n}\n/**\n * An action on chat messages: an icon button in the per-message action bar\n * (user and assistant messages) and an entry in the assistant-message\n * text-selection menu. Host-rendered chrome — the plugin supplies title,\n * icon hint, and `run` behavior only.\n */\ninterface PluginMessageActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(context: PluginMessageActionContext): void | Promise<void>;\n}\n/**\n * Supply the inline React mark bb draws for one agent provider.\n *\n * A manifest `branding.icon` (or a provider's `logoUrl`) is fetched and drawn\n * through `<img>`, a separate document where `currentColor` resolves to black\n * — invisible on dark themes and unreachable from app CSS. A component is\n * rendered inline, so it inherits the app's theme colors and the host's sizing\n * classes. Register a static color logo as a file and a theme-aware mark here.\n *\n * The host passes only `className` (sizing plus the provider's color class);\n * the component must render an inline SVG (or other inline markup) and must\n * not fetch. One registration per provider id per plugin; when two plugins\n * claim the same provider id the host keeps the first by plugin id and warns.\n */\ninterface PluginProviderIconRegistration {\n    /**\n     * The provider this mark is for — the id bb knows the provider by (the\n     * provider declaration's id, e.g. `codex` or `acp-cursor`), not the plugin\n     * id. Letters, digits, `-`, `_`.\n     */\n    providerId: string;\n    /** Inline, theme-aware mark. Receives the host's sizing/color className. */\n    icon: ComponentType<{\n        className?: string;\n    }>;\n}\ninterface PluginAppSlots {\n    homepageSection(registration: PluginHomepageSectionRegistration): void;\n    settingsSection(registration: PluginSettingsSectionRegistration): void;\n    navPanel(registration: PluginNavPanelRegistration): void;\n    /**\n     * Add an action to an existing thread's panel launcher. This slot is\n     * thread-only; use `experimental_newThreadPanelAction` for root compose.\n     */\n    threadPanelAction(registration: PluginThreadPanelActionRegistration): void;\n    /**\n     * Add an action to the root New thread screen's panel launcher (see\n     * {@link PluginNewThreadPanelActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_newThreadPanelAction(registration: PluginNewThreadPanelActionRegistration): void;\n    pendingInteraction(registration: PluginPendingInteractionRegistration): void;\n    sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void;\n    /**\n     * Replace the sidebar's thread list (see\n     * {@link PluginThreadListRegistration}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_threadList(registration: PluginThreadListRegistration): void;\n    /**\n     * Render a component in the thread header's action row (see\n     * {@link PluginThreadHeaderActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_threadHeaderAction(registration: PluginThreadHeaderActionRegistration): void;\n    fileOpener(registration: PluginFileOpenerRegistration): void;\n    messageDirective(registration: PluginMessageDirectiveRegistration): void;\n    messageAction(registration: PluginMessageActionRegistration): void;\n    /**\n     * Draw one agent provider's icon with an inline React component instead of\n     * its `<img>`-rendered logo file (see\n     * {@link PluginProviderIconRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_providerIcon(registration: PluginProviderIconRegistration): void;\n}\ninterface PluginAppComposer {\n    customize(registration: ComposerCustomization): void;\n}\n/** Stable lifecycle values for one content-script instance in one bb client. */\ninterface PluginContentScriptContext {\n    /** The id of the plugin that owns this script. */\n    readonly pluginId: string;\n    /** Monotonic per-client generation, starting at 1. */\n    readonly generation: number;\n    /** Aborted before cleanup begins on replacement, deactivation, or teardown. */\n    readonly signal: AbortSignal;\n    /**\n     * Persistently decorate any thread row for this plugin generation.\n     *\n     * The status is owned by the frontend generation and therefore survives\n     * route changes. Passing `null` clears the plugin's status for that thread.\n     * The host clears every remaining status when the frontend generation\n     * deactivates.\n     *\n     * Optional so bundles can feature-detect support while this experimental\n     * surface rolls out across 0.x clients.\n     */\n    readonly experimental_setThreadRowStatus?: (threadId: string, status: PluginComposerThreadRowStatus | null) => void;\n}\n/** Cleanup returned by a frontend content script. */\ntype PluginContentScriptDisposer = () => void | Promise<void>;\n/**\n * Trusted same-origin JavaScript/TypeScript mounted once per active frontend\n * generation in each bb app window or browser tab.\n */\ninterface PluginContentScriptRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Install behavior into the bb app shell. The host awaits a returned\n     * promise, contains failures, and calls the returned disposer exactly once.\n     */\n    mount(context: PluginContentScriptContext): void | PluginContentScriptDisposer | Promise<void | PluginContentScriptDisposer>;\n}\n/** Lifecycle surface for trusted frontend content scripts. */\ninterface PluginAppContentScripts {\n    register(registration: PluginContentScriptRegistration): void;\n}\ninterface PluginAppBuilder {\n    slots: PluginAppSlots;\n    composer: PluginAppComposer;\n    contentScripts: PluginAppContentScripts;\n}\ntype PluginAppSetup = (app: PluginAppBuilder) => void;\n/**\n * The opaque product of `definePluginApp` — a plugin's `app.tsx` default\n * export. The host re-runs `setup` against a fresh collector on every\n * (re)interpretation, replacing that plugin's registrations wholesale.\n */\ninterface PluginAppDefinition {\n    /** Brand the host checks before interpreting a bundle's default export. */\n    readonly __bbPluginApp: true;\n    readonly setup: PluginAppSetup;\n}\ninterface PluginRpcClient<Contract extends PluginRpcContract = PluginRpcContract> {\n    /**\n     * Invoke one of the plugin's `bb.rpc` methods (POST\n     * /api/v1/plugins/&lt;id&gt;/rpc/&lt;method&gt;). Resolves with the method's\n     * inferred output; rejects with an `Error` carrying the server's message,\n     * stable `code`, and validation `issues` when present.\n     */\n    call<Method extends Extract<keyof Contract, string>>(method: Method, ...args: PluginRpcCallArgs<Contract[Method]>): Promise<PluginRpcResult<Contract[Method]>>;\n}\ninterface PluginSettingsState {\n    /**\n     * Effective non-secret setting values (secret settings are excluded —\n     * read them server-side). Undefined while loading or unavailable.\n     */\n    values: Record<string, string | boolean> | undefined;\n    isLoading: boolean;\n}\n/** State of the app's shared realtime connection to the bb server. */\ntype PluginRealtimeConnectionState = \"connecting\" | \"connected\" | \"reconnecting\";\n/** Where `useComposer()` writes. */\ntype PluginComposerScope = {\n    kind: \"thread\";\n    threadId: string;\n} | {\n    kind: \"queued-message\";\n    threadId: string;\n    queuedMessageId: string;\n} | {\n    kind: \"side-chat\";\n    projectId: string;\n    parentThreadId: string;\n    tabId: string;\n    childThreadId: string | null;\n} | {\n    kind: \"new-thread\";\n    /** Root compose's effective selected project; null only while unresolved. */\n    projectId: string | null;\n};\n/** One plugin-owned composer customization registration. */\ninterface ComposerCustomization {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Composer kinds where this customization is active; omit for all kinds. */\n    scopes?: readonly PluginComposerScope[\"kind\"][];\n    actions?: readonly {\n        id: string;\n        component: ComponentType;\n    }[];\n    banners?: readonly {\n        id: string;\n        /** Host chrome around the banner. Defaults to `\"card\"`. */\n        chrome?: \"card\" | \"bare\";\n        component: ComponentType;\n    }[];\n    plusMenu?: readonly ComposerPlusMenuItem[];\n    richText?: ComposerRichTextSpec;\n}\n/** Host-rendered menu row in the composer's `+` menu. */\ninterface ComposerPlusMenuItem {\n    id: string;\n    label: string;\n    /** BB icon name; unknown names fall back to the generic plugin icon. */\n    icon?: string;\n    /** Accessible description for the host-rendered row. */\n    description?: string;\n    disabled?: boolean | ((view: ComposerView) => boolean);\n    run(context: {\n        composer: PluginComposerApi;\n        view: ComposerView;\n    }): void | Promise<void>;\n}\n/** Reactive read-side of the composer a plugin surface is mounted in. */\ninterface ComposerView {\n    scope: PluginComposerScope;\n    layout: \"expanded\" | \"compact\" | \"zen\";\n    draft: {\n        text: string;\n        isEmpty: boolean;\n        attachmentCount: number;\n    };\n    run: {\n        isRunning: boolean;\n        isSubmitting: boolean;\n    };\n}\ninterface ComposerRichTextSpec {\n    /** Content-derived paint: match ranges receive `className`; text is never mutated. */\n    effects?: readonly {\n        id: string;\n        /** Plain-text offsets into the current structured draft. */\n        match(text: string): readonly {\n            from: number;\n            to: number;\n        }[];\n        className: string;\n    }[];\n    /** Debounced, read-only observation of the structured draft. */\n    onDraftChange?(draft: ComposerStructuredDraft, view: ComposerView): void;\n}\ninterface ComposerStructuredDraft {\n    text: string;\n    mentions: readonly {\n        from: number;\n        to: number;\n        provider: string;\n        id: string;\n        label: string;\n    }[];\n}\n/** Host-rendered paint applied to the editable composer text. */\ninterface PluginComposerTextEffect {\n    className: string;\n}\n/** Host-rendered status that temporarily replaces a thread's draft glyph. */\ninterface PluginComposerThreadRowStatus {\n    /** BB icon-name hint; unknown names fall back to the generic plugin icon. */\n    icon: string;\n    /** Accessible label for the status glyph. */\n    label: string;\n    /**\n     * Semantic host treatment for the status glyph. `running` automatically\n     * shimmers; terminal `success` and `error` tones are static. Defaults to the\n     * neutral tone.\n     */\n    tone?: \"default\" | \"running\" | \"success\" | \"error\";\n}\n/** An @-mention pill bound to one of the calling plugin's mention providers. */\ninterface PluginComposerMention {\n    /** Mention provider id registered by THIS plugin via `bb.ui.registerMentionProvider`. */\n    provider: string;\n    /** Item id your provider's `resolve` will receive at send time. */\n    id: string;\n    /** Pill text shown in the composer. */\n    label: string;\n}\n/**\n * Programmatic access to the chat composer draft — the same shared draft the\n * built-in \"Add to chat\" affordances (file preview, diff, terminal selections)\n * write to. While a queued message is being edited, writes land in that\n * message's inline editor. In a side chat, writes land in the visible side-chat\n * draft. Otherwise, inside a thread context writes land in that thread's draft;\n * anywhere else (nav panel, homepage section) they seed the new-thread composer\n * draft, which persists until the user sends or clears it.\n */\ninterface PluginComposerApi {\n    scope: PluginComposerScope;\n    /** Current plain text for this composer scope. */\n    readonly text: string;\n    /**\n     * Replace the draft's plain text. Attachments are preserved. Inline mentions\n     * outside the changed range are preserved and rebased; mentions overlapped\n     * by the replacement are removed because their text representation changed.\n     */\n    setText(next: string): void;\n    /**\n     * Replace the draft's plain text from the latest committed value. Uses the\n     * same structured-state reconciliation as `setText`.\n     */\n    updateText(updater: (current: string) => string): void;\n    /** Clear plain text without clearing independently attached files. */\n    clear(): void;\n    /**\n     * Apply a host-rendered effect to this composer's editable text, or clear it.\n     * Effects are scoped to the calling plugin and automatically clear when the\n     * slot unmounts or its composer scope changes.\n     */\n    setTextEffect(effect: PluginComposerTextEffect | null): void;\n    /**\n     * Lock or unlock editing for this composer. Locks are scoped to the calling\n     * plugin and automatically release when the slot unmounts or its composer\n     * scope changes.\n     */\n    setInputLock(locked: boolean): void;\n    /**\n     * Append text to the draft as a `> ` blockquote block and focus the\n     * composer. Blank text is a no-op. This is the \"reference this selection\n     * in chat\" primitive.\n     */\n    addQuote(text: string): void;\n    /**\n     * Insert an @-mention pill that resolves through this plugin's mention\n     * provider at send time — the durable way to reference an entity whose\n     * content should be fetched fresh when the message is sent.\n     */\n    insertMention(mention: PluginComposerMention): void;\n    /** Focus the composer caret at the end of the draft. */\n    focus(): void;\n}\n/**\n * A consumer-supplied action on the messages of one `ThreadChat` instance,\n * rendered in the embedded timeline's per-message action bar alongside the\n * native and slot-registered actions. Unlike the `messageAction` slot this is\n * scoped to the rendering component, not registered globally.\n */\ninterface ThreadChatMessageAction {\n    /** Unique within this ThreadChat instance; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Message roles the action applies to. Omitted = both user and assistant\n     * messages.\n     */\n    roles?: readonly (\"user\" | \"assistant\")[];\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(message: ThreadChatMessageReference): void | Promise<void>;\n}\n/**\n * Props of the host-owned `ThreadChat` component — one thread's chat\n * (timeline, and for the composer variants the full send/queue/draft\n * engine), rendered by the BB app inside a plugin slot. This is the\n * deliberate exception to the no-host-components rule (§5.5): a stable\n * product capability, not a UI kit. Versioned additive like slot props;\n * internal timeline rows, query hooks, and prompt-box configuration are\n * deliberately not exposed.\n */\ninterface ThreadChatProps {\n    threadId: string;\n    /**\n     * \"full\" (default) is the page presentation (centered reading width);\n     * \"compact\" is the side-panel presentation; \"timeline\" renders the\n     * transcript without a composer.\n     */\n    variant?: \"full\" | \"compact\" | \"timeline\";\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the composer (ignored by `variant: \"timeline\"`). */\n    focusRequest?: number;\n    /**\n     * Who controls the permission mode sends run with. \"inherit\" (default)\n     * pins every send to the thread's own resolved default and renders the\n     * picker as a dimmed label — a plugin surface can never widen it.\n     * \"editable\" gives this chat its own picker, so the user can raise or\n     * lower permissions for this thread independently of the thread it was\n     * forked from. Ignored by `variant: \"timeline\"` (no composer).\n     */\n    permissionPolicy?: \"inherit\" | \"editable\";\n    className?: string;\n    /** Rendered above the conversation, scrolling with it. */\n    leadingContent?: ReactNode;\n    /**\n     * Actions rendered in this instance's per-message action bar (see\n     * {@link ThreadChatMessageAction}).\n     */\n    messageActions?: readonly ThreadChatMessageAction[];\n}\n/**\n * Every selection the composer resolved, JSON-serializable so a plugin can\n * forward it to its own backend rpc verbatim and hand it straight to\n * `bb.sdk.threads.spawn`.\n *\n * The split is deliberate: the composer owns *user selections*, the plugin\n * owns *filing and attribution*. `bb.sdk.threads.spawn` auto-fills\n * `origin: \"plugin\"` and `originPluginId`, so a thread created this way stays\n * attributed to the plugin — which it would not be if the component created\n * the thread itself. The plugin adds `sectionId`, `parentThreadId`, `title`,\n * and `visibility` to the request on its own; they are deliberately not\n * composer props.\n */\ninterface NewThreadRequest {\n    projectId: string;\n    providerId: string;\n    model: string;\n    reasoningLevel: ReasoningLevel;\n    permissionMode: PermissionMode;\n    /** Omitted when the selected provider has no service tiers. */\n    serviceTier?: ServiceTier;\n    /**\n     * Per-field provenance (caller-explicit vs. default) for the execution\n     * options above, forwarded to `spawn` so the server records what the user\n     * actually chose.\n     */\n    executionInputSources: CreateExecutionInputSources;\n    environment: CreateThreadEnvironmentArgs;\n    input: PromptInput[];\n}\n/**\n * Props of the host-owned `experimental_NewThreadComposer` component — bb's\n * full new-thread compose surface (prompt editor with @-mentions and expand,\n * attachments, provider/model/reasoning picker, voice, submit, and the row\n * beneath with project, environment, branch-from, and permission mode),\n * rendered by the BB app inside a plugin slot.\n *\n * It is the create-side counterpart to `ThreadChat`: same deliberate\n * exception to the no-host-components rule (§5.5), same additive versioning.\n */\ninterface NewThreadComposerProps {\n    /** Seeds the project picker. The user can change it. */\n    defaultProjectId?: string;\n    /**\n     * Seeds the provider picker. Like every `default*` prop this is a SEED, not\n     * a controlled value: the composer stays uncontrolled, the user can change\n     * it, and when omitted the composer falls back to the project's remembered\n     * execution defaults exactly as before. When provided it takes precedence\n     * over those project defaults.\n     *\n     * Re-seeding: the `default*` props are value-compared each render. When any\n     * of them changes after mount, the composer re-seeds EVERY execution and\n     * environment selection from the new props — including selections the user\n     * had already touched — so switching between two saved records in the same\n     * mounted composer reloads that record's values (the same rule\n     * `defaultProjectId` already follows).\n     *\n     * Every seeded field is reported as caller-explicit in the submitted\n     * request's `executionInputSources`. That is what makes the seed survive\n     * `threads.spawn`: the server drops a requested `providerId`/`model` that\n     * carries no provenance source and re-derives it from the project's stored\n     * defaults, which would silently undo the seed.\n     */\n    defaultProviderId?: string;\n    /** Seeds the model picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultModel?: string;\n    /**\n     * Seeds the reasoning-level picker. Same seed semantics as\n     * {@link defaultProviderId}. If the seeded model does not support this\n     * level, the composer reconciles to the closest supported one.\n     */\n    defaultReasoningLevel?: ReasoningLevel;\n    /**\n     * Seeds the service-tier picker. Same seed semantics as\n     * {@link defaultProviderId}. Ignored (and omitted from the submitted\n     * request) when the selected provider has no service tiers.\n     */\n    defaultServiceTier?: ServiceTier;\n    /** Seeds the permission-mode picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultPermissionMode?: PermissionMode;\n    /**\n     * Seeds the environment and branch pickers from a previously submitted\n     * `NewThreadRequest.environment`. Same seed semantics as\n     * {@link defaultProviderId}: a seed the user can change, taking precedence\n     * over the composer's own environment default when provided.\n     *\n     * Round trip: feeding a submitted request's `environment` back in and\n     * resubmitting untouched reproduces an equivalent environment, with these\n     * documented limits — the composer cannot represent every args variant:\n     *\n     * - `{ type: \"project-default\" }` seeds nothing; the composer resolves its\n     *   own default and submits that concrete environment instead.\n     * - A `host` environment whose host no longer exists (or whose project has\n     *   no source on it) falls back to the composer's default host, exactly as\n     *   the primary compose surface would.\n     * - A `reuse` environment whose worktree no longer has unarchived threads\n     *   falls back the same way.\n     * - An `unmanaged` workspace's `path` has no composer control; the seeded\n     *   selection submits `path: null` (the host's configured checkout). The\n     *   composer itself never produces a non-null `path`, so real round trips\n     *   are unaffected.\n     * - A `managed-worktree` with `baseBranch: { kind: \"default\" }` leaves the\n     *   branch picker on its default, which may resolve to a named base branch\n     *   when the project configures a dedicated worktree base — the same branch\n     *   the original `default` submission would have created from.\n     */\n    defaultEnvironment?: CreateThreadEnvironmentArgs;\n    /** Seeds the draft, only while the draft is still empty. */\n    initialPrompt?: string;\n    placeholder?: string;\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the editor. */\n    focusRequest?: number;\n    className?: string;\n    /**\n     * Where the draft persists. Drafts survive reloads and are shared by every\n     * composer using the same key; defaults to a key scoped to this plugin.\n     */\n    draftKey?: string;\n    /**\n     * Fires on submit with every selection resolved. The draft clears when this\n     * resolves and is KEPT if it throws, so a failed create never loses what the\n     * user typed.\n     */\n    onSubmit: (request: NewThreadRequest) => void | Promise<void>;\n}\n/**\n * Props of the host-owned `Markdown` component — bb's chat message renderer\n * (the same typography, spacing, and code styling as timeline messages).\n * Use it wherever plugin UI quotes or previews message content so it reads\n * like the rest of the chat. Like `ThreadChat`, this is a stable product\n * capability, not a UI kit; renderer internals stay private.\n */\ninterface MarkdownProps {\n    /** Markdown source, rendered exactly like a chat message body. */\n    content: string;\n    className?: string;\n}\n/** Current app selection, derived from the route. */\ninterface BbContext {\n    projectId: string | null;\n    threadId: string | null;\n}\ninterface BbNavigate {\n    toThread(threadId: string): void;\n    toProject(projectId: string): void;\n    /**\n     * Navigate to one of this plugin's own nav panels by its `path`.\n     * `subPath` targets a location inside the panel (the component's\n     * `subPath` prop); `replace` swaps the current history entry instead of\n     * pushing — use it for redirects so back does not bounce.\n     */\n    toPluginPanel(path: string, options?: {\n        subPath?: string;\n        replace?: boolean;\n    }): void;\n    /**\n     * Navigate to the root compose surface (the new-thread screen). Pass\n     * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the\n     * composer on arrival — the pairing behind \"Create via chat\" style entry\n     * points that drop the user into chat with a prefilled prompt.\n     */\n    toCompose(options?: {\n        initialPrompt?: string;\n        focusPrompt?: boolean;\n    }): void;\n    /**\n     * Open one of this plugin's registered thread-panel actions in the current\n     * thread surface. Returns false when the surface has no thread side panel or\n     * the action is unavailable.\n     */\n    openThreadPanel(options: {\n        actionId: string;\n        title?: string;\n        params?: JsonValue;\n    }): boolean;\n}\n/**\n * Everything `@get-bb/plugin-sdk/app` resolves to at runtime. The BB app builds\n * the real implementation and `satisfies` this interface; `bb plugin build`\n * shims the specifier to that object on `globalThis.__bbPluginRuntime`.\n */\ninterface PluginSdkApp {\n    definePluginApp(setup: PluginAppSetup): PluginAppDefinition;\n    useRpc<Contract extends PluginRpcContract = PluginRpcContract>(): PluginRpcClient<Contract>;\n    useRealtime(channel: string, handler: (payload: unknown) => void): void;\n    /**\n     * Observe the same shared connection that delivers `useRealtime` signals.\n     * Use a subsequent transition to `connected` to reconcile server state that\n     * may have changed while ephemeral signals could not be delivered. The first\n     * connection can transition from `connecting` and is not a reconnection.\n     */\n    useRealtimeConnectionState(): PluginRealtimeConnectionState;\n    useSettings(): PluginSettingsState;\n    useBbContext(): BbContext;\n    useBbNavigate(): BbNavigate;\n    useComposer(): PluginComposerApi;\n    /**\n     * The sidebar's live thread view (see {@link PluginSidebarThreadsState}).\n     * Reads the host's own cache and realtime subscriptions, so it costs no\n     * extra request and updates exactly when the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreads(): PluginSidebarThreadsState;\n    /**\n     * Thread actions bound to the host's mutations (see\n     * {@link PluginSidebarThreadActions}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadActions(): PluginSidebarThreadActions;\n    /**\n     * The pull request for one thread's branch (see\n     * {@link PluginSidebarThreadPullRequestState}).\n     *\n     * Per row and opt-in, because it costs a git-host lookup: it is NOT on the\n     * thread payload every sidebar loads. Threads sharing an environment share\n     * one query, and the host owns the polling and staleness rules — an open PR\n     * with pending checks refreshes, a merged one does not.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadPullRequest(threadId: string): PluginSidebarThreadPullRequestState;\n    /**\n     * Per-row drag-to-split support (see {@link PluginSidebarThreadSplit}).\n     * Call it once per rendered row, like the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadSplit(threadId: string): PluginSidebarThreadSplit;\n    /**\n     * The host-owned chat component (see {@link ThreadChatProps}). Together\n     * with `Markdown`, the only components the SDK ships — everything else\n     * stays vendored per §5.5.\n     */\n    ThreadChat: ComponentType<ThreadChatProps>;\n    /**\n     * The host-owned chat-message markdown renderer (see\n     * {@link MarkdownProps}).\n     */\n    Markdown: ComponentType<MarkdownProps>;\n    /**\n     * The host-owned new-thread compose surface (see\n     * {@link NewThreadComposerProps}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_NewThreadComposer: ComponentType<NewThreadComposerProps>;\n    useComposerView(): ComposerView;\n}\n\ninterface EnvironmentActionArgs {\n    environmentId: string;\n}\ninterface EnvironmentGetArgs extends EnvironmentActionArgs {\n    signal?: AbortSignal;\n}\ntype EnvironmentMergeBaseBranchUpdateValue = Exclude<UpdateEnvironmentRequest[\"mergeBaseBranch\"], undefined>;\ntype EnvironmentNameUpdateValue = Exclude<UpdateEnvironmentRequest[\"name\"], undefined>;\ninterface EnvironmentMergeBaseBranchUpdate {\n    mergeBaseBranch: EnvironmentMergeBaseBranchUpdateValue;\n    name?: EnvironmentNameUpdateValue;\n}\ninterface EnvironmentNameUpdate {\n    mergeBaseBranch?: EnvironmentMergeBaseBranchUpdateValue;\n    name: EnvironmentNameUpdateValue;\n}\ntype EnvironmentUpdateFields = EnvironmentMergeBaseBranchUpdate | EnvironmentNameUpdate;\ntype EnvironmentUpdateArgs = EnvironmentUpdateFields & {\n    environmentId: string;\n};\ninterface EnvironmentStatusArgs extends EnvironmentStatusQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ntype EnvironmentDiffArgs = EnvironmentDiffQuery & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ntype EnvironmentDiffFileArgs = EnvironmentDiffFileQuery & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ninterface EnvironmentDiffBranchesArgs extends EnvironmentDiffBranchesQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ninterface EnvironmentCommitArgs {\n    environmentId: string;\n}\ninterface EnvironmentSquashMergeArgs {\n    environmentId: string;\n    mergeBaseBranch: string;\n}\ninterface EnvironmentPullRequestMergeArgs {\n    environmentId: string;\n    method: PullRequestMergeMethod;\n}\ntype EnvironmentDiffPatchArgs = EnvironmentDiffPatchRequest & {\n    environmentId: string;\n    signal?: AbortSignal;\n};\ninterface EnvironmentPathsArgs extends EnvironmentPathsQuery {\n    environmentId: string;\n    signal?: AbortSignal;\n}\ntype EnvironmentArchiveThreadsResult = EnvironmentArchiveThreadsResponse;\ntype EnvironmentCommitResult = CommitActionResponse;\ntype EnvironmentDiffResult = EnvironmentDiffResponse;\ntype EnvironmentDiffBranchesResult = EnvironmentDiffBranchesResponse;\ntype EnvironmentDiffFileResult = EnvironmentDiffFileResponse;\ntype EnvironmentDiffFilesResult = EnvironmentDiffFilesResponse;\ntype EnvironmentDiffPatchResult = EnvironmentDiffPatchResponse;\ntype EnvironmentGetResult = Environment;\ntype EnvironmentMarkPullRequestDraftResult = PullRequestDraftActionResponse;\ntype EnvironmentMarkPullRequestReadyResult = PullRequestReadyActionResponse;\ntype EnvironmentMergePullRequestResult = PullRequestMergeActionResponse;\ntype EnvironmentPathsResult = WorkspacePathListResponse;\ntype EnvironmentPullRequestResult = EnvironmentPullRequestResponse;\ntype EnvironmentSquashMergeResult = SquashMergeActionResponse;\ntype EnvironmentStatusResult = EnvironmentStatusResponse;\ntype EnvironmentUpdateResult = Environment;\ninterface EnvironmentsArea {\n    archiveThreads(args: EnvironmentActionArgs): Promise<EnvironmentArchiveThreadsResult>;\n    commit(args: EnvironmentCommitArgs): Promise<EnvironmentCommitResult>;\n    diff(args: EnvironmentDiffArgs): Promise<EnvironmentDiffResult>;\n    diffBranches(args: EnvironmentDiffBranchesArgs): Promise<EnvironmentDiffBranchesResult>;\n    diffFile(args: EnvironmentDiffFileArgs): Promise<EnvironmentDiffFileResult>;\n    diffFiles(args: EnvironmentDiffArgs): Promise<EnvironmentDiffFilesResult>;\n    diffPatch(args: EnvironmentDiffPatchArgs): Promise<EnvironmentDiffPatchResult>;\n    get(args: EnvironmentGetArgs): Promise<EnvironmentGetResult>;\n    pullRequest(args: EnvironmentGetArgs): Promise<EnvironmentPullRequestResult>;\n    markPullRequestDraft(args: EnvironmentActionArgs): Promise<EnvironmentMarkPullRequestDraftResult>;\n    markPullRequestReady(args: EnvironmentActionArgs): Promise<EnvironmentMarkPullRequestReadyResult>;\n    mergePullRequest(args: EnvironmentPullRequestMergeArgs): Promise<EnvironmentMergePullRequestResult>;\n    paths(args: EnvironmentPathsArgs): Promise<EnvironmentPathsResult>;\n    squashMerge(args: EnvironmentSquashMergeArgs): Promise<EnvironmentSquashMergeResult>;\n    status(args: EnvironmentStatusArgs): Promise<EnvironmentStatusResult>;\n    update(args: EnvironmentUpdateArgs): Promise<EnvironmentUpdateResult>;\n}\n\n/**\n * Host file primitives. `hostId` may be omitted to target the server's\n * primary (local) host. `rootPath`, when set, confines the target beneath\n * that absolute root on the host (symlink-safe).\n */\ninterface FileReadArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    signal?: AbortSignal;\n}\ninterface FileWriteArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    content: string;\n    /** Defaults to \"utf8\". */\n    contentEncoding?: \"utf8\" | \"base64\";\n    /** Defaults to false. */\n    createParents?: boolean;\n    /**\n     * Optimistic-concurrency guard: omitted → unconditional write; a hash →\n     * write only when the current content hashes to it (use `read().sha256`);\n     * null → create-only. A failed guard resolves to the `conflict` outcome.\n     */\n    expectedSha256?: string | null;\n    /** POSIX permission bits used when creating a file (for example 0o600). */\n    mode?: number;\n}\ninterface FileListArgs {\n    hostId?: string;\n    path: string;\n    query?: string;\n    limit?: number;\n    signal?: AbortSignal;\n}\ninterface PathListArgs extends FileListArgs {\n    includeFiles: boolean;\n    includeDirectories: boolean;\n}\ninterface FileMkdirArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    recursive?: boolean;\n}\ninterface FileMoveArgs {\n    hostId?: string;\n    sourcePath: string;\n    destinationPath: string;\n    rootPath?: string;\n}\ninterface FileRemoveArgs {\n    hostId?: string;\n    path: string;\n    rootPath?: string;\n    recursive?: boolean;\n}\ninterface FilePreviewArgs {\n    hostId?: string;\n    rootPath: string;\n    signal?: AbortSignal;\n    ttlMs?: number;\n}\ntype FileReadResult = HostFileReadResponse;\ntype FileWriteResult = HostFileWriteResponse;\ntype FileListResult = HostFileListResponse;\ntype PathListResult = HostPathListResponse;\ntype FileMkdirResult = HostMkdirResponse;\ntype FileMoveResult = HostMovePathResponse;\ntype FileRemoveResult = HostRemovePathResponse;\ntype FilePreviewResult = CreateFilePreviewResponse;\ninterface FilesArea {\n    read(args: FileReadArgs): Promise<FileReadResult>;\n    write(args: FileWriteArgs): Promise<FileWriteResult>;\n    list(args: FileListArgs): Promise<FileListResult>;\n    listPaths(args: PathListArgs): Promise<PathListResult>;\n    mkdir(args: FileMkdirArgs): Promise<FileMkdirResult>;\n    move(args: FileMoveArgs): Promise<FileMoveResult>;\n    remove(args: FileRemoveArgs): Promise<FileRemoveResult>;\n    createPreview(args: FilePreviewArgs): Promise<FilePreviewResult>;\n}\n\ninterface GuideRenderArgs {\n    chapter?: string;\n}\ninterface GuideRenderResult {\n    chapter?: string;\n    content: string;\n}\ninterface GuideArea {\n    render(args?: GuideRenderArgs): GuideRenderResult;\n}\n\ninterface HostGetArgs {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostDeleteArgs {\n    hostId: string;\n}\ninterface HostUpdateArgs extends UpdateHostRequest {\n    hostId: string;\n}\ninterface HostRetryUpdateArgs {\n    hostId: string;\n}\ninterface HostDirectoryArgs extends HostDirectoryQuery {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostCloneDefaultPathArgs extends HostCloneDefaultPathQuery {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostPathsExistArgs extends HostPathsExistRequest {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostPickFolderArgs extends HostPickFolderRequest {\n    hostId: string;\n    signal?: AbortSignal;\n}\ninterface HostProviderCliInstallArgs extends HostProviderCliInstallRequest {\n    hostId: string;\n}\ninterface HostListArgs {\n    signal?: AbortSignal;\n}\ntype HostCreateJoinCodeResult = CreateHostJoinCodeResponse;\ntype HostDeleteResult = {\n    ok: true;\n};\ntype HostDirectoryResult = HostDirectoryListing;\ntype HostGetResult = Host;\ntype HostCloneDefaultPathResult = HostCloneDefaultPathResponse;\ntype HostProviderCliInstallResult = HostProviderCliInstallEvent[];\ntype HostListResult = Host[];\ntype HostPathsExistResult = HostPathsExistResponse;\ntype HostPickFolderResult = HostPickFolderResponse;\ntype HostProviderCliStatusResult = HostProviderCliStatusResponse;\ntype HostRetryUpdateResult = HostRetryUpdateResponse;\ntype HostUpdateResult = Host;\ninterface HostsArea {\n    createJoinCode(): Promise<HostCreateJoinCodeResult>;\n    delete(args: HostDeleteArgs): Promise<HostDeleteResult>;\n    directory(args: HostDirectoryArgs): Promise<HostDirectoryResult>;\n    get(args: HostGetArgs): Promise<HostGetResult>;\n    cloneDefaultPath(args: HostCloneDefaultPathArgs): Promise<HostCloneDefaultPathResult>;\n    installProviderCli(args: HostProviderCliInstallArgs): Promise<HostProviderCliInstallResult>;\n    list(args?: HostListArgs): Promise<HostListResult>;\n    pathsExist(args: HostPathsExistArgs): Promise<HostPathsExistResult>;\n    pickFolder(args: HostPickFolderArgs): Promise<HostPickFolderResult>;\n    providerCliStatus(args: HostGetArgs): Promise<HostProviderCliStatusResult>;\n    retryUpdate(args: HostRetryUpdateArgs): Promise<HostRetryUpdateResult>;\n    update(args: HostUpdateArgs): Promise<HostUpdateResult>;\n}\n\ninterface ProjectListArgs {\n    include?: ProjectListQuery[\"include\"];\n    /** Include the singleton personal project. Defaults to false for compatibility. */\n    includePersonal?: boolean;\n    signal?: AbortSignal;\n}\ninterface ProjectCreateArgs extends CreateProjectRequest {\n}\ninterface ProjectGetArgs {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectUpdateArgs extends UpdateProjectRequest {\n    projectId: string;\n}\ninterface ProjectDeleteArgs {\n    projectId: string;\n}\ninterface ProjectReorderArgs extends ReorderProjectRequest {\n    projectId: string;\n}\ninterface ProjectPromptHistoryArgs extends PromptHistoryQuery {\n    projectId: string;\n    signal?: AbortSignal;\n}\n/** Select one project workspace source, or omit both for the primary host. */\ntype ProjectWorkspaceRoutingArgs = {\n    environmentId: string;\n    hostId?: never;\n} | {\n    environmentId?: never;\n    hostId: string;\n} | {\n    environmentId?: never;\n    hostId?: never;\n};\ntype ProjectFilesArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectFilesQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectPathsArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectPathsQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectCommandsArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectCommandsQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ntype ProjectFileContentArgs = ProjectWorkspaceRoutingArgs & Omit<ProjectFileContentQuery, \"environmentId\" | \"hostId\"> & {\n    projectId: string;\n    signal?: AbortSignal;\n};\ninterface ProjectBranchesArgs extends ProjectBranchesQuery {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectDefaultExecutionOptionsArgs {\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectAttachmentFileLike {\n    arrayBuffer(): Promise<ArrayBuffer>;\n    readonly name: string;\n    readonly type?: string;\n}\ninterface ProjectAttachmentUploadArgsBase {\n    /** MIME override. Omit to use the File/Blob type, when available. */\n    mimeType?: string;\n    projectId: string;\n}\n/**\n * Upload bytes owned by this SDK client. A bare Blob/byte buffer needs an\n * explicit filename; File-like values can supply their own name.\n */\ntype ProjectAttachmentUploadArgs = ProjectAttachmentUploadArgsBase & ({\n    clientFile: ProjectAttachmentFileLike;\n    filename?: string;\n} | {\n    clientFile: ArrayBuffer | Blob | Uint8Array;\n    filename: string;\n});\ninterface ProjectAttachmentReadArgs {\n    path: string;\n    projectId: string;\n    signal?: AbortSignal;\n}\ninterface ProjectAttachmentCopyArgs extends CopyProjectAttachmentsRequest {\n    projectId: string;\n}\ntype ProjectSourceAddArgs = CreateProjectSourceRequest & {\n    projectId: string;\n};\ninterface ProjectSourceUpdateArgs extends UpdateProjectSourceRequest {\n    projectId: string;\n    sourceId: string;\n}\ninterface ProjectSourceDeleteArgs {\n    projectId: string;\n    sourceId: string;\n}\ntype ProjectBranchesResult = ProjectBranchesResponse;\ninterface ProjectAttachmentReadResult {\n    bytes: Uint8Array;\n    mimeType: string;\n    sizeBytes: number;\n}\ntype ProjectAttachmentUploadResult = UploadedPromptAttachment;\ntype ProjectCommandsResult = CommandListResponse;\ntype ProjectCreateResult = ProjectResponse;\ntype ProjectDefaultExecutionOptionsResult = ProjectExecutionDefaults | null;\ntype ProjectDeleteResult = {\n    ok: true;\n};\ninterface ProjectFileContentResult {\n    /** UTF-8 text or base64, as selected by `contentEncoding`. */\n    content: string;\n    contentEncoding: \"utf8\" | \"base64\";\n    mimeType: string;\n    sizeBytes: number;\n}\ntype ProjectFilesResult = WorkspaceFileListResponse;\ntype ProjectGetResult = ProjectResponse;\ntype ProjectListResult = ProjectResponse[] | ProjectWithThreadsResponse[];\ntype ProjectPathsResult = WorkspacePathListResponse;\ntype ProjectPromptHistoryResult = PromptHistoryResponse;\ntype ProjectReorderResult = ProjectResponse[];\ntype ProjectSourceAddResult = ProjectSource;\ntype ProjectSourceDeleteResult = {\n    ok: true;\n};\ntype ProjectSourceUpdateResult = ProjectSource;\ntype ProjectUpdateResult = ProjectResponse;\ninterface ProjectSourcesArea {\n    add(args: ProjectSourceAddArgs): Promise<ProjectSourceAddResult>;\n    delete(args: ProjectSourceDeleteArgs): Promise<ProjectSourceDeleteResult>;\n    update(args: ProjectSourceUpdateArgs): Promise<ProjectSourceUpdateResult>;\n}\ninterface ProjectAttachmentsArea {\n    copy(args: ProjectAttachmentCopyArgs): Promise<void>;\n    read(args: ProjectAttachmentReadArgs): Promise<ProjectAttachmentReadResult>;\n    upload(args: ProjectAttachmentUploadArgs): Promise<ProjectAttachmentUploadResult>;\n}\ninterface ProjectsArea {\n    attachments: ProjectAttachmentsArea;\n    branches(args: ProjectBranchesArgs): Promise<ProjectBranchesResult>;\n    commands(args: ProjectCommandsArgs): Promise<ProjectCommandsResult>;\n    create(args: ProjectCreateArgs): Promise<ProjectCreateResult>;\n    defaultExecutionOptions(args: ProjectDefaultExecutionOptionsArgs): Promise<ProjectDefaultExecutionOptionsResult>;\n    delete(args: ProjectDeleteArgs): Promise<ProjectDeleteResult>;\n    fileContent(args: ProjectFileContentArgs): Promise<ProjectFileContentResult>;\n    files(args: ProjectFilesArgs): Promise<ProjectFilesResult>;\n    get(args: ProjectGetArgs): Promise<ProjectGetResult>;\n    list(args?: ProjectListArgs): Promise<ProjectListResult>;\n    paths(args: ProjectPathsArgs): Promise<ProjectPathsResult>;\n    promptHistory(args: ProjectPromptHistoryArgs): Promise<ProjectPromptHistoryResult>;\n    reorder(args: ProjectReorderArgs): Promise<ProjectReorderResult>;\n    sources: ProjectSourcesArea;\n    update(args: ProjectUpdateArgs): Promise<ProjectUpdateResult>;\n}\n\n/** Select exactly one provider-discovery host source, or omit both for primary. */\ntype ProviderHostRoutingArgs = {\n    environmentId: string;\n    hostId?: never;\n} | {\n    environmentId?: never;\n    hostId: string;\n} | {\n    environmentId?: never;\n    hostId?: never;\n};\ntype ProviderListArgs = ProviderHostRoutingArgs & {\n    signal?: AbortSignal;\n};\ntype ProviderModelsArgs = ProviderHostRoutingArgs & {\n    providerId?: string;\n    signal?: AbortSignal;\n};\ntype ProviderListResult = ProviderInfo[];\ntype ProviderModelsResult = SystemExecutionOptionsResponse;\ninterface ProvidersArea {\n    /** List providers on the environment host, explicit host, or primary host. */\n    list(args?: ProviderListArgs): Promise<ProviderListResult>;\n    /** List models on the environment host, explicit host, or primary host. */\n    models(args?: ProviderModelsArgs): Promise<ProviderModelsResult>;\n}\n\ninterface PluginIdArgs {\n    pluginId: string;\n}\n/** Install directly from a path:, git:, npm:, or builtin: source spec. */\ninterface PluginInstallArgs {\n    /**\n     * `path:<dir>`, `builtin:<name>`, `npm:<package>[@<version|tag|range>]`, or\n     * `git:<url>[@<spec>]`. A git spec is one ref, or a semver range resolved\n     * over the repository's `[<tagPrefix>]vX.Y.Z` release tags:\n     * `git:<url>@semver:<range>` and `git:<url>@semver:<tagPrefix>:<range>` say\n     * range explicitly, `git:<url>@ref:<name>` says ref explicitly, and a bare\n     * `^1.2.0` resolves over tags unless the repository also has a ref of that\n     * literal name (which is refused as ambiguous).\n     */\n    source: string;\n    /**\n     * Directory of a multi-plugin repository to install, relative to the\n     * repository root (`git:` and `path:` sources only).\n     */\n    subdirectory?: string;\n    /**\n     * Name of a `.bb/plugins.json` collection entry to install, resolved to its\n     * directory in the repository. Mutually exclusive with `subdirectory`.\n     */\n    plugin?: string;\n}\n/** Install a catalog entry, from BB's official catalog or another marketplace. */\ninterface PluginCatalogInstallArgs {\n    entryId: string;\n    /**\n     * Marketplace that lists the entry. Omitted resolves across every\n     * marketplace: exactly one match installs, none falls back to the bundled\n     * official plugin of that name, and several are refused as ambiguous.\n     */\n    marketplace?: string;\n    /**\n     * Source facts returned by installPlan for a third-party entry. The server\n     * refuses the install when the listing or its git commit changed afterward.\n     */\n    confirmedSource?: PluginCatalogResolvedSource;\n}\n/** Ask what an install would do before confirming it. */\ninterface PluginCatalogInstallPlanArgs {\n    entryId: string;\n    marketplace?: string;\n    signal?: AbortSignal;\n}\n/** Add a marketplace by `https:` manifest URL, `git:<url>[@ref]`, or `path:<dir>`. */\ninterface PluginMarketplaceAddArgs {\n    source: string;\n}\ninterface PluginMarketplaceListArgs {\n    signal?: AbortSignal;\n}\ninterface PluginMarketplaceRefreshArgs {\n    /** One marketplace to refresh; omitted refreshes every one of them. */\n    name?: string;\n    signal?: AbortSignal;\n}\ninterface PluginMarketplaceRemoveArgs {\n    name: string;\n}\ninterface PluginReloadArgs {\n    pluginId?: string;\n}\ninterface PluginSettingsUpdateArgs extends PluginIdArgs {\n    values: Record<string, JsonValue$1>;\n}\ninterface PluginTokenArgs extends PluginIdArgs {\n    rotate?: boolean;\n}\ninterface PluginCheckUpdatesArgs {\n    pluginId?: string;\n    signal?: AbortSignal;\n}\ninterface PluginRpcArgs<TOutput> extends PluginIdArgs {\n    input?: JsonValue$1;\n    method: string;\n    outputSchema: z$1.ZodType<TOutput>;\n}\ninterface PluginCatalogSearchArgs {\n    query: string;\n    signal?: AbortSignal;\n}\ninterface PluginCatalogStatusArgs {\n    signal?: AbortSignal;\n}\ninterface PluginGetSettingsArgs extends PluginIdArgs {\n    signal?: AbortSignal;\n}\ninterface PluginGetSourceArgs extends PluginIdArgs {\n    signal?: AbortSignal;\n}\ninterface PluginListArgs {\n    signal?: AbortSignal;\n}\ninterface PluginListUpdateResultsArgs {\n    signal?: AbortSignal;\n}\ntype PluginDisableResult = InstalledPlugin;\ntype PluginEnableResult = InstalledPlugin;\ntype PluginGetSettingsResult = PluginSettingsResponse;\ntype PluginInstallResult = InstalledPlugin;\ntype PluginListResult = PluginListResponse;\ntype PluginReloadResult = PluginReloadResponse;\ntype PluginRemoveResult = PluginRemoveResponse;\ntype PluginTokenResult = PluginTokenResponse;\ntype PluginUpdateSettingsResult = PluginSettingsResponse;\ntype PluginGetSourceResult = PluginSourceDetail;\ntype PluginCheckUpdatesResult = PluginUpdateCheckEntry[];\ntype PluginApplyUpdateResult = PluginApplyUpdateResult$1;\ntype PluginCatalogStatusResult = PluginCatalogStatus;\ntype PluginCatalogSearchResult = PluginCatalogSearchResult$1[];\ntype PluginCatalogInstallPlanResult = PluginCatalogInstallPlan;\ntype PluginMarketplaceListResult = PluginMarketplace[];\ntype PluginMarketplaceAddResult = PluginMarketplace;\ntype PluginMarketplaceRefreshResult = PluginMarketplaceRefreshResult$1[];\ninterface PluginMarketplaceRemoveResult {\n    /** Installs whose provenance became `direct`; they keep running as before. */\n    convertedPluginIds: string[];\n}\ninterface PluginCatalogArea {\n    install(args: PluginCatalogInstallArgs): Promise<PluginInstallResult>;\n    /** The true resolved source an install would use, before anything runs. */\n    installPlan(args: PluginCatalogInstallPlanArgs): Promise<PluginCatalogInstallPlanResult>;\n    search(args: PluginCatalogSearchArgs): Promise<PluginCatalogSearchResult>;\n    status(args?: PluginCatalogStatusArgs): Promise<PluginCatalogStatusResult>;\n}\n/** Registered marketplaces. Adding one installs nothing; removing one uninstalls nothing. */\ninterface PluginMarketplacesArea {\n    add(args: PluginMarketplaceAddArgs): Promise<PluginMarketplaceAddResult>;\n    list(args?: PluginMarketplaceListArgs): Promise<PluginMarketplaceListResult>;\n    refresh(args?: PluginMarketplaceRefreshArgs): Promise<PluginMarketplaceRefreshResult>;\n    remove(args: PluginMarketplaceRemoveArgs): Promise<PluginMarketplaceRemoveResult>;\n}\ninterface PluginsArea {\n    applyUpdate(args: PluginIdArgs): Promise<PluginApplyUpdateResult>;\n    callRpc<TOutput>(args: PluginRpcArgs<TOutput>): Promise<TOutput>;\n    checkUpdates(args?: PluginCheckUpdatesArgs): Promise<PluginCheckUpdatesResult>;\n    catalog: PluginCatalogArea;\n    marketplaces: PluginMarketplacesArea;\n    disable(args: PluginIdArgs): Promise<PluginDisableResult>;\n    enable(args: PluginIdArgs): Promise<PluginEnableResult>;\n    getSettings(args: PluginGetSettingsArgs): Promise<PluginGetSettingsResult>;\n    getSource(args: PluginGetSourceArgs): Promise<PluginGetSourceResult>;\n    install(args: PluginInstallArgs): Promise<PluginInstallResult>;\n    list(args?: PluginListArgs): Promise<PluginListResult>;\n    listUpdateResults(args?: PluginListUpdateResultsArgs): Promise<PluginCheckUpdatesResult>;\n    reload(args?: PluginReloadArgs): Promise<PluginReloadResult>;\n    remove(args: PluginIdArgs): Promise<PluginRemoveResult>;\n    token(args: PluginTokenArgs): Promise<PluginTokenResult>;\n    updateSettings(args: PluginSettingsUpdateArgs): Promise<PluginUpdateSettingsResult>;\n}\n\ntype BbRealtimeUnsubscribe = () => void;\ntype BbRealtimeEventName = \"thread:changed\" | \"project:changed\" | \"environment:changed\" | \"host:changed\" | \"system:changed\" | \"system:config-changed\" | \"realtime:connection\";\ntype ThreadRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"thread\";\n}>;\ntype ProjectRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"project\";\n}>;\ntype EnvironmentRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"environment\";\n}>;\ntype HostRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"host\";\n}>;\ntype SystemRealtimeEvent = Extract<ChangedMessage, {\n    entity: \"system\";\n}>;\ntype BbRealtimeConnectionState = \"connecting\" | \"connected\" | \"disconnected\";\ninterface BbRealtimeConnectionEvent {\n    reconnectDelayMs: number | null;\n    reconnected: boolean;\n    state: BbRealtimeConnectionState;\n}\n/**\n * Entity-changed events are delivered as one shared object to every matching\n * listener; their payload types are readonly so a listener cannot mutate what\n * the next listener receives.\n */\ninterface BbRealtimeEventMap {\n    \"thread:changed\": ThreadRealtimeEvent;\n    \"project:changed\": ProjectRealtimeEvent;\n    \"environment:changed\": EnvironmentRealtimeEvent;\n    \"host:changed\": HostRealtimeEvent;\n    \"system:changed\": SystemRealtimeEvent;\n    \"system:config-changed\": SystemRealtimeEvent;\n    \"realtime:connection\": BbRealtimeConnectionEvent;\n}\ntype BbRealtimeCallback<TEventName extends BbRealtimeEventName> = (event: BbRealtimeEventMap[TEventName]) => void;\ninterface ThreadRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"thread:changed\">;\n    event: \"thread:changed\";\n    threadId?: string;\n}\ninterface ProjectRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"project:changed\">;\n    event: \"project:changed\";\n    projectId?: string;\n}\ninterface EnvironmentRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"environment:changed\">;\n    environmentId?: string;\n    event: \"environment:changed\";\n}\ninterface HostRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"host:changed\">;\n    event: \"host:changed\";\n    hostId?: string;\n}\ninterface SystemRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"system:changed\">;\n    event: \"system:changed\";\n}\ninterface SystemConfigRealtimeSubscribeArgs {\n    callback: BbRealtimeCallback<\"system:config-changed\">;\n    event: \"system:config-changed\";\n}\n/**\n * Connection listeners are pure observers — they never open or hold the\n * socket. A listener registered while a socket already exists receives the\n * latest connection event as a snapshot on the next microtask, so a status\n * UI mounted after connect still learns the current state.\n */\ninterface RealtimeConnectionSubscribeArgs {\n    callback: BbRealtimeCallback<\"realtime:connection\">;\n    event: \"realtime:connection\";\n}\ntype BbRealtimeSubscribeArgsUnion = ThreadRealtimeSubscribeArgs | ProjectRealtimeSubscribeArgs | EnvironmentRealtimeSubscribeArgs | HostRealtimeSubscribeArgs | SystemRealtimeSubscribeArgs | SystemConfigRealtimeSubscribeArgs | RealtimeConnectionSubscribeArgs;\ntype BbRealtimeSubscribeArgs<TEventName extends BbRealtimeEventName = BbRealtimeEventName> = Extract<BbRealtimeSubscribeArgsUnion, {\n    event: TEventName;\n}>;\ninterface BbRealtime {\n    subscribe<TEventName extends BbRealtimeEventName>(args: BbRealtimeSubscribeArgs<TEventName>): BbRealtimeUnsubscribe;\n}\n\ninterface StatusGetArgs {\n    projectId?: string;\n    signal?: AbortSignal;\n    threadId?: string;\n}\ninterface StatusThreadSummary {\n    environmentId: string | null;\n    id: string;\n    parentThreadId: string | null;\n    pinnedAt: number | null;\n    projectId: string;\n    status: ThreadStatus;\n    title: string | null;\n}\ntype StatusProject = ProjectResponse;\ntype StatusChildThreads = ThreadListResponse;\ninterface StatusResult {\n    childThreads: StatusChildThreads | null;\n    pendingTodos: ThreadTimelinePendingTodos | null;\n    project: StatusProject | null;\n    thread: StatusThreadSummary | null;\n}\ninterface StatusArea {\n    get(args?: StatusGetArgs): Promise<StatusResult>;\n}\n\ninterface SkillWorkspaceArgs {\n    projectId: string;\n    environmentId: string | null;\n}\ninterface SkillListArgs extends SkillWorkspaceArgs {\n    signal?: AbortSignal;\n}\ninterface SkillIdentityArgs extends SkillListArgs {\n    skillId: string;\n}\ninterface SkillContentArgs extends SkillIdentityArgs {\n    path: string;\n}\ninterface SkillUpdateArgs extends SkillWorkspaceArgs {\n    skillId: string;\n    content: string;\n    revision: string;\n}\ninterface SkillDeleteArgs extends SkillWorkspaceArgs {\n    skillId: string;\n}\n/**\n * Registry calls proxy out to skills.sh and GitHub, and the browse grid fans\n * out one per card. Callers pass their query's AbortSignal so abandoning a\n * page cancels its requests instead of leaving them in flight.\n */\ninterface AbortableArgs {\n    signal?: AbortSignal;\n}\ninterface RegistrySkillsSearchArgs extends AbortableArgs {\n    query?: string;\n    page?: number;\n    perPage?: number;\n}\ninterface RegistrySkillIdArgs extends AbortableArgs {\n    registrySkillId: string;\n}\ninterface RegistrySkillEntriesArgs extends AbortableArgs {\n    registrySkillIds: readonly string[];\n}\ninterface RegistrySkillSourceArgs extends AbortableArgs {\n    source: string;\n    skillId: string;\n}\ninterface RegistryRepositoryArgs extends AbortableArgs {\n    source: string;\n}\n/**\n * Install is a mutation and deliberately takes no signal: its body is parsed\n * with a strict schema, so an extra key would throw at runtime.\n */\ninterface RegistrySkillInstallArgs {\n    registrySkillId: string;\n}\ninterface SkillsRegistryArea {\n    detail(args: RegistrySkillSourceArgs): Promise<RegistrySkillDetail>;\n    entries(args: RegistrySkillEntriesArgs): Promise<RegistrySkillEntriesResponse>;\n    get(args: RegistrySkillIdArgs): Promise<RegistrySkill>;\n    install(args: RegistrySkillInstallArgs): Promise<RegistrySkillInstallResponse>;\n    repositoryStars(args: RegistryRepositoryArgs): Promise<RegistryRepositoryStars>;\n    search(args?: RegistrySkillsSearchArgs): Promise<RegistrySkillsPage>;\n}\ninterface SkillsArea {\n    getContent(args: SkillContentArgs): Promise<SkillContentResponse>;\n    list(args: SkillListArgs): Promise<SkillListResponse>;\n    listFiles(args: SkillIdentityArgs): Promise<SkillFilesResponse>;\n    registry: SkillsRegistryArea;\n    remove(args: SkillDeleteArgs): Promise<{\n        deletedPath: string;\n    }>;\n    update(args: SkillUpdateArgs): Promise<{\n        filePath: string;\n        revision: string;\n    }>;\n}\n\ntype ThemeGetResult = AppTheme;\ntype ThemeCatalogResult = ThemeCatalogResponse;\ntype ThemeSetInput = AppThemeSelection;\ntype ThemeSetResult = AppTheme;\ninterface ThemeCatalogArgs {\n    signal?: AbortSignal;\n}\ninterface ThemeGetArgs {\n    signal?: AbortSignal;\n}\ninterface ThemeArea {\n    /** The active app palette, resolved server-side (built-in id or custom CSS). */\n    get(args?: ThemeGetArgs): Promise<ThemeGetResult>;\n    /** The custom-theme directory plus discovered themes and the active palette. */\n    catalog(args?: ThemeCatalogArgs): Promise<ThemeCatalogResult>;\n    /** Set the complete app appearance selection in one request. */\n    set(selection: ThemeSetInput): Promise<ThemeSetResult>;\n    /**\n     * Activate a palette by id while preserving the active favicon color. This\n     * compatibility shorthand reads the active appearance before writing the\n     * complete selection; prefer the object form when both values are known.\n     */\n    set(themeId: string): Promise<ThemeSetResult>;\n}\n\ninterface SystemAttentionArgs {\n    signal?: AbortSignal;\n}\ninterface SystemConfigArgs {\n    signal?: AbortSignal;\n}\ninterface SystemExecutionOptionsArgs extends SystemExecutionOptionsQuery {\n    signal?: AbortSignal;\n}\ninterface SystemUsageLimitsArgs extends SystemUsageLimitsQuery {\n    signal?: AbortSignal;\n}\ninterface SystemVersionArgs {\n    force?: boolean;\n    signal?: AbortSignal;\n}\ninterface SystemVoiceTranscriptionArgs {\n    file: Blob;\n    prompt?: string;\n    signal?: AbortSignal;\n}\ntype SystemAttentionResult = SystemAttentionResponse;\ntype SystemConfigResult = SystemConfigResponse;\ntype SystemExecutionOptionsResult = SystemExecutionOptionsResponse;\ntype SystemReloadConfigResult = SystemConfigReloadResponse;\ntype SystemInstallCliSkillsArgs = SystemInstallCliSkillsRequest;\ninterface SystemCliSkillsStatusArgs {\n    /** Omit for every enrolled machine. */\n    hostIds?: readonly string[];\n    signal?: AbortSignal;\n}\ntype SystemCliSkillsStatusResult = SystemCliSkillsStatusResponse;\ntype SystemInstallCliSkillsResult = SystemInstallCliSkillsResponse;\ntype SystemVoiceTranscriptionResult = SystemVoiceTranscriptionResponse;\ntype SystemUpdateExperimentsResult = Experiments;\ntype SystemUpdateGeneralSettingsResult = AppSettings;\ntype SystemUpdateKeyboardSettingsResult = AppKeybindingOverrides;\ntype SystemUsageLimitsResult = ProviderUsageResponse;\ninterface SystemOnboardingArgs extends SystemProvidersQuery {\n    signal?: AbortSignal;\n}\ninterface SystemOnboardingReposArgs extends SystemOnboardingReposQuery {\n    signal?: AbortSignal;\n}\ntype SystemOnboardingAgentsResult = OnboardingAgentOverview;\ntype SystemOnboardingReposResult = DiscoverReposResult;\ntype SystemVersionResult = SystemVersionResponse;\ninterface SystemArea {\n    attention(args?: SystemAttentionArgs): Promise<SystemAttentionResult>;\n    config(args?: SystemConfigArgs): Promise<SystemConfigResult>;\n    executionOptions(args?: SystemExecutionOptionsArgs): Promise<SystemExecutionOptionsResult>;\n    /**\n     * Copy bb's built-in CLI skills into each named machine's global agent skill\n     * roots (`~/.agents/skills` and `~/.claude/skills`). Machines install\n     * independently; the result reports each machine's outcome.\n     */\n    /** Per-machine install state of bb's built-in CLI skills. */\n    cliSkillsStatus(args?: SystemCliSkillsStatusArgs): Promise<SystemCliSkillsStatusResult>;\n    installCliSkills(args: SystemInstallCliSkillsArgs): Promise<SystemInstallCliSkillsResult>;\n    reloadConfig(): Promise<SystemReloadConfigResult>;\n    transcribeVoice(args: SystemVoiceTranscriptionArgs): Promise<SystemVoiceTranscriptionResult>;\n    updateExperiments(args: Experiments): Promise<SystemUpdateExperimentsResult>;\n    updateGeneralSettings(args: AppSettings): Promise<SystemUpdateGeneralSettingsResult>;\n    updateKeyboardSettings(args: AppKeybindingOverrides): Promise<SystemUpdateKeyboardSettingsResult>;\n    /** Report one onboarding funnel event to anonymous telemetry. */\n    onboardingEvent(args: OnboardingTelemetryEvent): Promise<{\n        ok: true;\n    }>;\n    /** Live agent state for onboarding: install, auth, and plan per provider. */\n    onboardingAgents(args?: SystemOnboardingArgs): Promise<SystemOnboardingAgentsResult>;\n    /** Candidate projects discovered on the host, ranked for onboarding. */\n    onboardingRepos(args?: SystemOnboardingReposArgs): Promise<SystemOnboardingReposResult>;\n    usageLimits(args?: SystemUsageLimitsArgs): Promise<SystemUsageLimitsResult>;\n    version(args?: SystemVersionArgs): Promise<SystemVersionResult>;\n}\n\ninterface TerminalThreadScope {\n    cwd?: never;\n    environmentId?: never;\n    hostId?: never;\n    kind: \"thread\";\n    threadId: string;\n}\ninterface TerminalEnvironmentScope {\n    environmentId: string;\n    cwd?: never;\n    hostId?: never;\n    kind: \"environment\";\n    threadId?: never;\n}\ninterface TerminalHostPathListScope {\n    /** Optional exact initial working-directory filter on the selected host. */\n    cwd?: string;\n    environmentId?: never;\n    hostId: string;\n    kind: \"host_path\";\n    threadId?: never;\n}\ninterface TerminalHostPathCreateScope {\n    /** Null starts in the selected host's home directory. */\n    cwd: string | null;\n    environmentId?: never;\n    hostId: string;\n    kind: \"host_path\";\n    threadId?: never;\n}\ntype TerminalListScope = TerminalThreadScope | TerminalEnvironmentScope | TerminalHostPathListScope;\ntype TerminalCreateScope = TerminalThreadScope | TerminalEnvironmentScope | TerminalHostPathCreateScope;\ninterface TerminalListArgs {\n    signal?: AbortSignal;\n    scope: TerminalListScope;\n}\ninterface TerminalCreateArgs {\n    cols: number;\n    rows: number;\n    scope: TerminalCreateScope;\n    start?: CreateTerminalRequest[\"start\"];\n    title?: string;\n}\ninterface TerminalTargetArgs {\n    terminalId: string;\n}\ninterface TerminalGetArgs extends TerminalTargetArgs {\n    signal?: AbortSignal;\n}\ninterface TerminalRenameArgs extends TerminalTargetArgs {\n    title: UpdateTerminalRequest[\"title\"];\n}\ninterface TerminalCloseArgs extends TerminalTargetArgs {\n    mode: \"force\" | \"if-clean\";\n}\ninterface TerminalInputArgs extends TerminalTargetArgs {\n    dataBase64: TerminalInputRequest[\"dataBase64\"];\n}\ninterface TerminalResizeArgs extends TerminalTargetArgs {\n    cols: TerminalResizeRequest[\"cols\"];\n    rows: TerminalResizeRequest[\"rows\"];\n}\ninterface TerminalOutputArgs extends TerminalTargetArgs {\n    limitChunks?: TerminalOutputQuery[\"limitChunks\"];\n    signal?: AbortSignal;\n    sinceSeq?: TerminalOutputQuery[\"sinceSeq\"];\n    tailBytes?: TerminalOutputQuery[\"tailBytes\"];\n}\ntype TerminalRestartArgs = TerminalTargetArgs;\ntype TerminalListResult = TerminalListResponse;\ntype TerminalCreateResult = TerminalSession;\ntype TerminalGetResult = TerminalSession;\ntype TerminalRenameResult = TerminalSession;\ntype TerminalCloseResult = TerminalSession;\ntype TerminalInputResult = TerminalSession;\ntype TerminalResizeResult = TerminalSession;\ntype TerminalOutputResult = TerminalOutputResponse;\ntype TerminalRestartResult = TerminalSession;\ninterface TerminalsArea {\n    close(args: TerminalCloseArgs): Promise<TerminalCloseResult>;\n    create(args: TerminalCreateArgs): Promise<TerminalCreateResult>;\n    get(args: TerminalGetArgs): Promise<TerminalGetResult>;\n    input(args: TerminalInputArgs): Promise<TerminalInputResult>;\n    list(args: TerminalListArgs): Promise<TerminalListResult>;\n    output(args: TerminalOutputArgs): Promise<TerminalOutputResult>;\n    rename(args: TerminalRenameArgs): Promise<TerminalRenameResult>;\n    /**\n     * Replace a terminal with a shell at the same scope, size, and title.\n     * The server serializes concurrent restarts and opens the replacement before\n     * closing the old session, so a failed open leaves the old terminal running.\n     * The original command is not replayed because terminal sessions do not\n     * persist launch commands. The replacement has a new terminal ID.\n     */\n    restart(args: TerminalRestartArgs): Promise<TerminalRestartResult>;\n    resize(args: TerminalResizeArgs): Promise<TerminalResizeResult>;\n}\n\ninterface ThreadListArgs {\n    archived?: boolean;\n    sectionId?: string;\n    hasParent?: boolean;\n    includeHidden?: boolean;\n    limit?: number;\n    offset?: number;\n    originKind?: ThreadListQuery[\"originKind\"];\n    originPluginId?: string;\n    parentThreadId?: string;\n    projectId?: string;\n    signal?: AbortSignal;\n    sourceThreadId?: string;\n    unsectioned?: boolean;\n}\ninterface ThreadSearchArgs extends ThreadSearchQuery {\n    signal?: AbortSignal;\n}\ninterface ThreadResolveMentionsArgs extends ResolveThreadMentionsRequest {\n    signal?: AbortSignal;\n}\ninterface ThreadGetArgs {\n    include?: ThreadGetQuery[\"include\"];\n    signal?: AbortSignal;\n    threadId: string;\n}\ntype ThreadGetResult = ThreadResponse | ThreadWithIncludesResponse;\ntype ThreadListResult = ThreadListResponse;\ntype ThreadSearchResult = ThreadSearchResponse;\ntype ThreadResolveMentionsResult = ResolveThreadMentionsResponse;\ninterface ThreadOutputResponse {\n    output: string | null;\n}\ntype ThreadMutationResult = ThreadResponse;\ntype ThreadSpawnResult = ThreadResponse;\ntype ThreadForkResult = ThreadResponse;\ntype ThreadInteractionGetResult = PendingInteraction;\ntype ThreadInteractionListResult = ThreadPendingInteractionsResponse;\ntype ThreadInteractionResolveResult = PendingInteraction;\ntype ThreadInteractionRespondResult = PendingInteraction;\ntype ThreadInteractionCancelResult = PendingInteraction;\ntype ThreadEventsListResult = ThreadEventRow[];\ntype ThreadEventWaitResult = ThreadEventRow | null;\ntype ThreadTimelineResult = ThreadTimelineResponse;\ntype ThreadArchiveResult = ThreadArchiveAllResponse;\ntype ThreadOpenResult = ThreadOpenResponse;\ntype ThreadPaneActionResult = ThreadPaneActionResponse;\ntype ThreadDeleteResult = {\n    ok: true;\n};\ntype ThreadSendResult = {\n    ok: true;\n};\ntype ThreadRateLimitRecoveryResult = ProviderRateLimitRecoveryStatus;\ntype ThreadContinueAfterRateLimitResult = ContinueAfterProviderRateLimitResponse;\ntype ThreadEditMessageResult = EditMessageResponse;\ntype ThreadStopResult = {\n    ok: true;\n};\ntype ThreadCompactResult = {\n    ok: true;\n};\ntype ThreadBannerActionResult = {\n    ok: true;\n};\ntype ThreadUnarchiveResult = {\n    ok: true;\n};\ntype ThreadArchiveAllResult = ThreadArchiveAllResponse;\ntype ThreadReadStateResult = ThreadResponse;\ntype ThreadPinOrderResult = ThreadListResponse;\ntype ThreadPromptHistoryResult = PromptHistoryResponse;\ntype ThreadQueuedMessagesResult = ThreadQueuedMessageListResponse;\ntype ThreadQueuedMessageCreateResult = ThreadQueuedMessage;\ntype ThreadQueuedMessageUpdateResult = ThreadQueuedMessage;\ntype ThreadQueuedMessageDeleteResult = {\n    ok: true;\n};\ntype ThreadQueuedMessageReorderResult = ThreadQueuedMessageListResponse;\ntype ThreadQueuedMessageSendResult = SendQueuedMessageResponse;\ntype ThreadQueuedMessageGroupBoundaryResult = ThreadQueuedMessageListResponse;\ntype ThreadTabsResult = ThreadTabsResponse;\ntype ThreadTabsUpdateResult = ThreadTabsResponse;\ntype ThreadStorageFilesResult = ThreadStorageFileListResponse;\ntype ThreadStoragePathsResult = ThreadStoragePathListResponse;\ntype ThreadChildSummaryResult = ThreadChildSummaryResponse;\ntype ThreadDefaultExecutionOptionsResult = ResolvedThreadExecutionOptions | null;\ntype ThreadConversationOutlineResult = ThreadConversationOutlineResponse;\ntype ThreadTimelineTurnSummaryDetailsResult = TimelineTurnSummaryDetailsResponse;\ninterface ThreadSpawnBaseArgs extends Omit<CreateThreadRequest, \"input\" | \"origin\" | \"originKind\" | \"startedOnBehalfOf\"> {\n    origin?: CreateThreadRequest[\"origin\"];\n    originKind?: CreateThreadRequest[\"originKind\"];\n    startedOnBehalfOf?: CreateThreadRequest[\"startedOnBehalfOf\"];\n}\ntype ThreadSpawnArgs = ThreadSpawnBaseArgs & ({\n    input: CreateThreadRequest[\"input\"];\n    prompt?: never;\n} | {\n    input?: never;\n    prompt: string;\n});\ninterface ThreadForkArgs extends Omit<ForkThreadRequest, \"origin\" | \"visibility\" | \"workspace\"> {\n    origin?: ForkThreadRequest[\"origin\"];\n    visibility?: ForkThreadRequest[\"visibility\"];\n    workspace?: ForkThreadRequest[\"workspace\"];\n}\ninterface ThreadUpdateArgs extends UpdateThreadRequest {\n    threadId: string;\n}\ninterface ThreadDeleteArgs extends DeleteThreadRequest {\n    threadId: string;\n}\ninterface ThreadSendArgs extends SendMessageRequest {\n    threadId: string;\n}\ninterface ThreadEditMessageArgs extends EditMessageRequest {\n    threadId: string;\n}\ninterface ThreadActionArgs {\n    threadId: string;\n}\ninterface ThreadContinueAfterRateLimitArgs extends ThreadActionArgs {\n    failedRequestId: string;\n    mode: NonNullable<ContinueAfterProviderRateLimitRequest[\"mode\"]>;\n}\ninterface ThreadStatusArgs extends ThreadActionArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadPromptHistoryArgs extends PromptHistoryQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadPinOrderArgs extends ReorderPinnedThreadRequest {\n    threadId: string;\n}\ninterface ThreadQueuedMessageArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadQueuedMessageCreateArgs extends CreateQueuedMessageRequest {\n    threadId: string;\n}\ninterface ThreadQueuedMessageUpdateArgs extends ThreadQueuedMessageTargetArgs, UpdateQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageTargetArgs {\n    queuedMessageId: string;\n    threadId: string;\n}\ninterface ThreadQueuedMessageSendArgs extends ThreadQueuedMessageTargetArgs, SendQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageReorderArgs extends ThreadQueuedMessageTargetArgs, ReorderQueuedMessageRequest {\n}\ninterface ThreadQueuedMessageGroupBoundaryArgs extends SetQueuedMessageGroupBoundaryRequest {\n    threadId: string;\n}\ninterface ThreadStorageFilesArgs extends ThreadStorageFilesQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadStoragePathsArgs extends ThreadStoragePathsQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadTimelineTurnSummaryDetailsArgs extends TimelineTurnSummaryDetailsQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadTabsUpdateArgs extends UpdateThreadTabsRequest {\n    threadId: string;\n}\ninterface ThreadOpenArgs {\n    threadId: string;\n    split?: ThreadOpenSplit;\n    file: ThreadOpenFile | null;\n}\ninterface ThreadPaneActionArgs {\n    action: ThreadPaneAction;\n    threadId: string;\n}\ninterface ThreadEventsListArgs {\n    afterSeq?: string;\n    limit?: string;\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadEventWaitArgs {\n    afterSeq?: string;\n    signal?: AbortSignal;\n    threadId: string;\n    type: string;\n    waitMs: string;\n}\ninterface ThreadTimelineArgs extends ThreadTimelineQuery {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadOutputArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadInteractionListArgs {\n    signal?: AbortSignal;\n    threadId: string;\n}\ninterface ThreadInteractionTargetArgs {\n    interactionId: string;\n    threadId: string;\n}\ninterface ThreadInteractionGetArgs extends ThreadInteractionTargetArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadInteractionResolveArgs extends ThreadInteractionTargetArgs {\n    resolution: PendingInteractionResolution;\n}\ninterface ThreadInteractionRespondArgs extends ThreadInteractionTargetArgs {\n    value: JsonValue$1;\n}\ntype ThreadWaitTarget = {\n    kind: \"status\";\n    status: ThreadStatus;\n} | {\n    kind: \"event\";\n    eventType: string;\n};\ninterface ThreadWaitArgs {\n    event?: string;\n    pollIntervalMs?: number;\n    signal?: AbortSignal;\n    status?: ThreadStatus;\n    threadId: string;\n    timeoutMs?: number;\n}\ntype ThreadWaitResult = {\n    event: NonNullable<ThreadEventWaitResult>;\n    matched: true;\n    target: Extract<ThreadWaitTarget, {\n        kind: \"event\";\n    }>;\n    threadId: string;\n} | {\n    matched: true;\n    target: Extract<ThreadWaitTarget, {\n        kind: \"status\";\n    }>;\n    thread: ThreadGetResult;\n    threadId: string;\n};\ninterface ThreadInteractionsArea {\n    cancel(args: ThreadInteractionTargetArgs): Promise<ThreadInteractionCancelResult>;\n    get(args: ThreadInteractionGetArgs): Promise<ThreadInteractionGetResult>;\n    list(args: ThreadInteractionListArgs): Promise<ThreadInteractionListResult>;\n    resolve(args: ThreadInteractionResolveArgs): Promise<ThreadInteractionResolveResult>;\n    respond(args: ThreadInteractionRespondArgs): Promise<ThreadInteractionRespondResult>;\n}\ninterface ThreadEventsArea {\n    list(args: ThreadEventsListArgs): Promise<ThreadEventsListResult>;\n    wait(args: ThreadEventWaitArgs): Promise<ThreadEventWaitResult>;\n}\ninterface ThreadQueuedMessagesArea {\n    create(args: ThreadQueuedMessageCreateArgs): Promise<ThreadQueuedMessageCreateResult>;\n    delete(args: ThreadQueuedMessageTargetArgs): Promise<ThreadQueuedMessageDeleteResult>;\n    list(args: ThreadQueuedMessageArgs): Promise<ThreadQueuedMessagesResult>;\n    reorder(args: ThreadQueuedMessageReorderArgs): Promise<ThreadQueuedMessageReorderResult>;\n    send(args: ThreadQueuedMessageSendArgs): Promise<ThreadQueuedMessageSendResult>;\n    setGroupBoundary(args: ThreadQueuedMessageGroupBoundaryArgs): Promise<ThreadQueuedMessageGroupBoundaryResult>;\n    update(args: ThreadQueuedMessageUpdateArgs): Promise<ThreadQueuedMessageUpdateResult>;\n}\ninterface ThreadTabsArea {\n    get(args: ThreadStatusArgs): Promise<ThreadTabsResult>;\n    update(args: ThreadTabsUpdateArgs): Promise<ThreadTabsUpdateResult>;\n}\ninterface ThreadsArea {\n    archive(args: ThreadActionArgs): Promise<ThreadArchiveResult>;\n    archiveAll(args: ThreadActionArgs): Promise<ThreadArchiveAllResult>;\n    childSummary(args: ThreadStatusArgs): Promise<ThreadChildSummaryResult>;\n    continueAfterRateLimit(args: ThreadContinueAfterRateLimitArgs): Promise<ThreadContinueAfterRateLimitResult>;\n    compact(args: ThreadActionArgs): Promise<ThreadCompactResult>;\n    cancelPlan(args: ThreadActionArgs): Promise<ThreadBannerActionResult>;\n    clearGoal(args: ThreadActionArgs): Promise<ThreadBannerActionResult>;\n    conversationOutline(args: ThreadStatusArgs): Promise<ThreadConversationOutlineResult>;\n    defaultExecutionOptions(args: ThreadStatusArgs): Promise<ThreadDefaultExecutionOptionsResult>;\n    delete(args: ThreadDeleteArgs): Promise<ThreadDeleteResult>;\n    editMessage(args: ThreadEditMessageArgs): Promise<ThreadEditMessageResult>;\n    events: ThreadEventsArea;\n    fork(args: ThreadForkArgs): Promise<ThreadForkResult>;\n    get(args: ThreadGetArgs): Promise<ThreadGetResult>;\n    interactions: ThreadInteractionsArea;\n    list(args?: ThreadListArgs): Promise<ThreadListResult>;\n    markRead(args: ThreadActionArgs): Promise<ThreadReadStateResult>;\n    markUnread(args: ThreadActionArgs): Promise<ThreadReadStateResult>;\n    open(args: ThreadOpenArgs): Promise<ThreadOpenResult>;\n    paneAction(args: ThreadPaneActionArgs): Promise<ThreadPaneActionResult>;\n    output(args: ThreadOutputArgs): Promise<ThreadOutputResponse>;\n    pin(args: ThreadActionArgs): Promise<ThreadMutationResult>;\n    promptHistory(args: ThreadPromptHistoryArgs): Promise<ThreadPromptHistoryResult>;\n    queuedMessages: ThreadQueuedMessagesArea;\n    rateLimitRecovery(args: ThreadStatusArgs): Promise<ThreadRateLimitRecoveryResult>;\n    reorderPinned(args: ThreadPinOrderArgs): Promise<ThreadPinOrderResult>;\n    resolveMentions(args: ThreadResolveMentionsArgs): Promise<ThreadResolveMentionsResult>;\n    search(args: ThreadSearchArgs): Promise<ThreadSearchResult>;\n    send(args: ThreadSendArgs): Promise<ThreadSendResult>;\n    spawn(args: ThreadSpawnArgs): Promise<ThreadSpawnResult>;\n    /**\n     * Stop active work and release the loaded agent runtime. This operation is\n     * idempotent and preserves thread history for a later resume.\n     */\n    stop(args: ThreadActionArgs): Promise<ThreadStopResult>;\n    tabs: ThreadTabsArea;\n    timeline(args: ThreadTimelineArgs): Promise<ThreadTimelineResult>;\n    timelineTurnSummaryDetails(args: ThreadTimelineTurnSummaryDetailsArgs): Promise<ThreadTimelineTurnSummaryDetailsResult>;\n    storageFiles(args: ThreadStorageFilesArgs): Promise<ThreadStorageFilesResult>;\n    storagePaths(args: ThreadStoragePathsArgs): Promise<ThreadStoragePathsResult>;\n    unarchive(args: ThreadActionArgs): Promise<ThreadUnarchiveResult>;\n    unpin(args: ThreadActionArgs): Promise<ThreadMutationResult>;\n    update(args: ThreadUpdateArgs): Promise<ThreadMutationResult>;\n    wait(args: ThreadWaitArgs): Promise<ThreadWaitResult>;\n}\n\ntype ThreadSectionCreateResult = ThreadSectionResponse;\ntype ThreadSectionUpdateResult = ThreadSectionMutationResponse;\ntype ThreadSectionDeleteResult = ThreadSectionMutationResponse;\ntype ThreadSectionListResult = ThreadSectionResponse[];\ninterface ThreadSectionListArgs {\n    signal?: AbortSignal;\n}\ninterface ThreadSectionsArea {\n    create(args: CreateThreadSectionRequest): Promise<ThreadSectionCreateResult>;\n    delete(args: DeleteThreadSectionRequest): Promise<ThreadSectionDeleteResult>;\n    list(args?: ThreadSectionListArgs): Promise<ThreadSectionListResult>;\n    update(args: UpdateThreadSectionRequest): Promise<ThreadSectionUpdateResult>;\n}\n\ninterface BbSdk extends BbRealtime {\n    environments: EnvironmentsArea;\n    files: FilesArea;\n    guide: GuideArea;\n    hosts: HostsArea;\n    projects: ProjectsArea;\n    plugins: PluginsArea;\n    providers: ProvidersArea;\n    skills: SkillsArea;\n    status: StatusArea;\n    system: SystemArea;\n    terminals: TerminalsArea;\n    theme: ThemeArea;\n    threadSections: ThreadSectionsArea;\n    threads: ThreadsArea;\n}\n\ninterface ExperimentalHostSignalContract<PayloadSchema extends StandardSchemaV1 = StandardSchemaV1> {\n    readonly payload: PayloadSchema;\n}\ntype ExperimentalHostSignals = Readonly<Record<string, ExperimentalHostSignalContract>>;\ninterface ExperimentalHostCallOptions {\n    readonly hostId: string;\n    readonly signal?: AbortSignal;\n}\ninterface ExperimentalHostClient<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}> {\n    call<MethodName extends keyof Contract & string>(method: MethodName, input: StandardSchemaV1InferInput<Contract[MethodName][\"input\"]>, options: ExperimentalHostCallOptions): Promise<PluginRpcResult<Contract[MethodName]>>;\n    /**\n     * Subscribe to unexpected exits of this plugin's worker on a host daemon.\n     * Graceful reload, disable, uninstall, and daemon shutdown do not emit this\n     * event. A later call starts a fresh worker.\n     */\n    experimental_onWorkerExit(handler: (event: {\n        readonly hostId: string;\n    }) => void | Promise<void>): () => void;\n    /** Subscribe to a validated, ephemeral signal from this plugin's host entry. */\n    experimental_onSignal<SignalName extends keyof Signals & string>(signal: SignalName, handler: (event: ExperimentalHostSignalEvent<Signals, SignalName>) => void | Promise<void>): () => void;\n}\ninterface ExperimentalHostSignalEvent<Signals extends ExperimentalHostSignals, SignalName extends keyof Signals & string> {\n    readonly hostId: string;\n    readonly payload: StandardSchemaV1InferOutput<Signals[SignalName][\"payload\"]>;\n}\ninterface ExperimentalHostPaths {\n    /** Persistent directory scoped to this plugin on this daemon. */\n    readonly dataDir: string;\n    /** Temporary directory scoped to this worker process. */\n    readonly tempDir: string;\n}\ntype ExperimentalHostWatchChangeType = \"create\" | \"update\" | \"delete\";\ninterface ExperimentalHostWatchChange {\n    readonly path: string;\n    readonly type: ExperimentalHostWatchChangeType;\n}\ntype ExperimentalHostWatchEvent = {\n    readonly kind: \"changed\";\n    readonly changes: readonly ExperimentalHostWatchChange[];\n} | {\n    readonly kind: \"rescan-required\";\n} | {\n    readonly kind: \"watch-error\";\n    readonly message: string;\n};\ninterface ExperimentalHostWatchOptions {\n    /** Absolute directory observed by the daemon's native watcher service. */\n    readonly rootPath: string;\n    /** Root-relative ignore entries using the native watcher syntax. */\n    readonly ignoredPaths?: readonly string[];\n    /** Quiet period before one coalesced delivery. Defaults to 75 ms. */\n    readonly debounceMs?: number;\n    /** Maximum time changes may wait. Defaults to 500 ms. */\n    readonly maxWaitMs?: number;\n}\ninterface ExperimentalHostWatchSubscription {\n    dispose(): Promise<void>;\n}\ninterface ExperimentalHostWorkerLease {\n    /** Release this worker-retention lease. Safe to call more than once. */\n    dispose(): Promise<void>;\n}\ntype ExperimentalHostWatchListener = (event: ExperimentalHostWatchEvent) => void | Promise<void>;\ninterface ExperimentalHostRpcContext<Signals extends ExperimentalHostSignals = {}> {\n    /** Aborted when this request is cancelled or its worker is disposed. */\n    readonly signal: AbortSignal;\n    /** Aborted once for the lifetime of this worker process. */\n    readonly lifecycle: {\n        readonly signal: AbortSignal;\n    };\n    readonly experimental_paths: ExperimentalHostPaths;\n    /** Publish a validated, ephemeral event to this plugin's server entry. */\n    experimental_emitSignal<SignalName extends keyof Signals & string>(signal: SignalName, payload: StandardSchemaV1InferInput<Signals[SignalName][\"payload\"]>): Promise<void>;\n    /** Observe raw filesystem changes through the daemon's native watcher. */\n    experimental_watch(options: ExperimentalHostWatchOptions, listener: ExperimentalHostWatchListener): Promise<ExperimentalHostWatchSubscription>;\n    /**\n     * Keep this worker alive after the current call finishes. Active calls and\n     * filesystem watches already retain it; use this only for other background\n     * work. The daemon may stop an unretained worker after an idle period.\n     */\n    experimental_retainWorker(): ExperimentalHostWorkerLease;\n}\ntype ExperimentalHostRpcHandlers<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}> = {\n    [MethodName in keyof Contract]: (input: StandardSchemaV1InferOutput<Contract[MethodName][\"input\"]>, context: ExperimentalHostRpcContext<Signals>) => StandardSchemaV1InferInput<Contract[MethodName][\"output\"]> | Promise<StandardSchemaV1InferInput<Contract[MethodName][\"output\"]>>;\n};\ninterface ExperimentalHostEntry<Contract extends PluginRpcContract = PluginRpcContract, Signals extends ExperimentalHostSignals = {}> {\n    readonly experimental_apiVersion: 1;\n    readonly contract: Contract;\n    readonly experimental_signals?: Signals;\n    readonly handlers: ExperimentalHostRpcHandlers<Contract, Signals>;\n    readonly dispose?: () => void | Promise<void>;\n}\n/** Define the single host executable exported by `bb.host`. */\ndeclare function experimental_defineHostEntry<const Contract extends PluginRpcContract, const Signals extends ExperimentalHostSignals = {}>(args: {\n    contract: Contract;\n    experimental_signals?: Signals;\n    handlers: ExperimentalHostRpcHandlers<Contract, Signals>;\n    dispose?: () => void | Promise<void>;\n}): ExperimentalHostEntry<Contract, Signals>;\n\n/**\n * The backend plugin API contract — the `bb` object handed to a plugin's\n * `server.ts` factory (`export default function plugin(bb: BbPluginApi)`).\n *\n * Types only: the implementation lives in the BB server\n * (apps/server/src/services/plugins/plugin-api.ts), which imports these\n * shapes so the contract and the implementation cannot drift. Plugin authors\n * import them type-only (`import type { BbPluginApi } from\n * \"@get-bb/plugin-sdk\"`); the import is erased when BB loads the file.\n *\n * Runtime classes stay host-side. NeedsConfigurationError in particular is\n * matched by NAME, so plugin code needs no runtime import:\n * `throw Object.assign(new Error(msg), { name: \"NeedsConfigurationError\" })`.\n */\ninterface PluginLogger {\n    debug(message: string): void;\n    info(message: string): void;\n    warn(message: string): void;\n    error(message: string): void;\n}\n/**\n * Declarative settings descriptors (`bb.settings.define`). Deliberately plain\n * data — not zod — so the host can render settings forms and the CLI can\n * parse values without executing plugin code.\n */\ntype PluginSettingDescriptor = {\n    type: \"string\";\n    label: string;\n    description?: string;\n    /** Stored in a 0600 file under <dataDir>/plugins/<id>/secrets/, never in the db or sent to the frontend. */\n    secret?: true;\n    default?: string;\n} | {\n    type: \"boolean\";\n    label: string;\n    description?: string;\n    default?: boolean;\n} | {\n    type: \"select\";\n    label: string;\n    description?: string;\n    options: string[];\n    default?: string;\n} | {\n    type: \"project\";\n    label: string;\n    description?: string;\n    default?: string;\n};\ntype PluginSettingDescriptors = Record<string, PluginSettingDescriptor>;\ntype PluginSettingValue = string | boolean;\n/** `default` present → non-optional value; absent → `T | undefined`. */\ntype PluginSettingsValues<Ds extends Record<string, PluginSettingDescriptor>> = {\n    [K in keyof Ds]: Ds[K] extends {\n        default: string | boolean;\n    } ? PluginSettingValueOf<Ds[K]> : PluginSettingValueOf<Ds[K]> | undefined;\n};\ntype PluginSettingValueOf<D extends PluginSettingDescriptor> = D extends {\n    type: \"boolean\";\n} ? boolean : string;\ninterface PluginSettingsHandle<Ds extends Record<string, PluginSettingDescriptor>> {\n    /** Load-safe: callable inside the factory. */\n    get(): Promise<PluginSettingsValues<Ds>>;\n    /** Fires after values change through the settings route/CLI. */\n    onChange(listener: (next: PluginSettingsValues<Ds>, prev: PluginSettingsValues<Ds>) => void): void;\n}\ninterface PluginSettings {\n    define<Ds extends Record<string, PluginSettingDescriptor>>(descriptors: Ds): PluginSettingsHandle<Ds>;\n}\ninterface PluginKvStorage {\n    get<T>(key: string): Promise<T | undefined>;\n    set(key: string, value: unknown): Promise<void>;\n    delete(key: string): Promise<void>;\n    list(prefix?: string): Promise<string[]>;\n}\ninterface PluginStorage {\n    /** Namespaced JSON key-value rows in bb.db; values ≤256KB each. */\n    kv: PluginKvStorage;\n    /**\n     * Open (or reuse the path of) the plugin's own SQLite database at\n     * <dataDir>/plugins/<id>/data.db — the server's better-sqlite3, WAL mode,\n     * busy_timeout 5000. Handles are host-tracked and closed on\n     * dispose/reload; a closed handle throws on use.\n     */\n    database(): Database.Database;\n    /**\n     * Ordered-statement migration helper: statement index = migration id in a\n     * `_bb_migrations` table; unapplied statements run in one transaction.\n     * Append-only — never reorder or edit shipped statements.\n     */\n    migrate(db: Database.Database, statements: string[]): void;\n}\n/**\n * Thread lifecycle events a plugin can observe (design §4.5). Observe-only:\n * handlers run fire-and-forget after the transition is applied and can never\n * block or veto it. `thread` is the same public DTO GET /threads/:id serves.\n */\ninterface PluginThreadEventPayloads {\n    /** Fired after a thread row is created. */\n    \"thread.created\": {\n        thread: ThreadResponse;\n    };\n    /** Fired when a thread transitions into `active`. */\n    \"thread.active\": {\n        thread: ThreadResponse;\n    };\n    /** Fired when a thread transitions into `idle`. `lastAssistantText` is\n     * assembled the same way GET /threads/:id/output is. */\n    \"thread.idle\": {\n        thread: ThreadResponse;\n        lastAssistantText: string | null;\n    };\n    /** Fired when a thread transitions into `error`. `error` is the latest\n     * system/error event message, when one exists. */\n    \"thread.failed\": {\n        thread: ThreadResponse;\n        error: string | null;\n    };\n    /** Fired after a thread is archived (including cascade archives). */\n    \"thread.archived\": {\n        thread: ThreadResponse;\n    };\n    /** Fired after a thread is soft-deleted. */\n    \"thread.deleted\": {\n        thread: ThreadResponse;\n    };\n}\ntype PluginThreadEventName = keyof PluginThreadEventPayloads;\ntype PluginThreadEventHandler<E extends PluginThreadEventName> = (payload: PluginThreadEventPayloads[E]) => void | Promise<void>;\ntype PluginHttpAuthMode = \"local\" | \"token\" | \"none\";\ntype PluginHttpHandler = (context: Context) => Response | Promise<Response>;\ninterface PluginHttp {\n    /**\n     * Register an HTTP route, mounted at\n     * `/api/v1/plugins/<id>/http/<path>`. Auth modes (default \"local\"):\n     * - \"local\": Origin/Host must be a local BB app origin; non-GET requires\n     *   content-type application/json (forces a CORS preflight).\n     * - \"token\": requires the per-plugin token (`bb plugin token <id>`) via\n     *   the x-bb-plugin-token header or ?token=.\n     * - \"none\": no checks — only for signature-verified webhooks.\n     */\n    route(method: string, path: string, handler: PluginHttpHandler, opts?: {\n        auth?: PluginHttpAuthMode;\n    }): void;\n}\ninterface PluginRpc {\n    /**\n     * Register a Standard Schema-driven rpc contract and its inferred handlers,\n     * served at POST\n     * `/api/v1/plugins/<id>/rpc/<method>` with \"local\" auth semantics. The\n     * host validates input before invocation and output before strict JSON\n     * serialization. The response is `{ ok: true, result }` or\n     * `{ ok: false, error: { code, message, issues? } }`.\n     */\n    register<Contract extends PluginRpcContract>(contract: Contract, handlers: PluginRpcHandlers<Contract>): void;\n}\ninterface PluginRealtime {\n    /**\n     * Broadcast an ephemeral `plugin-signal` WS message\n     * `{ pluginId, channel, payload }` to every connected client (V1 has no\n     * per-channel subscriptions). `payload` must be JSON-serializable;\n     * `undefined` is normalized to `null`. Nothing is persisted.\n     */\n    publish(channel: string, payload: unknown): void;\n}\ninterface PluginBackground {\n    /**\n     * Register a long-lived background service. `start` runs after the\n     * factory completes and should resolve when `signal` aborts\n     * (dispose/reload/disable/shutdown). A crash restarts it with capped\n     * exponential backoff; throwing NeedsConfigurationError marks the plugin\n     * `needs-configuration` and stops restarting until the next load.\n     */\n    service(name: string, service: {\n        start(signal: AbortSignal): void | Promise<void>;\n    }): void;\n    /**\n     * Register a cron schedule (5-field expression, server-local time). The\n     * durable row keyed (pluginId, name) is upserted at load; the periodic\n     * sweep claims due rows with a CAS on next_run_at, but only while this\n     * plugin is loaded. Failures land in last_status/last_error, visible in\n     * `bb plugin list`.\n     */\n    schedule(name: string, cron: string, fn: () => void | Promise<void>): void;\n}\ninterface PluginCliCommandInfo {\n    name: string;\n    summary: string;\n    usage: string;\n}\n/** Context forwarded from the invoking CLI when known; all fields optional. */\ninterface PluginCliContext {\n    cwd?: string;\n    threadId?: string;\n    projectId?: string;\n    /** Aborted when the invoking CLI HTTP request disconnects. */\n    signal?: AbortSignal;\n}\ntype PluginInteractionCancelReason = \"user\" | \"request-aborted\" | \"thread-stopped\" | \"thread-deleted\" | \"plugin-disposed\" | \"server-restarted\" | \"timeout\";\ntype PluginInteractionResult = {\n    outcome: \"submitted\";\n    value: JsonValue;\n} | {\n    outcome: \"cancelled\";\n    reason: PluginInteractionCancelReason;\n};\ninterface PluginInteractionRequest {\n    threadId: string;\n    rendererId: string;\n    title: string;\n    payload: JsonValue;\n    /** Defaults to ten minutes; capped at one hour. */\n    timeoutMs?: number;\n}\ninterface PluginCliResult {\n    exitCode: number;\n    stdout?: string;\n    stderr?: string;\n}\n/**\n * Maximum combined UTF-8 bytes accepted from plugin CLI stdout and stderr.\n * This is the shared source of truth for production and the testing harness.\n */\ndeclare const PLUGIN_CLI_OUTPUT_MAX_BYTES: number;\ninterface PluginCliOutputLimitError {\n    code: \"plugin_cli_output_too_large\";\n    message: string;\n    maxBytes: number;\n    stdoutBytes: number;\n    stderrBytes: number;\n    totalBytes: number;\n}\n/** Normalized host result returned by the plugin CLI HTTP/testing boundary. */\ninterface PluginCliExecutionResult {\n    exitCode: number;\n    stdout: string;\n    stderr: string;\n    error?: PluginCliOutputLimitError;\n}\ninterface PluginCliRegistration {\n    /** Top-level command name (`bb <name> …`): lowercase [a-z0-9-]+, and not\n     * a core bb command (see RESERVED_BB_CLI_COMMANDS in the server). */\n    name: string;\n    summary: string;\n    /** Subcommand metadata rendered in help and the plugin-commands skill\n     * without executing plugin code. Parsing argv is plugin-owned. */\n    commands?: PluginCliCommandInfo[];\n    run(argv: string[], ctx: PluginCliContext): PluginCliResult | Promise<PluginCliResult>;\n}\ninterface PluginCli {\n    /**\n     * Register this plugin's `bb` subcommand. One registration per factory\n     * execution; a repeated call is rejected. Core bb commands always win\n     * name collisions; reserved names are rejected at registration.\n     */\n    register(registration: PluginCliRegistration): void;\n}\n/** Per-turn context handed to bb.agents context providers (design §4.4). */\n/** MCP-style content parts a native tool may return (design §4.4). */\ntype PluginAgentToolContentPart = {\n    type: \"text\";\n    text: string;\n} | {\n    type: \"image\";\n    data: string;\n    mimeType: string;\n};\ntype PluginAgentToolResult = string | {\n    content: PluginAgentToolContentPart[];\n    isError?: boolean;\n};\n/** Per-call context handed to a native tool's execute (design §4.4). */\ninterface PluginAgentToolContext {\n    threadId: string;\n    projectId: string;\n    /** The tool-call request's abort signal (aborts if the daemon round-trip\n     * is torn down mid-call). */\n    signal: AbortSignal;\n}\n/**\n * Native timeline labels for a plugin tool, keyed by BB's own timeline row\n * status. This is experimental: BB may refine its presentation contract\n * before the field is stabilized.\n */\ninterface PluginAgentToolExperimentalStatusLabels {\n    /** Label shown while the tool call is pending. */\n    pending: string;\n    /** Label shown after the tool call completes successfully. */\n    completed: string;\n}\ninterface PluginAgentToolRegistrationBase {\n    /** Tool name shown to the model: [a-zA-Z0-9_-]+, unique across plugins,\n     * and not a built-in dynamic tool (see RESERVED_AGENT_TOOL_NAMES in the\n     * server). */\n    name: string;\n    description: string;\n    /**\n     * Optional usage snippet appended to the thread instructions whenever\n     * this tool is in the session's tool set (mirrors the built-in\n     * update_environment_directory guidance). Limited to 4096 characters.\n     */\n    instructions?: string;\n    /**\n     * Optional native timeline labels. When omitted, BB shows the standard\n     * tool name and arguments (for example, `Ran tool search_docs …`). Labels\n     * apply only while the call is pending and after successful completion;\n     * approval, error, and interruption states keep BB's standard rendering.\n     */\n    experimental_statusLabels?: PluginAgentToolExperimentalStatusLabels;\n}\n/** Stable, plain-data context resolved by the server for one agent session. */\ninterface PluginAgentConfigurationContext {\n    thread: {\n        id: string;\n        title: string | null;\n        parentThreadId: string | null;\n        sourceThreadId: string | null;\n    };\n    project: {\n        id: string;\n        kind: \"standard\" | \"personal\";\n        name: string;\n        gitRemoteUrl: string | null;\n    };\n    environment: {\n        id: string;\n        name: string | null;\n        path: string | null;\n        workspaceProvisionType: \"unmanaged\" | \"managed-worktree\" | \"personal\";\n        branchName: string | null;\n    };\n    host: {\n        id: string;\n        name: string;\n    };\n    provider: {\n        id: string;\n        model: string;\n        /**\n         * The provider's declared capabilities, so a plugin can decide what to\n         * contribute from what the provider says it does rather than from its own\n         * copy of a provider id list.\n         */\n        capabilities: {\n            /**\n             * The provider ships its own user-question affordance and bb routes it\n             * into the pending-interaction path. A plugin offering the same thing\n             * should withhold it here, or the model gets two ways to ask once.\n             */\n            supportsNativeUserQuestion: boolean;\n        };\n    };\n    /** How the thread was spawned. A side chat is the builtin side-chat\n     * plugin's fork: `{ kind: \"fork\", pluginId: \"side-chat\" }`. */\n    origin: {\n        kind: \"fork\" | null;\n        pluginId: string | null;\n    };\n}\n/** Object form of a {@link PluginAgentConfiguration} tools entry: selects a\n * registered tool and overrides the parameter schema advertised to the\n * provider for this resolution only. */\ninterface PluginAgentToolSelection {\n    /** Name of a tool registered by this plugin via `registerTool`. */\n    name: string;\n    /** JSON-schema object (root `type: \"object\"`, JSON-serializable, at most\n     * 128 KiB serialized) sent to the provider in place of the registered\n     * parameter schema. Execution-side validation still runs the registered\n     * parameters, so the override must only narrow what the registered schema\n     * already accepts. Recursive local `$ref` chains are rejected. */\n    parameters: Record<string, unknown>;\n}\n/** Per-resolution selection returned by {@link PluginAgents.configure}. */\ninterface PluginAgentConfiguration {\n    /** Tool names registered by this plugin, or {@link PluginAgentToolSelection}\n     * entries to also override a tool's advertised parameter schema for this\n     * resolution. Duplicate or unknown names, or an invalid override, reject\n     * this plugin's complete selection for the resolution. */\n    tools: Array<string | PluginAgentToolSelection>;\n    /** Skill frontmatter names from this plugin's manifest skill roots.\n     * Duplicate or unknown names reject this plugin's complete selection. */\n    skills: string[];\n    /** Optional dynamic instructions. Output is truncated to 4096 characters. */\n    instructions?: string;\n}\n/**\n * Permission modes a provider can run a session in — BB's own permission\n * vocabulary, ordered least (\"accept-edits\") to most (\"full\") privileged.\n */\ntype PluginProviderPermissionMode = \"accept-edits\" | \"auto\" | \"full\";\n/**\n * Coarse reasoning-effort ladder entries, ordered lowest to highest. The\n * declared ladder is a fallback only: precise per-model reasoning sets come\n * from the provider's model list at runtime.\n */\ntype PluginProviderReasoningLevel = \"none\" | \"low\" | \"medium\" | \"high\" | \"xhigh\" | \"ultracode\" | \"max\" | \"ultra\";\n/**\n * Composer actions a provider supports, by name only. The skills\n * slash-command typeahead is universal — BB injects skills into every\n * provider — so it is implicit and never declared, and the composer owns the\n * trigger syntax (`/plan `, `/goal `) rather than each declaration repeating\n * it.\n */\ntype PluginProviderComposerAction = \"plan\" | \"goal\";\n/**\n * Pre-session capability facts about a provider. A capability earns a field\n * here only when it passes BOTH tests: (1) a consumer outside the provider's\n * own plugin needs the fact, and (2) the fact is needed before / without a\n * live session (picker rendering, route gating, cross-plugin tool\n * composition — including with the host offline). Every boolean is a\n * provider-native fact — the provider implements the feature; the flag only\n * tells external consumers it exists. Everything else is a handshake fact the\n * bridge reports at `initialize`, where it cannot drift from behavior.\n */\ninterface PluginProviderCapabilities {\n    /** The provider accepts a fast/priority service-tier choice — shows the\n     * service-tier toggle in the picker. */\n    supportsServiceTier: boolean;\n    /** The provider ships its own native ask-user-question tool — the\n     * ask-user-question plugin skips registering its duplicate. */\n    supportsNativeUserQuestion: boolean;\n    /**\n     * How completely the provider can clone a session: `\"none\"` (not at all),\n     * `\"tip\"` (only the current end, so thread fork works but edit-past-message\n     * rewind cannot), or `\"checkpoint\"` (recreate the session at an earlier\n     * point, which rewind needs). Gates the fork and edit-past-message\n     * affordances. The bridge reports the same fact at `initialize`, where it\n     * may narrow this declaration but never widen it.\n     */\n    fork: ProviderFork;\n    /** The provider accepts an explicit context-compaction request — gates the\n     * compact affordance. */\n    supportsManualCompaction: boolean;\n    /** The provider keeps its own thread archive, so BB mirrors archive and\n     * unarchive onto it instead of tracking the state only in bb's own rows. */\n    supportsThreadArchive: boolean;\n    /** The provider stores a thread name of its own, so BB forwards renames to\n     * it. */\n    supportsThreadRename: boolean;\n    /** The provider can run BB's Workflow tools — gates the workflows opt-in on\n     * new threads. */\n    supportsWorkflows: boolean;\n    /** Permission modes the provider can actually run in. Non-empty, no\n     * duplicates. */\n    permissionModes: readonly PluginProviderPermissionMode[];\n    /** The provider's coarse fallback reasoning ladder (see\n     * {@link PluginProviderReasoningLevel}). Non-empty, no duplicates. */\n    reasoningLevels: readonly PluginProviderReasoningLevel[];\n}\n/**\n * One provider this plugin contributes to BB's provider registry.\n *\n * Ids are stable public identifiers — thread rows and routes reference them —\n * and are collision-rejected: a declaration whose id matches another plugin's\n * live registration, or reserves a first-party provider it does not own, is\n * refused. Registrations are replaced wholesale on plugin reload, like every\n * other plugin surface.\n *\n * A declaration is metadata only. The implementation is the plugin's own\n * provider bridge, named by `bb.providerBridge` in the manifest and built into\n * the artifact BB ships to hosts — declaring a provider without one is\n * refused, because the picker entry would exist and no turn on it could ever\n * run.\n */\ninterface PluginProviderDeclaration {\n    /** Stable provider id: 2–64 characters of lowercase letters, digits, and\n     * \"-\", starting with a letter or digit. Existing ids must never change —\n     * threads persist them. */\n    id: string;\n    /** Picker display name: 1–80 characters, non-blank. */\n    displayName: string;\n    /**\n     * Optional picker icon, in the same grammar as `bb.branding.icon`: either a\n     * named host glyph (`\"Zap\"`) or a plugin-relative path starting with `\"./\"`\n     * (`\"./icons/agent.svg\"`). Paths follow the manifest entry-path escape rules\n     * — no leading \"/\", no \"..\" segments, no backslashes.\n     */\n    icon?: string;\n    /** Pre-session capability facts (see the declaration tests on\n     * {@link PluginProviderCapabilities}). */\n    capabilities: PluginProviderCapabilities;\n    /** Composer actions this provider supports. No duplicates; may be empty\n     * (the universal skills typeahead is implicit). */\n    composerActions: readonly PluginProviderComposerAction[];\n}\ninterface PluginAgents {\n    /**\n     * Select this plugin's statically registered tools and manifest skills for\n     * each thread/session resolution, with optional dynamic instructions. The\n     * callback is synchronous and runs at `thread.start` / `turn.submit`; it\n     * never rebuilds registrations. Exactly one callback may be registered per\n     * factory execution. A throw, malformed result, duplicate id, unknown id,\n     * or more than 256 tool/skill ids fails closed for this plugin only.\n     *\n     * Tools take effect when the provider session is next started or resumed;\n     * an already-running session is not hot-mutated. Instructions follow the\n     * same boundary: a live provider session keeps the instructions it was\n     * constructed with, and a changed selection applies when the session is\n     * next constructed. Skill changes follow BB's environment runtime policy:\n     * a busy runtime keeps its current catalog until a safe relaunch. Side chats\n     * are ordinary plugin-owned forks here — read `origin` to detect them — and\n     * their returned tool, skill, and dynamic-instruction selections apply at the\n     * same boundaries.\n     */\n    configure(provider: (context: PluginAgentConfigurationContext) => PluginAgentConfiguration): void;\n    /**\n     * Register a native dynamic tool (design §4.4). `parameters` is either a\n     * zod schema (validated per call; execute receives the parsed value) or a\n     * plain JSON-schema object (no validation; execute receives the raw\n     * arguments as `unknown`). Tool-set changes apply on the NEXT session\n     * start — a tool registered mid-session is not hot-added to running\n     * provider sessions. A second registration of the same name within this\n     * plugin is rejected; a name already registered by another plugin is\n     * rejected and surfaced as this plugin's status detail. Recursive local\n     * JSON Schema `$ref` chains are rejected because some model providers reject\n     * the complete tool list when any one tool contains them.\n     */\n    registerTool<Schema extends z.ZodType>(tool: PluginAgentToolRegistrationBase & {\n        parameters: Schema;\n        execute(params: z.output<Schema>, ctx: PluginAgentToolContext): PluginAgentToolResult | Promise<PluginAgentToolResult>;\n    }): void;\n    registerTool(tool: PluginAgentToolRegistrationBase & {\n        /** Raw JSON-schema escape hatch; params arrive unvalidated. */\n        parameters: Record<string, unknown>;\n        execute(params: unknown, ctx: PluginAgentToolContext): PluginAgentToolResult | Promise<PluginAgentToolResult>;\n    }): void;\n    /**\n     * Contribute a dynamic section appended to thread instructions. The\n     * provider runs when a thread's runtime command config is resolved\n     * (thread.start / turn.submit); return null to contribute nothing for\n     * that resolution. A live provider session keeps the instructions it was\n     * constructed with — a changed contribution takes effect when the\n     * provider session is next constructed (thread start or resume after a\n     * daemon restart, environment switch, or provider restart), never\n     * mid-session. Must be synchronous and fast — it sits on the\n     * thread-start path. Output longer than 4096 characters is truncated; a\n     * throwing provider is logged against the plugin and contributes nothing.\n     * A repeated registration within one factory execution is rejected.\n     */\n    contributeInstructions(provider: (ctx: {\n        threadId: string;\n        projectId: string;\n    }) => string | null): void;\n    /**\n     * Register an agent provider this plugin contributes (experimental — see\n     * docs/api_to_audit.md before relying on it). The declaration is validated\n     * at call time; the provider joins the server's provider registry when the\n     * plugin load commits and then appears in provider listings. Ids are stable\n     * and collision-rejected: an id already claimed by a core provider or\n     * another plugin fails this plugin's load. A plugin may register several\n     * providers and may re-register after `dispose()` (a settings-driven\n     * re-declaration); registrations are replaced wholesale on plugin reload,\n     * like every other surface. The disposer removes the registration.\n     */\n    experimental_registerProvider(declaration: PluginProviderDeclaration): {\n        dispose(): void;\n    };\n}\ntype PluginMentionTrigger = \"@\" | \"#\" | \"$\" | \"!\" | \"~\";\n/** Search context handed to a mention provider (design §4.9). `projectId`/\n * `threadId` are null when the composer has not committed one yet. */\ninterface PluginMentionSearchContext {\n    trigger: PluginMentionTrigger;\n    query: string;\n    projectId: string | null;\n    threadId: string | null;\n}\n/** One row a mention provider returns from `search`. `id` is the provider's\n * own item id — the host namespaces it before it reaches the wire. */\ninterface PluginMentionItem {\n    id: string;\n    title: string;\n    subtitle?: string;\n    icon?: string;\n}\ninterface PluginMentionProviderRegistration {\n    /** Unique within this plugin: [a-zA-Z0-9_-]+ (no \":\" — the host composes\n     * wire item ids as \"<providerId>:<itemId>\"). */\n    id: string;\n    /** Section label shown above this provider's rows in the mention menu. */\n    label: string;\n    /**\n     * Composer trigger characters this provider should answer. Omit to use the\n     * default `@` mention trigger. Valid triggers are `@`, `#`, `$`, `!`, and `~`.\n     */\n    triggers?: readonly PluginMentionTrigger[];\n    /**\n     * Runs server-side as the user types after one of this provider's triggers\n     * in the composer. Each call is time-boxed (2s) and failure-isolated: a slow\n     * or throwing provider contributes an empty list — it can never break the\n     * mention menu.\n     */\n    search(ctx: PluginMentionSearchContext): PluginMentionItem[] | Promise<PluginMentionItem[]>;\n    /**\n     * Resolves one picked item into agent context, called once per unique\n     * item at message send time. The returned `context` is attached to the\n     * message as an agent-visible (user-hidden) prompt input. Throwing blocks\n     * the send with a visible error.\n     */\n    resolve(itemId: string): {\n        context: string;\n    } | Promise<{\n        context: string;\n    }>;\n}\ninterface PluginUi {\n    /** Block until the app submits or cancels a plugin-owned composer form. */\n    requestInput(request: PluginInteractionRequest, options?: {\n        signal?: AbortSignal;\n    }): Promise<PluginInteractionResult>;\n    /**\n     * Register a mention provider for the shipped app's composer (design §4.9).\n     * Providers default to the `@` trigger and may opt into `#`, `$`, `!`, or\n     * `~` with `triggers`. Items group under `label` in the mention menu; a\n     * picked item becomes a `{ kind: \"plugin\" }` mention resource whose context\n     * is resolved once at send time. Multiple providers per plugin; ids must be\n     * unique within the plugin.\n     */\n    registerMentionProvider(provider: PluginMentionProviderRegistration): void;\n}\ninterface PluginEvents {\n    /**\n     * Add a thread lifecycle listener. Multiple listeners for the same event are\n     * additive and run independently in registration order.\n     */\n    on<E extends PluginThreadEventName>(event: E, handler: PluginThreadEventHandler<E>): void;\n}\ninterface PluginServerApi {\n    /**\n     * This BB server's own loopback base URL (e.g. \"http://127.0.0.1:38886\"),\n     * which serves the SPA + /api + /ws. For plugins that proxy or relay\n     * traffic back to the server itself (e.g. a tunnel). Bind-gated like\n     * `bb.sdk`: reading it before the server is listening throws, so prefer\n     * reading it from handlers, services, and timers.\n     */\n    readonly loopbackBaseUrl: string;\n}\ninterface PluginSharedPortTunnelIdentity {\n    /** Gate routing label assigned to this machine. */\n    label: string;\n    /** Gate apex without a scheme, e.g. \"getbb.app\". */\n    baseDomain: string;\n}\ninterface PluginHosts {\n    /** Create the owning plugin's typed client for its singular `bb.host` entry. */\n    experimental_client<Contract extends PluginRpcContract, Signals extends ExperimentalHostSignals = {}>(args: {\n        contract: Contract;\n        experimental_signals?: Signals;\n    }): ExperimentalHostClient<Contract, Signals>;\n    /**\n     * Ensure this enrolled host has a gate label and return its read-only public\n     * identity. The daemon chooses the trusted gate and desired label; plugins\n     * cannot influence either credential-bearing destination.\n     */\n    ensureSharedPortTunnel(hostId: string): Promise<PluginSharedPortTunnelIdentity>;\n    /**\n     * Replace this plugin's desired shared-loopback ports for one host. The\n     * server aggregates declarations, owns generations, and delivers the\n     * resulting set to that host's daemon. Tunnel identity is deliberately not\n     * accepted here: it is owned by the daemon's trusted enrollment.\n     */\n    declareSharedPorts(hostId: string, ports: readonly number[]): void;\n}\ninterface PluginStatusApi {\n    /**\n     * Mark this plugin `needs-configuration` (with a message shown in\n     * `bb plugin list` and the UI) instead of failing — e.g. a factory or\n     * service that finds no API key configured. Cleared on the next load;\n     * saving settings does not auto-reload in V1, so ask the user to\n     * `bb plugin reload <id>` after configuring.\n     */\n    needsConfiguration(message: string): void;\n}\n/**\n * The API object handed to a plugin's factory (design §4). Implemented by\n * the BB server; this contract is what plugin `server.ts` files compile\n * against.\n */\ninterface BbPluginApi {\n    /** The plugin's own id (namespaces storage, routes, commands). */\n    readonly pluginId: string;\n    /** Leveled, plugin-scoped logger. */\n    readonly log: PluginLogger;\n    /** Declarative settings (design §4.2). */\n    readonly settings: PluginSettings;\n    /** Namespaced KV + per-plugin database (design §4.3). */\n    readonly storage: PluginStorage;\n    /** HTTP routes under /api/v1/plugins/<id>/http/* (design §4.6). */\n    readonly http: PluginHttp;\n    /** RPC methods under /api/v1/plugins/<id>/rpc/<method> (design §4.6). */\n    readonly rpc: PluginRpc;\n    /** Ephemeral push to connected frontends (design §4.7). */\n    readonly realtime: PluginRealtime;\n    /** Long-lived services + cron schedules (design §4.8). */\n    readonly background: PluginBackground;\n    /** Agent-facing `bb` CLI subcommand (design §4.4). */\n    readonly cli: PluginCli;\n    /** Per-turn agent context contributions (design §4.4). */\n    readonly agents: PluginAgents;\n    /** Host-rendered UI contributions (design §4.9). */\n    readonly ui: PluginUi;\n    /** Additive plugin lifecycle listeners (design §4.5). */\n    readonly events: PluginEvents;\n    /** Plugin-reported status (needs-configuration). */\n    readonly status: PluginStatusApi;\n    /** Read-only facts about the running server (loopback base URL). */\n    readonly server: PluginServerApi;\n    /** Server-to-daemon host control-plane declarations. */\n    readonly hosts: PluginHosts;\n    /**\n     * The full BB SDK, bound to this server over loopback (design §4.1).\n     * Bind-gated: reading this before the host binds the SDK throws. The real\n     * server binds it before loading plugins, so it is available from the\n     * moment factories run there — but isolated harnesses may not, so prefer\n     * using it from handlers, services, and timers for portability.\n     * `threads.spawn` defaults `origin` to \"plugin\" and `originPluginId` to\n     * this plugin's id so spawned threads are attributed automatically.\n     */\n    readonly sdk: BbSdk;\n    /**\n     * Register cleanup to run on reload/disable/shutdown. Hooks run LIFO.\n     * The sanctioned place to clear timers and close connections.\n     */\n    onDispose(hook: () => void | Promise<void>): void;\n}\n\nexport { PLUGIN_CLI_OUTPUT_MAX_BYTES, defineRpcContract, experimental_defineHostEntry };\nexport type { BbContext, BbNavigate, BbPluginApi, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, ExperimentalHostCallOptions, ExperimentalHostClient, ExperimentalHostEntry, ExperimentalHostPaths, ExperimentalHostRpcContext, ExperimentalHostRpcHandlers, ExperimentalHostSignalContract, ExperimentalHostSignalEvent, ExperimentalHostSignals, ExperimentalHostWatchChange, ExperimentalHostWatchChangeType, ExperimentalHostWatchEvent, ExperimentalHostWatchListener, ExperimentalHostWatchOptions, ExperimentalHostWatchSubscription, ExperimentalHostWorkerLease, JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAgentConfiguration, PluginAgentConfigurationContext, PluginAgentToolContentPart, PluginAgentToolContext, PluginAgentToolExperimentalStatusLabels, PluginAgentToolRegistrationBase, PluginAgentToolResult, PluginAgentToolSelection, PluginAgents, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginBackground, PluginCli, PluginCliCommandInfo, PluginCliContext, PluginCliExecutionResult, PluginCliOutputLimitError, PluginCliRegistration, PluginCliResult, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginEvents, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginHosts, PluginHttp, PluginHttpAuthMode, PluginHttpHandler, PluginInteractionCancelReason, PluginInteractionRequest, PluginInteractionResult, PluginKvStorage, PluginLogger, PluginMentionItem, PluginMentionProviderRegistration, PluginMentionSearchContext, PluginMentionTrigger, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageActionThreadPanelOptions, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderCapabilities, PluginProviderComposerAction, PluginProviderDeclaration, PluginProviderIconRegistration, PluginProviderPermissionMode, PluginProviderReasoningLevel, PluginRealtime, PluginRealtimeConnectionState, PluginRpc, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginServerApi, PluginSettingDescriptor, PluginSettingDescriptors, PluginSettingValue, PluginSettings, PluginSettingsHandle, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSettingsValues, PluginSharedPortTunnelIdentity, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginStatusApi, PluginStorage, PluginThreadEventHandler, PluginThreadEventName, PluginThreadEventPayloads, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, PluginUi, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps };\n";
 
 export const PLUGIN_SDK_APP_DTS = "// Portable type declarations for `@get-bb/plugin-sdk`. Unpublished BB\n// workspace contracts are flattened; public subpaths may reuse the\n// package root without requiring any other @bb/* package.\n//\n// Confused by the API, or need a symbol that isn't here? Clone the BB repo\n// and read the real source: https://github.com/get-bb/bb\n\nimport * as react from 'react';\nimport { ComponentType, ReactNode } from 'react';\nimport { z } from 'zod';\n\n/** A JSON-safe path segment reported by a Standard Schema validation issue. */\ntype PluginRpcIssuePathSegment = string | number;\n/** Validator-neutral validation detail carried by an RPC error envelope. */\ninterface PluginRpcValidationIssue {\n    message: string;\n    path?: PluginRpcIssuePathSegment[];\n}\n/** Stable wire error categories for plugin RPC. */\ntype PluginRpcErrorCode = \"invalid_json\" | \"invalid_input\" | \"handler_error\" | \"invalid_output\" | \"non_json_result\" | \"unknown_method\";\n/** Structured RPC failure returned as `{ ok: false, error }`. */\ninterface PluginRpcError {\n    code: PluginRpcErrorCode;\n    message: string;\n    issues?: PluginRpcValidationIssue[];\n}\n/**\n * The validator-neutral subset of Standard Schema v1 used by plugin RPC.\n * Zod 4 schemas implement this interface directly; other validators can do\n * the same without becoming part of BB's public protocol.\n */\ninterface StandardSchemaV1<Input = unknown, Output = Input> {\n    readonly \"~standard\": {\n        readonly version: 1;\n        readonly vendor: string;\n        readonly validate: (value: unknown) => StandardSchemaV1Result<Output> | Promise<StandardSchemaV1Result<Output>>;\n        readonly types?: {\n            readonly input: Input;\n            readonly output: Output;\n        };\n    };\n}\ntype StandardSchemaV1Result<Output> = {\n    readonly value: Output;\n    readonly issues?: undefined;\n} | {\n    readonly issues: readonly StandardSchemaV1Issue[];\n};\ninterface StandardSchemaV1Issue {\n    readonly message: string;\n    readonly path?: PropertyKey | readonly (PropertyKey | {\n        readonly key: PropertyKey;\n    })[];\n}\ntype StandardSchemaV1InferInput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"input\"];\ntype StandardSchemaV1InferOutput<Schema extends StandardSchemaV1> = NonNullable<Schema[\"~standard\"][\"types\"]>[\"output\"];\ninterface PluginRpcMethodContract<InputSchema extends StandardSchemaV1 = StandardSchemaV1, OutputSchema extends StandardSchemaV1 = StandardSchemaV1> {\n    readonly input: InputSchema;\n    readonly output: OutputSchema;\n}\ntype PluginRpcContract = Readonly<Record<string, PluginRpcMethodContract>>;\ntype PluginRpcHandlers<Contract extends PluginRpcContract> = {\n    [Method in keyof Contract]: (input: StandardSchemaV1InferOutput<Contract[Method][\"input\"]>) => StandardSchemaV1InferInput<Contract[Method][\"output\"]> | Promise<StandardSchemaV1InferInput<Contract[Method][\"output\"]>>;\n};\ntype PluginRpcCallInput<Method extends PluginRpcMethodContract> = StandardSchemaV1InferInput<Method[\"input\"]>;\ntype PluginRpcCallArgs<Method extends PluginRpcMethodContract> = null extends PluginRpcCallInput<Method> ? [input?: PluginRpcCallInput<Method>] : [input: PluginRpcCallInput<Method>];\ntype PluginRpcResult<Method extends PluginRpcMethodContract> = StandardSchemaV1InferOutput<Method[\"output\"]>;\n\ndeclare const reasoningLevelSchema: z.ZodEnum<{\n    none: \"none\";\n    low: \"low\";\n    medium: \"medium\";\n    high: \"high\";\n    xhigh: \"xhigh\";\n    ultracode: \"ultracode\";\n    max: \"max\";\n    ultra: \"ultra\";\n}>;\ntype ReasoningLevel = z.infer<typeof reasoningLevelSchema>;\ndeclare const serviceTierSchema: z.ZodEnum<{\n    default: \"default\";\n    fast: \"fast\";\n}>;\ntype ServiceTier = z.infer<typeof serviceTierSchema>;\ndeclare const permissionModeSchema: z.ZodEnum<{\n    full: \"full\";\n    auto: \"auto\";\n    \"accept-edits\": \"accept-edits\";\n}>;\ntype PermissionMode = z.infer<typeof permissionModeSchema>;\ndeclare const promptInputSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{\n    visibility: z.ZodOptional<z.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z.ZodLiteral<\"text\">;\n    text: z.ZodString;\n    mentions: z.ZodDefault<z.ZodArray<z.ZodObject<{\n        start: z.ZodNumber;\n        end: z.ZodNumber;\n        resource: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDiscriminatedUnion<[z.ZodObject<{\n            kind: z.ZodLiteral<\"thread\">;\n            threadId: z.ZodString;\n            projectId: z.ZodOptional<z.ZodString>;\n            label: z.ZodString;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"project\">;\n            projectId: z.ZodString;\n            label: z.ZodString;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"section\">;\n            sectionId: z.ZodString;\n            label: z.ZodString;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"path\">;\n            source: z.ZodEnum<{\n                workspace: \"workspace\";\n                \"thread-storage\": \"thread-storage\";\n            }>;\n            entryKind: z.ZodEnum<{\n                file: \"file\";\n                directory: \"directory\";\n            }>;\n            path: z.ZodString;\n            label: z.ZodString;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"command\">;\n            trigger: z.ZodEnum<{\n                \"/\": \"/\";\n            }>;\n            name: z.ZodString;\n            source: z.ZodEnum<{\n                command: \"command\";\n                skill: \"skill\";\n            }>;\n            origin: z.ZodEnum<{\n                user: \"user\";\n                project: \"project\";\n                builtin: \"builtin\";\n            }>;\n            label: z.ZodString;\n            argumentHint: z.ZodNullable<z.ZodString>;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"plugin\">;\n            pluginId: z.ZodString;\n            icon: z.ZodOptional<z.ZodNullable<z.ZodString>>;\n            itemId: z.ZodString;\n            label: z.ZodString;\n        }, z.core.$strip>], \"kind\">>;\n    }, z.core.$strip>>>;\n}, z.core.$strip>, z.ZodObject<{\n    visibility: z.ZodOptional<z.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z.ZodLiteral<\"image\">;\n    url: z.ZodString;\n}, z.core.$strip>, z.ZodObject<{\n    visibility: z.ZodOptional<z.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z.ZodLiteral<\"localImage\">;\n    path: z.ZodString;\n}, z.core.$strip>, z.ZodObject<{\n    visibility: z.ZodOptional<z.ZodEnum<{\n        \"agent-only\": \"agent-only\";\n    }>>;\n    type: z.ZodLiteral<\"localFile\">;\n    path: z.ZodString;\n    name: z.ZodOptional<z.ZodString>;\n    sizeBytes: z.ZodOptional<z.ZodNumber>;\n    mimeType: z.ZodOptional<z.ZodString>;\n}, z.core.$strip>], \"type\">;\ntype PromptInput = z.infer<typeof promptInputSchema>;\n\ndeclare const createThreadEnvironmentArgsSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{\n    type: z.ZodLiteral<\"reuse\">;\n    environmentId: z.ZodString;\n}, z.core.$strip>, z.ZodObject<{\n    type: z.ZodLiteral<\"host\">;\n    hostId: z.ZodOptional<z.ZodString>;\n    workspace: z.ZodDiscriminatedUnion<[z.ZodObject<{\n        type: z.ZodLiteral<\"unmanaged\">;\n        path: z.ZodNullable<z.ZodString>;\n        branch: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{\n            kind: z.ZodLiteral<\"existing\">;\n            name: z.ZodString;\n        }, z.core.$strict>, z.ZodObject<{\n            kind: z.ZodLiteral<\"new\">;\n            baseBranch: z.ZodString;\n        }, z.core.$strict>], \"kind\">>;\n    }, z.core.$strip>, z.ZodObject<{\n        type: z.ZodLiteral<\"managed-worktree\">;\n        baseBranch: z.ZodDiscriminatedUnion<[z.ZodObject<{\n            kind: z.ZodLiteral<\"named\">;\n            name: z.ZodString;\n        }, z.core.$strip>, z.ZodObject<{\n            kind: z.ZodLiteral<\"default\">;\n        }, z.core.$strip>], \"kind\">;\n    }, z.core.$strip>, z.ZodObject<{\n        type: z.ZodLiteral<\"personal\">;\n    }, z.core.$strip>], \"type\">;\n}, z.core.$strip>, z.ZodObject<{\n    type: z.ZodLiteral<\"project-default\">;\n}, z.core.$strip>], \"type\">;\ntype CreateThreadEnvironmentArgs = z.infer<typeof createThreadEnvironmentArgsSchema>;\n\ndeclare const createExecutionInputSourcesSchema: z.ZodObject<{\n    providerId: z.ZodOptional<z.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    model: z.ZodOptional<z.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    serviceTier: z.ZodOptional<z.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    reasoningLevel: z.ZodOptional<z.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n    permissionMode: z.ZodOptional<z.ZodEnum<{\n        explicit: \"explicit\";\n        \"client-preference\": \"client-preference\";\n    }>>;\n}, z.core.$strict>;\ntype CreateExecutionInputSources = z.infer<typeof createExecutionInputSourcesSchema>;\n\n/**\n * A value that survives a JSON round trip without coercion or data loss.\n *\n * Host boundaries still validate values at runtime because TypeScript cannot\n * exclude non-finite numbers and plugin bundles can bypass static types.\n */\ntype JsonValue = string | number | boolean | null | JsonValue[] | {\n    [key: string]: JsonValue;\n};\n\n/**\n * The `@get-bb/plugin-sdk/app` contract (plugin design §5.2) — pure types with no\n * side effects. The BB app imports these to keep its real implementation in\n * sync (`satisfies PluginSdkApp`). Plugin authors import the same shapes through\n * `@get-bb/plugin-sdk/app`.\n *\n * Per-slot props are versioned contracts: additive-only within an SDK major.\n */\n/** Props passed to a `homepageSection` component. */\ninterface PluginHomepageSectionProps {\n    /** Project in view on the compose surface; null when none is selected. */\n    projectId: string | null;\n}\n/**\n * Props passed to a `settingsSection` component.\n *\n * Deliberately empty in V1; versioned additive like the other slot props.\n */\ninterface PluginSettingsSectionProps {\n}\n/** Props passed to a `navPanel` component (it owns its whole route). */\ninterface PluginNavPanelProps {\n    /**\n     * The route remainder after the panel root, \"\" at the root. The panel's\n     * route is `/plugins/<pluginId>/<path>/*`, so a deep link like\n     * `/plugins/notes/notes/work/ideas.md` renders the panel with\n     * `subPath: \"work/ideas.md\"`. Navigate within the panel via\n     * `useBbNavigate().toPluginPanel(path, { subPath })` — browser\n     * back/forward then walks panel-internal history.\n     */\n    subPath: string;\n}\n/**\n * Props passed to a panel tab opened by a `threadPanelAction`.\n *\n * This slot is rendered only for an existing thread. Use\n * `experimental_newThreadPanelAction` for the root New thread screen.\n */\ninterface PluginThreadPanelProps {\n    threadId: string;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\n/** Props passed to a panel tab opened by `experimental_newThreadPanelAction`. */\ninterface PluginNewThreadPanelProps {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * The JSON value the action's `openPanel` call passed (round-tripped\n     * through persistence, so the tab restores across reloads); null when the\n     * action opened the panel without params.\n     */\n    params: JsonValue | null;\n}\ninterface PluginPendingInteractionView {\n    id: string;\n    threadId: string;\n    title: string;\n    payload: JsonValue;\n    createdAt: number;\n    expiresAt: number | null;\n}\ninterface PluginPendingInteractionProps {\n    interaction: PluginPendingInteractionView;\n    submit(value: JsonValue): Promise<void>;\n    cancel(): Promise<void>;\n}\n/**\n * Props for a `sidebarFooterAction` — host-rendered (no plugin component).\n * Deliberately empty; the registration's `run` carries the behavior.\n */\ninterface PluginSidebarFooterActionProps {\n}\n/**\n * Props passed to an `experimental_threadList` component — the sidebar's\n * scrolling thread area, replaced wholesale by one plugin.\n */\ninterface PluginThreadListProps {\n    /** The thread the route currently shows; null on non-thread routes. */\n    activeThreadId: string | null;\n    /** The project the route currently shows; null when none is selected. */\n    activeProjectId: string | null;\n    /** True on phone-width viewports and coarse pointers. */\n    isCompactViewport: boolean;\n    /**\n     * Call after the user opens a thread. It closes the mobile sidebar drawer,\n     * and it clears the host search field on every viewport. Always call it, or\n     * the sidebar stays in search mode after the thread opens.\n     */\n    onNavigate: () => void;\n    /**\n     * The host search field's current text, or \"\" when the field is closed.\n     * The host owns that field, so a plugin list filters by this rather than\n     * shipping a second search box.\n     */\n    searchQuery: string;\n    /**\n     * BB's thread list, bound to this sidebar instance. Render it to delegate\n     * conditionally without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Props passed to an `experimental_threadHeaderAction` component, rendered in\n * the thread header's action row.\n */\ninterface PluginThreadHeaderActionProps {\n    /**\n     * The thread this header belongs to. Never null: the slot is not rendered\n     * on the compose screen or other non-thread routes. A split layout renders\n     * one header per pane, so the component mounts once per visible thread,\n     * each with its own id — keep per-thread state in the component, never in a\n     * module-level singleton.\n     */\n    threadId: string;\n    projectId: string;\n    /**\n     * True on phone-width viewports and coarse pointers. Collapse to an\n     * icon-sized control when it is true — the row is short.\n     */\n    isCompactViewport: boolean;\n}\n/**\n * Where a file being opened by a `fileOpener` lives. `path` semantics follow\n * the source: workspace paths are relative to the environment's worktree,\n * thread-storage paths are relative to the thread's storage root, host paths\n * are absolute on the thread's host.\n */\ninterface PluginFileOpenerSource {\n    kind: \"workspace\" | \"host\" | \"thread-storage\";\n    threadId: string | null;\n    environmentId: string | null;\n    projectId: string | null;\n}\n/** Props passed to a `fileOpener` component (rendered as a panel file tab). */\ninterface PluginFileOpenerProps {\n    path: string;\n    source: PluginFileOpenerSource;\n    /**\n     * BB's file preview, bound to this file. Render it to delegate conditionally\n     * without re-entering plugin replacement resolution.\n     *\n     * @experimental Audit before relying on this as a stable contract.\n     */\n    experimental_Original: ComponentType;\n}\n/**\n * Message context passed to a `messageDirective` component — the assistant\n * (or nested agent) message that contained the directive.\n */\ninterface PluginMessageDirectiveMessage {\n    id: string;\n    threadId: string;\n    turnId: string | null;\n    projectId: string | null;\n}\n/**\n * Open a worktree-relative file in the host's workspace file viewer. Returns\n * true when the host accepted the path; false when the path is invalid or the\n * viewer declined it.\n */\ntype PluginMessageDirectiveOpenWorkspaceFile = (path: string) => boolean;\n/**\n * Props passed to a `messageDirective` component. Attributes are untrusted\n * strings parsed from the directive; the plugin validates its own fields.\n */\ninterface PluginMessageDirectiveProps {\n    /** Parsed, untrusted directive attributes (e.g. `{ file: \"demo.html\" }`). */\n    attributes: Readonly<Record<string, string>>;\n    /** Original directive source text (useful for diagnostics / crash fallback). */\n    source: string;\n    message: PluginMessageDirectiveMessage;\n    /**\n     * Opens a worktree-relative file in the host's workspace file viewer. Null\n     * when the message surface has no workspace viewer available.\n     */\n    openWorkspaceFile: PluginMessageDirectiveOpenWorkspaceFile | null;\n}\ninterface PluginHomepageSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    component: ComponentType<PluginHomepageSectionProps>;\n}\ninterface PluginSettingsSectionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Optional host-rendered section heading. */\n    title?: string;\n    /**\n     * Optional one-line host-rendered subheading under `title`, in the built-in\n     * SettingsSection idiom (ignored when `title` is absent).\n     */\n    description?: string;\n    component: ComponentType<PluginSettingsSectionProps>;\n}\ninterface PluginNavPanelRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /** URL segment under `/plugins/<pluginId>/`; letters, digits, `-`, `_`. */\n    path: string;\n    component: ComponentType<PluginNavPanelProps>;\n    /**\n     * Optional presentational component rendered at the trailing edge of this\n     * panel's sidebar row. It receives no props so it can own a narrow live\n     * value through the ordinary SDK hooks without coupling that state to the\n     * host sidebar. The host does not mount it on compact viewports and clips it\n     * to a small, single-line box on wider viewports. It shares the trailing\n     * action column, fading out for the host's options button on hover or focus;\n     * do not render controls or rely on unbounded content here.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_sidebarAccessory?: ComponentType;\n    /**\n     * Optional component rendered on the right side of the shared title bar\n     * (e.g. a sync button or a count). Contained separately from the body: a\n     * throwing headerContent is hidden without breaking the title bar.\n     */\n    headerContent?: ComponentType<PluginNavPanelProps>;\n}\n/**\n * Context handed to a `threadPanelAction`'s `run`.\n *\n * The action is thread-only and is never offered on the root New thread\n * screen, so `threadId` is always present.\n */\ninterface PluginThreadPanelActionContext {\n    /** The thread whose panel launcher invoked the action. */\n    threadId: string;\n    /**\n     * Open a tab in the thread's side panel rendering this action's\n     * `component`. `title` labels the tab (default: the action's `title`);\n     * `params` must be JSON-serializable — it is persisted with the tab and\n     * reaches the component as its `params` prop. Opening with params\n     * identical to an already-open tab of this action focuses that tab\n     * (updating its title) instead of duplicating it. May be called more than\n     * once (different params ⇒ multiple tabs) or not at all.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\ninterface PluginThreadPanelActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /**\n     * Icon hint (BB icon name) used when the plugin ships no logo; the\n     * launcher row and opened tabs prefer the plugin's logo.\n     */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginThreadPanelProps>;\n    /**\n     * How the host frames the tab content. \"padded\" (default) wraps the\n     * component in the panel's scroll container with standard padding —\n     * right for document-like content. \"flush\" gives the component the full\n     * tab area (no padding, definite height, no host scrolling) — right for\n     * app-like content that manages its own layout, such as\n     * `ThreadChat`.\n     */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action: call your RPC methods, show a\n     * toast, and/or open panel tabs via `context.openPanel`. Omitted =\n     * immediately open a panel tab with defaults. Errors (sync or async) are\n     * contained and logged; they never break the launcher.\n     */\n    run?(context: PluginThreadPanelActionContext): void | Promise<void>;\n}\n/** Context handed to an `experimental_newThreadPanelAction`'s `run`. */\ninterface PluginNewThreadPanelActionContext {\n    /** Project selected in the root composer; null in projectless compose. */\n    projectId: string | null;\n    /**\n     * Open a tab in the root New thread screen's side panel rendering this\n     * action's `component`. The title, params, deduplication, and error\n     * semantics match `threadPanelAction`.\n     */\n    openPanel(options?: {\n        title?: string;\n        params?: JsonValue;\n    }): void;\n}\n/** Registration for the root New thread screen's panel Actions list. */\ninterface PluginNewThreadPanelActionRegistration {\n    /** Unique within this slot for the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label of the action row in the panel's new-tab launcher. */\n    title: string;\n    /** Icon hint (BB icon name) used when the plugin ships no logo. */\n    icon?: string;\n    /** Rendered inside every panel tab this action opens. */\n    component: ComponentType<PluginNewThreadPanelProps>;\n    /** Host framing; matches `threadPanelAction`. */\n    layout?: \"padded\" | \"flush\";\n    /**\n     * Runs when the user activates the action. Omitted = immediately open a\n     * panel tab with defaults. Errors are contained and logged.\n     */\n    run?(context: PluginNewThreadPanelActionContext): void | Promise<void>;\n}\ninterface PluginPendingInteractionRegistration {\n    /** Matches `rendererId` passed to `bb.ui.requestInput`. */\n    id: string;\n    component: ComponentType<PluginPendingInteractionProps>;\n}\n/** Context handed to a `sidebarFooterAction`'s `run`. */\ninterface PluginSidebarFooterActionContext {\n    /**\n     * Navigate to this plugin's detail page in Tools, where declarative settings\n     * and `settingsSection` slots render.\n     */\n    openSettings(): void;\n}\n/**\n * An icon button in the app sidebar footer (next to Settings / bug report).\n * Host-rendered for consistent chrome — plugins supply icon, label, and\n * `run` behavior only.\n */\ninterface PluginSidebarFooterActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip and accessible label for the icon button. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon: string;\n    /**\n     * Runs when the user activates the action (e.g. call `openSettings()`,\n     * open a panel via other surfaces, toast). Errors (sync or async) are\n     * contained and logged; they never break the sidebar.\n     */\n    run(context: PluginSidebarFooterActionContext): void | Promise<void>;\n}\n/**\n * The one status bb would paint for a thread, already resolved through the\n * host's precedence (attention before work; plan and goal before the generic\n * spinner). Draw your own glyph for it — the SDK ships no status component.\n *\n * Treat an unrecognized value as \"none\": bb adds kinds over time, and an\n * older plugin must degrade to drawing nothing rather than throwing.\n *\n * \"draft\" and \"working-draft\" are never reported here: an unsubmitted composer\n * draft is per-client state the host reads per row, which an array-wide view\n * cannot. A thread holding a draft reports whatever it would report without\n * one.\n */\ntype PluginSidebarThreadIndicator = \"unread-error\" | \"waiting-for-input\" | \"working-draft\" | \"workflow\" | \"background-agent\" | \"background-command\" | \"plan-mode\" | \"goal\" | \"runtime\" | \"draft\" | \"unread-success\" | \"none\";\n/**\n * How a thread's environment presents its workspace: a worktree bb manages,\n * a worktree the user manages, or anything else (a plain checkout).\n */\ntype PluginSidebarWorkspaceKind = \"managed-worktree\" | \"unmanaged-worktree\" | \"other\";\n/** Live work counts on a thread. All zero means nothing is running. */\ninterface PluginSidebarThreadActivity {\n    workflows: number;\n    backgroundAgents: number;\n    backgroundCommands: number;\n    planMode: number;\n    goals: number;\n}\n/**\n * One thread in the sidebar's live view.\n *\n * A deliberate copy of the fields a sidebar needs — not a re-export of the\n * host's internal thread row type, which changes whenever the app needs a\n * field. Timestamps are epoch milliseconds.\n */\ninterface PluginSidebarThread {\n    id: string;\n    projectId: string;\n    /** Null while a thread is still unnamed; pair with `titleFallback`. */\n    title: string | null;\n    titleFallback: string | null;\n    /** The thread this one was forked from or spawned under; null at the root. */\n    parentThreadId: string | null;\n    sectionId: string | null;\n    /** How this thread came to exist under its parent; null for root threads. */\n    originKind: \"fork\" | null;\n    /** The plugin that spawned it, or null for non-plugin origins. */\n    originPluginId: string | null;\n    /** The agent provider this thread runs on, e.g. \"codex\", \"claude-code\". */\n    providerId: string;\n    /** The agent is blocked on the user: an approval or a question. */\n    hasPendingInteraction: boolean;\n    activity: PluginSidebarThreadActivity;\n    indicator: PluginSidebarThreadIndicator;\n    /**\n     * The host's accessible label for `indicator`, e.g. \"Thread needs user\n     * input\"; null when the indicator is \"none\". Use it for `aria-label` so\n     * screen-reader text stays consistent across sidebars.\n     */\n    indicatorLabel: string | null;\n    isUnread: boolean;\n    isPinned: boolean;\n    isArchived: boolean;\n    environment: {\n        id: string | null;\n        name: string | null;\n        branchName: string | null;\n        workspaceDisplayKind: PluginSidebarWorkspaceKind;\n    } | null;\n    /**\n     * The machine this thread's work runs on, with the name resolved for you.\n     * Null when the thread has no environment yet, or when its host is not in\n     * the known-hosts list. Useful where a thread has no branch to show — a\n     * personal-project thread has a machine but no worktree.\n     */\n    host: {\n        id: string;\n        name: string;\n    } | null;\n    createdAt: number;\n    updatedAt: number;\n    lastReadAt: number | null;\n    latestAttentionAt: number;\n}\n/**\n * The pull request for a thread's branch, narrowed to what a sidebar row\n * needs. `attention` is bb's rolled-up \"does this need you\" signal, so a row\n * can colour a badge without reading checks, review, and mergeability itself.\n */\ninterface PluginSidebarPullRequest {\n    number: number;\n    title: string;\n    url: string;\n    state: \"draft\" | \"open\" | \"merged\" | \"closed\";\n    attention: \"checks_failed\" | \"checks_pending\" | \"changes_requested\" | \"review_requested\" | \"conflicts\" | \"blocked\" | \"draft\" | \"ready_to_merge\" | \"merged\" | \"closed\" | \"none\";\n}\ninterface PluginSidebarThreadPullRequestState {\n    /** True while the first lookup for this thread's environment is in flight. */\n    isLoading: boolean;\n    /**\n     * The pull request, or null when the branch has none, the thread has no\n     * environment, or the lookup could not run (a git-host hiccup). A row should\n     * treat null as \"nothing to show\", never as an error.\n     */\n    pullRequest: PluginSidebarPullRequest | null;\n}\n/** One project in the sidebar's live view. */\ninterface PluginSidebarProject {\n    id: string;\n    name: string;\n    /** True for the implicit personal project. */\n    isPersonal: boolean;\n}\ninterface PluginSidebarThreadsState {\n    status: \"loading\" | \"ready\" | \"error\";\n    threads: readonly PluginSidebarThread[];\n    projects: readonly PluginSidebarProject[];\n}\n/**\n * Act on threads from a plugin surface. Every method routes to the host's own\n * flow, so optimistic updates, toasts, dialogs, pane closing, and route repair\n * behave exactly as they do in the built-in sidebar. Unknown thread ids are\n * ignored by `open` and rejected by the rest.\n */\ninterface PluginSidebarThreadActions {\n    /**\n     * Navigate to a thread. `split: true` applies bb's split placement rules —\n     * a right split by default, focus when the thread is already open, replace\n     * at the pane cap — and falls back to plain navigation where splits are off.\n     */\n    open(threadId: string, options?: {\n        split?: boolean;\n    }): void;\n    /**\n     * Go to the new-thread screen. Passing `projectId` also makes that project\n     * the composer's selection, so the thread is created where you asked.\n     */\n    openNewThread(options?: {\n        projectId?: string;\n        focusPrompt?: boolean;\n    }): void;\n    setPinned(threadId: string, pinned: boolean): Promise<void>;\n    setRead(threadId: string, read: boolean): Promise<void>;\n    /** Silent rename — no dialog. For inline editing in your own row. */\n    rename(threadId: string, title: string): Promise<void>;\n    /** Archives the thread AND its children, closing any panes showing them. */\n    archive(threadId: string): void;\n    /**\n     * Opens bb's delete confirmation, which counts child threads first. Deletion\n     * is destructive and recursive, so the host owns the confirmation: there is\n     * deliberately no silent `delete`.\n     */\n    requestDelete(threadId: string): void;\n}\n/**\n * Render a plugin component in the thread header's action row.\n *\n * The frontend sibling of the backend `bb.ui.registerThreadAction`, which\n * renders a host-owned button and runs server-side. Use that one for \"do a\n * thing\"; use this one when the control must draw live state.\n *\n * The host places it at the left end of the action row, before the workspace\n * button, git actions, the panel toggle, maximize, and close. That row is a\n * 48px chrome row with 28px controls: render one inline control that fits, and\n * put anything taller in a portalled popover.\n */\ninterface PluginThreadHeaderActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Names the region the host wraps around your component (a labelled group).\n     * It does NOT label your control: an icon-only button still needs its own\n     * accessible name.\n     */\n    title: string;\n    component: ComponentType<PluginThreadHeaderActionProps>;\n}\n/** One pane's place in the split layout, as fractions of the split area. */\ninterface PluginSidebarSplitPane {\n    paneId: string;\n    rect: {\n        x: number;\n        y: number;\n        width: number;\n        height: number;\n    };\n    /** This pane holds the thread the row represents. */\n    isMe: boolean;\n    isFocused: boolean;\n}\n/**\n * Drag-to-split support for one row, plus where that thread currently sits in\n * the split layout.\n */\ninterface PluginSidebarThreadSplit {\n    /**\n     * Spread onto the row's interactive element. Carries the pointer handler\n     * that starts a split drag; empty when splits are unavailable, so spreading\n     * it is always safe.\n     *\n     * The host owns every rule: the gesture engages only once the pointer leaves\n     * the sidebar toward the main area (so a list with its own drag-to-reorder\n     * keeps working), an edge drop splits, a center drop replaces, an\n     * already-open thread focuses its pane, and the pane cap coerces a split\n     * into a replace.\n     */\n    splitProps: {\n        onPointerDown?: (event: react.PointerEvent<HTMLElement>) => void;\n    };\n    /**\n     * False on compact viewports, when the user disabled splits, and for an\n     * unknown thread id. Gate any \"open in split\" affordance you draw on it.\n     */\n    isAvailable: boolean;\n    /**\n     * Where this thread sits in the split layout, or null when it is not open in\n     * one (including single-pane layouts). Draw a mini-map, a tint, or nothing.\n     */\n    layout: {\n        panes: readonly PluginSidebarSplitPane[];\n    } | null;\n}\n/**\n * Replace the sidebar's thread list with a plugin component.\n *\n * Unlike every other slot, this one is EXCLUSIVE: two lists cannot share one\n * scroll area. Registering activates the replacement while the plugin is\n * enabled. If multiple plugins register one, the first in deterministic slot\n * order is active by default; removing it reveals the next. The user can pin\n * BB's list or a specific provider under Settings → Appearance. A plugin can\n * also use its own setting and render `experimental_Original` conditionally.\n * An absent or crashing replacement falls back to BB's list rather than\n * leaving the user with no sidebar.\n *\n * The plugin gets the scrolling list and nothing else. The New-thread button,\n * the search field, the plugin nav rows, and the footer stay host-rendered in\n * every sidebar — they are shared surfaces (other plugins live in two of\n * them), and a replaced list must not be able to remove them.\n */\ninterface PluginThreadListRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label shown in Settings → Appearance and capability details. */\n    title: string;\n    /** Optional one-line description shown with the provider choice. */\n    description?: string;\n    component: ComponentType<PluginThreadListProps>;\n}\n/**\n * Register this plugin as a viewer/editor for file extensions. By default,\n * matching files render the first applicable opener in deterministic slot\n * order. The user can pin BB's preview or a specific opener per extension\n * under Settings → Files. The file tab's \"Open with\" menu can override that\n * choice for one open. A plugin can also use its own setting and render\n * `experimental_Original` conditionally. Applies to working-tree, host, and\n * thread-storage files — never to git-ref snapshots (diff views always use\n * BB's preview).\n */\ninterface PluginFileOpenerRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Label in the \"Open with\" menu (e.g. \"Notes editor\"). */\n    title: string;\n    /** Lowercase extensions without the dot (e.g. [\"md\", \"mdx\"]). */\n    extensions: readonly string[];\n    component: ComponentType<PluginFileOpenerProps>;\n}\n/**\n * Register a leaf message directive rendered inside assistant (and nested\n * agent) message Markdown. `id` is the directive name: `inline-vis` matches\n * `::inline-vis{file=\"demo.html\"}`.\n */\ninterface PluginMessageDirectiveRegistration {\n    /**\n     * The directive name. Lowercase kebab-case beginning with a letter.\n     */\n    id: string;\n    component: ComponentType<PluginMessageDirectiveProps>;\n}\n/**\n * A narrow, stable reference to one rendered chat message — NOT an internal\n * timeline row. `sourceSeqEnd` is the last source event sequence the message\n * covers, the anchor the server accepts for provider-history forks.\n */\ninterface ThreadChatMessageReference {\n    id: string;\n    threadId: string;\n    role: \"user\" | \"assistant\";\n    /** Visible text of the message. */\n    text: string;\n    sourceSeqEnd: number;\n}\ninterface PluginMessageActionThreadPanelOptions {\n    /** A `threadPanelAction` id registered by this same plugin. */\n    actionId: string;\n    title?: string;\n    params?: JsonValue;\n}\n/** Context handed to a `messageAction`'s `run`. */\ninterface PluginMessageActionContext {\n    /** The thread whose timeline surfaced the action. */\n    threadId: string;\n    message: ThreadChatMessageReference;\n    /**\n     * Present only when the action was invoked from the text-selection menu;\n     * the exact text the user highlighted inside `message`.\n     */\n    selectedText?: string;\n    /**\n     * Open one of this plugin's `threadPanelAction` components in the current\n     * thread's side panel — the registration-callback equivalent of\n     * `useBbNavigate().openThreadPanel`. Returns true when the host\n     * accepted (the action id exists and the surface has a panel); false\n     * otherwise.\n     */\n    openPanel(options: PluginMessageActionThreadPanelOptions): boolean;\n}\n/**\n * An action on chat messages: an icon button in the per-message action bar\n * (user and assistant messages) and an entry in the assistant-message\n * text-selection menu. Host-rendered chrome — the plugin supplies title,\n * icon hint, and `run` behavior only.\n */\ninterface PluginMessageActionRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(context: PluginMessageActionContext): void | Promise<void>;\n}\n/**\n * Supply the inline React mark bb draws for one agent provider.\n *\n * A manifest `branding.icon` (or a provider's `logoUrl`) is fetched and drawn\n * through `<img>`, a separate document where `currentColor` resolves to black\n * — invisible on dark themes and unreachable from app CSS. A component is\n * rendered inline, so it inherits the app's theme colors and the host's sizing\n * classes. Register a static color logo as a file and a theme-aware mark here.\n *\n * The host passes only `className` (sizing plus the provider's color class);\n * the component must render an inline SVG (or other inline markup) and must\n * not fetch. One registration per provider id per plugin; when two plugins\n * claim the same provider id the host keeps the first by plugin id and warns.\n */\ninterface PluginProviderIconRegistration {\n    /**\n     * The provider this mark is for — the id bb knows the provider by (the\n     * provider declaration's id, e.g. `codex` or `acp-cursor`), not the plugin\n     * id. Letters, digits, `-`, `_`.\n     */\n    providerId: string;\n    /** Inline, theme-aware mark. Receives the host's sizing/color className. */\n    icon: ComponentType<{\n        className?: string;\n    }>;\n}\ninterface PluginAppSlots {\n    homepageSection(registration: PluginHomepageSectionRegistration): void;\n    settingsSection(registration: PluginSettingsSectionRegistration): void;\n    navPanel(registration: PluginNavPanelRegistration): void;\n    /**\n     * Add an action to an existing thread's panel launcher. This slot is\n     * thread-only; use `experimental_newThreadPanelAction` for root compose.\n     */\n    threadPanelAction(registration: PluginThreadPanelActionRegistration): void;\n    /**\n     * Add an action to the root New thread screen's panel launcher (see\n     * {@link PluginNewThreadPanelActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_newThreadPanelAction(registration: PluginNewThreadPanelActionRegistration): void;\n    pendingInteraction(registration: PluginPendingInteractionRegistration): void;\n    sidebarFooterAction(registration: PluginSidebarFooterActionRegistration): void;\n    /**\n     * Replace the sidebar's thread list (see\n     * {@link PluginThreadListRegistration}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_threadList(registration: PluginThreadListRegistration): void;\n    /**\n     * Render a component in the thread header's action row (see\n     * {@link PluginThreadHeaderActionRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_threadHeaderAction(registration: PluginThreadHeaderActionRegistration): void;\n    fileOpener(registration: PluginFileOpenerRegistration): void;\n    messageDirective(registration: PluginMessageDirectiveRegistration): void;\n    messageAction(registration: PluginMessageActionRegistration): void;\n    /**\n     * Draw one agent provider's icon with an inline React component instead of\n     * its `<img>`-rendered logo file (see\n     * {@link PluginProviderIconRegistration}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_providerIcon(registration: PluginProviderIconRegistration): void;\n}\ninterface PluginAppComposer {\n    customize(registration: ComposerCustomization): void;\n}\n/** Stable lifecycle values for one content-script instance in one bb client. */\ninterface PluginContentScriptContext {\n    /** The id of the plugin that owns this script. */\n    readonly pluginId: string;\n    /** Monotonic per-client generation, starting at 1. */\n    readonly generation: number;\n    /** Aborted before cleanup begins on replacement, deactivation, or teardown. */\n    readonly signal: AbortSignal;\n    /**\n     * Persistently decorate any thread row for this plugin generation.\n     *\n     * The status is owned by the frontend generation and therefore survives\n     * route changes. Passing `null` clears the plugin's status for that thread.\n     * The host clears every remaining status when the frontend generation\n     * deactivates.\n     *\n     * Optional so bundles can feature-detect support while this experimental\n     * surface rolls out across 0.x clients.\n     */\n    readonly experimental_setThreadRowStatus?: (threadId: string, status: PluginComposerThreadRowStatus | null) => void;\n}\n/** Cleanup returned by a frontend content script. */\ntype PluginContentScriptDisposer = () => void | Promise<void>;\n/**\n * Trusted same-origin JavaScript/TypeScript mounted once per active frontend\n * generation in each bb app window or browser tab.\n */\ninterface PluginContentScriptRegistration {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /**\n     * Install behavior into the bb app shell. The host awaits a returned\n     * promise, contains failures, and calls the returned disposer exactly once.\n     */\n    mount(context: PluginContentScriptContext): void | PluginContentScriptDisposer | Promise<void | PluginContentScriptDisposer>;\n}\n/** Lifecycle surface for trusted frontend content scripts. */\ninterface PluginAppContentScripts {\n    register(registration: PluginContentScriptRegistration): void;\n}\ninterface PluginAppBuilder {\n    slots: PluginAppSlots;\n    composer: PluginAppComposer;\n    contentScripts: PluginAppContentScripts;\n}\ntype PluginAppSetup = (app: PluginAppBuilder) => void;\n/**\n * The opaque product of `definePluginApp` — a plugin's `app.tsx` default\n * export. The host re-runs `setup` against a fresh collector on every\n * (re)interpretation, replacing that plugin's registrations wholesale.\n */\ninterface PluginAppDefinition {\n    /** Brand the host checks before interpreting a bundle's default export. */\n    readonly __bbPluginApp: true;\n    readonly setup: PluginAppSetup;\n}\ninterface PluginRpcClient<Contract extends PluginRpcContract = PluginRpcContract> {\n    /**\n     * Invoke one of the plugin's `bb.rpc` methods (POST\n     * /api/v1/plugins/&lt;id&gt;/rpc/&lt;method&gt;). Resolves with the method's\n     * inferred output; rejects with an `Error` carrying the server's message,\n     * stable `code`, and validation `issues` when present.\n     */\n    call<Method extends Extract<keyof Contract, string>>(method: Method, ...args: PluginRpcCallArgs<Contract[Method]>): Promise<PluginRpcResult<Contract[Method]>>;\n}\ninterface PluginSettingsState {\n    /**\n     * Effective non-secret setting values (secret settings are excluded —\n     * read them server-side). Undefined while loading or unavailable.\n     */\n    values: Record<string, string | boolean> | undefined;\n    isLoading: boolean;\n}\n/** State of the app's shared realtime connection to the bb server. */\ntype PluginRealtimeConnectionState = \"connecting\" | \"connected\" | \"reconnecting\";\n/** Where `useComposer()` writes. */\ntype PluginComposerScope = {\n    kind: \"thread\";\n    threadId: string;\n} | {\n    kind: \"queued-message\";\n    threadId: string;\n    queuedMessageId: string;\n} | {\n    kind: \"side-chat\";\n    projectId: string;\n    parentThreadId: string;\n    tabId: string;\n    childThreadId: string | null;\n} | {\n    kind: \"new-thread\";\n    /** Root compose's effective selected project; null only while unresolved. */\n    projectId: string | null;\n};\n/** One plugin-owned composer customization registration. */\ninterface ComposerCustomization {\n    /** Unique within the plugin; letters, digits, `-`, `_`. */\n    id: string;\n    /** Composer kinds where this customization is active; omit for all kinds. */\n    scopes?: readonly PluginComposerScope[\"kind\"][];\n    actions?: readonly {\n        id: string;\n        component: ComponentType;\n    }[];\n    banners?: readonly {\n        id: string;\n        /** Host chrome around the banner. Defaults to `\"card\"`. */\n        chrome?: \"card\" | \"bare\";\n        component: ComponentType;\n    }[];\n    plusMenu?: readonly ComposerPlusMenuItem[];\n    richText?: ComposerRichTextSpec;\n}\n/** Host-rendered menu row in the composer's `+` menu. */\ninterface ComposerPlusMenuItem {\n    id: string;\n    label: string;\n    /** BB icon name; unknown names fall back to the generic plugin icon. */\n    icon?: string;\n    /** Accessible description for the host-rendered row. */\n    description?: string;\n    disabled?: boolean | ((view: ComposerView) => boolean);\n    run(context: {\n        composer: PluginComposerApi;\n        view: ComposerView;\n    }): void | Promise<void>;\n}\n/** Reactive read-side of the composer a plugin surface is mounted in. */\ninterface ComposerView {\n    scope: PluginComposerScope;\n    layout: \"expanded\" | \"compact\" | \"zen\";\n    draft: {\n        text: string;\n        isEmpty: boolean;\n        attachmentCount: number;\n    };\n    run: {\n        isRunning: boolean;\n        isSubmitting: boolean;\n    };\n}\ninterface ComposerRichTextSpec {\n    /** Content-derived paint: match ranges receive `className`; text is never mutated. */\n    effects?: readonly {\n        id: string;\n        /** Plain-text offsets into the current structured draft. */\n        match(text: string): readonly {\n            from: number;\n            to: number;\n        }[];\n        className: string;\n    }[];\n    /** Debounced, read-only observation of the structured draft. */\n    onDraftChange?(draft: ComposerStructuredDraft, view: ComposerView): void;\n}\ninterface ComposerStructuredDraft {\n    text: string;\n    mentions: readonly {\n        from: number;\n        to: number;\n        provider: string;\n        id: string;\n        label: string;\n    }[];\n}\n/** Host-rendered paint applied to the editable composer text. */\ninterface PluginComposerTextEffect {\n    className: string;\n}\n/** Host-rendered status that temporarily replaces a thread's draft glyph. */\ninterface PluginComposerThreadRowStatus {\n    /** BB icon-name hint; unknown names fall back to the generic plugin icon. */\n    icon: string;\n    /** Accessible label for the status glyph. */\n    label: string;\n    /**\n     * Semantic host treatment for the status glyph. `running` automatically\n     * shimmers; terminal `success` and `error` tones are static. Defaults to the\n     * neutral tone.\n     */\n    tone?: \"default\" | \"running\" | \"success\" | \"error\";\n}\n/** An @-mention pill bound to one of the calling plugin's mention providers. */\ninterface PluginComposerMention {\n    /** Mention provider id registered by THIS plugin via `bb.ui.registerMentionProvider`. */\n    provider: string;\n    /** Item id your provider's `resolve` will receive at send time. */\n    id: string;\n    /** Pill text shown in the composer. */\n    label: string;\n}\n/**\n * Programmatic access to the chat composer draft — the same shared draft the\n * built-in \"Add to chat\" affordances (file preview, diff, terminal selections)\n * write to. While a queued message is being edited, writes land in that\n * message's inline editor. In a side chat, writes land in the visible side-chat\n * draft. Otherwise, inside a thread context writes land in that thread's draft;\n * anywhere else (nav panel, homepage section) they seed the new-thread composer\n * draft, which persists until the user sends or clears it.\n */\ninterface PluginComposerApi {\n    scope: PluginComposerScope;\n    /** Current plain text for this composer scope. */\n    readonly text: string;\n    /**\n     * Replace the draft's plain text. Attachments are preserved. Inline mentions\n     * outside the changed range are preserved and rebased; mentions overlapped\n     * by the replacement are removed because their text representation changed.\n     */\n    setText(next: string): void;\n    /**\n     * Replace the draft's plain text from the latest committed value. Uses the\n     * same structured-state reconciliation as `setText`.\n     */\n    updateText(updater: (current: string) => string): void;\n    /** Clear plain text without clearing independently attached files. */\n    clear(): void;\n    /**\n     * Apply a host-rendered effect to this composer's editable text, or clear it.\n     * Effects are scoped to the calling plugin and automatically clear when the\n     * slot unmounts or its composer scope changes.\n     */\n    setTextEffect(effect: PluginComposerTextEffect | null): void;\n    /**\n     * Lock or unlock editing for this composer. Locks are scoped to the calling\n     * plugin and automatically release when the slot unmounts or its composer\n     * scope changes.\n     */\n    setInputLock(locked: boolean): void;\n    /**\n     * Append text to the draft as a `> ` blockquote block and focus the\n     * composer. Blank text is a no-op. This is the \"reference this selection\n     * in chat\" primitive.\n     */\n    addQuote(text: string): void;\n    /**\n     * Insert an @-mention pill that resolves through this plugin's mention\n     * provider at send time — the durable way to reference an entity whose\n     * content should be fetched fresh when the message is sent.\n     */\n    insertMention(mention: PluginComposerMention): void;\n    /** Focus the composer caret at the end of the draft. */\n    focus(): void;\n}\n/**\n * A consumer-supplied action on the messages of one `ThreadChat` instance,\n * rendered in the embedded timeline's per-message action bar alongside the\n * native and slot-registered actions. Unlike the `messageAction` slot this is\n * scoped to the rendering component, not registered globally.\n */\ninterface ThreadChatMessageAction {\n    /** Unique within this ThreadChat instance; letters, digits, `-`, `_`. */\n    id: string;\n    /** Tooltip / menu label for the action. */\n    title: string;\n    /** Icon hint (BB icon name); unknown names fall back to a generic icon. */\n    icon?: string;\n    /**\n     * Message roles the action applies to. Omitted = both user and assistant\n     * messages.\n     */\n    roles?: readonly (\"user\" | \"assistant\")[];\n    /**\n     * Runs when the user activates the action. Errors (sync or async) are\n     * contained and logged; they never break the timeline.\n     */\n    run(message: ThreadChatMessageReference): void | Promise<void>;\n}\n/**\n * Props of the host-owned `ThreadChat` component — one thread's chat\n * (timeline, and for the composer variants the full send/queue/draft\n * engine), rendered by the BB app inside a plugin slot. This is the\n * deliberate exception to the no-host-components rule (§5.5): a stable\n * product capability, not a UI kit. Versioned additive like slot props;\n * internal timeline rows, query hooks, and prompt-box configuration are\n * deliberately not exposed.\n */\ninterface ThreadChatProps {\n    threadId: string;\n    /**\n     * \"full\" (default) is the page presentation (centered reading width);\n     * \"compact\" is the side-panel presentation; \"timeline\" renders the\n     * transcript without a composer.\n     */\n    variant?: \"full\" | \"compact\" | \"timeline\";\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the composer (ignored by `variant: \"timeline\"`). */\n    focusRequest?: number;\n    /**\n     * Who controls the permission mode sends run with. \"inherit\" (default)\n     * pins every send to the thread's own resolved default and renders the\n     * picker as a dimmed label — a plugin surface can never widen it.\n     * \"editable\" gives this chat its own picker, so the user can raise or\n     * lower permissions for this thread independently of the thread it was\n     * forked from. Ignored by `variant: \"timeline\"` (no composer).\n     */\n    permissionPolicy?: \"inherit\" | \"editable\";\n    className?: string;\n    /** Rendered above the conversation, scrolling with it. */\n    leadingContent?: ReactNode;\n    /**\n     * Actions rendered in this instance's per-message action bar (see\n     * {@link ThreadChatMessageAction}).\n     */\n    messageActions?: readonly ThreadChatMessageAction[];\n}\n/**\n * Every selection the composer resolved, JSON-serializable so a plugin can\n * forward it to its own backend rpc verbatim and hand it straight to\n * `bb.sdk.threads.spawn`.\n *\n * The split is deliberate: the composer owns *user selections*, the plugin\n * owns *filing and attribution*. `bb.sdk.threads.spawn` auto-fills\n * `origin: \"plugin\"` and `originPluginId`, so a thread created this way stays\n * attributed to the plugin — which it would not be if the component created\n * the thread itself. The plugin adds `sectionId`, `parentThreadId`, `title`,\n * and `visibility` to the request on its own; they are deliberately not\n * composer props.\n */\ninterface NewThreadRequest {\n    projectId: string;\n    providerId: string;\n    model: string;\n    reasoningLevel: ReasoningLevel;\n    permissionMode: PermissionMode;\n    /** Omitted when the selected provider has no service tiers. */\n    serviceTier?: ServiceTier;\n    /**\n     * Per-field provenance (caller-explicit vs. default) for the execution\n     * options above, forwarded to `spawn` so the server records what the user\n     * actually chose.\n     */\n    executionInputSources: CreateExecutionInputSources;\n    environment: CreateThreadEnvironmentArgs;\n    input: PromptInput[];\n}\n/**\n * Props of the host-owned `experimental_NewThreadComposer` component — bb's\n * full new-thread compose surface (prompt editor with @-mentions and expand,\n * attachments, provider/model/reasoning picker, voice, submit, and the row\n * beneath with project, environment, branch-from, and permission mode),\n * rendered by the BB app inside a plugin slot.\n *\n * It is the create-side counterpart to `ThreadChat`: same deliberate\n * exception to the no-host-components rule (§5.5), same additive versioning.\n */\ninterface NewThreadComposerProps {\n    /** Seeds the project picker. The user can change it. */\n    defaultProjectId?: string;\n    /**\n     * Seeds the provider picker. Like every `default*` prop this is a SEED, not\n     * a controlled value: the composer stays uncontrolled, the user can change\n     * it, and when omitted the composer falls back to the project's remembered\n     * execution defaults exactly as before. When provided it takes precedence\n     * over those project defaults.\n     *\n     * Re-seeding: the `default*` props are value-compared each render. When any\n     * of them changes after mount, the composer re-seeds EVERY execution and\n     * environment selection from the new props — including selections the user\n     * had already touched — so switching between two saved records in the same\n     * mounted composer reloads that record's values (the same rule\n     * `defaultProjectId` already follows).\n     *\n     * Every seeded field is reported as caller-explicit in the submitted\n     * request's `executionInputSources`. That is what makes the seed survive\n     * `threads.spawn`: the server drops a requested `providerId`/`model` that\n     * carries no provenance source and re-derives it from the project's stored\n     * defaults, which would silently undo the seed.\n     */\n    defaultProviderId?: string;\n    /** Seeds the model picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultModel?: string;\n    /**\n     * Seeds the reasoning-level picker. Same seed semantics as\n     * {@link defaultProviderId}. If the seeded model does not support this\n     * level, the composer reconciles to the closest supported one.\n     */\n    defaultReasoningLevel?: ReasoningLevel;\n    /**\n     * Seeds the service-tier picker. Same seed semantics as\n     * {@link defaultProviderId}. Ignored (and omitted from the submitted\n     * request) when the selected provider has no service tiers.\n     */\n    defaultServiceTier?: ServiceTier;\n    /** Seeds the permission-mode picker. Same seed semantics as {@link defaultProviderId}. */\n    defaultPermissionMode?: PermissionMode;\n    /**\n     * Seeds the environment and branch pickers from a previously submitted\n     * `NewThreadRequest.environment`. Same seed semantics as\n     * {@link defaultProviderId}: a seed the user can change, taking precedence\n     * over the composer's own environment default when provided.\n     *\n     * Round trip: feeding a submitted request's `environment` back in and\n     * resubmitting untouched reproduces an equivalent environment, with these\n     * documented limits — the composer cannot represent every args variant:\n     *\n     * - `{ type: \"project-default\" }` seeds nothing; the composer resolves its\n     *   own default and submits that concrete environment instead.\n     * - A `host` environment whose host no longer exists (or whose project has\n     *   no source on it) falls back to the composer's default host, exactly as\n     *   the primary compose surface would.\n     * - A `reuse` environment whose worktree no longer has unarchived threads\n     *   falls back the same way.\n     * - An `unmanaged` workspace's `path` has no composer control; the seeded\n     *   selection submits `path: null` (the host's configured checkout). The\n     *   composer itself never produces a non-null `path`, so real round trips\n     *   are unaffected.\n     * - A `managed-worktree` with `baseBranch: { kind: \"default\" }` leaves the\n     *   branch picker on its default, which may resolve to a named base branch\n     *   when the project configures a dedicated worktree base — the same branch\n     *   the original `default` submission would have created from.\n     */\n    defaultEnvironment?: CreateThreadEnvironmentArgs;\n    /** Seeds the draft, only while the draft is still empty. */\n    initialPrompt?: string;\n    placeholder?: string;\n    /**\n     * \"contained\" (default) fills and scrolls inside a bounded parent;\n     * \"document\" grows with its content and defers scrolling to the page.\n     */\n    layout?: \"contained\" | \"document\";\n    /** Bump to focus the editor. */\n    focusRequest?: number;\n    className?: string;\n    /**\n     * Where the draft persists. Drafts survive reloads and are shared by every\n     * composer using the same key; defaults to a key scoped to this plugin.\n     */\n    draftKey?: string;\n    /**\n     * Fires on submit with every selection resolved. The draft clears when this\n     * resolves and is KEPT if it throws, so a failed create never loses what the\n     * user typed.\n     */\n    onSubmit: (request: NewThreadRequest) => void | Promise<void>;\n}\n/**\n * Props of the host-owned `Markdown` component — bb's chat message renderer\n * (the same typography, spacing, and code styling as timeline messages).\n * Use it wherever plugin UI quotes or previews message content so it reads\n * like the rest of the chat. Like `ThreadChat`, this is a stable product\n * capability, not a UI kit; renderer internals stay private.\n */\ninterface MarkdownProps {\n    /** Markdown source, rendered exactly like a chat message body. */\n    content: string;\n    className?: string;\n}\n/** Current app selection, derived from the route. */\ninterface BbContext {\n    projectId: string | null;\n    threadId: string | null;\n}\ninterface BbNavigate {\n    toThread(threadId: string): void;\n    toProject(projectId: string): void;\n    /**\n     * Navigate to one of this plugin's own nav panels by its `path`.\n     * `subPath` targets a location inside the panel (the component's\n     * `subPath` prop); `replace` swaps the current history entry instead of\n     * pushing — use it for redirects so back does not bounce.\n     */\n    toPluginPanel(path: string, options?: {\n        subPath?: string;\n        replace?: boolean;\n    }): void;\n    /**\n     * Navigate to the root compose surface (the new-thread screen). Pass\n     * `initialPrompt` to seed the composer draft and `focusPrompt` to focus the\n     * composer on arrival — the pairing behind \"Create via chat\" style entry\n     * points that drop the user into chat with a prefilled prompt.\n     */\n    toCompose(options?: {\n        initialPrompt?: string;\n        focusPrompt?: boolean;\n    }): void;\n    /**\n     * Open one of this plugin's registered thread-panel actions in the current\n     * thread surface. Returns false when the surface has no thread side panel or\n     * the action is unavailable.\n     */\n    openThreadPanel(options: {\n        actionId: string;\n        title?: string;\n        params?: JsonValue;\n    }): boolean;\n}\n/**\n * Everything `@get-bb/plugin-sdk/app` resolves to at runtime. The BB app builds\n * the real implementation and `satisfies` this interface; `bb plugin build`\n * shims the specifier to that object on `globalThis.__bbPluginRuntime`.\n */\ninterface PluginSdkApp {\n    definePluginApp(setup: PluginAppSetup): PluginAppDefinition;\n    useRpc<Contract extends PluginRpcContract = PluginRpcContract>(): PluginRpcClient<Contract>;\n    useRealtime(channel: string, handler: (payload: unknown) => void): void;\n    /**\n     * Observe the same shared connection that delivers `useRealtime` signals.\n     * Use a subsequent transition to `connected` to reconcile server state that\n     * may have changed while ephemeral signals could not be delivered. The first\n     * connection can transition from `connecting` and is not a reconnection.\n     */\n    useRealtimeConnectionState(): PluginRealtimeConnectionState;\n    useSettings(): PluginSettingsState;\n    useBbContext(): BbContext;\n    useBbNavigate(): BbNavigate;\n    useComposer(): PluginComposerApi;\n    /**\n     * The sidebar's live thread view (see {@link PluginSidebarThreadsState}).\n     * Reads the host's own cache and realtime subscriptions, so it costs no\n     * extra request and updates exactly when the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreads(): PluginSidebarThreadsState;\n    /**\n     * Thread actions bound to the host's mutations (see\n     * {@link PluginSidebarThreadActions}). Experimental: see\n     * docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadActions(): PluginSidebarThreadActions;\n    /**\n     * The pull request for one thread's branch (see\n     * {@link PluginSidebarThreadPullRequestState}).\n     *\n     * Per row and opt-in, because it costs a git-host lookup: it is NOT on the\n     * thread payload every sidebar loads. Threads sharing an environment share\n     * one query, and the host owns the polling and staleness rules — an open PR\n     * with pending checks refreshes, a merged one does not.\n     *\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadPullRequest(threadId: string): PluginSidebarThreadPullRequestState;\n    /**\n     * Per-row drag-to-split support (see {@link PluginSidebarThreadSplit}).\n     * Call it once per rendered row, like the built-in sidebar does.\n     * Experimental: see docs/api_to_audit.md.\n     */\n    experimental_useSidebarThreadSplit(threadId: string): PluginSidebarThreadSplit;\n    /**\n     * The host-owned chat component (see {@link ThreadChatProps}). Together\n     * with `Markdown`, the only components the SDK ships — everything else\n     * stays vendored per §5.5.\n     */\n    ThreadChat: ComponentType<ThreadChatProps>;\n    /**\n     * The host-owned chat-message markdown renderer (see\n     * {@link MarkdownProps}).\n     */\n    Markdown: ComponentType<MarkdownProps>;\n    /**\n     * The host-owned new-thread compose surface (see\n     * {@link NewThreadComposerProps}). Experimental: see\n     * docs/api_to_audit.md for what to audit before the prefix drops.\n     */\n    experimental_NewThreadComposer: ComponentType<NewThreadComposerProps>;\n    useComposerView(): ComposerView;\n}\n\ndeclare const definePluginApp: (setup: PluginAppSetup) => PluginAppDefinition;\ndeclare const ThreadChat: react.ComponentType<ThreadChatProps>;\ndeclare const Markdown: react.ComponentType<MarkdownProps>;\ndeclare const experimental_NewThreadComposer: react.ComponentType<NewThreadComposerProps>;\ndeclare const useRpc: <Contract extends PluginRpcContract = Readonly<Record<string, PluginRpcMethodContract<StandardSchemaV1<unknown, unknown>, StandardSchemaV1<unknown, unknown>>>>>() => PluginRpcClient<Contract>;\ndeclare const useRealtime: (channel: string, handler: (payload: unknown) => void) => void;\ndeclare const useRealtimeConnectionState: () => PluginRealtimeConnectionState;\ndeclare const useSettings: () => PluginSettingsState;\ndeclare const useBbContext: () => BbContext;\ndeclare const useBbNavigate: () => BbNavigate;\ndeclare const useComposer: () => PluginComposerApi;\ndeclare const useComposerView: () => ComposerView;\ndeclare const experimental_useSidebarThreads: () => PluginSidebarThreadsState;\ndeclare const experimental_useSidebarThreadActions: () => PluginSidebarThreadActions;\ndeclare const experimental_useSidebarThreadPullRequest: (threadId: string) => PluginSidebarThreadPullRequestState;\ndeclare const experimental_useSidebarThreadSplit: (threadId: string) => PluginSidebarThreadSplit;\n\nexport { Markdown, ThreadChat, definePluginApp, experimental_NewThreadComposer, experimental_useSidebarThreadActions, experimental_useSidebarThreadPullRequest, experimental_useSidebarThreadSplit, experimental_useSidebarThreads, useBbContext, useBbNavigate, useComposer, useComposerView, useRealtime, useRealtimeConnectionState, useRpc, useSettings };\nexport type { BbContext, BbNavigate, ComposerCustomization, ComposerPlusMenuItem, ComposerRichTextSpec, ComposerStructuredDraft, ComposerView, JsonValue, MarkdownProps, NewThreadComposerProps, NewThreadRequest, PluginAppBuilder, PluginAppComposer, PluginAppContentScripts, PluginAppDefinition, PluginAppSetup, PluginAppSlots, PluginComposerApi, PluginComposerMention, PluginComposerScope, PluginComposerTextEffect, PluginComposerThreadRowStatus, PluginContentScriptContext, PluginContentScriptDisposer, PluginContentScriptRegistration, PluginFileOpenerProps, PluginFileOpenerRegistration, PluginFileOpenerSource, PluginHomepageSectionProps, PluginHomepageSectionRegistration, PluginMessageActionContext, PluginMessageActionRegistration, PluginMessageActionThreadPanelOptions, PluginMessageDirectiveMessage, PluginMessageDirectiveOpenWorkspaceFile, PluginMessageDirectiveProps, PluginMessageDirectiveRegistration, PluginNavPanelProps, PluginNavPanelRegistration, PluginNewThreadPanelActionContext, PluginNewThreadPanelActionRegistration, PluginNewThreadPanelProps, PluginPendingInteractionProps, PluginPendingInteractionRegistration, PluginPendingInteractionView, PluginProviderIconRegistration, PluginRealtimeConnectionState, PluginRpcCallArgs, PluginRpcClient, PluginRpcContract, PluginRpcError, PluginRpcErrorCode, PluginRpcHandlers, PluginRpcIssuePathSegment, PluginRpcMethodContract, PluginRpcResult, PluginRpcValidationIssue, PluginSdkApp, PluginSettingsSectionProps, PluginSettingsSectionRegistration, PluginSettingsState, PluginSidebarFooterActionContext, PluginSidebarFooterActionProps, PluginSidebarFooterActionRegistration, PluginSidebarProject, PluginSidebarPullRequest, PluginSidebarSplitPane, PluginSidebarThread, PluginSidebarThreadActions, PluginSidebarThreadActivity, PluginSidebarThreadIndicator, PluginSidebarThreadPullRequestState, PluginSidebarThreadSplit, PluginSidebarThreadsState, PluginSidebarWorkspaceKind, PluginThreadHeaderActionProps, PluginThreadHeaderActionRegistration, PluginThreadListProps, PluginThreadListRegistration, PluginThreadPanelActionContext, PluginThreadPanelActionRegistration, PluginThreadPanelProps, StandardSchemaV1, StandardSchemaV1InferInput, StandardSchemaV1InferOutput, StandardSchemaV1Issue, StandardSchemaV1Result, ThreadChatMessageAction, ThreadChatMessageReference, ThreadChatProps };\n";
diff --git a/plugins/workflows/src/json-value.ts b/plugins/workflows/src/json-value.ts
new file mode 100644
index 0000000000..28cce969b9
--- /dev/null
+++ b/plugins/workflows/src/json-value.ts
@@ -0,0 +1,66 @@
+import type { JsonValue } from "./types.js";
+
+export function assertJsonValue(
+  value: unknown,
+  path = "result",
+  ancestors = new WeakSet<object>(),
+): asserts value is JsonValue {
+  if (
+    value === null ||
+    typeof value === "string" ||
+    typeof value === "boolean"
+  ) {
+    return;
+  }
+  if (typeof value === "number") {
+    if (!Number.isFinite(value)) {
+      throw new Error(`${path} contains a non-finite number`);
+    }
+    return;
+  }
+  if (Array.isArray(value)) {
+    if (ancestors.has(value)) throw new Error(`${path} contains a cycle`);
+    ancestors.add(value);
+    for (let index = 0; index < value.length; index += 1) {
+      if (!(index in value)) throw new Error(`${path} contains a sparse array`);
+      assertJsonValue(value[index], `${path}[${index}]`, ancestors);
+    }
+    ancestors.delete(value);
+    return;
+  }
+  if (typeof value === "object") {
+    const prototype = Object.getPrototypeOf(value);
+    if (prototype !== Object.prototype && prototype !== null) {
+      throw new Error(`${path} must contain only plain objects and arrays`);
+    }
+    if (ancestors.has(value)) throw new Error(`${path} contains a cycle`);
+    ancestors.add(value);
+    if (Object.getOwnPropertySymbols(value).length > 0) {
+      throw new Error(`${path} contains symbol properties`);
+    }
+    const object = value as Record<string, unknown>;
+    for (const key of Object.getOwnPropertyNames(object)) {
+      if (key === "__proto__" || key === "constructor" || key === "prototype") {
+        throw new Error(
+          `${path} contains forbidden key ${JSON.stringify(key)}`,
+        );
+      }
+      const descriptor = Object.getOwnPropertyDescriptor(object, key);
+      if (descriptor === undefined || !("value" in descriptor)) {
+        throw new Error(`${path}.${key} must be a data property`);
+      }
+      if (!descriptor.enumerable) {
+        throw new Error(`${path}.${key} must be enumerable`);
+      }
+      assertJsonValue(descriptor.value, `${path}.${key}`, ancestors);
+    }
+    ancestors.delete(value);
+    return;
+  }
+  throw new Error(`${path} is not JSON-compatible`);
+}
+
+export function toJsonValue(value: unknown, path: string): JsonValue {
+  assertJsonValue(value, path);
+  return value;
+}
diff --git a/plugins/workflows/src/runtime.ts b/plugins/workflows/src/runtime.ts
index c9e5e9aa3d..8b8b14a9ac 100644
--- a/plugins/workflows/src/runtime.ts
+++ b/plugins/workflows/src/runtime.ts
@@ -6,6 +6,7 @@ import {
   type QuickJSHandle,
   type QuickJSRuntime,
 } from "quickjs-emscripten-core";
+import { assertJsonValue } from "./json-value.js";
 import type {
   ExecuteWorkflowScriptArgs,
   JsonValue,
@@ -43,66 +44,6 @@ function isAborted(signal: AbortSignal | undefined): boolean {
   return signal?.aborted === true;
 }
 
-function assertJsonValue(
-  value: unknown,
-  path = "result",
-  ancestors = new WeakSet<object>(),
-): asserts value is JsonValue {
-  if (
-    value === null ||
-    typeof value === "string" ||
-    typeof value === "boolean"
-  ) {
-    return;
-  }
-  if (typeof value === "number") {
-    if (!Number.isFinite(value)) {
-      throw new Error(`${path} contains a non-finite number`);
-    }
-    return;
-  }
-  if (Array.isArray(value)) {
-    if (ancestors.has(value)) throw new Error(`${path} contains a cycle`);
-    ancestors.add(value);
-    for (let index = 0; index < value.length; index += 1) {
-      if (!(index in value)) throw new Error(`${path} contains a sparse array`);
-      assertJsonValue(value[index], `${path}[${index}]`, ancestors);
-    }
-    ancestors.delete(value);
-    return;
-  }
-  if (typeof value === "object") {
-    const prototype = Object.getPrototypeOf(value);
-    if (prototype !== Object.prototype && prototype !== null) {
-      throw new Error(`${path} must contain only plain objects and arrays`);
-    }
-    if (ancestors.has(value)) throw new Error(`${path} contains a cycle`);
-    ancestors.add(value);
-    if (Object.getOwnPropertySymbols(value).length > 0) {
-      throw new Error(`${path} contains symbol properties`);
-    }
-    const object = value as Record<string, unknown>;
-    for (const key of Object.getOwnPropertyNames(object)) {
-      if (key === "__proto__" || key === "constructor" || key === "prototype") {
-        throw new Error(
-          `${path} contains forbidden key ${JSON.stringify(key)}`,
-        );
-      }
-      const descriptor = Object.getOwnPropertyDescriptor(object, key);
-      if (descriptor === undefined || !("value" in descriptor)) {
-        throw new Error(`${path}.${key} must be a data property`);
-      }
-      if (!descriptor.enumerable) {
-        throw new Error(`${path}.${key} must be enumerable`);
-      }
-      assertJsonValue(descriptor.value, `${path}.${key}`, ancestors);
-    }
-    ancestors.delete(value);
-    return;
-  }
-  throw new Error(`${path} is not JSON-compatible`);
-}
-
 function parseWorkflowReference(value: JsonValue): WorkflowReference {
   if (typeof value === "string") {
     if (value.length === 0) {
diff --git a/plugins/workflows/src/server-harness.test.ts b/plugins/workflows/src/server-harness.test.ts
index f279615d10..81003952ff 100644
--- a/plugins/workflows/src/server-harness.test.ts
+++ b/plugins/workflows/src/server-harness.test.ts
@@ -61,6 +61,32 @@ describe("workflows plugin", () => {
     await harness.setSettings({ maxActiveRuns: "5" });
   });
 
+  it("registers tool schemas without recursive $refs", async () => {
+    const { bb, harness } = createFakePluginHost({
+      pluginId: "workflows",
+      agentSkillIds: ["workflows"],
+    });
+    hosts.push(harness);
+    await plugin(bb);
+
+    const tools = harness.registrations.agentTools;
+    expect(tools.map((tool) => tool.name)).toEqual(
+      expect.arrayContaining(["bb_workflow_run", "bb_workflow_result"]),
+    );
+    // A self-referential $ref makes some providers reject the whole tool list
+    // before the turn starts, so no tool may ship one.
+    for (const tool of tools) {
+      const schema = JSON.stringify(tool.inputSchema);
+      expect(schema, `tool ${tool.name}`).not.toContain("$ref");
+      expect(schema, `tool ${tool.name}`).not.toContain("$defs");
+    }
+
+    const run = tools.find((tool) => tool.name === "bb_workflow_run");
+    expect(
+      run?.parse({ name: "demo", args: { nested: [1, { deep: null }] } }),
+    ).toMatchObject({ ok: true });
+  });
+
   it("runs a structured workflow asynchronously and notifies its origin", async () => {
     let childCount = 0;
     const { bb, harness } = createFakePluginHost({
diff --git a/plugins/workflows/src/server.ts b/plugins/workflows/src/server.ts
index cbd2768935..ec496dec18 100644
--- a/plugins/workflows/src/server.ts
+++ b/plugins/workflows/src/server.ts
@@ -2,12 +2,14 @@ import type { BbPluginApi, PluginAgentToolResult } from "@get-bb/plugin-sdk";
 import { z } from "zod";
 import { registerWorkflowCli } from "./cli.js";
 import { migrations } from "./data.js";
+import { toJsonValue } from "./json-value.js";
 import { executeWorkflowScript } from "./runtime.js";
 import { createWorkflowService } from "./service.js";
 import {
   DEFAULT_WORKFLOW_SETTINGS,
   registerWorkflowSettings,
 } from "./settings.js";
+import type { JsonValue } from "./types.js";
 import { prepareWorkflowSource } from "./workflow-input.js";
 import { workflowUiRpcContract } from "./ui-contract.js";
 import { buildWorkflowRunView } from "./ui-view.js";
@@ -44,11 +46,16 @@ const sourceInputFields = {
     )
     .optional(),
 } as const;
+// zod 4's `z.json()` compiles to a self-referential `$defs` entry, and some
+// model providers reject an entire tool list that contains a recursive `$ref`
+// before the turn starts. Declare freeform JSON as `unknown` so the wire schema
+// stays flat, then narrow with `toJsonValue` at each call site.
+const freeformJson = z.unknown();
+
 const runInputSchema = z
   .object({
     ...sourceInputFields,
-    args: z
-      .json()
+    args: freeformJson
       .describe(
         "Optional input value exposed to the script as the global `args`, verbatim. Pass arrays/objects as actual JSON values, NOT as a JSON-encoded string — a stringified list breaks `args.filter`/`args.map` in the script. Use for parameterized named workflows (e.g. a research question).",
       )
@@ -65,9 +72,9 @@ const runInputSchema = z
   .strict();
 const resultInputSchema = z
   .object({
-    value: z
-      .json()
-      .describe("The final value matching the requested JSON Schema."),
+    value: freeformJson.describe(
+      "The final value matching the requested JSON Schema.",
+    ),
   })
   .strict();
 
@@ -147,7 +154,7 @@ export default async function plugin(bb: BbPluginApi) {
           projectId: ctx.projectId,
           originThreadId: ctx.threadId,
           source: prepared.source,
-          args: input.args,
+          args: toJsonValue(input.args, "args"),
           resumedFromRunId: input.resumeRunId,
         });
         const previewDirective = `::workflow-preview{run="${run.id}"}`;
@@ -171,7 +178,15 @@ export default async function plugin(bb: BbPluginApi) {
       'Use this tool to return your final response in the requested structured format. You MUST call this tool exactly once at the end of your response with {"value": ...} to provide the structured output.',
     parameters: resultInputSchema,
     async execute({ value }, ctx) {
-      const result = await service.submitStructuredResult(ctx.threadId, value);
+      let parsed: JsonValue;
+      try {
+        parsed = toJsonValue(value, "value");
+      } catch (error) {
+        return errorResult(
+          error instanceof Error ? error.message : String(error),
+        );
+      }
+      const result = await service.submitStructuredResult(ctx.threadId, parsed);
       if (result.ok) return jsonResult({ accepted: true });
       return errorResult(result.error);
     },
