kernl 0.6.3 → 0.7.1

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 (53) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +23 -0
  3. package/dist/agent/__tests__/systools.test.d.ts +2 -0
  4. package/dist/agent/__tests__/systools.test.d.ts.map +1 -0
  5. package/dist/agent/__tests__/systools.test.js +121 -0
  6. package/dist/agent/types.d.ts +17 -0
  7. package/dist/agent/types.d.ts.map +1 -1
  8. package/dist/agent.d.ts +14 -4
  9. package/dist/agent.d.ts.map +1 -1
  10. package/dist/agent.js +45 -30
  11. package/dist/api/resources/agents/agents.d.ts +38 -0
  12. package/dist/api/resources/agents/agents.d.ts.map +1 -0
  13. package/dist/api/resources/agents/agents.js +44 -0
  14. package/dist/api/resources/agents/index.d.ts +2 -0
  15. package/dist/api/resources/agents/index.d.ts.map +1 -0
  16. package/dist/api/resources/agents/index.js +1 -0
  17. package/dist/context.d.ts +6 -0
  18. package/dist/context.d.ts.map +1 -1
  19. package/dist/context.js +5 -0
  20. package/dist/kernl/kernl.d.ts +4 -2
  21. package/dist/kernl/kernl.d.ts.map +1 -1
  22. package/dist/kernl/kernl.js +11 -8
  23. package/dist/memory/memory.d.ts +5 -1
  24. package/dist/memory/memory.d.ts.map +1 -1
  25. package/dist/memory/memory.js +6 -0
  26. package/dist/thread/thread.d.ts.map +1 -1
  27. package/dist/thread/thread.js +3 -1
  28. package/dist/tool/index.d.ts +1 -0
  29. package/dist/tool/index.d.ts.map +1 -1
  30. package/dist/tool/index.js +2 -0
  31. package/dist/tool/sys/index.d.ts +7 -0
  32. package/dist/tool/sys/index.d.ts.map +1 -0
  33. package/dist/tool/sys/index.js +6 -0
  34. package/dist/tool/sys/memory.d.ts +14 -0
  35. package/dist/tool/sys/memory.d.ts.map +1 -0
  36. package/dist/tool/sys/memory.js +103 -0
  37. package/dist/tool/tool.d.ts +1 -1
  38. package/dist/tool/tool.d.ts.map +1 -1
  39. package/dist/tool/tool.js +2 -2
  40. package/package.json +5 -5
  41. package/src/agent/__tests__/systools.test.ts +146 -0
  42. package/src/agent/types.ts +21 -0
  43. package/src/agent.ts +70 -38
  44. package/src/api/resources/agents/agents.ts +56 -0
  45. package/src/api/resources/agents/index.ts +1 -0
  46. package/src/context.ts +8 -0
  47. package/src/kernl/kernl.ts +11 -8
  48. package/src/memory/memory.ts +8 -0
  49. package/src/thread/thread.ts +3 -1
  50. package/src/tool/index.ts +3 -0
  51. package/src/tool/sys/index.ts +7 -0
  52. package/src/tool/sys/memory.ts +120 -0
  53. package/src/tool/tool.ts +8 -4
@@ -1,4 +1,4 @@
1
1
 
2
- > kernl@0.6.2 build /Users/andjones/Documents/projects/kernl/packages/kernl
2
+ > kernl@0.7.0 build /Users/andjones/Documents/projects/kernl/packages/kernl
3
3
  > tsc && tsc-alias --resolve-full-paths
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @kernl/core
2
2
 
3
+ ## 0.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @kernl-sdk/shared@0.2.0
9
+ - @kernl-sdk/protocol@0.2.6
10
+ - @kernl-sdk/retrieval@0.1.1
11
+
12
+ ## 0.7.0
13
+
14
+ ### Minor Changes
15
+
16
+ - 13545a5: Add memory system tools and agents public API
17
+ - Add system tools infrastructure (`agent.systools`) for built-in agent capabilities
18
+ - Add memory toolkit with `memories.search`, `memories.create`, `memories.list` tools
19
+ - Add `memory: { enabled: true }` agent config to enable memory tools
20
+ - Add `ctx.agent` reference for tools to access agent APIs
21
+ - Add `kernl.agents` public API with `get`, `list`, `has`, `unregister` methods
22
+ - Add `Memory.list()` method for listing memories with filters
23
+ - Add `agent.description` field for agent metadata
24
+ - Fix: exclude metadata from thread checkpoint to prevent race conditions
25
+
3
26
  ## 0.6.3
