@opengeni/worker-bundle 2.2.0 → 2.2.1-canary.36919050519001

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 (74) hide show
  1. package/dist/activities/agent-run-admission.d.ts +3 -1
  2. package/dist/activities/agent-turn/admission.d.ts +24 -3
  3. package/dist/activities/agent-turn/agent-build.d.ts +1 -0
  4. package/dist/activities/agent-turn/claude-usage-observer.d.ts +13 -1
  5. package/dist/activities/agent-turn/compaction-prep.d.ts +20 -0
  6. package/dist/activities/agent-turn/final-reply.d.ts +18 -0
  7. package/dist/activities/agent-turn/governance-model.d.ts +6 -0
  8. package/dist/activities/agent-turn/model-call-admission.d.ts +15 -0
  9. package/dist/activities/agent-turn/run-credentials.d.ts +2 -0
  10. package/dist/activities/agent-turn/sandbox-establish.d.ts +1 -0
  11. package/dist/activities/agent-turn/session-title.d.ts +3 -1
  12. package/dist/activities/agent-turn/stream-attempt.d.ts +1 -0
  13. package/dist/activities/agent-turn/turn-context.d.ts +1 -0
  14. package/dist/activities/automations.d.ts +3 -1
  15. package/dist/activities/browser-deadline-checkpoint.d.ts +29 -0
  16. package/dist/activities/goals.d.ts +8 -0
  17. package/dist/activities/run-credentials.d.ts +4 -2
  18. package/dist/activities/types.d.ts +1 -1
  19. package/dist/{activities-control-MHNA3CYV.js → activities-control-55ECL47G.js} +403 -116
  20. package/dist/activities-control-55ECL47G.js.map +1 -0
  21. package/dist/activities-control.d.ts +30 -0
  22. package/dist/{activities-turn-FQ5OO2WW.js → activities-turn-T7Y3BWYO.js} +678 -246
  23. package/dist/activities-turn-T7Y3BWYO.js.map +1 -0
  24. package/dist/activities.d.ts +30 -0
  25. package/dist/browser-deadline-checkpoint-contract.d.ts +2 -0
  26. package/dist/{chunk-RZAAGRFQ.js → chunk-OWNLATJL.js} +189 -80
  27. package/dist/chunk-OWNLATJL.js.map +1 -0
  28. package/dist/index.d.ts +15 -0
  29. package/dist/index.js +45 -23
  30. package/dist/index.js.map +1 -1
  31. package/dist/sandbox-resume.d.ts +4 -1
  32. package/dist/workflow-bundle.js +72 -10
  33. package/dist/workflows/browser-deadline-checkpoint.d.ts +9 -0
  34. package/dist/workflows.d.ts +1 -0
  35. package/package.json +21 -20
  36. package/src/activities/agent-run-admission.ts +17 -1
  37. package/src/activities/agent-turn/admission.ts +64 -1
  38. package/src/activities/agent-turn/agent-build.ts +24 -3
  39. package/src/activities/agent-turn/claim.ts +56 -14
  40. package/src/activities/agent-turn/claude-usage-observer.ts +33 -1
  41. package/src/activities/agent-turn/compaction-prep.ts +67 -16
  42. package/src/activities/agent-turn/errors.ts +55 -0
  43. package/src/activities/agent-turn/failure-settlement.ts +26 -6
  44. package/src/activities/agent-turn/final-reply.ts +46 -0
  45. package/src/activities/agent-turn/governance-model.ts +12 -0
  46. package/src/activities/agent-turn/model-call-admission.ts +94 -0
  47. package/src/activities/agent-turn/run-credentials.ts +15 -3
  48. package/src/activities/agent-turn/run.ts +43 -5
  49. package/src/activities/agent-turn/sandbox-establish.ts +9 -5
  50. package/src/activities/agent-turn/session-title.ts +8 -2
  51. package/src/activities/agent-turn/stream-attempt.ts +144 -38
  52. package/src/activities/agent-turn/tool-environment.ts +51 -39
  53. package/src/activities/agent-turn/turn-context.ts +1 -0
  54. package/src/activities/automations.ts +55 -3
  55. package/src/activities/browser-deadline-checkpoint.ts +279 -0
  56. package/src/activities/capabilities.ts +52 -14
  57. package/src/activities/goals.ts +67 -95
  58. package/src/activities/knowledge-indexing.ts +29 -0
  59. package/src/activities/open-suffix-resume.ts +2 -1
  60. package/src/activities/run-credentials.ts +22 -16
  61. package/src/activities/scheduled-tasks.ts +83 -13
  62. package/src/activities/types.ts +1 -0
  63. package/src/activities/workspace-credential-provider.ts +12 -0
  64. package/src/activities-control.ts +2 -0
  65. package/src/activities.ts +3 -0
  66. package/src/browser-deadline-checkpoint-contract.ts +5 -0
  67. package/src/index.ts +53 -25
  68. package/src/sandbox-resume.ts +23 -8
  69. package/src/sandbox-routing.ts +4 -2
  70. package/src/workflows/browser-deadline-checkpoint.ts +50 -0
  71. package/src/workflows.ts +4 -0
  72. package/dist/activities-control-MHNA3CYV.js.map +0 -1
  73. package/dist/activities-turn-FQ5OO2WW.js.map +0 -1
  74. package/dist/chunk-RZAAGRFQ.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -64,6 +64,21 @@ export declare function createDefaultWorkerActivities(role: OpenGeniWorkerRole,
64
64
  } | null>;
