@memorilabs/axon 0.0.1 → 0.1.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 (115) hide show
  1. package/README.md +99 -0
  2. package/dist/core/axon.d.ts +67 -0
  3. package/dist/core/axon.d.ts.map +1 -0
  4. package/dist/core/axon.js +68 -0
  5. package/dist/core/axon.js.map +1 -0
  6. package/dist/core/config.d.ts +6 -0
  7. package/dist/core/config.d.ts.map +1 -0
  8. package/dist/core/config.js +9 -0
  9. package/dist/core/config.js.map +1 -0
  10. package/dist/core/index.d.ts +3 -0
  11. package/dist/core/index.d.ts.map +1 -0
  12. package/dist/core/index.js +3 -0
  13. package/dist/core/index.js.map +1 -0
  14. package/dist/errors/axon-error.d.ts +7 -0
  15. package/dist/errors/axon-error.d.ts.map +1 -0
  16. package/dist/errors/axon-error.js +10 -0
  17. package/dist/errors/axon-error.js.map +1 -0
  18. package/dist/errors/hook-error.d.ts +13 -0
  19. package/dist/errors/hook-error.d.ts.map +1 -0
  20. package/dist/errors/hook-error.js +15 -0
  21. package/dist/errors/hook-error.js.map +1 -0
  22. package/dist/errors/index.d.ts +4 -0
  23. package/dist/errors/index.d.ts.map +1 -0
  24. package/dist/errors/index.js +4 -0
  25. package/dist/errors/index.js.map +1 -0
  26. package/dist/errors/unsupported-provider-error.d.ts +9 -0
  27. package/dist/errors/unsupported-provider-error.d.ts.map +1 -0
  28. package/dist/errors/unsupported-provider-error.js +13 -0
  29. package/dist/errors/unsupported-provider-error.js.map +1 -0
  30. package/dist/hooks/hooked.d.ts +48 -0
  31. package/dist/hooks/hooked.d.ts.map +1 -0
  32. package/dist/hooks/hooked.js +95 -0
  33. package/dist/hooks/hooked.js.map +1 -0
  34. package/dist/hooks/registry.d.ts +28 -0
  35. package/dist/hooks/registry.d.ts.map +1 -0
  36. package/dist/hooks/registry.js +50 -0
  37. package/dist/hooks/registry.js.map +1 -0
  38. package/dist/index.d.ts +6 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +6 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/llm/registry.d.ts +29 -0
  43. package/dist/llm/registry.d.ts.map +1 -0
  44. package/dist/llm/registry.js +41 -0
  45. package/dist/llm/registry.js.map +1 -0
  46. package/dist/providers/anthropic/common.d.ts +8 -0
  47. package/dist/providers/anthropic/common.d.ts.map +1 -0
  48. package/dist/providers/anthropic/common.js +58 -0
  49. package/dist/providers/anthropic/common.js.map +1 -0
  50. package/dist/providers/anthropic/detect.d.ts +2 -0
  51. package/dist/providers/anthropic/detect.d.ts.map +1 -0
  52. package/dist/providers/anthropic/detect.js +7 -0
  53. package/dist/providers/anthropic/detect.js.map +1 -0
  54. package/dist/providers/anthropic/index.d.ts +5 -0
  55. package/dist/providers/anthropic/index.d.ts.map +1 -0
  56. package/dist/providers/anthropic/index.js +10 -0
  57. package/dist/providers/anthropic/index.js.map +1 -0
  58. package/dist/providers/anthropic/proxy.d.ts +8 -0
  59. package/dist/providers/anthropic/proxy.d.ts.map +1 -0
  60. package/dist/providers/anthropic/proxy.js +57 -0
  61. package/dist/providers/anthropic/proxy.js.map +1 -0
  62. package/dist/providers/anthropic/types.d.ts +43 -0
  63. package/dist/providers/anthropic/types.d.ts.map +1 -0
  64. package/dist/providers/anthropic/types.js +2 -0
  65. package/dist/providers/anthropic/types.js.map +1 -0
  66. package/dist/providers/index.d.ts +4 -0
  67. package/dist/providers/index.d.ts.map +1 -0
  68. package/dist/providers/index.js +3 -0
  69. package/dist/providers/index.js.map +1 -0
  70. package/dist/providers/openai/common.d.ts +11 -0
  71. package/dist/providers/openai/common.d.ts.map +1 -0
  72. package/dist/providers/openai/common.js +42 -0
  73. package/dist/providers/openai/common.js.map +1 -0
  74. package/dist/providers/openai/detect.d.ts +2 -0
  75. package/dist/providers/openai/detect.d.ts.map +1 -0
  76. package/dist/providers/openai/detect.js +9 -0
  77. package/dist/providers/openai/detect.js.map +1 -0
  78. package/dist/providers/openai/index.d.ts +9 -0
  79. package/dist/providers/openai/index.d.ts.map +1 -0
  80. package/dist/providers/openai/index.js +14 -0
  81. package/dist/providers/openai/index.js.map +1 -0
  82. package/dist/providers/openai/proxy.d.ts +3 -0
  83. package/dist/providers/openai/proxy.d.ts.map +1 -0
  84. package/dist/providers/openai/proxy.js +91 -0
  85. package/dist/providers/openai/proxy.js.map +1 -0
  86. package/dist/providers/openai/responses.d.ts +26 -0
  87. package/dist/providers/openai/responses.d.ts.map +1 -0
  88. package/dist/providers/openai/responses.js +4 -0
  89. package/dist/providers/openai/responses.js.map +1 -0
  90. package/dist/providers/openai/types.d.ts +30 -0
  91. package/dist/providers/openai/types.d.ts.map +1 -0
  92. package/dist/providers/openai/types.js +2 -0
  93. package/dist/providers/openai/types.js.map +1 -0
  94. package/dist/providers/patcher.d.ts +15 -0
  95. package/dist/providers/patcher.d.ts.map +1 -0
  96. package/dist/providers/patcher.js +41 -0
  97. package/dist/providers/patcher.js.map +1 -0
  98. package/dist/types/config.d.ts +23 -0
  99. package/dist/types/config.d.ts.map +1 -0
  100. package/dist/types/config.js +2 -0
  101. package/dist/types/config.js.map +1 -0
  102. package/dist/types/context.d.ts +17 -0
  103. package/dist/types/context.d.ts.map +1 -0
  104. package/dist/types/context.js +13 -0
  105. package/dist/types/context.js.map +1 -0
  106. package/dist/types/index.d.ts +4 -0
  107. package/dist/types/index.d.ts.map +1 -0
  108. package/dist/types/index.js +4 -0
  109. package/dist/types/index.js.map +1 -0
  110. package/dist/types/llm.d.ts +46 -0
  111. package/dist/types/llm.d.ts.map +1 -0
  112. package/dist/types/llm.js +2 -0
  113. package/dist/types/llm.js.map +1 -0
  114. package/package.json +104 -4
  115. package/.npmrc.bak +0 -3
