@finalai/final-agent-provider 0.8.0 → 0.9.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/HOSTING.md +3 -3
- package/README.md +7 -91
- package/dist/modules/channel-factories.d.mts +5 -6
- package/dist/modules/channel-factories.mjs +7 -11
- package/dist/modules/channel-factories.mjs.map +3 -3
- package/dist/modules/channels/inbound.mjs +2 -2
- package/dist/modules/channels/inbound.mjs.map +2 -2
- package/dist/modules/channels/index.d.mts +0 -7
- package/dist/modules/channels/index.mjs +0 -7
- package/dist/modules/channels/index.mjs.map +2 -2
- package/dist/modules/channels/prompt.d.mts +2 -2
- package/dist/modules/channels/prompt.mjs +3 -3
- package/dist/modules/channels/prompt.mjs.map +2 -2
- package/dist/modules/channels/routing.d.mts +1 -1
- package/dist/modules/channels/routing.mjs +1 -1
- package/dist/modules/channels/routing.mjs.map +1 -1
- package/package.json +4 -40
- package/dist/modules/channels/channel-utils.d.mts +0 -132
- package/dist/modules/channels/channel-utils.mjs +0 -445
- package/dist/modules/channels/channel-utils.mjs.map +0 -7
- package/dist/modules/channels/discord-dispatch.d.mts +0 -17
- package/dist/modules/channels/discord-dispatch.mjs +0 -139
- package/dist/modules/channels/discord-dispatch.mjs.map +0 -7
- package/dist/modules/channels/discord-gateway.d.mts +0 -19
- package/dist/modules/channels/discord-gateway.mjs +0 -233
- package/dist/modules/channels/discord-gateway.mjs.map +0 -7
- package/dist/modules/channels/discord.d.mts +0 -9
- package/dist/modules/channels/discord.mjs +0 -904
- package/dist/modules/channels/discord.mjs.map +0 -7
- package/dist/modules/channels/github.d.mts +0 -5
- package/dist/modules/channels/github.mjs +0 -720
- package/dist/modules/channels/github.mjs.map +0 -7
- package/dist/modules/channels/linear.d.mts +0 -4
- package/dist/modules/channels/linear.mjs +0 -621
- package/dist/modules/channels/linear.mjs.map +0 -7
- package/dist/modules/channels/phone.d.mts +0 -8
- package/dist/modules/channels/phone.mjs +0 -382
- package/dist/modules/channels/phone.mjs.map +0 -7
- package/dist/modules/channels/reply-receipts.d.mts +0 -31
- package/dist/modules/channels/reply-receipts.mjs +0 -63
- package/dist/modules/channels/reply-receipts.mjs.map +0 -7
- package/dist/modules/channels/slack.d.mts +0 -7
- package/dist/modules/channels/slack.mjs +0 -1134
- package/dist/modules/channels/slack.mjs.map +0 -7
- package/dist/modules/channels/voice-recording.d.mts +0 -7
- package/dist/modules/channels/voice-recording.mjs +0 -49
- package/dist/modules/channels/voice-recording.mjs.map +0 -7
- package/dist/modules/channels/voice.d.mts +0 -33
- package/dist/modules/channels/voice.mjs +0 -851
- package/dist/modules/channels/voice.mjs.map +0 -7
- package/dist/modules/channels/webhook.d.mts +0 -5
- package/dist/modules/channels/webhook.mjs +0 -76
- package/dist/modules/channels/webhook.mjs.map +0 -7
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import * as z from "zod";
|
|
2
|
-
import { deliveryRetention, providerPlaceKey, stateKey } from "./channel-utils.mjs";
|
|
3
|
-
const mirrorReceiptKey = (args) => {
|
|
4
|
-
if (!args.externalKey.startsWith("final:")) return null;
|
|
5
|
-
const id = args.externalKey.slice(6);
|
|
6
|
-
if (id.length === 0 || id.length > 256 || args.messageId != null && args.messageId !== id)
|
|
7
|
-
return null;
|
|
8
|
-
return stateKey(`${args.provider}-mirror`, providerPlaceKey(args.place), id);
|
|
9
|
-
};
|
|
10
|
-
const deletedMirrorReceiptSchema = z.object({ deleted: z.literal(true) });
|
|
11
|
-
const settleMirrorReaction = async (args) => {
|
|
12
|
-
try {
|
|
13
|
-
await args.work();
|
|
14
|
-
} catch (cause) {
|
|
15
|
-
if (args.key == null) throw cause;
|
|
16
|
-
const result = await args.classify(cause);
|
|
17
|
-
if (result === "retry") throw cause;
|
|
18
|
-
if (result === "missing")
|
|
19
|
-
await args.ctx.store.set(args.key, { deleted: true }, deliveryRetention);
|
|
20
|
-
else args.ctx.log("Mirrored reaction unavailable.");
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
const activeReplies = /* @__PURE__ */ new Map();
|
|
24
|
-
const shareReplyReceipt = async (args) => {
|
|
25
|
-
const lockKey = stateKey(args.bindingId, args.destination);
|
|
26
|
-
const preceding = activeReplies.get(lockKey);
|
|
27
|
-
const settled = Promise.withResolvers();
|
|
28
|
-
activeReplies.set(lockKey, settled.promise);
|
|
29
|
-
await preceding;
|
|
30
|
-
try {
|
|
31
|
-
let canonical = args.originKey;
|
|
32
|
-
for (const messageId of args.messageIds) {
|
|
33
|
-
const saved = z.string().safeParse(await args.store.get(stateKey("reply-message", args.destination, messageId)));
|
|
34
|
-
if (saved.success && await args.store.get(saved.data) != null) {
|
|
35
|
-
canonical = saved.data;
|
|
36
|
-
break;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
const duplicate = canonical === args.originKey ? null : await args.store.get(args.originKey);
|
|
40
|
-
await args.send(canonical);
|
|
41
|
-
const receipt = await args.store.get(canonical);
|
|
42
|
-
if (receipt == null) return;
|
|
43
|
-
if (duplicate != null) await args.removeDuplicate?.(duplicate, receipt);
|
|
44
|
-
if (canonical !== args.originKey)
|
|
45
|
-
await args.store.set(args.originKey, receipt, deliveryRetention);
|
|
46
|
-
for (const messageId of args.messageIds)
|
|
47
|
-
await args.store.set(
|
|
48
|
-
stateKey("reply-message", args.destination, messageId),
|
|
49
|
-
canonical,
|
|
50
|
-
deliveryRetention
|
|
51
|
-
);
|
|
52
|
-
} finally {
|
|
53
|
-
settled.resolve();
|
|
54
|
-
if (activeReplies.get(lockKey) === settled.promise) activeReplies.delete(lockKey);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
export {
|
|
58
|
-
deletedMirrorReceiptSchema,
|
|
59
|
-
mirrorReceiptKey,
|
|
60
|
-
settleMirrorReaction,
|
|
61
|
-
shareReplyReceipt
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=reply-receipts.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../src/channels/reply-receipts.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ChannelReceiveContextIface, JsonValue, PlaceRef } from '@finalai/agent-provider';\nimport * as z from 'zod';\nimport { deliveryRetention, providerPlaceKey, stateKey } from \"./channel-utils.mjs\";\n\ninterface MirrorReceiptKeyArgsIface {\n provider: string;\n place: PlaceRef;\n externalKey: string;\n messageId?: string;\n}\nexport const mirrorReceiptKey = (args: MirrorReceiptKeyArgsIface): string | null => {\n if (!args.externalKey.startsWith('final:')) return null;\n const id = args.externalKey.slice(6);\n if (id.length === 0 || id.length > 256 || (args.messageId != null && args.messageId !== id))\n return null;\n return stateKey(`${args.provider}-mirror`, providerPlaceKey(args.place), id);\n};\nexport const deletedMirrorReceiptSchema = z.object({ deleted: z.literal(true) });\nexport type MirrorReactionResult = 'missing' | 'unavailable' | 'retry';\ninterface MirrorReactionArgsIface {\n ctx: Pick<ChannelReceiveContextIface, 'store' | 'log'>;\n key: string | null;\n work(): Promise<void>;\n classify(cause: unknown): Promise<MirrorReactionResult>;\n}\nexport const settleMirrorReaction = async (args: MirrorReactionArgsIface): Promise<void> => {\n try {\n await args.work();\n } catch (cause) {\n if (args.key == null) throw cause;\n const result = await args.classify(cause);\n if (result === 'retry') throw cause;\n if (result === 'missing')\n await args.ctx.store.set(args.key, { deleted: true }, deliveryRetention);\n else args.ctx.log('Mirrored reaction unavailable.');\n }\n};\n\nconst activeReplies = new Map<string, Promise<void>>();\ninterface ReplyReceiptArgsIface {\n bindingId: string;\n store: ChannelReceiveContextIface['store'];\n destination: string;\n messageIds: readonly string[];\n originKey: string;\n send(key: string): Promise<void>;\n removeDuplicate?(receipt: JsonValue, canonical: JsonValue): Promise<void>;\n}\n// Several accepted prompts can share one reply. Keep each origin's mutation receipt.\nexport const shareReplyReceipt = async (args: ReplyReceiptArgsIface): Promise<void> => {\n const lockKey = stateKey(args.bindingId, args.destination);\n const preceding = activeReplies.get(lockKey);\n const settled = Promise.withResolvers<void>();\n activeReplies.set(lockKey, settled.promise);\n await preceding;\n try {\n let canonical = args.originKey;\n for (const messageId of args.messageIds) {\n const saved = z\n .string()\n .safeParse(await args.store.get(stateKey('reply-message', args.destination, messageId)));\n if (saved.success && (await args.store.get(saved.data)) != null) {\n canonical = saved.data;\n break;\n }\n }\n const duplicate = canonical === args.originKey ? null : await args.store.get(args.originKey);\n await args.send(canonical);\n const receipt = await args.store.get(canonical);\n if (receipt == null) return;\n if (duplicate != null) await args.removeDuplicate?.(duplicate, receipt);\n if (canonical !== args.originKey)\n await args.store.set(args.originKey, receipt, deliveryRetention);\n for (const messageId of args.messageIds)\n await args.store.set(\n stateKey('reply-message', args.destination, messageId),\n canonical,\n deliveryRetention,\n );\n } finally {\n settled.resolve();\n if (activeReplies.get(lockKey) === settled.promise) activeReplies.delete(lockKey);\n }\n};\n"],
|
|
5
|
-
"mappings": "AACA,YAAY,OAAO;AACnB,SAAS,mBAAmB,kBAAkB,gBAAgB;AAQvD,MAAM,mBAAmB,CAAC,SAAmD;AAClF,MAAI,CAAC,KAAK,YAAY,WAAW,QAAQ,EAAG,QAAO;AACnD,QAAM,KAAK,KAAK,YAAY,MAAM,CAAC;AACnC,MAAI,GAAG,WAAW,KAAK,GAAG,SAAS,OAAQ,KAAK,aAAa,QAAQ,KAAK,cAAc;AACtF,WAAO;AACT,SAAO,SAAS,GAAG,KAAK,QAAQ,WAAW,iBAAiB,KAAK,KAAK,GAAG,EAAE;AAC7E;AACO,MAAM,6BAA6B,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,EAAE,CAAC;AAQxE,MAAM,uBAAuB,OAAO,SAAiD;AAC1F,MAAI;AACF,UAAM,KAAK,KAAK;AAAA,EAClB,SAAS,OAAO;AACd,QAAI,KAAK,OAAO,KAAM,OAAM;AAC5B,UAAM,SAAS,MAAM,KAAK,SAAS,KAAK;AACxC,QAAI,WAAW,QAAS,OAAM;AAC9B,QAAI,WAAW;AACb,YAAM,KAAK,IAAI,MAAM,IAAI,KAAK,KAAK,EAAE,SAAS,KAAK,GAAG,iBAAiB;AAAA,QACpE,MAAK,IAAI,IAAI,gCAAgC;AAAA,EACpD;AACF;AAEA,MAAM,gBAAgB,oBAAI,IAA2B;AAW9C,MAAM,oBAAoB,OAAO,SAA+C;AACrF,QAAM,UAAU,SAAS,KAAK,WAAW,KAAK,WAAW;AACzD,QAAM,YAAY,cAAc,IAAI,OAAO;AAC3C,QAAM,UAAU,QAAQ,cAAoB;AAC5C,gBAAc,IAAI,SAAS,QAAQ,OAAO;AAC1C,QAAM;AACN,MAAI;AACF,QAAI,YAAY,KAAK;AACrB,eAAW,aAAa,KAAK,YAAY;AACvC,YAAM,QAAQ,EACX,OAAO,EACP,UAAU,MAAM,KAAK,MAAM,IAAI,SAAS,iBAAiB,KAAK,aAAa,SAAS,CAAC,CAAC;AACzF,UAAI,MAAM,WAAY,MAAM,KAAK,MAAM,IAAI,MAAM,IAAI,KAAM,MAAM;AAC/D,oBAAY,MAAM;AAClB;AAAA,MACF;AAAA,IACF;AACA,UAAM,YAAY,cAAc,KAAK,YAAY,OAAO,MAAM,KAAK,MAAM,IAAI,KAAK,SAAS;AAC3F,UAAM,KAAK,KAAK,SAAS;AACzB,UAAM,UAAU,MAAM,KAAK,MAAM,IAAI,SAAS;AAC9C,QAAI,WAAW,KAAM;AACrB,QAAI,aAAa,KAAM,OAAM,KAAK,kBAAkB,WAAW,OAAO;AACtE,QAAI,cAAc,KAAK;AACrB,YAAM,KAAK,MAAM,IAAI,KAAK,WAAW,SAAS,iBAAiB;AACjE,eAAW,aAAa,KAAK;AAC3B,YAAM,KAAK,MAAM;AAAA,QACf,SAAS,iBAAiB,KAAK,aAAa,SAAS;AAAA,QACrD;AAAA,QACA;AAAA,MACF;AAAA,EACJ,UAAE;AACA,YAAQ,QAAQ;AAChB,QAAI,cAAc,IAAI,OAAO,MAAM,QAAQ,QAAS,eAAc,OAAO,OAAO;AAAA,EAClF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { type JsonObject, type JsonValue } from '@finalai/agent-provider';
|
|
2
|
-
export declare const slackChannel: (options?: JsonObject) => import("@finalai/agent-provider").ChannelDefinitionIface<{
|
|
3
|
-
history: "none" | "linked-members";
|
|
4
|
-
baseUrl?: string | undefined;
|
|
5
|
-
}, JsonValue, {
|
|
6
|
-
text: string;
|
|
7
|
-
}>;
|