65
65
  reconcileCodexCapacityWait: (input: import("./activities.js").ReconcileCodexCapacityWaitInput) => Promise<import("./activities.js").ReconcileCodexCapacityWaitResult>;
66
66
  maintainBrowserStateArtifacts: () => Promise<import("./activities/browser-state-artifact-reaper.js").MaintainBrowserStateArtifactsResult>;
67
+ listDueBrowserCheckpoints(): Promise<{
68
+ accountId: string;
69
+ workspaceId: string;
70
+ sandboxGroupId: string;
71
+ leaseId: string;
72
+ leaseEpoch: number;
73
+ instanceId: string;
74
+ browserSessionId: string;
75
+ controllerGeneration: string;
76
+ }[]>;
77
+ checkpointBrowserBeforeDeadline(target: import("@opengeni/db").BrowserDeadlineCheckpointTarget): Promise<{
78
+ status: "skipped";
79
+ } | {
80
+ status: "suspended";
81
+ }>;
67
82
  settleAutomationRunFailure: (input: import("./activities.js").DispatchAutomationRunInput) => Promise<void>;
68
83
  dispatchAutomationRun: (input: import("./activities.js").DispatchAutomationRunInput) => Promise<import("./activities.js").DispatchAutomationRunResult>;
69
84
  indexDocument: (input: import("./activities.js").IndexDocumentInput) => Promise<{
package/dist/index.js CHANGED
@@ -768,6 +768,13 @@ function installWorkerUnhandledRejectionBoundary(runtimeProcess = process, repor
768
768
  return () => runtimeProcess.off("unhandledRejection", onUnhandledRejection);
769
769
  }
770
770
 
771
+ // src/browser-deadline-checkpoint-contract.ts
772
+ var BROWSER_DEADLINE_CHECKPOINT_SWEEP_ID = "opengeni-browser-deadline-checkpoints-v1";
773
+ var QUEUE_SUFFIX = "-browser-checkpoint-v1";
774
+ function browserDeadlineCheckpointTaskQueue(base) {
775
+ return base.endsWith(QUEUE_SUFFIX) ? base : `${base}${QUEUE_SUFFIX}`;
776
+ }
777
+
771
778
  // src/index.ts
772
779
  var SANDBOX_REAPER_SCHEDULE_ID = "opengeni-sandbox-lease-reaper";
773
780
  var KNOWLEDGE_INDEXING_SCHEDULE_ID = "opengeni-knowledge-indexing";
@@ -790,7 +797,7 @@ function temporalWorkflowExecutionNotFound(error) {
790
797
  return isGrpcServiceError(error) && error.code === 5;
791
798
  }
792
799
  async function createDefaultWorkerActivities(role, dependencies = {}) {
793
- return role === "control" ? (await import("./activities-control-MHNA3CYV.js")).createControlActivities(dependencies) : (await import("./activities-turn-FQ5OO2WW.js")).createTurnActivities(dependencies);
800
+ return role === "control" ? (await import("./activities-control-55ECL47G.js")).createControlActivities(dependencies) : (await import("./activities-turn-T7Y3BWYO.js")).createTurnActivities(dependencies);
794
801
  }
795
802
  function resolveOpenGeniWorkflowDefinition(moduleUrl = import.meta.url) {
796
803
  const modulePath = fileURLToPath(moduleUrl).replaceAll("\\", "/");
@@ -885,25 +892,34 @@ async function createOpenGeniWorker(options) {
885
892
  turnConcurrency?.admission?.finalizeStartupBaseline();
886
893
  return { worker, connection };
887
894
  }
895
+ const ownedWorkers = [worker];
888
896
  try {
889
- const sandboxLifecycleWorker = await Worker.create({
890
- ...sharedWorkerOptions,
891
- ...workflowDefinition,
892
- taskQueue: sandboxLifecycleTaskQueue(settings.temporalTaskQueue),
893
- reuseV8Context: true,
894
- workflowThreadPoolSize: 1,
895
- maxCachedWorkflows: CONTROL_WORKER_MAX_CACHED_WORKFLOWS,
896
- maxConcurrentWorkflowTaskExecutions: CONTROL_WORKER_MAX_CONCURRENT_WORKFLOW_TASKS,
897
- maxConcurrentActivityTaskExecutions: CONTROL_WORKER_MAX_CONCURRENT_ACTIVITIES
898
- });
897
+ for (const taskQueue of [
898
+ sandboxLifecycleTaskQueue(settings.temporalTaskQueue),
899
+ browserDeadlineCheckpointTaskQueue(settings.temporalTaskQueue)
900
+ ]) {
901
+ const lifecycleWorker = await Worker.create({
902
+ ...sharedWorkerOptions,
903
+ ...workflowDefinition,
904
+ taskQueue,
905
+ reuseV8Context: true,
906
+ workflowThreadPoolSize: 1,
907
+ maxCachedWorkflows: CONTROL_WORKER_MAX_CACHED_WORKFLOWS,
908
+ maxConcurrentWorkflowTaskExecutions: CONTROL_WORKER_MAX_CONCURRENT_WORKFLOW_TASKS,
909
+ maxConcurrentActivityTaskExecutions: CONTROL_WORKER_MAX_CONCURRENT_ACTIVITIES
910
+ });
911
+ ownedWorkers.push(lifecycleWorker);
912
+ }
899
913
  return {
900
- worker: combineWorkerRunTargets([worker, sandboxLifecycleWorker]),
914
+ worker: combineWorkerRunTargets(ownedWorkers),
901
915
  connection
902
916
  };
903
917
  } catch (error) {
904
- try {
905
- worker.shutdown();
906
- } catch {
918
+ for (const ownedWorker of ownedWorkers) {
919
+ try {
920
+ ownedWorker.shutdown();
921
+ } catch {
922
+ }
907
923
  }
908
924
  throw error;
909
925
  }
@@ -1012,20 +1028,26 @@ async function createWorkerWorkflowSignaler(settings, db) {
1012
1028
  return normalizeTurnTaskQueueStats(response.stats);
1013
1029
  },
1014
1030
  startSandboxReaperWorkflow: async () => {
1015
- try {
1016
- await temporal.workflow.start("sandboxReaperWorkflowV2", {
1031
+ const starts = await Promise.allSettled([
1032
+ temporal.workflow.start("sandboxReaperWorkflowV2", {
1017
1033
  taskQueue: sandboxLifecycleTaskQueue(settings.temporalTaskQueue),
1018
1034
  workflowId: SANDBOX_REAPER_V2_WORKFLOW_ID,
1019
1035
  workflowIdReusePolicy: "ALLOW_DUPLICATE",
1020
1036
  args: []
1021
- });
1022
- return "started";
1023
- } catch (error) {
1024
- if (error instanceof WorkflowExecutionAlreadyStartedError) {
1025
- return "already_running";
1037
+ }),
1038
+ temporal.workflow.start("browserDeadlineCheckpointSweepWorkflow", {
1039
+ taskQueue: browserDeadlineCheckpointTaskQueue(settings.temporalTaskQueue),
1040
+ workflowId: BROWSER_DEADLINE_CHECKPOINT_SWEEP_ID,
1041
+ workflowIdReusePolicy: "ALLOW_DUPLICATE",
1042
+ args: []
1043
+ })
1044
+ ]);
1045
+ for (const start of starts) {
1046
+ if (start.status === "rejected" && !(start.reason instanceof WorkflowExecutionAlreadyStartedError)) {
1047
+ throw start.reason;
1026
1048
  }
1027
- throw error;
1028
1049
  }
1050
+ return starts[0].status === "fulfilled" ? "started" : "already_running";
1029
1051
  },
1030
1052
  startVideoGenerationWorkflow: async ({ accountId, workspaceId, operationId }) => {
1031
1053
  try {