@usine/durable 0.1.0 → 0.2.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.
- package/LICENSE +661 -21
- package/README.md +10 -8
- package/dist/attempt/hubs.d.ts +18 -2
- package/dist/attempt/hubs.d.ts.map +1 -1
- package/dist/attempt/hubs.js +17 -8
- package/dist/attempt/hubs.js.map +1 -1
- package/dist/attempt/repair.d.ts +8 -2
- package/dist/attempt/repair.d.ts.map +1 -1
- package/dist/attempt/repair.js +28 -8
- package/dist/attempt/repair.js.map +1 -1
- package/dist/attempt/runtime.d.ts.map +1 -1
- package/dist/attempt/runtime.js +13 -6
- package/dist/attempt/runtime.js.map +1 -1
- package/dist/attempt/subagent.d.ts.map +1 -1
- package/dist/attempt/subagent.js +14 -9
- package/dist/attempt/subagent.js.map +1 -1
- package/dist/attempt-runtime.d.ts +6 -1
- package/dist/attempt-runtime.d.ts.map +1 -1
- package/dist/attempt-runtime.js +7 -2
- package/dist/attempt-runtime.js.map +1 -1
- package/dist/harness.d.ts +35 -21
- package/dist/harness.d.ts.map +1 -1
- package/dist/harness.js +203 -176
- package/dist/harness.js.map +1 -1
- package/dist/live.d.ts +2 -2
- package/dist/live.d.ts.map +1 -1
- package/dist/testing.d.ts +5 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +12 -1
- package/dist/testing.js.map +1 -1
- package/package.json +19 -19
package/dist/harness.js
CHANGED
|
@@ -1,223 +1,244 @@
|
|
|
1
1
|
import { BACKGROUND_CONTEXT, withAbortSignal } from "@earendil-works/chord/context";
|
|
2
|
-
import { createRegistry, Harness,
|
|
3
|
-
import { Context, Deferred, Effect, Layer, Option, Result,
|
|
2
|
+
import { createRegistry, Harness, SessionFailed, } from "@earendil-works/pi-durable";
|
|
3
|
+
import { Context, Deferred, Effect, Layer, Option, Result, Schema } from "effect";
|
|
4
4
|
/** A failed pi-durable call. */
|
|
5
5
|
export class DurableHarnessError extends Schema.TaggedError("@usine/durable/DurableHarnessError")("DurableHarnessError", {
|
|
6
6
|
/**
|
|
7
|
-
* A description of the failed operation, such as `open
|
|
8
|
-
* `use`.
|
|
7
|
+
* A description of the failed operation, such as `open the durable harness`, or the
|
|
8
|
+
* `operation` passed to `use`.
|
|
9
9
|
*/
|
|
10
10
|
operation: Schema.NonEmptyString,
|
|
11
|
-
/** The error message, or the
|
|
11
|
+
/** The error message, or the storage error's message if a storage error failed the harness. */
|
|
12
12
|
message: Schema.NonEmptyString,
|
|
13
13
|
cause: Schema.Defect(),
|
|
14
14
|
}) {
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* `STUCK_AGAIN_MILLIS`.
|
|
17
|
+
* A storage error that failed the pi-durable Session. pi-durable then aborts the harness's running
|
|
18
|
+
* tasks and closes it, and every later call on it fails.
|
|
20
19
|
*/
|
|
21
|
-
export class
|
|
20
|
+
export class DurableStorageFailed extends Schema.TaggedError("@usine/durable/DurableStorageFailed")("DurableStorageFailed", {
|
|
21
|
+
/** The failed harness's generation: 1 for the first open, and one more for each reopen. */
|
|
22
|
+
generation: Schema.Int,
|
|
23
|
+
/** The storage error's message. */
|
|
24
|
+
message: Schema.NonEmptyString,
|
|
25
|
+
cause: Schema.Defect(),
|
|
26
|
+
}) {
|
|
22
27
|
}
|
|
23
|
-
const POISONED_MESSAGE = "Session is poisoned";
|
|
24
28
|
/**
|
|
25
|
-
*
|
|
26
|
-
*
|
|
29
|
+
* The pi-durable Harness over one storage. After a storage error fails the harness, reopens the
|
|
30
|
+
* storage and resumes the tasks, unless `resume` hasn't completed yet. Stops if the reopen fails
|
|
31
|
+
* or if the reopened harness fails within a minute.
|
|
27
32
|
*/
|
|
28
|
-
|
|
33
|
+
export class DurableHarness extends Context.Service()("@usine/durable/DurableHarness") {
|
|
34
|
+
}
|
|
29
35
|
/** The interval in which repeats of a reported failure are counted and then logged once. */
|
|
30
36
|
const REPORT_LOG_INTERVAL_MILLIS = 5_000;
|
|
37
|
+
/** A reopened harness that fails within this time stops instead of reopening. */
|
|
38
|
+
const REFAIL_MILLIS = 60_000;
|
|
39
|
+
const RESUME_OPERATION = "resume the durable tasks";
|
|
40
|
+
const messageOf = (cause) => cause instanceof Error && cause.message.length > 0 ? cause.message : String(cause) || "unknown";
|
|
31
41
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
42
|
+
* Returns a `DurableHarnessError` with the message of `cause`. For a `SessionFailed`, uses the
|
|
43
|
+
* message of the storage error that failed the harness.
|
|
34
44
|
*/
|
|
35
|
-
export const
|
|
36
|
-
|
|
45
|
+
export const durableError = (operation, cause) => new DurableHarnessError({
|
|
46
|
+
operation,
|
|
47
|
+
message: messageOf(cause instanceof SessionFailed ? cause.cause : cause),
|
|
48
|
+
cause,
|
|
37
49
|
});
|
|
38
|
-
/**
|
|
39
|
-
* If a harness reopened after a stuck step gets stuck again within this time, it stops instead of
|
|
40
|
-
* reopening.
|
|
41
|
-
*/
|
|
42
|
-
const STUCK_AGAIN_MILLIS = 60_000;
|
|
43
|
-
const messageOf = (cause) => cause instanceof Error && cause.message.length > 0 ? cause.message : String(cause) || "unknown";
|
|
44
|
-
export const durableError = (operation, cause) => new DurableHarnessError({ operation, message: messageOf(cause), cause });
|
|
45
|
-
/** Returns `storage` with `onPoison` called on every commit failure except `StorageRejected`. */
|
|
46
|
-
const watchCommits = (storage, onPoison) => {
|
|
47
|
-
const commit = (writes, context) => storage.commit(writes, context).catch((cause) => {
|
|
48
|
-
if (!(cause instanceof StorageRejected))
|
|
49
|
-
onPoison(cause);
|
|
50
|
-
throw cause;
|
|
51
|
-
});
|
|
52
|
-
return new Proxy(storage, {
|
|
53
|
-
get: (target, property) => {
|
|
54
|
-
if (property === "commit")
|
|
55
|
-
return commit;
|
|
56
|
-
// SAFETY: the proxy only forwards Storage members, bound to the target because storage
|
|
57
|
-
// classes use private state.
|
|
58
|
-
const member = target[property];
|
|
59
|
-
return member instanceof Function ? member.bind(target) : member;
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
50
|
const make = Effect.fn("DurableHarness.make")(function* (options) {
|
|
64
51
|
const services = yield* Effect.context();
|
|
65
52
|
const fork = Effect.runForkWith(services);
|
|
66
|
-
const stuckStepReports = yield* StuckStepReports;
|
|
67
53
|
const scope = yield* Effect.scope;
|
|
68
54
|
const registry = createRegistry();
|
|
69
55
|
const listeners = new Set();
|
|
70
56
|
let resumed = Option.none();
|
|
71
|
-
let
|
|
72
|
-
let
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
57
|
+
let finalizing = false;
|
|
58
|
+
let stopped = false;
|
|
59
|
+
/**
|
|
60
|
+
* Set while the current harness has failed. Succeeds with the reopened harness, or fails with the
|
|
61
|
+
* storage failure if no reopen follows.
|
|
62
|
+
*/
|
|
63
|
+
let failed = Option.none();
|
|
64
|
+
const logRepeats = (generation, message, repeats) => {
|
|
65
|
+
fork(Effect.logWarning("pi-durable reported the same failure again", {
|
|
66
|
+
generation,
|
|
67
|
+
cause: message,
|
|
68
|
+
repeats: repeats.unlogged,
|
|
69
|
+
}));
|
|
70
|
+
repeats.unlogged = 0;
|
|
71
|
+
repeats.loggedAt = Date.now();
|
|
72
|
+
};
|
|
73
|
+
// Called synchronously from inside pi-durable.
|
|
74
|
+
function report(generation, cause) {
|
|
75
|
+
const message = messageOf(cause);
|
|
76
|
+
// pi-durable also reports the error that fails the Session; the failure handling logs it.
|
|
77
|
+
if (generation.failing) {
|
|
78
|
+
fork(Effect.logDebug("pi-durable reported a failure of a failed harness", {
|
|
79
|
+
generation: generation.number,
|
|
80
|
+
cause: message,
|
|
81
|
+
}));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const repeats = generation.reports.get(message);
|
|
85
|
+
if (repeats === undefined) {
|
|
86
|
+
generation.reports.set(message, { unlogged: 0, loggedAt: Date.now() });
|
|
87
|
+
fork(Effect.logWarning("pi-durable reported a failure that did not fail its caller", {
|
|
88
|
+
generation: generation.number,
|
|
89
|
+
cause: message,
|
|
90
|
+
}));
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
repeats.unlogged += 1;
|
|
94
|
+
if (Date.now() - repeats.loggedAt >= REPORT_LOG_INTERVAL_MILLIS) {
|
|
95
|
+
logRepeats(generation.number, message, repeats);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const open = Effect.fn("DurableHarness.open")(function* (number) {
|
|
99
|
+
yield* Effect.annotateCurrentSpan({ generation: number });
|
|
77
100
|
const storage = yield* options.openStorage;
|
|
78
|
-
const
|
|
101
|
+
const generation = {
|
|
102
|
+
number,
|
|
103
|
+
reports: new Map(),
|
|
104
|
+
closing: false,
|
|
105
|
+
failing: false,
|
|
106
|
+
handled: false,
|
|
107
|
+
};
|
|
79
108
|
const harness = yield* Effect.tryPromise({
|
|
80
|
-
try: () => Harness.open(
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
109
|
+
try: () => Harness.open(storage, { models: options.models, registry, onReport: (error) => report(generation, error) }, BACKGROUND_CONTEXT),
|
|
110
|
+
catch: (cause) => durableError("open the durable harness", cause),
|
|
111
|
+
});
|
|
112
|
+
const opened = { generation, harness, storage, openedAt: Date.now() };
|
|
113
|
+
harness.subscribeClose(() => {
|
|
114
|
+
if (generation.closing)
|
|
115
|
+
return;
|
|
116
|
+
generation.failing = true;
|
|
117
|
+
handleFailure(opened);
|
|
86
118
|
});
|
|
87
119
|
harness.subscribeCommits((publication) => {
|
|
88
|
-
for (const [message, repeats] of reports) {
|
|
120
|
+
for (const [message, repeats] of generation.reports) {
|
|
89
121
|
if (repeats.unlogged === 0)
|
|
90
|
-
reports.delete(message);
|
|
91
|
-
else
|
|
92
|
-
repeats.count = 0;
|
|
122
|
+
generation.reports.delete(message);
|
|
93
123
|
}
|
|
94
124
|
for (const listener of listeners)
|
|
95
125
|
listener.onCommit(publication);
|
|
96
126
|
});
|
|
97
127
|
if (Option.isSome(resumed)) {
|
|
98
|
-
yield* resumed.value(harness);
|
|
99
|
-
|
|
128
|
+
yield* resumed.value(harness, storage);
|
|
129
|
+
yield* Effect.try({
|
|
130
|
+
try: () => harness.resume(),
|
|
131
|
+
catch: (cause) => durableError(RESUME_OPERATION, cause),
|
|
132
|
+
});
|
|
100
133
|
}
|
|
101
134
|
yield* Effect.logInfo("Opened the durable harness", {
|
|
102
|
-
generation,
|
|
135
|
+
generation: number,
|
|
103
136
|
resumed: Option.isSome(resumed),
|
|
104
137
|
});
|
|
105
|
-
return
|
|
106
|
-
generation,
|
|
107
|
-
harness,
|
|
108
|
-
openedAt: Date.now(),
|
|
109
|
-
afterStuck,
|
|
110
|
-
reports,
|
|
111
|
-
};
|
|
138
|
+
return opened;
|
|
112
139
|
});
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
generation,
|
|
116
|
-
cause: message,
|
|
117
|
-
repeats: repeats.unlogged,
|
|
118
|
-
}));
|
|
119
|
-
repeats.unlogged = 0;
|
|
120
|
-
repeats.loggedAt = Date.now();
|
|
121
|
-
};
|
|
122
|
-
const close = Effect.fn("DurableHarness.close")(function* (opened) {
|
|
123
|
-
yield* Effect.annotateCurrentSpan({ generation: opened.generation });
|
|
124
|
-
for (const [message, repeats] of opened.reports) {
|
|
140
|
+
const flushReports = (generation) => {
|
|
141
|
+
for (const [message, repeats] of generation.reports) {
|
|
125
142
|
if (repeats.unlogged > 0)
|
|
126
|
-
logRepeats(
|
|
143
|
+
logRepeats(generation.number, message, repeats);
|
|
127
144
|
}
|
|
145
|
+
};
|
|
146
|
+
const close = Effect.fn("DurableHarness.close")(function* (opened) {
|
|
147
|
+
const generation = opened.generation;
|
|
148
|
+
yield* Effect.annotateCurrentSpan({ generation: generation.number });
|
|
149
|
+
generation.closing = true;
|
|
150
|
+
flushReports(generation);
|
|
128
151
|
yield* Effect.tryPromise({
|
|
129
152
|
try: () => opened.harness.close(BACKGROUND_CONTEXT),
|
|
130
153
|
catch: (cause) => durableError("close", cause),
|
|
131
154
|
}).pipe(Effect.tapError((error) => Effect.logError("Could not close the durable harness", {
|
|
132
|
-
generation:
|
|
155
|
+
generation: generation.number,
|
|
133
156
|
message: error.message,
|
|
134
157
|
})), Effect.ignore);
|
|
135
158
|
});
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
yield* Effect.logError(
|
|
139
|
-
|
|
140
|
-
: "pi-durable keeps retrying a step that cannot succeed; reopening the harness", { generation: previous.generation, cause: messageOf(cause) });
|
|
141
|
-
yield* close(previous);
|
|
142
|
-
const next = yield* open(previous.generation + 1, reason === "stuck").pipe(Effect.tapError((error) => Effect.logError("Could not reopen the durable harness; retrying", {
|
|
143
|
-
generation: previous.generation + 1,
|
|
144
|
-
message: error.message,
|
|
145
|
-
})), Effect.retry(Schedule.spaced("1 second")), Effect.orDie);
|
|
146
|
-
current = next;
|
|
147
|
-
reopening = Option.none();
|
|
148
|
-
yield* Deferred.succeed(ready, next);
|
|
149
|
-
for (const listener of listeners)
|
|
150
|
-
listener.onReopen();
|
|
151
|
-
yield* Effect.logInfo("Reopened the durable harness", { generation: next.generation, reason });
|
|
159
|
+
const stop = Effect.fn("DurableHarness.stop")(function* (failure, ready) {
|
|
160
|
+
stopped = true;
|
|
161
|
+
yield* Effect.logError("Stopped the durable harness: the storage failed again on reopening; durable calls fail until the orchestrator restarts", { generation: failure.generation, cause: failure.message });
|
|
162
|
+
yield* Deferred.fail(ready, failure);
|
|
152
163
|
});
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
164
|
+
const reopen = Effect.fn("DurableHarness.reopen")(function* (previous, ready) {
|
|
165
|
+
const number = previous.generation.number + 1;
|
|
166
|
+
yield* Effect.annotateCurrentSpan({ generation: number });
|
|
167
|
+
yield* Effect.logInfo("Reopening the durable harness", { generation: number });
|
|
168
|
+
const next = yield* open(number).pipe(Effect.result);
|
|
169
|
+
if (Result.isFailure(next)) {
|
|
170
|
+
return yield* stop(new DurableStorageFailed({
|
|
171
|
+
generation: number,
|
|
172
|
+
message: next.failure.message,
|
|
173
|
+
cause: next.failure,
|
|
174
|
+
}), ready);
|
|
175
|
+
}
|
|
176
|
+
current = next.success;
|
|
177
|
+
failed = Option.none();
|
|
178
|
+
yield* Deferred.succeed(ready, next.success);
|
|
179
|
+
yield* Effect.logInfo("Reopened the durable harness", { generation: number });
|
|
180
|
+
// A failure while opening found another harness current.
|
|
181
|
+
if (next.success.generation.failing)
|
|
182
|
+
handleFailure(next.success);
|
|
183
|
+
}, Effect.uninterruptible);
|
|
184
|
+
/** Waits until the failed harness has closed, then reopens it or completes `ready` with the failure. */
|
|
185
|
+
const recover = Effect.fn("DurableHarness.recover")(function* (opened, ready) {
|
|
186
|
+
const number = opened.generation.number;
|
|
187
|
+
yield* Effect.annotateCurrentSpan({ generation: number });
|
|
188
|
+
const end = yield* Effect.promise(() => opened.harness.closed);
|
|
189
|
+
flushReports(opened.generation);
|
|
190
|
+
const cause = end.reason === "failed" ? end.error : new Error("pi-durable closed the harness");
|
|
191
|
+
const failure = new DurableStorageFailed({
|
|
192
|
+
generation: number,
|
|
193
|
+
message: messageOf(cause),
|
|
194
|
+
cause,
|
|
195
|
+
});
|
|
196
|
+
yield* Effect.logError("A storage error failed the durable harness, and pi-durable closed it", {
|
|
197
|
+
generation: number,
|
|
198
|
+
cause: failure.message,
|
|
199
|
+
});
|
|
168
200
|
for (const listener of listeners)
|
|
169
|
-
listener.
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
// Close now, because no fiber runs while pi-durable retries in microtasks. The reopen or stop
|
|
179
|
-
// closes it again.
|
|
180
|
-
void target.harness.close(BACKGROUND_CONTEXT).catch(() => undefined);
|
|
181
|
-
if (target.afterStuck && Date.now() - target.openedAt < STUCK_AGAIN_MILLIS)
|
|
182
|
-
stop(target, cause);
|
|
183
|
-
else
|
|
184
|
-
requestReopen(generation, cause, "stuck");
|
|
185
|
-
}
|
|
186
|
-
// Called synchronously from inside pi-durable, possibly thousands of times a second.
|
|
187
|
-
function report(generation, reports, cause) {
|
|
188
|
-
const message = messageOf(cause);
|
|
189
|
-
const repeats = reports.get(message);
|
|
190
|
-
if (repeats === undefined) {
|
|
191
|
-
reports.set(message, { count: 1, unlogged: 0, loggedAt: Date.now() });
|
|
192
|
-
fork(Effect.logWarning("pi-durable reported a failure that did not fail its caller", {
|
|
193
|
-
generation,
|
|
194
|
-
cause: message,
|
|
195
|
-
}));
|
|
201
|
+
listener.onFailure(failure);
|
|
202
|
+
if (finalizing)
|
|
203
|
+
return yield* Deferred.fail(ready, failure);
|
|
204
|
+
if (Option.isNone(resumed)) {
|
|
205
|
+
yield* Effect.logError("The durable harness failed before its tasks resumed; it stays closed", {
|
|
206
|
+
generation: number,
|
|
207
|
+
cause: failure.message,
|
|
208
|
+
});
|
|
209
|
+
return yield* Deferred.fail(ready, failure);
|
|
196
210
|
}
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
repeats.unlogged += 1;
|
|
200
|
-
if (Date.now() - repeats.loggedAt >= REPORT_LOG_INTERVAL_MILLIS) {
|
|
201
|
-
logRepeats(generation, message, repeats);
|
|
202
|
-
}
|
|
211
|
+
if (number > 1 && Date.now() - opened.openedAt < REFAIL_MILLIS) {
|
|
212
|
+
return yield* stop(failure, ready);
|
|
203
213
|
}
|
|
204
|
-
|
|
205
|
-
requestReopen(generation, cause, "poisoned");
|
|
206
|
-
else if ((repeats?.count ?? 1) >= stuckStepReports)
|
|
207
|
-
stuck(generation, cause);
|
|
208
|
-
}
|
|
209
|
-
const unlessStopped = (operation) => Option.match(stopped, {
|
|
210
|
-
onNone: () => Effect.void,
|
|
211
|
-
onSome: (reason) => Effect.fail(durableError(operation, reason)),
|
|
214
|
+
yield* reopen(opened, ready);
|
|
212
215
|
});
|
|
213
|
-
|
|
216
|
+
let current = yield* open(1);
|
|
217
|
+
// Called synchronously from inside pi-durable; the recovery runs on its own fiber.
|
|
218
|
+
function handleFailure(opened) {
|
|
219
|
+
if (opened.generation.handled || opened !== current || Option.isSome(failed))
|
|
220
|
+
return;
|
|
221
|
+
opened.generation.handled = true;
|
|
222
|
+
const ready = Deferred.makeUnsafe();
|
|
223
|
+
failed = Option.some(ready);
|
|
224
|
+
fork(recover(opened, ready).pipe(Effect.forkIn(scope)));
|
|
225
|
+
}
|
|
226
|
+
/** Returns the open harness, waiting for a reopen. Fails if the harness stays closed. */
|
|
227
|
+
const openHarness = (operation) => Effect.suspend(() => Option.match(failed, {
|
|
214
228
|
onNone: () => Effect.succeed(current),
|
|
215
|
-
onSome: Deferred.await
|
|
229
|
+
onSome: (ready) => Deferred.await(ready).pipe(Effect.mapError((failure) => new DurableHarnessError({
|
|
230
|
+
operation,
|
|
231
|
+
message: stopped
|
|
232
|
+
? `The durable harness stopped after repeated storage errors: ${failure.message}. Restart the orchestrator.`
|
|
233
|
+
: failure.message,
|
|
234
|
+
cause: failure,
|
|
235
|
+
}))),
|
|
216
236
|
}));
|
|
237
|
+
/** Whether `cause` failed the call because a storage error failed `opened`'s harness. */
|
|
238
|
+
const failedHarness = (opened, cause) => opened.generation.failing || cause instanceof SessionFailed;
|
|
217
239
|
const use = (operation, run) => Effect.gen(function* () {
|
|
218
240
|
for (let attempt = 1;; attempt += 1) {
|
|
219
|
-
yield*
|
|
220
|
-
const target = yield* opened;
|
|
241
|
+
const target = yield* openHarness(operation);
|
|
221
242
|
const outcome = yield* Effect.tryPromise({
|
|
222
243
|
try: (signal) => run(target.harness, withAbortSignal(signal, BACKGROUND_CONTEXT)),
|
|
223
244
|
catch: (cause) => cause,
|
|
@@ -225,14 +246,12 @@ const make = Effect.fn("DurableHarness.make")(function* (options) {
|
|
|
225
246
|
if (Result.isSuccess(outcome))
|
|
226
247
|
return outcome.success;
|
|
227
248
|
const cause = outcome.failure;
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
if (attempt === 1 && replaced) {
|
|
233
|
-
yield* Effect.logInfo("Repeating a durable call on the reopened harness", {
|
|
249
|
+
if (!failedHarness(target, cause))
|
|
250
|
+
return yield* durableError(operation, cause);
|
|
251
|
+
if (attempt === 1) {
|
|
252
|
+
yield* Effect.logInfo("Repeating a durable call after its harness failed", {
|
|
234
253
|
operation,
|
|
235
|
-
generation: target.generation,
|
|
254
|
+
generation: target.generation.number,
|
|
236
255
|
});
|
|
237
256
|
continue;
|
|
238
257
|
}
|
|
@@ -240,24 +259,32 @@ const make = Effect.fn("DurableHarness.make")(function* (options) {
|
|
|
240
259
|
}
|
|
241
260
|
}).pipe(Effect.withSpan(`DurableHarness.use.${operation}`));
|
|
242
261
|
yield* Effect.addFinalizer(() => Effect.gen(function* () {
|
|
243
|
-
|
|
262
|
+
finalizing = true;
|
|
244
263
|
yield* close(current);
|
|
245
|
-
yield* Effect.logInfo("Closed the durable harness", {
|
|
264
|
+
yield* Effect.logInfo("Closed the durable harness", {
|
|
265
|
+
generation: current.generation.number,
|
|
266
|
+
});
|
|
246
267
|
}));
|
|
247
268
|
return DurableHarness.of({
|
|
248
269
|
models: options.models,
|
|
249
270
|
defaultModel: options.defaultModel,
|
|
250
271
|
install: (extension) => Effect.sync(() => registry.install(extension)).pipe(Effect.tap(() => Effect.logDebug("Installed a durable extension", { name: extension.name }))),
|
|
251
272
|
resume: Effect.fn("DurableHarness.resume")(function* (beforeResume) {
|
|
252
|
-
yield*
|
|
253
|
-
|
|
254
|
-
yield*
|
|
255
|
-
yield* Effect.try({
|
|
273
|
+
const target = yield* openHarness(RESUME_OPERATION);
|
|
274
|
+
yield* beforeResume(target.harness, target.storage);
|
|
275
|
+
const started = yield* Effect.try({
|
|
256
276
|
try: () => target.harness.resume(),
|
|
257
|
-
catch: (cause) =>
|
|
258
|
-
});
|
|
277
|
+
catch: (cause) => cause,
|
|
278
|
+
}).pipe(Effect.result);
|
|
279
|
+
if (Result.isFailure(started)) {
|
|
280
|
+
if (failedHarness(target, started.failure))
|
|
281
|
+
yield* openHarness(RESUME_OPERATION);
|
|
282
|
+
return yield* durableError(RESUME_OPERATION, started.failure);
|
|
283
|
+
}
|
|
259
284
|
resumed = Option.some(beforeResume);
|
|
260
|
-
yield* Effect.logInfo("Resumed durable task scheduling", {
|
|
285
|
+
yield* Effect.logInfo("Resumed durable task scheduling", {
|
|
286
|
+
generation: target.generation.number,
|
|
287
|
+
});
|
|
261
288
|
}),
|
|
262
289
|
use,
|
|
263
290
|
subscribe: (listener) => Effect.acquireRelease(Effect.sync(() => listeners.add(listener)), () => Effect.sync(() => listeners.delete(listener))).pipe(Effect.asVoid),
|
package/dist/harness.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"harness.js","sourceRoot":"","sources":["../src/harness.ts"],"names":[],"mappings":"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"}
|
package/dist/live.d.ts
CHANGED
|
@@ -6,10 +6,10 @@ import { Layer } from "effect";
|
|
|
6
6
|
*/
|
|
7
7
|
export declare const harnessLayer: (instanceDirectory: InstanceDirectory) => Layer.Layer<import("./harness.ts").DurableHarness, import("./harness.ts").DurableHarnessError, never>;
|
|
8
8
|
/** Provides the Claude Code, Codex, and Pi child backends, selected by the Agent's harness. */
|
|
9
|
-
export declare const childBackendLayer: Layer.Layer<import("@usine/agents/runtime").ChildBackend, never, import("effect/
|
|
9
|
+
export declare const childBackendLayer: Layer.Layer<import("@usine/agents/runtime").ChildBackend, never, import("effect/process/ChildProcessSpawner").ChildProcessSpawner | import("@usine/agents/runtime").ClaudeLoginLock>;
|
|
10
10
|
/**
|
|
11
11
|
* Provides the Node `AttemptRuntime` with the real child backends. Building it resumes every
|
|
12
12
|
* unfinished Attempt.
|
|
13
13
|
*/
|
|
14
|
-
export declare const layer: (instanceDirectory: InstanceDirectory) => Layer.Layer<import("./attempt-runtime.ts").AttemptRuntime | import("./harness.ts").DurableHarness, import("./harness.ts").DurableHarnessError, import("effect/
|
|
14
|
+
export declare const layer: (instanceDirectory: InstanceDirectory) => Layer.Layer<import("./attempt-runtime.ts").AttemptRuntime | import("./harness.ts").DurableHarness, import("./harness.ts").DurableHarnessError, import("effect/process/ChildProcessSpawner").ChildProcessSpawner | import("@usine/agents/runtime").ClaudeLoginLock>;
|
|
15
15
|
//# sourceMappingURL=live.d.ts.map
|
package/dist/live.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAsB,KAAK,EAAgB,MAAM,QAAQ,CAAC;AA+CjE;;;GAGG;AACH,eAAO,MAAM,YAAY,sBAAuB,iBAAiB,0GACc,CAAC;AAQhF,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../src/live.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAsB,KAAK,EAAgB,MAAM,QAAQ,CAAC;AA+CjE;;;GAGG;AACH,eAAO,MAAM,YAAY,sBAAuB,iBAAiB,0GACc,CAAC;AAQhF,+FAA+F;AAC/F,eAAO,MAAM,iBAAiB,sLAAiE,CAAC;AAEhG;;;GAGG;AACH,eAAO,MAAM,KAAK,sBAAuB,iBAAiB,uQAIvD,CAAC"}
|
package/dist/testing.d.ts
CHANGED
|
@@ -43,6 +43,11 @@ export interface StubChild {
|
|
|
43
43
|
* reports otherwise.
|
|
44
44
|
*/
|
|
45
45
|
readonly fail: (message: string) => Effect.Effect<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Ends without a result, as a Claude child whose output stream fails: the parent's `subagent`
|
|
48
|
+
* call fails with a `stream` `SessionOperationError` whose message is `message`.
|
|
49
|
+
*/
|
|
50
|
+
readonly crash: (message: string) => Effect.Effect<void>;
|
|
46
51
|
/** Completes when the parent's tool call interrupts the child (abort, cancel, or shutdown). */
|
|
47
52
|
readonly interrupted: Effect.Effect<void>;
|
|
48
53
|
readonly interventions: Effect.Effect<ReadonlyArray<AttemptChannel.OperatorAction>>;
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EACL,KAAK,gBAAgB,EAKtB,MAAM,sCAAsC,CAAC;AAG9C,OAAO,EAML,YAAY,EACZ,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createModels } from "@earendil-works/pi-ai/models";
|
|
2
2
|
import { fauxAssistantMessage, fauxProvider, fauxText, fauxToolCall, } from "@earendil-works/pi-ai/providers/faux";
|
|
3
3
|
import { openNodeSqliteStorage } from "@earendil-works/pi-durable/storage/sqlite/node";
|
|
4
|
-
import { AgentBlockedError, AgentQuestionError, AgentResultError, ChildBackend, reportText, SessionResult, } from "@usine/agents/runtime";
|
|
4
|
+
import { AgentBlockedError, AgentQuestionError, AgentResultError, ChildBackend, reportText, SessionOperationError, SessionResult, } from "@usine/agents/runtime";
|
|
5
5
|
import { ModelId } from "@usine/core/agent/brain";
|
|
6
6
|
import { AgentSessionId, ParentSession, SessionFinished, SessionIdle, SessionResumed, SessionStarted, TextOutput, } from "@usine/core/agent/session";
|
|
7
7
|
import * as AttemptChannel from "@usine/core/attempt/channel";
|
|
@@ -73,6 +73,16 @@ const launchStub = Effect.fn("StubChildBackend.launch")(function* (request) {
|
|
|
73
73
|
const block = (message) => report(new AgentBlockedError({ sessionId: Option.some(session.id), message }));
|
|
74
74
|
const ask = (question) => report(new AgentQuestionError({ sessionId: Option.some(session.id), message: question }));
|
|
75
75
|
const fail = (message) => report(new AgentResultError({ sessionId: Option.some(session.id), message }));
|
|
76
|
+
const crash = (message) => Effect.gen(function* () {
|
|
77
|
+
const error = new SessionOperationError({
|
|
78
|
+
operation: "stream",
|
|
79
|
+
sessionId: Option.some(session.id),
|
|
80
|
+
message,
|
|
81
|
+
cause: new Error("unexpected end of output"),
|
|
82
|
+
});
|
|
83
|
+
yield* Deferred.fail(result, error);
|
|
84
|
+
yield* Queue.fail(events, error);
|
|
85
|
+
});
|
|
76
86
|
// A message to an idle or paused child starts its next turn; a working child queues it.
|
|
77
87
|
const intervene = (action, onDelivery) => Effect.gen(function* () {
|
|
78
88
|
interventions.push(action);
|
|
@@ -115,6 +125,7 @@ const launchStub = Effect.fn("StubChildBackend.launch")(function* (request) {
|
|
|
115
125
|
block,
|
|
116
126
|
ask,
|
|
117
127
|
fail,
|
|
128
|
+
crash,
|
|
118
129
|
interrupted: Deferred.await(interrupted),
|
|
119
130
|
interventions: Effect.sync(() => [...interventions]),
|
|
120
131
|
};
|