zeitlich 0.2.15 → 0.2.17

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 (78) hide show
  1. package/README.md +125 -64
  2. package/dist/adapters/sandbox/daytona/index.cjs +52 -23
  3. package/dist/adapters/sandbox/daytona/index.cjs.map +1 -1
  4. package/dist/adapters/sandbox/daytona/index.d.cts +10 -2
  5. package/dist/adapters/sandbox/daytona/index.d.ts +10 -2
  6. package/dist/adapters/sandbox/daytona/index.js +52 -23
  7. package/dist/adapters/sandbox/daytona/index.js.map +1 -1
  8. package/dist/adapters/sandbox/inmemory/index.cjs +21 -16
  9. package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -1
  10. package/dist/adapters/sandbox/inmemory/index.d.cts +1 -1
  11. package/dist/adapters/sandbox/inmemory/index.d.ts +1 -1
  12. package/dist/adapters/sandbox/inmemory/index.js +21 -16
  13. package/dist/adapters/sandbox/inmemory/index.js.map +1 -1
  14. package/dist/adapters/sandbox/virtual/index.cjs +83 -38
  15. package/dist/adapters/sandbox/virtual/index.cjs.map +1 -1
  16. package/dist/adapters/sandbox/virtual/index.d.cts +6 -6
  17. package/dist/adapters/sandbox/virtual/index.d.ts +6 -6
  18. package/dist/adapters/sandbox/virtual/index.js +80 -38
  19. package/dist/adapters/sandbox/virtual/index.js.map +1 -1
  20. package/dist/adapters/thread/google-genai/index.d.cts +2 -2
  21. package/dist/adapters/thread/google-genai/index.d.ts +2 -2
  22. package/dist/adapters/thread/langchain/index.cjs +2 -2
  23. package/dist/adapters/thread/langchain/index.cjs.map +1 -1
  24. package/dist/adapters/thread/langchain/index.d.cts +2 -2
  25. package/dist/adapters/thread/langchain/index.d.ts +2 -2
  26. package/dist/adapters/thread/langchain/index.js +2 -2
  27. package/dist/adapters/thread/langchain/index.js.map +1 -1
  28. package/dist/index.cjs +102 -10
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.d.cts +6 -6
  31. package/dist/index.d.ts +6 -6
  32. package/dist/index.js +98 -11
  33. package/dist/index.js.map +1 -1
  34. package/dist/{types-CwwgQ_9H.d.ts → queries-BlC1I3DK.d.ts} +48 -3
  35. package/dist/{types-BVP87m_W.d.cts → queries-DlJ3jE48.d.cts} +48 -3
  36. package/dist/{types-CDubRtad.d.cts → types-BMRzfELQ.d.cts} +2 -0
  37. package/dist/{types-CDubRtad.d.ts → types-BMRzfELQ.d.ts} +2 -0
  38. package/dist/{types-Dje1TdH6.d.cts → types-Bh-BbfCp.d.cts} +31 -12
  39. package/dist/{types-BWvIYK28.d.ts → types-NkiAxU4t.d.ts} +31 -12
  40. package/dist/workflow.cjs +102 -10
  41. package/dist/workflow.cjs.map +1 -1
  42. package/dist/workflow.d.cts +114 -40
  43. package/dist/workflow.d.ts +114 -40
  44. package/dist/workflow.js +98 -11
  45. package/dist/workflow.js.map +1 -1
  46. package/package.json +1 -1
  47. package/src/adapters/sandbox/daytona/filesystem.ts +43 -19
  48. package/src/adapters/sandbox/daytona/index.ts +16 -3
  49. package/src/adapters/sandbox/daytona/types.ts +4 -0
  50. package/src/adapters/sandbox/inmemory/index.ts +22 -16
  51. package/src/adapters/sandbox/virtual/filesystem.ts +29 -31
  52. package/src/adapters/sandbox/virtual/index.ts +7 -3
  53. package/src/adapters/sandbox/virtual/provider.ts +5 -2
  54. package/src/adapters/sandbox/virtual/queries.ts +97 -0
  55. package/src/adapters/sandbox/virtual/types.ts +3 -0
  56. package/src/adapters/sandbox/virtual/with-virtual-sandbox.ts +4 -3
  57. package/src/adapters/thread/langchain/activities.ts +7 -5
  58. package/src/lib/sandbox/tree.integration.test.ts +153 -0
  59. package/src/lib/sandbox/types.ts +2 -0
  60. package/src/lib/session/session-edge-cases.integration.test.ts +962 -0
  61. package/src/lib/session/session.integration.test.ts +853 -0
  62. package/src/lib/session/session.ts +5 -4
  63. package/src/lib/skills/skills.integration.test.ts +308 -0
  64. package/src/lib/state/manager.integration.test.ts +342 -0
  65. package/src/lib/subagent/define.ts +34 -47
  66. package/src/lib/subagent/handler.ts +9 -6
  67. package/src/lib/subagent/index.ts +4 -1
  68. package/src/lib/subagent/subagent.integration.test.ts +573 -0
  69. package/src/lib/subagent/types.ts +40 -10
  70. package/src/lib/subagent/workflow.ts +114 -0
  71. package/src/lib/thread/id.test.ts +50 -0
  72. package/src/lib/tool-router/auto-append-sandbox.integration.test.ts +344 -0
  73. package/src/lib/tool-router/router-edge-cases.integration.test.ts +623 -0
  74. package/src/lib/tool-router/router.integration.test.ts +699 -0
  75. package/src/lib/types.test.ts +29 -0
  76. package/src/lib/workflow.test.ts +131 -0
  77. package/src/lib/workflow.ts +45 -0
  78. package/src/workflow.ts +12 -2
