swagger.yaml

   1basePath: /v1
   2definitions:
   3  catwalk.Model:
   4    properties:
   5      can_reason:
   6        type: boolean
   7      context_window:
   8        type: integer
   9      cost_per_1m_in:
  10        type: number
  11      cost_per_1m_in_cached:
  12        type: number
  13      cost_per_1m_out:
  14        type: number
  15      cost_per_1m_out_cached:
  16        type: number
  17      default_max_tokens:
  18        type: integer
  19      default_reasoning_effort:
  20        type: string
  21      id:
  22        type: string
  23      name:
  24        type: string
  25      options:
  26        $ref: '#/definitions/catwalk.ModelOptions'
  27      reasoning_levels:
  28        items:
  29          type: string
  30        type: array
  31      supports_attachments:
  32        type: boolean
  33    type: object
  34  catwalk.ModelOptions:
  35    properties:
  36      frequency_penalty:
  37        type: number
  38      presence_penalty:
  39        type: number
  40      provider_options:
  41        additionalProperties: {}
  42        type: object
  43      temperature:
  44        type: number
  45      top_k:
  46        type: integer
  47      top_p:
  48        type: number
  49    type: object
  50  config.Attribution:
  51    properties:
  52      co_authored_by:
  53        type: boolean
  54      generated_with:
  55        type: boolean
  56      trailer_style:
  57        $ref: '#/definitions/config.TrailerStyle'
  58    type: object
  59  config.Completions:
  60    properties:
  61      max_depth:
  62        type: integer
  63      max_items:
  64        type: integer
  65    type: object
  66  config.HookConfig:
  67    properties:
  68      command:
  69        description: Shell command to execute.
  70        type: string
  71      matcher:
  72        description: Regex pattern tested against the tool name. Empty means match
  73          all.
  74        type: string
  75      timeout:
  76        description: Timeout in seconds. Default 30.
  77        type: integer
  78    type: object
  79  config.LSPConfig:
  80    properties:
  81      args:
  82        items:
  83          type: string
  84        type: array
  85      command:
  86        type: string
  87      disabled:
  88        type: boolean
  89      env:
  90        additionalProperties:
  91          type: string
  92        type: object
  93      filetypes:
  94        items:
  95          type: string
  96        type: array
  97      init_options:
  98        additionalProperties: {}
  99        type: object
 100      options:
 101        additionalProperties: {}
 102        type: object
 103      root_markers:
 104        items:
 105          type: string
 106        type: array
 107      timeout:
 108        type: integer
 109    type: object
 110  config.LSPs:
 111    additionalProperties:
 112      $ref: '#/definitions/config.LSPConfig'
 113    type: object
 114  config.MCPConfig:
 115    properties:
 116      args:
 117        items:
 118          type: string
 119        type: array
 120      command:
 121        type: string
 122      disabled:
 123        type: boolean
 124      disabled_tools:
 125        items:
 126          type: string
 127        type: array
 128      enabled_tools:
 129        items:
 130          type: string
 131        type: array
 132      env:
 133        additionalProperties:
 134          type: string
 135        type: object
 136      headers:
 137        additionalProperties:
 138          type: string
 139        description: |-
 140          Headers are HTTP headers for HTTP/SSE MCP servers. Values run
 141          through shell expansion at MCP startup, so $VAR and $(cmd)
 142          work. A header whose value resolves to the empty string (unset
 143          bare $VAR under lenient nounset, $(echo), or literal "") is
 144          omitted from the outgoing request rather than sent as
 145          "Header:".
 146        type: object
 147      timeout:
 148        type: integer
 149      type:
 150        $ref: '#/definitions/config.MCPType'
 151      url:
 152        type: string
 153    type: object
 154  config.MCPType:
 155    enum:
 156    - stdio
 157    - sse
 158    - http
 159    type: string
 160    x-enum-varnames:
 161    - MCPStdio
 162    - MCPSSE
 163    - MCPHttp
 164  config.MCPs:
 165    additionalProperties:
 166      $ref: '#/definitions/config.MCPConfig'
 167    type: object
 168  config.Permissions:
 169    properties:
 170      allowed_tools:
 171        items:
 172          type: string
 173        type: array
 174    type: object
 175  config.Scope:
 176    enum:
 177    - 0
 178    - 1
 179    type: integer
 180    x-enum-varnames:
 181    - ScopeGlobal
 182    - ScopeWorkspace
 183  config.SelectedModel:
 184    properties:
 185      frequency_penalty:
 186        type: number
 187      max_tokens:
 188        description: Overrides the default model configuration.
 189        type: integer
 190      model:
 191        description: |-
 192          The model id as used by the provider API.
 193          Required.
 194        type: string
 195      presence_penalty:
 196        type: number
 197      provider:
 198        description: |-
 199          The model provider, same as the key/id used in the providers config.
 200          Required.
 201        type: string
 202      provider_options:
 203        additionalProperties: {}
 204        description: Override provider specific options.
 205        type: object
 206      reasoning_effort:
 207        description: Only used by models that use the openai provider and need this
 208          set.
 209        type: string
 210      temperature:
 211        type: number
 212      think:
 213        description: Used by anthropic models that can reason to indicate if the model
 214          should think.
 215        type: boolean
 216      top_k:
 217        type: integer
 218      top_p:
 219        type: number
 220    type: object
 221  config.SelectedModelType:
 222    enum:
 223    - large
 224    - small
 225    type: string
 226    x-enum-varnames:
 227    - SelectedModelTypeLarge
 228    - SelectedModelTypeSmall
 229  config.TUIOptions:
 230    properties:
 231      compact_mode:
 232        type: boolean
 233      completions:
 234        $ref: '#/definitions/config.Completions'
 235      diff_mode:
 236        type: string
 237      transparent:
 238        type: boolean
 239    type: object
 240  config.ToolGrep:
 241    properties:
 242      timeout:
 243        $ref: '#/definitions/time.Duration'
 244    type: object
 245  config.ToolLs:
 246    properties:
 247      max_depth:
 248        type: integer
 249      max_items:
 250        type: integer
 251    type: object
 252  config.Tools:
 253    properties:
 254      grep:
 255        $ref: '#/definitions/config.ToolGrep'
 256      ls:
 257        $ref: '#/definitions/config.ToolLs'
 258    type: object
 259  config.TrailerStyle:
 260    enum:
 261    - none
 262    - co-authored-by
 263    - assisted-by
 264    type: string
 265    x-enum-varnames:
 266    - TrailerStyleNone
 267    - TrailerStyleCoAuthoredBy
 268    - TrailerStyleAssistedBy
 269  csync.Map-string-config_ProviderConfig:
 270    type: object
 271  github_com_charmbracelet_crush_internal_config.Config:
 272    properties:
 273      $schema:
 274        type: string
 275      hooks:
 276        additionalProperties:
 277          items:
 278            $ref: '#/definitions/config.HookConfig'
 279          type: array
 280        type: object
 281      lsp:
 282        $ref: '#/definitions/config.LSPs'
 283      mcp:
 284        $ref: '#/definitions/config.MCPs'
 285      models:
 286        additionalProperties:
 287          $ref: '#/definitions/config.SelectedModel'
 288        description: We currently only support large/small as values here.
 289        type: object
 290      options:
 291        $ref: '#/definitions/github_com_charmbracelet_crush_internal_config.Options'
 292      permissions:
 293        $ref: '#/definitions/config.Permissions'
 294      providers:
 295        allOf:
 296        - $ref: '#/definitions/csync.Map-string-config_ProviderConfig'
 297        description: The providers that are configured
 298      recent_models:
 299        additionalProperties:
 300          items:
 301            $ref: '#/definitions/config.SelectedModel'
 302          type: array
 303        description: Recently used models stored in the data directory config.
 304        type: object
 305      tools:
 306        $ref: '#/definitions/config.Tools'
 307    type: object
 308  github_com_charmbracelet_crush_internal_config.Options:
 309    properties:
 310      attribution:
 311        $ref: '#/definitions/config.Attribution'
 312      auto_lsp:
 313        type: boolean
 314      context_paths:
 315        items:
 316          type: string
 317        type: array
 318      data_directory:
 319        description: |-
 320          DataDirectory is where Crush keeps per-project state such as
 321          the SQLite database and workspace overrides. Relative paths are
 322          resolved against the working directory; absolute paths are used
 323          verbatim. After defaulting the stored value is always absolute.
 324        type: string
 325      debug:
 326        type: boolean
 327      debug_lsp:
 328        type: boolean
 329      disable_auto_summarize:
 330        type: boolean
 331      disable_default_providers:
 332        type: boolean
 333      disable_metrics:
 334        type: boolean
 335      disable_notifications:
 336        type: boolean
 337      disable_provider_auto_update:
 338        type: boolean
 339      disabled_skills:
 340        items:
 341          type: string
 342        type: array
 343      disabled_tools:
 344        items:
 345          type: string
 346        type: array
 347      initialize_as:
 348        type: string
 349      progress:
 350        type: boolean
 351      skills_paths:
 352        items:
 353          type: string
 354        type: array
 355      tui:
 356        $ref: '#/definitions/config.TUIOptions'
 357    type: object
 358  github_com_charmbracelet_crush_internal_proto.Message:
 359    properties:
 360      created_at:
 361        type: integer
 362      id:
 363        type: string
 364      model:
 365        type: string
 366      parts:
 367        items: {}
 368        type: array
 369      provider:
 370        type: string
 371      role:
 372        $ref: '#/definitions/proto.MessageRole'
 373      session_id:
 374        type: string
 375      updated_at:
 376        type: integer
 377    type: object
 378  lsp.ServerState:
 379    enum:
 380    - 0
 381    - 1
 382    - 2
 383    - 3
 384    - 4
 385    - 5
 386    type: integer
 387    x-enum-varnames:
 388    - StateUnstarted
 389    - StateStarting
 390    - StateReady
 391    - StateError
 392    - StateStopped
 393    - StateDisabled
 394  proto.APIKeyKind:
 395    enum:
 396    - string
 397    - oauth
 398    type: string
 399    x-enum-varnames:
 400    - APIKeyKindString
 401    - APIKeyKindOAuth
 402  proto.AgentInfo:
 403    properties:
 404      is_busy:
 405        type: boolean
 406      is_ready:
 407        type: boolean
 408      model:
 409        $ref: '#/definitions/catwalk.Model'
 410      model_cfg:
 411        $ref: '#/definitions/config.SelectedModel'
 412    type: object
 413  proto.AgentMessage:
 414    properties:
 415      attachments:
 416        items:
 417          $ref: '#/definitions/proto.Attachment'
 418        type: array
 419      prompt:
 420        type: string
 421      session_id:
 422        type: string
 423    type: object
 424  proto.AgentSession:
 425    properties:
 426      completion_tokens:
 427        type: integer
 428      cost:
 429        type: number
 430      created_at:
 431        type: integer
 432      id:
 433        type: string
 434      is_busy:
 435        type: boolean
 436      message_count:
 437        type: integer
 438      parent_session_id:
 439        type: string
 440      prompt_tokens:
 441        type: integer
 442      summary_message_id:
 443        type: string
 444      title:
 445        type: string
 446      updated_at:
 447        type: integer
 448    type: object
 449  proto.Attachment:
 450    properties:
 451      content:
 452        items:
 453          type: integer
 454        type: array
 455      file_name:
 456        type: string
 457      file_path:
 458        type: string
 459      mime_type:
 460        type: string
 461    type: object
 462  proto.ConfigCompactRequest:
 463    properties:
 464      enabled:
 465        type: boolean
 466      scope:
 467        $ref: '#/definitions/config.Scope'
 468    type: object
 469  proto.ConfigModelRequest:
 470    properties:
 471      model:
 472        $ref: '#/definitions/config.SelectedModel'
 473      model_type:
 474        $ref: '#/definitions/config.SelectedModelType'
 475      scope:
 476        $ref: '#/definitions/config.Scope'
 477    type: object
 478  proto.ConfigProviderKeyRequest:
 479    properties:
 480      api_key:
 481        items:
 482          type: integer
 483        type: array
 484      kind:
 485        $ref: '#/definitions/proto.APIKeyKind'
 486      provider_id:
 487        type: string
 488      scope:
 489        $ref: '#/definitions/config.Scope'
 490    type: object
 491  proto.ConfigRefreshOAuthRequest:
 492    properties:
 493      provider_id:
 494        type: string
 495      scope:
 496        $ref: '#/definitions/config.Scope'
 497    type: object
 498  proto.ConfigRemoveRequest:
 499    properties:
 500      key:
 501        type: string
 502      scope:
 503        $ref: '#/definitions/config.Scope'
 504    type: object
 505  proto.ConfigSetRequest:
 506    properties:
 507      key:
 508        type: string
 509      scope:
 510        $ref: '#/definitions/config.Scope'
 511      value: {}
 512    type: object
 513  proto.Error:
 514    properties:
 515      message:
 516        type: string
 517    type: object
 518  proto.File:
 519    properties:
 520      content:
 521        type: string
 522      created_at:
 523        type: integer
 524      id:
 525        type: string
 526      path:
 527        type: string
 528      session_id:
 529        type: string
 530      updated_at:
 531        type: integer
 532      version:
 533        type: integer
 534    type: object
 535  proto.FileTrackerReadRequest:
 536    properties:
 537      path:
 538        type: string
 539      session_id:
 540        type: string
 541    type: object
 542  proto.ImportCopilotResponse:
 543    properties:
 544      success:
 545        type: boolean
 546      token: {}
 547    type: object
 548  proto.LSPClientInfo:
 549    properties:
 550      connected_at:
 551        type: string
 552      diagnostic_count:
 553        type: integer
 554      error: {}
 555      name:
 556        type: string
 557      state:
 558        $ref: '#/definitions/lsp.ServerState'
 559    type: object
 560  proto.LSPStartRequest:
 561    properties:
 562      path:
 563        type: string
 564    type: object
 565  proto.MCPClientInfo:
 566    properties:
 567      connected_at:
 568        type: string
 569      error: {}
 570      name:
 571        type: string
 572      prompt_count:
 573        type: integer
 574      resource_count:
 575        type: integer
 576      state:
 577        $ref: '#/definitions/proto.MCPState'
 578      tool_count:
 579        type: integer
 580    type: object
 581  proto.MCPGetPromptRequest:
 582    properties:
 583      args:
 584        additionalProperties:
 585          type: string
 586        type: object
 587      client_id:
 588        type: string
 589      prompt_id:
 590        type: string
 591    type: object
 592  proto.MCPGetPromptResponse:
 593    properties:
 594      prompt:
 595        type: string
 596    type: object
 597  proto.MCPNameRequest:
 598    properties:
 599      name:
 600        type: string
 601    type: object
 602  proto.MCPReadResourceRequest:
 603    properties:
 604      name:
 605        type: string
 606      uri:
 607        type: string
 608    type: object
 609  proto.MCPState:
 610    enum:
 611    - 0
 612    - 1
 613    - 2
 614    - 3
 615    type: integer
 616    x-enum-varnames:
 617    - MCPStateDisabled
 618    - MCPStateStarting
 619    - MCPStateConnected
 620    - MCPStateError
 621  proto.MessageRole:
 622    enum:
 623    - assistant
 624    - user
 625    - system
 626    - tool
 627    type: string
 628    x-enum-varnames:
 629    - Assistant
 630    - User
 631    - System
 632    - Tool
 633  proto.PermissionAction:
 634    enum:
 635    - allow
 636    - allow_session
 637    - deny
 638    type: string
 639    x-enum-varnames:
 640    - PermissionAllow
 641    - PermissionAllowForSession
 642    - PermissionDeny
 643  proto.PermissionGrant:
 644    properties:
 645      action:
 646        $ref: '#/definitions/proto.PermissionAction'
 647      permission:
 648        $ref: '#/definitions/proto.PermissionRequest'
 649    type: object
 650  proto.PermissionRequest:
 651    properties:
 652      action:
 653        type: string
 654      description:
 655        type: string
 656      id:
 657        type: string
 658      params: {}
 659      path:
 660        type: string
 661      session_id:
 662        type: string
 663      tool_call_id:
 664        type: string
 665      tool_name:
 666        type: string
 667    type: object
 668  proto.PermissionSkipRequest:
 669    properties:
 670      skip:
 671        type: boolean
 672    type: object
 673  proto.ProjectInitPromptResponse:
 674    properties:
 675      prompt:
 676        type: string
 677    type: object
 678  proto.ProjectNeedsInitResponse:
 679    properties:
 680      needs_init:
 681        type: boolean
 682    type: object
 683  proto.ServerControl:
 684    properties:
 685      command:
 686        type: string
 687    type: object
 688  proto.Session:
 689    properties:
 690      completion_tokens:
 691        type: integer
 692      cost:
 693        type: number
 694      created_at:
 695        type: integer
 696      id:
 697        type: string
 698      message_count:
 699        type: integer
 700      parent_session_id:
 701        type: string
 702      prompt_tokens:
 703        type: integer
 704      summary_message_id:
 705        type: string
 706      title:
 707        type: string
 708      updated_at:
 709        type: integer
 710    type: object
 711  proto.VersionInfo:
 712    properties:
 713      build_id:
 714        type: string
 715      commit:
 716        type: string
 717      go_version:
 718        type: string
 719      platform:
 720        type: string
 721      version:
 722        type: string
 723    type: object
 724  proto.Workspace:
 725    properties:
 726      config:
 727        $ref: '#/definitions/github_com_charmbracelet_crush_internal_config.Config'
 728      data_dir:
 729        type: string
 730      debug:
 731        type: boolean
 732      env:
 733        items:
 734          type: string
 735        type: array
 736      id:
 737        type: string
 738      path:
 739        type: string
 740      version:
 741        type: string
 742      yolo:
 743        type: boolean
 744    type: object
 745  time.Duration:
 746    enum:
 747    - -9223372036854775808
 748    - 9223372036854775807
 749    - 1
 750    - 1000
 751    - 1000000
 752    - 1000000000
 753    - 60000000000
 754    - 3600000000000
 755    format: int64
 756    type: integer
 757    x-enum-varnames:
 758    - minDuration
 759    - maxDuration
 760    - Nanosecond
 761    - Microsecond
 762    - Millisecond
 763    - Second
 764    - Minute
 765    - Hour
 766info:
 767  contact:
 768    name: Charm
 769    url: https://charm.sh
 770  description: Crush is a terminal-based AI coding assistant. This API is served over
 771    a Unix socket (or Windows named pipe) and provides programmatic access to workspaces,
 772    sessions, agents, LSP, MCP, and more.
 773  license:
 774    name: MIT
 775    url: https://github.com/charmbracelet/crush/blob/main/LICENSE
 776  title: Crush API
 777  version: "1.0"
 778paths:
 779  /config:
 780    get:
 781      produces:
 782      - application/json
 783      responses:
 784        "200":
 785          description: OK
 786          schema:
 787            type: object
 788      summary: Get server config
 789      tags:
 790      - system
 791  /control:
 792    post:
 793      consumes:
 794      - application/json
 795      parameters:
 796      - description: Control command (e.g. shutdown)
 797        in: body
 798        name: request
 799        required: true
 800        schema:
 801          $ref: '#/definitions/proto.ServerControl'
 802      responses:
 803        "200":
 804          description: OK
 805        "400":
 806          description: Bad Request
 807          schema:
 808            $ref: '#/definitions/proto.Error'
 809      summary: Send server control command
 810      tags:
 811      - system
 812  /health:
 813    get:
 814      responses:
 815        "200":
 816          description: OK
 817      summary: Health check
 818      tags:
 819      - system
 820  /version:
 821    get:
 822      produces:
 823      - application/json
 824      responses:
 825        "200":
 826          description: OK
 827          schema:
 828            $ref: '#/definitions/proto.VersionInfo'
 829      summary: Get server version
 830      tags:
 831      - system
 832  /workspaces:
 833    get:
 834      produces:
 835      - application/json
 836      responses:
 837        "200":
 838          description: OK
 839          schema:
 840            items:
 841              $ref: '#/definitions/proto.Workspace'
 842            type: array
 843      summary: List workspaces
 844      tags:
 845      - workspaces
 846    post:
 847      consumes:
 848      - application/json
 849      parameters:
 850      - description: Workspace creation params
 851        in: body
 852        name: request
 853        required: true
 854        schema:
 855          $ref: '#/definitions/proto.Workspace'
 856      produces:
 857      - application/json
 858      responses:
 859        "200":
 860          description: OK
 861          schema:
 862            $ref: '#/definitions/proto.Workspace'
 863        "400":
 864          description: Bad Request
 865          schema:
 866            $ref: '#/definitions/proto.Error'
 867        "500":
 868          description: Internal Server Error
 869          schema:
 870            $ref: '#/definitions/proto.Error'
 871      summary: Create workspace
 872      tags:
 873      - workspaces
 874  /workspaces/{id}:
 875    delete:
 876      parameters:
 877      - description: Workspace ID
 878        in: path
 879        name: id
 880        required: true
 881        type: string
 882      responses:
 883        "200":
 884          description: OK
 885        "404":
 886          description: Not Found
 887          schema:
 888            $ref: '#/definitions/proto.Error'
 889      summary: Delete workspace
 890      tags:
 891      - workspaces
 892    get:
 893      parameters:
 894      - description: Workspace ID
 895        in: path
 896        name: id
 897        required: true
 898        type: string
 899      produces:
 900      - application/json
 901      responses:
 902        "200":
 903          description: OK
 904          schema:
 905            $ref: '#/definitions/proto.Workspace'
 906        "404":
 907          description: Not Found
 908          schema:
 909            $ref: '#/definitions/proto.Error'
 910        "500":
 911          description: Internal Server Error
 912          schema:
 913            $ref: '#/definitions/proto.Error'
 914      summary: Get workspace
 915      tags:
 916      - workspaces
 917  /workspaces/{id}/agent:
 918    get:
 919      parameters:
 920      - description: Workspace ID
 921        in: path
 922        name: id
 923        required: true
 924        type: string
 925      produces:
 926      - application/json
 927      responses:
 928        "200":
 929          description: OK
 930          schema:
 931            $ref: '#/definitions/proto.AgentInfo'
 932        "404":
 933          description: Not Found
 934          schema:
 935            $ref: '#/definitions/proto.Error'
 936        "500":
 937          description: Internal Server Error
 938          schema:
 939            $ref: '#/definitions/proto.Error'
 940      summary: Get agent info
 941      tags:
 942      - agent
 943    post:
 944      consumes:
 945      - application/json
 946      parameters:
 947      - description: Workspace ID
 948        in: path
 949        name: id
 950        required: true
 951        type: string
 952      - description: Agent message
 953        in: body
 954        name: request
 955        required: true
 956        schema:
 957          $ref: '#/definitions/proto.AgentMessage'
 958      responses:
 959        "200":
 960          description: OK
 961        "400":
 962          description: Bad Request
 963          schema:
 964            $ref: '#/definitions/proto.Error'
 965        "404":
 966          description: Not Found
 967          schema:
 968            $ref: '#/definitions/proto.Error'
 969        "500":
 970          description: Internal Server Error
 971          schema:
 972            $ref: '#/definitions/proto.Error'
 973      summary: Send message to agent
 974      tags:
 975      - agent
 976  /workspaces/{id}/agent/default-small-model:
 977    get:
 978      parameters:
 979      - description: Workspace ID
 980        in: path
 981        name: id
 982        required: true
 983        type: string
 984      - description: Provider ID
 985        in: query
 986        name: provider_id
 987        type: string
 988      produces:
 989      - application/json
 990      responses:
 991        "200":
 992          description: OK
 993          schema:
 994            type: object
 995        "404":
 996          description: Not Found
 997          schema:
 998            $ref: '#/definitions/proto.Error'
 999        "500":
