zeitlich 0.2.41 → 0.2.42

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 (119) hide show
  1. package/dist/{activities-qUflxmfS.d.cts → activities-Coafq5zr.d.cts} +2 -2
  2. package/dist/{activities-D_g13S3y.d.ts → activities-CrN-ghLo.d.ts} +2 -2
  3. package/dist/adapters/sandbox/daytona/index.cjs +4 -23
  4. package/dist/adapters/sandbox/daytona/index.cjs.map +1 -1
  5. package/dist/adapters/sandbox/daytona/index.d.cts +18 -86
  6. package/dist/adapters/sandbox/daytona/index.d.ts +18 -86
  7. package/dist/adapters/sandbox/daytona/index.js +4 -23
  8. package/dist/adapters/sandbox/daytona/index.js.map +1 -1
  9. package/dist/adapters/sandbox/daytona/workflow.cjs +1 -7
  10. package/dist/adapters/sandbox/daytona/workflow.cjs.map +1 -1
  11. package/dist/adapters/sandbox/daytona/workflow.d.cts +9 -2
  12. package/dist/adapters/sandbox/daytona/workflow.d.ts +9 -2
  13. package/dist/adapters/sandbox/daytona/workflow.js +1 -7
  14. package/dist/adapters/sandbox/daytona/workflow.js.map +1 -1
  15. package/dist/adapters/sandbox/e2b/index.cjs +9 -0
  16. package/dist/adapters/sandbox/e2b/index.cjs.map +1 -1
  17. package/dist/adapters/sandbox/e2b/index.d.cts +13 -5
  18. package/dist/adapters/sandbox/e2b/index.d.ts +13 -5
  19. package/dist/adapters/sandbox/e2b/index.js +9 -1
  20. package/dist/adapters/sandbox/e2b/index.js.map +1 -1
  21. package/dist/adapters/sandbox/e2b/workflow.cjs.map +1 -1
  22. package/dist/adapters/sandbox/e2b/workflow.d.cts +4 -2
  23. package/dist/adapters/sandbox/e2b/workflow.d.ts +4 -2
  24. package/dist/adapters/sandbox/e2b/workflow.js.map +1 -1
  25. package/dist/adapters/sandbox/inmemory/index.cjs +11 -0
  26. package/dist/adapters/sandbox/inmemory/index.cjs.map +1 -1
  27. package/dist/adapters/sandbox/inmemory/index.d.cts +11 -3
  28. package/dist/adapters/sandbox/inmemory/index.d.ts +11 -3
  29. package/dist/adapters/sandbox/inmemory/index.js +11 -1
  30. package/dist/adapters/sandbox/inmemory/index.js.map +1 -1
  31. package/dist/adapters/sandbox/inmemory/workflow.cjs.map +1 -1
  32. package/dist/adapters/sandbox/inmemory/workflow.d.cts +4 -2
  33. package/dist/adapters/sandbox/inmemory/workflow.d.ts +4 -2
  34. package/dist/adapters/sandbox/inmemory/workflow.js.map +1 -1
  35. package/dist/adapters/thread/anthropic/index.cjs.map +1 -1
  36. package/dist/adapters/thread/anthropic/index.d.cts +5 -5
  37. package/dist/adapters/thread/anthropic/index.d.ts +5 -5
  38. package/dist/adapters/thread/anthropic/index.js.map +1 -1
  39. package/dist/adapters/thread/anthropic/workflow.d.cts +5 -5
  40. package/dist/adapters/thread/anthropic/workflow.d.ts +5 -5
  41. package/dist/adapters/thread/google-genai/index.cjs.map +1 -1
  42. package/dist/adapters/thread/google-genai/index.d.cts +5 -5
  43. package/dist/adapters/thread/google-genai/index.d.ts +5 -5
  44. package/dist/adapters/thread/google-genai/index.js.map +1 -1
  45. package/dist/adapters/thread/google-genai/workflow.d.cts +5 -5
  46. package/dist/adapters/thread/google-genai/workflow.d.ts +5 -5
  47. package/dist/adapters/thread/langchain/index.cjs.map +1 -1
  48. package/dist/adapters/thread/langchain/index.d.cts +5 -5
  49. package/dist/adapters/thread/langchain/index.d.ts +5 -5
  50. package/dist/adapters/thread/langchain/index.js.map +1 -1
  51. package/dist/adapters/thread/langchain/workflow.d.cts +5 -5
  52. package/dist/adapters/thread/langchain/workflow.d.ts +5 -5
  53. package/dist/index.cjs +224 -70
  54. package/dist/index.cjs.map +1 -1
  55. package/dist/index.d.cts +66 -16
  56. package/dist/index.d.ts +66 -16
  57. package/dist/index.js +224 -70
  58. package/dist/index.js.map +1 -1
  59. package/dist/{proxy-D7mvDEO6.d.cts → proxy-Bf7uI-Hw.d.cts} +1 -1
  60. package/dist/{proxy-BbcgoXg1.d.ts → proxy-COqA95FW.d.ts} +1 -1
  61. package/dist/{thread-manager-CTXPCu9W.d.ts → thread-manager-BhkOyQ1I.d.ts} +2 -2
  62. package/dist/{thread-manager-Dqstsw4i.d.ts → thread-manager-Bi1XlbpJ.d.ts} +2 -2
  63. package/dist/{thread-manager-cLhDhRRc.d.cts → thread-manager-BsLO3Fgc.d.cts} +2 -2
  64. package/dist/{thread-manager-DrWfVjlj.d.cts → thread-manager-wRVVBFgj.d.cts} +2 -2
  65. package/dist/{types-CjF1_Idx.d.ts → types-BkX4HLzi.d.ts} +1 -1
  66. package/dist/{types-CdvcmXb6.d.cts → types-C66-BVBr.d.cts} +1 -1
  67. package/dist/types-CJ7tCdl6.d.cts +266 -0
  68. package/dist/types-CJ7tCdl6.d.ts +266 -0
  69. package/dist/{types-DjaQKUJx.d.cts → types-CdALEF3z.d.cts} +300 -20
  70. package/dist/{types-BqTmyH31.d.ts → types-ChAy_jSP.d.ts} +300 -20
  71. package/dist/types-CjY93AWZ.d.cts +84 -0
  72. package/dist/types-gVa5XCWD.d.ts +84 -0
  73. package/dist/{workflow-N1MNDoul.d.ts → workflow-BwT5EybR.d.ts} +7 -6
  74. package/dist/{workflow-CuqxgS6X.d.cts → workflow-DMmiaw6w.d.cts} +7 -6
  75. package/dist/workflow.cjs +99 -46
  76. package/dist/workflow.cjs.map +1 -1
  77. package/dist/workflow.d.cts +4 -4
  78. package/dist/workflow.d.ts +4 -4
  79. package/dist/workflow.js +99 -46
  80. package/dist/workflow.js.map +1 -1
  81. package/package.json +7 -32
  82. package/src/adapters/sandbox/daytona/index.ts +25 -48
  83. package/src/adapters/sandbox/daytona/proxy.ts +7 -8
  84. package/src/adapters/sandbox/e2b/index.ts +21 -6
  85. package/src/adapters/sandbox/e2b/proxy.ts +3 -2
  86. package/src/adapters/sandbox/inmemory/index.ts +21 -1
  87. package/src/adapters/sandbox/inmemory/proxy.ts +7 -3
  88. package/src/lib/activity.ts +5 -0
  89. package/src/lib/sandbox/capability-types.test.ts +859 -0
  90. package/src/lib/sandbox/index.ts +1 -0
  91. package/src/lib/sandbox/manager.ts +187 -31
  92. package/src/lib/sandbox/types.ts +189 -46
  93. package/src/lib/session/index.ts +1 -0
  94. package/src/lib/session/session.ts +97 -35
  95. package/src/lib/session/types.ts +181 -5
  96. package/src/lib/subagent/handler.ts +66 -43
  97. package/src/lib/subagent/types.ts +484 -16
  98. package/src/workflow.ts +3 -0
  99. package/tsup.config.ts +0 -4
  100. package/dist/adapters/sandbox/bedrock/index.cjs +0 -457
  101. package/dist/adapters/sandbox/bedrock/index.cjs.map +0 -1
  102. package/dist/adapters/sandbox/bedrock/index.d.cts +0 -25
  103. package/dist/adapters/sandbox/bedrock/index.d.ts +0 -25
  104. package/dist/adapters/sandbox/bedrock/index.js +0 -454
  105. package/dist/adapters/sandbox/bedrock/index.js.map +0 -1
  106. package/dist/adapters/sandbox/bedrock/workflow.cjs +0 -36
  107. package/dist/adapters/sandbox/bedrock/workflow.cjs.map +0 -1
  108. package/dist/adapters/sandbox/bedrock/workflow.d.cts +0 -29
  109. package/dist/adapters/sandbox/bedrock/workflow.d.ts +0 -29
  110. package/dist/adapters/sandbox/bedrock/workflow.js +0 -34
  111. package/dist/adapters/sandbox/bedrock/workflow.js.map +0 -1
  112. package/dist/types-DAsQ21Rt.d.ts +0 -74
  113. package/dist/types-lm8tMNJQ.d.cts +0 -74
  114. package/dist/types-yx0LzPGn.d.cts +0 -173
  115. package/dist/types-yx0LzPGn.d.ts +0 -173
  116. package/src/adapters/sandbox/bedrock/filesystem.ts +0 -340
  117. package/src/adapters/sandbox/bedrock/index.ts +0 -274
  118. package/src/adapters/sandbox/bedrock/proxy.ts +0 -59
  119. package/src/adapters/sandbox/bedrock/types.ts +0 -24
