Developer documentation

Developer Docs

Build plugins for version 1.0.0 build 4 that add UI, read and mutate the live workspace, run requests, chain responses, and pass data between plugins.

Plugin shape

A plugin is a CommonJS JavaScript file. It exports a manifest, optional transformApp, command handlers, and optional request/response hooks.

module.exports = {
  manifest: {
    id: "copy-response-tools",
    name: "Copy Response Tools",
    version: "1.0.0",
    priority: 100,
    permissions: ["ui.transform", "plugin.storage"]
  },

  transformApp: function(app, api) {
    api.ui.append(app, "rightPanel", {
      type: "card",
      id: "copyResponseCard",
      children: [
        { type: "text", id: "copyResponseTitle", value: "Response Tools" },
        { type: "button", id: "copyResponseButton", text: "Copy response to body", command: "copyResponse.copy" }
      ]
    });
    return app;
  },

  commands: {
    "copyResponse.copy": function(ctx) {
      var body = ctx.dollar("#response.body").val() || ctx.responseBody || "";
      ctx.dollar("#bodyEditor").val(body);
      return ctx.dollar("#bodyEditor");
    }
  }
};

Build 4 release boundary

The public macOS beta is a release-mode, obfuscated, Apple-notarized build. Plugins can use the documented runtime APIs, UI nodes, commands, hooks, storage, request helpers, and approved native bridges described here.

The frontend/UI robot is internal QA tooling and is compile-time disabled in public releases. A plugin must never depend on uiRobot.run, driver inbox polling, target-registry export, or automated mouse/keyboard control for customer-facing functionality.

Runtime model

transformApp(app, api)Builds visible structure. Use this for cards, buttons, inputs, panels, tabs, and static layout.
commands["id"](ctx)Runs when a button or plugin action fires. Use this for reads, writes, clicks, storage, bus output, and request automation.
hooks.beforeRequest(ctx)Runs before Send. Use it for auth headers, validation, request rewrites, variables, and preflight requests.
hooks.afterResponse(ctx)Runs after a response. Use it to capture response data, update plugin state, publish bus values, or chain another request.