kernl 0.1.3 → 0.2.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 (58) hide show
  1. package/.turbo/turbo-build.log +5 -4
  2. package/CHANGELOG.md +18 -0
  3. package/dist/agent.d.ts +20 -3
  4. package/dist/agent.d.ts.map +1 -1
  5. package/dist/agent.js +60 -41
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/kernl.d.ts +27 -1
  10. package/dist/kernl.d.ts.map +1 -1
  11. package/dist/kernl.js +36 -2
  12. package/dist/mcp/__tests__/integration.test.js +16 -0
  13. package/dist/thread/__tests__/fixtures/mock-model.d.ts +7 -0
  14. package/dist/thread/__tests__/fixtures/mock-model.d.ts.map +1 -0
  15. package/dist/thread/__tests__/fixtures/mock-model.js +59 -0
  16. package/dist/thread/__tests__/integration.test.d.ts +2 -0
  17. package/dist/thread/__tests__/integration.test.d.ts.map +1 -0
  18. package/dist/thread/__tests__/integration.test.js +247 -0
  19. package/dist/thread/__tests__/stream.test.d.ts +2 -0
  20. package/dist/thread/__tests__/stream.test.d.ts.map +1 -0
  21. package/dist/thread/__tests__/stream.test.js +244 -0
  22. package/dist/thread/__tests__/thread.test.js +612 -763
  23. package/dist/thread/thread.d.ts +30 -25
  24. package/dist/thread/thread.d.ts.map +1 -1
  25. package/dist/thread/thread.js +114 -314
  26. package/dist/thread/utils.d.ts +16 -1
  27. package/dist/thread/utils.d.ts.map +1 -1
  28. package/dist/thread/utils.js +30 -0
  29. package/dist/tool/index.d.ts +1 -1
  30. package/dist/tool/index.d.ts.map +1 -1
  31. package/dist/tool/index.js +1 -1
  32. package/dist/tool/tool.d.ts.map +1 -1
  33. package/dist/tool/tool.js +6 -2
  34. package/dist/tool/toolkit.d.ts +13 -3
  35. package/dist/tool/toolkit.d.ts.map +1 -1
  36. package/dist/tool/toolkit.js +11 -3
  37. package/dist/tool/types.d.ts +8 -0
  38. package/dist/tool/types.d.ts.map +1 -1
  39. package/dist/types/agent.d.ts +5 -5
  40. package/dist/types/agent.d.ts.map +1 -1
  41. package/dist/types/thread.d.ts +10 -16
  42. package/dist/types/thread.d.ts.map +1 -1
  43. package/package.json +6 -4
  44. package/src/agent.ts +97 -86
  45. package/src/index.ts +1 -1
  46. package/src/kernl.ts +51 -2
  47. package/src/mcp/__tests__/integration.test.ts +17 -0
  48. package/src/thread/__tests__/fixtures/mock-model.ts +71 -0
  49. package/src/thread/__tests__/integration.test.ts +349 -0
  50. package/src/thread/__tests__/thread.test.ts +625 -775
  51. package/src/thread/thread.ts +134 -381
  52. package/src/thread/utils.ts +36 -1
  53. package/src/tool/index.ts +1 -1
  54. package/src/tool/tool.ts +6 -2
  55. package/src/tool/toolkit.ts +19 -3
  56. package/src/tool/types.ts +10 -0
  57. package/src/types/agent.ts +9 -6
  58. package/src/types/thread.ts +25 -17
@@ -1,2 +1,2 @@
1
1
  export { BaseTool, FunctionTool, HostedTool, tool } from "./tool";
2
- export { Toolkit, FunctionToolkit, MCPToolkit } from "./toolkit";
2
+ export { BaseToolkit, Toolkit, FunctionToolkit, MCPToolkit } from "./toolkit";
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/tool/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/tool/tool.ts"],"names":[],"mappings":"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"}
package/dist/tool/tool.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { z } from "zod";
1
2
  import { ModelBehaviorError } from "../lib/error";
2
3
  import { logger } from "../lib/logger";
3
4
  import { json } from "@kernl-sdk/shared/lib";
