@openrouter/agent 0.3.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/esm/index.d.ts +7 -5
  2. package/esm/index.d.ts.map +1 -1
  3. package/esm/index.js +4 -2
  4. package/esm/index.js.map +1 -1
  5. package/esm/lib/conversation-state.d.ts +5 -0
  6. package/esm/lib/conversation-state.d.ts.map +1 -1
  7. package/esm/lib/conversation-state.js +17 -5
  8. package/esm/lib/conversation-state.js.map +1 -1
  9. package/esm/lib/model-result.d.ts +91 -7
  10. package/esm/lib/model-result.d.ts.map +1 -1
  11. package/esm/lib/model-result.js +483 -92
  12. package/esm/lib/model-result.js.map +1 -1
  13. package/esm/lib/next-turn-params.d.ts.map +1 -1
  14. package/esm/lib/next-turn-params.js +3 -1
  15. package/esm/lib/next-turn-params.js.map +1 -1
  16. package/esm/lib/stream-transformers.d.ts +84 -5
  17. package/esm/lib/stream-transformers.d.ts.map +1 -1
  18. package/esm/lib/stream-transformers.js +8 -15
  19. package/esm/lib/stream-transformers.js.map +1 -1
  20. package/esm/lib/stream-type-guards.d.ts +29 -0
  21. package/esm/lib/stream-type-guards.d.ts.map +1 -1
  22. package/esm/lib/stream-type-guards.js +37 -0
  23. package/esm/lib/stream-type-guards.js.map +1 -1
  24. package/esm/lib/tool-executor.d.ts +48 -9
  25. package/esm/lib/tool-executor.d.ts.map +1 -1
  26. package/esm/lib/tool-executor.js +257 -14
  27. package/esm/lib/tool-executor.js.map +1 -1
  28. package/esm/lib/tool-orchestrator.js +6 -6
  29. package/esm/lib/tool-orchestrator.js.map +1 -1
  30. package/esm/lib/tool-types.d.ts +173 -8
  31. package/esm/lib/tool-types.d.ts.map +1 -1
  32. package/esm/lib/tool-types.js +53 -2
  33. package/esm/lib/tool-types.js.map +1 -1
  34. package/esm/lib/tool.d.ts +58 -1
  35. package/esm/lib/tool.d.ts.map +1 -1
  36. package/esm/lib/tool.js +65 -0
  37. package/esm/lib/tool.js.map +1 -1
  38. package/esm/openrouter.d.ts +10 -4
  39. package/esm/openrouter.d.ts.map +1 -1
  40. package/esm/openrouter.js +41 -2
  41. package/esm/openrouter.js.map +1 -1
  42. package/package.json +9 -15
@@ -1,5 +1,6 @@
1
1
  import { OpenRouterCore } from '@openrouter/sdk/core';
2
- import type { SDKHooks } from '@openrouter/sdk/hooks/hooks';
2
+ import { SDKHooks } from '@openrouter/sdk/hooks/hooks';
3
+ import type { AfterErrorHook, AfterSuccessHook, BeforeCreateRequestHook, BeforeRequestHook, SDKInitHook } from '@openrouter/sdk/hooks/types';
3
4
  import type { SDKOptions } from '@openrouter/sdk/lib/config';
4
5
  import type { RequestOptions } from '@openrouter/sdk/lib/sdks';
5
6
  import type { $ZodObject, $ZodShape, infer as zodInfer } from 'zod/v4/core';
@@ -7,15 +8,20 @@ import type { CallModelInput } from './lib/async-params.js';
7
8
  import type { ModelResult } from './lib/model-result.js';
8
9
  import type { Tool } from './lib/tool-types.js';
9
10
  export type { SDKOptions } from '@openrouter/sdk/lib/config';
