@memorilabs/axon 0.1.4-beta → 0.1.4

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.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- [![Memori Labs](https://s3.us-east-1.amazonaws.com/images.memorilabs.ai/banner.png)](https://memorilabs.ai/)
1
+ [![Memori Labs](https://images.memorilabs.ai/banner.png)](https://memorilabs.ai/)
2
2
 
3
3
  <p align="center">
4
4
  <strong>The universal LLM interceptor and hook registry</strong>
@@ -50,14 +50,14 @@ const axon = new Axon();
50
50
  axon.llm.register(client);
51
51
 
52
52
  // 3. Register a Before Hook (e.g., logging or modifying prompts)
53
- axon.before.register((req, ctx) => {
53
+ axon.hook.before((req, ctx) => {
54
54
  console.log(`[${ctx.traceId}] Intercepted request to model: ${req.model}`);
55
55
  // You can modify the request here before it hits the provider
56
56
  return req;
57
57
  });
58
58
 
59
59
  // 4. Register an After Hook (e.g., token usage tracking)
60
- axon.after.register((req, res, ctx) => {
60
+ axon.hook.after((req, res, ctx) => {
61
61
  console.log(`[${ctx.traceId}] Received response. Tokens used: ${res.usage?.totalTokens}`);
62
62
  });
63
63
 
@@ -1,6 +1,5 @@
1
- import { HookRegistry } from '../hooks/registry.js';
2
1
  import { LLMRegistry } from '../llm/registry.js';
3
- import { CallContext, LLMRequest, LLMResponse } from '../types/index.js';
2
+ import { AfterHook, BeforeHook, CallContext, LLMRequest, LLMResponse } from '../types/index.js';
4
3
  /**
5
4
  * The central hub for the Axon SDK.
6
5
  *
@@ -9,7 +8,7 @@ import { CallContext, LLMRequest, LLMResponse } from '../types/index.js';
9
8
  * - Hook execution (before/after calls).
10
9
  * @example
11
10
  * ```ts
12
- * import { Axon } from 'axon';
11
+ * import { Axon } from '@memorilabs/axon';
13
12
  * import { OpenAI } from 'openai';
14
13
  *
15
14
  * const axon = new Axon();
@@ -19,8 +18,8 @@ import { CallContext, LLMRequest, LLMResponse } from '../types/index.js';
19
18
  * axon.llm.register(client);
20
19
  *
21
20
  * // 2. Add hooks
22
- * axon.before.register((req) => {
23
- * console.log('Sending to:', req.model);
21
+ * axon.hook.before((req, ctx) => {
22
+ * console.log(`[${ctx.traceId}] Sending to: ${req.model}`);
24
23
  * return req;
25
24
  * });
26
25
  *
@@ -31,10 +30,41 @@ import { CallContext, LLMRequest, LLMResponse } from '../types/index.js';
31
30
  export declare class Axon {
32
31
  /** Registry for managing third-party LLM providers. */
33
32
  readonly llm: LLMRegistry;
34
- /** Registry for hooks that run *before* the LLM call. */
35
- readonly before: HookRegistry<'before'>;
36
- /** Registry for hooks that run *after* the LLM call. */
37
- readonly after: HookRegistry<'after'>;
33
+ /** * Namespace for registering LLM lifecycle hooks.
34
+ * Hooks allow you to intercept, observe, and modify requests and responses.
35
+ */
36
+ readonly hook: {
37
+ /**
38
+ * Registers a hook function to run *before* the LLM call is executed.
39
+ * Hooks are executed sequentially in the order they are added.
40
+ *
41
+ * @param fn - The hook function to execute. It can optionally return a modified request, or a Promise resolving to one.
42
+ * @example
43
+ * ```ts
44
+ * axon.hook.before((req, ctx) => {
45
+ * console.log(`[${ctx.traceId}] Sending prompt to ${req.model}`);
46
+ * return req;
47
+ * });
48
+ * ```
49
+ */
50
+ before: (fn: BeforeHook) => void;
51
+ /**
52
+ * Registers a hook function to run *after* the LLM call completes or streams.
53
+ * Hooks are executed sequentially in the order they are added.
54
+ *
55
+ * @param fn - The hook function to execute. It can optionally return a modified response, or a Promise resolving to one.
56
+ * @example
57
+ * ```ts
58
+ * axon.hook.after((req, res, ctx) => {
59
+ * console.log(`[${ctx.traceId}] Received ${res.usage?.totalTokens} tokens`);
60
+ * console.log(`[${ctx.traceId}] AI Response: ${res.content}`);
61
+ * });
62
+ * ```
63
+ */
64
+ after: (fn: AfterHook) => void;
65
+ };
66
+ private readonly beforePipeline;
67
+ private readonly afterPipeline;
38
68
  /**
39
69
  * Creates a new Axon instance.
40
70
  */
@@ -1 +1 @@
1
- {"version":3,"file":"axon.d.ts","sourceRoot":"","sources":["../../src/core/axon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,IAAI;IACf,uDAAuD;IACvD,SAAgB,GAAG,EAAE,WAAW,CAAC;IACjC,yDAAyD;IACzD,SAAgB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC/C,wDAAwD;IACxD,SAAgB,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAE7C;;OAEG;;IAOH;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3E;;;OAGG;IACG,QAAQ,CACZ,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,WAAW,EACrB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,WAAW,CAAC;CAGxB"}
1
+ {"version":3,"file":"axon.d.ts","sourceRoot":"","sources":["../../src/core/axon.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhG;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,IAAI;IACf,uDAAuD;IACvD,SAAgB,GAAG,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,SAAgB,IAAI,EAAE;QACpB;;;;;;;;;;;;WAYG;QACH,MAAM,EAAE,CAAC,EAAE,EAAE,UAAU,KAAK,IAAI,CAAC;QAEjC;;;;;;;;;;;;WAYG;QACH,KAAK,EAAE,CAAC,EAAE,EAAE,SAAS,KAAK,IAAI,CAAC;KAChC,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IACxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IAEtD;;OAEG;;IAgBH;;;OAGG;IACG,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAI3E;;;OAGG;IACG,QAAQ,CACZ,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,WAAW,EACrB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,WAAW,CAAC;CAGxB"}
package/dist/core/axon.js CHANGED
@@ -1,4 +1,4 @@
1
- import { HookRegistry } from '../hooks/registry.js';
1
+ import { HookPipeline } from '../hooks/pipeline.js';
2
2
  import { LLMRegistry } from '../llm/registry.js';
3
3
  /**
4
4
  * The central hub for the Axon SDK.
@@ -8,7 +8,7 @@ import { LLMRegistry } from '../llm/registry.js';
8
8
  * - Hook execution (before/after calls).
9
9
  * @example
10
10
  * ```ts
11
- * import { Axon } from 'axon';
11
+ * import { Axon } from '@memorilabs/axon';
12
12
  * import { OpenAI } from 'openai';
13
13
  *
14
14
  * const axon = new Axon();
@@ -18,8 +18,8 @@ import { LLMRegistry } from '../llm/registry.js';
18
18
  * axon.llm.register(client);
19
19
  *
20
20
  * // 2. Add hooks
21
- * axon.before.register((req) => {
22
- * console.log('Sending to:', req.model);
21
+ * axon.hook.before((req, ctx) => {
22
+ * console.log(`[${ctx.traceId}] Sending to: ${req.model}`);
23
23
  * return req;
24
24
  * });
25
25
  *
@@ -30,31 +30,41 @@ import { LLMRegistry } from '../llm/registry.js';
30
30
  export class Axon {
31
31
  /** Registry for managing third-party LLM providers. */
32
32
  llm;
33
- /** Registry for hooks that run *before* the LLM call. */
34
- before;
35
- /** Registry for hooks that run *after* the LLM call. */
36
- after;
33
+ /** * Namespace for registering LLM lifecycle hooks.
34
+ * Hooks allow you to intercept, observe, and modify requests and responses.
35
+ */
36
+ hook;
37
+ beforePipeline;
38
+ afterPipeline;
37
39
  /**
38
40
  * Creates a new Axon instance.
39
41
  */
40
42
  constructor() {
41
43
  this.llm = new LLMRegistry(this);
42
- this.before = new HookRegistry('before');
43
- this.after = new HookRegistry('after');
44
+ this.beforePipeline = new HookPipeline('before');
45
+ this.afterPipeline = new HookPipeline('after');
46
+ this.hook = {
47
+ before: (fn) => {
48
+ this.beforePipeline.add(fn);
49
+ },
50
+ after: (fn) => {
51
+ this.afterPipeline.add(fn);
52
+ },
53
+ };
44
54
  }
45
55
  /**
46
56
  * Executes the 'before' hook pipeline.
47
57
  * @internal
48
58
  */
49
59
  async runBefore(request, ctx) {
50
- return (await this.before.execute(request, ctx));
60
+ return (await this.beforePipeline.execute(request, ctx));
51
61
  }
52
62
  /**
53
63
  * Executes the 'after' hook pipeline.
54
64
  * @internal
55
65
  */
56
66
  async runAfter(request, response, ctx) {
57
- return (await this.after.execute(request, response, ctx));
67
+ return (await this.afterPipeline.execute(request, response, ctx));
58
68
  }
59
69
  }
60
70
  //# sourceMappingURL=axon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"axon.js","sourceRoot":"","sources":["../../src/core/axon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,IAAI;IACf,uDAAuD;IACvC,GAAG,CAAc;IACjC,yDAAyD;IACzC,MAAM,CAAyB;IAC/C,wDAAwD;IACxC,KAAK,CAAwB;IAE7C;;OAEG;IACH;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAmB,EAAE,GAAgB;QACnD,OAAO,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAe,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAmB,EACnB,QAAqB,EACrB,GAAgB;QAEhB,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAgB,CAAC;IAC3E,CAAC;CACF"}
1
+ {"version":3,"file":"axon.js","sourceRoot":"","sources":["../../src/core/axon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,OAAO,IAAI;IACf,uDAAuD;IACvC,GAAG,CAAc;IAEjC;;OAEG;IACa,IAAI,CA8BlB;IAEe,cAAc,CAAyB;IACvC,aAAa,CAAwB;IAEtD;;OAEG;IACH;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,GAAG;YACV,MAAM,EAAE,CAAC,EAAc,EAAE,EAAE;gBACzB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,EAAE,CAAC,EAAa,EAAE,EAAE;gBACvB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;SACF,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,OAAmB,EAAE,GAAgB;QACnD,OAAO,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAe,CAAC;IACzE,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,QAAQ,CACZ,OAAmB,EACnB,QAAqB,EACrB,GAAgB;QAEhB,OAAO,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAgB,CAAC;IACnF,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { AfterHook, BeforeHook } from '../types/index.js';
2
+ export type HookType<P> = P extends 'before' ? BeforeHook : AfterHook;
3
+ /**
4
+ * Manages and executes a sequential pipeline of lifecycle hooks.
5
+ * This is an internal execution engine for `axon.hooks`.
6
+ *
7
+ * @typeParam P - The lifecycle phase this pipeline manages ('before' or 'after').
8
+ * @internal
9
+ */
10
+ export declare class HookPipeline<P extends 'before' | 'after'> {
11
+ private readonly phase;
12
+ private hooks;
13
+ constructor(phase: P);
14
+ /**
15
+ * Adds a new hook function to the pipeline.
16
+ * Hooks are executed sequentially in the order they are added.
17
+ *
18
+ * @param fn - The hook function to add to the pipeline.
19
+ */
20
+ add(fn: HookType<P>): void;
21
+ /**
22
+ * Executes the pipeline of hooks in sequence.
23
+ * @internal
24
+ */
25
+ execute(...args: unknown[]): Promise<unknown>;
26
+ }
27
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAwC,MAAM,mBAAmB,CAAC;AAEhG,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtE;;;;;;GAMG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO;IAGxC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,KAAK,CAA0B;gBAEV,KAAK,EAAE,CAAC;IAErC;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAI1B;;;OAGG;IACG,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyBpD"}
@@ -1,37 +1,27 @@
1
1
  /**
2
- * Manages a list of lifecycle hooks for a specific phase.
2
+ * Manages and executes a sequential pipeline of lifecycle hooks.
3
+ * This is an internal execution engine for `axon.hooks`.
3
4
  *
4
- * @typeParam P - The lifecycle phase this registry manages ('before' or 'after').
5
+ * @typeParam P - The lifecycle phase this pipeline manages ('before' or 'after').
6
+ * @internal
5
7
  */
6
- export class HookRegistry {
8
+ export class HookPipeline {
7
9
  phase;
8
10
  hooks = [];
9
11
  constructor(phase) {
10
12
  this.phase = phase;
11
13
  }
12
14
  /**
13
- * Registers a new hook function.
14
- * Hooks are executed sequentially in the order they are registered.
15
+ * Adds a new hook function to the pipeline.
16
+ * Hooks are executed sequentially in the order they are added.
15
17
  *
16
- * @param fn - The hook function to execute. It can optionally return a modified request/response, or a Promise resolving to one.
17
- * * @example
18
- * ```ts
19
- * // Before Hook Example:
20
- * axon.before.register((req, ctx) => {
21
- * console.log(`Sending prompt to ${req.model}`);
22
- * return req; // Optional: return modified request
23
- * });
24
- * * // After Hook Example:
25
- * axon.after.register((req, res, ctx) => {
26
- * console.log(`Received ${res.usage?.totalTokens} tokens`);
27
- * });
28
- * ```
18
+ * @param fn - The hook function to add to the pipeline.
29
19
  */
30
- register(fn) {
20
+ add(fn) {
31
21
  this.hooks.push(fn);
32
22
  }
33
23
  /**
34
- * Executes all registered hooks in sequence.
24
+ * Executes the pipeline of hooks in sequence.
35
25
  * @internal
36
26
  */
37
27
  async execute(...args) {
@@ -59,4 +49,4 @@ export class HookRegistry {
59
49
  return undefined;
60
50
  }
61
51
  }
62
- //# sourceMappingURL=registry.js.map
52
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/hooks/pipeline.ts"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IAGM;IAFrB,KAAK,GAAuB,EAAE,CAAC;IAEvC,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;;OAKG;IACH,GAAG,CAAC,EAAe;QACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,GAAG,IAAe;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAe,CAAC;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAqB,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,MAAM;oBAAE,UAAU,GAAG,MAAM,CAAC;YAClC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAe,CAAC;YAClC,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAoB,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAChD,IAAI,MAAM;oBAAE,UAAU,GAAG,MAAM,CAAC;YAClC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAgBlE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,EAAE,CAKhF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAS9D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CASvE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAYjF"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAgBlE;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,EAAE,CAQhF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAS9D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CASvE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAYjF"}
@@ -17,7 +17,10 @@ export function anthropicInputToMessages(input) {
17
17
  });
18
18
  }
19
19
  export function messagesToAnthropicInput(request) {
20
- return request.messages.map((m) => ({
20
+ // Filter out system messages, they'll be handled separately
21
+ return request.messages
22
+ .filter((m) => m.role !== 'system')
23
+ .map((m) => ({
21
24
  role: m.role,
22
25
  content: m.content,
23
26
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/providers/anthropic/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/providers/anthropic/common.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAmD/C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAmBtE"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAqE/C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAmBtE"}
@@ -4,12 +4,17 @@ import { extractSDKVersion } from '../telemetry.js';
4
4
  import { PROVIDERS } from '../../utils/constants.js';
5
5
  function extractParams(args) {
6
6
  // Separate model and messages from extra provider-specific parameters
7
- const { model: _model, messages: _messages, ...params } = args;
7
+ const { model: _model, messages: _messages, system: _system, ...params } = args;
8
8
  return params;
9
9
  }
10
10
  function argsToRequest(args) {
11
+ const messages = anthropicInputToMessages(args.messages);
12
+ // If there's a system parameter at the top level, convert it to a system message
13
+ if (args.system) {
14
+ messages.unshift({ role: 'system', content: args.system });
15
+ }
11
16
  return {
12
- messages: anthropicInputToMessages(args.messages),
17
+ messages,
13
18
  model: args.model,
14
19
  params: extractParams(args),
15
20
  };
@@ -17,11 +22,18 @@ function argsToRequest(args) {
17
22
  function requestToArgs(request) {
18
23
  if (!request.model)
19
24
  throw new Error('No model provided.');
20
- return {
25
+ // Extract system message if present
26
+ const systemMessage = request.messages.find((m) => m.role === 'system');
27
+ const args = {
21
28
  model: request.model,
22
29
  messages: messagesToAnthropicInput(request),
23
30
  ...(request.params ?? {}),
24
31
  };
32
+ // Add system parameter at top level if system message exists
33
+ if (systemMessage) {
34
+ args.system = systemMessage.content;
35
+ }
36
+ return args;
25
37
  }
26
38
  function rawToCanonical(raw) {
27
39
  return { content: contentFromAnthropic(raw), usage: usageFromAnthropic(raw), raw };
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/providers/anthropic/proxy.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,SAAS,aAAa,CAAC,IAAyB;IAC9C,sEAAsE;IACtE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,IAAyB;IAC9C,OAAO;QACL,QAAQ,EAAE,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC;QACjD,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,OAAmB;IACxC,IAAI,CAAC,OAAO,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC1D,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,wBAAwB,CAAC,OAAO,CAAC;QAC3C,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;KACH,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,MAAM,KAAK,GAAG,KAA6B,CAAC;IAC5C,8EAA8E;IAC9E,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC/E,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAe,EAAE,IAAU;IAC9D,MAAM,SAAS,GAAG,MAAyB,CAAC;IAC5C,MAAM,UAAU,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAEhD,IAAI,CAAE,SAAgD,CAAC,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,WAAW,CAAC;QACV,IAAI;QACJ,MAAM,EAAE,SAAS,CAAC,QAAQ;QAC1B,UAAU,EAAE,QAAQ;QACpB,WAAW,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE;QACxF,aAAa;QACb,aAAa;QACb,aAAa,EAAE,cAAc;QAC7B,mBAAmB,EAAE,sBAAsB;QAC3C,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/providers/anthropic/proxy.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export interface AnthropicCreateArgs {
2
2
  model: string;
3
3
  messages: AnthropicMessage[];
4
+ system?: string;
4
5
  stream?: boolean;
5
6
  max_tokens?: number;
6
7
  [key: string]: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CAClF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/anthropic/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CAClF;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACxD,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,OAAO,EAAE,CAShG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAKhG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAO3D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CASpE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAOvF"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAGvD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,yBAAyB,CAAC,UAAU,CAAC,GAAG,OAAO,EAAE,CAShG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAOhG;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAO3D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,CASpE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,GAAG,IAAI,CAOvF"}
@@ -10,7 +10,9 @@ export function geminiInputToMessages(contents) {
10
10
  return [];
11
11
  }
12
12
  export function messagesToGeminiInput(request) {
13
- return request.messages.map((m) => ({
13
+ return request.messages
14
+ .filter((m) => m.role !== 'system')
15
+ .map((m) => ({
14
16
  role: m.role === 'assistant' ? 'model' : m.role,
15
17
  parts: [{ text: m.content }],
16
18
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/providers/gemini/common.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,qBAAqB,CAAC,QAA+C;IACnF,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAoB;YACpE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAmB;IACvD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClC,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC7B,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,MAAM,CAAC,GAAG,QAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,MAAM,CAAC,GAAG,QAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAEvC,OAAO;QACL,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,gBAAgB;QAC9C,gBAAgB,EAAE,CAAC,CAAC,aAAa,CAAC,oBAAoB;QACtD,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAAY,EAAE,SAAsB;IAC/E,MAAM,CAAC,GAAG,GAAqB,CAAC;IAChC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC5D,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/providers/gemini/common.ts"],"names":[],"mappings":"AAIA,MAAM,UAAU,qBAAqB,CAAC,QAA+C;IACnF,IAAI,OAAO,QAAQ,KAAK,QAAQ;QAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAoB;YACpE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC,CAAC;IACN,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAmB;IACvD,OAAO,OAAO,CAAC,QAAQ;SACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC;SAClC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACX,IAAI,EAAE,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QAC/C,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;KAC7B,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,MAAM,CAAC,GAAG,QAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACjD,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAiB;IAC/C,MAAM,CAAC,GAAG,QAA0B,CAAC;IACrC,IAAI,CAAC,CAAC,CAAC,aAAa;QAAE,OAAO,SAAS,CAAC;IAEvC,OAAO;QACL,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,gBAAgB;QAC9C,gBAAgB,EAAE,CAAC,CAAC,aAAa,CAAC,oBAAoB;QACtD,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC,eAAe;KAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,GAAY,EAAE,SAAsB;IAC/E,MAAM,CAAC,GAAG,GAAqB,CAAC;IAChC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC5D,CAAC;SAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAChC,CAAC,CAAC,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA6C/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CA2CnE"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AA4F/C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAsCnE"}
@@ -2,31 +2,69 @@ import { patchMethod } from '../patcher.js';
2
2
  import { geminiInputToMessages, messagesToGeminiInput, contentFromGemini, usageFromGemini, applyContentToGeminiResponse, } from './common.js';
3
3
  import { extractSDKVersion } from '../telemetry.js';
4
4
  import { PROVIDERS } from '../../utils/constants.js';
5
+ function extractSystemInstruction(config) {
6
+ if (!config?.systemInstruction)
7
+ return '';
8
+ const instruction = config.systemInstruction;
9
+ if (typeof instruction === 'string') {
10
+ return instruction;
11
+ }
12
+ if (typeof instruction === 'object') {
13
+ const parts = instruction.parts;
14
+ if (Array.isArray(parts)) {
15
+ return parts
16
+ .map((p) => p.text)
17
+ .filter((text) => typeof text === 'string')
18
+ .join('');
19
+ }
20
+ }
21
+ return '';
22
+ }
5
23
  function argsToRequest(args) {
6
- const { model: _model, contents: _contents, ...params } = args;
24
+ const { model, contents, ...params } = args;
25
+ const messages = geminiInputToMessages(contents);
26
+ const systemContent = extractSystemInstruction(params.config);
27
+ if (systemContent) {
28
+ messages.unshift({ role: 'system', content: systemContent });
29
+ }
7
30
  return {
8
- messages: geminiInputToMessages(args.contents),
9
- model: args.model,
31
+ messages,
32
+ model,
10
33
  params,
11
34
  };
12
35
  }
13
36
  function requestToArgs(request) {
14
37
  if (!request.model)
15
38
  throw new Error('No model provided.');
16
- return {
39
+ const systemMessages = request.messages.filter((m) => m.role === 'system');
40
+ const otherMessages = request.messages.filter((m) => m.role !== 'system');
41
+ const args = {
17
42
  model: request.model,
18
- contents: messagesToGeminiInput(request),
43
+ contents: messagesToGeminiInput({ ...request, messages: otherMessages }),
19
44
  ...(request.params ?? {}),
20
45
  };
46
+ if (systemMessages.length > 0) {
47
+ args.config = {
48
+ ...(args.config ?? {}),
49
+ systemInstruction: systemMessages.map((m) => m.content).join('\n\n'),
50
+ };
51
+ }
52
+ return args;
21
53
  }
22
54
  function rawToCanonical(raw) {
23
55
  return { content: contentFromGemini(raw), usage: usageFromGemini(raw), raw };
24
56
  }
57
+ function isGeminiResponse(raw) {
58
+ return typeof raw === 'object' && raw !== null;
59
+ }
25
60
  function chunkToText(chunk) {
26
- const r = chunk;
27
- if (typeof r.text === 'string')
28
- return r.text;
29
- return r.candidates?.[0]?.content?.parts?.[0]?.text;
61
+ if (!isGeminiResponse(chunk))
62
+ return undefined;
63
+ if (typeof chunk.text === 'string')
64
+ return chunk.text;
65
+ const firstCandidate = chunk.candidates?.[0];
66
+ const firstPart = firstCandidate?.content?.parts?.[0];
67
+ return firstPart?.text;
30
68
  }
31
69
  export function patchGeminiClient(client, axon) {
32
70
  const geminiClient = client;
@@ -34,39 +72,32 @@ export function patchGeminiClient(client, axon) {
34
72
  if (!geminiClient.models) {
35
73
  throw new Error('Gemini client has no models API.');
36
74
  }
37
- // Patch the standard (unary) method
38
- patchMethod({
75
+ const sharedCtxMetadata = { provider: PROVIDERS.GEMINI.id, sdkVersion };
76
+ const baseConfig = {
39
77
  axon,
40
78
  parent: geminiClient.models,
41
- methodName: 'generateContent',
42
- ctxMetadata: { provider: PROVIDERS.GEMINI.id, method: 'models.generateContent', sdkVersion },
43
- argsToRequest,
44
79
  requestToArgs,
45
80
  rawToResponse: rawToCanonical,
46
81
  applyCanonicalToRaw: applyContentToGeminiResponse,
47
82
  chunkToText,
83
+ };
84
+ patchMethod({
85
+ ...baseConfig,
86
+ methodName: 'generateContent',
87
+ ctxMetadata: { ...sharedCtxMetadata, method: 'models.generateContent' },
88
+ argsToRequest,
48
89
  });
49
- // Patch the explicit streaming method
50
90
  patchMethod({
51
- axon,
52
- parent: geminiClient.models,
91
+ ...baseConfig,
53
92
  methodName: 'generateContentStream',
54
- ctxMetadata: {
55
- provider: PROVIDERS.GEMINI.id,
56
- method: 'models.generateContentStream',
57
- sdkVersion,
58
- },
93
+ ctxMetadata: { ...sharedCtxMetadata, method: 'models.generateContentStream' },
59
94
  argsToRequest: (args) => {
60
- const baseRequest = argsToRequest(args);
95
+ const req = argsToRequest(args);
61
96
  return {
62
- ...baseRequest,
63
- params: { ...baseRequest.params, stream: true },
97
+ ...req,
98
+ params: { ...req.params, stream: true },
64
99
  };
65
100
  },
66
- requestToArgs,
67
- rawToResponse: rawToCanonical,
68
- applyCanonicalToRaw: applyContentToGeminiResponse,
69
- chunkToText,
70
101
  });
71
102
  }
72
103
  //# sourceMappingURL=proxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/providers/gemini/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../../src/providers/gemini/proxy.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,14 @@ export interface GeminiGenerateContentArgs {
6
6
  text?: string;
7
7
  }>;
8
8
  }>;
9
+ config?: {
10
+ systemInstruction?: string | {
11
+ parts?: Array<{
12
+ text?: string;
13
+ }>;
14
+ };
15
+ [key: string]: unknown;
16
+ };
9
17
  [key: string]: unknown;
10
18
  }
11
19
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAC7E,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE;QACP,eAAe,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/gemini/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,EAAE;QACP,iBAAiB,CAAC,EAAE,MAAM,GAAG;YAAE,KAAK,CAAC,EAAE,KAAK,CAAC;gBAAE,IAAI,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAC;QAClE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE;QACP,eAAe,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QACvE,qBAAqB,CAAC,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9E,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION = "0.1.4-beta";
1
+ export declare const SDK_VERSION = "0.1.4";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,eAAe,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,UAAU,CAAC"}
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const SDK_VERSION = '0.1.4-beta';
1
+ export const SDK_VERSION = '0.1.4';
2
2
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memorilabs/axon",
3
- "version": "0.1.4-beta",
3
+ "version": "0.1.4",
4
4
  "description": "TypeScript SDK for Memori's cloud memory service",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,37 +0,0 @@
1
- import { AfterHook, BeforeHook } from '../types/index.js';
2
- export type HookType<P> = P extends 'before' ? BeforeHook : AfterHook;
3
- /**
4
- * Manages a list of lifecycle hooks for a specific phase.
5
- *
6
- * @typeParam P - The lifecycle phase this registry manages ('before' or 'after').
7
- */
8
- export declare class HookRegistry<P extends 'before' | 'after'> {
9
- private readonly phase;
10
- private hooks;
11
- constructor(phase: P);
12
- /**
13
- * Registers a new hook function.
14
- * Hooks are executed sequentially in the order they are registered.
15
- *
16
- * @param fn - The hook function to execute. It can optionally return a modified request/response, or a Promise resolving to one.
17
- * * @example
18
- * ```ts
19
- * // Before Hook Example:
20
- * axon.before.register((req, ctx) => {
21
- * console.log(`Sending prompt to ${req.model}`);
22
- * return req; // Optional: return modified request
23
- * });
24
- * * // After Hook Example:
25
- * axon.after.register((req, res, ctx) => {
26
- * console.log(`Received ${res.usage?.totalTokens} tokens`);
27
- * });
28
- * ```
29
- */
30
- register(fn: HookType<P>): void;
31
- /**
32
- * Executes all registered hooks in sequence.
33
- * @internal
34
- */
35
- execute(...args: unknown[]): Promise<unknown>;
36
- }
37
- //# sourceMappingURL=registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/hooks/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAwC,MAAM,mBAAmB,CAAC;AAEhG,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtE;;;;GAIG;AACH,qBAAa,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,OAAO;IAGxC,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFlC,OAAO,CAAC,KAAK,CAA0B;gBAEV,KAAK,EAAE,CAAC;IAErC;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI;IAI/B;;;OAGG;IACG,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAyBpD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/hooks/registry.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,MAAM,OAAO,YAAY;IAGM;IAFrB,KAAK,GAAuB,EAAE,CAAC;IAEvC,YAA6B,KAAQ;QAAR,UAAK,GAAL,KAAK,CAAG;IAAG,CAAC;IAEzC;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,EAAe;QACtB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CAAC,GAAG,IAAe;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAe,CAAC;YACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAqB,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,MAAM;oBAAE,UAAU,GAAG,MAAM,CAAC;YAClC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAe,CAAC;YAClC,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAgB,CAAC;YAEnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAoB,EAAE,CAAC;gBAC7C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;gBAChD,IAAI,MAAM;oBAAE,UAAU,GAAG,MAAM,CAAC;YAClC,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF"}