4
27
 
5
28
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=systools.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"systools.test.d.ts","sourceRoot":"","sources":["../../../src/agent/__tests__/systools.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,121 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { Agent } from "../../agent.js";
3
+ import { Kernl } from "../../kernl/index.js";
4
+ import { Context } from "../../context.js";
5
+ import { createMockModel } from "../../thread/__tests__/fixtures/mock-model.js";
6
+ import { message } from "@kernl-sdk/protocol";
7
+ describe("Agent systools", () => {
8
+ const model = createMockModel(async () => ({
9
+ content: [message({ role: "assistant", text: "Done" })],
10
+ finishReason: "stop",
11
+ usage: { inputTokens: 2, outputTokens: 2, totalTokens: 4 },
12
+ warnings: [],
13
+ }));
14
+ describe("memory toolkit", () => {
15
+ it("adds memory toolkit when memory.enabled is true", () => {
16
+ const agent = new Agent({
17
+ id: "test-agent",
18
+ name: "Test",
19
+ instructions: "Test",
20
+ model,
21
+ memory: { enabled: true },
22
+ });
23
+ const kernl = new Kernl();
24
+ kernl.register(agent);
25
+ expect(agent.systools.length).toBe(1);
26
+ expect(agent.systools[0].id).toBe("sys.memory");
27
+ });
28
+ it("has no systools when memory not configured", () => {
29
+ const agent = new Agent({
30
+ id: "test-agent",
31
+ name: "Test",
32
+ instructions: "Test",
33
+ model,
34
+ });
35
+ const kernl = new Kernl();
36
+ kernl.register(agent);
37
+ expect(agent.systools.length).toBe(0);
38
+ });
39
+ it("has no systools when memory.enabled is false", () => {
40
+ const agent = new Agent({
41
+ id: "test-agent",
42
+ name: "Test",
43
+ instructions: "Test",
44
+ model,
45
+ memory: { enabled: false },
46
+ });
47
+ const kernl = new Kernl();
48
+ kernl.register(agent);
49
+ expect(agent.systools.length).toBe(0);
50
+ });
51
+ it("can retrieve memory tools via agent.tool()", () => {
52
+ const agent = new Agent({
53
+ id: "test-agent",
54
+ name: "Test",
55
+ instructions: "Test",
56
+ model,
57
+ memory: { enabled: true },
58
+ });
59
+ const kernl = new Kernl();
60
+ kernl.register(agent);
61
+ expect(agent.tool("memories.search")).toBeDefined();
62
+ expect(agent.tool("memories.create")).toBeDefined();
63
+ expect(agent.tool("memories.list")).toBeDefined();
64
+ });
65
+ it("includes memory tools in agent.tools() output", async () => {
66
+ const agent = new Agent({
67
+ id: "test-agent",
68
+ name: "Test",
69
+ instructions: "Test",
70
+ model,
71
+ memory: { enabled: true },
72
+ });
73
+ const kernl = new Kernl();
74
+ kernl.register(agent);
75
+ const ctx = new Context("test");
76
+ const tools = await agent.tools(ctx);
77
+ const ids = tools.map((t) => t.id);
78
+ expect(ids).toContain("memories.search");
79
+ expect(ids).toContain("memories.create");
80
+ expect(ids).toContain("memories.list");
81
+ });
82
+ it("systools appear before user toolkits in tools() output", async () => {
83
+ const agent = new Agent({
84
+ id: "test-agent",
85
+ name: "Test",
86
+ instructions: "Test",
87
+ model,
88
+ memory: { enabled: true },
89
+ });
90
+ const kernl = new Kernl();
91
+ kernl.register(agent);
92
+ const ctx = new Context("test");
93
+ const tools = await agent.tools(ctx);
94
+ // Memory tools should be first (from systools)
95
+ expect(tools[0].id).toBe("memories.search");
96
+ expect(tools[1].id).toBe("memories.create");
97
+ expect(tools[2].id).toBe("memories.list");
98
+ });
99
+ });
100
+ describe("memory config defaults", () => {
101
+ it("defaults memory to { enabled: false }", () => {
102
+ const agent = new Agent({
103
+ id: "test-agent",
104
+ name: "Test",
105
+ instructions: "Test",
106
+ model,
107
+ });
108
+ expect(agent.memory).toEqual({ enabled: false });
109
+ });
110
+ it("preserves memory config when provided", () => {
111
+ const agent = new Agent({
112
+ id: "test-agent",
113
+ name: "Test",
114
+ instructions: "Test",
115
+ model,
116
+ memory: { enabled: true },
117
+ });
118
+ expect(agent.memory).toEqual({ enabled: true });
119
+ });
120
+ });
121
+ });
@@ -10,6 +10,7 @@ import { TextResponse } from "../thread/types.js";
10
10
  export interface AgentConfig<TContext = UnknownContext, TResponse extends AgentResponseType = TextResponse> {
11
11
  id: string;
12
12
  name: string;
13
+ description?: string;
13
14
  /**
14
15
  * The instructions for the agent. Will be used as the "system prompt" when this agent is
15
16
  * invoked. Describes what the agent should do, and how it responds.
@@ -53,6 +54,13 @@ export interface AgentConfig<TContext = UnknownContext, TResponse extends AgentR
53
54
  * ```
54
55
  */
55
56
  toolkits?: BaseToolkit<TContext>[];
57
+ /**
58
+ * Memory configuration for this agent.
59
+ * Enables memory system tools (memories.search, memories.create, memories.list).
60
+ *
61
+ * Requires kernl to be configured with memory storage.
62
+ */
63
+ memory?: AgentMemoryConfig;
56
64
  /**
57
65
  * A list of checks that run in parallel to the agent's execution on the input + output for the agent,
58
66
  * depending on the configuration.
@@ -88,4 +96,13 @@ export interface AgentGuardrails<TResponse extends AgentResponseType = TextRespo
88
96
  * 'text' is a special type that indicates the output will be a string.
89
97
  */
90
98
  export type AgentResponseType = TextResponse | ZodType;
99
+ /**
100
+ * Memory configuration for an agent.
101
+ */
102
+ export interface AgentMemoryConfig {
103
+ /**
104
+ * Enable memory system tools for this agent.
105
+ */
106
+ enabled: boolean;
107
+ }
91
108
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,aAAa,EACb,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW,CAC1B,QAAQ,GAAG,cAAc,EACzB,SAAS,SAAS,iBAAiB,GAAG,YAAY;IAGlD,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;;;OAOG;IACH,YAAY,EACR,MAAM,GACN,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAe/D;;;;OAIG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEnC;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAsBzB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAC9B,SAAS,SAAS,iBAAiB,GAAG,YAAY;IAElD;;;OAGG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EACL,aAAa,EACb,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,WAAW,CAC1B,QAAQ,GAAG,cAAc,EACzB,SAAS,SAAS,iBAAiB,GAAG,YAAY;IAGlD,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IAGb,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;;OAOG;IACH,YAAY,EACR,MAAM,GACN,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;IAe/D;;;;OAIG;IACH,KAAK,EAAE,aAAa,CAAC;IAErB;;OAEG;IACH,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEnC;;;;;OAKG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAE3B;;;OAGG;IACH,UAAU,CAAC,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IAExC;;OAEG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAsBzB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,eAAe,CAC9B,SAAS,SAAS,iBAAiB,GAAG,YAAY;IAElD;;;OAGG;IACH,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,OAAO,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB"}
package/dist/agent.d.ts CHANGED
@@ -6,17 +6,20 @@ import { Tool } from "./tool/index.js";
6
6
  import { BaseToolkit } from "./tool/toolkit.js";
7
7
  import { InputGuardrail, OutputGuardrail, type ResolvedAgentResponse } from "./guardrail.js";
8
8
  import { AgentHooks } from "./lifecycle.js";
9
- import type { AgentConfig, AgentResponseType } from "./agent/types.js";
9
+ import type { AgentMemoryCreate, MemoryListOptions, MemorySearchQuery } from "./memory/index.js";
10
+ import type { AgentConfig, AgentMemoryConfig, AgentResponseType } from "./agent/types.js";
10
11
  import type { TextResponse, ThreadExecuteOptions, ThreadExecuteResult, ThreadStreamEvent } from "./thread/types.js";
11
- import type { AgentMemoryCreate, MemorySearchQuery } from "./memory/index.js";
12
12
  export declare class Agent<TContext = UnknownContext, TResponse extends AgentResponseType = TextResponse> extends AgentHooks<TContext, TResponse> implements AgentConfig<TContext, TResponse> {
13
13
  private kernl?;
14
14
  id: string;
15
15
  name: string;
16
+ description?: string;
16
17
  instructions: (context: Context<TContext>) => Promise<string> | string;
17
18
  model: LanguageModel;
18
19
  modelSettings: LanguageModelRequestSettings;
19
20
  toolkits: BaseToolkit<TContext>[];
21
+ systools: BaseToolkit<TContext>[];
22
+ memory: AgentMemoryConfig;
20
23
  guardrails: {
21
24
  input: InputGuardrail[];
22
25
  output: OutputGuardrail<AgentResponseType>[];
@@ -47,7 +50,7 @@ export declare class Agent<TContext = UnknownContext, TResponse extends AgentRes
47
50
  /**
48
51
  * @internal
49
52
  *
50
- * Get a specific tool by ID from all toolkits.
53
+ * Get a specific tool by ID from systools and toolkits.
51
54
  *
52
55
  * @param id The tool ID to look up
53
56
  * @returns The tool if found, undefined otherwise
@@ -56,7 +59,7 @@ export declare class Agent<TContext = UnknownContext, TResponse extends AgentRes
56
59
  /**
57
60
  * @internal
58
61
  *
59
- * Get all tools available from all toolkits for the given context.
62
+ * Get all tools available from systools and toolkits for the given context.
60
63
  * Checks for duplicate tool IDs across toolkits and throws an error if found.
61
64
  *
62
65
  * (TODO): Consider returning toolkits alongside tools so we can serialize them
@@ -98,6 +101,13 @@ export declare class Agent<TContext = UnknownContext, TResponse extends AgentRes
98
101
  * ```
99
102
  */
100
103
  get memories(): {
104
+ /**
105
+ * List memories scoped to this agent.
106
+ */
107
+ list: (params?: Omit<MemoryListOptions, "filter"> & {
108
+ collection?: string;
109
+ limit?: number;
110
+ }) => Promise<import("./memory/index.js").MemoryRecord[]>;
101
111
  /**
102
112
  * Create a new memory scoped to this agent.
103
113
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
package/dist/agent.js CHANGED
@@ -1,23 +1,26 @@
1
1
  import { message, } from "@kernl-sdk/protocol";
2
2
  import { Thread } from "./thread/index.js";
3
+ import { memory } from "./tool/index.js";
3
4
  import { AgentHooks } from "./lifecycle.js";
4
- import { MisconfiguredError, RuntimeError } from "./lib/error.js";
5
5
  import { randomID } from "@kernl-sdk/shared/lib";
6
+ import { MisconfiguredError, RuntimeError } from "./lib/error.js";
6
7
  export class Agent extends AgentHooks {
7
8
  kernl;
8
9
  id;
9
10
  name;
11
+ description;
10
12
  instructions;
11
13
  model;
12
14
  modelSettings;
13
- toolkits;
14
15
  // actions: ActionSet; /* TODO */
16
+ toolkits;
17
+ systools;
18
+ memory;
15
19
  guardrails;
16
20
  responseType = "text";
17
21
  resetToolChoice;
18
- // toolUseBehavior: ToolUseBehavior; (TODO)
19
22
  // --- (TODO) ---
20
- // handoffDescription: string; // ??
23
+ // toolUseBehavior: ToolUseBehavior;
21
24
  // handoffs: (Agent<any, TResponse> | Handoff<any, TResponse>)[];
22
25
  // ----------
23
26
  // /* Process/thread-group–wide signal state shared by all threads in the group: shared pending signals, job control
@@ -34,6 +37,7 @@ export class Agent extends AgentHooks {
34
37
  }
35
38
  this.id = config.id;
36
39
  this.name = config.name;
40
+ this.description = config.description;
37
41
  this.instructions =
38
42
  typeof config.instructions === "function"
39
43
  ? config.instructions
@@ -41,6 +45,8 @@ export class Agent extends AgentHooks {
41
45
  this.model = config.model; // (TODO): include optional default setting for convenience like env.DEFAULT_LLM = "gpt-5"
42
46
  this.modelSettings = config.modelSettings ?? {};
43
47
  this.toolkits = config.toolkits ?? [];
48
+ this.systools = [];
49
+ this.memory = config.memory ?? { enabled: false };
44
50
  for (const toolkit of this.toolkits) {
45
51
  toolkit.bind(this);
46
52
  }
@@ -50,25 +56,19 @@ export class Agent extends AgentHooks {
50
56
  }
51
57
  this.resetToolChoice = config.resetToolChoice ?? true;
52
58
  // this.toolUseBehavior = config.toolUseBehavior ?? "run_llm_again";
53
- // this.handoffDescription = config.handoffDescription ?? "";
54
- // this.handoffs = config.handoffs ?? [];
55
- // --- Runtime warning for handoff response type compatibility ---
56
- // if (config.handoffresponseTypeWarningEnabled) {
57
- // ...
58
- // if (responseTypes.size > 1) {
59
- // logger.warn(
60
- // `[Agent] Warning: Handoff agents have different response types: ${Array.from(responseTypes).join(", ")}.
61
- // You can make it type-safe by using Agent.create({ ... }) method instead.`,
62
- // );
63
- // }
64
- // }
65
- // }
66
59
  }
67
60
  /**
68
61
  * Bind this agent to a kernl instance. Called by kernl.register().
69
62
  */
70
63
  bind(kernl) {
71
64
  this.kernl = kernl;
65
+ // initialize system toolkits
66
+ if (this.memory.enabled) {
67
+ // safety: system tools only rely on ctx.agent, not ctx.context
68
+ const toolkit = memory;
69
+ this.systools.push(toolkit);
70
+ toolkit.bind(this);
71
+ }
72
72
  }
73
73
  /**
74
74
  * Blocking execution - spawns or resumes thread and waits for completion
@@ -168,12 +168,19 @@ export class Agent extends AgentHooks {
168
168
  /**
169
169
  * @internal
170
170
  *
171
- * Get a specific tool by ID from all toolkits.
171
+ * Get a specific tool by ID from systools and toolkits.
172
172
  *
173
173
  * @param id The tool ID to look up
174
174
  * @returns The tool if found, undefined otherwise
175
175
  */
176
176
  tool(id) {
177
+ // Check systools first
178
+ for (const toolkit of this.systools) {
179
+ const tool = toolkit.get(id);
180
+ if (tool)
181
+ return tool;
182
+ }
183
+ // Then user toolkits
177
184
  for (const toolkit of this.toolkits) {
178
185
  const tool = toolkit.get(id);
179
186
  if (tool)
@@ -184,7 +191,7 @@ export class Agent extends AgentHooks {
184
191
  /**
185
192
  * @internal
186
193
  *
187
- * Get all tools available from all toolkits for the given context.
194
+ * Get all tools available from systools and toolkits for the given context.
188
195
  * Checks for duplicate tool IDs across toolkits and throws an error if found.
189
196
  *
190
197
  * (TODO): Consider returning toolkits alongside tools so we can serialize them
@@ -195,18 +202,16 @@ export class Agent extends AgentHooks {
195
202
  * @throws {MisconfiguredError} If duplicate tool IDs are found across toolkits
196
203
  */
197
204
  async tools(context) {
198
- const allTools = [];
199
- const toolIds = new Set();
200
- for (const toolkit of this.toolkits) {
201
- const tools = await toolkit.list(context);
202
- const duplicates = tools.map((t) => t.id).filter((id) => toolIds.has(id));
203
- if (duplicates.length > 0) {
204
- throw new MisconfiguredError(`Duplicate tool IDs found across toolkits: ${duplicates.join(", ")}`);
205
- }
206
- tools.forEach((t) => toolIds.add(t.id));
207
- allTools.push(...tools);
205
+ const all = [];
206
+ for (const toolkit of [...this.systools, ...this.toolkits]) {
207
+ all.push(...(await toolkit.list(context)));
208
208
  }
209
- return allTools;
209
+ const ids = all.map((t) => t.id);
210
+ const duplicates = ids.filter((id, i) => ids.indexOf(id) !== i);
211
+ if (duplicates.length > 0) {
212
+ throw new MisconfiguredError(`Duplicate tool IDs found: ${[...new Set(duplicates)].join(", ")}`);
213
+ }
214
+ return all;
210
215
  }
211
216
  /**
212
217
  * Thread management scoped to this agent.
@@ -259,6 +264,16 @@ export class Agent extends AgentHooks {
259
264
  const agentId = this.id;
260
265
  const kmem = this.kernl.memories;
261
266
  return {
267
+ /**
268
+ * List memories scoped to this agent.
269
+ */
270
+ list: (params) => kmem.list({
271
+ filter: {
272
+ scope: { agentId },
273
+ collections: params?.collection ? [params.collection] : undefined,
274
+ },
275
+ limit: params?.limit,
276
+ }),
262
277
  /**
263
278
  * Create a new memory scoped to this agent.
264
279
  */
@@ -0,0 +1,38 @@
1
+ import type { Agent } from "../../../agent.js";
2
+ import type { AgentResponseType } from "../../../agent/types.js";
3
+ import type { UnknownContext } from "../../../context.js";
4
+ import type { TextResponse } from "../../../thread/types.js";
5
+ /**
6
+ * Agents resource.
7
+ *
8
+ * Thin facade over the in-process agent registry, returning live Agent instances.
9
+ *
10
+ * Note: agents are code, not persisted data; this is process-local.
11
+ */
12
+ export declare class RAgents {
13
+ private readonly registry;
14
+ constructor(registry: Map<string, Agent>);
15
+ /**
16
+ * Get a live Agent instance by id.
17
+ *
18
+ * Callers are expected to know the concrete TContext/TResponse types
19
+ * for their own agents and can specify them via generics.
20
+ */
21
+ get<TContext = UnknownContext, TResponse extends AgentResponseType = TextResponse>(id: string): Agent<TContext, TResponse> | undefined;
22
+ /**
23
+ * Check if an agent with the given id is registered.
24
+ */
25
+ has(id: string): boolean;
26
+ /**
27
+ * List all registered agents as live instances.
28
+ *
29
+ * Since this is a heterogeneous collection, we expose the widest safe
30
+ * type parameters here.
31
+ */
32
+ list(): Agent<UnknownContext, AgentResponseType>[];
33
+ /**
34
+ * Unregister an agent at runtime.
35
+ */
36
+ unregister(id: string): boolean;
37
+ }
38
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../../../src/api/resources/agents/agents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD;;;;;;GAMG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;IAEzD;;;;;OAKG;IACH,GAAG,CACD,QAAQ,GAAG,cAAc,EACzB,SAAS,SAAS,iBAAiB,GAAG,YAAY,EAClD,EAAE,EAAE,MAAM,GAAG,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,SAAS;IAKrD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;;;OAKG;IACH,IAAI,IAAI,KAAK,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAE;IAOlD;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;CAGhC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Agents resource.
3
+ *
4
+ * Thin facade over the in-process agent registry, returning live Agent instances.
5
+ *
6
+ * Note: agents are code, not persisted data; this is process-local.
7
+ */
8
+ export class RAgents {
9
+ registry;
10
+ constructor(registry) {
11
+ this.registry = registry;
12
+ }
13
+ /**
14
+ * Get a live Agent instance by id.
15
+ *
16
+ * Callers are expected to know the concrete TContext/TResponse types
17
+ * for their own agents and can specify them via generics.
18
+ */
19
+ get(id) {
20
+ const agent = this.registry.get(id);
21
+ return agent;
22
+ }
23
+ /**
24
+ * Check if an agent with the given id is registered.
25
+ */
26
+ has(id) {
27
+ return this.registry.has(id);
28
+ }
29
+ /**
30
+ * List all registered agents as live instances.
31
+ *
32
+ * Since this is a heterogeneous collection, we expose the widest safe
33
+ * type parameters here.
34
+ */
35
+ list() {
36
+ return Array.from(this.registry.values());
37
+ }
38
+ /**
39
+ * Unregister an agent at runtime.
40
+ */
41
+ unregister(id) {
42
+ return this.registry.delete(id);
43
+ }
44
+ }
@@ -0,0 +1,2 @@
1
+ export { RAgents } from "./agents.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/api/resources/agents/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export { RAgents } from "./agents.js";
package/dist/context.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import type { Agent } from "./agent.js";
1
2
  /**
2
3
  * Context that is being passed around as part of the session is unknown
3
4
  */
@@ -15,6 +16,11 @@ export declare class Context<TContext = UnknownContext> {
15
16
  * The inner context object.
16
17
  */
17
18
  context: TContext;
19
+ /**
20
+ * The agent executing this context.
21
+ * Set by the thread during execution.
22
+ */
23
+ agent?: Agent<TContext, any>;
18
24
  /**
19
25
  * Map of tool call IDs to their approval status.
20
26
  * (TEMPORARY) Used until the actions system is refined.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC;;;GAGG;AACH,qBAAa,OAAO,CAAC,QAAQ,GAAG,cAAc;IAC5C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,CAAC;IAMlB;;;OAGG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;gBAwBhB,SAAS,GAAE,MAAgB,EAAE,OAAO,GAAE,QAAyB;IAS3E;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM;IAevC;;;;;;;;;;;;;;OAcG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;;;;;;OAUG;IACH,IAAI,IAAI,MAAM;IAId,MAAM,IAAI;QACR,OAAO,EAAE,GAAG,CAAC;KAGd;CAOF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC;AAErC;;;GAGG;AACH,qBAAa,OAAO,CAAC,QAAQ,GAAG,cAAc;IAC5C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,OAAO,EAAE,QAAQ,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAM7B;;;OAGG;IACH,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEvC;;;OAGG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI7B;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;gBAwBhB,SAAS,GAAE,MAAgB,EAAE,OAAO,GAAE,QAAyB;IAS3E;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM;IAevC;;;;;;;;;;;;;;OAcG;IACH,EAAE,IAAI,MAAM;IAIZ;;;;;;;;;;OAUG;IACH,IAAI,IAAI,MAAM;IAId,MAAM,IAAI;QACR,OAAO,EAAE,GAAG,CAAC;KAGd;CAOF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC"}
package/dist/context.js CHANGED
@@ -11,6 +11,11 @@ export class Context {
11
11
  * The inner context object.
12
12
  */
13
13
  context;
14
+ /**
15
+ * The agent executing this context.
16
+ * Set by the thread during execution.
17
+ */
18
+ agent;
14
19
  // ----------------------
15
20
  // TEMPORARY: Tool approval tracking until actions system is refined
16
21
  // ----------------------
@@ -5,6 +5,7 @@ import type { Thread } from "../thread/index.js";
5
5
  import type { ResolvedAgentResponse } from "../guardrail.js";
6
6
  import { type KernlStorage } from "../storage/index.js";
7
7
  import { RThreads } from "../api/resources/threads/index.js";
8
+ import { RAgents } from "../api/resources/agents/index.js";
8
9
  import { Memory } from "../memory/index.js";
9
10
  import type { ThreadExecuteResult, ThreadStreamEvent } from "../thread/types.js";
10
11
  import type { AgentResponseType } from "../agent/types.js";
@@ -16,11 +17,12 @@ import type { KernlOptions } from "./types.js";
16
17
  * tracing.
17
18
  */
18
19
  export declare class Kernl extends KernlHooks<UnknownContext, AgentResponseType> {
19
- private agents;
20
- private models;
20
+ private readonly _agents;
21
+ private readonly _models;
21
22
  readonly storage: KernlStorage;
22
23
  athreads: Map<string, Thread<any, any>>;
23
24
  readonly threads: RThreads;
25
+ readonly agents: RAgents;
24
26
  readonly memories: Memory;
25
27
  constructor(options?: KernlOptions);
26
28
  /**
@@ -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,EACL,MAAM,EAIP,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC;IACtE,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAAyC;IAEvD,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,QAAQ,EAAE,MAAM,CAAC;gBAEd,OAAO,GAAE,YAAiB;IAmCtC;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAa5B;;OAEG;IACG,KAAK,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EACvD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IASjE;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EAC1D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IASjE;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EAC9D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,aAAa,CAAC,iBAAiB,CAAC;IASnC;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EACjE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,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;AAElB,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;GAKG;AACH,qBAAa,KAAM,SAAQ,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC;IACtE,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,SAAS,SAAS,iBAAiB,EACvD,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IASjE;;;;OAIG;IACG,QAAQ,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EAC1D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,OAAO,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IASjE;;;;OAIG;IACI,WAAW,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EAC9D,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,aAAa,CAAC,iBAAiB,CAAC;IASnC;;;;OAIG;IACI,cAAc,CAAC,QAAQ,EAAE,SAAS,SAAS,iBAAiB,EACjE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAClC,aAAa,CAAC,iBAAiB,CAAC;CAQpC"}
@@ -2,6 +2,7 @@ import { resolveEmbeddingModel } from "@kernl-sdk/retrieval";
2
2
  import { KernlHooks } from "../lifecycle.js";
3
3
  import { InMemoryStorage } from "../storage/index.js";
4
4
  import { RThreads } from "../api/resources/threads/index.js";
5
+ import { RAgents } from "../api/resources/agents/index.js";
5
6
  import { Memory, MemoryByteEncoder, MemoryIndexHandle, buildMemoryIndexSchema, } from "../memory/index.js";
6
7
  /**
7
8
  * The kernl - manages agent processes, scheduling, and task lifecycle.
@@ -10,18 +11,20 @@ import { Memory, MemoryByteEncoder, MemoryIndexHandle, buildMemoryIndexSchema, }
10
11
  * tracing.
11
12
  */
12
13
  export class Kernl extends KernlHooks {
13
- agents = new Map();
14
- models = new Map();
14
+ _agents = new Map();
15
+ _models = new Map();
15
16
  storage;
16
17
  athreads = new Map(); /* active threads */
17
18
  // --- public API ---
18
- threads; /* Threads resource */
19
- memories; /* Memory system */
19
+ threads;
20
+ agents;
21
+ memories;
20
22
  constructor(options = {}) {
21
23
  super();
22
24
  this.storage = options.storage?.db ?? new InMemoryStorage();
23
- this.storage.bind({ agents: this.agents, models: this.models });
25
+ this.storage.bind({ agents: this._agents, models: this._models });
24
26
  this.threads = new RThreads(this.storage.threads);
27
+ this.agents = new RAgents(this._agents);
25
28
  // initialize memory
26
29
  const embeddingModel = options.memory?.embeddingModel ?? "openai/text-embedding-3-small";
27
30
  const embedder = typeof embeddingModel === "string"
@@ -49,14 +52,14 @@ export class Kernl extends KernlHooks {
49
52
  * Registers a new agent with the kernl instance.
50
53
  */
51
54
  register(agent) {
52
- this.agents.set(agent.id, agent);
55
+ this._agents.set(agent.id, agent);
53
56
  agent.bind(this);
54
57
  // (TODO): implement exhaustive model registry in protocol/ package
55
58
  //
56
59
  // auto-populate model registry for storage hydration
57
60
  const key = `${agent.model.provider}/${agent.model.modelId}`;
58
- if (!this.models.has(key)) {
59
- this.models.set(key, agent.model);
61
+ if (!this._models.has(key)) {
62
+ this._models.set(key, agent.model);
60
63
  }
61
64
  }
62
65
  /**