Skip to content
nikcli
Docs
Documentation

Mobile · Git & GitHub

The git toolbar behind the mobile review panel — status, diff, commits, branches, stage, commit, push and pull — plus the GitHub side: repos, branches, imports, Actions runs and the device OAuth flow.

Playground

Send these requests to your own running server. Values stay in this browser.

Not connected
How this works

Start a server with nikcli serve --hostname 127.0.0.1 --port 4096. Requests go straight from this page to that address — the browser allows it because loopback counts as a secure origin, and the server allows it because nikcli-ai.dev is in its CORS allowlist.

To try things without touching your real sessions or config, start the server with NIKCLI_TEST_HOME pointed at a throwaway directory — see the guided tour.

Operations

27 endpoints, generated from the server's own OpenAPI document. Every path also accepts the directory and workspace query parameters that select which instance handles the request.

get /mobile/github/repos mobile.github.repos
get /mobile/github/repos/{owner}/{repo}/branches mobile.github.branches
get /mobile/github/repos/{owner}/{repo}/actions/workflows mobile.github.actions.workflows
get /mobile/github/repos/{owner}/{repo}/actions/runs mobile.github.actions.runs
get /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/jobs mobile.github.actions.run.jobs
post /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/rerun mobile.github.actions.run.rerun
post /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/cancel mobile.github.actions.run.cancel
post /mobile/github/repos/{owner}/{repo}/actions/workflows/{workflowID}/dispatch mobile.github.actions.workflow.dispatch
get /mobile/github/imports mobile.github.imports
post /mobile/github/oauth/client mobile.github.oauth.clientId.set
post /mobile/github/oauth/device mobile.github.oauth.device.start
post /mobile/github/oauth/device/poll mobile.github.oauth.device.poll
post /mobile/github/auth mobile.github.auth.set
delete /mobile/github/auth mobile.github.auth.remove
post /mobile/github/import mobile.github.import
post /mobile/github/session mobile.github.session.create
get /mobile/git/status mobile.git.status
get /mobile/git/diff mobile.git.diff
get /mobile/git/commits mobile.git.commits
get /mobile/git/branches mobile.git.branches
post /mobile/git/commit mobile.git.commit
post /mobile/git/checkout mobile.git.checkout
post /mobile/git/stage mobile.git.stage
post /mobile/git/unstage mobile.git.unstage
post /mobile/git/discard mobile.git.discard
post /mobile/git/push mobile.git.push
post /mobile/git/pull mobile.git.pull

Repos

