@agentick/core 0.2.1 → 0.4.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 (100) hide show
  1. package/README.md +222 -23
  2. package/dist/.tsbuildinfo.build +1 -1
  3. package/dist/agentick-instance.d.ts.map +1 -1
  4. package/dist/agentick-instance.js +125 -119
  5. package/dist/agentick-instance.js.map +1 -1
  6. package/dist/app/session-store.d.ts +1 -1
  7. package/dist/app/session-store.js +1 -1
  8. package/dist/app/session.d.ts +26 -17
  9. package/dist/app/session.d.ts.map +1 -1
  10. package/dist/app/session.js +220 -202
  11. package/dist/app/session.js.map +1 -1
  12. package/dist/app/types.d.ts +230 -149
  13. package/dist/app/types.d.ts.map +1 -1
  14. package/dist/com/object-model.d.ts +7 -4
  15. package/dist/com/object-model.d.ts.map +1 -1
  16. package/dist/com/object-model.js +13 -4
  17. package/dist/com/object-model.js.map +1 -1
  18. package/dist/compiler/fiber-compiler.d.ts +8 -16
  19. package/dist/compiler/fiber-compiler.d.ts.map +1 -1
  20. package/dist/compiler/fiber-compiler.js +10 -31
  21. package/dist/compiler/fiber-compiler.js.map +1 -1
  22. package/dist/component/component.d.ts +6 -6
  23. package/dist/component/component.d.ts.map +1 -1
  24. package/dist/engine/tool-executor.js +3 -3
  25. package/dist/engine/tool-executor.js.map +1 -1
  26. package/dist/hooks/com-state.d.ts +14 -1
  27. package/dist/hooks/com-state.d.ts.map +1 -1
  28. package/dist/hooks/com-state.js +28 -2
  29. package/dist/hooks/com-state.js.map +1 -1
  30. package/dist/hooks/context-info.d.ts +2 -35
  31. package/dist/hooks/context-info.d.ts.map +1 -1
  32. package/dist/hooks/context-info.js +8 -0
  33. package/dist/hooks/context-info.js.map +1 -1
  34. package/dist/hooks/context.d.ts +1 -2
  35. package/dist/hooks/context.d.ts.map +1 -1
  36. package/dist/hooks/context.js +1 -2
  37. package/dist/hooks/context.js.map +1 -1
  38. package/dist/hooks/data.d.ts +18 -1
  39. package/dist/hooks/data.d.ts.map +1 -1
  40. package/dist/hooks/data.js +13 -2
  41. package/dist/hooks/data.js.map +1 -1
  42. package/dist/hooks/index.d.ts +5 -3
  43. package/dist/hooks/index.d.ts.map +1 -1
  44. package/dist/hooks/index.js +5 -1
  45. package/dist/hooks/index.js.map +1 -1
  46. package/dist/hooks/resolved.d.ts +2 -0
  47. package/dist/hooks/resolved.d.ts.map +1 -0
  48. package/dist/hooks/resolved.js +6 -0
  49. package/dist/hooks/resolved.js.map +1 -0
  50. package/dist/hooks/runtime-context.d.ts +45 -0
  51. package/dist/hooks/runtime-context.d.ts.map +1 -1
  52. package/dist/hooks/runtime-context.js +35 -0
  53. package/dist/hooks/runtime-context.js.map +1 -1
  54. package/dist/hooks/timeline.d.ts +10 -0
  55. package/dist/hooks/timeline.d.ts.map +1 -0
  56. package/dist/hooks/timeline.js +13 -0
  57. package/dist/hooks/timeline.js.map +1 -0
  58. package/dist/index.d.ts +2 -1
  59. package/dist/index.d.ts.map +1 -1
  60. package/dist/index.js +8 -0
  61. package/dist/index.js.map +1 -1
  62. package/dist/jsx/components/timeline.d.ts.map +1 -1
  63. package/dist/jsx/components/timeline.js +11 -11
  64. package/dist/jsx/components/timeline.js.map +1 -1
  65. package/dist/local-transport.d.ts +31 -0
  66. package/dist/local-transport.d.ts.map +1 -0
  67. package/dist/local-transport.js +119 -0
  68. package/dist/local-transport.js.map +1 -0
  69. package/dist/model/model.d.ts +0 -2
  70. package/dist/model/model.d.ts.map +1 -1
  71. package/dist/model/model.js.map +1 -1
  72. package/dist/procedure/index.d.ts.map +1 -1
  73. package/dist/testing/index.d.ts +2 -0
  74. package/dist/testing/index.d.ts.map +1 -1
  75. package/dist/testing/index.js +2 -0
  76. package/dist/testing/index.js.map +1 -1
  77. package/dist/testing/mock-app.d.ts.map +1 -1
  78. package/dist/testing/mock-app.js +5 -15
  79. package/dist/testing/mock-app.js.map +1 -1
  80. package/dist/testing/mocks.d.ts +2 -3
  81. package/dist/testing/mocks.d.ts.map +1 -1
  82. package/dist/testing/mocks.js +2 -3
  83. package/dist/testing/mocks.js.map +1 -1
  84. package/dist/testing/render-agent.d.ts +1 -1
  85. package/dist/testing/render-agent.d.ts.map +1 -1
  86. package/dist/testing/render-agent.js +5 -5
  87. package/dist/testing/render-agent.js.map +1 -1
  88. package/dist/testing/test-runner.d.ts +122 -0
  89. package/dist/testing/test-runner.d.ts.map +1 -0
  90. package/dist/testing/test-runner.js +126 -0
  91. package/dist/testing/test-runner.js.map +1 -0
  92. package/dist/tool/tool.d.ts +47 -1
  93. package/dist/tool/tool.d.ts.map +1 -1
  94. package/dist/tool/tool.js +51 -14
  95. package/dist/tool/tool.js.map +1 -1
  96. package/package.json +4 -4
  97. package/dist/hibernation/index.d.ts +0 -126
  98. package/dist/hibernation/index.d.ts.map +0 -1
  99. package/dist/hibernation/index.js +0 -127
  100. package/dist/hibernation/index.js.map +0 -1
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Test Runner Factory
3
+ *
4
+ * Creates mock ExecutionRunner instances for testing.
5
+ * Tracks all lifecycle hook invocations for assertions.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const { runner, tracker } = createTestRunner({
10
+ * name: "test",
11
+ * interceptTools: { my_tool: "intercepted!" },
12
+ * });
13
+ *
14
+ * const app = createApp(Agent, { model, runner });
15
+ * // ... run agent ...
16
+ *
17
+ * expect(tracker.initCalls).toHaveLength(1);
18
+ * expect(tracker.prepareModelInputCalls).toHaveLength(1);
19
+ * expect(tracker.toolCalls).toHaveLength(1);
20
+ * ```
21
+ */
22
+ import type { ExecutionRunner } from "../app/types";
23
+ import type { COMInput } from "../com/types";
24
+ import type { ExecutableTool } from "../tool/tool";
25
+ import type { ToolCall, ToolResult } from "@agentick/shared";
26
+ export interface TestRunnerOptions {
27
+ /**
28
+ * Runner name.
29
+ * @default "test"
30
+ */
31
+ name?: string;
32
+ /**
33
+ * Tool names to intercept. Values are either a string (becomes the result text)
34
+ * or a function that receives the ToolCall and returns a ToolResult.
35
+ * Non-intercepted tools pass through to normal execution.
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * // Static string result
40
+ * interceptTools: { execute: "sandbox result" }
41
+ *
42
+ * // Dynamic function result
43
+ * interceptTools: {
44
+ * execute: (call) => ({
45
+ * id: call.id, toolUseId: call.id, name: call.name,
46
+ * success: true, content: [{ type: "text", text: `ran: ${call.input.code}` }],
47
+ * }),
48
+ * }
49
+ * ```
50
+ */
51
+ interceptTools?: Record<string, string | ((call: ToolCall) => ToolResult | Promise<ToolResult>)>;
52
+ /**
53
+ * Transform function for prepareModelInput.
54
+ * If not provided, input passes through unchanged.
55
+ */
56
+ transformInput?: (compiled: COMInput, tools: ExecutableTool[]) => COMInput | Promise<COMInput>;
57
+ /**
58
+ * Data to add to snapshot during onPersist.
59
+ */
60
+ persistData?: Record<string, unknown>;
61
+ }
62
+ export interface RunnerTracker {
63
+ /** All onSessionInit calls (session IDs) */
64
+ initCalls: string[];
65
+ /** All prepareModelInput calls */
66
+ prepareModelInputCalls: Array<{
67
+ tools: string[];
68
+ }>;
69
+ /** All executeToolCall calls */
70
+ toolCalls: Array<{
71
+ name: string;
72
+ intercepted: boolean;
73
+ }>;
74
+ /** All onPersist calls (session IDs) */
75
+ persistCalls: string[];
76
+ /** All onRestore calls (session IDs) */
77
+ restoreCalls: string[];
78
+ /** All onDestroy calls (session IDs) */
79
+ destroyCalls: string[];
80
+ /** Reset all tracked calls */
81
+ reset(): void;
82
+ }
83
+ export interface TestRunnerResult {
84
+ /** The runner instance to pass to AppOptions */
85
+ runner: ExecutionRunner;
86
+ /** Tracker for asserting lifecycle calls */
87
+ tracker: RunnerTracker;
88
+ }
89
+ /**
90
+ * Create a test execution runner with call tracking.
91
+ *
92
+ * @example Basic usage
93
+ * ```typescript
94
+ * const { runner, tracker } = createTestRunner();
95
+ * const app = createApp(Agent, { model, runner });
96
+ * const session = await app.session();
97
+ * await session.send({ messages: [...] }).result;
98
+ *
99
+ * expect(tracker.initCalls).toHaveLength(1);
100
+ * expect(tracker.prepareModelInputCalls).toHaveLength(1);
101
+ * ```
102
+ *
103
+ * @example Intercepting tools
104
+ * ```typescript
105
+ * const { runner, tracker } = createTestRunner({
106
+ * interceptTools: { execute: "sandboxed!" },
107
+ * });
108
+ * // When model calls "execute" tool, it gets "sandboxed!" instead of real execution
109
+ * ```
110
+ *
111
+ * @example Transforming model input
112
+ * ```typescript
113
+ * const { runner } = createTestRunner({
114
+ * transformInput: (compiled, tools) => ({
115
+ * ...compiled,
116
+ * tools: [], // Remove all tools from model input
117
+ * }),
118
+ * });
119
+ * ```
120
+ */
121
+ export declare function createTestRunner(options?: TestRunnerOptions): TestRunnerResult;
122
+ //# sourceMappingURL=test-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.d.ts","sourceRoot":"","sources":["../../src/testing/test-runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAA+B,MAAM,cAAc,CAAC;AACjF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM7D,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;;;;;;;;;;;;;;;;OAkBG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,QAAQ,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAEjG;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE/F;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kCAAkC;IAClC,sBAAsB,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACnD,gCAAgC;IAChC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACzD,wCAAwC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,EAAE,CAAC;IAEvB,8BAA8B;IAC9B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,MAAM,EAAE,eAAe,CAAC;IACxB,4CAA4C;IAC5C,OAAO,EAAE,aAAa,CAAC;CACxB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CAiFlF"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Test Runner Factory
3
+ *
4
+ * Creates mock ExecutionRunner instances for testing.
5
+ * Tracks all lifecycle hook invocations for assertions.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * const { runner, tracker } = createTestRunner({
10
+ * name: "test",
11
+ * interceptTools: { my_tool: "intercepted!" },
12
+ * });
13
+ *
14
+ * const app = createApp(Agent, { model, runner });
15
+ * // ... run agent ...
16
+ *
17
+ * expect(tracker.initCalls).toHaveLength(1);
18
+ * expect(tracker.prepareModelInputCalls).toHaveLength(1);
19
+ * expect(tracker.toolCalls).toHaveLength(1);
20
+ * ```
21
+ */
22
+ // ============================================================================
23
+ // Factory
24
+ // ============================================================================
25
+ /**
26
+ * Create a test execution runner with call tracking.
27
+ *
28
+ * @example Basic usage
29
+ * ```typescript
30
+ * const { runner, tracker } = createTestRunner();
31
+ * const app = createApp(Agent, { model, runner });
32
+ * const session = await app.session();
33
+ * await session.send({ messages: [...] }).result;
34
+ *
35
+ * expect(tracker.initCalls).toHaveLength(1);
36
+ * expect(tracker.prepareModelInputCalls).toHaveLength(1);
37
+ * ```
38
+ *
39
+ * @example Intercepting tools
40
+ * ```typescript
41
+ * const { runner, tracker } = createTestRunner({
42
+ * interceptTools: { execute: "sandboxed!" },
43
+ * });
44
+ * // When model calls "execute" tool, it gets "sandboxed!" instead of real execution
45
+ * ```
46
+ *
47
+ * @example Transforming model input
48
+ * ```typescript
49
+ * const { runner } = createTestRunner({
50
+ * transformInput: (compiled, tools) => ({
51
+ * ...compiled,
52
+ * tools: [], // Remove all tools from model input
53
+ * }),
54
+ * });
55
+ * ```
56
+ */
57
+ export function createTestRunner(options = {}) {
58
+ const { name = "test", interceptTools = {}, transformInput, persistData } = options;
59
+ const tracker = {
60
+ initCalls: [],
61
+ prepareModelInputCalls: [],
62
+ toolCalls: [],
63
+ persistCalls: [],
64
+ restoreCalls: [],
65
+ destroyCalls: [],
66
+ reset() {
67
+ this.initCalls = [];
68
+ this.prepareModelInputCalls = [];
69
+ this.toolCalls = [];
70
+ this.persistCalls = [];
71
+ this.restoreCalls = [];
72
+ this.destroyCalls = [];
73
+ },
74
+ };
75
+ const runner = {
76
+ name,
77
+ onSessionInit(session) {
78
+ tracker.initCalls.push(session.id);
79
+ },
80
+ async prepareModelInput(compiled, tools) {
81
+ tracker.prepareModelInputCalls.push({
82
+ tools: tools.map((t) => t.metadata?.name ?? "unknown"),
83
+ });
84
+ if (transformInput) {
85
+ return transformInput(compiled, tools);
86
+ }
87
+ return compiled;
88
+ },
89
+ async executeToolCall(call, tool, next) {
90
+ const interceptor = interceptTools[call.name];
91
+ if (interceptor !== undefined) {
92
+ tracker.toolCalls.push({ name: call.name, intercepted: true });
93
+ if (typeof interceptor === "function") {
94
+ return interceptor(call);
95
+ }
96
+ return {
97
+ id: call.id,
98
+ toolUseId: call.id,
99
+ name: call.name,
100
+ success: true,
101
+ content: [{ type: "text", text: interceptor }],
102
+ };
103
+ }
104
+ tracker.toolCalls.push({ name: call.name, intercepted: false });
105
+ return next();
106
+ },
107
+ onPersist(session, snapshot) {
108
+ tracker.persistCalls.push(session.id);
109
+ if (persistData) {
110
+ return {
111
+ ...snapshot,
112
+ comState: { ...snapshot.comState, ...persistData },
113
+ };
114
+ }
115
+ return snapshot;
116
+ },
117
+ onRestore(session, _snapshot) {
118
+ tracker.restoreCalls.push(session.id);
119
+ },
120
+ onDestroy(session) {
121
+ tracker.destroyCalls.push(session.id);
122
+ },
123
+ };
124
+ return { runner, tracker };
125
+ }
126
+ //# sourceMappingURL=test-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/testing/test-runner.ts"],"names":[],"mappings":"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"}
@@ -45,13 +45,28 @@ export interface ZodSchema<T = unknown> {
45
45
  * When called directly via `MyTool.run(input)`, `ctx` is undefined.
46
46
  */
47
47
  export type ToolHandler<TInput = any, TOutput extends ContentBlock[] = ContentBlock[]> = (input: TInput, ctx?: COM) => TOutput | Promise<TOutput>;
48
+ /**
49
+ * Core dependencies auto-populated by createTool when rendered in a component tree.
50
+ * Always includes `ctx` (COM). Additional fields come from the tool's `use()` hook.
51
+ */
52
+ export interface ToolCoreDeps {
53
+ ctx: COM;
54
+ }
55
+ /**
56
+ * Tool handler with deps — used when `use()` is provided on createTool.
57
+ * The handler receives typed input and optional deps (core + custom from use()).
58
+ *
59
+ * When rendered in JSX: deps is populated (core + use() return value).
60
+ * When called directly via `.run(input)`: deps is undefined.
61
+ */
62
+ export type ToolHandlerWithDeps<TInput = any, TOutput extends ContentBlock[] = ContentBlock[], TDeps extends Record<string, any> = {}> = (input: TInput, deps?: ToolCoreDeps & TDeps) => TOutput | Promise<TOutput>;
48
63
  /**
49
64
  * Options for createTool().
50
65
  *
51
66
  * Mirrors ToolMetadata but with additional creation-time options
52
67
  * (handler, middleware, component lifecycle hooks).
53
68
  */
54
- export interface CreateToolOptions<TInput = any, TOutput extends ContentBlock[] = ContentBlock[]> {
69
+ export interface CreateToolOptions<TInput = any, TOutput extends ContentBlock[] = ContentBlock[], TDeps extends Record<string, any> = {}> {
55
70
  /** Tool name (used by model to call the tool) */
56
71
  name: string;
57
72
  /** Description shown to the model */
@@ -168,6 +183,33 @@ export interface CreateToolOptions<TInput = any, TOutput extends ContentBlock[]
168
183
  };
169
184
  /** Middleware applied to handler execution */
170
185
  middleware?: Middleware[];
186
+ /**
187
+ * Hook function that runs at render time inside the component tree.
188
+ * Has full access to React hooks (useContext, useData, custom hooks).
189
+ *
190
+ * Return value is merged with core deps ({ ctx }) and passed to the
191
+ * handler as the second argument. This bridges render-time context
192
+ * (tree-scoped) into execution-time handlers.
193
+ *
194
+ * Only runs when the tool is rendered in JSX (`<MyTool />`).
195
+ * When called directly via `.run(input)`, `use()` does not run
196
+ * and the handler's deps parameter is undefined.
197
+ *
198
+ * @example
199
+ * ```typescript
200
+ * const Shell = createTool({
201
+ * name: 'shell',
202
+ * description: 'Execute a command in the sandbox',
203
+ * input: z.object({ command: z.string() }),
204
+ * use: () => ({ sandbox: useSandbox() }),
205
+ * handler: async ({ command }, deps) => {
206
+ * const result = await deps!.sandbox.exec(command);
207
+ * return [{ type: 'text', text: result.stdout }];
208
+ * },
209
+ * });
210
+ * ```
211
+ */
212
+ use?: () => TDeps;
171
213
  onMount?: (ctx: COM) => void | Promise<void>;
172
214
  onUnmount?: (ctx: COM) => void | Promise<void>;
173
215
  onStart?: (ctx: COM) => void | Promise<void>;
@@ -258,6 +300,10 @@ export interface RunnableToolClass<TInput = any> extends ToolClass<TInput> {
258
300
  * });
259
301
  * ```