package/dist/workflow.cjs CHANGED
@@ -9,6 +9,16 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
9
  var z14__default = /*#__PURE__*/_interopDefault(z14);
10
10
 
11
11
  // src/lib/session/session.ts
12
+
13
+ // src/lib/session/types.ts
14
+ function resolveSessionLifecycle(init, shutdown) {
15
+ const resolvedInit = init ?? { mode: "new" };
16
+ const resolvedShutdown = shutdown ?? "destroy";
17
+ return {
18
+ mode: resolvedInit.mode,
19
+ shutdown: resolvedShutdown
20
+ };
21
+ }
12
22
  function createToolRouter(options) {
13
23
  const { appendToolResult } = options;
14
24
  const toolMap = /* @__PURE__ */ new Map();
@@ -437,6 +447,37 @@ function createSubagentTool(subagents) {
437
447
  schema
438
448
  };
439
449
  }
450
+
451
+ // src/lib/subagent/types.ts
452
+ function isSurvivalShutdown(s) {
453
+ return s === "pause" || s === "pause-until-parent-close" || s === "keep" || s === "keep-until-parent-close";
454
+ }
455
+ function resolveSubagentLifecycle(cfg, isLazyCreator) {
456
+ if (cfg.source !== "own") {
457
+ return {
458
+ shutdownOverride: cfg.shutdown,
459
+ mustSurvive: false
460
+ };
461
+ }
462
+ if (cfg.continuation === "snapshot") {
463
+ return {
464
+ shutdownOverride: "snapshot",
465
+ mustSurvive: false
466
+ };
467
+ }
468
+ const isLazy = cfg.init === "once";
469
+ const mustSurvive = isLazyCreator || cfg.continuation === "continue" || isLazy && cfg.continuation === "fork";
470
+ if (!mustSurvive) {
471
+ return { shutdownOverride: cfg.shutdown, mustSurvive: false };
472
+ }
473
+ if (isSurvivalShutdown(cfg.shutdown)) {
474
+ return { shutdownOverride: cfg.shutdown, mustSurvive };
475
+ }
476
+ return {
477
+ shutdownOverride: isLazyCreator ? "pause-until-parent-close" : "pause",
478
+ mustSurvive
479
+ };
480
+ }
440
481
  var childSandboxReadySignal = workflow.defineSignal("childSandboxReady");
