@cogitator-ai/channels 0.15.12 → 0.17.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/README.md +129 -23
- package/dist/assistant-config.d.ts +78 -0
- package/dist/assistant-config.d.ts.map +1 -1
- package/dist/assistant-config.js +127 -0
- package/dist/assistant-config.js.map +1 -1
- package/dist/channels/bluesky/channel.d.ts.map +1 -1
- package/dist/channels/bluesky/channel.js +1 -0
- package/dist/channels/bluesky/channel.js.map +1 -1
- package/dist/channels/email/address.d.ts +44 -0
- package/dist/channels/email/address.d.ts.map +1 -0
- package/dist/channels/email/address.js +211 -0
- package/dist/channels/email/address.js.map +1 -0
- package/dist/channels/email/auth.d.ts +59 -0
- package/dist/channels/email/auth.d.ts.map +1 -0
- package/dist/channels/email/auth.js +212 -0
- package/dist/channels/email/auth.js.map +1 -0
- package/dist/channels/email/channel.d.ts +256 -0
- package/dist/channels/email/channel.d.ts.map +1 -0
- package/dist/channels/email/channel.js +701 -0
- package/dist/channels/email/channel.js.map +1 -0
- package/dist/channels/email/errors.d.ts +11 -0
- package/dist/channels/email/errors.d.ts.map +1 -0
- package/dist/channels/email/errors.js +13 -0
- package/dist/channels/email/errors.js.map +1 -0
- package/dist/channels/email/imap.d.ts +125 -0
- package/dist/channels/email/imap.d.ts.map +1 -0
- package/dist/channels/email/imap.js +309 -0
- package/dist/channels/email/imap.js.map +1 -0
- package/dist/channels/email/index.d.ts +7 -0
- package/dist/channels/email/index.d.ts.map +1 -0
- package/dist/channels/email/index.js +3 -0
- package/dist/channels/email/index.js.map +1 -0
- package/dist/channels/email/mime.d.ts +71 -0
- package/dist/channels/email/mime.d.ts.map +1 -0
- package/dist/channels/email/mime.js +83 -0
- package/dist/channels/email/mime.js.map +1 -0
- package/dist/channels/email/multipart.d.ts +28 -0
- package/dist/channels/email/multipart.d.ts.map +1 -0
- package/dist/channels/email/multipart.js +102 -0
- package/dist/channels/email/multipart.js.map +1 -0
- package/dist/channels/email/providers.d.ts +49 -0
- package/dist/channels/email/providers.d.ts.map +1 -0
- package/dist/channels/email/providers.js +292 -0
- package/dist/channels/email/providers.js.map +1 -0
- package/dist/channels/email/reply.d.ts +9 -0
- package/dist/channels/email/reply.d.ts.map +1 -0
- package/dist/channels/email/reply.js +122 -0
- package/dist/channels/email/reply.js.map +1 -0
- package/dist/channels/github/channel.d.ts +222 -0
- package/dist/channels/github/channel.d.ts.map +1 -0
- package/dist/channels/github/channel.js +736 -0
- package/dist/channels/github/channel.js.map +1 -0
- package/dist/channels/github/client.d.ts +45 -0
- package/dist/channels/github/client.d.ts.map +1 -0
- package/dist/channels/github/client.js +119 -0
- package/dist/channels/github/client.js.map +1 -0
- package/dist/channels/github/events.d.ts +49 -0
- package/dist/channels/github/events.d.ts.map +1 -0
- package/dist/channels/github/events.js +147 -0
- package/dist/channels/github/events.js.map +1 -0
- package/dist/channels/github/index.d.ts +4 -0
- package/dist/channels/github/index.d.ts.map +1 -0
- package/dist/channels/github/index.js +4 -0
- package/dist/channels/github/index.js.map +1 -0
- package/dist/channels/slack.d.ts.map +1 -1
- package/dist/channels/slack.js +2 -1
- package/dist/channels/slack.js.map +1 -1
- package/dist/channels/telegram.d.ts.map +1 -1
- package/dist/channels/telegram.js +14 -6
- package/dist/channels/telegram.js.map +1 -1
- package/dist/channels/threads/channel.d.ts.map +1 -1
- package/dist/channels/threads/channel.js +1 -0
- package/dist/channels/threads/channel.js.map +1 -1
- package/dist/channels/webchat.d.ts +8 -0
- package/dist/channels/webchat.d.ts.map +1 -1
- package/dist/channels/webchat.js +54 -15
- package/dist/channels/webchat.js.map +1 -1
- package/dist/channels/whatsapp.d.ts.map +1 -1
- package/dist/channels/whatsapp.js +13 -0
- package/dist/channels/whatsapp.js.map +1 -1
- package/dist/formatters/html.d.ts +16 -0
- package/dist/formatters/html.d.ts.map +1 -0
- package/dist/formatters/html.js +535 -0
- package/dist/formatters/html.js.map +1 -0
- package/dist/formatters/markdown.d.ts.map +1 -1
- package/dist/formatters/markdown.js +2 -0
- package/dist/formatters/markdown.js.map +1 -1
- package/dist/gateway.d.ts +91 -1
- package/dist/gateway.d.ts.map +1 -1
- package/dist/gateway.js +345 -46
- package/dist/gateway.js.map +1 -1
- package/dist/heartbeat.d.ts +5 -1
- package/dist/heartbeat.d.ts.map +1 -1
- package/dist/heartbeat.js +13 -3
- package/dist/heartbeat.js.map +1 -1
- package/dist/inbound-debounce.d.ts +4 -1
- package/dist/inbound-debounce.d.ts.map +1 -1
- package/dist/inbound-debounce.js +4 -2
- package/dist/inbound-debounce.js.map +1 -1
- package/dist/index.d.ts +8 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/merge-messages.d.ts +3 -2
- package/dist/merge-messages.d.ts.map +1 -1
- package/dist/merge-messages.js +4 -2
- package/dist/merge-messages.js.map +1 -1
- package/dist/message-queue.d.ts +14 -4
- package/dist/message-queue.d.ts.map +1 -1
- package/dist/message-queue.js +36 -35
- package/dist/message-queue.js.map +1 -1
- package/dist/runtime-builder.d.ts +9 -0
- package/dist/runtime-builder.d.ts.map +1 -1
- package/dist/runtime-builder.js +149 -5
- package/dist/runtime-builder.js.map +1 -1
- package/dist/thread-key.d.ts +50 -0
- package/dist/thread-key.d.ts.map +1 -0
- package/dist/thread-key.js +82 -0
- package/dist/thread-key.js.map +1 -0
- package/package.json +26 -8
package/dist/gateway.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface GatewayFullConfig extends GatewayConfig {
|
|
|
23
23
|
* the prompt cache they open with
|
|
24
24
|
*/
|
|
25
25
|
brief?: (msg: ChannelMessage) => string | undefined;
|
|
26
|
+
/**
|
|
27
|
+
* How long {@link Gateway.stop} waits for the queued messages and the runs in progress to be
|
|
28
|
+
* answered, in milliseconds (default 30000). What is still running then is aborted, and what
|
|
29
|
+
* is still waiting is dropped.
|
|
30
|
+
*/
|
|
31
|
+
drainTimeout?: number;
|
|
26
32
|
}
|
|
27
33
|
export interface GatewaySessionInfo {
|
|
28
34
|
threadId: string;
|
|
@@ -33,6 +39,8 @@ export interface GatewaySessionInfo {
|
|
|
33
39
|
lastActiveAt: number;
|
|
34
40
|
active: boolean;
|
|
35
41
|
}
|
|
42
|
+
/** Threads kept in the gateway's own bookkeeping (stats, sessions, envelope times) */
|
|
43
|
+
export declare const MAX_TRACKED_THREADS = 10000;
|
|
36
44
|
export declare class Gateway {
|
|
37
45
|
private readonly config;
|
|
38
46
|
private readonly channels;
|
|
@@ -44,6 +52,8 @@ export declare class Gateway {
|
|
|
44
52
|
private readonly hooks;
|
|
45
53
|
private readonly approvalWords;
|
|
46
54
|
private readonly pausedThreads;
|
|
55
|
+
/** The stop of every run in progress */
|
|
56
|
+
private readonly runs;
|
|
47
57
|
/** The stop of each run, by the signal the run was given */
|
|
48
58
|
private readonly stops;
|
|
49
59
|
/** The stop of each run streaming into a draft with a stop button, by channel, chat and draft */
|
|
@@ -53,16 +63,57 @@ export declare class Gateway {
|
|
|
53
63
|
private readonly lastMessageTime;
|
|
54
64
|
private readonly threads;
|
|
55
65
|
private readonly inFlight;
|
|
66
|
+
/** Messages taken and not answered yet, for {@link idle} */
|
|
67
|
+
private readonly pending;
|
|
68
|
+
/** The stop in progress, which a second {@link stop} call returns */
|
|
69
|
+
private stopping;
|
|
70
|
+
/** Calls of `channel.redeliver` in progress */
|
|
71
|
+
private readonly redeliveries;
|
|
72
|
+
/**
|
|
73
|
+
* Messages taken from a channel that can redeliver them, by the promise of their answer, until
|
|
74
|
+
* it settles. Those still here once `stop()` gave up on the runs are handed back.
|
|
75
|
+
*/
|
|
76
|
+
private readonly unanswered;
|
|
77
|
+
/**
|
|
78
|
+
* Messages whose answer is going out or went out, by `answerKey`, so a run aborted after its
|
|
79
|
+
* first message was sent (or while it is being sent) is not redelivered
|
|
80
|
+
*/
|
|
81
|
+
private readonly answeredKeys;
|
|
82
|
+
/** The last pending write of each user's session, so writes to one session never interleave */
|
|
83
|
+
private readonly sessionWrites;
|
|
56
84
|
private running;
|
|
57
85
|
private startedAt;
|
|
58
86
|
private messageCount;
|
|
59
87
|
private messageCountDay;
|
|
60
88
|
constructor(config: GatewayFullConfig);
|
|
61
89
|
start(): Promise<void>;
|
|
90
|
+
/**
|
|
91
|
+
* Stops the gateway. Channels have already confirmed the messages they handed over, so it
|
|
92
|
+
* first lets them be answered: messages held by `debounce` are flushed, and it waits up to
|
|
93
|
+
* `drainTimeout` for the queues and the runs in progress. Then it aborts the runs still going,
|
|
94
|
+
* drops the messages still waiting, waits for the aborted runs to settle (up to `drainTimeout`
|
|
95
|
+
* again) and stops the channels. Messages that come in meanwhile are refused (see
|
|
96
|
+
* {@link injectMessage}). A second call while it stops returns the same promise.
|
|
97
|
+
*/
|
|
62
98
|
stop(): Promise<void>;
|
|
99
|
+
private drainAndStop;
|
|
63
100
|
get stats(): GatewayStats;
|
|
64
101
|
getSessions(): GatewaySessionInfo[];
|
|
102
|
+
/**
|
|
103
|
+
* Feeds a message to the gateway as if a channel had received it (the scheduler sends its
|
|
104
|
+
* tasks this way). It resolves once the message is answered, or once it is buffered when
|
|
105
|
+
* `debounce` is on. It rejects when the message was not answered: its run failed (also
|
|
106
|
+
* reported to `onError`), it was aborted or dropped by {@link stop}, or it came in while the
|
|
107
|
+
* gateway was stopping.
|
|
108
|
+
*/
|
|
65
109
|
injectMessage(msg: ChannelMessage): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Resolves once every message the gateway has taken is answered: those waiting in their
|
|
112
|
+
* thread's queue and the runs in progress, including messages that come in while it waits.
|
|
113
|
+
* Messages held by `debounce` count from the moment they are flushed. {@link stop} waits
|
|
114
|
+
* for it, up to `drainTimeout`.
|
|
115
|
+
*/
|
|
116
|
+
idle(): Promise<void>;
|
|
66
117
|
/**
|
|
67
118
|
* Summarize older messages of a conversation thread, keeping `keepRecent` messages intact.
|
|
68
119
|
* Runs regardless of the configured thresholds.
|
|
@@ -77,7 +128,8 @@ export declare class Gateway {
|
|
|
77
128
|
compactAll(): Promise<string>;
|
|
78
129
|
/**
|
|
79
130
|
* The threads {@link compactAll} goes through: those served since the gateway started, and the
|
|
80
|
-
*
|
|
131
|
+
* threads of each stored session when they are keyed by the default key (the conversations kept
|
|
132
|
+
* in the session's metadata, or the chat it was created in) or by `legacyThreadKey`
|
|
81
133
|
*/
|
|
82
134
|
private knownThreads;
|
|
83
135
|
/**
|
|
@@ -98,10 +150,38 @@ export declare class Gateway {
|
|
|
98
150
|
* decision, or go away when the request was dropped.
|
|
99
151
|
*/
|
|
100
152
|
private closePrompts;
|
|
153
|
+
/**
|
|
154
|
+
* A message from a channel, a button or {@link injectMessage}. With a queue, a channel's message
|
|
155
|
+
* is only queued, so the channel goes on to its next update while the thread waits its turn.
|
|
156
|
+
* `untilAnswered` waits for the answer. A message of `channel` the gateway does not answer
|
|
157
|
+
* because it stops (refused while stopping, or dropped by `stop()`) goes back through
|
|
158
|
+
* `channel.redeliver`.
|
|
159
|
+
*/
|
|
101
160
|
private handleIncoming;
|
|
161
|
+
/** Hands a message back to its channel, reporting a failure to `onError`. */
|
|
162
|
+
private redeliver;
|
|
163
|
+
/**
|
|
164
|
+
* Watches the answer of messages taken from `channel`: when the gateway stops before answering
|
|
165
|
+
* them they go back through `channel.redeliver`, and so do those whose run is still going when
|
|
166
|
+
* `stop()` gives up on it. A message whose answer went out is never handed back.
|
|
167
|
+
*/
|
|
168
|
+
private watchUnanswered;
|
|
169
|
+
/** Puts a message through the queue of its thread, resolving once it is done with */
|
|
102
170
|
private dispatch;
|
|
171
|
+
/** Resolves `true` once the message is handled, `false` when it failed or was dropped */
|
|
172
|
+
private route;
|
|
173
|
+
/**
|
|
174
|
+
* A scheduled message names only its chat, so with the default thread key it gets the topic or
|
|
175
|
+
* conversation of the user's most recent conversation in that chat, kept in their session: the
|
|
176
|
+
* task is then answered in the thread and topic it was set up in.
|
|
177
|
+
*/
|
|
178
|
+
private locateScheduled;
|
|
103
179
|
private rollMessageCounter;
|
|
104
180
|
private runMiddleware;
|
|
181
|
+
/**
|
|
182
|
+
* Handles one message, `false` when its run failed or was aborted. A message for a channel
|
|
183
|
+
* the gateway does not run counts as handled: it never can be.
|
|
184
|
+
*/
|
|
105
185
|
private processMessage;
|
|
106
186
|
private processWithChannel;
|
|
107
187
|
private handleAccepted;
|
|
@@ -128,6 +208,16 @@ export declare class Gateway {
|
|
|
128
208
|
*/
|
|
129
209
|
private streamRun;
|
|
130
210
|
private getThreadId;
|
|
211
|
+
/**
|
|
212
|
+
* Keeps the message's conversation in the user's session, so its thread is known after a
|
|
213
|
+
* restart. A failure is reported to `onError` and does not keep the message from its answer.
|
|
214
|
+
*/
|
|
215
|
+
private rememberConversation;
|
|
216
|
+
/**
|
|
217
|
+
* Runs `write` after every earlier write to the same session has finished, so a read, change
|
|
218
|
+
* and write of its metadata never loses another one's change.
|
|
219
|
+
*/
|
|
220
|
+
private writeSession;
|
|
131
221
|
private resolveAgent;
|
|
132
222
|
private createMiddlewareContext;
|
|
133
223
|
/**
|
package/dist/gateway.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,YAAY,EAIZ,cAAc,EAMd,YAAY,
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../src/gateway.ts"],"names":[],"mappings":"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"}
|