@bip-krishna/agentmind 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 (169) hide show
  1. package/.agentmind/memory.db +0 -0
  2. package/.context-memory/memory.db +0 -0
  3. package/README.md +176 -0
  4. package/apps/dashboard/src/server.ts +369 -0
  5. package/cli/src/index.ts +163 -0
  6. package/dist/apps/dashboard/src/server.d.ts +6 -0
  7. package/dist/apps/dashboard/src/server.d.ts.map +1 -0
  8. package/dist/apps/dashboard/src/server.js +360 -0
  9. package/dist/apps/dashboard/src/server.js.map +1 -0
  10. package/dist/cli/src/index.d.ts +3 -0
  11. package/dist/cli/src/index.d.ts.map +1 -0
  12. package/dist/cli/src/index.js +162 -0
  13. package/dist/cli/src/index.js.map +1 -0
  14. package/dist/examples/advanced.d.ts +2 -0
  15. package/dist/examples/advanced.d.ts.map +1 -0
  16. package/dist/examples/advanced.js +41 -0
  17. package/dist/examples/advanced.js.map +1 -0
  18. package/dist/examples/basic.d.ts +2 -0
  19. package/dist/examples/basic.d.ts.map +1 -0
  20. package/dist/examples/basic.js +22 -0
  21. package/dist/examples/basic.js.map +1 -0
  22. package/dist/packages/core/src/consolidation.d.ts +27 -0
  23. package/dist/packages/core/src/consolidation.d.ts.map +1 -0
  24. package/dist/packages/core/src/consolidation.js +97 -0
  25. package/dist/packages/core/src/consolidation.js.map +1 -0
  26. package/dist/packages/core/src/events.d.ts +18 -0
  27. package/dist/packages/core/src/events.d.ts.map +1 -0
  28. package/dist/packages/core/src/events.js +13 -0
  29. package/dist/packages/core/src/events.js.map +1 -0
  30. package/dist/packages/core/src/extraction.d.ts +32 -0
  31. package/dist/packages/core/src/extraction.d.ts.map +1 -0
  32. package/dist/packages/core/src/extraction.js +65 -0
  33. package/dist/packages/core/src/extraction.js.map +1 -0
  34. package/dist/packages/core/src/index.d.ts +10 -0
  35. package/dist/packages/core/src/index.d.ts.map +1 -0
  36. package/dist/packages/core/src/index.js +7 -0
  37. package/dist/packages/core/src/index.js.map +1 -0
  38. package/dist/packages/core/src/memory-store.d.ts +36 -0
  39. package/dist/packages/core/src/memory-store.d.ts.map +1 -0
  40. package/dist/packages/core/src/memory-store.js +2 -0
  41. package/dist/packages/core/src/memory-store.js.map +1 -0
  42. package/dist/packages/core/src/memory.d.ts +75 -0
  43. package/dist/packages/core/src/memory.d.ts.map +1 -0
  44. package/dist/packages/core/src/memory.js +402 -0
  45. package/dist/packages/core/src/memory.js.map +1 -0
  46. package/dist/packages/core/src/policy.d.ts +17 -0
  47. package/dist/packages/core/src/policy.d.ts.map +1 -0
  48. package/dist/packages/core/src/policy.js +22 -0
  49. package/dist/packages/core/src/policy.js.map +1 -0
  50. package/dist/packages/core/src/types.d.ts +102 -0
  51. package/dist/packages/core/src/types.d.ts.map +1 -0
  52. package/dist/packages/core/src/types.js +23 -0
  53. package/dist/packages/core/src/types.js.map +1 -0
  54. package/dist/packages/embeddings/src/index.d.ts +4 -0
  55. package/dist/packages/embeddings/src/index.d.ts.map +1 -0
  56. package/dist/packages/embeddings/src/index.js +4 -0
  57. package/dist/packages/embeddings/src/index.js.map +1 -0
  58. package/dist/packages/embeddings/src/local.d.ts +15 -0
  59. package/dist/packages/embeddings/src/local.d.ts.map +1 -0
  60. package/dist/packages/embeddings/src/local.js +45 -0
  61. package/dist/packages/embeddings/src/local.js.map +1 -0
  62. package/dist/packages/embeddings/src/openai.d.ts +17 -0
  63. package/dist/packages/embeddings/src/openai.d.ts.map +1 -0
  64. package/dist/packages/embeddings/src/openai.js +41 -0
  65. package/dist/packages/embeddings/src/openai.js.map +1 -0
  66. package/dist/packages/embeddings/src/provider.d.ts +8 -0
  67. package/dist/packages/embeddings/src/provider.d.ts.map +1 -0
  68. package/dist/packages/embeddings/src/provider.js +12 -0
  69. package/dist/packages/embeddings/src/provider.js.map +1 -0
  70. package/dist/packages/integrations/src/anthropic.d.ts +15 -0
  71. package/dist/packages/integrations/src/anthropic.d.ts.map +1 -0
  72. package/dist/packages/integrations/src/anthropic.js +25 -0
  73. package/dist/packages/integrations/src/anthropic.js.map +1 -0
  74. package/dist/packages/integrations/src/index.d.ts +4 -0
  75. package/dist/packages/integrations/src/index.d.ts.map +1 -0
  76. package/dist/packages/integrations/src/index.js +4 -0
  77. package/dist/packages/integrations/src/index.js.map +1 -0
  78. package/dist/packages/integrations/src/openai.d.ts +27 -0
  79. package/dist/packages/integrations/src/openai.d.ts.map +1 -0
  80. package/dist/packages/integrations/src/openai.js +26 -0
  81. package/dist/packages/integrations/src/openai.js.map +1 -0
  82. package/dist/packages/integrations/src/vercel.d.ts +24 -0
  83. package/dist/packages/integrations/src/vercel.d.ts.map +1 -0
  84. package/dist/packages/integrations/src/vercel.js +20 -0
  85. package/dist/packages/integrations/src/vercel.js.map +1 -0
  86. package/dist/packages/retrieval/src/index.d.ts +3 -0
  87. package/dist/packages/retrieval/src/index.d.ts.map +1 -0
  88. package/dist/packages/retrieval/src/index.js +3 -0
  89. package/dist/packages/retrieval/src/index.js.map +1 -0
  90. package/dist/packages/retrieval/src/ranker.d.ts +21 -0
  91. package/dist/packages/retrieval/src/ranker.d.ts.map +1 -0
  92. package/dist/packages/retrieval/src/ranker.js +54 -0
  93. package/dist/packages/retrieval/src/ranker.js.map +1 -0
  94. package/dist/packages/retrieval/src/token.d.ts +3 -0
  95. package/dist/packages/retrieval/src/token.d.ts.map +1 -0
  96. package/dist/packages/retrieval/src/token.js +7 -0
  97. package/dist/packages/retrieval/src/token.js.map +1 -0
  98. package/dist/packages/storage/src/config.d.ts +14 -0
  99. package/dist/packages/storage/src/config.d.ts.map +1 -0
  100. package/dist/packages/storage/src/config.js +41 -0
  101. package/dist/packages/storage/src/config.js.map +1 -0
  102. package/dist/packages/storage/src/index.d.ts +4 -0
  103. package/dist/packages/storage/src/index.d.ts.map +1 -0
  104. package/dist/packages/storage/src/index.js +4 -0
  105. package/dist/packages/storage/src/index.js.map +1 -0
  106. package/dist/packages/storage/src/memory-store.d.ts +37 -0
  107. package/dist/packages/storage/src/memory-store.d.ts.map +1 -0
  108. package/dist/packages/storage/src/memory-store.js +107 -0
  109. package/dist/packages/storage/src/memory-store.js.map +1 -0
  110. package/dist/packages/storage/src/migrations.d.ts +12 -0
  111. package/dist/packages/storage/src/migrations.d.ts.map +1 -0
  112. package/dist/packages/storage/src/migrations.js +89 -0
  113. package/dist/packages/storage/src/migrations.js.map +1 -0
  114. package/dist/packages/storage/src/postgres-store.d.ts +45 -0
  115. package/dist/packages/storage/src/postgres-store.d.ts.map +1 -0
  116. package/dist/packages/storage/src/postgres-store.js +282 -0
  117. package/dist/packages/storage/src/postgres-store.js.map +1 -0
  118. package/dist/packages/storage/src/sqlite-store.d.ts +36 -0
  119. package/dist/packages/storage/src/sqlite-store.d.ts.map +1 -0
  120. package/dist/packages/storage/src/sqlite-store.js +243 -0
  121. package/dist/packages/storage/src/sqlite-store.js.map +1 -0
  122. package/examples/advanced.ts +46 -0
  123. package/examples/basic.ts +25 -0
  124. package/package.json +52 -0
  125. package/packages/core/package.json +13 -0
  126. package/packages/core/src/consolidation.ts +104 -0
  127. package/packages/core/src/events.ts +25 -0
  128. package/packages/core/src/extraction.ts +81 -0
  129. package/packages/core/src/index.ts +22 -0
  130. package/packages/core/src/memory-store.ts +50 -0
  131. package/packages/core/src/memory.ts +447 -0
  132. package/packages/core/src/policy.ts +36 -0
  133. package/packages/core/src/types.ts +119 -0
  134. package/packages/core/tsconfig.json +6 -0
  135. package/packages/embeddings/package.json +9 -0
  136. package/packages/embeddings/src/index.ts +3 -0
  137. package/packages/embeddings/src/local.ts +47 -0
  138. package/packages/embeddings/src/openai.ts +50 -0
  139. package/packages/embeddings/src/provider.d.ts.map +1 -0
  140. package/packages/embeddings/src/provider.js.map +1 -0
  141. package/packages/embeddings/src/provider.ts +17 -0
  142. package/packages/embeddings/tsconfig.json +6 -0
  143. package/packages/integrations/package.json +7 -0
  144. package/packages/integrations/src/anthropic.ts +34 -0
  145. package/packages/integrations/src/index.ts +3 -0
  146. package/packages/integrations/src/openai.ts +52 -0
  147. package/packages/integrations/src/vercel.ts +26 -0
  148. package/packages/retrieval/package.json +8 -0
  149. package/packages/retrieval/src/index.ts +2 -0
  150. package/packages/retrieval/src/ranker.d.ts.map +1 -0
  151. package/packages/retrieval/src/ranker.js.map +1 -0
  152. package/packages/retrieval/src/ranker.ts +77 -0
  153. package/packages/retrieval/src/token.d.ts.map +1 -0
  154. package/packages/retrieval/src/token.js.map +1 -0
  155. package/packages/retrieval/src/token.ts +5 -0
  156. package/packages/retrieval/tsconfig.json +6 -0
  157. package/packages/storage/package.json +11 -0
  158. package/packages/storage/src/config.ts +44 -0
  159. package/packages/storage/src/index.ts +3 -0
  160. package/packages/storage/src/memory-store.ts +100 -0
  161. package/packages/storage/src/migrations.ts +96 -0
  162. package/packages/storage/src/postgres-store.ts +299 -0
  163. package/packages/storage/src/sqlite-store.ts +298 -0
  164. package/packages/storage/tsconfig.json +6 -0
  165. package/test-mvp.mjs +82 -0
  166. package/tests/consolidation.test.ts +45 -0
  167. package/tests/eval.test.ts +102 -0
  168. package/tsconfig.json +21 -0
  169. package/vitest.config.ts +8 -0