11
+ /** Any single hook interface supported by the underlying SDK. */
12
+ export type Hook = SDKInitHook | BeforeCreateRequestHook | BeforeRequestHook | AfterSuccessHook | AfterErrorHook;
10
13
  /**
11
14
  * SDK options extended with optional hooks for request/response interception.
12
- * The underlying `ClientSDK` accepts hooks at runtime but its constructor type
13
- * (`SDKOptions`) does not include them. This type bridges that gap.
15
+ * `hooks` accepts an `SDKHooks` instance, a single hook object, or an array of
16
+ * hook objects; the constructor normalizes shorthand input into an `SDKHooks`
17
+ * instance before passing it to the underlying SDK, which only recognizes
18
+ * `hooks` when it is an `SDKHooks` instance.
14
19
  */
15
20
  export type OpenRouterOptions = SDKOptions & {
16
- hooks?: SDKHooks;
21
+ hooks?: SDKHooks | Hook | readonly Hook[];
17
22
  };
18
23
  export declare class OpenRouter extends OpenRouterCore {
24
+ constructor(options?: OpenRouterOptions);
19
25
  callModel: <TTools extends readonly Tool[], TSharedSchema extends $ZodObject<$ZodShape> | undefined = undefined, TShared extends Record<string, unknown> = TSharedSchema extends $ZodObject<$ZodShape> ? zodInfer<TSharedSchema> : Record<string, never>>(request: CallModelInput<TTools, TShared> & {
20
26
  sharedContextSchema?: TSharedSchema;
21
27
  }, options?: RequestOptions) => ModelResult<TTools, TShared>;
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,CAAC;AAEF,qBAAa,UAAW,SAAQ,cAAc;IAC5C,SAAS,GACP,MAAM,SAAS,SAAS,IAAI,EAAE,EAC9B,aAAa,SAAS,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,EACnE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,SAAS,UAAU,CAAC,SAAS,CAAC,GACjF,QAAQ,CAAC,aAAa,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAEzB,SAAS,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACzC,mBAAmB,CAAC,EAAE,aAAa,CAAC;KACrC,EACD,UAAU,cAAc,KACvB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7B;CACH"}
1
+ {"version":3,"file":"openrouter.d.ts","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAEhD,YAAY,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAE7D,iEAAiE;AACjE,MAAM,MAAM,IAAI,GACZ,WAAW,GACX,uBAAuB,GACvB,iBAAiB,GACjB,gBAAgB,GAChB,cAAc,CAAC;AAEnB;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG;IAC3C,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,IAAI,EAAE,CAAC;CAC3C,CAAC;AAmCF,qBAAa,UAAW,SAAQ,cAAc;gBAChC,OAAO,CAAC,EAAE,iBAAiB;IAYvC,SAAS,GACP,MAAM,SAAS,SAAS,IAAI,EAAE,EAC9B,aAAa,SAAS,UAAU,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG,SAAS,EACnE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,aAAa,SAAS,UAAU,CAAC,SAAS,CAAC,GACjF,QAAQ,CAAC,aAAa,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAEzB,SAAS,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACzC,mBAAmB,CAAC,EAAE,aAAa,CAAC;KACrC,EACD,UAAU,cAAc,KACvB,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAE7B;CACH"}
package/esm/openrouter.js CHANGED
@@ -1,8 +1,47 @@
1
1
  import { OpenRouterCore } from '@openrouter/sdk/core';
2
+ import { SDKHooks } from '@openrouter/sdk/hooks/hooks';
2
3
  import { callModel } from './inner-loop/call-model.js';
4
+ function buildSDKHooks(input) {
5
+ if (input === undefined) {
6
+ return undefined;
7
+ }
8
+ if (input instanceof SDKHooks) {
9
+ return input;
10
+ }
11
+ const hooks = new SDKHooks();
12
+ const list = Array.isArray(input)
13
+ ? input
14
+ : [
15
+ input,
16
+ ];
17
+ for (const hook of list) {
18
+ if ('sdkInit' in hook) {
19
+ hooks.registerSDKInitHook(hook);
20
+ }
21
+ if ('beforeCreateRequest' in hook) {
22
+ hooks.registerBeforeCreateRequestHook(hook);
23
+ }
24
+ if ('beforeRequest' in hook) {
25
+ hooks.registerBeforeRequestHook(hook);
26
+ }
27
+ if ('afterSuccess' in hook) {
28
+ hooks.registerAfterSuccessHook(hook);
29
+ }
30
+ if ('afterError' in hook) {
31
+ hooks.registerAfterErrorHook(hook);
32
+ }
33
+ }
34
+ return hooks;
35
+ }
3
36
  export class OpenRouter extends OpenRouterCore {
4
- constructor() {
5
- super(...arguments);
37
+ constructor(options) {
38
+ const { hooks: hooksInput, ...rest } = options ?? {};
39
+ const hooks = buildSDKHooks(hooksInput);
40
+ super(hooks === undefined
41
+ ? rest
42
+ : Object.assign({}, rest, {
43
+ hooks,
44
+ }));
6
45
  this.callModel = (request, options) => {
7
46
  return callModel(this, request, options);
8
47
  };
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAgBvD,MAAM,OAAO,UAAW,SAAQ,cAAc;IAA9C;;QACE,cAAS,GAAG,CAOV,OAEC,EACD,OAAwB,EACM,EAAE;YAChC,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;IACJ,CAAC;CAAA"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../src/openrouter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAYvD,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AA0BvD,SAAS,aAAa,CAAC,KAAoD;IACzE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAoB,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAChD,CAAC,CAAC,KAAK;QACP,CAAC,CAAC;YACE,KAAK;SACN,CAAC;IACN,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;YACtB,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,qBAAqB,IAAI,IAAI,EAAE,CAAC;YAClC,KAAK,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;YAC3B,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACzB,KAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,cAAc;IAC5C,YAAY,OAA2B;QACrC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;QACxC,KAAK,CACH,KAAK,KAAK,SAAS;YACjB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE;gBACtB,KAAK;aACN,CAAC,CACP,CAAC;QAGJ,cAAS,GAAG,CAOV,OAEC,EACD,OAAwB,EACM,EAAE;YAChC,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC,CAAC;IAfF,CAAC;CAgBF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openrouter/agent",
3
- "version": "0.3.2",
3
+ "version": "0.5.0",
4
4
  "author": "OpenRouter",
5
5
  "description": "Agent toolkit for building AI applications with OpenRouter — tool orchestration, streaming, multi-turn conversations, and format compatibility.",
6
6
  "keywords": [
@@ -93,28 +93,22 @@
93
93
  "sideEffects": false,
94
94
  "repository": {
95
95
  "type": "git",
96
- "url": "https://github.com/OpenRouterTeam/typescript-agent.git"
96
+ "url": "https://github.com/OpenRouterTeam/typescript-agent.git",
97
+ "directory": "packages/agent"
98
+ },
99
+ "publishConfig": {
100
+ "access": "public",
101
+ "provenance": true
97
102
  },
98
103
  "files": [
99
104
  "esm",
100
105
  "package.json",
101
- "README.md",
102
- "LICENSE"
106
+ "README.md"
103
107
  ],
104
108
  "dependencies": {
105
- "@openrouter/sdk": "*",
109
+ "@openrouter/sdk": "^0.12.12",
106
110
  "zod": "^4.0.0"
107
111
  },
108
- "devDependencies": {
109
- "@biomejs/biome": "^2.4.10",
110
- "@changesets/changelog-github": "^0.6.0",
111
- "@changesets/cli": "^2.30.0",
112
- "@types/node": "^22.13.12",
113
- "dotenv": "^16.4.7",
114
- "husky": "^9.1.7",
115
- "typescript": "~5.8.3",
116
- "vitest": "^3.2.4"
117
- },
118
112
  "scripts": {
119
113
  "lint": "biome check src tests",
120
114
  "lint:fix": "biome check --write src tests",