From 89ece5bca49018f372762c59e096564d2ff3cc7c Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Wed, 1 Apr 2026 11:15:12 -0400 Subject: [PATCH 1/5] fix: add prepare script for git dependency installs When this package is installed from a git URL (e.g. by the monorepo), pnpm runs the prepare lifecycle script. Without it, tsc never runs and the esm/ build artifacts referenced by the exports map are missing. --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 74c72b5..0afedac 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@openrouter/agent", "version": "0.1.0", "author": "OpenRouter", - "description": "Agent toolkit for building AI applications with OpenRouter — tool orchestration, streaming, multi-turn conversations, and format compatibility.", + "description": "Agent toolkit for building AI applications with OpenRouter \u2014 tool orchestration, streaming, multi-turn conversations, and format compatibility.", "keywords": [ "openrouter", "agent", @@ -122,7 +122,8 @@ "test:e2e": "vitest --run --project e2e", "test:watch": "vitest --watch --project unit", "typecheck": "tsc --noEmit", - "compile": "tsc" + "compile": "tsc", + "prepare": "npm run build" }, "dependencies": { "@openrouter/sdk": "latest", From 0ea5a34d21730ca9c666fe5d9ec839bc9179d297 Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Wed, 1 Apr 2026 11:17:02 -0400 Subject: [PATCH 2/5] fix: use git SDK dep until npm publish catches up The agent uses types (ResponsesRequest, InputsUnion, etc.) that exist in the SDK repo's main branch but aren't in the npm-published 0.10.2. Point to git URL so the prepare script can build successfully. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0afedac..ea6437c 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "prepare": "npm run build" }, "dependencies": { - "@openrouter/sdk": "latest", + "@openrouter/sdk": "git+https://github.com/OpenRouterTeam/typescript-sdk.git#add-prepare-script", "zod": "^4.0.0" }, "devDependencies": { From 80ff8bfc867f564f1b367d6a4c2db0f8471454ed Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Wed, 1 Apr 2026 11:24:28 -0400 Subject: [PATCH 3/5] fix: regenerate lockfile for git SDK dep, add onlyBuiltDependencies The lockfile was out of sync with the git URL for @openrouter/sdk. Also add pnpm.onlyBuiltDependencies so the SDK's prepare script runs during install. --- package.json | 6 ++++++ pnpm-lock.yaml | 11 ++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ea6437c..509f547 100644 --- a/package.json +++ b/package.json @@ -140,5 +140,11 @@ "typescript": "~5.8.3", "typescript-eslint": "^8.26.0", "vitest": "^3.2.4" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "@openrouter/sdk", + "esbuild" + ] } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 089bf47..22e468e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ importers: .: dependencies: '@openrouter/sdk': - specifier: latest - version: 0.10.2 + specifier: git+https://github.com/OpenRouterTeam/typescript-sdk.git#add-prepare-script + version: https://codeload.github.com/OpenRouterTeam/typescript-sdk/tar.gz/b08f491543b86ad9b8bbb44057fdf09db7cf339d zod: specifier: ^4.0.0 version: 4.3.6 @@ -353,8 +353,9 @@ packages: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} engines: {node: '>= 8'} - '@openrouter/sdk@0.10.2': - resolution: {integrity: sha512-od0aWkk+vhndEI78YyPvPgMxv2+32KO4MRrk8lFxro/YABKAHkozXugc+x3YeNf/d9KQaBO6M4Rut1uf+yeD2g==} + '@openrouter/sdk@https://codeload.github.com/OpenRouterTeam/typescript-sdk/tar.gz/b08f491543b86ad9b8bbb44057fdf09db7cf339d': + resolution: {tarball: https://codeload.github.com/OpenRouterTeam/typescript-sdk/tar.gz/b08f491543b86ad9b8bbb44057fdf09db7cf339d} + version: 0.10.1 '@rollup/rollup-android-arm-eabi@4.60.1': resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} @@ -1705,7 +1706,7 @@ snapshots: '@nodelib/fs.scandir': 2.1.5 fastq: 1.20.1 - '@openrouter/sdk@0.10.2': + '@openrouter/sdk@https://codeload.github.com/OpenRouterTeam/typescript-sdk/tar.gz/b08f491543b86ad9b8bbb44057fdf09db7cf339d': dependencies: zod: 4.3.6 From a93f2fe77c281261a79f9a787f58510f4195ab31 Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Wed, 1 Apr 2026 12:02:01 -0400 Subject: [PATCH 4/5] fix: include src/ in package files for source condition resolution The monorepo's vitest config uses a "source" export condition that resolves to ./src/*.ts files. Without src/ in the files field, pnpm pack excludes it from the installed package, causing "Cannot find package" errors in vitest tests. --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 509f547..16a7b13 100644 --- a/package.json +++ b/package.json @@ -111,6 +111,7 @@ }, "files": [ "esm", + "src", "package.json", "README.md", "LICENSE" From c88c75ecb1c2577949ab01ee35d09b483a0aab99 Mon Sep 17 00:00:00 2001 From: Matt Apperson Date: Wed, 1 Apr 2026 12:09:56 -0400 Subject: [PATCH 5/5] fix: remove source condition from exports map The "source" export condition points to TypeScript source files, which causes resolution issues when the agent is installed as a git dependency. The compiled esm/ output is sufficient for consumers. This avoids nested dependency resolution failures where the agent's source files try to import @openrouter/sdk subpaths. --- package.json | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/package.json b/package.json index 16a7b13..39b1823 100644 --- a/package.json +++ b/package.json @@ -18,87 +18,70 @@ "main": "./esm/index.js", "exports": { ".": { - "source": "./src/index.ts", "types": "./esm/index.d.ts", "default": "./esm/index.js" }, "./call-model": { - "source": "./src/inner-loop/call-model.ts", "types": "./esm/inner-loop/call-model.d.ts", "default": "./esm/inner-loop/call-model.js" }, "./tool-types": { - "source": "./src/lib/tool-types.ts", "types": "./esm/lib/tool-types.d.ts", "default": "./esm/lib/tool-types.js" }, "./model-result": { - "source": "./src/lib/model-result.ts", "types": "./esm/lib/model-result.d.ts", "default": "./esm/lib/model-result.js" }, "./async-params": { - "source": "./src/lib/async-params.ts", "types": "./esm/lib/async-params.d.ts", "default": "./esm/lib/async-params.js" }, "./stop-conditions": { - "source": "./src/lib/stop-conditions.ts", "types": "./esm/lib/stop-conditions.d.ts", "default": "./esm/lib/stop-conditions.js" }, "./tool": { - "source": "./src/lib/tool.ts", "types": "./esm/lib/tool.d.ts", "default": "./esm/lib/tool.js" }, "./anthropic-compat": { - "source": "./src/lib/anthropic-compat.ts", "types": "./esm/lib/anthropic-compat.d.ts", "default": "./esm/lib/anthropic-compat.js" }, "./chat-compat": { - "source": "./src/lib/chat-compat.ts", "types": "./esm/lib/chat-compat.d.ts", "default": "./esm/lib/chat-compat.js" }, "./claude-constants": { - "source": "./src/lib/claude-constants.ts", "types": "./esm/lib/claude-constants.d.ts", "default": "./esm/lib/claude-constants.js" }, "./claude-type-guards": { - "source": "./src/lib/claude-type-guards.ts", "types": "./esm/lib/claude-type-guards.d.ts", "default": "./esm/lib/claude-type-guards.js" }, "./conversation-state": { - "source": "./src/lib/conversation-state.ts", "types": "./esm/lib/conversation-state.d.ts", "default": "./esm/lib/conversation-state.js" }, "./next-turn-params": { - "source": "./src/lib/next-turn-params.ts", "types": "./esm/lib/next-turn-params.d.ts", "default": "./esm/lib/next-turn-params.js" }, "./stream-transformers": { - "source": "./src/lib/stream-transformers.ts", "types": "./esm/lib/stream-transformers.d.ts", "default": "./esm/lib/stream-transformers.js" }, "./tool-context": { - "source": "./src/lib/tool-context.ts", "types": "./esm/lib/tool-context.d.ts", "default": "./esm/lib/tool-context.js" }, "./tool-event-broadcaster": { - "source": "./src/lib/tool-event-broadcaster.ts", "types": "./esm/lib/tool-event-broadcaster.d.ts", "default": "./esm/lib/tool-event-broadcaster.js" }, "./turn-context": { - "source": "./src/lib/turn-context.ts", "types": "./esm/lib/turn-context.d.ts", "default": "./esm/lib/turn-context.js" }, @@ -111,7 +94,6 @@ }, "files": [ "esm", - "src", "package.json", "README.md", "LICENSE"