@@ -1,71 +1,58 @@
1
1
  import type { z } from "zod";
2
2
  import type {
3
3
  SubagentConfig,
4
- SubagentHandlerResponse,
4
+ SubagentDefinition,
5
5
  SubagentHooks,
6
+ SubagentWorkflow,
6
7
  } from "./types";
7
8
  import type { SubagentArgs } from "./tool";
8
9
 
9
10
  /**
10
- * Identity function that provides full type inference for subagent configurations.
11
- * Verifies the workflow function's input parameters match the configured context,
12
- * and properly types the lifecycle hooks with Task tool args and inferred result type.
11
+ * Creates a `SubagentConfig` from a `SubagentDefinition` (returned by `defineSubagentWorkflow`).
12
+ * Metadata (name, description, resultSchema) is read from the definition — only configure
13
+ * what's specific to this usage in the parent workflow.
13
14
  *
14
15
  * @example
15
16
  * ```ts
16
- * // With typed context workflow must accept { prompt, context }
17
- * const researcher = defineSubagent({
18
- * name: "researcher",
19
- * description: "Researches topics",
20
- * workflow: researcherWorkflow, // (input: { prompt: string; context: { apiKey: string } }) => Promise<...>
21
- * context: { apiKey: "..." },
22
- * resultSchema: z.object({ findings: z.string() }),
17
+ * // Minimalall metadata comes from the definition
18
+ * export const researcher = defineSubagent(researcherWorkflow);
19
+ *
20
+ * // With parent-specific overrides
21
+ * export const researcher = defineSubagent(researcherWorkflow, {
22
+ * allowThreadContinuation: true,
23
+ * sandbox: "own",
23
24
  * hooks: {
24
- * onPostExecution: ({ result }) => {
25
- * // result is typed as { findings: string }
26
- * },
25
+ * onPostExecution: ({ result }) => console.log(result),
27
26
  * },
28
27
  * });
29
28
  *
30
- * // Without context — workflow only needs { prompt }
31
- * const writer = defineSubagent({
32
- * name: "writer",
33
- * description: "Writes content",
34
- * workflow: writerWorkflow, // (input: { prompt: string }) => Promise<...>
35
- * resultSchema: z.object({ content: z.string() }),
29
+ * // With typed context
30
+ * export const researcher = defineSubagent(researcherWorkflow, {
31
+ * context: { apiKey: "..." },
36
32
  * });
37
33
  * ```
38
34
  */
39
- // With context — verifies workflow accepts { prompt, context: TContext }
40
35
  export function defineSubagent<
41
36
  TResult extends z.ZodType = z.ZodType,
42
37
  TContext extends Record<string, unknown> = Record<string, unknown>,
