kernl 0.8.2 → 0.8.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.
@@ -1,5 +1,4 @@
1
-
2
- 
3
- > kernl@0.8.1 build /Users/andjones/Documents/projects/kernl/packages/kernl
4
- > tsc && tsc-alias --resolve-full-paths
5
-
1
+
2
+ > kernl@0.8.4 build /home/runner/work/kernl/kernl/packages/kernl
3
+ > tsc && tsc-alias --resolve-full-paths
4
+
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @kernl/core
2
2
 
3
+ ## 0.8.4
4
+
5
+ ### Patch Changes
6
+
7
+ - e90b227: Make memory embedding opt-in with config warnings
8
+
9
+ ## 0.8.3
10
+
11
+ ### Patch Changes
12
+
13
+ - ae11e54: Replace pino logger with console-based implementation to reduce dependencies
14
+
3
15
  ## 0.8.2
4
16
 
5
17
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-config.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-config.test.d.ts","sourceRoot":"","sources":["../../../src/kernl/__tests__/memory-config.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,157 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
+ import { Kernl } from "../kernl.js";
3
+ import { Agent } from "../../agent.js";
4
+ import { logger } from "../../lib/logger.js";
5
+ function createMockLanguageModel() {
6
+ return {
7
+ spec: "1.0",
8
+ provider: "test",
9
+ modelId: "test-model",
10
+ };
11
+ }
12
+ function createMockEmbeddingModel() {
13
+ return {
14
+ provider: "test",
15
+ modelId: "test-embedder",
16
+ embed: vi.fn(async ({ values }) => ({
17
+ embeddings: values.map((v) => [v.length, 0, 0]),
18
+ })),
19
+ };
20
+ }
21
+ function createMockVectorIndex() {
22
+ return {
23
+ id: "mock",
24
+ capabilities: () => ({
25
+ namespacing: false,
26
+ filtering: { basic: true },
27
+ hybrid: false,
28
+ }),
29
+ createIndex: vi.fn(),
30
+ deleteIndex: vi.fn(),
31
+ upsert: vi.fn(),
32
+ query: vi.fn(),
33
+ delete: vi.fn(),
34
+ };
35
+ }
36
+ describe("Kernl memory config warnings", () => {
37
+ let warnSpy;
38
+ beforeEach(() => {
39
+ warnSpy = vi.spyOn(logger, "warn").mockImplementation(() => { });
40
+ });
41
+ afterEach(() => {
42
+ warnSpy.mockRestore();
43
+ });
44
+ it("warns when agent enables memory but no embedding configured", () => {
45
+ const kernl = new Kernl({
46
+ storage: {
47
+ vector: createMockVectorIndex(),
48
+ },
49
+ // no memory.embedding
50
+ });
51
+ const agent = new Agent({
52
+ id: "test-agent",
53
+ name: "Test Agent",
54
+ instructions: "test",
55
+ model: createMockLanguageModel(),
56
+ memory: { enabled: true },
57
+ });
58
+ kernl.register(agent);
59
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("Embeddings are not configured"));
60
+ });
61
+ it("warns when agent enables memory but no vector storage configured", () => {
62
+ const kernl = new Kernl({
63
+ memory: {
64
+ embedding: createMockEmbeddingModel(),
65
+ },
66
+ // no storage.vector
67
+ });
68
+ const agent = new Agent({
69
+ id: "test-agent",
70
+ name: "Test Agent",
71
+ instructions: "test",
72
+ model: createMockLanguageModel(),
73
+ memory: { enabled: true },
74
+ });
75
+ kernl.register(agent);
76
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("No vector storage configured"));
77
+ });
78
+ it("warns for both missing embedding and vector storage", () => {
79
+ const kernl = new Kernl({});
80
+ const agent = new Agent({
81
+ id: "test-agent",
82
+ name: "Test Agent",
83
+ instructions: "test",
84
+ model: createMockLanguageModel(),
85
+ memory: { enabled: true },
86
+ });
87
+ kernl.register(agent);
88
+ expect(warnSpy).toHaveBeenCalledTimes(2);
89
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("Embeddings are not configured"));
90
+ expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining("No vector storage configured"));
91
+ });
92
+ it("warns only once across multiple agents", () => {
93
+ const kernl = new Kernl({});
94
+ const agent1 = new Agent({
95
+ id: "agent-1",
96
+ name: "Agent 1",
97
+ instructions: "test",
98
+ model: createMockLanguageModel(),
99
+ memory: { enabled: true },
100
+ });
101
+ const agent2 = new Agent({
102
+ id: "agent-2",
103
+ name: "Agent 2",
104
+ instructions: "test",
105
+ model: createMockLanguageModel(),
106
+ memory: { enabled: true },
107
+ });
108
+ kernl.register(agent1);
109
+ kernl.register(agent2);
110
+ // Should only warn twice total (once for embedding, once for vector)
111
+ // not four times (twice per agent)
112
+ expect(warnSpy).toHaveBeenCalledTimes(2);
113
+ });
114
+ it("does not warn when memory config is complete", () => {
115
+ const kernl = new Kernl({
116
+ storage: {
117
+ vector: createMockVectorIndex(),
118
+ },
119
+ memory: {
120
+ embedding: createMockEmbeddingModel(),
121
+ },
122
+ });
123
+ const agent = new Agent({
124
+ id: "test-agent",
125
+ name: "Test Agent",
126
+ instructions: "test",
127
+ model: createMockLanguageModel(),
128
+ memory: { enabled: true },
129
+ });
130
+ kernl.register(agent);
131
+ expect(warnSpy).not.toHaveBeenCalled();
132
+ });
133
+ it("does not warn when agent does not enable memory", () => {
134
+ const kernl = new Kernl({});
135
+ const agent = new Agent({
136
+ id: "test-agent",
137
+ name: "Test Agent",
138
+ instructions: "test",
139
+ model: createMockLanguageModel(),
140
+ memory: { enabled: false },
141
+ });
142
+ kernl.register(agent);
143
+ expect(warnSpy).not.toHaveBeenCalled();
144
+ });
145
+ it("does not warn when agent has no memory config", () => {
146
+ const kernl = new Kernl({});
147
+ const agent = new Agent({
148
+ id: "test-agent",
149
+ name: "Test Agent",
150
+ instructions: "test",
151
+ model: createMockLanguageModel(),
152
+ // no memory config at all
153
+ });
154
+ kernl.register(agent);
155
+ expect(warnSpy).not.toHaveBeenCalled();
156
+ });
157
+ });
@@ -21,6 +21,9 @@ export declare class Kernl extends KernlHooks<UnknownContext, AgentOutputType> {
21
21
  private readonly _models;
22
22
  readonly storage: KernlStorage;
23
23
  athreads: Map<string, Thread<any, any>>;
24
+ private readonly _memopts;
25
+ private readonly _storopts;
26
+ private warnings;
24
27
  readonly threads: RThreads;
25
28
  readonly agents: RAgents;
26
29
  readonly memories: Memory;
@@ -51,5 +54,11 @@ export declare class Kernl extends KernlHooks<UnknownContext, AgentOutputType> {
51
54
  * Schedule an existing thread - streaming execution
52
55
  */
53
56
  scheduleStream<TContext, TOutput extends AgentOutputType>(thread: Thread<TContext, TOutput>): AsyncIterable<ThreadStreamEvent>;
57
+ /**
58
+ * @internal
59
+ *
60
+ * Initialize the memory system based on the storage + memory configuration.
61
+ */
62
+ private initializeMemory;
54
63
  }
55
64
  //# sourceMappingURL=kernl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"kernl.d.ts","sourceRoot":"","sources":["../../src/kernl/kernl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,MAAM,EAIP,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAa;IAGpD,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,GAAE,YAAiB;IAoCtC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAa5B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EACnD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAS/D;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EACtD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAS/D;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EAC1D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,aAAa,CAAC,iBAAiB,CAAC;IASnC;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EAC7D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,aAAa,CAAC,iBAAiB,CAAC;CAQpC"}
1
+ {"version":3,"file":"kernl.d.ts","sourceRoot":"","sources":["../../src/kernl/kernl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EACL,MAAM,EAIP,MAAM,UAAU,CAAC;AAIlB,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAiC,MAAM,SAAS,CAAC;AAE3E;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,cAAc,EAAE,eAAe,CAAC;IACpE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAa;IAEpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA6B;IAEvD,OAAO,CAAC,QAAQ,CAGd;IAGF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,GAAE,YAAiB;IAatC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAgC5B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EACnD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAS/D;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EACtD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAS/D;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EAC1D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,aAAa,CAAC,iBAAiB,CAAC;IASnC;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,OAAO,SAAS,eAAe,EAC7D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,GAChC,aAAa,CAAC,iBAAiB,CAAC;IAWnC;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;CA6BzB"}
@@ -4,6 +4,7 @@ import { InMemoryStorage } from "../storage/index.js";
4
4
  import { RThreads } from "../api/resources/threads/index.js";
5
5
  import { RAgents } from "../api/resources/agents/index.js";
6
6
  import { Memory, MemoryByteEncoder, MemoryIndexHandle, buildMemoryIndexSchema, } from "../memory/index.js";
7
+ import { logger } from "../lib/logger.js";
7
8
  /**
8
9
  * The kernl - manages agent processes, scheduling, and task lifecycle.
9
10
  *
@@ -15,38 +16,25 @@ export class Kernl extends KernlHooks {
15
16
  _models = new Map();
16
17
  storage;
17
18
  athreads = new Map(); /* active threads */
19
+ _memopts;
20
+ _storopts;
21
+ warnings = {
22
+ embedding: false, // "Embeddings are not configured. If you want memories to auto-embed text content..."
23
+ vector: false, // "No vector storage configured. The memories.search() function will not be..."
24
+ }; /* tracks warnings that have been logged */
18
25
  // --- public API ---
19
26
  threads;
20
27
  agents;
21
28
  memories;
22
29
  constructor(options = {}) {
23
30
  super();
31
+ this._memopts = options.memory;
32
+ this._storopts = options.storage;
24
33
  this.storage = options.storage?.db ?? new InMemoryStorage();
25
34
  this.storage.bind({ agents: this._agents, models: this._models });
26
35
  this.threads = new RThreads(this.storage.threads);
27
36
  this.agents = new RAgents(this._agents);
28
- // initialize memory
29
- const embeddingModel = options.memory?.embeddingModel ?? "openai/text-embedding-3-small";
30
- const embedder = typeof embeddingModel === "string"
31
- ? resolveEmbeddingModel(embeddingModel)
32
- : embeddingModel;
33
- const encoder = new MemoryByteEncoder(embedder);
34
- const vector = options.storage?.vector;
35
- const indexId = options.memory?.indexId ?? "memories_sindex";
36
- const dimensions = options.memory?.dimensions ?? 1536;
37
- const providerOptions = options.memory?.indexProviderOptions ?? { schema: "kernl" };
38
- this.memories = new Memory({
39
- store: this.storage.memories,
40
- search: vector !== undefined
41
- ? new MemoryIndexHandle({
42
- index: vector,
43
- indexId,
44
- schema: buildMemoryIndexSchema({ dimensions }),
45
- providerOptions,
46
- })
47
- : undefined,
48
- encoder,
49
- });
37
+ this.memories = this.initializeMemory();
50
38
  }
51
39
  /**
52
40
  * Registers a new agent with the kernl instance.
@@ -54,6 +42,19 @@ export class Kernl extends KernlHooks {
54
42
  register(agent) {
55
43
  this._agents.set(agent.id, agent);
56
44
  agent.bind(this);
45
+ // memory config warnings (log once)
46
+ if (agent.memory.enabled) {
47
+ if (!this._memopts?.embedding && !this.warnings.embedding) {
48
+ logger.warn("Embeddings are not configured. If you want memories to auto-embed text content, " +
49
+ "pass an embedding model into the memory config in new Kernl()");
50
+ this.warnings.embedding = true;
51
+ }
52
+ if (!this._storopts?.vector && !this.warnings.vector) {
53
+ logger.warn("No vector storage configured. The memories.search() function will not be " +
54
+ "available. To enable memory search, pass storage.vector in new Kernl()");
55
+ this.warnings.vector = true;
56
+ }
57
+ }
57
58
  // (TODO): implement exhaustive model registry in protocol/ package
58
59
  //
59
60
  // auto-populate model registry for storage hydration
@@ -116,4 +117,37 @@ export class Kernl extends KernlHooks {
116
117
  this.athreads.delete(thread.tid);
117
118
  }
118
119
  }
120
+ // --- private utils ---
121
+ /**
122
+ * @internal
123
+ *
124
+ * Initialize the memory system based on the storage + memory configuration.
125
+ */
126
+ initializeMemory() {
127
+ const embeddingModel = this._memopts?.embedding;
128
+ const embedder = embeddingModel
129
+ ? typeof embeddingModel === "string"
130
+ ? resolveEmbeddingModel(embeddingModel)
131
+ : embeddingModel
132
+ : undefined;
133
+ const encoder = new MemoryByteEncoder(embedder);
134
+ const vector = this._storopts?.vector;
135
+ const indexId = this._memopts?.indexId ?? "memories_sindex";
136
+ const dimensions = this._memopts?.dimensions ?? 1536;
137
+ const providerOptions = this._memopts?.indexProviderOptions ?? {
138
+ schema: "kernl",
139
+ };
140
+ return new Memory({
141
+ store: this.storage.memories,
142
+ search: vector
143
+ ? new MemoryIndexHandle({
144
+ index: vector,
145
+ indexId,
146
+ schema: buildMemoryIndexSchema({ dimensions }),
147
+ providerOptions,
148
+ })
149
+ : undefined,
150
+ encoder,
151
+ });
152
+ }
119
153
  }
@@ -27,9 +27,10 @@ export interface MemoryOptions {
27
27
  * - A string like "openai/text-embedding-3-small" (resolved via provider registry)
28
28
  * - An EmbeddingModel instance
29
29
  *
30
- * @default "openai/text-embedding-3-small"
30
+ * If not provided, memories will not auto-embed text content and
31
+ * semantic search will not be available.
31
32
  */
32
- embeddingModel?: string | EmbeddingModel<string>;
33
+ embedding?: string | EmbeddingModel<string>;
33
34
  /**
34
35
  * Logical index ID used by the search backend.
35
36
  * - For pgvector: becomes the table name (with schema from indexProviderOptions)
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kernl/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,CAAC,EAAE,YAAY,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CAKtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAC7C"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/kernl/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,CAAC,EAAE,YAAY,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CAKtB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;;;;OASG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/C;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,aAAa,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,OAAO,CAAC,EAAE,cAAc,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;CAC7C"}
@@ -25,7 +25,7 @@ export type Logger = {
25
25
  * Get a logger for a given namespace.
26
26
  *
27
27
  * @param namespace - the namespace to use for the logger (e.g., 'kernl:core', 'kernl:agent').
28
- * @returns A logger object with all pino log levels and sensitive data flags.
28
+ * @returns A logger object with console-based logging and sensitive data flags.
29
29
  */
30
30
  export declare function getLogger(namespace?: string): Logger;
31
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,MAAgB,GAAG,MAAM,CAc7D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAqB,CAAC;AAEzC,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/lib/logger.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG;IACnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC7C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,MAAgB,GAAG,MAAM,CAc7D;AAED;;GAEG;AACH,eAAO,MAAM,MAAM,QAAqB,CAAC;AAEzC,eAAe,MAAM,CAAC"}
@@ -1,39 +1,22 @@
1
- import pino from "pino";
2
1
  import { env } from "./env.js";
3
- /**
4
- * By default we don't log LLM inputs/outputs, to prevent exposing sensitive data.
5
- * Set KERNL_LOG_MODEL_DATA=true to enable.
6
- */
7
- const dontLogModelData = !env.KERNL_LOG_MODEL_DATA;
8
- /**
9
- * By default we don't log tool inputs/outputs, to prevent exposing sensitive data.
10
- * Set KERNL_LOG_TOOL_DATA=true to enable.
11
- */
12
- const dontLogToolData = !env.KERNL_LOG_TOOL_DATA;
13
- /**
14
- * Base pino logger instance
15
- */
16
- const base = pino({
17
- level: env.LOG_LEVEL,
18
- });
19
2
  /**
20
3
  * Get a logger for a given namespace.
21
4
  *
22
5
  * @param namespace - the namespace to use for the logger (e.g., 'kernl:core', 'kernl:agent').
23
- * @returns A logger object with all pino log levels and sensitive data flags.
6
+ * @returns A logger object with console-based logging and sensitive data flags.
24
7
  */
25
8
  export function getLogger(namespace = "kernl") {
26
- const child = base.child({ namespace });
9
+ const prefix = `[${namespace}]`;
27
10
  return {
28
11
  namespace,
29
- trace: child.trace.bind(child),
30
- debug: child.debug.bind(child),
31
- info: child.info.bind(child),
32
- warn: child.warn.bind(child),
33
- error: child.error.bind(child),
34
- fatal: child.fatal.bind(child),
35
- dontLogModelData,
36
- dontLogToolData,
12
+ trace: (msg, ...args) => console.debug(prefix, msg, ...args),
13
+ debug: (msg, ...args) => console.debug(prefix, msg, ...args),
14
+ info: (msg, ...args) => console.info(prefix, msg, ...args),
15
+ warn: (msg, ...args) => console.warn(prefix, msg, ...args),
16
+ error: (msg, ...args) => console.error(prefix, msg, ...args),
17
+ fatal: (msg, ...args) => console.error(prefix, "[FATAL]", msg, ...args),
18
+ dontLogModelData: !env.KERNL_LOG_MODEL_DATA,
19
+ dontLogToolData: !env.KERNL_LOG_TOOL_DATA,
37
20
  };
38
21
  }
39
22
  /**
@@ -117,5 +117,51 @@ describe("MemoryByteEncoder", () => {
117
117
  const vec = await encoder.embed("search query");
118
118
  expect(vec).toEqual([12, 0, 0]); // "search query".length = 12
119
119
  });
120
+ it("returns null when no embedder configured", async () => {
121
+ const encoder = new MemoryByteEncoder(); // no embedder
122
+ const vec = await encoder.embed("search query");
123
+ expect(vec).toBeNull();
124
+ });
125
+ it("throws when embedder returns empty embedding", async () => {
126
+ const embedder = {
127
+ provider: "test",
128
+ modelId: "test-embedder",
129
+ embed: vi.fn(async () => ({
130
+ embeddings: [[]], // empty embedding
131
+ })),
132
+ };
133
+ const encoder = new MemoryByteEncoder(embedder);
134
+ await expect(encoder.embed("test")).rejects.toThrow("Embedder returned empty embedding");
135
+ });
136
+ it("throws when embedder returns undefined embedding", async () => {
137
+ const embedder = {
138
+ provider: "test",
139
+ modelId: "test-embedder",
140
+ embed: vi.fn(async () => ({
141
+ embeddings: [], // no embeddings at all
142
+ })),
143
+ };
144
+ const encoder = new MemoryByteEncoder(embedder);
145
+ await expect(encoder.embed("test")).rejects.toThrow("Embedder returned empty embedding");
146
+ });
147
+ });
148
+ describe("without embedder", () => {
149
+ it("returns undefined tvec when encoding with no embedder", async () => {
150
+ const encoder = new MemoryByteEncoder(); // no embedder
151
+ const byte = { text: "Hello world" };
152
+ const result = await encoder.encode(byte);
153
+ expect(result.text).toBe("Hello world");
154
+ expect(result.tvec).toBeUndefined();
155
+ });
156
+ it("still produces objtext projection without embedder", async () => {
157
+ const encoder = new MemoryByteEncoder(); // no embedder
158
+ const byte = {
159
+ object: { preference: "coffee", shots: 2 },
160
+ };
161
+ const result = await encoder.encode(byte);
162
+ expect(result.text).toContain("preference: coffee");
163
+ expect(result.objtext).toContain("preference: coffee");
164
+ expect(result.tvec).toBeUndefined();
165
+ });
120
166
  });
121
167
  });
@@ -95,8 +95,7 @@ export const PATCH_CODEC = {
95
95
  patch.timestamp = update.timestamp;
96
96
  if (update.updatedAt !== undefined)
97
97
  patch.updatedAt = update.updatedAt;
98
- if (update.metadata !== undefined)
99
- patch.metadata = update.metadata;
98
+ // metadata is stored in primary DB only, not indexed
100
99
  return patch;
101
100
  },
102
101
  decode(_patch) {
@@ -24,19 +24,17 @@ export declare const ObjectTextCodec: {
24
24
  * Encoder that converts MemoryByte to IndexableByte.
25
25
  *
26
26
  * Extracts canonical text from content and computes embeddings.
27
+ * If no embedder is provided, skips embedding and tvec will be undefined.
27
28
  */
28
29
  export declare class MemoryByteEncoder implements MemoryByteCodec {
29
- private readonly embedder;
30
- constructor(embedder: EmbeddingModel<string>);
30
+ private readonly embedder?;
31
+ constructor(embedder?: EmbeddingModel<string>);
31
32
  /**
32
33
  * Encode a MemoryByte to IndexableByte.
33
34
  *
34
35
  * - Produces `objtext` string projection for FTS indexing
35
36
  * - Combines text + objtext for embedding input
36
37
  * - Returns text (fallback to objtext if no text provided)
37
- *
38
- * Note: metadata is NOT set here - it comes from record.metadata
39
- * via the domain codec, not from MemoryByte.object.
40
38
  */
41
39
  encode(byte: MemoryByte): Promise<IndexableByte>;
42
40
  /**
@@ -45,8 +43,10 @@ export declare class MemoryByteEncoder implements MemoryByteCodec {
45
43
  decode(_indexable: IndexableByte): Promise<MemoryByte>;
46
44
  /**
47
45
  * Embed a text string.
48
- * Exposed for query embedding.
46
+ *
47
+ * @returns Embedding vector, or null if no embedder configured.
48
+ * @throws If embedder returns empty embedding.
49
49
  */
50
- embed(text: string): Promise<number[]>;
50
+ embed(text: string): Promise<number[] | null>;
51
51
  }
52
52
  //# sourceMappingURL=encoder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/memory/encoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1E;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;OAIG;gBACS,UAAU,GAAG,MAAM;CAOhC,CAAC;AAEF;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;gBAEtC,QAAQ,EAAE,cAAc,CAAC,MAAM,CAAC;IAI5C;;;;;;;;;OASG;IACG,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAwBtD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAI5D;;;OAGG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAI7C"}
1
+ {"version":3,"file":"encoder.d.ts","sourceRoot":"","sources":["../../src/memory/encoder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtE,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQ1E;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;OAIG;gBACS,UAAU,GAAG,MAAM;CAOhC,CAAC;AAEF;;;;;GAKG;AACH,qBAAa,iBAAkB,YAAW,eAAe;IACvD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAyB;gBAEvC,QAAQ,CAAC,EAAE,cAAc,CAAC,MAAM,CAAC;IAI7C;;;;;;OAMG;IACG,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC;IAyBtD;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,UAAU,CAAC;IAI5D;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;CAWpD"}
@@ -33,6 +33,7 @@ export const ObjectTextCodec = {
33
33
  * Encoder that converts MemoryByte to IndexableByte.
34
34
  *
35
35
  * Extracts canonical text from content and computes embeddings.
36
+ * If no embedder is provided, skips embedding and tvec will be undefined.
36
37
  */
37
38
  export class MemoryByteEncoder {
38
39
  embedder;
@@ -45,9 +46,6 @@ export class MemoryByteEncoder {
45
46
  * - Produces `objtext` string projection for FTS indexing
46
47
  * - Combines text + objtext for embedding input
47
48
  * - Returns text (fallback to objtext if no text provided)
48
- *
49
- * Note: metadata is NOT set here - it comes from record.metadata
50
- * via the domain codec, not from MemoryByte.object.
51
49
  */
52
50
  async encode(byte) {
53
51
  const objtext = byte.object
@@ -56,8 +54,9 @@ export class MemoryByteEncoder {
56
54
  // (TODO): this behavior deserves consideration - do we always want to merge text + object?
57
55
  //
58
56
  // combine text + object for richer embedding
57
+ // skip embedding if no embedder configured (embed returns null)
59
58
  const combined = [byte.text, objtext].filter(Boolean).join("\n");
60
- const tvec = combined ? await this.embed(combined) : undefined;
59
+ const tvec = combined ? await this.embed(combined) : null;
61
60
  // TODO: embed other modalities (image, audio, video)
62
61
  //
63
62
  // const ivec = byte.image ? await this.embedImage(byte.image) : undefined;
@@ -66,7 +65,7 @@ export class MemoryByteEncoder {
66
65
  return {
67
66
  text: byte.text ?? objtext, // fallback to projection if no text
68
67
  objtext,
69
- tvec,
68
+ tvec: tvec ?? undefined,
70
69
  };
71
70
  }
72
71
  /**
@@ -77,10 +76,19 @@ export class MemoryByteEncoder {
77
76
  }
78
77
  /**
79
78
  * Embed a text string.
80
- * Exposed for query embedding.
79
+ *
80
+ * @returns Embedding vector, or null if no embedder configured.
81
+ * @throws If embedder returns empty embedding.
81
82
  */
82
83
  async embed(text) {
84
+ if (!this.embedder) {
85
+ return null;
86
+ }
83
87
  const result = await this.embedder.embed({ values: [text] });
84
- return result.embeddings[0] ?? [];
88
+ const embedding = result.embeddings[0];
89
+ if (!embedding || embedding.length === 0) {
90
+ throw new Error("Embedder returned empty embedding");
91
+ }
92
+ return embedding;
85
93
  }
86
94
  }
@@ -66,7 +66,7 @@ export class Memory {
66
66
  }
67
67
  const tvec = await this.encoder.embed(q.query);
68
68
  return this._search.query({
69
- query: [{ text: q.query, tvec }],
69
+ query: [{ text: q.query, tvec: tvec ?? undefined }],
70
70
  filter: q.filter ? MEMORY_FILTER.encode(q.filter) : undefined,
71
71
  topK: q.limit ?? 20,
72
72
  });
@@ -62,7 +62,12 @@ export interface IndexableByte {
62
62
  * Encoder that converts MemoryByte to IndexableByte with embeddings.
63
63
  */
64
64
  export interface MemoryByteCodec extends AsyncCodec<MemoryByte, IndexableByte> {
65
- embed(text: string): Promise<number[]>;
65
+ /**
66
+ * Embed a text string.
67
+ *
68
+ * @returns Embedding vector, or null if no embedder configured.
69
+ */
70
+ embed(text: string): Promise<number[] | null>;
66
71
  }
67
72
  export interface MemoryConfig {
68
73
  store: MemoryStore;
@@ -261,7 +266,6 @@ export interface IndexMemoryRecordPatch {
261
266
  collection?: string;
262
267
  timestamp?: number;
263
268
  updatedAt?: number;
264
- metadata?: JSONObject | null;
265
269
  }
266
270
  export {};
267
271
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"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"}