260
302
  */
303
+ export declare function createTool<TInput = any, TOutput extends ContentBlock[] = ContentBlock[], TDeps extends Record<string, any> = Record<string, any>>(options: Omit<CreateToolOptions<TInput, TOutput, TDeps>, "handler" | "use"> & {
304
+ handler: ToolHandlerWithDeps<TInput, TOutput, TDeps>;
305
+ use: () => TDeps;
306
+ }): RunnableToolClass<TInput>;
261
307
  export declare function createTool<TInput = any, TOutput extends ContentBlock[] = ContentBlock[]>(options: CreateToolOptions<TInput, TOutput> & {
262
308
  handler: ToolHandler<TInput>;
263
309
  }): RunnableToolClass<TInput>;
@@ -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
@@ -34,23 +34,26 @@ export function createTool(options) {
34
34
  providerOptions: options.providerOptions,
35
35
  mcpConfig: options.mcpConfig,
36
36
  };
37
+ // Procedure options shared between static run and instance run
38
+ const procedureOptions = {
39
+ name: "tool:run",
40
+ metadata: {
41
+ type: "tool",
42
+ toolName: options.name,
43
+ id: options.name,
44
+ operation: "run",
45
+ },
46
+ middleware: options.middleware || [],
47
+ executionBoundary: "child",
48
+ executionType: "tool",
49
+ };
37
50
  // Create run procedure if handler is provided