43
38
  >(
44
- config: Omit<SubagentConfig<TResult>, "hooks" | "workflow" | "context"> & {
45
- workflow:
46
- | string
47
- | ((input: {
48
- prompt: string;
49
- previousThreadId?: string;
50
- context: TContext;
51
- }) => Promise<SubagentHandlerResponse<z.infer<TResult> | null>>);
52
- context: TContext;
53
- hooks?: SubagentHooks<SubagentArgs, z.infer<TResult>>;
54
- }
55
- ): SubagentConfig<TResult>;
56
- // Without context — verifies workflow accepts { prompt }
57
- export function defineSubagent<TResult extends z.ZodType = z.ZodType>(
58
- config: Omit<SubagentConfig<TResult>, "hooks" | "workflow"> & {
59
- workflow:
60
- | string
61
- | ((input: {
62
- prompt: string;
63
- previousThreadId?: string;
64
- }) => Promise<SubagentHandlerResponse<z.infer<TResult> | null>>);
39
+ definition: SubagentDefinition<TResult, TContext>,
40
+ overrides?: {
41
+ context?: TContext;
65
42
  hooks?: SubagentHooks<SubagentArgs, z.infer<TResult>>;
66
- }
67
- ): SubagentConfig<TResult>;
68
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
- export function defineSubagent(config: any): SubagentConfig {
70
- return config;
43
+ enabled?: boolean;
44
+ taskQueue?: string;
45
+ allowThreadContinuation?: boolean;
46
+ sandbox?: "inherit" | "own";
47
+ },
48
+ ): SubagentConfig<TResult> {
49
+ return {
50
+ agentName: definition.agentName,
51
+ description: definition.description,
52
+ workflow: definition as SubagentWorkflow<TResult>,
53
+ ...(definition.resultSchema !== undefined && {
54
+ resultSchema: definition.resultSchema,
55
+ }),
56
+ ...overrides,
57
+ } as SubagentConfig<TResult>;
71
58
  }
@@ -5,7 +5,7 @@ import type { ToolMessageContent } from "../types";
5
5
  import type {
6
6
  InferSubagentResult,
7
7
  SubagentConfig,
8
- SubagentInput,
8
+ SubagentWorkflowInput,
9
9
  } from "./types";
10
10
  import type { SubagentArgs } from "./tool";
11
11
  import type { z } from "zod";
@@ -38,18 +38,21 @@ export function createSubagentHandler<
38
38
  const { sandboxId: parentSandboxId } = context;
39
39
  const inheritSandbox = config.sandbox !== "own" && !!parentSandboxId;
40
40
 
41
- const input: SubagentInput = {
42
- prompt: args.prompt,
43
- ...(config.context && { context: config.context }),
41
+ const workflowInput: SubagentWorkflowInput = {
44
42
  ...(args.threadId &&
45
43
  args.threadId !== null &&
46
- config.allowThreadContinuation && { previousThreadId: args.threadId }),
44
+ config.allowThreadContinuation && {
45
+ previousThreadId: args.threadId,
46
+ }),
47
47
  ...(inheritSandbox && { sandboxId: parentSandboxId }),
48
48
  };
49
49
 
50
50
  const childOpts = {
51
51
  workflowId: childWorkflowId,
52
- args: [input] as const,
52
+ args:
53
+ config.context === undefined
54
+ ? ([args.prompt, workflowInput] as const)
55
+ : ([args.prompt, workflowInput, config.context] as const),
53
56
  taskQueue: config.taskQueue ?? parentTaskQueue,
54
57
  };
55
58
 
@@ -1,13 +1,16 @@
1
1
  export type {
2
2
  SubagentConfig,
3
+ SubagentDefinition,
3
4
  SubagentHooks,
4
- SubagentInput,
5
5
  SubagentHandlerResponse,
6
6
  SubagentWorkflow,
7
+ SubagentWorkflowInput,
8
+ SubagentSessionInput,
7
9
  InferSubagentResult,
8
10
  } from "./types";
9
11
  export { createSubagentTool, SUBAGENT_TOOL_NAME } from "./tool";
10
12
  export type { SubagentArgs } from "./tool";
11
13
  export { createSubagentHandler } from "./handler";
12
14
  export { defineSubagent } from "./define";
15
+ export { defineSubagentWorkflow } from "./workflow";
13
16
  export { buildSubagentRegistration } from "./register";