@@ -0,0 +1,26 @@
1
+ export interface OpenAIUsage {
2
+ prompt_tokens?: number;
3
+ completion_tokens?: number;
4
+ total_tokens?: number;
5
+ input_tokens?: number;
6
+ output_tokens?: number;
7
+ }
8
+ export interface OpenAIChatCompletionResponse {
9
+ choices: Array<{
10
+ message?: {
11
+ content?: string;
12
+ };
13
+ delta?: {
14
+ content?: string;
15
+ };
16
+ }>;
17
+ usage?: OpenAIUsage;
18
+ }
19
+ export interface OpenAITextResponse {
20
+ output_text: string;
21
+ usage?: OpenAIUsage;
22
+ }
23
+ export declare function hasUsage(response: unknown): response is {
24
+ usage: OpenAIUsage;
25
+ };
26
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/responses.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,KAAK,CAAC;QACb,OAAO,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC/B,KAAK,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC9B,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,CAE9E"}
@@ -0,0 +1,4 @@
1
+ export function hasUsage(response) {
2
+ return !!response && typeof response === 'object' && 'usage' in response;
3
+ }
4
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../src/providers/openai/responses.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,QAAQ,CAAC,QAAiB;IACxC,OAAO,CAAC,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,30 @@
1
+ export interface OpenAIResponsesCreateArgs {
2
+ model: string;
3
+ input: string | Array<{
4
+ role: string;
5
+ content: string;
6
+ }>;
7
+ [key: string]: unknown;
8
+ }
9
+ export interface OpenAIChatCompletionsCreateArgs {
10
+ model: string;
11
+ messages: Array<{
12
+ role: string;
13
+ content: string;
14
+ }>;
15
+ stream?: boolean;
16
+ [key: string]: unknown;
17
+ }
18
+ export interface OpenAIClient {
19
+ responses?: {
20
+ create: (args: OpenAIResponsesCreateArgs) => Promise<unknown>;
21
+ __axon_patched__?: boolean;
22
+ };
23
+ chat?: {
24
+ completions?: {
25
+ create: (args: OpenAIChatCompletionsCreateArgs) => Promise<unknown>;
26
+ __axon_patched__?: boolean;
27
+ };
28
+ };
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/providers/openai/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE;QACV,MAAM,EAAE,CAAC,IAAI,EAAE,yBAAyB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9D,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC;IACF,IAAI,CAAC,EAAE;QACL,WAAW,CAAC,EAAE;YACZ,MAAM,EAAE,CAAC,IAAI,EAAE,+BAA+B,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;YACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;SAC5B,CAAC;KACH,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/providers/openai/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ import type { Axon } from '../core/axon.js';
2
+ import { ArgsToRequest, RequestToArgs, RawToResponse, ApplyCanonicalToRaw } from '../hooks/hooked.js';
3
+ export interface PatchMethodOpts<TArgs, TOutput> {
4
+ axon: Axon;
5
+ parent: unknown;
6
+ methodName: string;
7
+ ctxMetadata: Record<string, unknown>;
8
+ argsToRequest: ArgsToRequest<TArgs>;
9
+ requestToArgs: RequestToArgs<TArgs>;
10
+ rawToResponse: RawToResponse<TOutput>;
11
+ applyCanonicalToRaw?: ApplyCanonicalToRaw<TOutput>;
12
+ chunkToText?: (chunk: unknown) => string | undefined;
13
+ }
14
+ export declare function patchMethod<TArgs, TOutput>(opts: PatchMethodOpts<TArgs, TOutput>): boolean;
15
+ //# sourceMappingURL=patcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patcher.d.ts","sourceRoot":"","sources":["../../src/providers/patcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAGL,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAK5B,MAAM,WAAW,eAAe,CAAC,KAAK,EAAE,OAAO;IAC7C,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;CACtD;AAWD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,OAAO,CA0C1F"}
@@ -0,0 +1,41 @@
1
+ import { HookedCreateProxy, CreateFacade, } from '../hooks/hooked.js';
2
+ // Global registry of patched methods to prevent double-wrapping
3
+ const patchedObjects = new WeakSet();
4
+ export function patchMethod(opts) {
5
+ if (!opts.parent || typeof opts.parent !== 'object')
6
+ return false;
7
+ const parentObj = opts.parent;
8
+ const originalMethod = parentObj[opts.methodName];
9
+ if (typeof originalMethod !== 'function')
10
+ return false;
11
+ const typedMethod = originalMethod;
12
+ // 1. Idempotency Check:
13
+ // If we have already wrapped this function instance, return true (success).
14
+ if (patchedObjects.has(typedMethod))
15
+ return true;
16
+ // Check if it was marked by legacy means (or strictly on the function itself)
17
+ if (typedMethod.__axon_patched__)
18
+ return true;
19
+ const proxy = new HookedCreateProxy({
20
+ create: typedMethod.bind(parentObj),
21
+ axon: opts.axon,
22
+ ctxMetadata: opts.ctxMetadata,
23
+ argsToRequest: opts.argsToRequest,
24
+ requestToArgs: opts.requestToArgs,
25
+ rawToResponse: opts.rawToResponse,
26
+ applyCanonicalToRaw: opts.applyCanonicalToRaw,
27
+ chunkToText: opts.chunkToText,
28
+ });
29
+ const wrapped = CreateFacade.wrap(typedMethod, proxy);
30
+ // 2. Set Metadata:
31
+ // Store the original method so tests (and users) can access it if needed.
32
+ const wrappedWithMeta = wrapped;
33
+ wrappedWithMeta.__axon_original__ = originalMethod;
34
+ wrappedWithMeta.__axon_patched__ = true;
35
+ parentObj[opts.methodName] = wrappedWithMeta;
36
+ patchedObjects.add(wrappedWithMeta);
37
+ // Also mark the parent object if convenient, though method-marking is more precise.
38
+ parentObj.__axon_patched__ = true;
39
+ return true;
40
+ }
41
+ //# sourceMappingURL=patcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patcher.js","sourceRoot":"","sources":["../../src/providers/patcher.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,YAAY,GAKb,MAAM,oBAAoB,CAAC;AAE5B,gEAAgE;AAChE,MAAM,cAAc,GAAG,IAAI,OAAO,EAAE,CAAC;AAuBrC,MAAM,UAAU,WAAW,CAAiB,IAAqC;IAC/E,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAElE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAuB,CAAC;IAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAElD,IAAI,OAAO,cAAc,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IACvD,MAAM,WAAW,GAAG,cAAmC,CAAC;IAExD,wBAAwB;IACxB,4EAA4E;IAC5E,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAEjD,8EAA8E;IAC9E,IAAI,WAAW,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,iBAAiB,CAAiB;QAClD,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAuC;QACzE,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,WAAiD,EAAE,KAAK,CAAC,CAAC;IAE5F,mBAAmB;IACnB,0EAA0E;IAC1E,MAAM,eAAe,GAAG,OAA4B,CAAC;IACrD,eAAe,CAAC,iBAAiB,GAAG,cAAc,CAAC;IACnD,eAAe,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAExC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;IAC7C,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAEpC,oFAAoF;IACpF,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAElC,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Configuration options for the Axon runtime.
3
+ */
4
+ export interface AxonConfig {
5
+ /**
6
+ * If `true`, the process will throw an error immediately if a hook fails.
7
+ * If `false`, errors in hooks are logged but execution continues.
8
+ * @default true
9
+ */
10
+ failFast?: boolean;
11
+ /**
12
+ * If `true`, 'after' hooks are executed asynchronously without blocking the return of the LLM response.
13
+ * Useful for logging/tracing without adding latency.
14
+ * @default false
15
+ */
16
+ postCallBackground?: boolean;
17
+ /**
18
+ * If `true`, Axon collects duration metrics for every hook execution.
19
+ * @default false
20
+ */
21
+ collectHookTimings?: boolean;
22
+ }
23
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Context data that persists throughout the lifecycle of a single LLM call.
3
+ */
4
+ export interface CallContext {
5
+ /** A unique identifier for this specific call execution. */
6
+ traceId: string;
7
+ /** The timestamp when the call started. */
8
+ startedAt: Date;
9
+ /** Custom metadata that can be read/written by hooks. */
10
+ metadata: Record<string, unknown>;
11
+ }
12
+ /**
13
+ * Creates a default call context.
14
+ * @internal
15
+ */
16
+ export declare function createCallContext(init?: Partial<CallContext>): CallContext;
17
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,SAAS,EAAE,IAAI,CAAC;IAChB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAM1E"}
@@ -0,0 +1,13 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ /**
3
+ * Creates a default call context.
4
+ * @internal
5
+ */
6
+ export function createCallContext(init) {
7
+ return {
8
+ traceId: init?.traceId ?? randomUUID(),
9
+ startedAt: init?.startedAt ?? new Date(),
10
+ metadata: init?.metadata ?? {},
11
+ };
12
+ }
13
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/types/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAczC;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2B;IAC3D,OAAO;QACL,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,UAAU,EAAE;QACtC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE;QACxC,QAAQ,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE;KAC/B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './llm.js';
2
+ export * from './context.js';
3
+ export * from './config.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './llm.js';
2
+ export * from './context.js';
3
+ export * from './config.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,46 @@
1
+ import type { CallContext } from './context.js';
2
+ export type Role = 'system' | 'user' | 'assistant' | 'tool';
3
+ export interface Message {
4
+ role: Role;
5
+ content: string;
6
+ }
7
+ /**
8
+ * A provider-agnostic representation of an LLM request.
9
+ * Passed to 'before' hooks.
10
+ */
11
+ export interface LLMRequest {
12
+ /** The list of messages in the conversation. */
13
+ messages: Message[];
14
+ /** The model identifier (e.g., 'gpt-4'). */
15
+ model?: string;
16
+ /** Additional provider-specific parameters (temperature, max_tokens, etc.). */
17
+ params?: Record<string, unknown>;
18
+ /** Arbitrary metadata attached to the request. */
19
+ metadata?: Record<string, unknown>;
20
+ }
21
+ export interface Usage {
22
+ promptTokens?: number;
23
+ completionTokens?: number;
24
+ totalTokens?: number;
25
+ }
26
+ /**
27
+ * A provider-agnostic representation of an LLM response.
28
+ * Passed to 'after' hooks.
29
+ */
30
+ export interface LLMResponse {
31
+ /** The text content generated by the model. */
32
+ content: string;
33
+ /** Token usage statistics. */
34
+ usage?: Usage;
35
+ /** The original, provider-specific response object (e.g., OpenAI response body). */
36
+ raw?: unknown;
37
+ /** Arbitrary metadata attached to the response. */
38
+ metadata?: Record<string, unknown>;
39
+ }
40
+ /**
41
+ * Interface for objects that can handle a direct Axon call.
42
+ */
43
+ export interface LLMAdapter {
44
+ call: (request: LLMRequest, ctx: CallContext) => LLMResponse | Promise<LLMResponse>;
45
+ }
46
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/types/llm.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,IAAI,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,gDAAgD;IAChD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,KAAK;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,oFAAoF;IACpF,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,KAAK,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACrF"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/types/llm.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,107 @@
1
1
  {
2
2
  "name": "@memorilabs/axon",
3
- "version": "0.0.1",
4
- "private": false,
5
- "publishConfig": { "access": "public" }
3
+ "version": "0.1.0",
4
+ "description": "TypeScript SDK for Memori's hosted memory service",
5
+ "type": "module",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ },
13
+ "./openai": {
14
+ "types": "./dist/providers/openai/index.d.ts",
15
+ "import": "./dist/providers/openai/index.js"
16
+ },
17
+ "./anthropic": {
18
+ "types": "./dist/providers/anthropic/index.d.ts",
19
+ "import": "./dist/providers/anthropic/index.js"
20
+ },
21
+ "./types": {
22
+ "types": "./dist/types/index.d.ts",
23
+ "import": "./dist/types/index.js"
24
+ },
25
+ "./errors": {
26
+ "types": "./dist/errors/index.d.ts",
27
+ "import": "./dist/errors/index.js"
28
+ },
29
+ "./package.json": "./package.json"
30
+ },
31
+ "files": [
32
+ "dist",
33
+ "README.md",
34
+ "LICENSE"
35
+ ],
36
+ "scripts": {
37
+ "prebuild": "rm -rf dist",
38
+ "build": "tsc -p tsconfig.build.json",
39
+ "build:dev": "tsc -p tsconfig.json",
40
+ "example": "npm run -s build:dev && node dist/examples/simple.js",
41
+ "memori": "npm run -s build:dev && node dist/examples/memori.js",
42
+ "example:anthropic": "npm run -s build:dev && node dist/examples/anthropic.js",
43
+ "test": "vitest run",
44
+ "test:watch": "vitest",
45
+ "test:coverage": "vitest run --coverage",
46
+ "test:ui": "vitest --ui",
47
+ "lint": "eslint .",
48
+ "lint:fix": "eslint . --fix",
49
+ "format": "prettier --write .",
50
+ "format:check": "prettier --check .",
51
+ "typecheck": "tsc --noEmit",
52
+ "check": "npm run format:check && npm run lint && npm run typecheck",
53
+ "prepublishOnly": "npm run build"
54
+ },
55
+ "keywords": [
56
+ "memori",
57
+ "llm",
58
+ "memory",
59
+ "ai",
60
+ "openai",
61
+ "anthropic",
62
+ "sdk",
63
+ "typescript"
64
+ ],
65
+ "author": "Memori Labs",
66
+ "license": "Apache-2.0",
67
+ "repository": {
68
+ "type": "git",
69
+ "url": "https://github.com/MemoriLabs/axon.git",
70
+ "directory": "ts-sdk"
71
+ },
72
+ "bugs": {
73
+ "url": "https://github.com/MemoriLabs/axon/issues"
74
+ },
75
+ "homepage": "https://github.com/MemoriLabs/axon",
76
+ "peerDependencies": {
77
+ "@anthropic-ai/sdk": "^0.74.0",
78
+ "openai": "^4.0.0"
79
+ },
80
+ "peerDependenciesMeta": {
81
+ "openai": {
82
+ "optional": true
83
+ },
84
+ "@anthropic-ai/sdk": {
85
+ "optional": true
86
+ }
87
+ },
88
+ "devDependencies": {
89
+ "@anthropic-ai/sdk": "^0.74.0",
90
+ "@eslint/js": "^9.0.0",
91
+ "@types/node": "^20.11.30",
92
+ "@vitest/coverage-v8": "^2.1.9",
93
+ "@vitest/ui": "^2.1.9",
94
+ "dotenv": "^17.2.4",
95
+ "eslint": "^9.0.0",
96
+ "eslint-config-prettier": "^10.1.8",
97
+ "lint-staged": "^15.0.0",
98
+ "openai": "^6.21.0",
99
+ "prettier": "^3.0.0",
100
+ "typescript": "^5.7.3",
101
+ "typescript-eslint": "^8.55.0",
102
+ "vitest": "^2.1.9"
103
+ },
104
+ "engines": {
105
+ "node": ">=18.0.0"
106
+ }
6
107
  }
7
-
package/.npmrc.bak DELETED
@@ -1,3 +0,0 @@
1
- //registry.npmjs.org/:_authToken=
2
- registry=https://registry.npmjs.org/
3
- always-auth=true