51
+ // This is the static run — used for direct execution (MyTool.run(input))
52
+ // and as fallback when use() is not provided in JSX.
38
53
  const run = options.handler
39
54
  ? isProcedure(options.handler)
40
55
  ? options.handler
41
- : createEngineProcedure({
42
- name: "tool:run", // Low cardinality span name
43
- metadata: {
44
- type: "tool",
45
- toolName: options.name,
46
- id: options.name,
47
- operation: "run",
48
- },
49
- middleware: options.middleware || [],
50
- // Execution boundary: tool runs are child executions of the model call
51
- executionBoundary: "child",
52
- executionType: "tool",
53
- }, options.handler)
56
+ : createEngineProcedure(procedureOptions, options.handler)
54
57
  : undefined;
55
58
  // Create functional component with static tool properties
56
59
  // Using a functional component instead of a class ensures compatibility
@@ -61,6 +64,40 @@ export function createTool(options) {
61
64
  // expect component/component.ts TickState. They're compatible at runtime,
62
65
  // so we use type assertion. The hooks version is a simplified subset.
63
66
  const tickState = useTickState();
67
+ // === Context injection: all JSX-rendered tools get ctx/deps from the component tree ===
68
+ // The tool executor does NOT pass ctx — the component is the source of truth.
69
+ // Capture ctx ref (always up-to-date for instance procedure closure)
70
+ const ctxRef = useRef(ctx);
71
+ ctxRef.current = ctx;
72
+ // Call use() every render to capture fresh hook values (tree-scoped).
73
+ // This is safe: options.use is fixed per tool definition, so hook call
74
+ // order is consistent across renders (no rules-of-hooks violation).
75
+ const userDeps = options.use?.();
76
+ // Build deps: core values (ctx) + user's use() return
77
+ const depsRef = useRef(undefined);
78
+ if (options.use) {
79
+ depsRef.current = { ctx, ...userDeps };
80
+ }
81
+ // Create instance procedure once (stable via ref).
82
+ // ALL tools with handlers get an instance procedure so context comes from
83
+ // the component tree, not from the executor. This is what makes
84
+ // `toolProcedure(input)` work without a second arg.
85
+ const instanceRunRef = useRef(null);
86
+ if (options.handler && !instanceRunRef.current) {
87
+ if (isProcedure(options.handler)) {
88
+ instanceRunRef.current = options.handler;
89
+ }
90
+ else if (options.use) {
91
+ // use() provided — inject full deps (ToolCoreDeps & user deps)
92
+ instanceRunRef.current = createEngineProcedure(procedureOptions, async (...args) => options.handler(args[0], depsRef.current));
93
+ }
94
+ else {
95
+ // No use() — inject ctx from component tree (preserves handler(input, ctx?) signature)
96
+ instanceRunRef.current = createEngineProcedure(procedureOptions, async (...args) => options.handler(args[0], ctxRef.current));
97
+ }
98
+ }
99
+ // Use instance procedure when available, otherwise static run (config tools fallback)
100
+ const effectiveRun = instanceRunRef.current || run;
64
101
  // Track lifecycle callbacks (should only fire once per component lifecycle)
65
102
  const hasCalledMountRef = useRef(false);
66
103
  // Call onMount/onStart lifecycle hooks once
@@ -108,7 +145,7 @@ export function createTool(options) {
108
145
  name: metadata.name,
109
146
  description: metadata.description,
110
147
  schema: metadata.input,
111
- handler: run,
148
+ handler: effectiveRun,
112
149
  // Include full metadata for advanced use cases
113
150
  metadata,
114
151
  });
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tool/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/tool/tool.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@agentick/core",
3
- "version": "0.2.1",
3
+ "version": "0.4.0",
4
4
  "description": "Core engine for Agentick",
