@adonis-agora/agent 0.84.0 → 0.86.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/CHANGELOG.md +19 -0
- package/dist/providers/agent_provider.d.ts.map +1 -1
- package/dist/providers/agent_provider.js +22 -0
- package/dist/providers/agent_provider.js.map +1 -1
- package/dist/src/agent-deps-factory.d.ts +6 -0
- package/dist/src/agent-deps-factory.d.ts.map +1 -1
- package/dist/src/agent-deps-factory.js +3 -0
- package/dist/src/agent-deps-factory.js.map +1 -1
- package/dist/src/agent-deps.d.ts +3 -0
- package/dist/src/agent-deps.d.ts.map +1 -1
- package/dist/src/agent-deps.js.map +1 -1
- package/dist/src/agent-loop.d.ts +9 -0
- package/dist/src/agent-loop.d.ts.map +1 -1
- package/dist/src/agent-loop.js +22 -4
- package/dist/src/agent-loop.js.map +1 -1
- package/dist/src/agent-service.d.ts +8 -0
- package/dist/src/agent-service.d.ts.map +1 -1
- package/dist/src/agent-service.js +4 -0
- package/dist/src/agent-service.js.map +1 -1
- package/dist/src/channels/adapters/evolution_api.d.ts.map +1 -1
- package/dist/src/channels/adapters/evolution_api.js +3 -1
- package/dist/src/channels/adapters/evolution_api.js.map +1 -1
- package/dist/src/channels/adapters/telegram.d.ts.map +1 -1
- package/dist/src/channels/adapters/telegram.js +3 -1
- package/dist/src/channels/adapters/telegram.js.map +1 -1
- package/dist/src/channels/adapters/whatsapp_cloud.d.ts.map +1 -1
- package/dist/src/channels/adapters/whatsapp_cloud.js +3 -1
- package/dist/src/channels/adapters/whatsapp_cloud.js.map +1 -1
- package/dist/src/channels/executor.d.ts +91 -8
- package/dist/src/channels/executor.d.ts.map +1 -1
- package/dist/src/channels/executor.js +144 -20
- package/dist/src/channels/executor.js.map +1 -1
- package/dist/src/channels/handler.d.ts +79 -1
- package/dist/src/channels/handler.d.ts.map +1 -1
- package/dist/src/channels/handler.js +468 -93
- package/dist/src/channels/handler.js.map +1 -1
- package/dist/src/channels/http.d.ts +6 -0
- package/dist/src/channels/http.d.ts.map +1 -1
- package/dist/src/channels/http.js +18 -0
- package/dist/src/channels/http.js.map +1 -1
- package/dist/src/channels/index.d.ts +2 -2
- package/dist/src/channels/index.d.ts.map +1 -1
- package/dist/src/channels/index.js.map +1 -1
- package/dist/src/channels/types.d.ts +8 -0
- package/dist/src/channels/types.d.ts.map +1 -1
- package/dist/src/chat-queue-service.d.ts.map +1 -1
- package/dist/src/chat-queue-service.js +9 -0
- package/dist/src/chat-queue-service.js.map +1 -1
- package/dist/src/define_config.d.ts +11 -0
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/durable/agent-run-context.d.ts +8 -0
- package/dist/src/durable/agent-run-context.d.ts.map +1 -1
- package/dist/src/durable/agent-run-context.js +13 -0
- package/dist/src/durable/agent-run-context.js.map +1 -1
- package/dist/src/index.d.ts +2 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/message-timestamps.d.ts +61 -0
- package/dist/src/message-timestamps.d.ts.map +1 -0
- package/dist/src/message-timestamps.js +82 -0
- package/dist/src/message-timestamps.js.map +1 -0
- package/dist/src/spi/agent-store.d.ts +2 -0
- package/dist/src/spi/agent-store.d.ts.map +1 -1
- package/dist/src/spi/agent-store.js.map +1 -1
- package/dist/src/spi/chat-queue.d.ts +8 -0
- package/dist/src/spi/chat-queue.d.ts.map +1 -1
- package/dist/src/spi/chat-queue.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts +6 -0
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +16 -0
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +10 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +29 -2
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-store.js +2 -0
- package/dist/src/testing/in-memory-store.js.map +1 -1
- package/dist/src/types.d.ts +12 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +9 -9
- package/skills/agent-setup/SKILL.md +6 -0
|
@@ -2,12 +2,12 @@ import type { Actor } from '../types.js';
|
|
|
2
2
|
import type { InboundMessage } from './types.js';
|
|
3
3
|
/**
|
|
4
4
|
* How a channel's inbound messages are processed: one {@link ChannelJob} per message, in order per
|
|
5
|
-
* conversation, each made of named phases
|
|
5
|
+
* conversation, each made of named phases.
|
|
6
6
|
*
|
|
7
7
|
* - {@link inlineExecutor}: in this process, after the `200`. A restart loses what was in flight.
|
|
8
8
|
* - {@link durableExecutor}: as `@adonis-agora/durable` runs — persisted before the `200`, one at a
|
|
9
|
-
* time per conversation (a singleton key), each phase a checkpointed step
|
|
10
|
-
* engine's recovery after a crash.
|
|
9
|
+
* time per conversation (a singleton key), each phase a checkpointed step (a dispatched one, when
|
|
10
|
+
* the engine has somewhere to serve it), and resumed by the engine's recovery after a crash.
|
|
11
11
|
*/
|
|
12
12
|
/** What a channel processes: a message, the rest of a run after its question, a question timing out. */
|
|
13
13
|
export type ChannelJob = {
|
|
@@ -15,6 +15,13 @@ export type ChannelJob = {
|
|
|
15
15
|
channel: string;
|
|
16
16
|
conversation: string;
|
|
17
17
|
message: InboundMessage;
|
|
18
|
+
/** When the webhook took it (epoch ms) — what a turn's queue wait is measured from. */
|
|
19
|
+
receivedAt?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Recorded in the conversation's burst log when it was taken (`coalesce` on): the job first
|
|
22
|
+
* looks for a burst to join, or to lead.
|
|
23
|
+
*/
|
|
24
|
+
coalesce?: boolean;
|
|
18
25
|
} | {
|
|
19
26
|
/** Read a run's stream (again) and deliver what was not delivered yet. */
|
|
20
27
|
kind: 'resume';
|
|
@@ -36,10 +43,40 @@ export type ChannelJob = {
|
|
|
36
43
|
threadId: string | null;
|
|
37
44
|
actor: Actor;
|
|
38
45
|
};
|
|
39
|
-
/**
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
/**
|
|
47
|
+
* The phases a job is made of. Each one is rebuilt from its (JSON) input — the job and what the
|
|
48
|
+
* phases before it returned — so it can run in any process that registered the channel.
|
|
49
|
+
*/
|
|
50
|
+
export type ChannelPhase = 'gather' | 'prepare' | 'act' | 'read' | 'timeout';
|
|
51
|
+
/** What one phase is handed: the job, and what the phases before it came to (all JSON). */
|
|
52
|
+
export interface ChannelPhaseInput {
|
|
53
|
+
job: ChannelJob;
|
|
54
|
+
/** `gather`: which look at the burst this is (0, 1, …). */
|
|
55
|
+
round?: number;
|
|
56
|
+
/** The messages the turn is made of, when it groups several (a burst). */
|
|
57
|
+
batch?: InboundMessage[];
|
|
58
|
+
/** What `prepare` came to. */
|
|
59
|
+
prepared?: unknown;
|
|
60
|
+
/** What `act` came to. */
|
|
61
|
+
turn?: unknown;
|
|
62
|
+
}
|
|
63
|
+
/** Runs one phase: checkpointed (durable — in this process, or dispatched) or just called (inline). */
|
|
64
|
+
export type ChannelPhaseRunner = <T>(phase: ChannelPhase, input: ChannelPhaseInput) => Promise<T>;
|
|
65
|
+
/** How a job runs its phases, and how it waits for a burst to end. */
|
|
66
|
+
export interface ChannelJobIo {
|
|
67
|
+
phase: ChannelPhaseRunner;
|
|
68
|
+
/** Wait until `at` (epoch ms): the durable engine's sleep, else a timer. */
|
|
69
|
+
sleepUntil(at: number): Promise<void>;
|
|
70
|
+
}
|
|
71
|
+
/** What a registered channel gives the executors: its job, and each of its phases on its own. */
|
|
72
|
+
export interface ChannelRunner {
|
|
73
|
+
run(job: ChannelJob, io: ChannelJobIo): Promise<void>;
|
|
74
|
+
phase(phase: ChannelPhase, input: ChannelPhaseInput): Promise<unknown>;
|
|
75
|
+
/** How long a dispatched phase may go without an answer before the engine gives up on it. */
|
|
76
|
+
stepTimeoutMs(phase: ChannelPhase): number;
|
|
77
|
+
/** `false` → this channel's phases always run as `localStep`s (`durableSteps: false`). */
|
|
78
|
+
dispatched?: boolean;
|
|
79
|
+
}
|
|
43
80
|
export interface ChannelExecutor {
|
|
44
81
|
readonly durable: boolean;
|
|
45
82
|
/**
|
|
@@ -54,8 +91,23 @@ export interface ChannelExecutor {
|
|
|
54
91
|
}
|
|
55
92
|
/** Ids a store / engine takes whatever the provider's message id looks like. */
|
|
56
93
|
export declare function jobId(...parts: string[]): string;
|
|
94
|
+
/** Each phase called right here, a wait a timer: what the inline executor runs a job with. */
|
|
95
|
+
export declare function inlineIo(runner: Pick<ChannelRunner, 'phase'>): ChannelJobIo;
|
|
57
96
|
/** In this process: a promise chain per conversation. Nothing survives a restart. */
|
|
58
97
|
export declare function inlineExecutor(run: (job: ChannelJob) => Promise<void>): ChannelExecutor;
|
|
98
|
+
/** What a dispatched step handler is given besides its input — a durable `StepLogger`'s slice. */
|
|
99
|
+
export interface ChannelStepLog {
|
|
100
|
+
/** Tell the engine the step is alive (rearms its timeout, where the transport carries beats). */
|
|
101
|
+
heartbeat?(progress?: unknown): void;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Where dispatched steps are served BY NAME — a durable `Transport` with `handle` (every built-in
|
|
105
|
+
* one has it: in-memory, BullMQ, database). A handler registered here runs in whatever process the
|
|
106
|
+
* transport hands the step to.
|
|
107
|
+
*/
|
|
108
|
+
export interface ChannelStepServer {
|
|
109
|
+
handle(name: string, fn: (input: unknown, log?: ChannelStepLog) => Promise<unknown>): void;
|
|
110
|
+
}
|
|
59
111
|
/**
|
|
60
112
|
* The slice of an `@adonis-agora/durable` `WorkflowEngine` the channels use — the engine itself
|
|
61
113
|
* satisfies it (`channels.handle(adapter, { durable: engine })`).
|
|
@@ -74,6 +126,13 @@ export interface ChannelWorkflowEngine {
|
|
|
74
126
|
timeoutMs?: number;
|
|
75
127
|
terminal?: boolean;
|
|
76
128
|
}): Promise<unknown>;
|
|
129
|
+
/**
|
|
130
|
+
* Serve a dispatched step by name — for an engine that serves its own steps. `@adonis-agora/durable`'s
|
|
131
|
+
* engine serves them on its transport instead: the channels find it in the app's container (or take
|
|
132
|
+
* it as `channels.handle(…, { durableSteps: transport })`). Neither → the phases run in the process
|
|
133
|
+
* that runs the workflow (`ctx.localStep`).
|
|
134
|
+
*/
|
|
135
|
+
handleStep?(name: string, fn: (input: unknown, log?: ChannelStepLog) => Promise<unknown>): void;
|
|
77
136
|
}
|
|
78
137
|
/** The slice of a durable `WorkflowCtx` a channel job uses. */
|
|
79
138
|
export interface ChannelWorkflowCtx {
|
|
@@ -82,17 +141,41 @@ export interface ChannelWorkflowCtx {
|
|
|
82
141
|
backoff?: 'fixed' | 'exp';
|
|
83
142
|
backoffMs?: number;
|
|
84
143
|
}): Promise<T>;
|
|
144
|
+
/**
|
|
145
|
+
* A dispatched step, routed to the handler served under `name` in any process. Absent → the
|
|
146
|
+
* phases run as `localStep`s.
|
|
147
|
+
*/
|
|
148
|
+
step?<T>(name: string, input: unknown, options?: {
|
|
149
|
+
retries?: number;
|
|
150
|
+
timeoutMs?: number;
|
|
151
|
+
pickupTimeoutMs?: number;
|
|
152
|
+
}): Promise<T>;
|
|
153
|
+
/** Suspend the run until `when` (durable). Absent → {@link sleep}, else a timer in this process. */
|
|
154
|
+
sleepUntil?(when: number | Date): Promise<void>;
|
|
155
|
+
/** Suspend the run for `duration` ms (durable). */
|
|
156
|
+
sleep?(duration: number): Promise<void>;
|
|
85
157
|
}
|
|
86
158
|
/** The workflow a message (or a resume) runs as: one at a time per channel conversation. */
|
|
87
159
|
export declare const CHANNEL_JOB_WORKFLOW = "agora.channel.job";
|
|
88
160
|
/** A question's timeout: runs on its own, so it never waits behind the conversation. */
|
|
89
161
|
export declare const CHANNEL_TIMER_WORKFLOW = "agora.channel.timer";
|
|
162
|
+
/** The dispatched step a phase runs as: `agora.channel.prepare`, `agora.channel.read`, … */
|
|
163
|
+
export declare const channelPhaseStep: (phase: ChannelPhase) => string;
|
|
164
|
+
/** A control-flow signal a workflow body surfaces (a suspend for a sleep, say) — not a failure. */
|
|
165
|
+
export declare const isControlFlowSignal: (error: unknown) => boolean;
|
|
90
166
|
/**
|
|
91
167
|
* Register the channel workflows on `engine`, once. Their body finds the job's channel with
|
|
92
168
|
* `runnerFor` — the handler `channels.handle()` registered under that name IN THIS PROCESS. A
|
|
93
169
|
* process that resumes channel jobs must have created the same handlers.
|
|
170
|
+
*
|
|
171
|
+
* - version `1`: every phase a `ctx.localStep`, in the process running the workflow — kept so runs
|
|
172
|
+
* started before an upgrade finish on the path they were recorded on;
|
|
173
|
+
* - version `2` (new runs): each phase a DISPATCHED step (`agora.channel.<phase>`) when `server` (or
|
|
174
|
+
* `engine.handleStep`) serves them — any process that registered the channel runs it, any
|
|
175
|
+
* process continues the workflow — else a `localStep`; and a burst (`coalesce`) waited for with
|
|
176
|
+
* the engine's durable sleep. Which of the two a run uses is recorded in its first step.
|
|
94
177
|
*/
|
|
95
|
-
export declare function registerChannelWorkflows(engine: ChannelWorkflowEngine, runnerFor: (channel: string) =>
|
|
178
|
+
export declare function registerChannelWorkflows(engine: ChannelWorkflowEngine, runnerFor: (channel: string) => ChannelRunner | undefined, server?: ChannelStepServer): void;
|
|
96
179
|
/** As durable runs on `engine` — see {@link registerChannelWorkflows}. */
|
|
97
180
|
export declare function durableExecutor(engine: ChannelWorkflowEngine): ChannelExecutor;
|
|
98
181
|
export interface ChannelRetryOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/channels/executor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;GAQG;AAEH,wGAAwG;AACxG,MAAM,MAAM,UAAU,GAClB;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/channels/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,20 @@ export function jobId(...parts) {
|
|
|
7
7
|
}
|
|
8
8
|
/** The order key: one channel conversation. */
|
|
9
9
|
const lockKey = (job) => `${job.channel}:${job.conversation}`;
|
|
10
|
+
/** The checkpoint name of a phase run in-process — `gather` takes one per look at the burst. */
|
|
11
|
+
const localStepName = (phase, input) => phase === 'gather' ? `gather:${input.round ?? 0}` : phase;
|
|
12
|
+
/** A timer, for a wait the durable engine cannot hold. */
|
|
13
|
+
const timerUntil = (at) => new Promise((resolve) => {
|
|
14
|
+
const timer = setTimeout(resolve, Math.max(0, at - Date.now()));
|
|
15
|
+
timer.unref?.();
|
|
16
|
+
});
|
|
17
|
+
/** Each phase called right here, a wait a timer: what the inline executor runs a job with. */
|
|
18
|
+
export function inlineIo(runner) {
|
|
19
|
+
return {
|
|
20
|
+
phase: (phase, input) => runner.phase(phase, input),
|
|
21
|
+
sleepUntil: timerUntil,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
10
24
|
/** In this process: a promise chain per conversation. Nothing survives a restart. */
|
|
11
25
|
export function inlineExecutor(run) {
|
|
12
26
|
const chains = new Map();
|
|
@@ -42,40 +56,148 @@ export function inlineExecutor(run) {
|
|
|
42
56
|
export const CHANNEL_JOB_WORKFLOW = 'agora.channel.job';
|
|
43
57
|
/** A question's timeout: runs on its own, so it never waits behind the conversation. */
|
|
44
58
|
export const CHANNEL_TIMER_WORKFLOW = 'agora.channel.timer';
|
|
45
|
-
/**
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
59
|
+
/** The dispatched step a phase runs as: `agora.channel.prepare`, `agora.channel.read`, … */
|
|
60
|
+
export const channelPhaseStep = (phase) => `agora.channel.${phase}`;
|
|
61
|
+
const PHASES = ['gather', 'prepare', 'act', 'read', 'timeout'];
|
|
62
|
+
/** `@adonis-agora/durable`'s stamp on its control-flow signals (a global symbol). */
|
|
63
|
+
const CONTROL_FLOW = Symbol.for('@agora/durable:control-flow');
|
|
64
|
+
/** A control-flow signal a workflow body surfaces (a suspend for a sleep, say) — not a failure. */
|
|
65
|
+
export const isControlFlowSignal = (error) => {
|
|
66
|
+
if (error === null || typeof error !== 'object')
|
|
67
|
+
return false;
|
|
68
|
+
const name = error.name;
|
|
69
|
+
return (name === 'WorkflowSuspended' ||
|
|
70
|
+
name === 'ContinueAsNew' ||
|
|
71
|
+
name === 'WorkflowBlocked' ||
|
|
72
|
+
CONTROL_FLOW in error);
|
|
49
73
|
};
|
|
50
74
|
const registeredOn = new WeakSet();
|
|
75
|
+
const servedOn = new WeakSet();
|
|
76
|
+
/** The step server each engine's channel phases are dispatched to, once one is known. */
|
|
77
|
+
const stepServers = new WeakMap();
|
|
78
|
+
/** How often a dispatched phase tells the engine it is still running. */
|
|
79
|
+
const HEARTBEAT_MS = 10_000;
|
|
80
|
+
/** How long a phase waits for its channel to be registered in the process it landed on. */
|
|
81
|
+
const REGISTRATION_WAIT_MS = 60_000;
|
|
82
|
+
const notRegistered = (channel) => new Error(`[@adonis-agora/agent] channel "${channel}" is not registered in this process — create its handler (channels.handle) at boot in every process that runs durable work`);
|
|
83
|
+
/** The channel's runner, waiting a minute for a handler created lazily (on its first webhook). */
|
|
84
|
+
async function runnerIn(runnerFor, channel) {
|
|
85
|
+
const deadline = Date.now() + REGISTRATION_WAIT_MS;
|
|
86
|
+
for (;;) {
|
|
87
|
+
const runner = runnerFor(channel);
|
|
88
|
+
if (runner !== undefined)
|
|
89
|
+
return runner;
|
|
90
|
+
if (Date.now() >= deadline)
|
|
91
|
+
throw notRegistered(channel);
|
|
92
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Serve every channel phase on `server`, once: the handler finds the channel named in the input in
|
|
97
|
+
* whatever process the step lands on, and runs that phase from its input alone.
|
|
98
|
+
*/
|
|
99
|
+
function servePhases(server, runnerFor) {
|
|
100
|
+
if (servedOn.has(server))
|
|
101
|
+
return;
|
|
102
|
+
servedOn.add(server);
|
|
103
|
+
for (const phase of PHASES) {
|
|
104
|
+
server.handle(channelPhaseStep(phase), async (input, log) => {
|
|
105
|
+
const { channel, ...rest } = input;
|
|
106
|
+
const runner = await runnerIn(runnerFor, channel);
|
|
107
|
+
const beat = setInterval(() => log?.heartbeat?.(), HEARTBEAT_MS);
|
|
108
|
+
beat.unref?.();
|
|
109
|
+
try {
|
|
110
|
+
return (await runner.phase(phase, rest)) ?? null;
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
clearInterval(beat);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/** The durable wait: `sleepUntil`, else `sleep`, else (an engine without either) a timer. */
|
|
119
|
+
const durableSleep = (ctx) => (at) => {
|
|
120
|
+
if (typeof ctx.sleepUntil === 'function')
|
|
121
|
+
return ctx.sleepUntil(at);
|
|
122
|
+
if (typeof ctx.sleep === 'function')
|
|
123
|
+
return ctx.sleep(Math.max(1, at - Date.now()));
|
|
124
|
+
return timerUntil(at);
|
|
125
|
+
};
|
|
51
126
|
/**
|
|
52
127
|
* Register the channel workflows on `engine`, once. Their body finds the job's channel with
|
|
53
128
|
* `runnerFor` — the handler `channels.handle()` registered under that name IN THIS PROCESS. A
|
|
54
129
|
* process that resumes channel jobs must have created the same handlers.
|
|
130
|
+
*
|
|
131
|
+
* - version `1`: every phase a `ctx.localStep`, in the process running the workflow — kept so runs
|
|
132
|
+
* started before an upgrade finish on the path they were recorded on;
|
|
133
|
+
* - version `2` (new runs): each phase a DISPATCHED step (`agora.channel.<phase>`) when `server` (or
|
|
134
|
+
* `engine.handleStep`) serves them — any process that registered the channel runs it, any
|
|
135
|
+
* process continues the workflow — else a `localStep`; and a burst (`coalesce`) waited for with
|
|
136
|
+
* the engine's durable sleep. Which of the two a run uses is recorded in its first step.
|
|
55
137
|
*/
|
|
56
|
-
export function registerChannelWorkflows(engine, runnerFor) {
|
|
138
|
+
export function registerChannelWorkflows(engine, runnerFor, server) {
|
|
139
|
+
const given = server ??
|
|
140
|
+
(typeof engine.handleStep === 'function'
|
|
141
|
+
? { handle: engine.handleStep.bind(engine) }
|
|
142
|
+
: undefined);
|
|
143
|
+
if (given !== undefined && !stepServers.has(engine)) {
|
|
144
|
+
stepServers.set(engine, given);
|
|
145
|
+
servePhases(given, runnerFor);
|
|
146
|
+
}
|
|
57
147
|
if (registeredOn.has(engine))
|
|
58
148
|
return;
|
|
59
149
|
registeredOn.add(engine);
|
|
60
|
-
|
|
150
|
+
/** The channel is registered here — given a minute for a handler created lazily. */
|
|
151
|
+
const channelStep = (ctx, job, value) => ctx.localStep('channel', async () => {
|
|
152
|
+
if (runnerFor(job.channel) === undefined)
|
|
153
|
+
throw notRegistered(job.channel);
|
|
154
|
+
return value();
|
|
155
|
+
}, { retries: 30, backoff: 'fixed', backoffMs: 2000 });
|
|
156
|
+
const localIo = (ctx, runner) => ({
|
|
157
|
+
phase: (phase, input) => ctx.localStep(localStepName(phase, input), () => runner.phase(phase, input)),
|
|
158
|
+
sleepUntil: durableSleep(ctx),
|
|
159
|
+
});
|
|
160
|
+
const dispatchedIo = (ctx, runner, channel) => ({
|
|
161
|
+
phase: (phase, input) => {
|
|
162
|
+
const step = ctx.step;
|
|
163
|
+
if (typeof step !== 'function')
|
|
164
|
+
throw new Error('[@adonis-agora/agent] ctx.step is gone');
|
|
165
|
+
// A liveness window per phase: a step whose job was lost (a worker gone, a broker that
|
|
166
|
+
// dropped it) is dispatched once more after it, then fails the job — never `pending` forever.
|
|
167
|
+
return step.call(ctx, channelPhaseStep(phase), { channel, ...input }, { timeoutMs: runner.stepTimeoutMs(phase), retries: 2 });
|
|
168
|
+
},
|
|
169
|
+
sleepUntil: durableSleep(ctx),
|
|
170
|
+
});
|
|
171
|
+
const v1 = async (ctx, input) => {
|
|
61
172
|
const job = input;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (runnerFor(job.channel) === undefined)
|
|
66
|
-
throw new Error(`[@adonis-agora/agent] channel "${job.channel}" is not registered in this process — create its handler (channels.handle) at boot in every process that runs durable work`);
|
|
67
|
-
return true;
|
|
68
|
-
}, { retries: 30, backoff: 'fixed', backoffMs: 2000 });
|
|
69
|
-
const run = runnerFor(job.channel);
|
|
70
|
-
if (run === undefined)
|
|
173
|
+
await channelStep(ctx, job, () => true);
|
|
174
|
+
const runner = runnerFor(job.channel);
|
|
175
|
+
if (runner === undefined)
|
|
71
176
|
return null;
|
|
72
|
-
|
|
177
|
+
// As version 1 always ran: no burst to wait for (its jobs never recorded one), phases local.
|
|
178
|
+
await runner.run(job.kind === 'message' ? { ...job, coalesce: false } : job, localIo(ctx, runner));
|
|
73
179
|
return null;
|
|
74
180
|
};
|
|
75
|
-
|
|
181
|
+
const v2 = async (ctx, input) => {
|
|
182
|
+
const job = input;
|
|
183
|
+
const mode = await channelStep(ctx, job, () => ({
|
|
184
|
+
dispatched: stepServers.has(engine) &&
|
|
185
|
+
typeof ctx.step === 'function' &&
|
|
186
|
+
runnerFor(job.channel)?.dispatched !== false,
|
|
187
|
+
}));
|
|
188
|
+
const runner = runnerFor(job.channel);
|
|
189
|
+
if (runner === undefined)
|
|
190
|
+
return null;
|
|
191
|
+
await runner.run(job, mode.dispatched === true ? dispatchedIo(ctx, runner, job.channel) : localIo(ctx, runner));
|
|
192
|
+
return null;
|
|
193
|
+
};
|
|
194
|
+
const singleton = {
|
|
76
195
|
singleton: { key: (input) => lockKey(input), limit: 1 },
|
|
77
|
-
}
|
|
78
|
-
engine.register(
|
|
196
|
+
};
|
|
197
|
+
engine.register(CHANNEL_JOB_WORKFLOW, '1', v1, singleton);
|
|
198
|
+
engine.register(CHANNEL_JOB_WORKFLOW, '2', v2, singleton);
|
|
199
|
+
engine.register(CHANNEL_TIMER_WORKFLOW, '1', v1);
|
|
200
|
+
engine.register(CHANNEL_TIMER_WORKFLOW, '2', v2);
|
|
79
201
|
}
|
|
80
202
|
/** As durable runs on `engine` — see {@link registerChannelWorkflows}. */
|
|
81
203
|
export function durableExecutor(engine) {
|
|
@@ -85,7 +207,9 @@ export function durableExecutor(engine) {
|
|
|
85
207
|
await engine.start(workflow, job, id, at === undefined ? undefined : { startAt: at });
|
|
86
208
|
}
|
|
87
209
|
catch (error) {
|
|
88
|
-
|
|
210
|
+
// A run a driving dispatcher suspended (or continued as new) while starting it: taken.
|
|
211
|
+
const name = error?.name;
|
|
212
|
+
if (name !== 'WorkflowSuspended' && name !== 'ContinueAsNew')
|
|
89
213
|
throw error;
|
|
90
214
|
}
|
|
91
215
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/channels/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AA0DjD,gFAAgF;AAChF,MAAM,UAAU,KAAK,CAAC,GAAG,KAAe;IACtC,MAAM,EAAE,GAAG,iBAAiB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,+CAA+C;AAC/C,MAAM,OAAO,GAAG,CAAC,GAAiD,EAAE,EAAE,CACpE,GAAG,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;AAEvC,qFAAqF;AACrF,MAAM,UAAU,cAAc,CAAC,GAAuC;IACpE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1C,MAAM,KAAK,GAAG,CAAC,IAAmB,EAAE,EAAE;QACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,CAAC,OAAO,CAAC,GAAG;YACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtB,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBACrB,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;oBAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACtB,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAC9F,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,OAAO,QAAQ,CAAC,IAAI,GAAG,CAAC;gBAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;QACpE,CAAC;KACF,CAAC;AACJ,CAAC;AA+BD,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AACxD,wFAAwF;AACxF,MAAM,CAAC,MAAM,sBAAsB,GAAG,qBAAqB,CAAC;AAE5D,6FAA6F;AAC7F,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;IAC7C,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,eAAe,CAAC;AAClE,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,IAAI,OAAO,EAAU,CAAC;AAE3C;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,MAA6B,EAC7B,SAA4D;IAE5D,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;QAAE,OAAO;IACrC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,IAAI,GAAG,KAAK,EAAE,GAAuB,EAAE,KAAc,EAAE,EAAE;QAC7D,MAAM,GAAG,GAAG,KAAmB,CAAC;QAChC,wFAAwF;QACxF,+DAA+D;QAC/D,MAAM,GAAG,CAAC,SAAS,CACjB,SAAS,EACT,KAAK,IAAI,EAAE;YACT,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS;gBACtC,MAAM,IAAI,KAAK,CACb,kCAAkC,GAAG,CAAC,OAAO,4HAA4H,CAC1K,CAAC;YACJ,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CACnD,CAAC;QACF,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE,IAAI,EAAE;QAC/C,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;KACtE,CAAC,CAAC;IACH,MAAM,CAAC,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,EAAE,QAAgB,EAAE,GAAe,EAAE,EAAU,EAAE,EAAW,EAAE,EAAE;QACjF,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;QAC/C,CAAC;IACH,CAAC,CAAC;IACF,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;YACnB,MAAM,KAAK,CAAC,oBAAoB,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;YACrB,MAAM,KAAK,CAAC,sBAAsB,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,CAAC,KAAK;YACT,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,GAAG,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;gBACzB,OAAO,CAAC,KAAK,EAAE,CAAC;gBAChB,MAAM,OAAO,CAAC,UAAU,CACtB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAClF,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAiBD,uDAAuD;AACvD,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,YAAY,oBAAoB;QAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;IAClE,MAAM,MAAM,GAAI,KAAqC,EAAE,MAAM,CAAC;IAC9D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAC;IAC9E,MAAM,IAAI,GAAI,KAAmC,EAAE,IAAI,CAAC;IACxD,OAAO,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,wBAAwB,CAAC;AAC3E,CAAC;AAED,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAoB,EACpB,OAAO,GAAwB,EAAE;IAEjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,YAAY,IAAI,MAAM,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,kBAAkB,CAAC;IAC1D,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAAE,MAAM,KAAK,CAAC;YAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/channels/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { type GenuiChannelBase, type GenuiChannels } from '../genui/channels.js'
|
|
|
7
7
|
import type { ActionProposal } from '../spi/action-proposal-store.js';
|
|
8
8
|
import type { AttachmentRef } from '../spi/attachment-staging.js';
|
|
9
9
|
import type { Actor, PageContext } from '../types.js';
|
|
10
|
-
import { type ChannelRetryOptions, type ChannelWorkflowEngine } from './executor.js';
|
|
10
|
+
import { type ChannelRetryOptions, type ChannelStepServer, type ChannelWorkflowEngine } from './executor.js';
|
|
11
11
|
import { type ChannelStore } from './store.js';
|
|
12
12
|
import { type ChannelComponent, type ChannelMediaRefusal, type ChannelTexts, type ChannelTextsOverrides } from './texts.js';
|
|
13
13
|
import type { ChannelAdapter, ChannelMediaFile, ChannelRequest, InboundMedia, InboundMessage, OutboundMedia, OutboundMessage } from './types.js';
|
|
@@ -50,6 +50,11 @@ export interface ChannelHookContext {
|
|
|
50
50
|
channel: string;
|
|
51
51
|
conversation: string;
|
|
52
52
|
message: InboundMessage;
|
|
53
|
+
/**
|
|
54
|
+
* Every message the turn is made of, in the order they arrived — set only when `coalesce` grouped
|
|
55
|
+
* several into one turn (`message` is then one of them: the one the hook is about, or the first).
|
|
56
|
+
*/
|
|
57
|
+
coalesced?: readonly InboundMessage[];
|
|
53
58
|
}
|
|
54
59
|
/** One message about to go out — what {@link ChannelHandleOptions.canDeliver} checks. */
|
|
55
60
|
export interface ChannelDelivery {
|
|
@@ -100,6 +105,13 @@ export interface ChannelTurnStarted {
|
|
|
100
105
|
message: InboundMessage;
|
|
101
106
|
/** The message waits in the thread's queue (its run starts later under `runId`). */
|
|
102
107
|
queued: boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Every message the turn is made of, in order — set only when `coalesce` grouped several (then
|
|
110
|
+
* `message` is the first of them).
|
|
111
|
+
*/
|
|
112
|
+
coalesced?: readonly InboundMessage[];
|
|
113
|
+
/** From the webhook taking the (first) message to its turn starting, in ms. */
|
|
114
|
+
queueWaitMs?: number;
|
|
103
115
|
}
|
|
104
116
|
/**
|
|
105
117
|
* How a message's (or a resumed run's) handling ended in this process —
|
|
@@ -133,6 +145,16 @@ export interface ChannelTurnEnded {
|
|
|
133
145
|
outcome: ChannelTurnOutcome;
|
|
134
146
|
/** What failed, for `outcome: 'failed'` from an error (after its retries). */
|
|
135
147
|
error?: unknown;
|
|
148
|
+
/**
|
|
149
|
+
* Every message the turn was made of, in order — set only when `coalesce` grouped several (then
|
|
150
|
+
* `message` is the first of them). A message grouped into another's turn is told about here, on
|
|
151
|
+
* that turn: its own job ends without a call of its own.
|
|
152
|
+
*/
|
|
153
|
+
coalesced?: readonly InboundMessage[];
|
|
154
|
+
/** The files the turn was sent with (after refusals and `transformInbound`), when it started one. */
|
|
155
|
+
attachments?: number;
|
|
156
|
+
/** From the webhook taking the (first) message to its turn starting, in ms — when a turn started. */
|
|
157
|
+
queueWaitMs?: number;
|
|
136
158
|
}
|
|
137
159
|
/** What {@link ChannelHandleOptions.prepareMedia} makes of a downloaded file. */
|
|
138
160
|
export type ChannelPreparedMedia = undefined
|
|
@@ -153,6 +175,42 @@ export interface ChannelInbound {
|
|
|
153
175
|
/** The text (with prepared media's text appended). */
|
|
154
176
|
text: string;
|
|
155
177
|
attachments: AttachmentRef[];
|
|
178
|
+
/**
|
|
179
|
+
* The messages a coalesced turn is made of, each with its own text (its caption, with its prepared
|
|
180
|
+
* media's text) and its own files — set only when `coalesce` grouped several. `text` is their
|
|
181
|
+
* texts joined in order and `attachments` their files in order; rebuild them from `parts` to,
|
|
182
|
+
* say, put each caption next to its file.
|
|
183
|
+
*/
|
|
184
|
+
parts?: ChannelInboundPart[];
|
|
185
|
+
}
|
|
186
|
+
/** One message of a coalesced turn — see {@link ChannelInbound.parts}. */
|
|
187
|
+
export interface ChannelInboundPart {
|
|
188
|
+
message: InboundMessage;
|
|
189
|
+
text: string;
|
|
190
|
+
attachments: AttachmentRef[];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Group a burst of messages into one turn — see {@link ChannelHandleOptions.coalesce}.
|
|
194
|
+
*/
|
|
195
|
+
export interface ChannelCoalesceOptions {
|
|
196
|
+
/**
|
|
197
|
+
* How long the conversation must stay quiet after its last message before the burst becomes a
|
|
198
|
+
* turn. Every message waits at least this long before it is answered.
|
|
199
|
+
*/
|
|
200
|
+
quietMs: number;
|
|
201
|
+
/**
|
|
202
|
+
* The longest a burst is held, from its first message being taken, however long the person keeps
|
|
203
|
+
* writing. Default: 30 s (or `quietMs`, when longer).
|
|
204
|
+
*/
|
|
205
|
+
maxWaitMs?: number;
|
|
206
|
+
/** The most messages one turn groups; the rest go to the next turn. Default 20. */
|
|
207
|
+
maxMessages?: number;
|
|
208
|
+
/**
|
|
209
|
+
* Which messages may be grouped — e.g. only files. One it returns `false` for is handled alone
|
|
210
|
+
* (and ends a burst). Default: every message but a control one (a button press, a text decision,
|
|
211
|
+
* an answer to a question), which is never grouped.
|
|
212
|
+
*/
|
|
213
|
+
when?(message: InboundMessage): boolean;
|
|
156
214
|
}
|
|
157
215
|
export interface ChannelHandleOptions {
|
|
158
216
|
/**
|
|
@@ -219,6 +277,26 @@ export interface ChannelHandleOptions {
|
|
|
219
277
|
* in this process (a restart loses what is in flight). An engine → that one.
|
|
220
278
|
*/
|
|
221
279
|
durable?: boolean | ChannelWorkflowEngine;
|
|
280
|
+
/**
|
|
281
|
+
* Where a durable job's phases run as DISPATCHED steps (`agora.channel.prepare`, `.act`, `.read`,
|
|
282
|
+
* …), so any process that registered the channel runs them and any process continues the job: a
|
|
283
|
+
* durable `Transport` (anything with `handle(name, fn)`). Default: the transport of the app's
|
|
284
|
+
* durable engine (from the container) when the channel runs on the agent's engine, or the engine's
|
|
285
|
+
* own `handleStep`. `false`, or none found → each phase runs in the process that runs the
|
|
286
|
+
* workflow (`ctx.localStep`).
|
|
287
|
+
*/
|
|
288
|
+
durableSteps?: ChannelStepServer | false;
|
|
289
|
+
/**
|
|
290
|
+
* Group a burst of messages of one conversation into ONE turn — "oi" / "tudo bem?" / "queria saber
|
|
291
|
+
* X", or ten files sent in a row: a message waits until the conversation has been quiet for
|
|
292
|
+
* `quietMs` (at most `maxWaitMs`, at most `maxMessages` messages), then the burst is one turn —
|
|
293
|
+
* texts joined in order, every file attached (each message's files prepared and refused as
|
|
294
|
+
* alone). Control messages are never grouped: a button press, a text decision ("yes") or an
|
|
295
|
+
* answer to a question is handled on its own, in order, and ends a burst. Messages that arrive
|
|
296
|
+
* while a grouped turn runs go to the next turn. With a durable engine the wait is the engine's
|
|
297
|
+
* durable sleep (any process resumes it); inline, a timer. Off by default.
|
|
298
|
+
*/
|
|
299
|
+
coalesce?: ChannelCoalesceOptions;
|
|
222
300
|
/** How each phase of a message is retried when it fails. */
|
|
223
301
|
retry?: ChannelRetryOptions;
|
|
224
302
|
/** How long a message id (and what was delivered for it) is remembered. Default 24 h. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/channels/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,OAAO,EAAE,YAAY,EAAgD,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/channels/handler.ts"],"names":[],"mappings":"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"}
|