@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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* The conversation of a message inside its channel: its `conversationId` when the channel names
|
|
4
|
+
* one, otherwise its chat (`channelId`) and, when it has one, the topic inside it (`topicId`).
|
|
5
|
+
*/
|
|
6
|
+
export function conversationOf(msg) {
|
|
7
|
+
if (msg.conversationId)
|
|
8
|
+
return msg.conversationId;
|
|
9
|
+
return msg.topicId ? `${msg.channelId}:${msg.topicId}` : msg.channelId;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The gateway's default thread key: one thread per user per conversation,
|
|
13
|
+
* `channelType:conversation:userId` (see {@link conversationOf}). A user's private chat, each
|
|
14
|
+
* group chat and each forum topic or Slack thread they write in is a thread of its own.
|
|
15
|
+
*/
|
|
16
|
+
export function defaultThreadKey(msg) {
|
|
17
|
+
return `${msg.channelType}:${conversationOf(msg)}:${msg.userId}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The thread key of earlier versions: one thread per user per channel type,
|
|
21
|
+
* `channelType:userId`, whatever chat or topic the message comes from. Pass it as
|
|
22
|
+
* `session.threadKey` to keep the threads a gateway stored before the default changed.
|
|
23
|
+
*/
|
|
24
|
+
export function legacyThreadKey(msg) {
|
|
25
|
+
return `${msg.channelType}:${msg.userId}`;
|
|
26
|
+
}
|
|
27
|
+
/** The session metadata key that holds a user's conversations, most recent first */
|
|
28
|
+
export const CONVERSATIONS_KEY = 'conversations';
|
|
29
|
+
/** Conversations kept per session, past it the least recently used one goes */
|
|
30
|
+
export const MAX_STORED_CONVERSATIONS = 50;
|
|
31
|
+
const StoredConversationSchema = z.object({
|
|
32
|
+
channelId: z.string().min(1),
|
|
33
|
+
topicId: z.string().min(1).optional(),
|
|
34
|
+
conversationId: z.string().min(1).optional(),
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* The conversations stored in a session's metadata, skipping entries that are not one. Metadata
|
|
38
|
+
* a session store left out reads as none.
|
|
39
|
+
*/
|
|
40
|
+
export function readConversations(metadata) {
|
|
41
|
+
const stored = metadata?.[CONVERSATIONS_KEY];
|
|
42
|
+
if (!Array.isArray(stored))
|
|
43
|
+
return [];
|
|
44
|
+
const conversations = [];
|
|
45
|
+
for (const entry of stored) {
|
|
46
|
+
const parsed = StoredConversationSchema.safeParse(entry);
|
|
47
|
+
if (parsed.success)
|
|
48
|
+
conversations.push(parsed.data);
|
|
49
|
+
}
|
|
50
|
+
return conversations;
|
|
51
|
+
}
|
|
52
|
+
function toStored(msg) {
|
|
53
|
+
return {
|
|
54
|
+
channelId: msg.channelId,
|
|
55
|
+
...(msg.topicId && { topicId: msg.topicId }),
|
|
56
|
+
...(msg.conversationId && { conversationId: msg.conversationId }),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function sameEntry(a, b) {
|
|
60
|
+
return (a.channelId === b.channelId && a.topicId === b.topicId && a.conversationId === b.conversationId);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The conversations with the message's own moved to the front, or `null` when it is already
|
|
64
|
+
* there as it is, so nothing needs to be written. On Bluesky and Threads the entry keeps the
|
|
65
|
+
* conversation's latest post as its `channelId`.
|
|
66
|
+
*/
|
|
67
|
+
export function rememberConversation(conversations, msg) {
|
|
68
|
+
const entry = toStored(msg);
|
|
69
|
+
const head = conversations[0];
|
|
70
|
+
if (head && sameEntry(head, entry))
|
|
71
|
+
return null;
|
|
72
|
+
const key = conversationOf(entry);
|
|
73
|
+
return [entry, ...conversations.filter((c) => conversationOf(c) !== key)].slice(0, MAX_STORED_CONVERSATIONS);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The stored conversation a message sent to `channelId` without a topic most likely continues:
|
|
77
|
+
* the most recent one in that chat.
|
|
78
|
+
*/
|
|
79
|
+
export function findConversation(conversations, channelId) {
|
|
80
|
+
return conversations.find((c) => c.channelId === channelId);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=thread-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-key.js","sourceRoot":"","sources":["../src/thread-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AASxB;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,GAAoD;IACjF,IAAI,GAAG,CAAC,cAAc;QAAE,OAAO,GAAG,CAAC,cAAc,CAAC;IAClD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;AACzE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAoB;IACnD,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,GAAmD;IACjF,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC;AAYD,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC;AAEjD,+EAA+E;AAC/E,MAAM,CAAC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAE3C,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACrC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAA6C;IAE7C,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,aAAa,GAAyB,EAAE,CAAC;IAC/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,MAAM,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,SAAS,QAAQ,CAAC,GAAoD;IACpE,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;QAC5C,GAAG,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,GAAG,CAAC,cAAc,EAAE,CAAC;KAClE,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,CAAqB,EAAE,CAAqB;IAC7D,OAAO,CACL,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,cAAc,KAAK,CAAC,CAAC,cAAc,CAChG,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAA4C,EAC5C,GAAoD;IAEpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAC7E,CAAC,EACD,wBAAwB,CACzB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,aAA4C,EAC5C,SAAiB;IAEjB,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AAC9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cogitator-ai/channels",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"description": "Messaging channel connectors and Gateway for Cogitator AI agents",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cogitator",
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
"streaming",
|
|
18
18
|
"bluesky",
|
|
19
19
|
"threads",
|
|
20
|
+
"github",
|
|
21
|
+
"email",
|
|
20
22
|
"social"
|
|
21
23
|
],
|
|
22
24
|
"type": "module",
|
|
@@ -34,9 +36,9 @@
|
|
|
34
36
|
"dist"
|
|
35
37
|
],
|
|
36
38
|
"dependencies": {
|
|
37
|
-
"@cogitator-ai/core": "0.
|
|
38
|
-
"@cogitator-ai/memory": "0.25.
|
|
39
|
-
"@cogitator-ai/types": "0.
|
|
39
|
+
"@cogitator-ai/core": "0.60.1",
|
|
40
|
+
"@cogitator-ai/memory": "0.25.2",
|
|
41
|
+
"@cogitator-ai/types": "0.66.0",
|
|
40
42
|
"cron-parser": "^5.10.1",
|
|
41
43
|
"nanoid": "^6.0.1",
|
|
42
44
|
"zod": "^4.6.5"
|
|
@@ -44,18 +46,22 @@
|
|
|
44
46
|
"devDependencies": {
|
|
45
47
|
"@atproto/api": "0.24.0",
|
|
46
48
|
"@types/node": "^22.20.4",
|
|
49
|
+
"@types/nodemailer": "^8.0.2",
|
|
47
50
|
"@types/ws": "^8.18.2",
|
|
48
51
|
"@whiskeysockets/baileys": "7.0.0-rc14",
|
|
49
52
|
"better-sqlite3": "^13.0.3",
|
|
53
|
+
"imapflow": "^2.7.0",
|
|
54
|
+
"nodemailer": "^10.0.13",
|
|
55
|
+
"postal-mime": "^4.1.2",
|
|
50
56
|
"typescript": "^6.0.3",
|
|
51
57
|
"vitest": "^5.0.3",
|
|
52
58
|
"ws": "^8.22.0"
|
|
53
59
|
},
|
|
54
60
|
"peerDependencies": {
|
|
55
|
-
"@cogitator-ai/browser": ">=0.4.
|
|
56
|
-
"@cogitator-ai/mcp": "^19.5.
|
|
61
|
+
"@cogitator-ai/browser": ">=0.4.42",
|
|
62
|
+
"@cogitator-ai/mcp": "^19.5.24",
|
|
57
63
|
"@cogitator-ai/models": "^18.5.0",
|
|
58
|
-
"@cogitator-ai/rag": ">=0.8.
|
|
64
|
+
"@cogitator-ai/rag": ">=0.8.16",
|
|
59
65
|
"@huggingface/transformers": ">=3.0.0",
|
|
60
66
|
"@slack/bolt": ">=3.0.0",
|
|
61
67
|
"@whiskeysockets/baileys": "^6.0.0 || >=7.0.0-0",
|
|
@@ -66,7 +72,10 @@
|
|
|
66
72
|
"pg": ">=8.0.0",
|
|
67
73
|
"qrcode-terminal": ">=0.12.0",
|
|
68
74
|
"ws": ">=8.0.0",
|
|
69
|
-
"@atproto/api": ">=0.24.0"
|
|
75
|
+
"@atproto/api": ">=0.24.0",
|
|
76
|
+
"imapflow": ">=2.0.0",
|
|
77
|
+
"nodemailer": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0",
|
|
78
|
+
"postal-mime": ">=4.0.0"
|
|
70
79
|
},
|
|
71
80
|
"peerDependenciesMeta": {
|
|
72
81
|
"grammy": {
|
|
@@ -113,6 +122,15 @@
|
|
|
113
122
|
},
|
|
114
123
|
"@atproto/api": {
|
|
115
124
|
"optional": true
|
|
125
|
+
},
|
|
126
|
+
"imapflow": {
|
|
127
|
+
"optional": true
|
|
128
|
+
},
|
|
129
|
+
"nodemailer": {
|
|
130
|
+
"optional": true
|
|
131
|
+
},
|
|
132
|
+
"postal-mime": {
|
|
133
|
+
"optional": true
|
|
116
134
|
}
|
|
117
135
|
},
|
|
118
136
|
"engines": {
|