@autonome-research/thread-phase 3.2.2 → 3.4.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/dist/agent/index.d.ts +1 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +1 -1
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/parse-json.d.ts +16 -0
- package/dist/agent/parse-json.d.ts.map +1 -1
- package/dist/agent/parse-json.js +82 -11
- package/dist/agent/parse-json.js.map +1 -1
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +16 -12
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent-runner.d.ts +1 -1
- package/dist/agent-runner.d.ts.map +1 -1
- package/dist/agent-runner.js +1 -1
- package/dist/agent-runner.js.map +1 -1
- package/dist/agents/serialize-error.d.ts +10 -1
- package/dist/agents/serialize-error.d.ts.map +1 -1
- package/dist/agents/serialize-error.js +42 -3
- package/dist/agents/serialize-error.js.map +1 -1
- package/dist/cache.d.ts +13 -2
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +36 -6
- package/dist/cache.js.map +1 -1
- package/dist/helpers/hook.d.ts +34 -2
- package/dist/helpers/hook.d.ts.map +1 -1
- package/dist/helpers/hook.js +72 -5
- package/dist/helpers/hook.js.map +1 -1
- package/dist/helpers/index.d.ts +11 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +11 -1
- package/dist/helpers/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internal/error-message.d.ts +20 -0
- package/dist/internal/error-message.d.ts.map +1 -0
- package/dist/internal/error-message.js +57 -0
- package/dist/internal/error-message.js.map +1 -0
- package/dist/internal/sleep.d.ts +17 -0
- package/dist/internal/sleep.d.ts.map +1 -0
- package/dist/internal/sleep.js +51 -0
- package/dist/internal/sleep.js.map +1 -0
- package/dist/messages.d.ts +11 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/orchestrator.d.ts +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +21 -2
- package/dist/orchestrator.js.map +1 -1
- package/dist/patterns/bounded-fanout-of.d.ts +2 -6
- package/dist/patterns/bounded-fanout-of.d.ts.map +1 -1
- package/dist/patterns/bounded-fanout-of.js +11 -8
- package/dist/patterns/bounded-fanout-of.js.map +1 -1
- package/dist/patterns/index.d.ts +22 -0
- package/dist/patterns/index.d.ts.map +1 -1
- package/dist/patterns/index.js +22 -0
- package/dist/patterns/index.js.map +1 -1
- package/dist/patterns/parallel-phases.d.ts +7 -2
- package/dist/patterns/parallel-phases.d.ts.map +1 -1
- package/dist/patterns/parallel-phases.js +70 -16
- package/dist/patterns/parallel-phases.js.map +1 -1
- package/dist/patterns/sub-pipeline.d.ts.map +1 -1
- package/dist/patterns/sub-pipeline.js +10 -6
- package/dist/patterns/sub-pipeline.js.map +1 -1
- package/dist/patterns/with-retry.d.ts.map +1 -1
- package/dist/patterns/with-retry.js +5 -2
- package/dist/patterns/with-retry.js.map +1 -1
- package/dist/phase.d.ts +3 -0
- package/dist/phase.d.ts.map +1 -1
- package/dist/phase.js.map +1 -1
- package/dist/session/sse.d.ts +5 -1
- package/dist/session/sse.d.ts.map +1 -1
- package/dist/session/sse.js +56 -16
- package/dist/session/sse.js.map +1 -1
- package/dist/tools/registry.d.ts +6 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +2 -2
- package/dist/tools/registry.js.map +1 -1
- package/dist/triggers/run-trigger.d.ts.map +1 -1
- package/dist/triggers/run-trigger.js +4 -1
- package/dist/triggers/run-trigger.js.map +1 -1
- package/dist/triggers/timer-trigger.d.ts +13 -1
- package/dist/triggers/timer-trigger.d.ts.map +1 -1
- package/dist/triggers/timer-trigger.js +35 -3
- package/dist/triggers/timer-trigger.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE/E
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE/E;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,CACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,KAClD,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB,MAAM,WAAW,mBAAmB;IAClC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AASD,qBAAa,YAAa,YAAW,YAAY;IAC/C,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,GAAE,mBAAwB;IAI7C;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAShE,yFAAyF;IACzF,WAAW,IAAI,cAAc,EAAE;IAI/B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpB,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC;CA+BvB"}
|
package/dist/tools/registry.js
CHANGED
|
@@ -40,7 +40,7 @@ export class ToolRegistry {
|
|
|
40
40
|
has(name) {
|
|
41
41
|
return this.tools.has(name);
|
|
42
42
|
}
|
|
43
|
-
async execute(name, toolCallId, args) {
|
|
43
|
+
async execute(name, toolCallId, args, signal) {
|
|
44
44
|
const entry = this.tools.get(name);
|
|
45
45
|
if (!entry) {
|
|
46
46
|
return {
|
|
@@ -62,7 +62,7 @@ export class ToolRegistry {
|
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
64
|
try {
|
|
65
|
-
const content = await entry.handler(args, { toolCallId });
|
|
65
|
+
const content = await entry.handler(args, { toolCallId, signal });
|
|
66
66
|
return { toolCallId, content };
|
|
67
67
|
}
|
|
68
68
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,GAAG,EAAyB,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/run-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,iBAAiB,CAAC,MAAM,EAAE,IAAI,SAAS,mBAAmB;IACzE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qDAAqD;IACrD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACvD,2EAA2E;IAC3E,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,+EAA+E;IAC/E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAQD,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,SAAS,mBAAmB,EACjE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;IAC/D,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,GAAG,EAAE,IAAI,CAAC;CACX,EACD,OAAO,GAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAM,GAC5C,gBAAgB,
|
|
1
|
+
{"version":3,"file":"run-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/run-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,OAAO,KAAK,EACV,mBAAmB,EACnB,KAAK,EACN,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,iBAAiB,CAAC,MAAM,EAAE,IAAI,SAAS,mBAAmB;IACzE;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oFAAoF;IACpF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,qDAAqD;IACrD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACnE,6DAA6D;IAC7D,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9E;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACvD,2EAA2E;IAC3E,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,mGAAmG;IACnG,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,+EAA+E;IAC/E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC;CACzC;AAQD,wBAAgB,UAAU,CAAC,MAAM,EAAE,IAAI,SAAS,mBAAmB,EACjE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,CAAC,KAAK;IAC/D,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,GAAG,EAAE,IAAI,CAAC;CACX,EACD,OAAO,GAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAM,GAC5C,gBAAgB,CAkIlB"}
|
|
@@ -33,7 +33,10 @@
|
|
|
33
33
|
*/
|
|
34
34
|
import { runPipelineToSummary } from '../orchestrator.js';
|
|
35
35
|
export function runTrigger(trigger, pipelineFactory, options = {}) {
|
|
36
|
-
|
|
36
|
+
// Clamp to >=1: 0 or negative would deadlock the backpressure loop on an
|
|
37
|
+
// empty inflight map (Promise.race([]) never settles). Mirrors the clamp
|
|
38
|
+
// at bounded-fanout.ts:121.
|
|
39
|
+
const maxConcurrency = Math.max(1, options.maxConcurrency ?? 1);
|
|
37
40
|
const pipelineName = options.pipelineName ?? trigger.name;
|
|
38
41
|
const onError = options.onError ??
|
|
39
42
|
((event, err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-trigger.js","sourceRoot":"","sources":["../../src/triggers/run-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AA4D1D,MAAM,UAAU,UAAU,CACxB,OAAwB,EACxB,eAGC,EACD,UAA2C,EAAE;IAE7C,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"run-trigger.js","sourceRoot":"","sources":["../../src/triggers/run-trigger.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
* No cron expression support in core — keep the impl tiny. For cron, wrap
|
|
9
9
|
* a cron parser (e.g. `croner`) and produce events on its schedule;
|
|
10
10
|
* `examples/triggers/timer-with-cron.ts` shows the shape.
|
|
11
|
+
*
|
|
12
|
+
* Cancellation contract: `stop()` resolves immediately and aborts the
|
|
13
|
+
* trigger's internal `AbortSignal`. Any in-flight payload factory that
|
|
14
|
+
* accepts the signal can short-circuit. Even payloads that ignore the
|
|
15
|
+
* signal don't block `stop()` — `makeEvent` races the payload promise
|
|
16
|
+
* against the abort so `start()` returns promptly.
|
|
11
17
|
*/
|
|
12
18
|
import type { Trigger, TriggerEvent } from './types.js';
|
|
13
19
|
export interface TimerTriggerOptions<TInput = void> {
|
|
@@ -17,8 +23,12 @@ export interface TimerTriggerOptions<TInput = void> {
|
|
|
17
23
|
* Payload to attach to each event. Defaults to `undefined`. If a
|
|
18
24
|
* function, called each fire to produce a fresh payload (e.g. the
|
|
19
25
|
* current time, a counter, a snapshot from somewhere).
|
|
26
|
+
*
|
|
27
|
+
* Async factories receive the trigger's internal `AbortSignal` so they
|
|
28
|
+
* may honor `stop()` cooperatively. The signature `(signal?) => ...`
|
|
29
|
+
* keeps existing callers working unchanged.
|
|
20
30
|
*/
|
|
21
|
-
payload?: TInput | (() => TInput) | (() => Promise<TInput>);
|
|
31
|
+
payload?: TInput | ((signal?: AbortSignal) => TInput) | ((signal?: AbortSignal) => Promise<TInput>);
|
|
22
32
|
/**
|
|
23
33
|
* If true, fires immediately on `start()` before the first interval
|
|
24
34
|
* elapses. Default: false (first event arrives after one interval).
|
|
@@ -36,9 +46,11 @@ export declare class TimerTrigger<TInput = void> implements Trigger<TInput> {
|
|
|
36
46
|
private stopped;
|
|
37
47
|
private pendingTimer;
|
|
38
48
|
private notifyStop;
|
|
49
|
+
private readonly aborter;
|
|
39
50
|
constructor(options: TimerTriggerOptions<TInput>);
|
|
40
51
|
start(): AsyncGenerator<TriggerEvent<TInput>, void>;
|
|
41
52
|
stop(): Promise<void>;
|
|
53
|
+
private makeEventOrStop;
|
|
42
54
|
private makeEvent;
|
|
43
55
|
/** Returns true if the interval elapsed normally, false if stop() fired first. */
|
|
44
56
|
private waitOrStop;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/timer-trigger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"timer-trigger.d.ts","sourceRoot":"","sources":["../../src/triggers/timer-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,WAAW,mBAAmB,CAAC,MAAM,GAAG,IAAI;IAChD,+CAA+C;IAC/C,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,OAAO,CAAC,EACJ,MAAM,GACN,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,MAAM,CAAC,GAClC,CAAC,CAAC,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,YAAY,CAAC,MAAM,GAAG,IAAI,CAAE,YAAW,OAAO,CAAC,MAAM,CAAC;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAE1C,OAAO,CAAC,GAAG,CAAK;IAChB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA8C;IAClE,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAErC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC;IAOzC,KAAK,IAAI,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;IAmBpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAgBb,eAAe;YAaf,SAAS;IAevB,kFAAkF;IAClF,OAAO,CAAC,UAAU;CAUnB"}
|
|
@@ -8,7 +8,14 @@
|
|
|
8
8
|
* No cron expression support in core — keep the impl tiny. For cron, wrap
|
|
9
9
|
* a cron parser (e.g. `croner`) and produce events on its schedule;
|
|
10
10
|
* `examples/triggers/timer-with-cron.ts` shows the shape.
|
|
11
|
+
*
|
|
12
|
+
* Cancellation contract: `stop()` resolves immediately and aborts the
|
|
13
|
+
* trigger's internal `AbortSignal`. Any in-flight payload factory that
|
|
14
|
+
* accepts the signal can short-circuit. Even payloads that ignore the
|
|
15
|
+
* signal don't block `stop()` — `makeEvent` races the payload promise
|
|
16
|
+
* against the abort so `start()` returns promptly.
|
|
11
17
|
*/
|
|
18
|
+
const STOP_SENTINEL = Symbol('TimerTrigger.stop');
|
|
12
19
|
export class TimerTrigger {
|
|
13
20
|
name;
|
|
14
21
|
intervalMs;
|
|
@@ -18,6 +25,7 @@ export class TimerTrigger {
|
|
|
18
25
|
stopped = false;
|
|
19
26
|
pendingTimer = null;
|
|
20
27
|
notifyStop = null;
|
|
28
|
+
aborter = new AbortController();
|
|
21
29
|
constructor(options) {
|
|
22
30
|
this.intervalMs = options.intervalMs;
|
|
23
31
|
this.payload = options.payload;
|
|
@@ -28,7 +36,10 @@ export class TimerTrigger {
|
|
|
28
36
|
if (this.stopped)
|
|
29
37
|
return;
|
|
30
38
|
if (this.fireImmediately) {
|
|
31
|
-
|
|
39
|
+
const ev = await this.makeEventOrStop();
|
|
40
|
+
if (ev === STOP_SENTINEL)
|
|
41
|
+
return;
|
|
42
|
+
yield ev;
|
|
32
43
|
if (this.stopped)
|
|
33
44
|
return;
|
|
34
45
|
}
|
|
@@ -36,7 +47,10 @@ export class TimerTrigger {
|
|
|
36
47
|
const waited = await this.waitOrStop();
|
|
37
48
|
if (!waited)
|
|
38
49
|
return;
|
|
39
|
-
|
|
50
|
+
const ev = await this.makeEventOrStop();
|
|
51
|
+
if (ev === STOP_SENTINEL)
|
|
52
|
+
return;
|
|
53
|
+
yield ev;
|
|
40
54
|
}
|
|
41
55
|
}
|
|
42
56
|
async stop() {
|
|
@@ -49,10 +63,28 @@ export class TimerTrigger {
|
|
|
49
63
|
}
|
|
50
64
|
this.notifyStop?.();
|
|
51
65
|
this.notifyStop = null;
|
|
66
|
+
// Aborting unblocks makeEventOrStop's race and lets cooperative payload
|
|
67
|
+
// factories cancel any in-flight work they own.
|
|
68
|
+
if (!this.aborter.signal.aborted) {
|
|
69
|
+
this.aborter.abort('TimerTrigger.stop');
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async makeEventOrStop() {
|
|
73
|
+
const payloadPromise = this.makeEvent();
|
|
74
|
+
if (this.aborter.signal.aborted)
|
|
75
|
+
return STOP_SENTINEL;
|
|
76
|
+
const stopPromise = new Promise((resolve) => {
|
|
77
|
+
const onAbort = () => resolve(STOP_SENTINEL);
|
|
78
|
+
this.aborter.signal.addEventListener('abort', onAbort, { once: true });
|
|
79
|
+
});
|
|
80
|
+
const winner = await Promise.race([payloadPromise, stopPromise]);
|
|
81
|
+
// If stop won, drop the payload result on the floor (it may still resolve
|
|
82
|
+
// later, but no consumer is waiting and the trigger has shut down).
|
|
83
|
+
return winner;
|
|
52
84
|
}
|
|
53
85
|
async makeEvent() {
|
|
54
86
|
const input = typeof this.payload === 'function'
|
|
55
|
-
? await this.payload()
|
|
87
|
+
? await this.payload(this.aborter.signal)
|
|
56
88
|
: this.payload;
|
|
57
89
|
return {
|
|
58
90
|
id: ++this.seq,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timer-trigger.js","sourceRoot":"","sources":["../../src/triggers/timer-trigger.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"timer-trigger.js","sourceRoot":"","sources":["../../src/triggers/timer-trigger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@autonome-research/thread-phase",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.4.0",
|
|
4
4
|
"description": "TypeScript substrate for building automation workflows that coordinate AI agents. Phase ordering, typed shared state, persistence, fanout, event flow.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|