441
482
 
442
483
  // src/lib/subagent/handler.ts
@@ -462,10 +503,18 @@ function resolveSandboxConfig(config) {
462
503
  }
463
504
  function createSubagentHandler(subagents) {
464
505
  const { taskQueue: parentTaskQueue } = workflow.workflowInfo();
465
- const agentSandboxOps = /* @__PURE__ */ new Map();
506
+ const agentDestroyOps = /* @__PURE__ */ new Map();
507
+ const agentDeleteSnapshotOps = /* @__PURE__ */ new Map();
466
508
  for (const cfg of subagents) {
467
- if (cfg.sandbox && cfg.sandbox !== "none") {
468
- agentSandboxOps.set(cfg.agentName, cfg.sandbox.proxy(cfg.agentName));
509
+ const cfgSandbox = cfg.sandbox;
510
+ if (!cfgSandbox || cfgSandbox === "none") continue;
511
+ if (cfgSandbox.continuation === "snapshot") {
512
+ const proxy = cfgSandbox.proxy(cfg.agentName);
513
+ agentDestroyOps.set(cfg.agentName, proxy);
514
+ agentDeleteSnapshotOps.set(cfg.agentName, proxy);
515
+ } else {
516
+ const proxy = cfgSandbox.proxy(cfg.agentName);
517
+ agentDestroyOps.set(cfg.agentName, proxy);
469
518
  }
470
519
  }
471
520
  const pendingDestroys = /* @__PURE__ */ new Map();
@@ -504,7 +553,7 @@ function createSubagentHandler(subagents) {
504
553
  const childWorkflowId = `${args.subagent}-${getShortId()}`;
505
554
  const { sandboxId: parentSandboxId } = context;
506
555
  const sandboxCfg = resolveSandboxConfig(config.sandbox);
507
- if (sandboxCfg.source !== "none" && !agentSandboxOps.has(config.agentName)) {
556
+ if (sandboxCfg.source !== "none" && !agentDestroyOps.has(config.agentName)) {
508
557
  throw workflow.ApplicationFailure.create({
509
558
  message: `Subagent "${config.agentName}" uses a sandbox but no \`sandbox.proxy\` is configured on its SubagentConfig`,
510
559
  nonRetryable: true
@@ -572,7 +621,6 @@ function createSubagentHandler(subagents) {
572
621
  if (baseSnap) {
573
622
  sandbox = { mode: "from-snapshot", snapshot: baseSnap };
574
623
  }
575
- sandboxShutdownOverride = "snapshot";
576
624
  } else if (sandboxCfg.source === "own") {
577
625
  const isLazy = sandboxCfg.init === "once";
578
626
  let baseSandboxId;
@@ -608,12 +656,10 @@ function createSubagentHandler(subagents) {
608
656
  sandboxId: baseSandboxId
609
657
  };
610
658
  }
611
- const userShutdown = sandboxCfg.shutdown;
612
- const alreadySurvives = userShutdown === "pause-until-parent-close" || userShutdown === "keep-until-parent-close" || userShutdown === "pause" || userShutdown === "keep";
613
- const mustSurvive = isLazyCreator || sandboxCfg.continuation === "continue" || isLazy && sandboxCfg.continuation === "fork";
614
- if (mustSurvive && !alreadySurvives) {
615
- sandboxShutdownOverride = isLazyCreator ? "pause-until-parent-close" : "pause";
616
- }
659
+ }
660
+ {
661
+ const lifecycle = resolveSubagentLifecycle(sandboxCfg, isLazyCreator);
662
+ sandboxShutdownOverride = lifecycle.shutdownOverride;
617
663
  }
618
664
  const workflowInput = {
619
665
  ...thread && { thread },
@@ -758,7 +804,7 @@ function createSubagentHandler(subagents) {
758
804
  pendingDestroys.clear();
759
805
  await Promise.all(
760
806
  entries.map(async ({ agentName, sandboxId }) => {
761
- const ops = agentSandboxOps.get(agentName);
807
+ const ops = agentDestroyOps.get(agentName);
762
808
  if (!ops) {
763
809
  workflow.log.warn(
764
810
  "Skipping sandbox destroy \u2014 no sandbox.proxy registered for agent",
@@ -788,7 +834,7 @@ function createSubagentHandler(subagents) {
788
834
  persistentBaseSnapshot.clear();
789
835
  await Promise.all(
790
836
  tagged.map(async ({ agentName, snapshot }) => {
791
- const ops = agentSandboxOps.get(agentName);
837
+ const ops = agentDeleteSnapshotOps.get(agentName);
792
838
  if (!ops) {
793
839
  workflow.log.warn(
794
840
  "Skipping snapshot delete \u2014 no sandbox.proxy registered for agent",
@@ -940,29 +986,31 @@ function collectSkillFiles(skills) {
940
986
  }
941
987
  return files;
942
988
  }
943
- async function createSession({
944
- agentName,
945
- maxTurns = 50,
946
- metadata = {},
947
- runAgent,
948
- threadOps,
949
- buildContextMessage,
950
- subagents,
951
- skills,
952
- tools = {},
953
- processToolsInParallel = true,
954
- hooks = {},
955
- appendSystemPrompt = true,
956
- threadKey,
957
- sandboxOps,
958
- thread: threadInit,
959
- sandbox: sandboxInit,
960
- sandboxShutdown = "destroy",
961
- onSandboxReady,
962
- onSessionExit,
963
- virtualFs: virtualFsConfig,
964
- virtualFsOps
965
- }) {
989
+ async function createSession(config) {
990
+ const {
991
+ agentName,
992
+ maxTurns = 50,
993
+ metadata = {},
994
+ runAgent,
995
+ threadOps,
996
+ buildContextMessage,
997
+ subagents,
998
+ skills,
999
+ tools = {},
1000
+ processToolsInParallel = true,
1001
+ hooks = {},
1002
+ appendSystemPrompt = true,
1003
+ threadKey,
1004
+ sandboxOps,
1005
+ thread: threadInit,
1006
+ sandbox: sandboxInit,
1007
+ sandboxShutdown,
1008
+ onSandboxReady,
1009
+ onSessionExit,
1010
+ virtualFs: virtualFsConfig,
1011
+ virtualFsOps
1012
+ } = config;
1013
+ const wideOps = () => sandboxOps;
966
1014
  const threadMode = threadInit?.mode ?? "new";
967
1015
  let threadId;
968
1016
  let sourceThreadId;
@@ -1046,7 +1094,12 @@ async function createSession({
1046
1094
  stateManager.run();
1047
1095
  }
1048
1096
  );
1049
- const sandboxMode = sandboxInit?.mode;
1097
+ const lifecycle = resolveSessionLifecycle(
1098
+ sandboxInit,
1099
+ sandboxShutdown
1100
+ );
1101
+ const sandboxMode = lifecycle.mode;
1102
+ const resolvedShutdown = lifecycle.shutdown;
1050
1103
  let sandboxId;
1051
1104
  let sandboxOwned = false;
1052
1105
  let baseSnapshot;
@@ -1069,8 +1122,8 @@ async function createSession({
1069
1122
  });
1070
1123
  }
1071
1124
  sandboxId = sandboxInit.sandboxId;
1072
- if (sandboxShutdown === "pause-until-parent-close") {
1073
- await sandboxOps.resumeSandbox(sandboxId);
1125
+ if (resolvedShutdown === "pause-until-parent-close") {
1126
+ await wideOps().resumeSandbox(sandboxId);
1074
1127
  }
1075
1128
  sandboxOwned = true;
1076
1129
  } else if (sandboxMode === "fork") {
@@ -1081,7 +1134,7 @@ async function createSession({
1081
1134
  });
1082
1135
  }
1083
1136
  const forkInit = sandboxInit;
1084
- sandboxId = await sandboxOps.forkSandbox(
1137
+ sandboxId = await wideOps().forkSandbox(
1085
1138
  forkInit.sandboxId,
1086
1139
  forkInit.options
1087
1140
  );
@@ -1094,7 +1147,7 @@ async function createSession({
1094
1147
  });
1095
1148
  }
1096
1149
  const restoreInit = sandboxInit;
1097
- sandboxId = await sandboxOps.restoreSandbox(
1150
+ sandboxId = await wideOps().restoreSandbox(
1098
1151
  restoreInit.snapshot,
1099
1152
  restoreInit.options
1100
1153
  );
@@ -1110,8 +1163,8 @@ async function createSession({
1110
1163
  freshlyCreated = true;
1111
1164
  }
1112
1165
  }
1113
- if (sandboxId && sandboxOwned && freshlyCreated && sandboxShutdown === "snapshot" && sandboxOps) {
1114
- baseSnapshot = await sandboxOps.snapshotSandbox(sandboxId);
1166
+ if (sandboxId && sandboxOwned && freshlyCreated && resolvedShutdown === "snapshot" && sandboxOps) {
1167
+ baseSnapshot = await wideOps().snapshotSandbox(sandboxId);
1115
1168
  }
1116
1169
  if (sandboxId && sandboxOwned && onSandboxReady) {
1117
1170
  onSandboxReady({
@@ -1312,19 +1365,19 @@ async function createSession({
1312
1365
  }
1313
1366
  await callSessionEnd(exitReason, stateManager.getTurns());
1314
1367
  if (sandboxOwned && sandboxId && sandboxOps) {
1315
- switch (sandboxShutdown) {
1368
+ switch (resolvedShutdown) {
1316
1369
  case "destroy":
1317
1370
  await sandboxOps.destroySandbox(sandboxId);
1318
1371
  break;
1319
1372
  case "pause":
1320
1373
  case "pause-until-parent-close":
1321
- await sandboxOps.pauseSandbox(sandboxId);
1374
+ await wideOps().pauseSandbox(sandboxId);
1322
1375
  break;
1323
1376
  case "keep":
1324
1377
  case "keep-until-parent-close":
1325
1378
  break;
1326
1379
  case "snapshot":
1327
- exitSnapshot = await sandboxOps.snapshotSandbox(sandboxId);
1380
+ exitSnapshot = await wideOps().snapshotSandbox(sandboxId);
1328
1381
  await sandboxOps.destroySandbox(sandboxId);
1329
1382
  break;
1330
1383
  }