@@ -0,0 +1,102 @@
1
+ import { z } from "zod";
2
+ export declare const MemoryTypeSchema: z.ZodEnum<["fact", "preference", "decision", "event", "knowledge", "procedure", "task", "summary"]>;
3
+ export type MemoryType = z.infer<typeof MemoryTypeSchema>;
4
+ export declare const MemoryStatusSchema: z.ZodEnum<["active", "superseded", "archived"]>;
5
+ export type MemoryStatus = z.infer<typeof MemoryStatusSchema>;
6
+ export interface Memory {
7
+ id: string;
8
+ projectId: string;
9
+ type: MemoryType;
10
+ content: string;
11
+ embedding?: number[];
12
+ importance: number;
13
+ confidence: number;
14
+ status: MemoryStatus;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ lastAccessedAt?: Date;
18
+ accessCount: number;
19
+ sourceId?: string;
20
+ metadata: Record<string, unknown>;
21
+ archived: boolean;
22
+ }
23
+ export interface Project {
24
+ id: string;
25
+ name: string;
26
+ description?: string;
27
+ createdAt: Date;
28
+ updatedAt: Date;
29
+ }
30
+ export type SourceType = "conversation" | "document" | "tool" | "manual";
31
+ export interface Source {
32
+ id: string;
33
+ projectId: string;
34
+ type: SourceType;
35
+ content?: string;
36
+ createdAt: Date;
37
+ metadata: Record<string, unknown>;
38
+ }
39
+ export interface RetrievalEvent {
40
+ id: string;
41
+ projectId: string;
42
+ query: string;
43
+ retrievedMemoryIds: string[];
44
+ scores: Record<string, number>;
45
+ finalContextTokens: number;
46
+ createdAt: Date;
47
+ }
48
+ export interface SearchQuery {
49
+ projectId: string;
50
+ query: string;
51
+ types?: MemoryType[];
52
+ limit?: number;
53
+ minImportance?: number;
54
+ includeArchived?: boolean;
55
+ }
56
+ export interface CandidateMemory extends Memory {
57
+ semanticScore: number;
58
+ keywordScore: number;
59
+ finalScore: number;
60
+ }
61
+ export interface SearchResult {
62
+ memory: Memory;
63
+ score: number;
64
+ semanticScore: number;
65
+ keywordScore: number;
66
+ }
67
+ export interface ContextOptions {
68
+ query: string;
69
+ maxTokens?: number;
70
+ limit?: number;
71
+ types?: MemoryType[];
72
+ }
73
+ export interface ContextResult {
74
+ memories: Memory[];
75
+ text: string;
76
+ tokenCount: number;
77
+ sources: string[];
78
+ }
79
+ export declare const CreateMemoryInputSchema: z.ZodObject<{
80
+ type: z.ZodDefault<z.ZodEnum<["fact", "preference", "decision", "event", "knowledge", "procedure", "task", "summary"]>>;
81
+ content: z.ZodString;
82
+ importance: z.ZodDefault<z.ZodNumber>;
83
+ confidence: z.ZodDefault<z.ZodNumber>;
84
+ sourceId: z.ZodOptional<z.ZodString>;
85
+ metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
86
+ }, "strip", z.ZodTypeAny, {
87
+ type: "fact" | "preference" | "decision" | "event" | "knowledge" | "procedure" | "task" | "summary";
88
+ content: string;
89
+ importance: number;
90
+ confidence: number;
91
+ metadata: Record<string, unknown>;
92
+ sourceId?: string | undefined;
93
+ }, {
94
+ content: string;
95
+ type?: "fact" | "preference" | "decision" | "event" | "knowledge" | "procedure" | "task" | "summary" | undefined;
96
+ importance?: number | undefined;
97
+ confidence?: number | undefined;
98
+ sourceId?: string | undefined;
99
+ metadata?: Record<string, unknown> | undefined;
100
+ }>;
101
+ export type CreateMemoryInput = z.infer<typeof CreateMemoryInputSchema>;
102
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { z } from "zod";
2
+ // ---------- Memory types ----------
3
+ export const MemoryTypeSchema = z.enum([
4
+ "fact",
5
+ "preference",
6
+ "decision",
7
+ "event",
8
+ "knowledge",
9
+ "procedure",
10
+ "task",
11
+ "summary",
12
+ ]);
13
+ export const MemoryStatusSchema = z.enum(["active", "superseded", "archived"]);
14
+ // ---------- Validation schemas ----------
15
+ export const CreateMemoryInputSchema = z.object({
16
+ type: MemoryTypeSchema.default("fact"),
17
+ content: z.string().min(1).max(10000),
18
+ importance: z.number().min(0).max(1).default(0.5),
19
+ confidence: z.number().min(0).max(1).default(1),
20
+ sourceId: z.string().optional(),
21
+ metadata: z.record(z.unknown()).default({}),
22
+ });
23
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../packages/core/src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,qCAAqC;AAErC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM;IACN,YAAY;IACZ,UAAU;IACV,OAAO;IACP,WAAW;IACX,WAAW;IACX,MAAM;IACN,SAAS;CACV,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AA0F/E,2CAA2C;AAE3C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./provider.js";
2
+ export * from "./openai.js";
3
+ export * from "./local.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/embeddings/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./provider.js";
2
+ export * from "./openai.js";
3
+ export * from "./local.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/embeddings/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EmbeddingProvider } from "./provider.js";
2
+ /**
3
+ * Deterministic, zero-dependency local embedding for tests / offline dev.
4
+ * Hashing trick: char n-grams -> fixed dimensions, L2-normalized.
5
+ * NOT suitable for production quality but ensures storage contract works without API keys.
6
+ */
7
+ export declare class LocalEmbeddingProvider implements EmbeddingProvider {
8
+ readonly model = "local-hash-v1";
9
+ readonly dimensions: number;
10
+ constructor(dimensions?: number);
11
+ embed(text: string): Promise<number[]>;
12
+ embedBatch(texts: string[]): Promise<number[][]>;
13
+ private hashEmbed;
14
+ }
15
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../../packages/embeddings/src/local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;;GAIG;AACH,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,QAAQ,CAAC,KAAK,mBAAmB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,SAAM;IAItB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAItC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAItD,OAAO,CAAC,SAAS;CAuBlB"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Deterministic, zero-dependency local embedding for tests / offline dev.
3
+ * Hashing trick: char n-grams -> fixed dimensions, L2-normalized.
4
+ * NOT suitable for production quality but ensures storage contract works without API keys.
5
+ */
6
+ export class LocalEmbeddingProvider {
7
+ model = "local-hash-v1";
8
+ dimensions;
9
+ constructor(dimensions = 256) {
10
+ this.dimensions = dimensions;
11
+ }
12
+ async embed(text) {
13
+ return this.hashEmbed(text);
14
+ }
15
+ async embedBatch(texts) {
16
+ return texts.map((t) => this.hashEmbed(t));
17
+ }
18
+ hashEmbed(text) {
19
+ const vec = new Array(this.dimensions).fill(0);
20
+ const normalized = text.toLowerCase();
21
+ // char trigrams
22
+ for (let i = 0; i < normalized.length; i++) {
23
+ const trigram = normalized.slice(i, i + 3);
24
+ if (!trigram)
25
+ continue;
26
+ let hash = 0;
27
+ for (let j = 0; j < trigram.length; j++)
28
+ hash = (hash * 31 + trigram.charCodeAt(j)) >>> 0;
29
+ const idx = hash % this.dimensions;
30
+ vec[idx] += 1;
31
+ }
32
+ // token-level boost
33
+ for (const tok of normalized.split(/\W+/).filter(Boolean)) {
34
+ let hash = 0;
35
+ for (let j = 0; j < tok.length; j++)
36
+ hash = (hash * 131 + tok.charCodeAt(j)) >>> 0;
37
+ const idx = (hash * 7) % this.dimensions;
38
+ vec[idx] += 2;
39
+ }
40
+ // L2 normalize
41
+ const norm = Math.sqrt(vec.reduce((s, v) => s + v * v, 0)) || 1;
42
+ return vec.map((v) => v / norm);
43
+ }
44
+ }
45
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../../packages/embeddings/src/local.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IACxB,KAAK,GAAG,eAAe,CAAC;IACxB,UAAU,CAAS;IAE5B,YAAY,UAAU,GAAG,GAAG;QAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,SAAS,CAAC,IAAY;QAC5B,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,gBAAgB;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1F,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,oBAAoB;QACpB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1D,IAAI,IAAI,GAAG,CAAC,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE;gBAAE,IAAI,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACnF,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACzC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QACD,eAAe;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { EmbeddingProvider } from "./provider.js";
2
+ export interface OpenAIEmbeddingOptions {
3
+ apiKey: string;
4
+ model?: string;
5
+ dimensions?: number;
6
+ baseURL?: string;
7
+ }
8
+ export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
9
+ readonly model: string;
10
+ readonly dimensions: number;
11
+ private apiKey;
12
+ private baseURL;
13
+ constructor(opts: OpenAIEmbeddingOptions);
14
+ embed(text: string): Promise<number[]>;
15
+ embedBatch(texts: string[]): Promise<number[][]>;
16
+ }
17
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../packages/embeddings/src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,uBAAwB,YAAW,iBAAiB;IAC/D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;gBAEZ,IAAI,EAAE,sBAAsB;IAOlC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IActC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CAavD"}
@@ -0,0 +1,41 @@
1
+ export class OpenAIEmbeddingProvider {
2
+ model;
3
+ dimensions;
4
+ apiKey;
5
+ baseURL;
6
+ constructor(opts) {
7
+ this.apiKey = opts.apiKey;
8
+ this.model = opts.model ?? "text-embedding-3-small";
9
+ this.dimensions = opts.dimensions ?? 1536;
10
+ this.baseURL = opts.baseURL ?? "https://api.openai.com/v1";
11
+ }
12
+ async embed(text) {
13
+ const res = await fetch(`${this.baseURL}/embeddings`, {
14
+ method: "POST",
15
+ headers: {
16
+ "Content-Type": "application/json",
17
+ Authorization: `Bearer ${this.apiKey}`,
18
+ },
19
+ body: JSON.stringify({ model: this.model, input: text }),
20
+ });
21
+ if (!res.ok)
22
+ throw new Error(`OpenAI embed failed: ${res.status} ${await res.text()}`);
23
+ const data = (await res.json());
24
+ return data.data[0].embedding;
25
+ }
26
+ async embedBatch(texts) {
27
+ const res = await fetch(`${this.baseURL}/embeddings`, {
28
+ method: "POST",
29
+ headers: {
30
+ "Content-Type": "application/json",
31
+ Authorization: `Bearer ${this.apiKey}`,
32
+ },
33
+ body: JSON.stringify({ model: this.model, input: texts }),
34
+ });
35
+ if (!res.ok)
36
+ throw new Error(`OpenAI embedBatch failed: ${res.status} ${await res.text()}`);
37
+ const data = (await res.json());
38
+ return data.data.sort((a, b) => a.index - b.index).map((d) => d.embedding);
39
+ }
40
+ }
41
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../packages/embeddings/src/openai.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,uBAAuB;IACzB,KAAK,CAAS;IACd,UAAU,CAAS;IACpB,MAAM,CAAS;IACf,OAAO,CAAS;IAExB,YAAY,IAA4B;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,wBAAwB,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,2BAA2B,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,IAAY;QACtB,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACzD,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvF,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAqB,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAe;QAC9B,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,aAAa,EAAE;YACpD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;aACvC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAQ,CAAC;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5F,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ export interface EmbeddingProvider {
2
+ readonly model: string;
3
+ readonly dimensions: number;
4
+ embed(text: string): Promise<number[]>;
5
+ embedBatch(texts: string[]): Promise<number[][]>;
6
+ }
7
+ export declare function cosineSimilarity(a: number[], b: number[]): number;
8
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../../packages/embeddings/src/provider.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAClD;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CASjE"}
@@ -0,0 +1,12 @@
1
+ export function cosineSimilarity(a, b) {
2
+ let dot = 0, na = 0, nb = 0;
3
+ for (let i = 0; i < a.length; i++) {
4
+ dot += a[i] * b[i];
5
+ na += a[i] * a[i];
6
+ nb += b[i] * b[i];
7
+ }
8
+ if (na === 0 || nb === 0)
9
+ return 0;
10
+ return dot / (Math.sqrt(na) * Math.sqrt(nb));
11
+ }
12
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../packages/embeddings/src/provider.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,gBAAgB,CAAC,CAAW,EAAE,CAAW;IACvD,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { MemoryEngine } from "../../core/src/memory.js";
2
+ import type { ChatMessage } from "./openai.js";
3
+ export interface AnthropicWithMemoryOptions {
4
+ memory: MemoryEngine;
5
+ messages: ChatMessage[];
6
+ callLLM: (messages: ChatMessage[]) => Promise<string>;
7
+ extract?: boolean;
8
+ }
9
+ export declare function withAnthropicMemory(opts: AnthropicWithMemoryOptions): Promise<{
10
+ response: string;
11
+ context: string;
12
+ memories: any[];
13
+ }>;
14
+ export declare function createAnthropicCaller(anthropic: any, model: string): (messages: ChatMessage[]) => Promise<string>;
15
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../../packages/integrations/src/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,0BAA0B;;;;GAczE;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,IACnD,UAAU,WAAW,EAAE,qBAMtC"}
@@ -0,0 +1,25 @@
1
+ export async function withAnthropicMemory(opts) {
2
+ const lastUser = [...opts.messages].reverse().find((m) => m.role === "user");
3
+ const query = lastUser?.content ?? opts.messages.map((m) => m.content).join("\n").slice(-500);
4
+ const ctx = await opts.memory.context({ query, maxTokens: 4000 });
5
+ const system = ctx.text ? ctx.text : undefined;
6
+ // Anthropic separates system; we prepend as system if provided
7
+ const augmented = system ? [{ role: "system", content: system }, ...opts.messages.filter((m) => m.role !== "system")] : opts.messages;
8
+ const response = await opts.callLLM(augmented);
9
+ let memories = [];
10
+ if (opts.extract !== false) {
11
+ const ingested = await opts.memory.ingest({ role: "assistant", content: response });
12
+ if (ingested.extracted)
13
+ memories = ingested.extracted;
14
+ }
15
+ return { response, context: ctx.text, memories };
16
+ }
17
+ export function createAnthropicCaller(anthropic, model) {
18
+ return async (messages) => {
19
+ const system = messages.find((m) => m.role === "system")?.content;
20
+ const rest = messages.filter((m) => m.role !== "system").map((m) => ({ role: m.role, content: m.content }));
21
+ const res = await anthropic.messages.create({ model, max_tokens: 1024, system, messages: rest });
22
+ return res.content[0].text;
23
+ };
24
+ }
25
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../../packages/integrations/src/anthropic.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAgC;IACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,+DAA+D;IAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/I,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,IAAI,QAAQ,CAAC,SAAS;YAAE,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAc,EAAE,KAAa;IACjE,OAAO,KAAK,EAAE,QAAuB,EAAE,EAAE;QACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,OAAO,CAAC;QAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC5G,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAc,CAAC;IACvC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./openai.js";
2
+ export * from "./anthropic.js";
3
+ export * from "./vercel.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/integrations/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./openai.js";
2
+ export * from "./anthropic.js";
3
+ export * from "./vercel.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/integrations/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { MemoryEngine } from "../../core/src/memory.js";
2
+ /**
3
+ * OpenAI integration — automates retrieve -> context -> LLM -> extract -> store
4
+ * Usage:
5
+ * import { withMemory } from "@agentmind/integrations/openai";
6
+ * const res = await withMemory({ memory, messages, openai, model: "gpt-4o" });
7
+ */
8
+ export interface ChatMessage {
9
+ role: "system" | "user" | "assistant" | "tool";
10
+ content: string;
11
+ }
12
+ export interface WithMemoryOptions {
13
+ memory: MemoryEngine;
14
+ messages: ChatMessage[];
15
+ callLLM: (messages: ChatMessage[]) => Promise<string>;
16
+ extract?: boolean;
17
+ }
18
+ export declare function withMemory(opts: WithMemoryOptions): Promise<{
19
+ response: string;
20
+ context: string;
21
+ memories: any[];
22
+ }>;
23
+ /** Helper for OpenAI SDK users */
24
+ export declare function createOpenAICaller(openai: any, model: string, opts?: {
25
+ temperature?: number;
26
+ }): (messages: ChatMessage[]) => Promise<string>;
27
+ //# sourceMappingURL=openai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../../packages/integrations/src/openai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,OAAO,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAoBzH;AAED,kCAAkC;AAClC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,IAC9E,UAAU,WAAW,EAAE,qBAItC"}
@@ -0,0 +1,26 @@
1
+ export async function withMemory(opts) {
2
+ const lastUser = [...opts.messages].reverse().find((m) => m.role === "user");
3
+ const query = lastUser?.content ?? opts.messages.map((m) => m.content).join("\n").slice(-500);
4
+ const ctx = await opts.memory.context({ query, maxTokens: 4000 });
5
+ const augmented = ctx.text
6
+ ? [{ role: "system", content: ctx.text }, ...opts.messages]
7
+ : [...opts.messages];
8
+ const response = await opts.callLLM(augmented);
9
+ let memories = [];
10
+ if (opts.extract !== false) {
11
+ // Use memory's extractor if available via ingest
12
+ const ingested = await opts.memory.ingest({ role: "assistant", content: response });
13
+ // If autoExtract is enabled, ingest already extracted; otherwise manually remember key facts via heuristic
14
+ if (ingested.extracted)
15
+ memories = ingested.extracted;
16
+ }
17
+ return { response, context: ctx.text, memories };
18
+ }
19
+ /** Helper for OpenAI SDK users */
20
+ export function createOpenAICaller(openai, model, opts) {
21
+ return async (messages) => {
22
+ const res = await openai.chat.completions.create({ model, messages, temperature: opts?.temperature ?? 0.7 });
23
+ return res.choices[0].message.content;
24
+ };
25
+ }
26
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../../packages/integrations/src/openai.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,QAAQ,EAAE,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;IAE9F,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,MAAM,SAAS,GAAkB,GAAG,CAAC,IAAI;QACvC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3D,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEvB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAE/C,IAAI,QAAQ,GAAU,EAAE,CAAC;IACzB,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3B,iDAAiD;QACjD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpF,2GAA2G;QAC3G,IAAI,QAAQ,CAAC,SAAS;YAAE,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnD,CAAC;AAED,kCAAkC;AAClC,MAAM,UAAU,kBAAkB,CAAC,MAAW,EAAE,KAAa,EAAE,IAA+B;IAC5F,OAAO,KAAK,EAAE,QAAuB,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,IAAI,GAAG,EAAE,CAAC,CAAC;QAC7G,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAiB,CAAC;IAClD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { MemoryEngine } from "../../core/src/memory.js";
2
+ /**
3
+ * Vercel AI SDK integration
4
+ * Example:
5
+ * import { withMemoryAISDK } from "@agentmind/integrations/vercel";
6
+ * const { text } = await withMemoryAISDK({ memory, prompt, generateText });
7
+ */
8
+ export declare function withMemoryAISDK(opts: {
9
+ memory: MemoryEngine;
10
+ prompt: string;
11
+ generateText: (prompt: string, system?: string) => Promise<string>;
12
+ }): Promise<{
13
+ text: string;
14
+ context: string;
15
+ }>;
16
+ export declare function withLangChainMemory(opts: {
17
+ memory: MemoryEngine;
18
+ input: string;
19
+ callChain: (input: string, context: string) => Promise<string>;
20
+ }): Promise<{
21
+ output: string;
22
+ context: string;
23
+ }>;
24
+ //# sourceMappingURL=vercel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.d.ts","sourceRoot":"","sources":["../../../../packages/integrations/src/vercel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE;IAC1C,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACpE,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAK7C;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAAE;;;GAKtJ"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Vercel AI SDK integration
3
+ * Example:
4
+ * import { withMemoryAISDK } from "@agentmind/integrations/vercel";
5
+ * const { text } = await withMemoryAISDK({ memory, prompt, generateText });
6
+ */
7
+ export async function withMemoryAISDK(opts) {
8
+ const ctx = await opts.memory.context({ query: opts.prompt, maxTokens: 4000 });
9
+ const text = await opts.generateText(opts.prompt, ctx.text || undefined);
10
+ await opts.memory.ingest({ role: "assistant", content: text });
11
+ return { text, context: ctx.text };
12
+ }
13
+ // LangChain adapter stub
14
+ export async function withLangChainMemory(opts) {
15
+ const ctx = await opts.memory.context({ query: opts.input });
16
+ const output = await opts.callChain(opts.input, ctx.text);
17
+ await opts.memory.ingest({ role: "assistant", content: output });
18
+ return { output, context: ctx.text };
19
+ }
20
+ //# sourceMappingURL=vercel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel.js","sourceRoot":"","sources":["../../../../packages/integrations/src/vercel.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAIrC;IACC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IACzE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC;AAED,yBAAyB;AACzB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA6G;IACrJ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./ranker.js";
2
+ export * from "./token.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/retrieval/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./ranker.js";
2
+ export * from "./token.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/retrieval/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { Memory } from "../../core/src/types.js";
2
+ export interface RankerWeights {
3
+ semantic: number;
4
+ keyword: number;
5
+ importance: number;
6
+ recency: number;
7
+ }
8
+ export interface RankedItem {
9
+ memory: Memory;
10
+ score: number;
11
+ semanticScore: number;
12
+ keywordScore: number;
13
+ }
14
+ export declare class HybridRanker {
15
+ weights: RankerWeights;
16
+ constructor(weights?: Partial<RankerWeights>);
17
+ rank(memories: Array<Memory & {
18
+ _vec?: number[];
19
+ }>, query: string, queryVec?: number[]): RankedItem[];
20
+ }
21
+ //# sourceMappingURL=ranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ranker.d.ts","sourceRoot":"","sources":["../../../../packages/retrieval/src/ranker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAqBD,qBAAa,YAAY;IACvB,OAAO,EAAE,aAAa,CAAC;gBAEX,OAAO,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC;IAS5C,IAAI,CACF,QAAQ,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,EAC7C,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,EAAE,GAClB,UAAU,EAAE;CAwBhB"}
@@ -0,0 +1,54 @@
1
+ import { cosineSimilarity } from "../../embeddings/src/provider.js";
2
+ function keywordScore(query, content) {
3
+ const qTokens = new Set(query.toLowerCase().split(/\W+/).filter(Boolean));
4
+ const cTokens = content.toLowerCase().split(/\W+/).filter(Boolean);
5
+ if (qTokens.size === 0)
6
+ return 0;
7
+ let hits = 0;
8
+ for (const t of cTokens)
9
+ if (qTokens.has(t))
10
+ hits++;
11
+ // exact phrase boost
12
+ const phrase = query.toLowerCase().trim();
13
+ const phraseBoost = content.toLowerCase().includes(phrase) ? 0.3 : 0;
14
+ return Math.min(1, hits / qTokens.size + phraseBoost);
15
+ }
16
+ function recencyScore(mem) {
17
+ const ageMs = Date.now() - new Date(mem.updatedAt).getTime();
18
+ const days = ageMs / (1000 * 60 * 60 * 24);
19
+ // exponential decay, half-life ~30 days
20
+ return Math.exp(-days / 30);
21
+ }
22
+ export class HybridRanker {
23
+ weights;
24
+ constructor(weights) {
25
+ this.weights = {
26
+ semantic: weights?.semantic ?? 0.6,
27
+ keyword: weights?.keyword ?? 0.2,
28
+ importance: weights?.importance ?? 0.1,
29
+ recency: weights?.recency ?? 0.1,
30
+ };
31
+ }
32
+ rank(memories, query, queryVec) {
33
+ const scored = memories.map((m) => {
34
+ const semantic = queryVec && m._vec ? (cosineSimilarity(queryVec, m._vec) + 1) / 2 : 0; // normalize -1..1 -> 0..1
35
+ const kw = keywordScore(query, m.content);
36
+ const imp = m.importance;
37
+ const rec = recencyScore(m);
38
+ const finalScore = semantic * this.weights.semantic +
39
+ kw * this.weights.keyword +
40
+ imp * this.weights.importance +
41
+ rec * this.weights.recency;
42
+ return {
43
+ memory: m,
44
+ score: finalScore,
45
+ semanticScore: semantic,
46
+ keywordScore: kw,
47
+ };
48
+ });
49
+ // If no query vectors, keyword+importance+recency still ranks
50
+ scored.sort((a, b) => b.score - a.score);
51
+ return scored;
52
+ }
53
+ }
54
+ //# sourceMappingURL=ranker.js.map