get /mobile/github/repos # mobile.github.repos
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 Success application/json
unknown[]
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
[]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.repos
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.repos({
  ...
})
Try it
get /mobile/github/repos/{owner}/{repo}/branches # mobile.github.branches
Parameters
Name In Type Required
owner path string required
repo path string required
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  name: string
  protected?: boolean | null
  commit: {
    sha: string
  }
})[]
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
[
  {
    "name": "",
    "protected": false,
    "commit": {
      "sha": ""
    }
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.branches
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.branches({
  ...
})
Try it
get /mobile/github/repos/{owner}/{repo}/actions/workflows # mobile.github.actions.workflows
Parameters
Name In Type Required
owner path string required
repo path string required
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  id: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  name: string
  path: string
  state: string
  htmlUrl?: string | null
})[]
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
[
  {
    "id": 0,
    "name": "",
    "path": "",
    "state": "",
    "htmlUrl": ""
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.workflows
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.workflows({
  ...
})
Try it
get /mobile/github/repos/{owner}/{repo}/actions/runs # mobile.github.actions.runs
Parameters
Name In Type Required
owner path string required
repo path string required
branch query string | null optional
limit query string | null optional
directory query string optional
workspace query string optional
Responses
200 MobileGithubWorkflowRunList application/json
{
  runs: MobileGithubWorkflowRun[]
  totalCount: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  configured: boolean
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "runs": [
    {
      "id": 0,
      "name": "",
      "workflowID": 0,
      "runNumber": 0,
      "attempt": 0,
      "status": "",
      "conclusion": "",
      "event": "",
      "branch": "",
      "sha": "",
      "title": "",
      "actor": {
        "login": null,
        "avatarUrl": null
      },
      "htmlUrl": "",
      "createdAt": 0,
      "updatedAt": 0,
      "startedAt": 0,
      "durationMs": 0
    }
  ],
  "totalCount": 0,
  "configured": false
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.runs
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.runs({
  ...
})
Try it
get /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/jobs # mobile.github.actions.run.jobs
Parameters
Name In Type Required
owner path string required
repo path string required
runID path string required
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  id: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  name: string
  status: string
  conclusion?: string | null
  htmlUrl?: string | null
  startedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  completedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  durationMs?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  steps: MobileGithubWorkflowStep[]
})[]
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
[
  {
    "id": 0,
    "name": "",
    "status": "",
    "conclusion": "",
    "htmlUrl": "",
    "startedAt": 0,
    "completedAt": 0,
    "durationMs": 0,
    "steps": [
      {
        "name": null,
        "number": null,
        "status": null,
        "conclusion": null,
        "startedAt": null,
        "completedAt": null
      }
    ]
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.run.jobs
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.run.jobs({
  ...
})
Try it
post /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/rerun # mobile.github.actions.run.rerun
Parameters
Name In Type Required
owner path string required
repo path string required
runID path string required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  failedOnly?: boolean | null
}
Responses
200 MobileSuccess application/json
{
  success: true
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.run.rerun
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.run.rerun({
  ...
})
Try it
post /mobile/github/repos/{owner}/{repo}/actions/runs/{runID}/cancel # mobile.github.actions.run.cancel
Parameters
Name In Type Required
owner path string required
repo path string required
runID path string required
directory query string optional
workspace query string optional
Responses
200 MobileSuccess application/json
{
  success: true
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.run.cancel
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.run.cancel({
  ...
})
Try it
post /mobile/github/repos/{owner}/{repo}/actions/workflows/{workflowID}/dispatch # mobile.github.actions.workflow.dispatch
Parameters
Name In Type Required
owner path string required
repo path string required
workflowID path string required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  ref: string
  inputs?: 
    | {
    [key: string]: string
  }
    | null
}
Responses
200 MobileSuccess application/json
{
  success: true
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.actions.workflow.dispatch
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.actions.workflow.dispatch({
  ...
})
Try it

Imports

get /mobile/github/imports # mobile.github.imports
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  owner: string
  repo: string
  fullName: string
  directory: string
  cloneUrl: string
  defaultBranch: string
  private: boolean
  importedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  updatedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  projectID?: string | null
})[]
Example response from schema
[
  {
    "owner": "",
    "repo": "",
    "fullName": "",
    "directory": "",
    "cloneUrl": "",
    "defaultBranch": "",
    "private": false,
    "importedAt": 0,
    "updatedAt": 0,
    "projectID": ""
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.imports
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.imports({
  ...
})
Try it

Oauth

post /mobile/github/oauth/client # mobile.github.oauth.clientId.set
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  clientId: string
}
Responses
200 MobileConfigInfo application/json
{
  $schema?: string | null
  theme?: string | null
  locale?: 
    | {
    language?: string | null
    region?: string | null
    locale?: string | null
    timezone?: string | null
    currency?: string | null
    autoDetect?: boolean | null
    replyLanguage?: boolean | string | null
  }
    | null
  keybinds?: KeybindsConfig_1 | null
  logLevel?: LogLevel_1 | null
  tui?: 
    | {
    scroll_speed?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    scroll_acceleration?: 
      | {
      enabled: boolean
    }
      | null
    diff_style?: "auto" | "stacked" | null
    mouse?: boolean | null
    sound?: boolean | null
    bg_pulse?: boolean | null
    turn_tokens?: boolean | null
  }
    | null
  ads?: AdsConfig_1 | null
  server?: ServerConfig_1 | null
  remote?: RemoteConfig_1 | null
  teleport?: TeleportConfig_1 | null
  command?: 
    | {
    [key: string]: {
      template?: string | null
      description?: string | null
      agent?: string | null
      model?: string | null
      subtask?: boolean | null
      aliases?: string[] | null
    }
  }
    | null
  reference?: 
    | {
    [key: string]: ReferenceConfig_1
  }
    | null
  watcher?: 
    | {
    ignore?: string[] | null
  }
    | null
  plugin?: string[] | null
  snapshot?: boolean | null
  sync?: 
    | {
    url?: string | null
    token?: string | null
    autostart?: boolean | null
  }
    | null
  analytics?: 
    | {
    share?: boolean | null
    endpoint?: string | null
  }
    | null
  share?: "manual" | "auto" | "disabled" | null
  autoshare?: boolean | null
  autoupdate?: boolean | "notify" | null
  disabled_providers?: string[] | null
  enabled_providers?: string[] | null
  model?: string | null
  small_model?: string | null
  default_agent?: string | null
  username?: string | null
  mode?: 
    | {
    [key: string]: AgentConfig_1 | null
  }
    | null
  agent?: 
    | {
    [key: string]: AgentConfig_1 | null
  }
    | null
  provider?: 
    | {
    [key: string]: ProviderConfig_1
  }
    | null
  mcp?: 
    | {
    [key: string]: 
      | McpLocalConfig_1 | McpRemoteConfig_1
      | {
      enabled: boolean
    }
  }
    | null
  connectors?: 
    | {
    [key: string]: 
      | 
      | ConnectorFigma_1
      | ConnectorSlack_1
      | ConnectorGithub_1
      | ConnectorLovable_1
      | ConnectorDiscord_1
      | ConnectorTeams_1
      | ConnectorGChat_1
      | ConnectorLinear_1
      | {
      enabled: boolean
    }
  }
    | null
  formatter?: 
    | 
    | false
    | true
    | {
    [key: string]: {
      disabled?: boolean | null
      command?: string[] | null
      environment?: 
        | {
        [key: string]: string
      }
        | null
      extensions?: string[] | null
    }
  }
    | null
  websearch?: 
    | {
    provider?: "exa" | "parallel" | "mcp" | null
    apiKey?: string | null
    url?: string | null
    tool?: string | null
  }
    | null
  lsp?: 
    | 
    | false
    | {
    [key: string]: 
      | {
      disabled: true
    }
      | {
      command: string[]
      extensions?: string[] | null
      disabled?: boolean | null
      env?: 
        | {
        [key: string]: string
      }
        | null
      initialization?: { [key: string]: unknown } | null
      min_severity?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
    }
  }
    | null
  instructions?: string[] | null
  layout?: LayoutConfig_1 | null
  permission?: PermissionConfig | null
  permission_mode?: PermissionModeConfig_1 | null
  auto_mode?: AutoModeConfig_1 | null
  tools?: 
    | {
    [key: string]: boolean
  }
    | null
  tool?: 
    | {
    allow?: string[] | null
    pin?: 
      | {
      [key: string]: string
    }
      | null
    eager?: string[] | null
  }
    | null
  enterprise?: 
    | {
    url?: string | null
  }
    | null
  compaction?: 
    | {
    auto?: boolean | null
    prune?: boolean | null
    reserved?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
    | null
  experimental?: 
    | {
    policies?: PolicyStatementConfig_1[] | null
    hook?: 
      | {
      file_edited?: 
        | {
        [key: string]: ({
          command: string[]
          environment?: 
            | {
            [key: string]: string
          }
            | null
        })[]
      }
        | null
      session_completed?: 
        | ({
        command: string[]
        environment?: 
          | {
          [key: string]: string
        }
          | null
      })[]
        | null
    }
      | null
    queued_message_wrap?: 
      | 
      | {
      header: string
      footer: string
    }
      | "default"
      | boolean
      | null
      | null
    chatMaxRetries?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    disable_paste_summary?: boolean | null
    batch_tool?: boolean | null
    openTelemetry?: boolean | null
    primary_tools?: string[] | null
    continue_loop_on_deny?: boolean | null
    brain?: boolean | null
    brainMinHours?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    brainMinSessions?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    brainModel?: string | null
    memory?: boolean | null
    mcp_timeout?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    tool_timeout?: 
      | 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | false
      | null
    task_timeout?: 
      | 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | false
      | null
    nativeLlm?: boolean | null
    tui?: 
      | {
      cacheEviction?: boolean | null
      messageVirtualization?: boolean | null
      explorationGrouping?: boolean | null
    }
      | null
    requests?: 
      | {
      latestOnlyLspRefresh?: boolean | null
    }
      | null
    events?: 
      | {
      schemaEncoding?: boolean | null
    }
      | null
  }
    | null
  rag?: RagConfig_1 | null
  image?: ImageConfig_1 | null
  browser?: unknown | null
  computer?: ComputerConfig_1 | null
  attachment?: AttachmentConfig_1 | null
  speak?: SpeakConfig_1 | null
  notifications?: 
    | {
    todo?: 
      | {
      enabled?: boolean | null
      macos?: boolean | null
      slack?: 
        | {
        enabled?: boolean | null
        connector?: string | null
        channel?: string | null
      }
        | null
      discord?: 
        | {
        enabled?: boolean | null
        webhook?: string | null
      }
        | null
    }
      | null
    icon?: 
      | {
      url?: string | null
      alt?: string | null
    }
      | null
    notify?: 
      | {
      enabled?: boolean | null
      macos?: boolean | null
      slack?: 
        | {
        enabled?: boolean | null
        connector?: string | null
        channel?: string | null
      }
        | null
      discord?: 
        | {
        enabled?: boolean | null
        webhook?: string | null
      }
        | null
      events?: 
        | {
        sessionIdle?: boolean | null
        sessionError?: boolean | null
        permissionAsked?: boolean | null
        questionAsked?: boolean | null
      }
        | null
      idleMinMs?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
      rateLimit?: 
        | {
        windowMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        maxPerWindow?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      retry?: 
        | {
        attempts?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        delay?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        factor?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        maxDelay?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        timeoutMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      breaker?: 
        | {
        failures?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        cooldownMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      quietHours?: 
        | {
        enabled?: boolean | null
        start?: string | null
        end?: string | null
        suppress?: 
          | ("macos" | "slack" | "discord")[]
          | null
      }
        | null
    }
      | null
  }
    | null
  mobile?: 
    | {
    tophat?: 
      | {
      enabled?: boolean | null
      cliPath?: string | null
      defaultPlatform?: "ios" | "android" | null
      defaultDestination?: 
        | "device" | "simulator" | "emulator"
        | null
      autoDetect?: boolean | null
    }
      | null
  }
    | null
}
Example response from schema
{
  "$schema": "",
  "theme": "",
  "locale": {
    "language": "",
    "region": "",
    "locale": "",
    "timezone": "",
    "currency": "",
    "autoDetect": false,
    "replyLanguage": false
  },
  "keybinds": {
    "leader": "",
    "app_exit": "",
    "editor_open": "",
    "theme_list": "",
    "sidebar_toggle": "",
    "scrollbar_toggle": "",
    "username_toggle": "",
    "status_view": "",
    "sync_view": "",
    "session_export": "",
    "session_new": "",
    "session_list": "",
    "session_timeline": "",
    "session_fork": "",
    "session_rename": "",
    "session_delete": "",
    "session_pin_toggle": "",
    "session_scope_toggle": "",
    "session_tab_back": "",
    "session_tab_forward": "",
    "session_quick_switch_1": "",
    "session_quick_switch_2": "",
    "session_quick_switch_3": "",
    "session_quick_switch_4": "",
    "session_quick_switch_5": "",
    "session_quick_switch_6": "",
    "session_quick_switch_7": "",
    "session_quick_switch_8": "",
    "session_quick_switch_9": "",
    "stash_delete": "",
    "model_provider_list": "",
    "model_favorite_toggle": "",
    "session_share": "",
    "session_unshare": "",
    "session_interrupt": "",
    "session_codebro_open": "",
    "subtask_background": "",
    "subtask_picker": "",
    "session_compact": "",
    "messages_page_up": "",
    "messages_page_down": "",
    "messages_line_up": "",
    "messages_line_down": "",
    "messages_half_page_up": "",
    "messages_half_page_down": "",
    "messages_first": "",
    "messages_last": "",
    "messages_next": "",
    "messages_previous": "",
    "messages_last_user": "",
    "messages_copy": "",
    "messages_undo": "",
    "messages_redo": "",
    "messages_toggle_conceal": "",
    "tool_details": "",
    "model_list": "",
    "model_cycle_recent": "",
    "model_cycle_recent_reverse": "",
    "model_cycle_favorite": "",
    "model_cycle_favorite_reverse": "",
    "command_list": "",
    "agent_list": "",
    "agent_cycle": "",
    "agent_cycle_reverse": "",
    "permission_mode": "",
    "variant_cycle": "",
    "input_clear": "",
    "input_paste": "",
    "input_submit": "",
    "input_newline": "",
    "input_move_left": "",
    "input_move_right": "",
    "input_move_up": "",
    "input_move_down": "",
    "input_select_left": "",
    "input_select_right": "",
    "input_select_up": "",
    "input_select_down": "",
    "input_line_home": "",
    "input_line_end": "",
    "input_select_line_home": "",
    "input_select_line_end": "",
    "input_visual_line_home": "",
    "input_visual_line_end": "",
    "input_select_visual_line_home": "",
    "input_select_visual_line_end": "",
    "input_buffer_home": "",
    "input_buffer_end": "",
    "input_select_buffer_home": "",
    "input_select_buffer_end": "",
    "input_delete_line": "",
    "input_delete_to_line_end": "",
    "input_delete_to_line_start": "",
    "input_backspace": "",
    "input_delete": "",
    "input_undo": "",
    "input_redo": "",
    "input_word_forward": "",
    "input_word_backward": "",
    "input_select_word_forward": "",
    "input_select_word_backward": "",
    "input_delete_word_forward": "",
    "input_delete_word_backward": "",
    "history_previous": "",
    "history_next": "",
    "session_child_cycle": "",
    "session_child_cycle_reverse": "",
    "session_parent": "",
    "session_child_close": "",
    "terminal_suspend": "",
    "terminal_title_toggle": "",
    "tips_toggle": "",
    "voice_record": "",
    "app_support": ""
  },
  "logLevel": "DEBUG",
  "tui": {
    "scroll_speed": 0,
    "scroll_acceleration": {
      "enabled": false
    },
    "diff_style": "auto",
    "mouse": false,
    "sound": false,
    "bg_pulse": false,
    "turn_tokens": false
  },
  "ads": {
    "enabled": false,
    "ratio": 0,
    "items": [
      {
        "id": null,
        "text": null,
        "url": null,
        "enabled": null
      }
    ]
  },
  "server": {
    "port": 0,
    "hostname": "",
    "mdns": false,
    "cors": [
      ""
    ]
  },
  "remote": {
    "enabled": false,
    "enableTunnel": false,
    "provider": "localtunnel",
    "askOnExistingSession": false
  },
  "teleport": {
    "url": "",
    "token": ""
  },
  "command": {},
  "reference": {},
  "watcher": {
    "ignore": [
      ""
    ]
  },
  "plugin": [
    ""
  ],
  "snapshot": false,
  "sync": {
    "url": "",
    "token": "",
    "autostart": false
  },
  "analytics": {
    "share": false,
    "endpoint": ""
  },
  "share": "manual",
  "autoshare": false,
  "autoupdate": false,
  "disabled_providers": [
    ""
  ],
  "enabled_providers": [
    ""
  ],
  "model": "",
  "small_model": "",
  "default_agent": "",
  "username": "",
  "mode": {},
  "agent": {},
  "provider": {},
  "mcp": {},
  "connectors": {},
  "formatter": false,
  "websearch": {
    "provider": "exa",
    "apiKey": "",
    "url": "",
    "tool": ""
  },
  "lsp": false,
  "instructions": [
    ""
  ],
  "layout": "auto",
  "permission": {},
  "permission_mode": "default",
  "auto_mode": {
    "environment": [
      ""
    ],
    "allow": [
      ""
    ],
    "soft_deny": [
      ""
    ],
    "hard_deny": [
      ""
    ],
    "classify_all_shell": false,
    "model": "",
    "disable": false
  },
  "tools": {},
  "tool": {
    "allow": [
      ""
    ],
    "pin": {},
    "eager": [
      ""
    ]
  },
  "enterprise": {
    "url": ""
  },
  "compaction": {
    "auto": false,
    "prune": false,
    "reserved": 0
  },
  "experimental": {
    "policies": [
      {
        "effect": null,
        "action": null,
        "resource": null
      }
    ],
    "hook": {
      "file_edited": {},
      "session_completed": []
    },
    "queued_message_wrap": {
      "header": "",
      "footer": ""
    },
    "chatMaxRetries": 0,
    "disable_paste_summary": false,
    "batch_tool": false,
    "openTelemetry": false,
    "primary_tools": [
      ""
    ],
    "continue_loop_on_deny": false,
    "brain": false,
    "brainMinHours": 0,
    "brainMinSessions": 0,
    "brainModel": "",
    "memory": false,
    "mcp_timeout": 0,
    "tool_timeout": 0,
    "task_timeout": 0,
    "nativeLlm": false,
    "tui": {
      "cacheEviction": false,
      "messageVirtualization": false,
      "explorationGrouping": false
    },
    "requests": {
      "latestOnlyLspRefresh": false
    },
    "events": {
      "schemaEncoding": false
    }
  },
  "rag": {
    "model": "",
    "provider": ""
  },
  "image": {
    "model": "",
    "provider": ""
  },
  "browser": null,
  "computer": {
    "mode": "sandbox",
    "width": 0,
    "height": 0
  },
  "attachment": {
    "image": {
      "auto_resize": false,
      "max_width": 0,
      "max_height": 0,
      "max_base64_bytes": 0
    }
  },
  "speak": {
    "provider": "",
    "model": "",
    "modelId": "",
    "outputFormat": ""
  },
  "notifications": {
    "todo": {
      "enabled": false,
      "macos": false,
      "slack": {
        "enabled": null,
        "connector": null,
        "channel": null
      },
      "discord": {
        "enabled": null,
        "webhook": null
      }
    },
    "icon": {
      "url": "",
      "alt": ""
    },
    "notify": {
      "enabled": false,
      "macos": false,
      "slack": {
        "enabled": null,
        "connector": null,
        "channel": null
      },
      "discord": {
        "enabled": null,
        "webhook": null
      },
      "events": {
        "sessionIdle": null,
        "sessionError": null,
        "permissionAsked": null,
        "questionAsked": null
      },
      "idleMinMs": 0,
      "rateLimit": {
        "windowMs": null,
        "maxPerWindow": null
      },
      "retry": {
        "attempts": null,
        "delay": null,
        "factor": null,
        "maxDelay": null,
        "timeoutMs": null
      },
      "breaker": {
        "failures": null,
        "cooldownMs": null
      },
      "quietHours": {
        "enabled": null,
        "start": null,
        "end": null,
        "suppress": null
      }
    }
  },
  "mobile": {
    "tophat": {
      "enabled": false,
      "cliPath": "",
      "defaultPlatform": "ios",
      "defaultDestination": "device",
      "autoDetect": false
    }
  }
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.oauth.clientId.set
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.oauth.clientId.set({
  ...
})
Try it
post /mobile/github/oauth/device # mobile.github.oauth.device.start
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 MobileGithubDeviceAuthStart application/json
{
  deviceCode: string
  userCode: string
  verificationUri: string
  verificationUriComplete?: string | null
  expiresAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  interval: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
Example response from schema
{
  "deviceCode": "",
  "userCode": "",
  "verificationUri": "",
  "verificationUriComplete": "",
  "expiresAt": 0,
  "interval": 0
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.oauth.device.start
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.oauth.device.start({
  ...
})
Try it
post /mobile/github/oauth/device/poll # mobile.github.oauth.device.poll
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  deviceCode: string
}
Responses
200 MobileGithubDeviceAuthPollResult application/json
{
  status: 
    | "pending"
    | "approved"
    | "denied"
    | "expired"
  interval?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  user?: 
    | {
    login: string
    name?: string | null | null
    avatar_url?: string | null
  }
    | null
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
Example response from schema
{
  "status": "pending",
  "interval": 0,
  "user": {
    "login": "",
    "name": "",
    "avatar_url": ""
  }
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.oauth.device.poll
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.oauth.device.poll({
  ...
})
Try it

Auth

post /mobile/github/auth # mobile.github.auth.set
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  token: string
}
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.auth.set
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.auth.set({
  ...
})
Try it
delete /mobile/github/auth # mobile.github.auth.remove
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.auth.remove
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.auth.remove({
  ...
})
Try it

This changes or removes server state, against whatever base URL is set above.

Import

post /mobile/github/import # mobile.github.import
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  owner: string
  repo: string
  cloneUrl: string
  defaultBranch: string
  private?: boolean | null
}
Responses
200 Success application/json
{
  import: {
    owner: string
    repo: string
    fullName: string
    directory: string
    cloneUrl: string
    defaultBranch: string
    private: boolean
    importedAt: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    updatedAt: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    projectID?: string | null
  }
  project: {
    id: string
    worktree: string
    canonical: string
    vcs?: "git" | null
    name?: string | null
    icon?: 
      | {
      url?: string | null
      override?: string | null
      color?: string | null
    }
      | null
    commands?: 
      | {
      start?: string | null
    }
      | null
    time: {
      created: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      updated: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      initialized?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
    }
    sandboxes: string[]
  }
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "import": {
    "owner": "",
    "repo": "",
    "fullName": "",
    "directory": "",
    "cloneUrl": "",
    "defaultBranch": "",
    "private": false,
    "importedAt": 0,
    "updatedAt": 0,
    "projectID": ""
  },
  "project": {
    "id": "",
    "worktree": "",
    "canonical": "",
    "vcs": "git",
    "name": "",
    "icon": {
      "url": "",
      "override": "",
      "color": ""
    },
    "commands": {
      "start": ""
    },
    "time": {
      "created": 0,
      "updated": 0,
      "initialized": 0
    },
    "sandboxes": [
      ""
    ]
  }
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.import
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.import({
  ...
})
Try it

Session

post /mobile/github/session # mobile.github.session.create
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  owner: string
  repo: string
  cloneUrl: string
  htmlUrl?: string | null
  defaultBranch: string
  baseBranch: string
  private?: boolean | null
  title?: string | null
  executionTarget?: MobileExecutionTarget | null
}
Responses
200 MobileGithubSessionCreateResult application/json
{
  session: Session
  worktree: Worktree_1
  project: Project_1
  workspace?: Workspace | null
}
401 MobileUnauthorized application/json
{
  name: "Unauthorized"
  error: string
}
Example response from schema
{
  "session": {
    "id": "",
    "slug": "",
    "projectID": "",
    "directory": "",
    "parentID": "",
    "workspaceID": "",
    "summary": {
      "additions": 0,
      "deletions": 0,
      "files": 0,
      "diffs": []
    },
    "share": {
      "url": ""
    },
    "github": {
      "owner": "",
      "repo": "",
      "fullName": "",
      "baseBranch": "",
      "headBranch": "",
      "repositoryDirectory": "",
      "cloneUrl": "",
      "htmlUrl": "",
      "private": false,
      "worktree": {
        "name": null,
        "branch": null,
        "directory": null,
        "repositoryDirectory": null,
        "cleanedAt": null
      },
      "pullRequest": {
        "number": null,
        "url": null,
        "title": null
      },
      "lastCommitSha": "",
      "publishedAt": 0,
      "publishError": ""
    },
    "worktree": {
      "name": "",
      "branch": "",
      "directory": "",
      "repositoryDirectory": "",
      "cleanedAt": 0
    },
    "mobile": {
      "platforms": [],
      "primaryPlatform": "",
      "method": "",
      "detectedAt": 0,
      "buildStatus": "unknown",
      "lastBuildAt": 0,
      "artifacts": []
    },
    "title": "",
    "activeCommand": "",
    "version": "",
    "time": {
      "created": 0,
      "updated": 0,
      "compacting": 0,
      "archived": 0
    },
    "permission": [
      {
        "permission": null,
        "pattern": null,
        "action": null
      }
    ],
    "skills": [
      ""
    ],
    "disabledInstructions": [
      ""
    ],
    "disabledTools": {},
    "revert": {
      "messageID": "",
      "partID": "",
      "snapshot": "",
      "diff": ""
    },
    "lastModel": {
      "providerID": "",
      "modelID": ""
    }
  },
  "worktree": {
    "name": "",
    "branch": "",
    "directory": ""
  },
  "project": {
    "id": "",
    "worktree": "",
    "canonical": "",
    "vcs": "git",
    "name": "",
    "icon": {
      "url": "",
      "override": "",
      "color": ""
    },
    "commands": {
      "start": ""
    },
    "time": {
      "created": 0,
      "updated": 0,
      "initialized": 0
    },
    "sandboxes": [
      ""
    ]
  },
  "workspace": {
    "id": "",
    "name": "",
    "timeUsed": 0,
    "branch": "",
    "projectID": "",
    "config": {
      "directory": "",
      "type": "worktree",
      "name": "",
      "strategy": "git",
      "eventLimit": 0
    }
  }
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.github.session.create
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.github.session.create({
  ...
})
Try it

Status

get /mobile/git/status # mobile.git.status
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 MobileGitStatus application/json
{
  branch: string
  staged: MobileGitChange[]
  unstaged: MobileGitChange[]
  untracked: string[]
  commitsAhead: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  commitsBehind: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  lastCommit?: 
    | {
    sha: string
    message: string
    author: string
    timestamp: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
  }
    | null
}
Example response from schema
{
  "branch": "",
  "staged": [
    {
      "status": "added",
      "path": "",
      "additions": 0,
      "deletions": 0,
      "oldPath": ""
    }
  ],
  "unstaged": [
    {
      "status": "added",
      "path": "",
      "additions": 0,
      "deletions": 0,
      "oldPath": ""
    }
  ],
  "untracked": [
    ""
  ],
  "commitsAhead": 0,
  "commitsBehind": 0,
  "lastCommit": {
    "sha": "",
    "message": "",
    "author": "",
    "timestamp": 0
  }
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.status
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.status({
  ...
})
Try it

Diff

get /mobile/git/diff # mobile.git.diff
Parameters
Name In Type Required
file query string | null optional
staged query "true" | "false" | null optional
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  file: string
  oldPath?: string | null
  hunks: ({
    header: {
      oldStart: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      oldLines: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      newStart: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      newLines: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
    }
    lines: ({
      type: "add" | "remove" | "context"
      text: string
      oldLineNumber?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
      newLineNumber?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
    })[]
  })[]
  isBinary: boolean
  additions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  deletions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
})[]
Example response from schema
[
  {
    "file": "",
    "oldPath": "",
    "hunks": [
      {
        "header": null,
        "lines": null
      }
    ],
    "isBinary": false,
    "additions": 0,
    "deletions": 0
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.diff
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.diff({
  ...
})
Try it

Commits

get /mobile/git/commits # mobile.git.commits
Parameters
Name In Type Required
limit query string | null optional
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  sha: string
  message: string
  author: {
    name: string
    email: string
  }
  timestamp: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  filesCount: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  additions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  deletions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
})[]
Example response from schema
[
  {
    "sha": "",
    "message": "",
    "author": {
      "name": "",
      "email": ""
    },
    "timestamp": 0,
    "filesCount": 0,
    "additions": 0,
    "deletions": 0
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.commits
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.commits({
  ...
})
Try it

Branches

get /mobile/git/branches # mobile.git.branches
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 Success application/json
({
  name: string
  isCurrent: boolean
  isProtected: boolean
  aheadBy: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  behindBy: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
})[]
Example response from schema
[
  {
    "name": "",
    "isCurrent": false,
    "isProtected": false,
    "aheadBy": 0,
    "behindBy": 0
  }
]

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.branches
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.branches({
  ...
})
Try it

Commit

post /mobile/git/commit # mobile.git.commit
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  message: string
  files?: string[] | null
  amend?: boolean | null
  stagedOnly?: boolean | null
}
Responses
200 Success application/json
{
  sha: string
  message: string
}
400 MobileBadRequest application/json
{
  name: "BadRequest"
  error: string
}
Example response from schema
{
  "sha": "",
  "message": ""
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.commit
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.commit({
  ...
})
Try it

Checkout

post /mobile/git/checkout # mobile.git.checkout
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  branch: string
  create?: boolean | null
}
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.checkout
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.checkout({
  ...
})
Try it

Stage

post /mobile/git/stage # mobile.git.stage
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  files: string[]
}
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.stage
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.stage({
  ...
})
Try it

Unstage

post /mobile/git/unstage # mobile.git.unstage
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  files: string[]
}
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.unstage
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.unstage({
  ...
})
Try it

Discard

post /mobile/git/discard # mobile.git.discard
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Request body · required · application/json
{
  files: string[]
}
Responses
200 MobileSuccess application/json
{
  success: true
}
Example response from schema
{
  "success": true
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.discard
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.discard({
  ...
})
Try it

Push

post /mobile/git/push # mobile.git.push
Parameters
Name In Type Required
upstream query string | null optional
directory query string optional
workspace query string optional
Responses
200 Success application/json
{
  success: true
  pushed: boolean
}
Example response from schema
{
  "success": true,
  "pushed": false
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.push
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.push({
  ...
})
Try it

Pull

post /mobile/git/pull # mobile.git.pull
Parameters
Name In Type Required
directory query string optional
workspace query string optional
Responses
200 Success application/json
{
  success: true
  pulled: boolean
  conflicts?: string[] | null
}
Example response from schema
{
  "success": true,
  "pulled": false,
  "conflicts": [
    ""
  ]
}

Generated from the response schema — field values are placeholders, the shape is real.

SDK example
mobile.git.pull
ts
import { createNikcliClient } from "@nikcli-ai/sdk/httpapi"

const client = createNikcliClient()
await client.mobile.git.pull({
  ...
})
Try it

Schemas

The 71 schemas reachable from these endpoints. Each is shown one level deep; nested types link to their own entry below. Names ending in _2, _3 and so on are the OpenAPI emitter disambiguating same-named schemas declared by different HttpApi groups — they are distinct shapes, not duplicates.

AdsConfig_1
{
  enabled?: boolean | null
  ratio?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  items?: AdsItemConfig_1[] | null
}
AdsItemConfig_1
{
  id: string
  text: string
  url?: string | null
  enabled?: boolean | null
}
AgentConfig_1
{
  [key: string]: unknown | null
}
AttachmentConfig_1
{
  image?: 
    | {
    auto_resize?: boolean | null
    max_width?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    max_height?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    max_base64_bytes?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
    | null
}
AutoModeConfig_1
{
  environment?: string[] | null
  allow?: string[] | null
  soft_deny?: string[] | null
  hard_deny?: string[] | null
  classify_all_shell?: boolean | null
  model?: string | null
  disable?: boolean | null
}
ComputerConfig_1
{
  mode?: "sandbox" | "host" | null
  width?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  height?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
ConnectorDiscord_1
{
  type: "discord"
  botToken?: string | null
  enabled?: boolean | null
}
ConnectorFigma_1
{
  type: "figma"
  token?: string | null
  enabled?: boolean | null
}
ConnectorGChat_1
{
  type: "gchat"
  botToken?: string | null
  enabled?: boolean | null
}
ConnectorGithub_1
{
  type: "github"
  token?: string | null
  oauthClientId?: string | null
  clientId?: string | null
  enabled?: boolean | null
}
ConnectorLinear_1
{
  type: "linear"
  botToken?: string | null
  enabled?: boolean | null
}
ConnectorLovable_1
{
  type: "lovable"
  token?: string | null
  apiKey?: string | null
  enabled?: boolean | null
}
ConnectorSlack_1
{
  type: "slack"
  botToken?: string | null
  teamId?: string | null
  enabled?: boolean | null
}
ConnectorTeams_1
{
  type: "teams"
  botToken?: string | null
  enabled?: boolean | null
}
FileDiff
{
  file: string
  patch: string
  additions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  deletions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  status?: 
    | "added" | "deleted" | "modified"
    | null
  before: string
  after: string
}
ImageConfig_1
{
  model?: string | null
  provider?: string | null
}
KeybindsConfig_1
{
  leader?: string | null
  app_exit?: string | null
  editor_open?: string | null
  theme_list?: string | null
  sidebar_toggle?: string | null
  scrollbar_toggle?: string | null
  username_toggle?: string | null
  status_view?: string | null
  sync_view?: string | null
  session_export?: string | null
  session_new?: string | null
  session_list?: string | null
  session_timeline?: string | null
  session_fork?: string | null
  session_rename?: string | null
  session_delete?: string | null
  session_pin_toggle?: string | null
  session_scope_toggle?: string | null
  session_tab_back?: string | null
  session_tab_forward?: string | null
  session_quick_switch_1?: string | null
  session_quick_switch_2?: string | null
  session_quick_switch_3?: string | null
  session_quick_switch_4?: string | null
  session_quick_switch_5?: string | null
  session_quick_switch_6?: string | null
  session_quick_switch_7?: string | null
  session_quick_switch_8?: string | null
  session_quick_switch_9?: string | null
  stash_delete?: string | null
  model_provider_list?: string | null
  model_favorite_toggle?: string | null
  session_share?: string | null
  session_unshare?: string | null
  session_interrupt?: string | null
  session_codebro_open?: string | null
  subtask_background?: string | null
  subtask_picker?: string | null
  session_compact?: string | null
  messages_page_up?: string | null
  messages_page_down?: string | null
  messages_line_up?: string | null
  messages_line_down?: string | null
  messages_half_page_up?: string | null
  messages_half_page_down?: string | null
  messages_first?: string | null
  messages_last?: string | null
  messages_next?: string | null
  messages_previous?: string | null
  messages_last_user?: string | null
  messages_copy?: string | null
  messages_undo?: string | null
  messages_redo?: string | null
  messages_toggle_conceal?: string | null
  tool_details?: string | null
  model_list?: string | null
  model_cycle_recent?: string | null
  model_cycle_recent_reverse?: string | null
  model_cycle_favorite?: string | null
  model_cycle_favorite_reverse?: string | null
  command_list?: string | null
  agent_list?: string | null
  agent_cycle?: string | null
  agent_cycle_reverse?: string | null
  permission_mode?: string | null
  variant_cycle?: string | null
  input_clear?: string | null
  input_paste?: string | null
  input_submit?: string | null
  input_newline?: string | null
  input_move_left?: string | null
  input_move_right?: string | null
  input_move_up?: string | null
  input_move_down?: string | null
  input_select_left?: string | null
  input_select_right?: string | null
  input_select_up?: string | null
  input_select_down?: string | null
  input_line_home?: string | null
  input_line_end?: string | null
  input_select_line_home?: string | null
  input_select_line_end?: string | null
  input_visual_line_home?: string | null
  input_visual_line_end?: string | null
  input_select_visual_line_home?: string | null
  input_select_visual_line_end?: string | null
  input_buffer_home?: string | null
  input_buffer_end?: string | null
  input_select_buffer_home?: string | null
  input_select_buffer_end?: string | null
  input_delete_line?: string | null
  input_delete_to_line_end?: string | null
  input_delete_to_line_start?: string | null
  input_backspace?: string | null
  input_delete?: string | null
  input_undo?: string | null
  input_redo?: string | null
  input_word_forward?: string | null
  input_word_backward?: string | null
  input_select_word_forward?: string | null
  input_select_word_backward?: string | null
  input_delete_word_forward?: string | null
  input_delete_word_backward?: string | null
  history_previous?: string | null
  history_next?: string | null
  session_child_cycle?: string | null
  session_child_cycle_reverse?: string | null
  session_parent?: string | null
  session_child_close?: string | null
  terminal_suspend?: string | null
  terminal_title_toggle?: string | null
  tips_toggle?: string | null
  voice_record?: string | null
  app_support?: string | null
}
LayoutConfig_1
"auto" | "stretch"
LogLevel_1
  | "DEBUG"
  | "INFO"
  | "WARN"
  | "ERROR"
McpLocalConfig_1
{
  type: "local"
  command: string[]
  environment?: 
    | {
    [key: string]: string
  }
    | null
  enabled?: boolean | null
  timeout?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
McpOAuthConfig_1
{
  clientId?: string | null
  clientSecret?: string | null
  scope?: string | null
}
McpRemoteConfig_1
{
  type: "remote"
  url: string
  enabled?: boolean | null
  headers?: 
    | {
    [key: string]: string
  }
    | null
  oauth?: McpOAuthConfig_1 | false | null
  timeout?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
MobileBadRequest
{
  name: "BadRequest"
  error: string
}
MobileConfigInfo
{
  $schema?: string | null
  theme?: string | null
  locale?: 
    | {
    language?: string | null
    region?: string | null
    locale?: string | null
    timezone?: string | null
    currency?: string | null
    autoDetect?: boolean | null
    replyLanguage?: boolean | string | null
  }
    | null
  keybinds?: KeybindsConfig_1 | null
  logLevel?: LogLevel_1 | null
  tui?: 
    | {
    scroll_speed?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    scroll_acceleration?: 
      | {
      enabled: boolean
    }
      | null
    diff_style?: "auto" | "stacked" | null
    mouse?: boolean | null
    sound?: boolean | null
    bg_pulse?: boolean | null
    turn_tokens?: boolean | null
  }
    | null
  ads?: AdsConfig_1 | null
  server?: ServerConfig_1 | null
  remote?: RemoteConfig_1 | null
  teleport?: TeleportConfig_1 | null
  command?: 
    | {
    [key: string]: {
      template?: string | null
      description?: string | null
      agent?: string | null
      model?: string | null
      subtask?: boolean | null
      aliases?: string[] | null
    }
  }
    | null
  reference?: 
    | {
    [key: string]: ReferenceConfig_1
  }
    | null
  watcher?: 
    | {
    ignore?: string[] | null
  }
    | null
  plugin?: string[] | null
  snapshot?: boolean | null
  sync?: 
    | {
    url?: string | null
    token?: string | null
    autostart?: boolean | null
  }
    | null
  analytics?: 
    | {
    share?: boolean | null
    endpoint?: string | null
  }
    | null
  share?: "manual" | "auto" | "disabled" | null
  autoshare?: boolean | null
  autoupdate?: boolean | "notify" | null
  disabled_providers?: string[] | null
  enabled_providers?: string[] | null
  model?: string | null
  small_model?: string | null
  default_agent?: string | null
  username?: string | null
  mode?: 
    | {
    [key: string]: AgentConfig_1 | null
  }
    | null
  agent?: 
    | {
    [key: string]: AgentConfig_1 | null
  }
    | null
  provider?: 
    | {
    [key: string]: ProviderConfig_1
  }
    | null
  mcp?: 
    | {
    [key: string]: 
      | McpLocalConfig_1 | McpRemoteConfig_1
      | {
      enabled: boolean
    }
  }
    | null
  connectors?: 
    | {
    [key: string]: 
      | 
      | ConnectorFigma_1
      | ConnectorSlack_1
      | ConnectorGithub_1
      | ConnectorLovable_1
      | ConnectorDiscord_1
      | ConnectorTeams_1
      | ConnectorGChat_1
      | ConnectorLinear_1
      | {
      enabled: boolean
    }
  }
    | null
  formatter?: 
    | 
    | false
    | true
    | {
    [key: string]: {
      disabled?: boolean | null
      command?: string[] | null
      environment?: 
        | {
        [key: string]: string
      }
        | null
      extensions?: string[] | null
    }
  }
    | null
  websearch?: 
    | {
    provider?: "exa" | "parallel" | "mcp" | null
    apiKey?: string | null
    url?: string | null
    tool?: string | null
  }
    | null
  lsp?: 
    | 
    | false
    | {
    [key: string]: 
      | {
      disabled: true
    }
      | {
      command: string[]
      extensions?: string[] | null
      disabled?: boolean | null
      env?: 
        | {
        [key: string]: string
      }
        | null
      initialization?: { [key: string]: unknown } | null
      min_severity?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
    }
  }
    | null
  instructions?: string[] | null
  layout?: LayoutConfig_1 | null
  permission?: PermissionConfig | null
  permission_mode?: PermissionModeConfig_1 | null
  auto_mode?: AutoModeConfig_1 | null
  tools?: 
    | {
    [key: string]: boolean
  }
    | null
  tool?: 
    | {
    allow?: string[] | null
    pin?: 
      | {
      [key: string]: string
    }
      | null
    eager?: string[] | null
  }
    | null
  enterprise?: 
    | {
    url?: string | null
  }
    | null
  compaction?: 
    | {
    auto?: boolean | null
    prune?: boolean | null
    reserved?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
    | null
  experimental?: 
    | {
    policies?: PolicyStatementConfig_1[] | null
    hook?: 
      | {
      file_edited?: 
        | {
        [key: string]: ({
          command: string[]
          environment?: 
            | {
            [key: string]: string
          }
            | null
        })[]
      }
        | null
      session_completed?: 
        | ({
        command: string[]
        environment?: 
          | {
          [key: string]: string
        }
          | null
      })[]
        | null
    }
      | null
    queued_message_wrap?: 
      | 
      | {
      header: string
      footer: string
    }
      | "default"
      | boolean
      | null
      | null
    chatMaxRetries?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    disable_paste_summary?: boolean | null
    batch_tool?: boolean | null
    openTelemetry?: boolean | null
    primary_tools?: string[] | null
    continue_loop_on_deny?: boolean | null
    brain?: boolean | null
    brainMinHours?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    brainMinSessions?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    brainModel?: string | null
    memory?: boolean | null
    mcp_timeout?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    tool_timeout?: 
      | 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | false
      | null
    task_timeout?: 
      | 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | false
      | null
    nativeLlm?: boolean | null
    tui?: 
      | {
      cacheEviction?: boolean | null
      messageVirtualization?: boolean | null
      explorationGrouping?: boolean | null
    }
      | null
    requests?: 
      | {
      latestOnlyLspRefresh?: boolean | null
    }
      | null
    events?: 
      | {
      schemaEncoding?: boolean | null
    }
      | null
  }
    | null
  rag?: RagConfig_1 | null
  image?: ImageConfig_1 | null
  browser?: unknown | null
  computer?: ComputerConfig_1 | null
  attachment?: AttachmentConfig_1 | null
  speak?: SpeakConfig_1 | null
  notifications?: 
    | {
    todo?: 
      | {
      enabled?: boolean | null
      macos?: boolean | null
      slack?: 
        | {
        enabled?: boolean | null
        connector?: string | null
        channel?: string | null
      }
        | null
      discord?: 
        | {
        enabled?: boolean | null
        webhook?: string | null
      }
        | null
    }
      | null
    icon?: 
      | {
      url?: string | null
      alt?: string | null
    }
      | null
    notify?: 
      | {
      enabled?: boolean | null
      macos?: boolean | null
      slack?: 
        | {
        enabled?: boolean | null
        connector?: string | null
        channel?: string | null
      }
        | null
      discord?: 
        | {
        enabled?: boolean | null
        webhook?: string | null
      }
        | null
      events?: 
        | {
        sessionIdle?: boolean | null
        sessionError?: boolean | null
        permissionAsked?: boolean | null
        questionAsked?: boolean | null
      }
        | null
      idleMinMs?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
      rateLimit?: 
        | {
        windowMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        maxPerWindow?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      retry?: 
        | {
        attempts?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        delay?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        factor?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        maxDelay?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        timeoutMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      breaker?: 
        | {
        failures?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        cooldownMs?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      }
        | null
      quietHours?: 
        | {
        enabled?: boolean | null
        start?: string | null
        end?: string | null
        suppress?: 
          | ("macos" | "slack" | "discord")[]
          | null
      }
        | null
    }
      | null
  }
    | null
  mobile?: 
    | {
    tophat?: 
      | {
      enabled?: boolean | null
      cliPath?: string | null
      defaultPlatform?: "ios" | "android" | null
      defaultDestination?: 
        | "device" | "simulator" | "emulator"
        | null
      autoDetect?: boolean | null
    }
      | null
  }
    | null
}
MobileExecutionTarget
"local" | "container"
MobileGitBranch
{
  name: string
  isCurrent: boolean
  isProtected: boolean
  aheadBy: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  behindBy: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
}
MobileGitChange
{
  status: 
    | "added"
    | "modified"
    | "deleted"
    | "renamed"
  path: string
  additions?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  deletions?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  oldPath?: string | null
}
MobileGitCommit
{
  sha: string
  message: string
  author: {
    name: string
    email: string
  }
  timestamp: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  filesCount: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  additions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  deletions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
}
MobileGitFileDiff
{
  file: string
  oldPath?: string | null
  hunks: ({
    header: {
      oldStart: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      oldLines: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      newStart: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
      newLines: 
        | number
        | "Infinity" | "-Infinity" | "NaN"
    }
    lines: ({
      type: "add" | "remove" | "context"
      text: string
      oldLineNumber?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
      newLineNumber?: 
        | 
        | number
        | "Infinity" | "-Infinity" | "NaN"
        | null
    })[]
  })[]
  isBinary: boolean
  additions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  deletions: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
}
MobileGithubBranch
{
  name: string
  protected?: boolean | null
  commit: {
    sha: string
  }
}
MobileGithubDeviceAuthPollResult
{
  status: 
    | "pending"
    | "approved"
    | "denied"
    | "expired"
  interval?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  user?: 
    | {
    login: string
    name?: string | null | null
    avatar_url?: string | null
  }
    | null
}
MobileGithubDeviceAuthStart
{
  deviceCode: string
  userCode: string
  verificationUri: string
  verificationUriComplete?: string | null
  expiresAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  interval: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
}
MobileGithubImport
{
  owner: string
  repo: string
  fullName: string
  directory: string
  cloneUrl: string
  defaultBranch: string
  private: boolean
  importedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  updatedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  projectID?: string | null
}
MobileGithubImportRequest
{
  owner: string
  repo: string
  cloneUrl: string
  defaultBranch: string
  private?: boolean | null
}
MobileGithubRerunInput
{
  failedOnly?: boolean | null
}
MobileGithubSessionCreateInput
{
  owner: string
  repo: string
  cloneUrl: string
  htmlUrl?: string | null
  defaultBranch: string
  baseBranch: string
  private?: boolean | null
  title?: string | null
  executionTarget?: MobileExecutionTarget | null
}
MobileGithubSessionCreateResult
{
  session: Session
  worktree: Worktree_1
  project: Project_1
  workspace?: Workspace | null
}
MobileGithubWorkflow
{
  id: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  name: string
  path: string
  state: string
  htmlUrl?: string | null
}
MobileGithubWorkflowDispatchInput
{
  ref: string
  inputs?: 
    | {
    [key: string]: string
  }
    | null
}
MobileGithubWorkflowJob
{
  id: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  name: string
  status: string
  conclusion?: string | null
  htmlUrl?: string | null
  startedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  completedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  durationMs?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  steps: MobileGithubWorkflowStep[]
}
MobileGithubWorkflowRun
{
  id: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  name: string
  workflowID?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  runNumber: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  attempt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  status: string
  conclusion?: string | null
  event: string
  branch: string
  sha: string
  title: string
  actor?: 
    | {
    login: string
    avatarUrl?: string | null
  }
    | null
  htmlUrl: string
  createdAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  updatedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  startedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  durationMs?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
MobileGithubWorkflowRunList
{
  runs: MobileGithubWorkflowRun[]
  totalCount: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  configured: boolean
}
MobileGithubWorkflowStep
{
  name: string
  number: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  status: string
  conclusion?: string | null
  startedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  completedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
MobileGitStatus
{
  branch: string
  staged: MobileGitChange[]
  unstaged: MobileGitChange[]
  untracked: string[]
  commitsAhead: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  commitsBehind: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  lastCommit?: 
    | {
    sha: string
    message: string
    author: string
    timestamp: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
  }
    | null
}
MobileSuccess
{
  success: true
}
MobileUnauthorized
{
  name: "Unauthorized"
  error: string
}
PermissionAction
"allow" | "deny" | "ask"
PermissionActionConfig
"ask" | "allow" | "deny"
PermissionConfig
{
  [key: string]: PermissionRuleConfig | null
}
PermissionModeConfig_1
"default" | "auto"
PermissionObjectConfig
{
  [key: string]: PermissionActionConfig
}
PermissionRule
{
  permission: string
  pattern: string
  action: PermissionAction
}
PermissionRuleConfig
PermissionActionConfig | PermissionObjectConfig
PermissionRuleset
PermissionRule[]
PolicyStatementConfig_1
{
  effect: "allow" | "deny"
  action: string
  resource: string
}
Project
{
  id: string
  worktree: string
  canonical: string
  vcs?: "git" | null
  name?: string | null
  icon?: 
    | {
    url?: string | null
    override?: string | null
    color?: string | null
  }
    | null
  commands?: 
    | {
    start?: string | null
  }
    | null
  time: {
    created: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    updated: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    initialized?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
  sandboxes: string[]
}
Project_1
{
  id: string
  worktree: string
  canonical: string
  vcs?: "git" | null
  name?: string | null
  icon?: 
    | {
    url?: string | null
    override?: string | null
    color?: string | null
  }
    | null
  commands?: 
    | {
    start?: string | null
  }
    | null
  time: {
    created: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    updated: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    initialized?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
  sandboxes: string[]
}
ProviderConfig_1
{
  api?: string | null
  name?: string | null
  env?: string[] | null
  id?: string | null
  npm?: string | null
  models?: 
    | {
    [key: string]: {
      id?: string | null
      name?: string | null
      family?: string | null
      release_date?: string | null
      attachment?: boolean | null
      reasoning?: boolean | null
      temperature?: boolean | null
      tool_call?: boolean | null
      interleaved?: 
        | 
        | true
        | {
        field: "reasoning_content" | "reasoning_details"
      }
        | null
      cost?: 
        | {
        input: 
          | number
          | "Infinity" | "-Infinity" | "NaN"
        output: 
          | number
          | "Infinity" | "-Infinity" | "NaN"
        cache_read?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        cache_write?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        context_over_200k?: 
          | {
          input: 
            | number
            | "Infinity" | "-Infinity" | "NaN"
          output: 
            | number
            | "Infinity" | "-Infinity" | "NaN"
          cache_read?: 
            | 
            | number
            | "Infinity" | "-Infinity" | "NaN"
            | null
          cache_write?: 
            | 
            | number
            | "Infinity" | "-Infinity" | "NaN"
            | null
        }
          | null
      }
        | null
      limit?: 
        | {
        context: 
          | number
          | "Infinity" | "-Infinity" | "NaN"
        input?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        output: 
          | number
          | "Infinity" | "-Infinity" | "NaN"
      }
        | null
      modalities?: 
        | {
        input: (
          | "text"
          | "audio"
          | "image"
          | "video"
          | "pdf")[]
        output: (
          | "text"
          | "audio"
          | "image"
          | "video"
          | "pdf")[]
      }
        | null
      experimental?: boolean | null
      status?: "alpha" | "beta" | "deprecated" | null
      options?: { [key: string]: unknown } | null
      headers?: 
        | {
        [key: string]: string
      }
        | null
      provider?: 
        | {
        npm: string
        api: string
      }
        | null
      reasoning_options?: 
        | (
        | {
        type: "effort"
        values: (string | null)[]
      }
        | {
        type: "toggle"
      }
        | {
        type: "budget_tokens"
        min?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
        max?: 
          | 
          | number
          | "Infinity" | "-Infinity" | "NaN"
          | null
      })[]
        | null
      variants?: 
        | {
        [key: string]: {
          [key: string]: unknown | null
        }
      }
        | null
      disabled?: boolean | null
    }
  }
    | null
  auth_provider?: string | null
  whitelist?: string[] | null
  blacklist?: string[] | null
  options?: 
    | {
    [key: string]: unknown | null
  }
    | null
}
RagConfig_1
{
  model?: string | null
  provider?: string | null
}
ReferenceConfig_1
  | {
  type: "git"
  repository: string
  branch?: string | null
  description?: string | null
}
  | {
  type: "local"
  path: string
  description?: string | null
}
RemoteConfig_1
{
  enabled?: boolean | null
  enableTunnel?: boolean | null
  provider?: 
    | 
    | "localtunnel"
    | "cloudflared"
    | "ngrok"
    | "remotosh"
    | "none"
    | null
  askOnExistingSession?: boolean | null
}
ServerConfig_1
{
  port?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  hostname?: string | null
  mdns?: boolean | null
  cors?: string[] | null
}
Session
{
  id: string
  slug: string
  projectID: string
  directory: string
  parentID?: string | null
  workspaceID?: string | null
  summary?: 
    | {
    additions: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    deletions: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    files: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    diffs?: FileDiff[] | null
  }
    | null
  share?: 
    | {
    url: string
  }
    | null
  github?: SessionGithub | null
  worktree?: SessionWorktree_1 | null
  mobile?: SessionMobile | null
  title: string
  activeCommand?: string | null
  version: string
  time: {
    created: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    updated: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    compacting?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    archived?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
  permission?: PermissionRuleset | null
  skills?: string[] | null
  disabledInstructions?: string[] | null
  disabledTools?: 
    | {
    [key: string]: boolean
  }
    | null
  revert?: 
    | {
    messageID: string
    partID?: string | null
    snapshot?: string | null
    diff?: string | null
  }
    | null
  lastModel?: 
    | {
    providerID: string
    modelID: string
  }
    | null
}
SessionGithub
{
  owner: string
  repo: string
  fullName: string
  baseBranch: string
  headBranch: string
  repositoryDirectory?: string | null
  cloneUrl?: string | null
  htmlUrl?: string | null
  private?: boolean | null
  worktree: SessionWorktree
  pullRequest?: 
    | {
    number: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    url: string
    title: string
  }
    | null
  lastCommitSha?: string | null
  publishedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  publishError?: string | null
}
SessionMobile
{
  platforms: (
    | "ios"
    | "android"
    | "expo"
    | "flutter"
    | "react-native")[]
  primaryPlatform: string
  method: string
  detectedAt: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  buildStatus?: 
    | 
    | "unknown"
    | "building"
    | "succeeded"
    | "failed"
    | null
  lastBuildAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
  artifacts?: 
    | ({
    platform: string
    path: string
    size?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
    createdAt?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  })[]
    | null
}
SessionWorktree
{
  name: string
  branch: string
  directory: string
  repositoryDirectory?: string | null
  cleanedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
SessionWorktree_1
{
  name: string
  branch: string
  directory: string
  repositoryDirectory?: string | null
  cleanedAt?: 
    | 
    | number
    | "Infinity" | "-Infinity" | "NaN"
    | null
}
SpeakConfig_1
{
  provider?: string | null
  model?: string | null
  modelId?: string | null
  outputFormat?: string | null
}
TeleportConfig_1
{
  url?: string | null
  token?: string | null
}
Workspace
{
  id: string
  name: string
  timeUsed: 
    | number
    | "Infinity" | "-Infinity" | "NaN"
  branch: string | null
  projectID: string
  config: 
    | {
    directory: string
    type: "worktree"
    name?: string | null
    strategy?: "git" | "cow" | null
    eventLimit?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
    | {
    directory: string
    type: "container"
    runtime: "docker" | "podman"
    image: string
    containerName: string
    port: 
      | number
      | "Infinity" | "-Infinity" | "NaN"
    serverUrl: string
    eventLimit?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
    | {
    directory: string
    type: "branch"
    branch?: string | null
    eventLimit?: 
      | 
      | number
      | "Infinity" | "-Infinity" | "NaN"
      | null
  }
}
Worktree_1
{
  name: string
  branch?: string | null
  directory: string
}