@atolis-hq/wake 0.3.39 → 0.3.41

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.
@@ -108,4 +108,4 @@ export function resolveWakeVersion(options = {}) {
108
108
  return `g${headHash.slice(0, 7)}`;
109
109
  return '0.1.0-dev';
110
110
  }
111
- export const wakeVersion = "g08d78eb";
111
+ export const wakeVersion = "g8fc911f";
@@ -4,7 +4,7 @@ import { WorkflowStatus } from '../../orchestration/index.js';
4
4
  import { WorkStatus } from '../../work/index.js';
5
5
  import { ControlStreamKind } from '../contracts/streams.js';
6
6
  import { DispatchPolicy } from '../domain/dispatch-policy.js';
7
- import { findUnresolvedTerminal, isExecutionFailureTerminal } from './execution-reconciliation.js';
7
+ import { findUnresolvedSucceededTerminal, findUnresolvedTerminal, isExecutionFailureTerminal, } from './execution-reconciliation.js';
8
8
  export function createAdvanceOnce(orchestration, execution, resources, clock, dependencies) {
9
9
  const runnerIneligibility = dependencies.runnerIneligibility ?? (async () => new Set());
10
10
  const isDispatchPaused = dependencies.isDispatchPaused ?? (async () => false);
@@ -84,7 +84,8 @@ export function createAdvanceOnce(orchestration, execution, resources, clock, de
84
84
  (options.workItemId === undefined || workflow.workItemId === options.workItemId)
85
85
  ? [{ workflow, activation: workflow.pendingActivation }]
86
86
  : []);
87
- const recovery = await findUnresolvedTerminal([...pending, ...blocked], execution);
87
+ const recovery = (await findUnresolvedTerminal(pending, execution)) ??
88
+ (await findUnresolvedSucceededTerminal(blocked, execution));
88
89
  if (recovery !== undefined) {
89
90
  if (await isDispatchPaused())
90
91
  return { kind: 'paused' };
@@ -8,6 +8,14 @@ export async function findUnresolvedTerminal(pending, execution) {
8
8
  }
9
9
  return undefined;
10
10
  }
11
+ export async function findUnresolvedSucceededTerminal(pending, execution) {
12
+ for (const item of pending) {
13
+ const run = (await execution.list(item.activation.activationId)).find((candidate) => candidate.status === RunStatus.Succeeded && candidate.outcome !== undefined);
14
+ if (run !== undefined && !item.workflow.acceptedOutcomes.includes(item.activation.activationId))
15
+ return { item, run };
16
+ }
17
+ return undefined;
18
+ }
11
19
  export function isExecutionFailureTerminal(status) {
12
20
  return (status === RunStatus.Failed || status === RunStatus.Cancelled || status === RunStatus.Ambiguous);
13
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atolis-hq/wake",
3
- "version": "0.3.39",
3
+ "version": "0.3.41",
4
4
  "description": "Local autonomous agent control plane for software development",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {