@rudderhq/server 0.6.4-canary.1 → 0.6.4
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/bundled-plugins/plugin-linear/dist/worker.js +2 -1
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +2 -2
- package/dist/services/chat-assistant.helpers.d.ts +2 -2
- package/dist/services/chat-assistant.helpers.d.ts.map +1 -1
- package/dist/services/chat-assistant.helpers.js +99 -46
- package/dist/services/chat-assistant.helpers.js.map +1 -1
- package/dist/services/chats.attention-order.d.ts +9 -0
- package/dist/services/chats.attention-order.d.ts.map +1 -0
- package/dist/services/chats.attention-order.js +83 -0
- package/dist/services/chats.attention-order.js.map +1 -0
- package/dist/services/chats.d.ts +3 -0
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +21 -24
- package/dist/services/chats.js.map +1 -1
- package/dist/services/chats.types.d.ts +1 -0
- package/dist/services/chats.types.d.ts.map +1 -1
- package/dist/services/messenger-thread-summary-order.d.ts +19 -0
- package/dist/services/messenger-thread-summary-order.d.ts.map +1 -0
- package/dist/services/messenger-thread-summary-order.js +77 -0
- package/dist/services/messenger-thread-summary-order.js.map +1 -0
- package/dist/services/messenger.d.ts.map +1 -1
- package/dist/services/messenger.js +32 -52
- package/dist/services/messenger.js.map +1 -1
- package/package.json +13 -13
- package/ui-dist/assets/{LibraryLiveSurface-35w3_fxQ.js → LibraryLiveSurface-BYGDPCAh.js} +1 -1
- package/ui-dist/assets/{abnfDiagram-VRR7QNED-Dhv0xxtU.js → abnfDiagram-VRR7QNED-BuPf41Ov.js} +1 -1
- package/ui-dist/assets/{arc-DFvIHWXV.js → arc-DH1titLL.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-ZJ3FMSHR-f6vpuLF3.js → architectureDiagram-ZJ3FMSHR-D3Ub5tz0.js} +1 -1
- package/ui-dist/assets/{blockDiagram-677ZJIJ3-v-51bTH8.js → blockDiagram-677ZJIJ3-B_4t_sHV.js} +1 -1
- package/ui-dist/assets/{c4Diagram-LMCZKHZV-CEUfIEhw.js → c4Diagram-LMCZKHZV-B-soFVrZ.js} +1 -1
- package/ui-dist/assets/channel-CZC9_c_3.js +1 -0
- package/ui-dist/assets/{chunk-2Q5K7J3B-Dv1J_fsv.js → chunk-2Q5K7J3B-BGfGs2NP.js} +1 -1
- package/ui-dist/assets/{chunk-32BRIVSS-BbJG1iXS.js → chunk-32BRIVSS-Cu0E6tPd.js} +1 -1
- package/ui-dist/assets/{chunk-5VM5RSS4-u9JGTpz8.js → chunk-5VM5RSS4-D5Y7JsX8.js} +1 -1
- package/ui-dist/assets/{chunk-EX3LRPZG-Hj2VBVzw.js → chunk-EX3LRPZG-BLXD3A6J.js} +1 -1
- package/ui-dist/assets/{chunk-JWPE2WC7-BAa23bsq.js → chunk-JWPE2WC7-C413O18H.js} +1 -1
- package/ui-dist/assets/{chunk-MOJQB5TN-CU9-2bhz.js → chunk-MOJQB5TN-CzRq4bbZ.js} +1 -1
- package/ui-dist/assets/{chunk-RYQCIY6F-CdGeU79r.js → chunk-RYQCIY6F-byDG4eCj.js} +1 -1
- package/ui-dist/assets/{chunk-V7JOEXUC-DyTxXRMd.js → chunk-V7JOEXUC-CDBUHk1v.js} +1 -1
- package/ui-dist/assets/{chunk-VR4S4FIN-Cs_r7RBs.js → chunk-VR4S4FIN-Bp_TRpmk.js} +1 -1
- package/ui-dist/assets/{chunk-XXDRQBXY-M4_VMuCU.js → chunk-XXDRQBXY-D-QWDkdZ.js} +1 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-sxtEnlRf.js +1 -0
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-sxtEnlRf.js +1 -0
- package/ui-dist/assets/{cose-bilkent-JH36ORCC-DRNgpn4a.js → cose-bilkent-JH36ORCC-B1bR0N3m.js} +1 -1
- package/ui-dist/assets/{cynefin-VYW2F7L2-CaTf4KtD.js → cynefin-VYW2F7L2-BCepEAz0.js} +1 -1
- package/ui-dist/assets/{cynefinDiagram-TSTJHNR4-CllIo2pN.js → cynefinDiagram-TSTJHNR4-CaMhKyeg.js} +1 -1
- package/ui-dist/assets/{dagre-VKFMJZFB-C_G0ab-3.js → dagre-VKFMJZFB-DIZJ3GRL.js} +1 -1
- package/ui-dist/assets/{diagram-FQU43EPY-Cb0OGu_Y.js → diagram-FQU43EPY-DnKk9QsR.js} +1 -1
- package/ui-dist/assets/{diagram-G47NLZAW--Xkl09SK.js → diagram-G47NLZAW-e4Pt0qJn.js} +1 -1
- package/ui-dist/assets/{diagram-NH7WQ7WH-BRHnazbd.js → diagram-NH7WQ7WH-MaETHf6Z.js} +1 -1
- package/ui-dist/assets/{diagram-OA4YK3LP-BlQ5lXsr.js → diagram-OA4YK3LP-CrfbyBKn.js} +1 -1
- package/ui-dist/assets/{diagram-WEI45ONY-B_1e4P0g.js → diagram-WEI45ONY-D3l3n8Xh.js} +1 -1
- package/ui-dist/assets/{ebnfDiagram-CCIWWBDH-laqGLfXW.js → ebnfDiagram-CCIWWBDH-0e6GjJdn.js} +1 -1
- package/ui-dist/assets/{erDiagram-Q63AITRT-B_9drajj.js → erDiagram-Q63AITRT-Bv_UPQa5.js} +1 -1
- package/ui-dist/assets/{flowDiagram-23GEKE2U-BXR0zHIm.js → flowDiagram-23GEKE2U-BCPSCYJX.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-NO4QXBWP-QgWmPEew.js → ganttDiagram-NO4QXBWP-BvBJ-w8a.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-IHSO6WYX-DrHWsh6Q.js → gitGraphDiagram-IHSO6WYX-BvfnIqQ3.js} +1 -1
- package/ui-dist/assets/{graph-C_mw2fOC.js → graph-CKp3e73u.js} +1 -1
- package/ui-dist/assets/{index-P6253iQv.js → index-1WkRk1D_.js} +1 -1
- package/ui-dist/assets/{index-cFaYhYwz.js → index-BDtzqInY.js} +1 -1
- package/ui-dist/assets/{index-CxHK36lc.js → index-BKrew0qD.js} +1 -1
- package/ui-dist/assets/{index-BH-0qEn9.js → index-B_311RHm.js} +1 -1
- package/ui-dist/assets/{index-BY6Czltl.js → index-BcTmW8r5.js} +1 -1
- package/ui-dist/assets/{index-0SpIgZIH.js → index-Bvk3sJ4J.js} +1 -1
- package/ui-dist/assets/{index-DZmDtPI6.js → index-C3BGz_2D.js} +613 -612
- package/ui-dist/assets/{index-tVYvgkRA.js → index-CDk7NiAo.js} +1 -1
- package/ui-dist/assets/index-CKPcPvS3.css +1 -0
- package/ui-dist/assets/{index-CYX2FM5m.js → index-CLzeDqFn.js} +1 -1
- package/ui-dist/assets/{index-DOpY0vh9.js → index-CRfgrN4k.js} +1 -1
- package/ui-dist/assets/{index-B7bhzn1l.js → index-CSNNTLBR.js} +1 -1
- package/ui-dist/assets/{index-_h1sczrS.js → index-CULfFGup.js} +1 -1
- package/ui-dist/assets/{index-T-JfEm56.js → index-Cu_1NsQp.js} +1 -1
- package/ui-dist/assets/{index-0-Jm5L2B.js → index-DPeDMyOQ.js} +1 -1
- package/ui-dist/assets/{index-D8AFBYhU.js → index-DtthPonZ.js} +1 -1
- package/ui-dist/assets/{index-DKP-s7g7.js → index-MiArSwLx.js} +1 -1
- package/ui-dist/assets/{index-flEteioy.js → index-cJUKED3M.js} +1 -1
- package/ui-dist/assets/{index-BIkeRnBV.js → index-f_CZrwjl.js} +1 -1
- package/ui-dist/assets/{infoDiagram-FWYZ7A6U-Dd--3lSM.js → infoDiagram-FWYZ7A6U-ByrkjU9S.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-FXEZZL3T-doel5kmR.js → ishikawaDiagram-FXEZZL3T-8titDf8e.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-5HDEW3XC-DCdAmogk.js → journeyDiagram-5HDEW3XC-n8mkJo8M.js} +1 -1
- package/ui-dist/assets/{kanban-definition-HUTT4EX6-DEPWuAVa.js → kanban-definition-HUTT4EX6-JlB3JGBe.js} +1 -1
- package/ui-dist/assets/{layout-CyPpDJ6_.js → layout-DCNnWX7r.js} +1 -1
- package/ui-dist/assets/{linear-gUBAwqov.js → linear-CMOK2-kt.js} +1 -1
- package/ui-dist/assets/{map-C_s7GPzK.js → map-CSzyzxdL.js} +1 -1
- package/ui-dist/assets/{mermaid.core-dExdTvuF.js → mermaid.core-BuQnoLnI.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-LN4V7U3C-3fj_mF7H.js → mindmap-definition-LN4V7U3C-CYz_8aBN.js} +1 -1
- package/ui-dist/assets/{pegDiagram-2B236MQR-DB0yU8pH.js → pegDiagram-2B236MQR-Dlj3K_xa.js} +1 -1
- package/ui-dist/assets/{pieDiagram-ENE6RG2P-DCdJaexv.js → pieDiagram-ENE6RG2P-Cd4Hr2yQ.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-ABIIQ3AL-DHoOUf-F.js → quadrantDiagram-ABIIQ3AL-VIWzo7W3.js} +1 -1
- package/ui-dist/assets/{railroadDiagram-RFXS5EU6-Cn940FHA.js → railroadDiagram-RFXS5EU6-RWT8aPTm.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-TGXJPOKE-CR-MbEJs.js → requirementDiagram-TGXJPOKE-DzEBALwn.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-HTMAVEWB-DMuBKI1F.js → sankeyDiagram-HTMAVEWB-1q1ZhqTw.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-DBY2YBRQ-ptjkJNb5.js → sequenceDiagram-DBY2YBRQ-CvPUCZ_4.js} +1 -1
- package/ui-dist/assets/{sizeCapture-X5ZJPWSS-BTPniWdc.js → sizeCapture-X5ZJPWSS-CjzghhU-.js} +1 -1
- package/ui-dist/assets/{stateDiagram-2N3HPSRC-DHJme_9A.js → stateDiagram-2N3HPSRC-CwZIPmK_.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-B7uBEfJf.js +1 -0
- package/ui-dist/assets/{swimlanes-5IMT3BWC-M3iBkiwC.js → swimlanes-5IMT3BWC-qeMRea7p.js} +2 -2
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-tlZRXZ3y.js +8 -0
- package/ui-dist/assets/{timeline-definition-FHXFAJF6-CUt2dvL3.js → timeline-definition-FHXFAJF6-CqIBt6vj.js} +1 -1
- package/ui-dist/assets/{vennDiagram-L72KCM5P-B5F5ljLK.js → vennDiagram-L72KCM5P-Bogykgch.js} +1 -1
- package/ui-dist/assets/{wardleyDiagram-EHGQE667-C6wXJYop.js → wardleyDiagram-EHGQE667-CkOjBhXW.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-FW5EYKEG-C26OKbOf.js → xychartDiagram-FW5EYKEG-CRwvPfWB.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/channel-Ms_b63fe.js +0 -1
- package/ui-dist/assets/classDiagram-OUVF2IWQ-BxB3ibLJ.js +0 -1
- package/ui-dist/assets/classDiagram-v2-EOCWNBFH-BxB3ibLJ.js +0 -1
- package/ui-dist/assets/index-B9KXU22E.css +0 -1
- package/ui-dist/assets/stateDiagram-v2-6OUMAXLB-DCXimvn3.js +0 -1
- package/ui-dist/assets/swimlanesDiagram-G3AALYLV-BM9-nPMw.js +0 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chats.types.d.ts","sourceRoot":"","sources":["../../src/services/chats.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,KAAK,UAAU,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAC7C,iBAAiB,CAAC,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC"}
|
|
1
|
+
{"version":3,"file":"chats.types.d.ts","sourceRoot":"","sources":["../../src/services/chats.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,KAAK,UAAU,GAAG,OAAO,YAAY,CAAC,YAAY,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,iBAAiB,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAC7C,iBAAiB,CAAC,EAAE;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,GAAG,IAAI,CAAC;CACV,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { MessengerThreadSummary } from "@rudderhq/shared";
|
|
2
|
+
export type ThreadSummaryCursor = {
|
|
3
|
+
attentionRank: number;
|
|
4
|
+
activityAt: string;
|
|
5
|
+
title: string;
|
|
6
|
+
threadKey: string;
|
|
7
|
+
isPinned: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function threadSummaryAttentionRank(summary: Pick<MessengerThreadSummary, "unreadCount" | "needsAttention" | "metadata">): 0 | 1 | 2;
|
|
10
|
+
type OrderableThreadSummary = Pick<MessengerThreadSummary, "latestActivityAt" | "title" | "unreadCount" | "needsAttention" | "metadata"> & {
|
|
11
|
+
threadKey?: string;
|
|
12
|
+
isPinned?: boolean;
|
|
13
|
+
};
|
|
14
|
+
export declare function comparePinnedThenLatest(a: OrderableThreadSummary, b: OrderableThreadSummary): number;
|
|
15
|
+
export declare function encodeThreadSummaryCursor(summary: MessengerThreadSummary): string;
|
|
16
|
+
export declare function decodeThreadSummaryCursor(cursor: string | null | undefined): ThreadSummaryCursor | null;
|
|
17
|
+
export declare function threadSummaryIsAfterCursor(summary: MessengerThreadSummary, cursor: ThreadSummaryCursor | null): boolean;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=messenger-thread-summary-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-thread-summary-order.d.ts","sourceRoot":"","sources":["../../src/services/messenger-thread-summary-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,GAAG,gBAAgB,GAAG,UAAU,CAAC,aAUrF;AAED,KAAK,sBAAsB,GAAG,IAAI,CAChC,sBAAsB,EACtB,kBAAkB,GAAG,OAAO,GAAG,aAAa,GAAG,gBAAgB,GAAG,UAAU,CAC7E,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/C,wBAAgB,uBAAuB,CACrC,CAAC,EAAE,sBAAsB,EACzB,CAAC,EAAE,sBAAsB,UAW1B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,sBAAsB,UAYxE;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,mBAAmB,GAAG,IAAI,CA0B5B;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,sBAAsB,EAC/B,MAAM,EAAE,mBAAmB,GAAG,IAAI,WAYnC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
export function threadSummaryAttentionRank(summary) {
|
|
2
|
+
if (summary.unreadCount > 0 || summary.needsAttention)
|
|
3
|
+
return 0;
|
|
4
|
+
if ((typeof summary.metadata?.activeExecutionRunId === "string"
|
|
5
|
+
&& summary.metadata.activeExecutionRunId.length > 0)
|
|
6
|
+
|| (typeof summary.metadata?.activeGenerationId === "string"
|
|
7
|
+
&& summary.metadata.activeGenerationId.length > 0))
|
|
8
|
+
return 1;
|
|
9
|
+
return 2;
|
|
10
|
+
}
|
|
11
|
+
export function comparePinnedThenLatest(a, b) {
|
|
12
|
+
const pinnedDiff = Number(Boolean(b.isPinned)) - Number(Boolean(a.isPinned));
|
|
13
|
+
if (pinnedDiff !== 0)
|
|
14
|
+
return pinnedDiff;
|
|
15
|
+
const attentionDiff = threadSummaryAttentionRank(a) - threadSummaryAttentionRank(b);
|
|
16
|
+
if (attentionDiff !== 0)
|
|
17
|
+
return attentionDiff;
|
|
18
|
+
const aTime = a.latestActivityAt?.getTime() ?? Number.NEGATIVE_INFINITY;
|
|
19
|
+
const bTime = b.latestActivityAt?.getTime() ?? Number.NEGATIVE_INFINITY;
|
|
20
|
+
if (aTime !== bTime)
|
|
21
|
+
return bTime - aTime;
|
|
22
|
+
const titleDiff = a.title.localeCompare(b.title);
|
|
23
|
+
return titleDiff || (a.threadKey ?? "").localeCompare(b.threadKey ?? "");
|
|
24
|
+
}
|
|
25
|
+
export function encodeThreadSummaryCursor(summary) {
|
|
26
|
+
const activityAt = summary.latestActivityAt
|
|
27
|
+
? new Date(summary.latestActivityAt)
|
|
28
|
+
: new Date(0);
|
|
29
|
+
const payload = {
|
|
30
|
+
attentionRank: threadSummaryAttentionRank(summary),
|
|
31
|
+
activityAt: (Number.isNaN(activityAt.getTime()) ? new Date(0) : activityAt).toISOString(),
|
|
32
|
+
title: summary.title,
|
|
33
|
+
threadKey: summary.threadKey,
|
|
34
|
+
isPinned: summary.isPinned,
|
|
35
|
+
};
|
|
36
|
+
return Buffer.from(JSON.stringify(payload), "utf8").toString("base64url");
|
|
37
|
+
}
|
|
38
|
+
export function decodeThreadSummaryCursor(cursor) {
|
|
39
|
+
if (!cursor)
|
|
40
|
+
return null;
|
|
41
|
+
try {
|
|
42
|
+
const decoded = JSON.parse(Buffer.from(cursor, "base64url").toString("utf8"));
|
|
43
|
+
if (typeof decoded.activityAt !== "string"
|
|
44
|
+
|| Number.isNaN(new Date(decoded.activityAt).getTime())
|
|
45
|
+
|| typeof decoded.title !== "string"
|
|
46
|
+
|| typeof decoded.threadKey !== "string"
|
|
47
|
+
|| decoded.threadKey.length === 0)
|
|
48
|
+
return null;
|
|
49
|
+
return {
|
|
50
|
+
attentionRank: typeof decoded.attentionRank === "number"
|
|
51
|
+
&& Number.isFinite(decoded.attentionRank)
|
|
52
|
+
? decoded.attentionRank
|
|
53
|
+
: 2,
|
|
54
|
+
activityAt: decoded.activityAt,
|
|
55
|
+
title: decoded.title,
|
|
56
|
+
threadKey: decoded.threadKey,
|
|
57
|
+
isPinned: decoded.isPinned === true,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
export function threadSummaryIsAfterCursor(summary, cursor) {
|
|
65
|
+
if (!cursor)
|
|
66
|
+
return true;
|
|
67
|
+
return comparePinnedThenLatest(summary, {
|
|
68
|
+
latestActivityAt: new Date(cursor.activityAt),
|
|
69
|
+
title: cursor.title,
|
|
70
|
+
threadKey: cursor.threadKey,
|
|
71
|
+
isPinned: cursor.isPinned,
|
|
72
|
+
unreadCount: cursor.attentionRank === 0 ? 1 : 0,
|
|
73
|
+
needsAttention: cursor.attentionRank === 0,
|
|
74
|
+
metadata: cursor.attentionRank === 1 ? { activeGenerationId: "cursor" } : undefined,
|
|
75
|
+
}) > 0;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=messenger-thread-summary-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messenger-thread-summary-order.js","sourceRoot":"","sources":["../../src/services/messenger-thread-summary-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../../src/services/messenger.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAkBvC,OAAO,
|
|
1
|
+
{"version":3,"file":"messenger.d.ts","sourceRoot":"","sources":["../../src/services/messenger.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import { issueLowSignalContentOnlyActivitySql } from "./issue-activity-filters.j
|
|
|
10
10
|
import { hydrateMessengerFailedRunOrigins, messengerFailedRunSourceAction, } from "./messenger-run-origin.js";
|
|
11
11
|
import { failedRunUserSummary } from "./messenger-run-summary.js";
|
|
12
12
|
import { lockMessengerCustomGroupPlacement, lockMessengerSavedViewPlacement, } from "./messenger-saved-views.js";
|
|
13
|
+
import { comparePinnedThenLatest, decodeThreadSummaryCursor, encodeThreadSummaryCursor, threadSummaryIsAfterCursor, } from "./messenger-thread-summary-order.js";
|
|
13
14
|
const ISSUE_ACTIVITY_ACTIONS = [
|
|
14
15
|
"issue.updated",
|
|
15
16
|
"issue.followed",
|
|
@@ -56,13 +57,6 @@ function compareLatestActivity(a, b) {
|
|
|
56
57
|
return titleDiff;
|
|
57
58
|
return (a.threadKey ?? "").localeCompare(b.threadKey ?? "");
|
|
58
59
|
}
|
|
59
|
-
function comparePinnedThenLatest(a, b) {
|
|
60
|
-
const aPinned = Boolean(a.isPinned);
|
|
61
|
-
const bPinned = Boolean(b.isPinned);
|
|
62
|
-
if (aPinned !== bPinned)
|
|
63
|
-
return aPinned ? -1 : 1;
|
|
64
|
-
return compareLatestActivity(a, b);
|
|
65
|
-
}
|
|
66
60
|
function compareChronologicalActivity(a, b) {
|
|
67
61
|
const aTime = a.latestActivityAt?.getTime() ?? Number.NEGATIVE_INFINITY;
|
|
68
62
|
const bTime = b.latestActivityAt?.getTime() ?? Number.NEGATIVE_INFINITY;
|
|
@@ -80,47 +74,6 @@ function normalizeThreadSummaryLimit(limit) {
|
|
|
80
74
|
return DEFAULT_THREAD_SUMMARY_LIMIT;
|
|
81
75
|
return Math.min(MAX_THREAD_SUMMARY_LIMIT, Math.max(1, Math.floor(limit)));
|
|
82
76
|
}
|
|
83
|
-
function encodeThreadSummaryCursor(summary) {
|
|
84
|
-
const payload = {
|
|
85
|
-
activityAt: (normalizeDate(summary.latestActivityAt) ?? new Date(0)).toISOString(),
|
|
86
|
-
title: summary.title,
|
|
87
|
-
threadKey: summary.threadKey,
|
|
88
|
-
isPinned: summary.isPinned,
|
|
89
|
-
};
|
|
90
|
-
return Buffer.from(JSON.stringify(payload), "utf8").toString("base64url");
|
|
91
|
-
}
|
|
92
|
-
function decodeThreadSummaryCursor(cursor) {
|
|
93
|
-
if (!cursor)
|
|
94
|
-
return null;
|
|
95
|
-
try {
|
|
96
|
-
const decoded = JSON.parse(Buffer.from(cursor, "base64url").toString("utf8"));
|
|
97
|
-
if (typeof decoded.activityAt !== "string" || Number.isNaN(new Date(decoded.activityAt).getTime()))
|
|
98
|
-
return null;
|
|
99
|
-
if (typeof decoded.title !== "string")
|
|
100
|
-
return null;
|
|
101
|
-
if (typeof decoded.threadKey !== "string" || decoded.threadKey.length === 0)
|
|
102
|
-
return null;
|
|
103
|
-
return {
|
|
104
|
-
activityAt: decoded.activityAt,
|
|
105
|
-
title: decoded.title,
|
|
106
|
-
threadKey: decoded.threadKey,
|
|
107
|
-
isPinned: decoded.isPinned === true,
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
catch {
|
|
111
|
-
return null;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
function threadSummaryIsAfterCursor(summary, cursor) {
|
|
115
|
-
if (!cursor)
|
|
116
|
-
return true;
|
|
117
|
-
return comparePinnedThenLatest(summary, {
|
|
118
|
-
latestActivityAt: new Date(cursor.activityAt),
|
|
119
|
-
title: cursor.title,
|
|
120
|
-
threadKey: cursor.threadKey,
|
|
121
|
-
isPinned: cursor.isPinned,
|
|
122
|
-
}) > 0;
|
|
123
|
-
}
|
|
124
77
|
function threadSummaryPageInfo(limit, items, hasMore) {
|
|
125
78
|
return {
|
|
126
79
|
limit,
|
|
@@ -396,6 +349,7 @@ function chatSummary(conversation) {
|
|
|
396
349
|
routedAgentId: conversation.routedAgentId,
|
|
397
350
|
runtimeAgentId: conversation.chatRuntime?.runtimeAgentId ?? null,
|
|
398
351
|
latestUserMessagePreview: conversation.latestUserMessagePreview,
|
|
352
|
+
activeGenerationId: conversation.activeGenerationId ?? null,
|
|
399
353
|
...(conversation.sourceMetadata ?? {}),
|
|
400
354
|
},
|
|
401
355
|
};
|
|
@@ -530,7 +484,7 @@ function issueCard(issue, currentUserId, followed, latestPreview, latestActivity
|
|
|
530
484
|
sourceCommentBody: sourceComment?.body ?? null,
|
|
531
485
|
};
|
|
532
486
|
}
|
|
533
|
-
function approvalCard(approval, latestComment, currentUserId, latestActivityAt) {
|
|
487
|
+
function approvalCard(approval, requesterAgent, latestComment, currentUserId, latestActivityAt) {
|
|
534
488
|
const payloadPreview = summarizeApprovalPayload(approval);
|
|
535
489
|
const body = latestComment ? truncate(latestComment.body) : approval.decisionNote ?? payloadPreview;
|
|
536
490
|
const title = approval.type === "chat_issue_creation"
|
|
@@ -557,6 +511,7 @@ function approvalCard(approval, latestComment, currentUserId, latestActivityAt)
|
|
|
557
511
|
requester: approvalRequesterLabel(approval, currentUserId),
|
|
558
512
|
},
|
|
559
513
|
approval: approval,
|
|
514
|
+
requesterAgent,
|
|
560
515
|
};
|
|
561
516
|
}
|
|
562
517
|
function failedRunCard(run, agentName, origin) {
|
|
@@ -1758,10 +1713,34 @@ export function messengerService(db) {
|
|
|
1758
1713
|
}
|
|
1759
1714
|
}
|
|
1760
1715
|
const typedApprovalRows = approvalRows;
|
|
1716
|
+
const requesterAgentIds = typedApprovalRows
|
|
1717
|
+
.map((approval) => approval.requestedByAgentId)
|
|
1718
|
+
.filter((agentId) => Boolean(agentId));
|
|
1719
|
+
const requesterAgents = requesterAgentIds.length > 0
|
|
1720
|
+
? await db
|
|
1721
|
+
.select({
|
|
1722
|
+
id: agents.id,
|
|
1723
|
+
name: agents.name,
|
|
1724
|
+
icon: agents.icon,
|
|
1725
|
+
role: agents.role,
|
|
1726
|
+
})
|
|
1727
|
+
.from(agents)
|
|
1728
|
+
.where(and(eq(agents.orgId, orgId), inArray(agents.id, requesterAgentIds)))
|
|
1729
|
+
: [];
|
|
1730
|
+
const requesterAgentById = new Map(requesterAgents.map((agent) => [
|
|
1731
|
+
agent.id,
|
|
1732
|
+
{
|
|
1733
|
+
...agent,
|
|
1734
|
+
role: agent.role,
|
|
1735
|
+
},
|
|
1736
|
+
]));
|
|
1761
1737
|
const unsortedItems = typedApprovalRows.map((approval) => {
|
|
1762
1738
|
const latestComment = latestCommentByApproval.get(approval.id) ?? null;
|
|
1763
1739
|
const latestActivityAt = maxDate(approval.updatedAt, latestComment?.createdAt) ?? approval.updatedAt;
|
|
1764
|
-
|
|
1740
|
+
const requesterAgent = approval.requestedByAgentId
|
|
1741
|
+
? requesterAgentById.get(approval.requestedByAgentId) ?? null
|
|
1742
|
+
: null;
|
|
1743
|
+
return approvalCard(approval, requesterAgent, latestComment, userId, latestActivityAt);
|
|
1765
1744
|
});
|
|
1766
1745
|
const latestFirstItems = [...unsortedItems].sort(compareLatestActivity);
|
|
1767
1746
|
const chronologicalItems = [...unsortedItems].sort(compareChronologicalActivity);
|
|
@@ -1865,13 +1844,13 @@ export function messengerService(db) {
|
|
|
1865
1844
|
if (latestApproval) {
|
|
1866
1845
|
const latestComment = (latestApprovalCommentRows[0] ?? null);
|
|
1867
1846
|
const latestActivityAt = maxDate(latestApproval.updatedAt, latestComment?.createdAt) ?? latestApproval.updatedAt;
|
|
1868
|
-
candidateItems.push(approvalCard(latestApproval, latestComment, userId, latestActivityAt));
|
|
1847
|
+
candidateItems.push(approvalCard(latestApproval, null, latestComment, userId, latestActivityAt));
|
|
1869
1848
|
}
|
|
1870
1849
|
if (latestCommentRow) {
|
|
1871
1850
|
const approval = (latestCommentApprovalRows[0] ?? null);
|
|
1872
1851
|
if (approval) {
|
|
1873
1852
|
const latestActivityAt = maxDate(approval.updatedAt, latestCommentRow.createdAt) ?? approval.updatedAt;
|
|
1874
|
-
candidateItems.push(approvalCard(approval, latestCommentRow, userId, latestActivityAt));
|
|
1853
|
+
candidateItems.push(approvalCard(approval, null, latestCommentRow, userId, latestActivityAt));
|
|
1875
1854
|
}
|
|
1876
1855
|
}
|
|
1877
1856
|
const latestItem = candidateItems.sort(compareLatestActivity)[0] ?? null;
|
|
@@ -2147,6 +2126,7 @@ export function messengerService(db) {
|
|
|
2147
2126
|
const syntheticAfterCursor = syntheticSummaries.filter((summary) => threadSummaryIsAfterCursor(summary, cursor));
|
|
2148
2127
|
const chatAfter = cursor && !cursor.isPinned
|
|
2149
2128
|
? {
|
|
2129
|
+
attentionRank: cursor.attentionRank,
|
|
2150
2130
|
activityAt: new Date(cursor.activityAt),
|
|
2151
2131
|
title: cursor.title,
|
|
2152
2132
|
threadKey: cursor.threadKey,
|