5
5
  "keywords": [
6
6
  "agent",
7
7
  "ai",
8
8
  "core"
9
9
  ],
10
- "license": "ISC",
10
+ "license": "MIT",
11
11
  "author": "Ryan Lindgren",
12
12
  "repository": {
13
13
  "type": "git",
@@ -34,8 +34,8 @@
34
34
  "react-reconciler": "^0.33.0",
35
35
  "zod": "^4.3.6",
36
36
  "zod-to-json-schema": "^3.25.1",
37
- "@agentick/kernel": "0.2.1",
38
- "@agentick/shared": "0.2.1"
37
+ "@agentick/kernel": "0.4.0",
38
+ "@agentick/shared": "0.4.0"
39
39
  },
40
40
  "devDependencies": {
41
41
  "@types/react": "^19.2.13",
@@ -1,126 +0,0 @@
1
- /**
2
- * Session Hibernation
3
- *
4
- * Serialize and restore session state for persistence.
5
- *
6
- * Unlike React's hydration (which is about attaching to pre-rendered DOM),
7
- * this is about serializing our state and restoring it later.
8
- *
9
- * Key insight: We don't need to serialize React's fiber tree. We serialize
10
- * OUR state, and React rebuilds its tree from scratch on restore. Since our
11
- * hooks (useData, etc.) read from our caches, the render produces the same
12
- * output as before hibernation.
13
- */
14
- import type { FiberCompiler } from "../compiler/fiber-compiler";
15
- import type { TimelineEntry } from "../hooks/types";
16
- import type { SerializableCacheEntry } from "../hooks/runtime-context";
17
- /**
18
- * Serializable session snapshot.
19
- * This is what gets persisted to storage.
20
- */
21
- export interface SessionSnapshot {
22
- /** Version for migration support */
23
- version: 1;
24
- /** Session ID */
25
- sessionId: string;
26
- /** Current tick number */
27
- tick: number;
28
- /** Conversation timeline */
29
- timeline: SerializableTimelineEntry[];
30
- /** COM state (key-value pairs) */
31
- comState: Record<string, unknown>;
32
- /** Data cache from useData */
33
- dataCache: Record<string, SerializableCacheEntry>;
34
- /** Timestamp when snapshot was taken */
35
- createdAt: string;
36
- /** Optional metadata */
37
- metadata?: Record<string, unknown>;
38
- }
39
- /**
40
- * Timeline entry without non-serializable fields.
41
- */
42
- export interface SerializableTimelineEntry {
43
- id: string;
44
- role: "user" | "assistant" | "system" | "tool";
45
- content: unknown;
46
- createdAt: string;
47
- }
48
- export interface HibernateOptions {
49
- /** Additional metadata to include in snapshot */
50
- metadata?: Record<string, unknown>;
51
- }
52
- /**
53
- * Create a serializable snapshot of the session state.
54
- *
55
- * @example
56
- * ```typescript
57
- * const snapshot = hibernate(compiler, {
58
- * sessionId: session.id,
59
- * tick: session.currentTick,
60
- * timeline: session.timeline,
61
- * comState: session.ctx.state,
62
- * });
63
- *
64
- * // Store snapshot
65
- * await db.sessions.save(session.id, JSON.stringify(snapshot));
66
- * ```
67
- */
68
- export declare function hibernate(compiler: FiberCompiler, state: {
69
- sessionId: string;
70
- tick: number;
71
- timeline: TimelineEntry[];
72
- comState: Map<string, unknown>;
73
- }, options?: HibernateOptions): SessionSnapshot;
74
- export interface HydrateResult {
75
- /** Session ID from snapshot */
76
- sessionId: string;
77
- /** Tick number to resume from */
78
- tick: number;
79
- /** Restored timeline */
80
- timeline: TimelineEntry[];
81
- /** Restored COM state */
82
- comState: Map<string, unknown>;
83
- /** Snapshot metadata */
84
- metadata?: Record<string, unknown>;
85
- /** When the snapshot was created */
86
- snapshotCreatedAt: Date;
87
- }
88
- /**
89
- * Restore session state from a snapshot.
90
- *
91
- * This restores our caches and returns the state to apply to a session.
92
- * The session can then render and React will produce the same output
93
- * because our hooks read from the restored caches.
94
- *
95
- * @example
96
- * ```typescript
97
- * // Load snapshot from storage
98
- * const json = await db.sessions.get(sessionId);
99
- * const snapshot = JSON.parse(json) as SessionSnapshot;
100
- *
101
- * // Create compiler first
102
- * const compiler = new FiberCompiler(ctx);
103
- *
104
- * // Hydrate - restores data cache into compiler
105
- * const state = hydrate(compiler, snapshot);
106
- *
107
- * // Now create/configure session with restored state
108
- * session.timeline = state.timeline;
109
- * session.currentTick = state.tick;
110
- * // etc.
111
- * ```
112
- */
113
- export declare function hydrate(compiler: FiberCompiler, snapshot: SessionSnapshot): HydrateResult;
114
- /**
115
- * Check if a snapshot is valid.
116
- */
117
- export declare function isValidSnapshot(obj: unknown): obj is SessionSnapshot;
118
- /**
119
- * Get snapshot age in milliseconds.
120
- */
121
- export declare function getSnapshotAge(snapshot: SessionSnapshot): number;
122
- /**
123
- * Create a deep clone of a snapshot (for testing/debugging).
124
- */
125
- export declare function cloneSnapshot(snapshot: SessionSnapshot): SessionSnapshot;
126
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hibernation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC;IAEX,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IAEtC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAElD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAgBjB;AAMD,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,yBAAyB;IACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,oCAAoC;IACpC,iBAAiB,EAAE,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,GAAG,aAAa,CA4BzF;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,eAAe,CAapE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAExE"}