Skip to content

v0#2

Draft
gorillamoe wants to merge 31 commits intomainfrom
feat/v0
Draft

v0#2
gorillamoe wants to merge 31 commits intomainfrom
feat/v0

Conversation

@gorillamoe
Copy link
Member

@gorillamoe gorillamoe commented Feb 7, 2026

Features

  • Supports kuba out of the box (kuba needs to be installed, in path and configured correctly).
  • TS/JS Scripts without external nodejs requirement
    • Top-level async

Breaking Changes

Form-data

For multi-part form-data, we are going to have breaking-change for better UX:

### UPLOAD

POST https://example.com/upload HTTP/1.1
Content-Type: multipart/form-data

{
  "name": "John",
  "avatar": { "filePath": "./photo.jpg", "filename": "avatar.jpg" }
}

The shape of avatar is special (and "reserved"). It tells kulala-core to read the contents of filePath and send it as filename.

Payload

The general shape of the payload.

  • action required: run|parse
  • env optional: Default is default, any string - refers to the env in kuba and/or http-client.env.json
  • filepath optional: string path to the .http file, relative to the cwd, or absolute (if the .http file contains external scripts, filepath is required for path resolving)
  • content required string: because filepath is optional, the client needs to send the full content that should be processed (usually the file contents, or in Vim/Neovim the buffer contents)
  • limit optional KulalaPayloadLimit: limit parse or run actions. If omitted, the whole content is parsed or run.

Payload: limit #

Payload: limit - cursorPosition #

{
  "action":"run",
  "env": "staging",
  "filepath": "test/simple.http",
  "content": "FILE_CONTENT_OF_HTTP_FILE_HERE",
  "limit": [
    {
      "filter": "cursorPosition",
      "line": 1,
      "column": 1
    }
  ]
}

Payload: limit - name #

for selecting a named request LOGIN_REQUEST:

### LOGIN_REQUEST

POST https://httpbin.org/post HTTP/1.1

{
  "username": "user123",
  "password": "pass123"
}
{
  "action":"run",
  "filepath": "test/simple.http",
  "content": "FILE_CONTENT_OF_HTTP_FILE_HERE",
  "limit": [
    {
      "filter": "name",
      "name": "LOGIN_REQUEST"
    }
  ]
}

Payload: limit - multiple #

For multiple limits (can also mix filters)

{
  "action":"run",
  "filepath": "test/simple.http",
  "content": "FILE_CONTENT_OF_HTTP_FILE_HERE",
  "limit": [
    {
      "filter": "name",
      "name": "LOGIN_REQUEST"
    },
    {
      "filter": "name",
      "name": "GRAPHQL_REQUEST"
    }
  ]
}

@gorillamoe gorillamoe self-assigned this Feb 7, 2026
@gorillamoe gorillamoe added the enhancement New feature or request label Feb 7, 2026
@gorillamoe gorillamoe linked an issue Feb 7, 2026 that may be closed by this pull request
27 tasks
@gorillamoe gorillamoe linked an issue Feb 19, 2026 that may be closed by this pull request
@gorillamoe gorillamoe moved this to In progress in mistweaverco Feb 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

feat: minimal working version

1 participant