From 3d08f4d5771cb771101fb479d5bb8d72b62a2092 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 18:40:44 +0000 Subject: [PATCH 1/6] feat(converter): add Helm chart, container image, and enable in dev (#10405) --- .stats.yml | 4 ++-- src/resources/blueprints.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.stats.yml b/.stats.yml index 63705699e..25a63951c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 120 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-c1b0e0d2c2bf9d7888ddef0cfdfb390458875cd2c1feb48a06fcd06e92105326.yml -openapi_spec_hash: ec61cf6d205251b54e1a6d68d9dd9860 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-3fbf64145b022650227fd83c53efcf2a514638e932efc2277490280fd81c083e.yml +openapi_spec_hash: 4e673e5a85fc95f1c6dcc89d6a59d004 config_hash: 6d102da8b9fcc3d0deb42d7a707e78c6 diff --git a/src/resources/blueprints.ts b/src/resources/blueprints.ts index f6ed91e77..e8c9818c0 100644 --- a/src/resources/blueprints.ts +++ b/src/resources/blueprints.ts @@ -449,7 +449,7 @@ export interface BlueprintView { /** * The status of the Blueprint build. */ - status: 'queued' | 'provisioning' | 'building' | 'failed' | 'build_complete'; + status: 'queued' | 'provisioning' | 'building' | 'awaiting_upload' | 'failed' | 'build_complete'; /** * The ID of the base Blueprint. From 84893cc2ca7e97176bb24c917b1fcd08c1cc2fd5 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Fri, 31 Jul 2026 22:52:34 +0000 Subject: [PATCH 2/6] feat(broker): plumb Pi protocol selection (#10256) --- .stats.yml | 4 ++-- src/resources/shared.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.stats.yml b/.stats.yml index 25a63951c..552a016d1 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 120 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-3fbf64145b022650227fd83c53efcf2a514638e932efc2277490280fd81c083e.yml -openapi_spec_hash: 4e673e5a85fc95f1c6dcc89d6a59d004 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-655842d2f92e9a3525185c38986cfe40c08b4bab35d39384d519bc502f415904.yml +openapi_spec_hash: fabc1067256c27f29fc1225c1ea871bf config_hash: 6d102da8b9fcc3d0deb42d7a707e78c6 diff --git a/src/resources/shared.ts b/src/resources/shared.ts index 9e83d3071..97e1af3f0 100644 --- a/src/resources/shared.ts +++ b/src/resources/shared.ts @@ -162,20 +162,20 @@ export interface BrokerMount { /** * Binary to launch the agent (e.g., 'opencode'). Used by protocols that launch a - * subprocess (acp, claude_json, codex_json). + * subprocess (acp, claude_json, codex_json, pi_json). */ agent_binary?: string | null; /** * Arguments to pass to the agent command (e.g., ['acp']). Used by protocols that - * launch a subprocess (acp, claude_json, codex_json). + * launch a subprocess (acp, claude_json, codex_json, pi_json). */ launch_args?: Array | null; /** * The protocol used by the broker to deliver events to the agent. */ - protocol?: 'acp' | 'claude_json' | 'codex_json' | null; + protocol?: 'acp' | 'claude_json' | 'codex_json' | 'pi_json' | null; /** * Working directory in which to launch the agent binary. Defaults to the home From 0842f402cc4a7ddc73d89e4643c3a5984e1bdb4a Mon Sep 17 00:00:00 2001 From: tode-rl Date: Tue, 4 Aug 2026 10:08:55 -0700 Subject: [PATCH 3/6] fix(mcp): remove stale createFromInspection metadata (#811) Co-authored-by: stainless-app[bot] <142633134+stainless-app[bot]@users.noreply.github.com> --- packages/mcp-server/src/code-tool-worker.ts | 1 - packages/mcp-server/src/methods.ts | 6 ------ 2 files changed, 7 deletions(-) diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts index 7f6bb184a..b298e8737 100644 --- a/packages/mcp-server/src/code-tool-worker.ts +++ b/packages/mcp-server/src/code-tool-worker.ts @@ -124,7 +124,6 @@ const fuse = new Fuse( 'client.agents.list', 'client.agents.retrieve', 'client.blueprints.create', - 'client.blueprints.createFromInspection', 'client.blueprints.delete', 'client.blueprints.list', 'client.blueprints.listPublic', diff --git a/packages/mcp-server/src/methods.ts b/packages/mcp-server/src/methods.ts index 9bd369130..b7cf06691 100644 --- a/packages/mcp-server/src/methods.ts +++ b/packages/mcp-server/src/methods.ts @@ -148,12 +148,6 @@ export const sdkMethods: SdkMethod[] = [ httpMethod: 'post', httpPath: '/v1/blueprints/{id}/delete', }, - { - clientCallName: 'client.blueprints.createFromInspection', - fullyQualifiedName: 'blueprints.createFromInspection', - httpMethod: 'post', - httpPath: '/v1/blueprints/create_from_inspection', - }, { clientCallName: 'client.blueprints.listPublic', fullyQualifiedName: 'blueprints.listPublic', From b85737ef21a61dd4ed6c0f4c669cc313346e3af4 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Sun, 9 Aug 2026 20:09:10 +0000 Subject: [PATCH 4/6] feat(devbox): recover resume provisioning failures (#10597) --- .stats.yml | 4 ++-- src/resources/devboxes/devboxes.ts | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.stats.yml b/.stats.yml index 552a016d1..2e8657507 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ configured_endpoints: 120 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-655842d2f92e9a3525185c38986cfe40c08b4bab35d39384d519bc502f415904.yml -openapi_spec_hash: fabc1067256c27f29fc1225c1ea871bf +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-3dc3735bd6dde301483f325e9be5cbae2aabdf9988b7e5a1da920d41e8bb380f.yml +openapi_spec_hash: 70e2f6ccb848ff142fbfa020329951aa config_hash: 6d102da8b9fcc3d0deb42d7a707e78c6 diff --git a/src/resources/devboxes/devboxes.ts b/src/resources/devboxes/devboxes.ts index af8bc6aa6..d81f2f84b 100644 --- a/src/resources/devboxes/devboxes.ts +++ b/src/resources/devboxes/devboxes.ts @@ -968,6 +968,11 @@ export interface DevboxView { export namespace DevboxView { export interface StateTransition { + /** + * The failure that caused this state transition, if applicable. + */ + failure_reason?: string | null; + /** * The status of the Devbox. * From e82b606f189f91751fb636a2b8878daea69a74af Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 21:58:59 +0000 Subject: [PATCH 5/6] feat(axon): add registry delete endpoint (#10769) --- .stats.yml | 8 ++++---- api.md | 2 ++ src/index.ts | 2 ++ src/resources/axons/axons.ts | 10 ++++++++++ src/resources/axons/index.ts | 1 + src/resources/index.ts | 1 + tests/api-resources/axons/axons.test.ts | 18 ++++++++++++++++++ 7 files changed, 38 insertions(+), 4 deletions(-) diff --git a/.stats.yml b/.stats.yml index 2e8657507..02013546c 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,4 +1,4 @@ -configured_endpoints: 120 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-3dc3735bd6dde301483f325e9be5cbae2aabdf9988b7e5a1da920d41e8bb380f.yml -openapi_spec_hash: 70e2f6ccb848ff142fbfa020329951aa -config_hash: 6d102da8b9fcc3d0deb42d7a707e78c6 +configured_endpoints: 121 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-a9327279b1ba17f0983d92a3065b04a2bc1b5e5e830cf099aef4f79072fe4075.yml +openapi_spec_hash: b63815af36cf18c8cc70be416f9c0f71 +config_hash: 2b0535779b180339d10766ba74a96700 diff --git a/api.md b/api.md index 3af4951ad..563a339ee 100644 --- a/api.md +++ b/api.md @@ -105,12 +105,14 @@ Types: - AxonView - PublishParams - PublishResultView +- AxonDeleteResponse Methods: - client.axons.create({ ...params }) -> AxonView - client.axons.retrieve(id) -> AxonView - client.axons.list({ ...params }) -> AxonViewsAxonsCursorIDPage +- client.axons.delete(id) -> unknown - client.axons.publish(id, { ...params }) -> PublishResultView - client.axons.subscribeSse(id, { ...params }) -> AxonEventView diff --git a/src/index.ts b/src/index.ts index b4ac078fd..ea7c1bce1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -178,6 +178,7 @@ import { } from './resources/secrets'; import { AxonCreateParams, + AxonDeleteResponse, AxonEventView, AxonListParams, AxonListView, @@ -649,6 +650,7 @@ export declare namespace Runloop { type AxonView as AxonView, type PublishParams as PublishParams, type PublishResultView as PublishResultView, + type AxonDeleteResponse as AxonDeleteResponse, AxonViewsAxonsCursorIDPage as AxonViewsAxonsCursorIDPage, type AxonListParams as AxonListParams, type AxonPublishParams as AxonPublishParams, diff --git a/src/resources/axons/axons.ts b/src/resources/axons/axons.ts index b674680e7..4455c248b 100644 --- a/src/resources/axons/axons.ts +++ b/src/resources/axons/axons.ts @@ -67,6 +67,13 @@ export class Axons extends APIResource { return this._client.getAPIList('/v1/axons', AxonViewsAxonsCursorIDPage, { query, ...options }); } + /** + * [Beta] Mark an axon deleted. + */ + delete(id: string, options?: Core.RequestOptions): Core.APIPromise { + return this._client.delete(`/v1/axons/${id}`, options); + } + /** * [Beta] Publish an event to a specified axon. */ @@ -220,6 +227,8 @@ export interface PublishResultView { timestamp_ms: number; } +export type AxonDeleteResponse = unknown; + export interface AxonCreateParams { /** * (Optional) Name for the axon. @@ -292,6 +301,7 @@ export declare namespace Axons { type AxonView as AxonView, type PublishParams as PublishParams, type PublishResultView as PublishResultView, + type AxonDeleteResponse as AxonDeleteResponse, AxonViewsAxonsCursorIDPage as AxonViewsAxonsCursorIDPage, type AxonListParams as AxonListParams, type AxonPublishParams as AxonPublishParams, diff --git a/src/resources/axons/index.ts b/src/resources/axons/index.ts index 9c5b7033c..d85145ea3 100644 --- a/src/resources/axons/index.ts +++ b/src/resources/axons/index.ts @@ -9,6 +9,7 @@ export { type AxonView, type PublishParams, type PublishResultView, + type AxonDeleteResponse, type AxonListParams, type AxonPublishParams, type AxonSubscribeSseParams, diff --git a/src/resources/index.ts b/src/resources/index.ts index fe0f43691..8e7799bea 100644 --- a/src/resources/index.ts +++ b/src/resources/index.ts @@ -29,6 +29,7 @@ export { type AxonView, type PublishParams, type PublishResultView, + type AxonDeleteResponse, type AxonListParams, type AxonPublishParams, type AxonSubscribeSseParams, diff --git a/tests/api-resources/axons/axons.test.ts b/tests/api-resources/axons/axons.test.ts index c0e97978b..4f67d7ec7 100644 --- a/tests/api-resources/axons/axons.test.ts +++ b/tests/api-resources/axons/axons.test.ts @@ -87,6 +87,24 @@ describe('resource axons', () => { ).rejects.toThrow(Runloop.NotFoundError); }); + test('delete', async () => { + const responsePromise = client.axons.delete('id'); + const rawResponse = await responsePromise.asResponse(); + expect(rawResponse).toBeInstanceOf(Response); + const response = await responsePromise; + expect(response).not.toBeInstanceOf(Response); + const dataAndResponse = await responsePromise.withResponse(); + expect(dataAndResponse.data).toBe(response); + expect(dataAndResponse.response).toBe(rawResponse); + }); + + test('delete: request options instead of params are passed correctly', async () => { + // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error + await expect(client.axons.delete('id', { path: '/_stainless_unknown_path' })).rejects.toThrow( + Runloop.NotFoundError, + ); + }); + test('publish: only required params', async () => { const responsePromise = client.axons.publish('id', { event_type: 'event_type', From 72b37a5fe266cae835ade8f956fbe043bb3c3779 Mon Sep 17 00:00:00 2001 From: "stainless-app[bot]" <142633134+stainless-app[bot]@users.noreply.github.com> Date: Mon, 10 Aug 2026 21:59:34 +0000 Subject: [PATCH 6/6] release: 1.29.0 --- .release-please-manifest.json | 2 +- CHANGELOG.md | 16 ++++++++++++++++ package.json | 2 +- packages/mcp-server/manifest.json | 2 +- packages/mcp-server/package.json | 2 +- packages/mcp-server/src/server.ts | 2 +- src/version.ts | 2 +- 7 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.release-please-manifest.json b/.release-please-manifest.json index bac4ebcfd..6103afc2b 100644 --- a/.release-please-manifest.json +++ b/.release-please-manifest.json @@ -1,3 +1,3 @@ { - ".": "1.28.0" + ".": "1.29.0" } diff --git a/CHANGELOG.md b/CHANGELOG.md index 71fe49d45..b4c5bc0c3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## 1.29.0 (2026-08-10) + +Full Changelog: [v1.28.0...v1.29.0](https://github.com/runloopai/api-client-ts/compare/v1.28.0...v1.29.0) + +### Features + +* **axon:** add registry delete endpoint ([#10769](https://github.com/runloopai/api-client-ts/issues/10769)) ([e82b606](https://github.com/runloopai/api-client-ts/commit/e82b606f189f91751fb636a2b8878daea69a74af)) +* **broker:** plumb Pi protocol selection ([#10256](https://github.com/runloopai/api-client-ts/issues/10256)) ([84893cc](https://github.com/runloopai/api-client-ts/commit/84893cc2ca7e97176bb24c917b1fcd08c1cc2fd5)) +* **converter:** add Helm chart, container image, and enable in dev ([#10405](https://github.com/runloopai/api-client-ts/issues/10405)) ([3d08f4d](https://github.com/runloopai/api-client-ts/commit/3d08f4d5771cb771101fb479d5bb8d72b62a2092)) +* **devbox:** recover resume provisioning failures ([#10597](https://github.com/runloopai/api-client-ts/issues/10597)) ([b85737e](https://github.com/runloopai/api-client-ts/commit/b85737ef21a61dd4ed6c0f4c669cc313346e3af4)) + + +### Bug Fixes + +* **mcp:** remove stale createFromInspection metadata ([#811](https://github.com/runloopai/api-client-ts/issues/811)) ([0842f40](https://github.com/runloopai/api-client-ts/commit/0842f402cc4a7ddc73d89e4643c3a5984e1bdb4a)) + ## 1.28.0 (2026-07-29) Full Changelog: [v1.27.0...v1.28.0](https://github.com/runloopai/api-client-ts/compare/v1.27.0...v1.28.0) diff --git a/package.json b/package.json index 9732d37b5..f534c35b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@runloop/api-client", - "version": "1.28.0", + "version": "1.29.0", "description": "The official TypeScript library for the Runloop API", "author": "Runloop ", "types": "dist/sdk.d.ts", diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json index baed81029..9be530795 100644 --- a/packages/mcp-server/manifest.json +++ b/packages/mcp-server/manifest.json @@ -1,7 +1,7 @@ { "dxt_version": "0.2", "name": "@runloop/api-client-mcp", - "version": "1.28.0", + "version": "1.29.0", "description": "The official MCP Server for the Runloop API", "author": { "name": "Runloop", diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json index c897256cd..4791bec49 100644 --- a/packages/mcp-server/package.json +++ b/packages/mcp-server/package.json @@ -1,6 +1,6 @@ { "name": "@runloop/api-client-mcp", - "version": "1.28.0", + "version": "1.29.0", "description": "The official MCP Server for the Runloop API", "author": "Runloop ", "types": "dist/index.d.ts", diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts index 2ab66aec9..8ba74e597 100644 --- a/packages/mcp-server/src/server.ts +++ b/packages/mcp-server/src/server.ts @@ -16,7 +16,7 @@ export const newMcpServer = async (stainlessApiKey: string | undefined) => new McpServer( { name: 'runloop_api_client_api', - version: '1.28.0', + version: '1.29.0', }, { instructions: await getInstructions(stainlessApiKey), diff --git a/src/version.ts b/src/version.ts index df29c98cf..ec0d2ee29 100644 --- a/src/version.ts +++ b/src/version.ts @@ -1 +1 @@ -export const VERSION = '1.28.0'; // x-release-please-version +export const VERSION = '1.29.0'; // x-release-please-version