1000          description: Internal Server Error
1001          schema:
1002            $ref: '#/definitions/proto.Error'
1003      summary: Get default small model
1004      tags:
1005      - agent
1006  /workspaces/{id}/agent/init:
1007    post:
1008      parameters:
1009      - description: Workspace ID
1010        in: path
1011        name: id
1012        required: true
1013        type: string
1014      responses:
1015        "200":
1016          description: OK
1017        "404":
1018          description: Not Found
1019          schema:
1020            $ref: '#/definitions/proto.Error'
1021        "500":
1022          description: Internal Server Error
1023          schema:
1024            $ref: '#/definitions/proto.Error'
1025      summary: Initialize agent
1026      tags:
1027      - agent
1028  /workspaces/{id}/agent/sessions/{sid}:
1029    get:
1030      parameters:
1031      - description: Workspace ID
1032        in: path
1033        name: id
1034        required: true
1035        type: string
1036      - description: Session ID
1037        in: path
1038        name: sid
1039        required: true
1040        type: string
1041      produces:
1042      - application/json
1043      responses:
1044        "200":
1045          description: OK
1046          schema:
1047            $ref: '#/definitions/proto.AgentSession'
1048        "404":
1049          description: Not Found
1050          schema:
1051            $ref: '#/definitions/proto.Error'
1052        "500":
1053          description: Internal Server Error
1054          schema:
1055            $ref: '#/definitions/proto.Error'
1056      summary: Get agent session
1057      tags:
1058      - agent
1059  /workspaces/{id}/agent/sessions/{sid}/cancel:
1060    post:
1061      parameters:
1062      - description: Workspace ID
1063        in: path
1064        name: id
1065        required: true
1066        type: string
1067      - description: Session ID
1068        in: path
1069        name: sid
1070        required: true
1071        type: string
1072      responses:
1073        "200":
1074          description: OK
1075        "404":
1076          description: Not Found
1077          schema:
1078            $ref: '#/definitions/proto.Error'
1079        "500":
1080          description: Internal Server Error
1081          schema:
1082            $ref: '#/definitions/proto.Error'
1083      summary: Cancel agent session
1084      tags:
1085      - agent
1086  /workspaces/{id}/agent/sessions/{sid}/prompts/clear:
1087    post:
1088      parameters:
1089      - description: Workspace ID
1090        in: path
1091        name: id
1092        required: true
1093        type: string
1094      - description: Session ID
1095        in: path
1096        name: sid
1097        required: true
1098        type: string
1099      responses:
1100        "200":
1101          description: OK
1102        "404":
1103          description: Not Found
1104          schema:
1105            $ref: '#/definitions/proto.Error'
1106        "500":
1107          description: Internal Server Error
1108          schema:
1109            $ref: '#/definitions/proto.Error'
1110      summary: Clear prompt queue
1111      tags:
1112      - agent
1113  /workspaces/{id}/agent/sessions/{sid}/prompts/list:
1114    get:
1115      parameters:
1116      - description: Workspace ID
1117        in: path
1118        name: id
1119        required: true
1120        type: string
1121      - description: Session ID
1122        in: path
1123        name: sid
1124        required: true
1125        type: string
1126      produces:
1127      - application/json
1128      responses:
1129        "200":
1130          description: OK
1131          schema:
1132            items:
1133              type: string
1134            type: array
1135        "404":
1136          description: Not Found
1137          schema:
1138            $ref: '#/definitions/proto.Error'
1139        "500":
1140          description: Internal Server Error
1141          schema:
1142            $ref: '#/definitions/proto.Error'
1143      summary: List queued prompts
1144      tags:
1145      - agent
1146  /workspaces/{id}/agent/sessions/{sid}/prompts/queued:
1147    get:
1148      parameters:
1149      - description: Workspace ID
1150        in: path
1151        name: id
1152        required: true
1153        type: string
1154      - description: Session ID
1155        in: path
1156        name: sid
1157        required: true
1158        type: string
1159      produces:
1160      - application/json
1161      responses:
1162        "200":
1163          description: OK
1164          schema:
1165            type: object
1166        "404":
1167          description: Not Found
1168          schema:
1169            $ref: '#/definitions/proto.Error'
1170        "500":
1171          description: Internal Server Error
1172          schema:
1173            $ref: '#/definitions/proto.Error'
1174      summary: Get queued prompt status
1175      tags:
1176      - agent
1177  /workspaces/{id}/agent/sessions/{sid}/summarize:
1178    post:
1179      parameters:
1180      - description: Workspace ID
1181        in: path
1182        name: id
1183        required: true
1184        type: string
1185      - description: Session ID
1186        in: path
1187        name: sid
1188        required: true
1189        type: string
1190      responses:
1191        "200":
1192          description: OK
1193        "404":
1194          description: Not Found
1195          schema:
1196            $ref: '#/definitions/proto.Error'
1197        "500":
1198          description: Internal Server Error
1199          schema:
1200            $ref: '#/definitions/proto.Error'
1201      summary: Summarize session
1202      tags:
1203      - agent
1204  /workspaces/{id}/agent/update:
1205    post:
1206      parameters:
1207      - description: Workspace ID
1208        in: path
1209        name: id
1210        required: true
1211        type: string
1212      responses:
1213        "200":
1214          description: OK
1215        "404":
1216          description: Not Found
1217          schema:
1218            $ref: '#/definitions/proto.Error'
1219        "500":
1220          description: Internal Server Error
1221          schema:
1222            $ref: '#/definitions/proto.Error'
1223      summary: Update agent
1224      tags:
1225      - agent
1226  /workspaces/{id}/config:
1227    get:
1228      parameters:
1229      - description: Workspace ID
1230        in: path
1231        name: id
1232        required: true
1233        type: string
1234      produces:
1235      - application/json
1236      responses:
1237        "200":
1238          description: OK
1239          schema:
1240            type: object
1241        "404":
1242          description: Not Found
1243          schema:
1244            $ref: '#/definitions/proto.Error'
1245        "500":
1246          description: Internal Server Error
1247          schema:
1248            $ref: '#/definitions/proto.Error'
1249      summary: Get workspace config
1250      tags:
1251      - workspaces
1252  /workspaces/{id}/config/compact:
1253    post:
1254      consumes:
1255      - application/json
1256      parameters:
1257      - description: Workspace ID
1258        in: path
1259        name: id
1260        required: true
1261        type: string
1262      - description: Config compact request
1263        in: body
1264        name: request
1265        required: true
1266        schema:
1267          $ref: '#/definitions/proto.ConfigCompactRequest'
1268      responses:
1269        "200":
1270          description: OK
1271        "400":
1272          description: Bad Request
1273          schema:
1274            $ref: '#/definitions/proto.Error'
1275        "404":
1276          description: Not Found
1277          schema:
1278            $ref: '#/definitions/proto.Error'
1279        "500":
1280          description: Internal Server Error
1281          schema:
1282            $ref: '#/definitions/proto.Error'
1283      summary: Set compact mode
1284      tags:
1285      - config
1286  /workspaces/{id}/config/import-copilot:
1287    post:
1288      parameters:
1289      - description: Workspace ID
1290        in: path
1291        name: id
1292        required: true
1293        type: string
1294      produces:
1295      - application/json
1296      responses:
1297        "200":
1298          description: OK
1299          schema:
1300            $ref: '#/definitions/proto.ImportCopilotResponse'
1301        "404":
1302          description: Not Found
1303          schema:
1304            $ref: '#/definitions/proto.Error'
1305        "500":
1306          description: Internal Server Error
1307          schema:
1308            $ref: '#/definitions/proto.Error'
1309      summary: Import Copilot credentials
1310      tags:
1311      - config
1312  /workspaces/{id}/config/model:
1313    post:
1314      consumes:
1315      - application/json
1316      parameters:
1317      - description: Workspace ID
1318        in: path
1319        name: id
1320        required: true
1321        type: string
1322      - description: Config model request
1323        in: body
1324        name: request
1325        required: true
1326        schema:
1327          $ref: '#/definitions/proto.ConfigModelRequest'
1328      responses:
1329        "200":
1330          description: OK
1331        "400":
1332          description: Bad Request
1333          schema:
1334            $ref: '#/definitions/proto.Error'
1335        "404":
1336          description: Not Found
1337          schema:
1338            $ref: '#/definitions/proto.Error'
1339        "500":
1340          description: Internal Server Error
1341          schema:
1342            $ref: '#/definitions/proto.Error'
1343      summary: Set the preferred model
1344      tags:
1345      - config
1346  /workspaces/{id}/config/provider-key:
1347    post:
1348      consumes:
1349      - application/json
1350      parameters:
1351      - description: Workspace ID
1352        in: path
1353        name: id
1354        required: true
1355        type: string
1356      - description: Config provider key request
1357        in: body
1358        name: request
1359        required: true
1360        schema:
1361          $ref: '#/definitions/proto.ConfigProviderKeyRequest'
1362      responses:
1363        "200":
1364          description: OK
1365        "400":
1366          description: Bad Request
1367          schema:
1368            $ref: '#/definitions/proto.Error'
1369        "404":
1370          description: Not Found
1371          schema:
1372            $ref: '#/definitions/proto.Error'
1373        "500":
1374          description: Internal Server Error
1375          schema:
1376            $ref: '#/definitions/proto.Error'
1377      summary: Set provider API key
1378      tags:
1379      - config
1380  /workspaces/{id}/config/refresh-oauth:
1381    post:
1382      consumes:
1383      - application/json
1384      parameters:
1385      - description: Workspace ID
1386        in: path
1387        name: id
1388        required: true
1389        type: string
1390      - description: Refresh OAuth request
1391        in: body
1392        name: request
1393        required: true
1394        schema:
1395          $ref: '#/definitions/proto.ConfigRefreshOAuthRequest'
1396      responses:
1397        "200":
1398          description: OK
1399        "400":
1400          description: Bad Request
1401          schema:
1402            $ref: '#/definitions/proto.Error'
1403        "404":
1404          description: Not Found
1405          schema:
1406            $ref: '#/definitions/proto.Error'
1407        "500":
1408          description: Internal Server Error
1409          schema:
1410            $ref: '#/definitions/proto.Error'
1411      summary: Refresh OAuth token
1412      tags:
1413      - config
1414  /workspaces/{id}/config/remove:
1415    post:
1416      consumes:
1417      - application/json
1418      parameters:
1419      - description: Workspace ID
1420        in: path
1421        name: id
1422        required: true
1423        type: string
1424      - description: Config remove request
1425        in: body
1426        name: request
1427        required: true
1428        schema:
1429          $ref: '#/definitions/proto.ConfigRemoveRequest'
1430      responses:
1431        "200":
1432          description: OK
1433        "400":
1434          description: Bad Request
1435          schema:
1436            $ref: '#/definitions/proto.Error'
1437        "404":
1438          description: Not Found
1439          schema:
1440            $ref: '#/definitions/proto.Error'
1441        "500":
1442          description: Internal Server Error
1443          schema:
1444            $ref: '#/definitions/proto.Error'
1445      summary: Remove a config field
1446      tags:
1447      - config
1448  /workspaces/{id}/config/set:
1449    post:
1450      consumes:
1451      - application/json
1452      parameters:
1453      - description: Workspace ID
1454        in: path
1455        name: id
1456        required: true
1457        type: string
1458      - description: Config set request
1459        in: body
1460        name: request
1461        required: true
1462        schema:
1463          $ref: '#/definitions/proto.ConfigSetRequest'
1464      responses:
1465        "200":
1466          description: OK
1467        "400":
1468          description: Bad Request
1469          schema:
1470            $ref: '#/definitions/proto.Error'
1471        "404":
1472          description: Not Found
1473          schema:
1474            $ref: '#/definitions/proto.Error'
1475        "500":
1476          description: Internal Server Error
1477          schema:
1478            $ref: '#/definitions/proto.Error'
1479      summary: Set a config field
1480      tags:
1481      - config
1482  /workspaces/{id}/events:
1483    get:
1484      parameters:
1485      - description: Workspace ID
1486        in: path
1487        name: id
1488        required: true
1489        type: string
1490      produces:
1491      - text/event-stream
1492      responses:
1493        "200":
1494          description: OK
1495        "404":
1496          description: Not Found
1497          schema:
1498            $ref: '#/definitions/proto.Error'
1499        "500":
1500          description: Internal Server Error
1501          schema:
1502            $ref: '#/definitions/proto.Error'
1503      summary: Stream workspace events (SSE)
1504      tags:
1505      - workspaces
1506  /workspaces/{id}/filetracker/lastread:
1507    get:
1508      parameters:
1509      - description: Workspace ID
1510        in: path
1511        name: id
1512        required: true
1513        type: string
1514      - description: Session ID
1515        in: query
1516        name: session_id
1517        type: string
1518      - description: File path
1519        in: query
1520        name: path
1521        required: true
1522        type: string
1523      produces:
1524      - application/json
1525      responses:
1526        "200":
1527          description: OK
1528          schema:
1529            type: object
1530        "404":
1531          description: Not Found
1532          schema:
1533            $ref: '#/definitions/proto.Error'
1534        "500":
1535          description: Internal Server Error
1536          schema:
1537            $ref: '#/definitions/proto.Error'
1538      summary: Get last read time for file
1539      tags:
1540      - filetracker
1541  /workspaces/{id}/filetracker/read:
1542    post:
1543      consumes:
1544      - application/json
1545      parameters:
1546      - description: Workspace ID
1547        in: path
1548        name: id
1549        required: true
1550        type: string
1551      - description: File tracker read request
1552        in: body
1553        name: request
1554        required: true
1555        schema:
1556          $ref: '#/definitions/proto.FileTrackerReadRequest'
1557      responses:
1558        "200":
1559          description: OK
1560        "400":
1561          description: Bad Request
1562          schema:
1563            $ref: '#/definitions/proto.Error'
1564        "404":
1565          description: Not Found
1566          schema:
1567            $ref: '#/definitions/proto.Error'
1568        "500":
1569          description: Internal Server Error
1570          schema:
1571            $ref: '#/definitions/proto.Error'
1572      summary: Record file read
1573      tags:
1574      - filetracker
1575  /workspaces/{id}/lsps:
1576    get:
1577      parameters:
1578      - description: Workspace ID
1579        in: path
1580        name: id
1581        required: true
1582        type: string
1583      produces:
1584      - application/json
1585      responses:
1586        "200":
1587          description: OK
1588          schema:
1589            additionalProperties:
1590              $ref: '#/definitions/proto.LSPClientInfo'
1591            type: object
1592        "404":
1593          description: Not Found
1594          schema:
1595            $ref: '#/definitions/proto.Error'
1596        "500":
1597          description: Internal Server Error
1598          schema:
1599            $ref: '#/definitions/proto.Error'
1600      summary: List LSP clients
1601      tags:
1602      - lsp
1603  /workspaces/{id}/lsps/{lsp}/diagnostics:
1604    get:
1605      parameters:
1606      - description: Workspace ID
1607        in: path
1608        name: id
1609        required: true
1610        type: string
1611      - description: LSP client name
1612        in: path
1613        name: lsp
1614        required: true
1615        type: string
1616      produces:
1617      - application/json
1618      responses:
1619        "200":
1620          description: OK
1621          schema:
1622            type: object
1623        "404":
1624          description: Not Found
1625          schema:
1626            $ref: '#/definitions/proto.Error'
1627        "500":
1628          description: Internal Server Error
1629          schema:
1630            $ref: '#/definitions/proto.Error'
1631      summary: Get LSP diagnostics
1632      tags:
1633      - lsp
1634  /workspaces/{id}/lsps/start:
1635    post:
1636      consumes:
1637      - application/json
1638      parameters:
1639      - description: Workspace ID
1640        in: path
1641        name: id
1642        required: true
1643        type: string
1644      - description: LSP start request
1645        in: body
1646        name: request
1647        required: true
1648        schema:
1649          $ref: '#/definitions/proto.LSPStartRequest'
1650      responses:
1651        "200":
1652          description: OK
1653        "400":
1654          description: Bad Request
1655          schema:
1656            $ref: '#/definitions/proto.Error'
1657        "404":
1658          description: Not Found
1659          schema:
1660            $ref: '#/definitions/proto.Error'
1661        "500":
1662          description: Internal Server Error
1663          schema:
1664            $ref: '#/definitions/proto.Error'
1665      summary: Start LSP server
1666      tags:
1667      - lsp
1668  /workspaces/{id}/lsps/stop:
1669    post:
1670      parameters:
1671      - description: Workspace ID
1672        in: path
1673        name: id
1674        required: true
1675        type: string
1676      responses:
1677        "200":
1678          description: OK
1679        "404":
1680          description: Not Found
1681          schema:
1682            $ref: '#/definitions/proto.Error'
1683        "500":
1684          description: Internal Server Error
1685          schema:
1686            $ref: '#/definitions/proto.Error'
1687      summary: Stop all LSP servers
1688      tags:
1689      - lsp
1690  /workspaces/{id}/mcp/docker/disable:
1691    post:
1692      parameters:
1693      - description: Workspace ID
1694        in: path
1695        name: id
1696        required: true
1697        type: string
1698      responses:
1699        "200":
1700          description: OK
1701        "404":
1702          description: Not Found
1703          schema:
1704            $ref: '#/definitions/proto.Error'
1705        "500":
1706          description: Internal Server Error
1707          schema:
1708            $ref: '#/definitions/proto.Error'
1709      summary: Disable Docker MCP
1710      tags:
1711      - mcp
1712  /workspaces/{id}/mcp/docker/enable:
1713    post:
1714      parameters:
1715      - description: Workspace ID
1716        in: path
1717        name: id
1718        required: true
1719        type: string
1720      responses:
1721        "200":
1722          description: OK
1723        "404":
1724          description: Not Found
1725          schema:
1726            $ref: '#/definitions/proto.Error'
1727        "500":
1728          description: Internal Server Error
1729          schema:
1730            $ref: '#/definitions/proto.Error'
1731      summary: Enable Docker MCP
1732      tags:
1733      - mcp
1734  /workspaces/{id}/mcp/get-prompt:
1735    post:
1736      consumes:
1737      - application/json
1738      parameters:
1739      - description: Workspace ID
1740        in: path
1741        name: id
1742        required: true
1743        type: string
1744      - description: MCP get prompt request
1745        in: body
1746        name: request
1747        required: true
1748        schema:
1749          $ref: '#/definitions/proto.MCPGetPromptRequest'
1750      produces:
1751      - application/json
1752      responses:
1753        "200":
1754          description: OK
1755          schema:
1756            $ref: '#/definitions/proto.MCPGetPromptResponse'
1757        "400":
1758          description: Bad Request
1759          schema:
1760            $ref: '#/definitions/proto.Error'
1761        "404":
1762          description: Not Found
1763          schema:
1764            $ref: '#/definitions/proto.Error'
1765        "500":
1766          description: Internal Server Error
1767          schema:
1768            $ref: '#/definitions/proto.Error'
1769      summary: Get MCP prompt
1770      tags:
1771      - mcp
1772  /workspaces/{id}/mcp/read-resource:
1773    post:
1774      consumes:
1775      - application/json
1776      parameters:
1777      - description: Workspace ID
1778        in: path
1779        name: id
1780        required: true
1781        type: string
1782      - description: MCP read resource request
1783        in: body
1784        name: request
1785        required: true
1786        schema:
1787          $ref: '#/definitions/proto.MCPReadResourceRequest'
1788      produces:
1789      - application/json
1790      responses:
1791        "200":
1792          description: OK
1793          schema:
1794            type: object
1795        "400":
1796          description: Bad Request
1797          schema:
1798            $ref: '#/definitions/proto.Error'
1799        "404":
1800          description: Not Found
1801          schema:
1802            $ref: '#/definitions/proto.Error'
1803        "500":
1804          description: Internal Server Error
1805          schema:
1806            $ref: '#/definitions/proto.Error'
1807      summary: Read MCP resource
1808      tags:
1809      - mcp
1810  /workspaces/{id}/mcp/refresh-prompts:
1811    post:
1812      consumes:
1813      - application/json
1814      parameters:
1815      - description: Workspace ID
1816        in: path
1817        name: id
1818        required: true
1819        type: string
1820      - description: MCP name request
1821        in: body
1822        name: request
1823        required: true
1824        schema:
1825          $ref: '#/definitions/proto.MCPNameRequest'
1826      responses:
1827        "200":
1828          description: OK
1829        "400":
1830          description: Bad Request
1831          schema:
1832            $ref: '#/definitions/proto.Error'
1833        "404":
1834          description: Not Found
1835          schema:
1836            $ref: '#/definitions/proto.Error'
1837        "500":
1838          description: Internal Server Error
1839          schema:
1840            $ref: '#/definitions/proto.Error'
1841      summary: Refresh MCP prompts
1842      tags:
1843      - mcp
1844  /workspaces/{id}/mcp/refresh-resources:
1845    post:
1846      consumes:
1847      - application/json
1848      parameters:
1849      - description: Workspace ID
1850        in: path
1851        name: id
1852        required: true
1853        type: string
1854      - description: MCP name request
1855        in: body
1856        name: request
1857        required: true
1858        schema:
1859          $ref: '#/definitions/proto.MCPNameRequest'
1860      responses:
1861        "200":
1862          description: OK
1863        "400":
1864          description: Bad Request
1865          schema:
1866            $ref: '#/definitions/proto.Error'
1867        "404":
1868          description: Not Found
1869          schema:
1870            $ref: '#/definitions/proto.Error'
1871        "500":
1872          description: Internal Server Error
1873          schema:
1874            $ref: '#/definitions/proto.Error'
1875      summary: Refresh MCP resources
1876      tags:
1877      - mcp
1878  /workspaces/{id}/mcp/refresh-tools:
1879    post:
1880      consumes:
1881      - application/json
1882      parameters:
1883      - description: Workspace ID
1884        in: path
1885        name: id
1886        required: true
1887        type: string
1888      - description: MCP name request
1889        in: body
1890        name: request
1891        required: true
1892        schema:
1893          $ref: '#/definitions/proto.MCPNameRequest'
1894      responses:
1895        "200":
1896          description: OK
1897        "400":
1898          description: Bad Request
1899          schema:
1900            $ref: '#/definitions/proto.Error'
1901        "404":
1902          description: Not Found
1903          schema:
1904            $ref: '#/definitions/proto.Error'
1905        "500":
1906          description: Internal Server Error
1907          schema:
1908            $ref: '#/definitions/proto.Error'
1909      summary: Refresh MCP tools
1910      tags:
1911      - mcp
1912  /workspaces/{id}/mcp/states:
1913    get:
1914      parameters:
1915      - description: Workspace ID
1916        in: path
1917        name: id
1918        required: true
1919        type: string
1920      produces:
1921      - application/json
1922      responses:
1923        "200":
1924          description: OK
1925          schema:
1926            additionalProperties:
1927              $ref: '#/definitions/proto.MCPClientInfo'
1928            type: object
1929        "404":
1930          description: Not Found
1931          schema:
1932            $ref: '#/definitions/proto.Error'
1933        "500":
1934          description: Internal Server Error
1935          schema:
1936            $ref: '#/definitions/proto.Error'
1937      summary: Get MCP client states
1938      tags:
1939      - mcp
1940  /workspaces/{id}/messages/user:
1941    get:
1942      parameters:
1943      - description: Workspace ID
1944        in: path
1945        name: id
1946        required: true
1947        type: string
1948      produces:
1949      - application/json
1950      responses:
1951        "200":
1952          description: OK
1953          schema:
1954            items:
1955              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
1956            type: array
1957        "404":
1958          description: Not Found
1959          schema:
1960            $ref: '#/definitions/proto.Error'
1961        "500":
1962          description: Internal Server Error
1963          schema:
1964            $ref: '#/definitions/proto.Error'
1965      summary: Get all user messages for workspace
1966      tags:
1967      - workspaces
1968  /workspaces/{id}/permissions/grant:
1969    post:
1970      consumes:
1971      - application/json
1972      parameters:
1973      - description: Workspace ID
1974        in: path
1975        name: id
1976        required: true
1977        type: string
1978      - description: Permission grant
1979        in: body
1980        name: request
1981        required: true
1982        schema:
1983          $ref: '#/definitions/proto.PermissionGrant'
1984      responses:
1985        "200":
1986          description: OK
1987        "400":
1988          description: Bad Request
1989          schema:
1990            $ref: '#/definitions/proto.Error'
1991        "404":
1992          description: Not Found
1993          schema:
1994            $ref: '#/definitions/proto.Error'
1995        "500":
1996          description: Internal Server Error
1997          schema:
1998            $ref: '#/definitions/proto.Error'
1999      summary: Grant permission
2000      tags:
2001      - permissions
2002  /workspaces/{id}/permissions/skip:
2003    get:
2004      parameters:
2005      - description: Workspace ID
2006        in: path
2007        name: id
2008        required: true
2009        type: string
2010      produces:
2011      - application/json
2012      responses:
2013        "200":
2014          description: OK
2015          schema:
2016            $ref: '#/definitions/proto.PermissionSkipRequest'
2017        "404":
2018          description: Not Found
2019          schema:
2020            $ref: '#/definitions/proto.Error'
2021        "500":
2022          description: Internal Server Error
2023          schema:
2024            $ref: '#/definitions/proto.Error'
2025      summary: Get skip permissions status
2026      tags:
2027      - permissions
2028    post:
2029      consumes:
2030      - application/json
2031      parameters:
2032      - description: Workspace ID
2033        in: path
2034        name: id
2035        required: true
2036        type: string
2037      - description: Permission skip request
2038        in: body
2039        name: request
2040        required: true
2041        schema:
2042          $ref: '#/definitions/proto.PermissionSkipRequest'
2043      responses:
2044        "200":
2045          description: OK
2046        "400":
2047          description: Bad Request
2048          schema:
2049            $ref: '#/definitions/proto.Error'
2050        "404":
2051          description: Not Found
2052          schema:
2053            $ref: '#/definitions/proto.Error'
2054        "500":
2055          description: Internal Server Error
2056          schema:
2057            $ref: '#/definitions/proto.Error'
2058      summary: Set skip permissions
2059      tags:
2060      - permissions
2061  /workspaces/{id}/project/init:
2062    post:
2063      parameters:
2064      - description: Workspace ID
2065        in: path
2066        name: id
2067        required: true
2068        type: string
2069      responses:
2070        "200":
2071          description: OK
2072        "404":
2073          description: Not Found
2074          schema:
2075            $ref: '#/definitions/proto.Error'
2076        "500":
2077          description: Internal Server Error
2078          schema:
2079            $ref: '#/definitions/proto.Error'
2080      summary: Mark project as initialized
2081      tags:
2082      - project
2083  /workspaces/{id}/project/init-prompt:
2084    get:
2085      parameters:
2086      - description: Workspace ID
2087        in: path
2088        name: id
2089        required: true
2090        type: string
2091      produces:
2092      - application/json
2093      responses:
2094        "200":
2095          description: OK
2096          schema:
2097            $ref: '#/definitions/proto.ProjectInitPromptResponse'
2098        "404":
2099          description: Not Found
2100          schema:
2101            $ref: '#/definitions/proto.Error'
2102        "500":
2103          description: Internal Server Error
2104          schema:
2105            $ref: '#/definitions/proto.Error'
2106      summary: Get project initialization prompt
2107      tags:
2108      - project
2109  /workspaces/{id}/project/needs-init:
2110    get:
2111      parameters:
2112      - description: Workspace ID
2113        in: path
2114        name: id
2115        required: true
2116        type: string
2117      produces:
2118      - application/json
2119      responses:
2120        "200":
2121          description: OK
2122          schema:
2123            $ref: '#/definitions/proto.ProjectNeedsInitResponse'
2124        "404":
2125          description: Not Found
2126          schema:
2127            $ref: '#/definitions/proto.Error'
2128        "500":
2129          description: Internal Server Error
2130          schema:
2131            $ref: '#/definitions/proto.Error'
2132      summary: Check if project needs initialization
2133      tags:
2134      - project
2135  /workspaces/{id}/providers:
2136    get:
2137      parameters:
2138      - description: Workspace ID
2139        in: path
2140        name: id
2141        required: true
2142        type: string
2143      produces:
2144      - application/json
2145      responses:
2146        "200":
2147          description: OK
2148          schema:
2149            type: object
2150        "404":
2151          description: Not Found
2152          schema:
2153            $ref: '#/definitions/proto.Error'
2154        "500":
2155          description: Internal Server Error
2156          schema:
2157            $ref: '#/definitions/proto.Error'
2158      summary: Get workspace providers
2159      tags:
2160      - workspaces
2161  /workspaces/{id}/sessions:
2162    get:
2163      parameters:
2164      - description: Workspace ID
2165        in: path
2166        name: id
2167        required: true
2168        type: string
2169      produces:
2170      - application/json
2171      responses:
2172        "200":
2173          description: OK
2174          schema:
2175            items:
2176              $ref: '#/definitions/proto.Session'
2177            type: array
2178        "404":
2179          description: Not Found
2180          schema:
2181            $ref: '#/definitions/proto.Error'
2182        "500":
2183          description: Internal Server Error
2184          schema:
2185            $ref: '#/definitions/proto.Error'
2186      summary: List sessions
2187      tags:
2188      - sessions
2189    post:
2190      consumes:
2191      - application/json
2192      parameters:
2193      - description: Workspace ID
2194        in: path
2195        name: id
2196        required: true
2197        type: string
2198      - description: Session creation params (title)
2199        in: body
2200        name: request
2201        required: true
2202        schema:
2203          $ref: '#/definitions/proto.Session'
2204      produces:
2205      - application/json
2206      responses:
2207        "200":
2208          description: OK
2209          schema:
2210            $ref: '#/definitions/proto.Session'
2211        "400":
2212          description: Bad Request
2213          schema:
2214            $ref: '#/definitions/proto.Error'
2215        "404":
2216          description: Not Found
2217          schema:
2218            $ref: '#/definitions/proto.Error'
2219        "500":
2220          description: Internal Server Error
2221          schema:
2222            $ref: '#/definitions/proto.Error'
2223      summary: Create session
2224      tags:
2225      - sessions
2226  /workspaces/{id}/sessions/{sid}:
2227    delete:
2228      parameters:
2229      - description: Workspace ID
2230        in: path
2231        name: id
2232        required: true
2233        type: string
2234      - description: Session ID
2235        in: path
2236        name: sid
2237        required: true
2238        type: string
2239      responses:
2240        "200":
2241          description: OK
2242        "404":
2243          description: Not Found
2244          schema:
2245            $ref: '#/definitions/proto.Error'
2246        "500":
2247          description: Internal Server Error
2248          schema:
2249            $ref: '#/definitions/proto.Error'
2250      summary: Delete session
2251      tags:
2252      - sessions
2253    get:
2254      parameters:
2255      - description: Workspace ID
2256        in: path
2257        name: id
2258        required: true
2259        type: string
2260      - description: Session ID
2261        in: path
2262        name: sid
2263        required: true
2264        type: string
2265      produces:
2266      - application/json
2267      responses:
2268        "200":
2269          description: OK
2270          schema:
2271            $ref: '#/definitions/proto.Session'
2272        "404":
2273          description: Not Found
2274          schema:
2275            $ref: '#/definitions/proto.Error'
2276        "500":
2277          description: Internal Server Error
2278          schema:
2279            $ref: '#/definitions/proto.Error'
2280      summary: Get session
2281      tags:
2282      - sessions
2283    put:
2284      consumes:
2285      - application/json
2286      parameters:
2287      - description: Workspace ID
2288        in: path
2289        name: id
2290        required: true
2291        type: string
2292      - description: Session ID
2293        in: path
2294        name: sid
2295        required: true
2296        type: string
2297      - description: Updated session
2298        in: body
2299        name: request
2300        required: true
2301        schema:
2302          $ref: '#/definitions/proto.Session'
2303      produces:
2304      - application/json
2305      responses:
2306        "200":
2307          description: OK
2308          schema:
2309            $ref: '#/definitions/proto.Session'
2310        "400":
2311          description: Bad Request
2312          schema:
2313            $ref: '#/definitions/proto.Error'
2314        "404":
2315          description: Not Found
2316          schema:
2317            $ref: '#/definitions/proto.Error'
2318        "500":
2319          description: Internal Server Error
2320          schema:
2321            $ref: '#/definitions/proto.Error'
2322      summary: Update session
2323      tags:
2324      - sessions
2325  /workspaces/{id}/sessions/{sid}/filetracker/files:
2326    get:
2327      parameters:
2328      - description: Workspace ID
2329        in: path
2330        name: id
2331        required: true
2332        type: string
2333      - description: Session ID
2334        in: path
2335        name: sid
2336        required: true
2337        type: string
2338      produces:
2339      - application/json
2340      responses:
2341        "200":
2342          description: OK
2343          schema:
2344            items:
2345              type: string
2346            type: array
2347        "404":
2348          description: Not Found
2349          schema:
2350            $ref: '#/definitions/proto.Error'
2351        "500":
2352          description: Internal Server Error
2353          schema:
2354            $ref: '#/definitions/proto.Error'
2355      summary: List tracked files for session
2356      tags:
2357      - filetracker
2358  /workspaces/{id}/sessions/{sid}/history:
2359    get:
2360      parameters:
2361      - description: Workspace ID
2362        in: path
2363        name: id
2364        required: true
2365        type: string
2366      - description: Session ID
2367        in: path
2368        name: sid
2369        required: true
2370        type: string
2371      produces:
2372      - application/json
2373      responses:
2374        "200":
2375          description: OK
2376          schema:
2377            items:
2378              $ref: '#/definitions/proto.File'
2379            type: array
2380        "404":
2381          description: Not Found
2382          schema:
2383            $ref: '#/definitions/proto.Error'
2384        "500":
2385          description: Internal Server Error
2386          schema:
2387            $ref: '#/definitions/proto.Error'
2388      summary: Get session history
2389      tags:
2390      - sessions
2391  /workspaces/{id}/sessions/{sid}/messages:
2392    get:
2393      parameters:
2394      - description: Workspace ID
2395        in: path
2396        name: id
2397        required: true
2398        type: string
2399      - description: Session ID
2400        in: path
2401        name: sid
2402        required: true
2403        type: string
2404      produces:
2405      - application/json
2406      responses:
2407        "200":
2408          description: OK
2409          schema:
2410            items:
2411              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
2412            type: array
2413        "404":
2414          description: Not Found
2415          schema:
2416            $ref: '#/definitions/proto.Error'
2417        "500":
2418          description: Internal Server Error
2419          schema:
2420            $ref: '#/definitions/proto.Error'
2421      summary: Get session messages
2422      tags:
2423      - sessions
2424  /workspaces/{id}/sessions/{sid}/messages/user:
2425    get:
2426      parameters:
2427      - description: Workspace ID
2428        in: path
2429        name: id
2430        required: true
2431        type: string
2432      - description: Session ID
2433        in: path
2434        name: sid
2435        required: true
2436        type: string
2437      produces:
2438      - application/json
2439      responses:
2440        "200":
2441          description: OK
2442          schema:
2443            items:
2444              $ref: '#/definitions/github_com_charmbracelet_crush_internal_proto.Message'
2445            type: array
2446        "404":
2447          description: Not Found
2448          schema:
2449            $ref: '#/definitions/proto.Error'
2450        "500":
2451          description: Internal Server Error
2452          schema:
2453            $ref: '#/definitions/proto.Error'
2454      summary: Get user messages for session
2455      tags:
2456      - sessions
2457swagger: "2.0"