@@ -93,9 +94,10 @@ export class FunctionTool extends BaseTool {
93
94
  throw new ModelBehaviorError("Invalid JSON input for tool");
94
95
  }
95
96
  }
96
- // Check if approval is required
97
+ // check if approval is required
97
98
  const needsApproval = await this.requiresApproval(context, parsed, callId);
98
99
  const approvalStatus = callId ? context.approvals.get(callId) : undefined;
100
+ // (TODO): this will become a more detailed action.approval event
99
101
  if (needsApproval && approvalStatus !== "approved") {
100
102
  return {
101
103
  state: INTERRUPTIBLE,
@@ -118,7 +120,9 @@ export class FunctionTool extends BaseTool {
118
120
  kind: "function",
119
121
  name: this.id,
120
122
  description: this.description,
121
- parameters: this.parameters, // TODO: convert Zod to JSON Schema
123
+ parameters: (this.parameters
124
+ ? z.toJSONSchema(this.parameters, { target: "draft-7" })
125
+ : {}), // JSONSchema7 - target: 'draft-7' produces this
122
126
  };
123
127
  }
124
128
  }
@@ -8,11 +8,15 @@ import type { FunctionToolkitConfig, MCPToolkitConfig } from "./types";
8
8
  * Toolkits can be static (FunctionToolkit) or dynamic (MCPToolkit), and provide
9
9
  * a unified interface for tool discovery and management.
10
10
  */
11
- export declare abstract class Toolkit<TContext = UnknownContext> {
11
+ export declare abstract class BaseToolkit<TContext = UnknownContext> {
12
12
  /**
13
13
  * Unique identifier for this toolkit
14
14
  */
15
15
  abstract readonly id: string;
16
+ /**
17
+ * Description of what this toolkit provides
18
+ */
19
+ abstract readonly description: string;
16
20
  /**
17
21
  * The agent this toolkit is bound to (if any)
18
22
  */
@@ -55,8 +59,9 @@ export declare abstract class Toolkit<TContext = UnknownContext> {
55
59
  * });
56
60
  * ```
57
61
  */
58
- export declare class FunctionToolkit<TContext = UnknownContext> extends Toolkit<TContext> {
62
+ export declare class FunctionToolkit<TContext = UnknownContext> extends BaseToolkit<TContext> {
59
63
  readonly id: string;
64
+ readonly description: string;
60
65
  private tools;
61
66
  /**
62
67
  * Create a new function toolkit.
@@ -79,8 +84,13 @@ export declare class FunctionToolkit<TContext = UnknownContext> extends Toolkit<
79
84
  */
80
85
  list(context?: Context<TContext>): Promise<Tool<TContext>[]>;
81
86
  }
82
- export declare class MCPToolkit<TContext = UnknownContext> extends Toolkit<TContext> {
87
+ /**
88
+ * Convenience alias for FunctionToolkit - the default toolkit implementation.
89
+ */
90
+ export { FunctionToolkit as Toolkit };
91
+ export declare class MCPToolkit<TContext = UnknownContext> extends BaseToolkit<TContext> {
83
92
  readonly id: string;
93
+ readonly description: string;
84
94
  private server;
85
95
  private cache;
86
96
  private filter;
@@ -1 +1 @@
1
- {"version":3,"file":"toolkit.d.ts","sourceRoot":"","sources":["../../src/tool/toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,8BAAsB,OAAO,CAAC,QAAQ,GAAG,cAAc;IACrD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAEpD;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAErE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe,CAC1B,QAAQ,GAAG,cAAc,CACzB,SAAQ,OAAO,CAAC,QAAQ,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,KAAK,CAA8B;IAE3C;;;;OAIG;gBACS,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IAMnD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI3C;;;;;OAKG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;CAGnE;AAiCD,qBAAa,UAAU,CAAC,QAAQ,GAAG,cAAc,CAAE,SAAQ,OAAO,CAAC,QAAQ,CAAC;IAC1E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAA0B;IAExC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;gBACS,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC;IAQ9C;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI3C;;;;;;;;;OASG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IA+BlE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
1
+ {"version":3,"file":"toolkit.d.ts","sourceRoot":"","sources":["../../src/tool/toolkit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAMzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;AAC9B,OAAO,KAAK,EACV,qBAAqB,EACrB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,8BAAsB,WAAW,CAAC,QAAQ,GAAG,cAAc;IACzD;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAEvC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,IAAI;IAIvC;;;;;OAKG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAEpD;;;;;;OAMG;IACH,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IAErE;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B;AAED;;;;;;;;;;GAUG;AACH,qBAAa,eAAe,CAC1B,QAAQ,GAAG,cAAc,CACzB,SAAQ,WAAW,CAAC,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,KAAK,CAA8B;IAE3C;;;;OAIG;gBACS,MAAM,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IAOnD;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI3C;;;;;OAKG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;CAGnE;AAED;;GAEG;AACH,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,CAAC;AAiCtC,qBAAa,UAAU,CACrB,QAAQ,GAAG,cAAc,CACzB,SAAQ,WAAW,CAAC,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,MAAM,CAA0B;IAExC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAS;IAEvB;;;;OAIG;gBACS,MAAM,EAAE,gBAAgB,CAAC,QAAQ,CAAC;IAS9C;;;;;;;;OAQG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,SAAS;IAI3C;;;;;;;;;OASG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;IA+BlE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ/B"}
@@ -6,7 +6,7 @@ import { filter } from "@kernl-sdk/shared/lib";
6
6
  * Toolkits can be static (FunctionToolkit) or dynamic (MCPToolkit), and provide
7
7
  * a unified interface for tool discovery and management.
8
8
  */
9
- export class Toolkit {
9
+ export class BaseToolkit {
10
10
  /**
11
11
  * The agent this toolkit is bound to (if any)
12
12
  */
@@ -38,8 +38,9 @@ export class Toolkit {
38
38
  * });
39
39
  * ```
40
40
  */
41
- export class FunctionToolkit extends Toolkit {
41
+ export class FunctionToolkit extends BaseToolkit {
42
42
  id;
43
+ description;
43
44
  tools;
44
45
  /**
45
46
  * Create a new function toolkit.
@@ -49,6 +50,7 @@ export class FunctionToolkit extends Toolkit {
49
50
  constructor(config) {
50
51
  super();
51
52
  this.id = config.id;
53
+ this.description = config.description ?? "";
52
54
  this.tools = new Map(config.tools.map((t) => [t.id, t]));
53
55
  }
54
56
  /**
@@ -70,6 +72,10 @@ export class FunctionToolkit extends Toolkit {
70
72
  return Array.from(this.tools.values());
71
73
  }
72
74
  }
75
+ /**
76
+ * Convenience alias for FunctionToolkit - the default toolkit implementation.
77
+ */
78
+ export { FunctionToolkit as Toolkit };
73
79
  /*
74
80
  * A toolkit that wraps an MCP server and provides tools from it.
75
81
  *
@@ -101,8 +107,9 @@ export class FunctionToolkit extends Toolkit {
101
107
  * });
102
108
  * ```
103
109
  */
104
- export class MCPToolkit extends Toolkit {
110
+ export class MCPToolkit extends BaseToolkit {
105
111
  id;
112
+ description;
106
113
  server;
107
114
  cache;
108
115
  filter;
@@ -116,6 +123,7 @@ export class MCPToolkit extends Toolkit {
116
123
  constructor(config) {
117
124
  super();
118
125
  this.id = config.id;
126
+ this.description = config.description ?? "";
119
127
  this.server = config.server;
120
128
  this.filter = config.filter ?? (() => true);
121
129
  this.cache = new Map();
@@ -96,6 +96,10 @@ export interface FunctionToolkitConfig<TContext = UnknownContext> {
96
96
  * Unique identifier for this toolkit.
97
97
  */
98
98
  id: string;
99
+ /**
100
+ * Optional description of what this toolkit provides.
101
+ */
102
+ description?: string;
99
103
  /**
100
104
  * Array of tools to include in this toolkit.
101
105
  */
@@ -109,6 +113,10 @@ export interface MCPToolkitConfig<TContext = UnknownContext> {
109
113
  * Unique identifier for this toolkit.
110
114
  */
111
115
  id: string;
116
+ /**
117
+ * Optional description of what this toolkit provides.
118
+ */
119
+ description?: string;
112
120
  /**
113
121
  * The MCP server instance to wrap.
114
122
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tool/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tool/types.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type ZodType } from "zod";
2
2
  import { Context, UnknownContext } from "../context";
3
3
  import { LanguageModel, LanguageModelRequestSettings } from "@kernl-sdk/protocol";
4
4
  import { InputGuardrail, OutputGuardrail } from "../guardrail";
5
- import { Toolkit } from "../tool";
5
+ import { BaseToolkit } from "../tool";
6
6
  import { TextResponse } from "./thread";
7
7
  /**
8
8
  * Configuration for an agent.
@@ -24,18 +24,18 @@ export interface AgentConfig<TContext = UnknownContext, TResponse extends AgentR
24
24
  *
25
25
  * By default, if not set, the agent will use a default model that throws an error when called.
26
26
  */
27
- model?: LanguageModel;
27
+ model: LanguageModel;
28
28
  /**
29
29
  * Configures model-specific tuning parameters (e.g. temperature, top_p, etc.)
30
30
  */
31
31
  modelSettings?: LanguageModelRequestSettings;
32
32
  /**
33
33
  * A list of toolkits the agent can use. Toolkits are collections of related tools
34
- * that can be static (FunctionToolkit) or dynamic (MCPToolkit).
34
+ * that can be static (Toolkit) or dynamic (MCPToolkit).
35
35
  *
36
36
  * @example
37
37
  * ```typescript
38
- * const myTools = new FunctionToolkit({
38
+ * const myTools = new Toolkit({
39
39
  * id: "custom",
40
40
  * tools: [tool1, tool2]
41
41
  * });
@@ -52,7 +52,7 @@ export interface AgentConfig<TContext = UnknownContext, TResponse extends AgentR
52
52
  * });
53
53
  * ```
54
54
  */
55
- toolkits?: Toolkit<TContext>[];
55
+ toolkits?: BaseToolkit<TContext>[];
56
56
  /**
57
57
  * A list of checks that run in parallel to the agent's execution on the input + output for the agent,
58
58
  * depending on the configuration.
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC;;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,CAAC,EAAE,aAAa,CAAC;IAEtB;;OAEG;IACH,aAAa,CAAC,EAAE,4BAA4B,CAAC;IAE7C;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;IAE/B;;;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":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.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,UAAU,CAAC;AAExC;;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,6 +1,11 @@
1
- import { ToolCall, LanguageModel, LanguageModelItem, LanguageModelStreamEvent } from "@kernl-sdk/protocol";
1
+ import { ToolCall, LanguageModel, LanguageModelItem, LanguageModelStreamEvent, RUNNING, STOPPED, INTERRUPTIBLE, UNINTERRUPTIBLE, ZOMBIE, DEAD } from "@kernl-sdk/protocol";
2
2
  import { Task } from "../task";
3
3
  import { Context } from "../context";
4
+ export type TextResponse = "text";
5
+ /**
6
+ * Thread state discriminated union
7
+ */
8
+ export type ThreadState = typeof RUNNING | typeof STOPPED | typeof INTERRUPTIBLE | typeof UNINTERRUPTIBLE | typeof ZOMBIE | typeof DEAD;
4
9
  /**
5
10
  * Thread-specific tool call state for approval workflow.
6
11
  * This extends the protocol states for internal thread use.
@@ -23,19 +28,6 @@ export type ThreadStreamEvent = LanguageModelStreamEvent;
23
28
  export interface ActionSet {
24
29
  toolCalls: ToolCall[];
25
30
  }
26
- /**
27
- * Result of a single tick of execution
28
- */
29
- export interface TickResult {
30
- /**
31
- * Events to add to thread history
32
- */
33
- events: ThreadEvent[];
34
- /**
35
- * Action intentions that need to be performed as a result of this tick
36
- */
37
- intentions: ActionSet | null;
38
- }
39
31
  /**
40
32
  * Result of performing actions, including both executed results and pending approvals
41
33
  */
@@ -64,8 +56,10 @@ export interface ThreadExecuteResult<TResponse = any> {
64
56
  }
65
57
  export interface ThreadOptions<TContext> {
66
58
  context: Context<TContext>;
67
- task?: Task<TContext>;
68
59
  model?: LanguageModel;
60
+ task?: Task<TContext>;
61
+ threadId?: string;
62
+ maxTicks?: number;
63
+ abort?: AbortSignal;
69
64
  }
70
- export type TextResponse = "text";
71
65
  //# sourceMappingURL=thread.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/types/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;CAEvB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB;;OAEG;IACH,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB;;OAEG;IACH,gBAAgB,EAAE,QAAQ,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,SAAS,GAAG,GAAG;IAClD;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,aAAa,CAAC,QAAQ;IACrC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC"}
1
+ {"version":3,"file":"thread.d.ts","sourceRoot":"","sources":["../../src/types/thread.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,OAAO,EACP,OAAO,EACP,aAAa,EACb,eAAe,EACf,MAAM,EACN,IAAI,EACL,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAElC;;GAEG;AACH,MAAM,MAAM,WAAW,GACnB,OAAO,OAAO,GACd,OAAO,OAAO,GACd,OAAO,aAAa,GACpB,OAAO,eAAe,GACtB,OAAO,MAAM,GACb,OAAO,IAAI,CAAC;AAEhB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAE5C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,QAAQ,EAAE,CAAC;CAEvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB;;OAEG;IACH,gBAAgB,EAAE,QAAQ,EAAE,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB,CAAC,SAAS,GAAG,GAAG;IAClD;;OAEG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,aAAa,CAAC,QAAQ;IACrC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,WAAW,CAAC;CAGrB"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "kernl",
3
- "version": "0.1.3",
4
- "description": "A modern AI agent framework with MCP integration",
3
+ "version": "0.2.0",
4
+ "description": "A modern AI agent framework",
5
5
  "keywords": [
6
6
  "kernl",
7
7
  "ai",
@@ -31,14 +31,16 @@
31
31
  "@modelcontextprotocol/sdk": "^1.20.2",
32
32
  "pino": "^9.6.0",
33
33
  "zod": "^4.1.12",
34
- "@kernl-sdk/protocol": "0.1.1",
34
+ "@kernl-sdk/protocol": "0.2.0",
35
35
  "@kernl-sdk/shared": "^0.1.1"
36
36
  },
37
37
  "devDependencies": {
38
+ "@ai-sdk/openai": "3.0.0-beta.57",
38
39
  "@types/node": "^24.10.0",
39
40
  "tsc-alias": "^1.8.10",
40
41
  "typescript": "5.9.2",
41
- "vitest": "^4.0.8"
42
+ "vitest": "^4.0.8",
43
+ "@kernl-sdk/ai": "0.1.1"
42
44
  },
43
45
  "scripts": {
44
46
  "build": "tsc && tsc-alias",
package/src/agent.ts CHANGED
@@ -1,16 +1,27 @@
1
- import { LanguageModel, LanguageModelRequestSettings } from "@kernl-sdk/protocol";
1
+ import {
2
+ LanguageModel,
3
+ LanguageModelRequestSettings,
4
+ message,
5
+ } from "@kernl-sdk/protocol";
2
6
 
3
7
  import type { Context, UnknownContext } from "./context";
4
8
  import { InputGuardrail, OutputGuardrail } from "./guardrail";
5
9
  import { AgentHooks } from "./lifecycle";
6
- import { Toolkit } from "./tool/toolkit";
10
+ import { BaseToolkit } from "./tool/toolkit";
7
11
  import { Tool } from "./tool";
8
- // import { DEFAULT_LANGUAGE_MODEL } from "@/providers/default";
12
+ import { Thread } from "./thread";
9
13
 
10
14
  import { MisconfiguredError } from "./lib/error";
11
15
 
12
16
  import type { AgentConfig, AgentResponseType } from "./types/agent";
13
- import { TextResponse } from "./types/thread";
17
+ import type {
18
+ TextResponse,
19
+ ThreadOptions,
20
+ ThreadExecuteResult,
21
+ ThreadStreamEvent,
22
+ } from "./types/thread";
23
+ import type { Kernl } from "./kernl";
24
+ import type { ResolvedAgentResponse } from "./guardrail";
14
25
 
15
26
  export class Agent<
16
27
  TContext = UnknownContext,
@@ -19,13 +30,22 @@ export class Agent<
19
30
  extends AgentHooks<TContext, TResponse>
20
31
  implements AgentConfig<TContext, TResponse>
21
32
  {
33
+ private kernl?: Kernl;
34
+
22
35
  id: string;
23
36
  name: string;
24
37
  instructions: (context: Context<TContext>) => Promise<string> | string;
25
38
 
26
39
  model: LanguageModel;
27
40
  modelSettings: LanguageModelRequestSettings;
28
- toolkits: Toolkit<TContext>[];
41
+ toolkits: BaseToolkit<TContext>[];
42
+ guardrails: {
43
+ input: InputGuardrail[];
44
+ output: OutputGuardrail<AgentResponseType>[];
45
+ };
46
+ responseType: TResponse = "text" as TResponse;
47
+ resetToolChoice: boolean;
48
+ // toolUseBehavior: ToolUseBehavior; (TODO)
29
49
 
30
50
  // --- (TODO) ---
31
51
  // handoffDescription: string; // ??
@@ -35,36 +55,11 @@ export class Agent<
35
55
  // /* Process/thread-group–wide signal state shared by all threads in the group: shared pending signals, job control
36
56
  // (stops/cont, group exit), rlimits, etc. */
37
57
  // signal: *struct signal_struct;
38
- // /* Table of signal handlers (sa_handler, sa_mask, flags) shared by threads (CLONE_SIGHAND). RCU-protected so readers can access it locklessly. */
58
+ //
59
+ // /* Table of signal handlers (sa_handler, sa_mask, flags) shared by threads
60
+ // (CLONE_SIGHAND). RCU-protected so readers can access it locklessly. */
39
61
  // sighand: *struct sighand_struct __rcu;
40
62
 
41
- guardrails: {
42
- input: InputGuardrail[];
43
- output: OutputGuardrail<AgentResponseType>[];
44
- };
45
- responseType: TResponse = "text" as TResponse;
46
- resetToolChoice: boolean;
47
- // toolUseBehavior: ToolUseBehavior; (TODO)
48
-
49
- // /**
50
- // * Create an Agent with handoffs and automatically infer the union type for TResponse from the handoff agents' response types.
51
- // */
52
- // static create<
53
- // TResponse extends AgentResponseType = TextResponse,
54
- // Handoffs extends readonly (Agent<any, any> | Handoff<any, any>)[] = [],
55
- // >(
56
- // config: AgentConfigWithHandoffs<TResponse, Handoffs>,
57
- // ): Agent<UnknownContext, TResponse | HandoffsOutputUnion<Handoffs>> {
58
- // return new Agent<UnknownContext, TResponse | HandoffsOutputUnion<Handoffs>>(
59
- // {
60
- // ...config,
61
- // handoffs: config.handoffs as any,
62
- // responseType: config.responseType,
63
- // handoffresponseTypeWarningEnabled: false,
64
- // },
65
- // );
66
- // }
67
-
68
63
  constructor(config: AgentConfig<TContext, TResponse>) {
69
64
  super();
70
65
  if (config.id.trim() === "") {
@@ -76,7 +71,7 @@ export class Agent<
76
71
  typeof config.instructions === "function"
77
72
  ? config.instructions
78
73
  : () => config.instructions as string;
79
- this.model = config.model as LanguageModel; // TODO: Add default model
74
+ this.model = config.model; // (TODO): include optional default setting for convenience like env.DEFAULT_LLM = "gpt-5"
80
75
  this.modelSettings = config.modelSettings ?? {};
81
76
 
82
77
  this.toolkits = config.toolkits ?? [];
@@ -95,30 +90,82 @@ export class Agent<
95
90
  // this.handoffs = config.handoffs ?? [];
96
91
 
97
92
  // --- Runtime warning for handoff response type compatibility ---
98
- // if (
99
- // config.handoffresponseTypeWarningEnabled === undefined ||
100
- // config.handoffresponseTypeWarningEnabled
101
- // ) {
102
- // if (this.handoffs && this.responseType) {
103
- // const responseTypes = new Set<string>([
104
- // JSON.stringify(this.responseType),
105
- // ]);
106
- // for (const h of this.handoffs) {
107
- // if ("responseType" in h && h.responseType) {
108
- // responseTypes.add(JSON.stringify(h.responseType));
109
- // } else if ("agent" in h && h.agent.responseType) {
110
- // responseTypes.add(JSON.stringify(h.agent.responseType));
111
- // }
112
- // }
93
+ // if (config.handoffresponseTypeWarningEnabled) {
94
+ // ...
113
95
  // if (responseTypes.size > 1) {
114
96
  // logger.warn(
115
- // `[Agent] Warning: Handoff agents have different response types: ${Array.from(responseTypes).join(", ")}. You can make it type-safe by using Agent.create({ ... }) method instead.`,
97
+ // `[Agent] Warning: Handoff agents have different response types: ${Array.from(responseTypes).join(", ")}.
98
+ // You can make it type-safe by using Agent.create({ ... }) method instead.`,
116
99
  // );
117
100
  // }
118
101
  // }
119
102
  // }
120
103
  }
121
104
 
105
+ /**
106
+ * Bind this agent to a kernl instance. Called by kernl.register().
107
+ */
108
+ bind(kernl: Kernl): void {
109
+ this.kernl = kernl;
110
+ }
111
+
112
+ /**
113
+ * Blocking execution - spawns or resumes thread and waits for completion
114
+ */
115
+ async run(
116
+ instructions: string,
117
+ options?: ThreadOptions<TContext>,
118
+ ): Promise<ThreadExecuteResult<ResolvedAgentResponse<TResponse>>> {
119
+ if (!this.kernl) {
120
+ throw new MisconfiguredError(
121
+ `Agent ${this.id} not bound to kernl. Call kernl.register(agent) first.`,
122
+ );
123
+ }
124
+
125
+ const m = message({ role: "user", text: instructions });
126
+ const tid = options?.threadId;
127
+
128
+ // NOTE: may end up moving this to the kernl
129
+ let thread = tid ? this.kernl.threads.get(tid) : null;
130
+ if (!thread) {
131
+ thread = new Thread(this.kernl, this, [m], options);
132
+ return this.kernl.spawn(thread);
133
+ }
134
+
135
+ thread.append(m);
136
+ return this.kernl.schedule(thread);
137
+ }
138
+
139
+ /**
140
+ * Streaming execution - spawns or resumes thread and returns async iterator
141
+ *
142
+ * NOTE: streaming probably won't make sense in scheduling contexts so spawnStream etc. won't make sense
143
+ */
144
+ async *stream(
145
+ instructions: string,
146
+ options?: ThreadOptions<TContext>,
147
+ ): AsyncIterable<ThreadStreamEvent> {
148
+ if (!this.kernl) {
149
+ throw new MisconfiguredError(
150
+ `Agent ${this.id} not bound to kernl. Call kernl.register(agent) first.`,
151
+ );
152
+ }
153
+
154
+ const m = message({ role: "user", text: instructions });
155
+ const tid = options?.threadId;
156
+
157
+ // NOTE: may end up moving this to the kernl
158
+ let thread = tid ? this.kernl.threads.get(tid) : null;
159
+ if (!thread) {
160
+ thread = new Thread(this.kernl, this, [m], options);
161
+ yield* this.kernl.spawnStream(thread);
162
+ return;
163
+ }
164
+
165
+ thread.append(m);
166
+ yield* this.kernl.scheduleStream(thread);
167
+ }
168
+
122
169
  /**
123
170
  * Get a specific tool by ID from all toolkits.
124
171
  *
@@ -164,40 +211,4 @@ export class Agent<
164
211
 
165
212
  return allTools;
166
213
  }
167
-
168
- // async run<TContext>(
169
- // input: string,
170
- // options: SharedRunOptions<TContext>,
171
- // ): Promise<RunResult<TContext>> {
172
- // // TODO
173
- // // ...
174
- // }
175
-
176
- // async stream<TContext>(
177
- // input: string,
178
- // options: StreamOptions<TContext>,
179
- // ): Promise<StreamedRunResult<TContext>> {
180
- // // TODO
181
- // // ...
182
- // }
183
- //
184
-
185
- // ----------------------
186
- // Events
187
- // ----------------------
188
-
189
- // on(event: any, handler: Function): void {
190
- // // TODO
191
- // // ...
192
- // }
193
-
194
- // once(event: any, handler: Function): void {
195
- // // TODO
196
- // // ...
197
- // }
198
-
199
- // off(event: any, handler: Function): void {
200
- // // TODO
201
- // // ...
202
- // }
203
214
  }
package/src/index.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { Kernl } from "./kernl";
2
2
  export { Agent } from "./agent";
3
3
  export type { Context } from "./context";
4
- export { tool, FunctionToolkit, MCPToolkit } from "./tool";
4
+ export { tool, Toolkit, FunctionToolkit, MCPToolkit } from "./tool";
package/src/kernl.ts CHANGED
@@ -1,22 +1,71 @@
1
1
  import { Agent } from "./agent";
2
2
  import { UnknownContext } from "./context";
3
3
  import { KernlHooks } from "./lifecycle";
4
+ import type { Thread } from "./thread";
4
5
 
5
6
  import type { AgentResponseType } from "./types/agent";
7
+ import type { ThreadExecuteResult, ThreadStreamEvent } from "./types/thread";
8
+ import type { ResolvedAgentResponse } from "./guardrail";
6
9
 
7
10
  /**
8
- * Central coordinator for the entire application.
11
+ * The kernl - manages agent processes, scheduling, and task lifecycle
9
12
  *
10
13
  * Orchestrates agent execution, including guardrails, tool calls, session persistence, and
11
14
  * tracing.
12
15
  */
13
16
  export class Kernl extends KernlHooks<UnknownContext, AgentResponseType> {
14
17
  private agents: Map<string, Agent> = new Map();
18
+ threads: Map<string, Thread<any, any>> = new Map();
15
19
 
16
20
  /**
17
21
  * Registers a new agent with the kernl instance.
18
22
  */
19
23
  register(agent: Agent): void {
20
- // TODO: Implement agent registration
24
+ this.agents.set(agent.id, agent);
25
+ agent.bind(this);
26
+ }
27
+
28
+ /**
29
+ * Spawn a new thread - blocking execution
30
+ */
31
+ async spawn<TContext, TResponse extends AgentResponseType>(
32
+ thread: Thread<TContext, TResponse>,
33
+ ): Promise<ThreadExecuteResult<ResolvedAgentResponse<TResponse>>> {
34
+ this.threads.set(thread.id, thread);
35
+ return await thread.execute();
36
+ }
37
+
38
+ /**
39
+ * Schedule an existing thread - blocking execution
40
+ *
41
+ * NOTE: just blocks for now
42
+ */
43
+ async schedule<TContext, TResponse extends AgentResponseType>(
44
+ thread: Thread<TContext, TResponse>,
45
+ ): Promise<ThreadExecuteResult<ResolvedAgentResponse<TResponse>>> {
46
+ return await thread.execute();
47
+ }
48
+
49
+ /**
50
+ * (TMP) - probably won't make sense with assync scheduling contexts
51
+ *
52
+ * Spawn a new thread - streaming execution
53
+ */
54
+ async *spawnStream<TContext, TResponse extends AgentResponseType>(
55
+ thread: Thread<TContext, TResponse>,
56
+ ): AsyncIterable<ThreadStreamEvent> {
57
+ this.threads.set(thread.id, thread);
58
+ yield* thread.stream();
59
+ }
60
+
61
+ /**
62
+ * (TMP) - probably won't make sense with assync scheduling contexts
63
+ *
64
+ * Schedule an existing thread - streaming execution
65
+ */
66
+ async *scheduleStream<TContext, TResponse extends AgentResponseType>(
67
+ thread: Thread<TContext, TResponse>,
68
+ ): AsyncIterable<ThreadStreamEvent> {
69
+ yield* thread.stream();
21
70
  }
22
71
  }