opensentinel 3.1.1 → 3.6.1
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 +126 -83
- package/dist/agent-manager-7N7REQZQ.js +39 -0
- package/dist/agent-processor-I23VWQY3.js +280 -0
- package/dist/agent-processor-I23VWQY3.js.map +1 -0
- package/dist/agent-types-2T4PXLFQ.js +12 -0
- package/dist/alerting-4I37GG4U.js +699 -0
- package/dist/alerting-4I37GG4U.js.map +1 -0
- package/dist/analysis-agent-JWN2GXYE.js +288 -0
- package/dist/analysis-agent-JWN2GXYE.js.map +1 -0
- package/dist/{archiver-AVNBYCKQ.js → archiver-XLRIIXPY.js} +86 -17
- package/dist/archiver-XLRIIXPY.js.map +1 -0
- package/dist/{audit-logger-OBPR7CRO.js → audit-logger-AU3TMWKI.js} +6 -5
- package/dist/{auth-UOX5K2BE.js → auth-PH5IHISW.js} +2 -2
- package/dist/{autonomy-ZXDBDQUJ.js → autonomy-N7W5XPLX.js} +4 -3
- package/dist/autonomy-N7W5XPLX.js.map +1 -0
- package/dist/{aws-s3-Q4LLZZPD.js → aws-s3-QZMURYXB.js} +2 -2
- package/dist/{backup-restore-PZ7CYYB7.js → backup-restore-72OQTZO3.js} +2 -2
- package/dist/{blocks-R3PODY47.js → blocks-YOWOESDD.js} +4 -4
- package/dist/bot-MU2TJQ3Y.js +46 -0
- package/dist/brain-SLA474EU.js +65 -0
- package/dist/{camera-monitor-M5CYKUU4.js → camera-monitor-LHTUWHEL.js} +2 -2
- package/dist/{charts-V7ARZNKF.js → charts-FJ32GQK7.js} +2 -2
- package/dist/{chunk-6PMVAAA7.js → chunk-2RGPWU77.js} +3 -3
- package/dist/{chunk-TVEWKIK3.js → chunk-2WTKTG2C.js} +2 -2
- package/dist/{chunk-MXAPLSJ5.js → chunk-45YXODSB.js} +2 -2
- package/dist/{chunk-SJSUSJ47.js → chunk-4YJRBMMA.js} +2 -2
- package/dist/chunk-643M3AP5.js +564 -0
- package/dist/chunk-643M3AP5.js.map +1 -0
- package/dist/{chunk-766ASQWE.js → chunk-6JY4HNUH.js} +2413 -2368
- package/dist/chunk-6JY4HNUH.js.map +1 -0
- package/dist/chunk-6LTLIYAQ.js +194 -0
- package/dist/chunk-6LTLIYAQ.js.map +1 -0
- package/dist/chunk-6UZPE35A.js +724 -0
- package/dist/chunk-6UZPE35A.js.map +1 -0
- package/dist/chunk-6W6PTJFT.js +181 -0
- package/dist/chunk-6W6PTJFT.js.map +1 -0
- package/dist/chunk-7MZN73J2.js +162 -0
- package/dist/chunk-7MZN73J2.js.map +1 -0
- package/dist/{chunk-SVAPX2XN.js → chunk-A24GPVLY.js} +9 -7
- package/dist/{chunk-SVAPX2XN.js.map → chunk-A24GPVLY.js.map} +1 -1
- package/dist/chunk-AD6YEH6U.js +3408 -0
- package/dist/chunk-AD6YEH6U.js.map +1 -0
- package/dist/chunk-ADTDYJO7.js +265 -0
- package/dist/chunk-ADTDYJO7.js.map +1 -0
- package/dist/{chunk-WRAKK6K6.js → chunk-AR34B6XR.js} +5 -3
- package/dist/{chunk-WRAKK6K6.js.map → chunk-AR34B6XR.js.map} +1 -1
- package/dist/chunk-BMOUYXLX.js +418 -0
- package/dist/chunk-BMOUYXLX.js.map +1 -0
- package/dist/chunk-C6PELIHS.js +60 -0
- package/dist/chunk-C6PELIHS.js.map +1 -0
- package/dist/{chunk-MQJ2ECQT.js → chunk-CUPEENUY.js} +3 -3
- package/dist/{chunk-RZ4YESBG.js → chunk-DOYGMNMK.js} +1 -1
- package/dist/chunk-DOYGMNMK.js.map +1 -0
- package/dist/chunk-FFV2SXFD.js +380 -0
- package/dist/chunk-FFV2SXFD.js.map +1 -0
- package/dist/{chunk-EVE7MIIY.js → chunk-GUKKW7JI.js} +15 -16
- package/dist/chunk-GUKKW7JI.js.map +1 -0
- package/dist/{chunk-66OJ3WB4.js → chunk-H3BOLSTS.js} +2 -2
- package/dist/chunk-HKOPRRDJ.js +1021 -0
- package/dist/chunk-HKOPRRDJ.js.map +1 -0
- package/dist/{chunk-BXZ6EA52.js → chunk-HTF2GIQC.js} +57 -3
- package/dist/chunk-HTF2GIQC.js.map +1 -0
- package/dist/{chunk-TYAGMJNV.js → chunk-JOA5A3G3.js} +5 -5
- package/dist/{chunk-OCVQGBJK.js → chunk-KABG5PG3.js} +6 -4
- package/dist/{chunk-OCVQGBJK.js.map → chunk-KABG5PG3.js.map} +1 -1
- package/dist/{chunk-VEHFVBLI.js → chunk-KT7NLIXP.js} +2 -2
- package/dist/chunk-LFDXEYYB.js +150 -0
- package/dist/chunk-LFDXEYYB.js.map +1 -0
- package/dist/{chunk-I6BDYQIG.js → chunk-M7YLQHFP.js} +6 -6
- package/dist/chunk-M7YLQHFP.js.map +1 -0
- package/dist/{chunk-AYUKPTSM.js → chunk-MFK34XSY.js} +96 -218
- package/dist/chunk-MFK34XSY.js.map +1 -0
- package/dist/chunk-MIC5IBQF.js +386 -0
- package/dist/chunk-MIC5IBQF.js.map +1 -0
- package/dist/{chunk-4UOE5TUZ.js → chunk-NMSHVO5O.js} +4 -4
- package/dist/{chunk-XKYRH4FM.js → chunk-NYVBXUGD.js} +13 -32
- package/dist/chunk-NYVBXUGD.js.map +1 -0
- package/dist/chunk-ODCFS5WD.js +463 -0
- package/dist/chunk-ODCFS5WD.js.map +1 -0
- package/dist/{chunk-ZLZKF2PM.js → chunk-PUNIMPMY.js} +32 -2
- package/dist/chunk-PUNIMPMY.js.map +1 -0
- package/dist/chunk-S4NJJS5C.js +37 -0
- package/dist/chunk-S4NJJS5C.js.map +1 -0
- package/dist/{chunk-NHMBTUMW.js → chunk-TAAZB5KN.js} +2 -2
- package/dist/{chunk-BRBWNV65.js → chunk-U2X2J3FI.js} +3 -3
- package/dist/chunk-U2X2J3FI.js.map +1 -0
- package/dist/{chunk-PLDDJCW6.js → chunk-UP2VWCW5.js} +1 -12
- package/dist/{chunk-4GLYY4NN.js → chunk-UWUIJTT4.js} +8 -2
- package/dist/chunk-UWUIJTT4.js.map +1 -0
- package/dist/{chunk-SPPMCAKG.js → chunk-VKMFUIVA.js} +2 -2
- package/dist/chunk-VKMFUIVA.js.map +1 -0
- package/dist/chunk-WZAH34TG.js +129 -0
- package/dist/chunk-WZAH34TG.js.map +1 -0
- package/dist/{chunk-H5RQOFO2.js → chunk-X6Q3K3L2.js} +6 -6
- package/dist/chunk-X6Q3K3L2.js.map +1 -0
- package/dist/chunk-XTX7EK43.js +134 -0
- package/dist/chunk-XTX7EK43.js.map +1 -0
- package/dist/chunk-ZIYTHUM5.js +457 -0
- package/dist/chunk-ZIYTHUM5.js.map +1 -0
- package/dist/chunker-K6WTR62A.js +12 -0
- package/dist/cli.js +1 -1
- package/dist/{client-ZQSFPMOB.js → client-FOIYPOZQ.js} +5 -6
- package/dist/{clipboard-manager-TEO2GEDN.js → clipboard-manager-4SBNESGZ.js} +2 -2
- package/dist/coding-agent-DESSU3AC.js +233 -0
- package/dist/coding-agent-DESSU3AC.js.map +1 -0
- package/dist/commands/setup.js +1 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/status.js +1 -1
- package/dist/commands/stop.js +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/cost-tracker-EMOIOYH7.js +11 -0
- package/dist/{cron-explain-HHQKPD3M.js → cron-explain-UOOOYWZZ.js} +2 -2
- package/dist/{crypto-4AP47IKC.js → crypto-2VG3RJR2.js} +2 -2
- package/dist/{databases-37X4CI2Y.js → databases-XDPMG5AV.js} +4 -4
- package/dist/db-LRIOKQBO.js +77 -0
- package/dist/discord-NKR3X4AV.js +80 -0
- package/dist/documents-EYIYLZK2.js +184 -0
- package/dist/documents-EYIYLZK2.js.map +1 -0
- package/dist/docx-parser-EXL4TN5E.js +16 -0
- package/dist/{email-K7LO2IPB.js → email-EAQNULVD.js} +33 -25
- package/dist/{email-K7LO2IPB.js.map → email-EAQNULVD.js.map} +1 -1
- package/dist/{enhanced-retrieval-DNLLEM4Z.js → enhanced-retrieval-OGHT6TS5.js} +11 -8
- package/dist/{enhanced-retrieval-DNLLEM4Z.js.map → enhanced-retrieval-OGHT6TS5.js.map} +1 -1
- package/dist/enrichment-pipeline-CMUVBDC7.js +14 -0
- package/dist/{entity-resolution-Y3IUWEAT.js → entity-resolution-4X4JU43O.js} +6 -5
- package/dist/env-CHOFICED.js +12 -0
- package/dist/error-tracker-SVQSDQDW.js +32 -0
- package/dist/finnhub-X7ZMQSXF.js +178 -0
- package/dist/finnhub-X7ZMQSXF.js.map +1 -0
- package/dist/fred-TMUF3J2V.js +203 -0
- package/dist/fred-TMUF3J2V.js.map +1 -0
- package/dist/github-KGNILDWJ.js +833 -0
- package/dist/github-KGNILDWJ.js.map +1 -0
- package/dist/{google-workspace-DKWUVNGC.js → google-workspace-TSZPZK5G.js} +2 -2
- package/dist/{hash-tool-ULQYD7B5.js → hash-tool-ENAB5LWH.js} +2 -2
- package/dist/{heartbeat-monitor-GCISLXI3.js → heartbeat-monitor-KRDYTDBF.js} +2 -2
- package/dist/hooks-N4MIFBVM.js +14 -0
- package/dist/{image-generation-OSU7FP6F.js → image-generation-MDE6AVQO.js} +2 -2
- package/dist/imessage-V2XNDDHT.js +43 -0
- package/dist/inbox-summarizer-DKKRYXDR.js +55 -0
- package/dist/{incident-response-C5J7Q6DT.js → incident-response-ZTIKUWEO.js} +8 -6
- package/dist/{incident-response-C5J7Q6DT.js.map → incident-response-ZTIKUWEO.js.map} +1 -1
- package/dist/{inventory-manager-352OHXWD.js → inventory-manager-C67BSZM6.js} +2 -2
- package/dist/{jira-GSGDBMIG.js → jira-PAGZWUBJ.js} +2 -2
- package/dist/{json-tool-QE2SYHEG.js → json-tool-4FK5RNER.js} +2 -2
- package/dist/{key-rotation-DPHU4ZTB.js → key-rotation-WCC5FOYS.js} +2 -2
- package/dist/knowledge-base-J7PJ7MZ3.js +46 -0
- package/dist/lib.d.ts +73 -1
- package/dist/lib.js +86 -76
- package/dist/lib.js.map +1 -1
- package/dist/{mailchimp-KKNF6QJ7.js → mailchimp-ZFYDC44J.js} +2 -2
- package/dist/{matrix-QVHG76I7.js → matrix-XHTR53VQ.js} +29 -21
- package/dist/{matrix-QVHG76I7.js.map → matrix-XHTR53VQ.js.map} +1 -1
- package/dist/{mcp-3JI6W7ZE.js → mcp-3C2TN67D.js} +3 -3
- package/dist/metrics-VJDWQWU7.js +25 -0
- package/dist/{microsoft365-UCBKJHNX.js → microsoft365-6G2IJMWC.js} +2 -2
- package/dist/multi-user-S56GUD6L.js +411 -0
- package/dist/multi-user-S56GUD6L.js.map +1 -0
- package/dist/{ocr-AC7NPX33.js → ocr-LGUIPKVZ.js} +6 -4
- package/dist/{ollama-BOAMSPLJ.js → ollama-J7CU45WT.js} +2 -2
- package/dist/osint-agent-RL5XPBRQ.js +189 -0
- package/dist/osint-agent-RL5XPBRQ.js.map +1 -0
- package/dist/{pages-MI523RB7.js → pages-XDE7JRCA.js} +5 -5
- package/dist/{pair-JDFTERIK.js → pair-YZJFQUU5.js} +2 -2
- package/dist/{pairing-IFQYCPNS.js → pairing-77N47RAT.js} +2 -2
- package/dist/{pdf-ALQVOEJR.js → pdf-67HGXCFJ.js} +3 -3
- package/dist/pdf-parser-YLMTTYHL.js +14 -0
- package/dist/{presentations-DSV5IHG5.js → presentations-HXTAMGHT.js} +3 -3
- package/dist/presentations-HXTAMGHT.js.map +1 -0
- package/dist/{prometheus-JNT2BD4L.js → prometheus-YETCZO4I.js} +2 -2
- package/dist/{providers-J4LYPHDR.js → providers-H6YIC3MG.js} +6 -4
- package/dist/{qr-code-WIX4PB4U.js → qr-code-6WZJHRKL.js} +2 -2
- package/dist/{quickbooks-XB4NII2S.js → quickbooks-N675W7IK.js} +2 -2
- package/dist/{regex-tool-W4ABRKGK.js → regex-tool-6Q63LQ7B.js} +2 -2
- package/dist/regex-tool-6Q63LQ7B.js.map +1 -0
- package/dist/research-agent-WCRSY3UZ.js +168 -0
- package/dist/research-agent-WCRSY3UZ.js.map +1 -0
- package/dist/risk-engine-YKCPT5D5.js +10 -0
- package/dist/risk-engine-YKCPT5D5.js.map +1 -0
- package/dist/scheduler-CA5UNHZV.js +73 -0
- package/dist/scheduler-CA5UNHZV.js.map +1 -0
- package/dist/schema-ALJ67YVG.js +72 -0
- package/dist/schema-ALJ67YVG.js.map +1 -0
- package/dist/{search-BCLBO5E3.js → search-GMLKBHSW.js} +4 -4
- package/dist/search-GMLKBHSW.js.map +1 -0
- package/dist/{sendgrid-RNXCAFKM.js → sendgrid-QGJIVPWV.js} +2 -2
- package/dist/{shopify-NCXYJB4R.js → shopify-ON2PAU27.js} +2 -2
- package/dist/signal-X7IQJGRQ.js +43 -0
- package/dist/signal-X7IQJGRQ.js.map +1 -0
- package/dist/slack-P2LFUJUQ.js +85 -0
- package/dist/slack-P2LFUJUQ.js.map +1 -0
- package/dist/{sms-M3JIOTCW.js → sms-4VME2HUL.js} +4 -4
- package/dist/sms-4VME2HUL.js.map +1 -0
- package/dist/{src-VYUE6LRA.js → src-S5KX4YEV.js} +179 -48
- package/dist/src-S5KX4YEV.js.map +1 -0
- package/dist/{stocks-XXWBPOCU.js → stocks-4M4HZWZS.js} +2 -2
- package/dist/stocks-4M4HZWZS.js.map +1 -0
- package/dist/text-extractor-OAUBAW5P.js +12 -0
- package/dist/text-extractor-OAUBAW5P.js.map +1 -0
- package/dist/{text-transform-6SGUA5Z4.js → text-transform-HCLCUDFZ.js} +2 -2
- package/dist/text-transform-HCLCUDFZ.js.map +1 -0
- package/dist/tools-FGPN522P.js +46 -0
- package/dist/tools-FGPN522P.js.map +1 -0
- package/dist/{tunnel-IWMXUML4.js → tunnel-XOUVVRAK.js} +4 -2
- package/dist/tunnel-XOUVVRAK.js.map +1 -0
- package/dist/{twilio-53GEW5JT.js → twilio-3L7DUNYQ.js} +2 -2
- package/dist/{unit-converter-ZYXMEZOE.js → unit-converter-LYPAHU64.js} +2 -2
- package/dist/unit-converter-LYPAHU64.js.map +1 -0
- package/dist/whatsapp-KRPQ4YUX.js +43 -0
- package/dist/whatsapp-KRPQ4YUX.js.map +1 -0
- package/dist/{word-document-7B6SJMAY.js → word-document-D6N2C47N.js} +4 -4
- package/dist/word-document-D6N2C47N.js.map +1 -0
- package/dist/workflow-store-ZYAYE5P6.js +373 -0
- package/dist/workflow-store-ZYAYE5P6.js.map +1 -0
- package/dist/writing-agent-VDGLNOGO.js +243 -0
- package/dist/writing-agent-VDGLNOGO.js.map +1 -0
- package/dist/{xero-QYO66D45.js → xero-UHAHVYSD.js} +2 -2
- package/dist/{zapier-webhook-TBZ5YF2A.js → zapier-webhook-NIELLTXR.js} +2 -2
- package/package.json +11 -1
- package/dist/archiver-AVNBYCKQ.js.map +0 -1
- package/dist/autonomy-ZXDBDQUJ.js.map +0 -1
- package/dist/bot-QRARP4UN.js +0 -36
- package/dist/brain-7XLLM3KC.js +0 -56
- package/dist/chunk-4GLYY4NN.js.map +0 -1
- package/dist/chunk-766ASQWE.js.map +0 -1
- package/dist/chunk-AYUKPTSM.js.map +0 -1
- package/dist/chunk-BRBWNV65.js.map +0 -1
- package/dist/chunk-BXZ6EA52.js.map +0 -1
- package/dist/chunk-EVE7MIIY.js.map +0 -1
- package/dist/chunk-H5RQOFO2.js.map +0 -1
- package/dist/chunk-I6BDYQIG.js.map +0 -1
- package/dist/chunk-IZJMVV7O.js +0 -347
- package/dist/chunk-IZJMVV7O.js.map +0 -1
- package/dist/chunk-O7IH7JTI.js +0 -1898
- package/dist/chunk-O7IH7JTI.js.map +0 -1
- package/dist/chunk-RZ4YESBG.js.map +0 -1
- package/dist/chunk-SPPMCAKG.js.map +0 -1
- package/dist/chunk-VRD5CYRL.js +0 -1568
- package/dist/chunk-VRD5CYRL.js.map +0 -1
- package/dist/chunk-XKYRH4FM.js.map +0 -1
- package/dist/chunk-ZLZKF2PM.js.map +0 -1
- package/dist/discord-B3HUPGQ6.js +0 -70
- package/dist/dist-UISMLMFN.js +0 -21847
- package/dist/dist-UISMLMFN.js.map +0 -1
- package/dist/enrichment-pipeline-MNHNW65K.js +0 -13
- package/dist/env-IWXUVTCB.js +0 -12
- package/dist/imessage-NGA2XF2V.js +0 -35
- package/dist/inbox-summarizer-NRI4S7IF.js +0 -47
- package/dist/presentations-DSV5IHG5.js.map +0 -1
- package/dist/scheduler-VK4WFERV.js +0 -63
- package/dist/signal-6CGDFYL2.js +0 -35
- package/dist/slack-IZQWIKOH.js +0 -75
- package/dist/src-VYUE6LRA.js.map +0 -1
- package/dist/tools-2RLEI2N6.js +0 -38
- package/dist/tunnel-IWMXUML4.js.map +0 -1
- package/dist/whatsapp-LFX6YKCM.js +0 -35
- package/dist/word-document-7B6SJMAY.js.map +0 -1
- /package/dist/{audit-logger-OBPR7CRO.js.map → agent-manager-7N7REQZQ.js.map} +0 -0
- /package/dist/{auth-UOX5K2BE.js.map → agent-types-2T4PXLFQ.js.map} +0 -0
- /package/dist/{backup-restore-PZ7CYYB7.js.map → audit-logger-AU3TMWKI.js.map} +0 -0
- /package/dist/{blocks-R3PODY47.js.map → auth-PH5IHISW.js.map} +0 -0
- /package/dist/{aws-s3-Q4LLZZPD.js.map → aws-s3-QZMURYXB.js.map} +0 -0
- /package/dist/{bot-QRARP4UN.js.map → backup-restore-72OQTZO3.js.map} +0 -0
- /package/dist/{brain-7XLLM3KC.js.map → blocks-YOWOESDD.js.map} +0 -0
- /package/dist/{chunk-PLDDJCW6.js.map → bot-MU2TJQ3Y.js.map} +0 -0
- /package/dist/{client-ZQSFPMOB.js.map → brain-SLA474EU.js.map} +0 -0
- /package/dist/{camera-monitor-M5CYKUU4.js.map → camera-monitor-LHTUWHEL.js.map} +0 -0
- /package/dist/{charts-V7ARZNKF.js.map → charts-FJ32GQK7.js.map} +0 -0
- /package/dist/{chunk-6PMVAAA7.js.map → chunk-2RGPWU77.js.map} +0 -0
- /package/dist/{chunk-TVEWKIK3.js.map → chunk-2WTKTG2C.js.map} +0 -0
- /package/dist/{chunk-MXAPLSJ5.js.map → chunk-45YXODSB.js.map} +0 -0
- /package/dist/{chunk-SJSUSJ47.js.map → chunk-4YJRBMMA.js.map} +0 -0
- /package/dist/{chunk-MQJ2ECQT.js.map → chunk-CUPEENUY.js.map} +0 -0
- /package/dist/{chunk-66OJ3WB4.js.map → chunk-H3BOLSTS.js.map} +0 -0
- /package/dist/{chunk-TYAGMJNV.js.map → chunk-JOA5A3G3.js.map} +0 -0
- /package/dist/{chunk-VEHFVBLI.js.map → chunk-KT7NLIXP.js.map} +0 -0
- /package/dist/{chunk-4UOE5TUZ.js.map → chunk-NMSHVO5O.js.map} +0 -0
- /package/dist/{chunk-NHMBTUMW.js.map → chunk-TAAZB5KN.js.map} +0 -0
- /package/dist/{clipboard-manager-TEO2GEDN.js.map → chunk-UP2VWCW5.js.map} +0 -0
- /package/dist/{cron-explain-HHQKPD3M.js.map → chunker-K6WTR62A.js.map} +0 -0
- /package/dist/{crypto-4AP47IKC.js.map → client-FOIYPOZQ.js.map} +0 -0
- /package/dist/{databases-37X4CI2Y.js.map → clipboard-manager-4SBNESGZ.js.map} +0 -0
- /package/dist/{discord-B3HUPGQ6.js.map → cost-tracker-EMOIOYH7.js.map} +0 -0
- /package/dist/{enrichment-pipeline-MNHNW65K.js.map → cron-explain-UOOOYWZZ.js.map} +0 -0
- /package/dist/{entity-resolution-Y3IUWEAT.js.map → crypto-2VG3RJR2.js.map} +0 -0
- /package/dist/{env-IWXUVTCB.js.map → databases-XDPMG5AV.js.map} +0 -0
- /package/dist/{hash-tool-ULQYD7B5.js.map → db-LRIOKQBO.js.map} +0 -0
- /package/dist/{heartbeat-monitor-GCISLXI3.js.map → discord-NKR3X4AV.js.map} +0 -0
- /package/dist/{imessage-NGA2XF2V.js.map → docx-parser-EXL4TN5E.js.map} +0 -0
- /package/dist/{inbox-summarizer-NRI4S7IF.js.map → enrichment-pipeline-CMUVBDC7.js.map} +0 -0
- /package/dist/{inventory-manager-352OHXWD.js.map → entity-resolution-4X4JU43O.js.map} +0 -0
- /package/dist/{json-tool-QE2SYHEG.js.map → env-CHOFICED.js.map} +0 -0
- /package/dist/{key-rotation-DPHU4ZTB.js.map → error-tracker-SVQSDQDW.js.map} +0 -0
- /package/dist/{google-workspace-DKWUVNGC.js.map → google-workspace-TSZPZK5G.js.map} +0 -0
- /package/dist/{mcp-3JI6W7ZE.js.map → hash-tool-ENAB5LWH.js.map} +0 -0
- /package/dist/{ocr-AC7NPX33.js.map → heartbeat-monitor-KRDYTDBF.js.map} +0 -0
- /package/dist/{ollama-BOAMSPLJ.js.map → hooks-N4MIFBVM.js.map} +0 -0
- /package/dist/{image-generation-OSU7FP6F.js.map → image-generation-MDE6AVQO.js.map} +0 -0
- /package/dist/{pages-MI523RB7.js.map → imessage-V2XNDDHT.js.map} +0 -0
- /package/dist/{pairing-IFQYCPNS.js.map → inbox-summarizer-DKKRYXDR.js.map} +0 -0
- /package/dist/{pdf-ALQVOEJR.js.map → inventory-manager-C67BSZM6.js.map} +0 -0
- /package/dist/{jira-GSGDBMIG.js.map → jira-PAGZWUBJ.js.map} +0 -0
- /package/dist/{prometheus-JNT2BD4L.js.map → json-tool-4FK5RNER.js.map} +0 -0
- /package/dist/{providers-J4LYPHDR.js.map → key-rotation-WCC5FOYS.js.map} +0 -0
- /package/dist/{qr-code-WIX4PB4U.js.map → knowledge-base-J7PJ7MZ3.js.map} +0 -0
- /package/dist/{mailchimp-KKNF6QJ7.js.map → mailchimp-ZFYDC44J.js.map} +0 -0
- /package/dist/{regex-tool-W4ABRKGK.js.map → mcp-3C2TN67D.js.map} +0 -0
- /package/dist/{scheduler-VK4WFERV.js.map → metrics-VJDWQWU7.js.map} +0 -0
- /package/dist/{microsoft365-UCBKJHNX.js.map → microsoft365-6G2IJMWC.js.map} +0 -0
- /package/dist/{search-BCLBO5E3.js.map → ocr-LGUIPKVZ.js.map} +0 -0
- /package/dist/{signal-6CGDFYL2.js.map → ollama-J7CU45WT.js.map} +0 -0
- /package/dist/{slack-IZQWIKOH.js.map → pages-XDE7JRCA.js.map} +0 -0
- /package/dist/{pair-JDFTERIK.js.map → pair-YZJFQUU5.js.map} +0 -0
- /package/dist/{sms-M3JIOTCW.js.map → pairing-77N47RAT.js.map} +0 -0
- /package/dist/{stocks-XXWBPOCU.js.map → pdf-67HGXCFJ.js.map} +0 -0
- /package/dist/{text-transform-6SGUA5Z4.js.map → pdf-parser-YLMTTYHL.js.map} +0 -0
- /package/dist/{tools-2RLEI2N6.js.map → prometheus-YETCZO4I.js.map} +0 -0
- /package/dist/{unit-converter-ZYXMEZOE.js.map → providers-H6YIC3MG.js.map} +0 -0
- /package/dist/{whatsapp-LFX6YKCM.js.map → qr-code-6WZJHRKL.js.map} +0 -0
- /package/dist/{quickbooks-XB4NII2S.js.map → quickbooks-N675W7IK.js.map} +0 -0
- /package/dist/{sendgrid-RNXCAFKM.js.map → sendgrid-QGJIVPWV.js.map} +0 -0
- /package/dist/{shopify-NCXYJB4R.js.map → shopify-ON2PAU27.js.map} +0 -0
- /package/dist/{twilio-53GEW5JT.js.map → twilio-3L7DUNYQ.js.map} +0 -0
- /package/dist/{xero-QYO66D45.js.map → xero-UHAHVYSD.js.map} +0 -0
- /package/dist/{zapier-webhook-TBZ5YF2A.js.map → zapier-webhook-NIELLTXR.js.map} +0 -0
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
// src/integrations/documents/chunker.ts
|
|
2
|
+
var DEFAULT_OPTIONS = {
|
|
3
|
+
chunkSize: 1e3,
|
|
4
|
+
chunkOverlap: 200,
|
|
5
|
+
minChunkSize: 100,
|
|
6
|
+
maxChunkSize: 2e3,
|
|
7
|
+
respectSentences: true,
|
|
8
|
+
respectParagraphs: true,
|
|
9
|
+
preserveSections: true,
|
|
10
|
+
strategy: "semantic"
|
|
11
|
+
};
|
|
12
|
+
function chunkText(text, options = {}) {
|
|
13
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
14
|
+
if (!text || text.trim().length === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
switch (opts.strategy) {
|
|
18
|
+
case "fixed":
|
|
19
|
+
return fixedSizeChunking(text, opts);
|
|
20
|
+
case "sentence":
|
|
21
|
+
return sentenceChunking(text, opts);
|
|
22
|
+
case "paragraph":
|
|
23
|
+
return paragraphChunking(text, opts);
|
|
24
|
+
case "recursive":
|
|
25
|
+
return recursiveChunking(text, opts);
|
|
26
|
+
case "semantic":
|
|
27
|
+
default:
|
|
28
|
+
return semanticChunking(text, opts);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function fixedSizeChunking(text, opts) {
|
|
32
|
+
const chunks = [];
|
|
33
|
+
let startOffset = 0;
|
|
34
|
+
let index = 0;
|
|
35
|
+
while (startOffset < text.length) {
|
|
36
|
+
let endOffset = Math.min(startOffset + opts.chunkSize, text.length);
|
|
37
|
+
if (endOffset - startOffset > opts.maxChunkSize) {
|
|
38
|
+
endOffset = startOffset + opts.maxChunkSize;
|
|
39
|
+
}
|
|
40
|
+
const content = text.slice(startOffset, endOffset);
|
|
41
|
+
const hasOverlapFromPrevious = index > 0;
|
|
42
|
+
chunks.push(createChunk(index, content, startOffset, endOffset, {
|
|
43
|
+
startsAtSentence: false,
|
|
44
|
+
endsAtSentence: false,
|
|
45
|
+
hasOverlapFromPrevious,
|
|
46
|
+
hasOverlapToNext: endOffset < text.length
|
|
47
|
+
}));
|
|
48
|
+
const nextStart = endOffset - opts.chunkOverlap;
|
|
49
|
+
startOffset = Math.max(nextStart, startOffset + opts.minChunkSize);
|
|
50
|
+
index++;
|
|
51
|
+
}
|
|
52
|
+
return chunks;
|
|
53
|
+
}
|
|
54
|
+
function sentenceChunking(text, opts) {
|
|
55
|
+
const sentences = splitIntoSentences(text);
|
|
56
|
+
const chunks = [];
|
|
57
|
+
let currentChunk = "";
|
|
58
|
+
let currentStart = 0;
|
|
59
|
+
let index = 0;
|
|
60
|
+
let textOffset = 0;
|
|
61
|
+
for (let i = 0; i < sentences.length; i++) {
|
|
62
|
+
const sentence = sentences[i];
|
|
63
|
+
const potentialChunk = currentChunk + sentence;
|
|
64
|
+
if (potentialChunk.length > opts.maxChunkSize && currentChunk.length > 0) {
|
|
65
|
+
const endOffset = textOffset;
|
|
66
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {
|
|
67
|
+
startsAtSentence: true,
|
|
68
|
+
endsAtSentence: true,
|
|
69
|
+
hasOverlapFromPrevious: index > 0,
|
|
70
|
+
hasOverlapToNext: true
|
|
71
|
+
}));
|
|
72
|
+
const overlapSentences = getOverlapSentences(
|
|
73
|
+
sentences.slice(0, i),
|
|
74
|
+
opts.chunkOverlap
|
|
75
|
+
);
|
|
76
|
+
currentChunk = overlapSentences + sentence;
|
|
77
|
+
currentStart = endOffset - overlapSentences.length;
|
|
78
|
+
index++;
|
|
79
|
+
} else if (potentialChunk.length >= opts.chunkSize && currentChunk.length >= opts.minChunkSize) {
|
|
80
|
+
currentChunk = potentialChunk;
|
|
81
|
+
textOffset += sentence.length;
|
|
82
|
+
const endOffset = textOffset;
|
|
83
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {
|
|
84
|
+
startsAtSentence: true,
|
|
85
|
+
endsAtSentence: true,
|
|
86
|
+
hasOverlapFromPrevious: index > 0,
|
|
87
|
+
hasOverlapToNext: i < sentences.length - 1
|
|
88
|
+
}));
|
|
89
|
+
const overlapSentences = getOverlapSentences(
|
|
90
|
+
sentences.slice(0, i + 1),
|
|
91
|
+
opts.chunkOverlap
|
|
92
|
+
);
|
|
93
|
+
currentChunk = overlapSentences;
|
|
94
|
+
currentStart = endOffset - overlapSentences.length;
|
|
95
|
+
index++;
|
|
96
|
+
} else {
|
|
97
|
+
currentChunk = potentialChunk;
|
|
98
|
+
textOffset += sentence.length;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (currentChunk.trim().length > 0) {
|
|
102
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, text.length, {
|
|
103
|
+
startsAtSentence: true,
|
|
104
|
+
endsAtSentence: true,
|
|
105
|
+
hasOverlapFromPrevious: index > 0,
|
|
106
|
+
hasOverlapToNext: false
|
|
107
|
+
}));
|
|
108
|
+
}
|
|
109
|
+
return chunks;
|
|
110
|
+
}
|
|
111
|
+
function paragraphChunking(text, opts) {
|
|
112
|
+
const paragraphs = text.split(/\n\s*\n/).filter((p) => p.trim().length > 0);
|
|
113
|
+
const chunks = [];
|
|
114
|
+
let currentChunk = "";
|
|
115
|
+
let currentStart = 0;
|
|
116
|
+
let index = 0;
|
|
117
|
+
let textOffset = 0;
|
|
118
|
+
let paragraphNumber = 0;
|
|
119
|
+
for (let i = 0; i < paragraphs.length; i++) {
|
|
120
|
+
const paragraph = paragraphs[i].trim() + "\n\n";
|
|
121
|
+
paragraphNumber++;
|
|
122
|
+
const potentialChunk = currentChunk + paragraph;
|
|
123
|
+
if (potentialChunk.length > opts.maxChunkSize && currentChunk.length > 0) {
|
|
124
|
+
const endOffset = textOffset;
|
|
125
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {
|
|
126
|
+
paragraphNumber: paragraphNumber - 1,
|
|
127
|
+
startsAtSentence: true,
|
|
128
|
+
endsAtSentence: true,
|
|
129
|
+
hasOverlapFromPrevious: index > 0,
|
|
130
|
+
hasOverlapToNext: true
|
|
131
|
+
}));
|
|
132
|
+
currentChunk = paragraph;
|
|
133
|
+
currentStart = endOffset;
|
|
134
|
+
index++;
|
|
135
|
+
} else if (potentialChunk.length >= opts.chunkSize) {
|
|
136
|
+
currentChunk = potentialChunk;
|
|
137
|
+
textOffset = text.indexOf(paragraph, textOffset) + paragraph.length;
|
|
138
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, textOffset, {
|
|
139
|
+
paragraphNumber,
|
|
140
|
+
startsAtSentence: true,
|
|
141
|
+
endsAtSentence: true,
|
|
142
|
+
hasOverlapFromPrevious: index > 0,
|
|
143
|
+
hasOverlapToNext: i < paragraphs.length - 1
|
|
144
|
+
}));
|
|
145
|
+
currentChunk = "";
|
|
146
|
+
currentStart = textOffset;
|
|
147
|
+
index++;
|
|
148
|
+
} else {
|
|
149
|
+
currentChunk = potentialChunk;
|
|
150
|
+
const idx = text.indexOf(paragraph.trim(), textOffset);
|
|
151
|
+
if (idx >= 0) {
|
|
152
|
+
textOffset = idx + paragraph.trim().length;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
if (currentChunk.trim().length > 0) {
|
|
157
|
+
chunks.push(createChunk(index, currentChunk.trim(), currentStart, text.length, {
|
|
158
|
+
paragraphNumber,
|
|
159
|
+
startsAtSentence: true,
|
|
160
|
+
endsAtSentence: true,
|
|
161
|
+
hasOverlapFromPrevious: index > 0,
|
|
162
|
+
hasOverlapToNext: false
|
|
163
|
+
}));
|
|
164
|
+
}
|
|
165
|
+
return chunks;
|
|
166
|
+
}
|
|
167
|
+
function recursiveChunking(text, opts) {
|
|
168
|
+
const separators = [
|
|
169
|
+
"\n\n\n",
|
|
170
|
+
// Multiple blank lines
|
|
171
|
+
"\n\n",
|
|
172
|
+
// Paragraph break
|
|
173
|
+
"\n",
|
|
174
|
+
// Line break
|
|
175
|
+
". ",
|
|
176
|
+
// Sentence break
|
|
177
|
+
", ",
|
|
178
|
+
// Clause break
|
|
179
|
+
" ",
|
|
180
|
+
// Word break
|
|
181
|
+
""
|
|
182
|
+
// Character break (fallback)
|
|
183
|
+
];
|
|
184
|
+
return recursiveChunkingSplit(text, separators, opts, 0);
|
|
185
|
+
}
|
|
186
|
+
function recursiveChunkingSplit(text, separators, opts, startOffset) {
|
|
187
|
+
if (text.length <= opts.chunkSize) {
|
|
188
|
+
return [
|
|
189
|
+
createChunk(0, text, startOffset, startOffset + text.length, {
|
|
190
|
+
startsAtSentence: true,
|
|
191
|
+
endsAtSentence: true,
|
|
192
|
+
hasOverlapFromPrevious: false,
|
|
193
|
+
hasOverlapToNext: false
|
|
194
|
+
})
|
|
195
|
+
];
|
|
196
|
+
}
|
|
197
|
+
const separator = separators[0];
|
|
198
|
+
const nextSeparators = separators.slice(1);
|
|
199
|
+
if (separator === "") {
|
|
200
|
+
return fixedSizeChunking(text, opts);
|
|
201
|
+
}
|
|
202
|
+
const splits = text.split(separator);
|
|
203
|
+
const chunks = [];
|
|
204
|
+
let currentChunk = "";
|
|
205
|
+
let currentOffset = startOffset;
|
|
206
|
+
let chunkIndex = 0;
|
|
207
|
+
for (let i = 0; i < splits.length; i++) {
|
|
208
|
+
const split = splits[i];
|
|
209
|
+
const withSeparator = i < splits.length - 1 ? split + separator : split;
|
|
210
|
+
const potential = currentChunk + withSeparator;
|
|
211
|
+
if (potential.length > opts.chunkSize && currentChunk.length > 0) {
|
|
212
|
+
if (currentChunk.length > opts.maxChunkSize) {
|
|
213
|
+
const subChunks = recursiveChunkingSplit(
|
|
214
|
+
currentChunk,
|
|
215
|
+
nextSeparators,
|
|
216
|
+
opts,
|
|
217
|
+
currentOffset
|
|
218
|
+
);
|
|
219
|
+
subChunks.forEach((c, idx) => {
|
|
220
|
+
c.index = chunkIndex + idx;
|
|
221
|
+
});
|
|
222
|
+
chunks.push(...subChunks);
|
|
223
|
+
chunkIndex += subChunks.length;
|
|
224
|
+
} else {
|
|
225
|
+
chunks.push(
|
|
226
|
+
createChunk(chunkIndex, currentChunk.trim(), currentOffset, currentOffset + currentChunk.length, {
|
|
227
|
+
startsAtSentence: separator.includes("."),
|
|
228
|
+
endsAtSentence: separator.includes("."),
|
|
229
|
+
hasOverlapFromPrevious: chunkIndex > 0,
|
|
230
|
+
hasOverlapToNext: true
|
|
231
|
+
})
|
|
232
|
+
);
|
|
233
|
+
chunkIndex++;
|
|
234
|
+
}
|
|
235
|
+
currentOffset += currentChunk.length;
|
|
236
|
+
currentChunk = withSeparator;
|
|
237
|
+
} else {
|
|
238
|
+
currentChunk = potential;
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
if (currentChunk.trim().length > 0) {
|
|
242
|
+
if (currentChunk.length > opts.maxChunkSize) {
|
|
243
|
+
const subChunks = recursiveChunkingSplit(
|
|
244
|
+
currentChunk,
|
|
245
|
+
nextSeparators,
|
|
246
|
+
opts,
|
|
247
|
+
currentOffset
|
|
248
|
+
);
|
|
249
|
+
subChunks.forEach((c, idx) => {
|
|
250
|
+
c.index = chunkIndex + idx;
|
|
251
|
+
});
|
|
252
|
+
chunks.push(...subChunks);
|
|
253
|
+
} else {
|
|
254
|
+
chunks.push(
|
|
255
|
+
createChunk(chunkIndex, currentChunk.trim(), currentOffset, currentOffset + currentChunk.length, {
|
|
256
|
+
startsAtSentence: true,
|
|
257
|
+
endsAtSentence: true,
|
|
258
|
+
hasOverlapFromPrevious: chunkIndex > 0,
|
|
259
|
+
hasOverlapToNext: false
|
|
260
|
+
})
|
|
261
|
+
);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return chunks;
|
|
265
|
+
}
|
|
266
|
+
function semanticChunking(text, opts) {
|
|
267
|
+
const sections = opts.preserveSections ? splitIntoSections(text) : [{ header: void 0, content: text }];
|
|
268
|
+
const allChunks = [];
|
|
269
|
+
let globalIndex = 0;
|
|
270
|
+
let globalOffset = 0;
|
|
271
|
+
for (const section of sections) {
|
|
272
|
+
const sectionText = section.content;
|
|
273
|
+
const paragraphs = sectionText.split(/\n\s*\n/).filter((p) => p.trim().length > 0);
|
|
274
|
+
let currentChunk = "";
|
|
275
|
+
let chunkStart = globalOffset;
|
|
276
|
+
for (let i = 0; i < paragraphs.length; i++) {
|
|
277
|
+
const paragraph = paragraphs[i].trim();
|
|
278
|
+
if (currentChunk.length + paragraph.length + 2 > opts.maxChunkSize && currentChunk.length > 0) {
|
|
279
|
+
allChunks.push(
|
|
280
|
+
createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {
|
|
281
|
+
sectionHeader: section.header,
|
|
282
|
+
startsAtSentence: true,
|
|
283
|
+
endsAtSentence: true,
|
|
284
|
+
hasOverlapFromPrevious: globalIndex > 0,
|
|
285
|
+
hasOverlapToNext: true
|
|
286
|
+
})
|
|
287
|
+
);
|
|
288
|
+
globalIndex++;
|
|
289
|
+
const overlap = getOverlapText(currentChunk, opts.chunkOverlap);
|
|
290
|
+
chunkStart = chunkStart + currentChunk.length - overlap.length;
|
|
291
|
+
currentChunk = overlap + "\n\n" + paragraph;
|
|
292
|
+
} else if (currentChunk.length + paragraph.length >= opts.chunkSize && currentChunk.length >= opts.minChunkSize) {
|
|
293
|
+
currentChunk += (currentChunk ? "\n\n" : "") + paragraph;
|
|
294
|
+
allChunks.push(
|
|
295
|
+
createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {
|
|
296
|
+
sectionHeader: section.header,
|
|
297
|
+
startsAtSentence: true,
|
|
298
|
+
endsAtSentence: true,
|
|
299
|
+
hasOverlapFromPrevious: globalIndex > 0,
|
|
300
|
+
hasOverlapToNext: i < paragraphs.length - 1
|
|
301
|
+
})
|
|
302
|
+
);
|
|
303
|
+
globalIndex++;
|
|
304
|
+
const overlap = getOverlapText(currentChunk, opts.chunkOverlap);
|
|
305
|
+
chunkStart = chunkStart + currentChunk.length - overlap.length;
|
|
306
|
+
currentChunk = overlap;
|
|
307
|
+
} else {
|
|
308
|
+
currentChunk += (currentChunk ? "\n\n" : "") + paragraph;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (currentChunk.trim().length > 0) {
|
|
312
|
+
allChunks.push(
|
|
313
|
+
createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {
|
|
314
|
+
sectionHeader: section.header,
|
|
315
|
+
startsAtSentence: true,
|
|
316
|
+
endsAtSentence: true,
|
|
317
|
+
hasOverlapFromPrevious: globalIndex > 0,
|
|
318
|
+
hasOverlapToNext: false
|
|
319
|
+
})
|
|
320
|
+
);
|
|
321
|
+
globalIndex++;
|
|
322
|
+
}
|
|
323
|
+
globalOffset += section.content.length;
|
|
324
|
+
}
|
|
325
|
+
return allChunks.map((chunk, idx) => ({
|
|
326
|
+
...chunk,
|
|
327
|
+
index: idx
|
|
328
|
+
}));
|
|
329
|
+
}
|
|
330
|
+
function splitIntoSections(text) {
|
|
331
|
+
const headerPattern = /^(#{1,6}\s+.+|[A-Z][A-Za-z\s]+:\s*$|[A-Z][A-Z\s]{3,}$)/gm;
|
|
332
|
+
const sections = [];
|
|
333
|
+
let lastIndex = 0;
|
|
334
|
+
let lastHeader;
|
|
335
|
+
let match;
|
|
336
|
+
while ((match = headerPattern.exec(text)) !== null) {
|
|
337
|
+
if (lastIndex < match.index) {
|
|
338
|
+
const content = text.slice(lastIndex, match.index);
|
|
339
|
+
if (content.trim().length > 0) {
|
|
340
|
+
sections.push({ header: lastHeader, content });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
lastHeader = match[1].replace(/^#+\s*/, "").trim();
|
|
344
|
+
lastIndex = match.index + match[0].length;
|
|
345
|
+
}
|
|
346
|
+
if (lastIndex < text.length) {
|
|
347
|
+
const content = text.slice(lastIndex);
|
|
348
|
+
if (content.trim().length > 0) {
|
|
349
|
+
sections.push({ header: lastHeader, content });
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (sections.length === 0) {
|
|
353
|
+
return [{ header: void 0, content: text }];
|
|
354
|
+
}
|
|
355
|
+
return sections;
|
|
356
|
+
}
|
|
357
|
+
function splitIntoSentences(text) {
|
|
358
|
+
const sentenceEnders = /([.!?]+)\s+(?=[A-Z])/g;
|
|
359
|
+
const sentences = [];
|
|
360
|
+
let lastIndex = 0;
|
|
361
|
+
let match;
|
|
362
|
+
while ((match = sentenceEnders.exec(text)) !== null) {
|
|
363
|
+
const endIndex = match.index + match[1].length;
|
|
364
|
+
sentences.push(text.slice(lastIndex, endIndex + 1));
|
|
365
|
+
lastIndex = endIndex + 1;
|
|
366
|
+
}
|
|
367
|
+
if (lastIndex < text.length) {
|
|
368
|
+
const remaining = text.slice(lastIndex);
|
|
369
|
+
if (remaining.trim().length > 0) {
|
|
370
|
+
sentences.push(remaining);
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
return sentences;
|
|
374
|
+
}
|
|
375
|
+
function getOverlapSentences(sentences, targetChars) {
|
|
376
|
+
let overlap = "";
|
|
377
|
+
for (let i = sentences.length - 1; i >= 0 && overlap.length < targetChars; i--) {
|
|
378
|
+
overlap = sentences[i] + overlap;
|
|
379
|
+
}
|
|
380
|
+
return overlap;
|
|
381
|
+
}
|
|
382
|
+
function getOverlapText(text, targetChars) {
|
|
383
|
+
if (text.length <= targetChars) {
|
|
384
|
+
return text;
|
|
385
|
+
}
|
|
386
|
+
const lastPart = text.slice(-targetChars * 1.5);
|
|
387
|
+
const sentenceMatch = lastPart.match(/[.!?]\s+/);
|
|
388
|
+
if (sentenceMatch && sentenceMatch.index) {
|
|
389
|
+
return lastPart.slice(sentenceMatch.index + sentenceMatch[0].length);
|
|
390
|
+
}
|
|
391
|
+
const wordMatch = lastPart.match(/\s+/);
|
|
392
|
+
if (wordMatch && wordMatch.index) {
|
|
393
|
+
return lastPart.slice(wordMatch.index + wordMatch[0].length);
|
|
394
|
+
}
|
|
395
|
+
return text.slice(-targetChars);
|
|
396
|
+
}
|
|
397
|
+
function createChunk(index, content, startOffset, endOffset, metadata) {
|
|
398
|
+
const wordCount = content.split(/\s+/).filter((w) => w.length > 0).length;
|
|
399
|
+
return {
|
|
400
|
+
index,
|
|
401
|
+
content,
|
|
402
|
+
startOffset,
|
|
403
|
+
endOffset,
|
|
404
|
+
wordCount,
|
|
405
|
+
tokenEstimate: Math.ceil(content.length / 4),
|
|
406
|
+
metadata: {
|
|
407
|
+
startsAtSentence: metadata.startsAtSentence ?? false,
|
|
408
|
+
endsAtSentence: metadata.endsAtSentence ?? false,
|
|
409
|
+
hasOverlapFromPrevious: metadata.hasOverlapFromPrevious ?? false,
|
|
410
|
+
hasOverlapToNext: metadata.hasOverlapToNext ?? false,
|
|
411
|
+
sectionHeader: metadata.sectionHeader,
|
|
412
|
+
paragraphNumber: metadata.paragraphNumber
|
|
413
|
+
}
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function estimateTokens(text) {
|
|
417
|
+
return Math.ceil(text.length / 4);
|
|
418
|
+
}
|
|
419
|
+
function mergeSmallChunks(chunks, minSize = 100) {
|
|
420
|
+
if (chunks.length === 0) return [];
|
|
421
|
+
const merged = [];
|
|
422
|
+
let current = null;
|
|
423
|
+
for (const chunk of chunks) {
|
|
424
|
+
if (!current) {
|
|
425
|
+
current = { ...chunk };
|
|
426
|
+
continue;
|
|
427
|
+
}
|
|
428
|
+
if (current.content.length < minSize) {
|
|
429
|
+
current = {
|
|
430
|
+
...current,
|
|
431
|
+
content: current.content + "\n\n" + chunk.content,
|
|
432
|
+
endOffset: chunk.endOffset,
|
|
433
|
+
wordCount: current.wordCount + chunk.wordCount,
|
|
434
|
+
tokenEstimate: current.tokenEstimate + chunk.tokenEstimate,
|
|
435
|
+
metadata: {
|
|
436
|
+
...current.metadata,
|
|
437
|
+
endsAtSentence: chunk.metadata.endsAtSentence,
|
|
438
|
+
hasOverlapToNext: chunk.metadata.hasOverlapToNext
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
} else {
|
|
442
|
+
merged.push(current);
|
|
443
|
+
current = { ...chunk, index: merged.length };
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
if (current) {
|
|
447
|
+
merged.push(current);
|
|
448
|
+
}
|
|
449
|
+
return merged;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
export {
|
|
453
|
+
chunkText,
|
|
454
|
+
estimateTokens,
|
|
455
|
+
mergeSmallChunks
|
|
456
|
+
};
|
|
457
|
+
//# sourceMappingURL=chunk-ZIYTHUM5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/integrations/documents/chunker.ts"],"sourcesContent":["/**\n * Document Chunker for OpenSentinel Document Ingestion\n *\n * Splits documents into semantic chunks suitable for embedding and retrieval.\n */\n\nexport interface Chunk {\n /** Chunk index within the document */\n index: number;\n /** The text content of the chunk */\n content: string;\n /** Character offset in original document */\n startOffset: number;\n /** Character end offset in original document */\n endOffset: number;\n /** Word count in this chunk */\n wordCount: number;\n /** Token count estimate (using ~4 chars per token heuristic) */\n tokenEstimate: number;\n /** Metadata about the chunk context */\n metadata: ChunkMetadata;\n}\n\nexport interface ChunkMetadata {\n /** Section header if detected */\n sectionHeader?: string;\n /** Paragraph number if applicable */\n paragraphNumber?: number;\n /** Whether chunk starts at a sentence boundary */\n startsAtSentence: boolean;\n /** Whether chunk ends at a sentence boundary */\n endsAtSentence: boolean;\n /** Whether this chunk has overlap from previous */\n hasOverlapFromPrevious: boolean;\n /** Whether this chunk has overlap to next */\n hasOverlapToNext: boolean;\n}\n\nexport interface ChunkerOptions {\n /** Target chunk size in characters (default: 1000) */\n chunkSize?: number;\n /** Overlap between chunks in characters (default: 200) */\n chunkOverlap?: number;\n /** Minimum chunk size in characters (default: 100) */\n minChunkSize?: number;\n /** Maximum chunk size in characters (default: 2000) */\n maxChunkSize?: number;\n /** Prefer splitting at sentence boundaries */\n respectSentences?: boolean;\n /** Prefer splitting at paragraph boundaries */\n respectParagraphs?: boolean;\n /** Keep section headers with their content */\n preserveSections?: boolean;\n /** Split strategy */\n strategy?: ChunkStrategy;\n}\n\nexport type ChunkStrategy =\n | \"fixed\" // Fixed size chunks\n | \"sentence\" // Split on sentence boundaries\n | \"paragraph\" // Split on paragraph boundaries\n | \"semantic\" // Combine strategies for best semantic coherence\n | \"recursive\"; // Recursively split using multiple separators\n\nconst DEFAULT_OPTIONS: Required<ChunkerOptions> = {\n chunkSize: 1000,\n chunkOverlap: 200,\n minChunkSize: 100,\n maxChunkSize: 2000,\n respectSentences: true,\n respectParagraphs: true,\n preserveSections: true,\n strategy: \"semantic\",\n};\n\n/**\n * Split text into semantic chunks\n */\nexport function chunkText(text: string, options: ChunkerOptions = {}): Chunk[] {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n\n if (!text || text.trim().length === 0) {\n return [];\n }\n\n switch (opts.strategy) {\n case \"fixed\":\n return fixedSizeChunking(text, opts);\n case \"sentence\":\n return sentenceChunking(text, opts);\n case \"paragraph\":\n return paragraphChunking(text, opts);\n case \"recursive\":\n return recursiveChunking(text, opts);\n case \"semantic\":\n default:\n return semanticChunking(text, opts);\n }\n}\n\n/**\n * Fixed-size chunking with overlap\n */\nfunction fixedSizeChunking(\n text: string,\n opts: Required<ChunkerOptions>\n): Chunk[] {\n const chunks: Chunk[] = [];\n let startOffset = 0;\n let index = 0;\n\n while (startOffset < text.length) {\n let endOffset = Math.min(startOffset + opts.chunkSize, text.length);\n\n // Adjust to respect max chunk size\n if (endOffset - startOffset > opts.maxChunkSize) {\n endOffset = startOffset + opts.maxChunkSize;\n }\n\n const content = text.slice(startOffset, endOffset);\n const hasOverlapFromPrevious = index > 0;\n\n chunks.push(createChunk(index, content, startOffset, endOffset, {\n startsAtSentence: false,\n endsAtSentence: false,\n hasOverlapFromPrevious,\n hasOverlapToNext: endOffset < text.length,\n }));\n\n // Move start position with overlap\n const nextStart = endOffset - opts.chunkOverlap;\n startOffset = Math.max(nextStart, startOffset + opts.minChunkSize);\n index++;\n }\n\n return chunks;\n}\n\n/**\n * Sentence-based chunking\n */\nfunction sentenceChunking(\n text: string,\n opts: Required<ChunkerOptions>\n): Chunk[] {\n const sentences = splitIntoSentences(text);\n const chunks: Chunk[] = [];\n let currentChunk = \"\";\n let currentStart = 0;\n let index = 0;\n let textOffset = 0;\n\n for (let i = 0; i < sentences.length; i++) {\n const sentence = sentences[i];\n const potentialChunk = currentChunk + sentence;\n\n if (potentialChunk.length > opts.maxChunkSize && currentChunk.length > 0) {\n // Current chunk is full, save it\n const endOffset = textOffset;\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: true,\n }));\n\n // Start new chunk with overlap\n const overlapSentences = getOverlapSentences(\n sentences.slice(0, i),\n opts.chunkOverlap\n );\n currentChunk = overlapSentences + sentence;\n currentStart = endOffset - overlapSentences.length;\n index++;\n } else if (potentialChunk.length >= opts.chunkSize && currentChunk.length >= opts.minChunkSize) {\n // Reached target size\n currentChunk = potentialChunk;\n textOffset += sentence.length;\n\n const endOffset = textOffset;\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: i < sentences.length - 1,\n }));\n\n // Start new chunk with overlap\n const overlapSentences = getOverlapSentences(\n sentences.slice(0, i + 1),\n opts.chunkOverlap\n );\n currentChunk = overlapSentences;\n currentStart = endOffset - overlapSentences.length;\n index++;\n } else {\n currentChunk = potentialChunk;\n textOffset += sentence.length;\n }\n }\n\n // Don't forget the last chunk\n if (currentChunk.trim().length > 0) {\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, text.length, {\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: false,\n }));\n }\n\n return chunks;\n}\n\n/**\n * Paragraph-based chunking\n */\nfunction paragraphChunking(\n text: string,\n opts: Required<ChunkerOptions>\n): Chunk[] {\n const paragraphs = text.split(/\\n\\s*\\n/).filter((p) => p.trim().length > 0);\n const chunks: Chunk[] = [];\n let currentChunk = \"\";\n let currentStart = 0;\n let index = 0;\n let textOffset = 0;\n let paragraphNumber = 0;\n\n for (let i = 0; i < paragraphs.length; i++) {\n const paragraph = paragraphs[i].trim() + \"\\n\\n\";\n paragraphNumber++;\n const potentialChunk = currentChunk + paragraph;\n\n if (potentialChunk.length > opts.maxChunkSize && currentChunk.length > 0) {\n // Save current chunk\n const endOffset = textOffset;\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, endOffset, {\n paragraphNumber: paragraphNumber - 1,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: true,\n }));\n\n currentChunk = paragraph;\n currentStart = endOffset;\n index++;\n } else if (potentialChunk.length >= opts.chunkSize) {\n currentChunk = potentialChunk;\n textOffset = text.indexOf(paragraph, textOffset) + paragraph.length;\n\n // Save chunk\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, textOffset, {\n paragraphNumber,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: i < paragraphs.length - 1,\n }));\n\n currentChunk = \"\";\n currentStart = textOffset;\n index++;\n } else {\n currentChunk = potentialChunk;\n const idx = text.indexOf(paragraph.trim(), textOffset);\n if (idx >= 0) {\n textOffset = idx + paragraph.trim().length;\n }\n }\n }\n\n // Handle last chunk\n if (currentChunk.trim().length > 0) {\n chunks.push(createChunk(index, currentChunk.trim(), currentStart, text.length, {\n paragraphNumber,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: index > 0,\n hasOverlapToNext: false,\n }));\n }\n\n return chunks;\n}\n\n/**\n * Recursive chunking using multiple separators\n */\nfunction recursiveChunking(\n text: string,\n opts: Required<ChunkerOptions>\n): Chunk[] {\n const separators = [\n \"\\n\\n\\n\", // Multiple blank lines\n \"\\n\\n\", // Paragraph break\n \"\\n\", // Line break\n \". \", // Sentence break\n \", \", // Clause break\n \" \", // Word break\n \"\", // Character break (fallback)\n ];\n\n return recursiveChunkingSplit(text, separators, opts, 0);\n}\n\nfunction recursiveChunkingSplit(\n text: string,\n separators: string[],\n opts: Required<ChunkerOptions>,\n startOffset: number\n): Chunk[] {\n if (text.length <= opts.chunkSize) {\n return [\n createChunk(0, text, startOffset, startOffset + text.length, {\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: false,\n hasOverlapToNext: false,\n }),\n ];\n }\n\n const separator = separators[0];\n const nextSeparators = separators.slice(1);\n\n if (separator === \"\") {\n // Fallback to fixed size\n return fixedSizeChunking(text, opts);\n }\n\n const splits = text.split(separator);\n const chunks: Chunk[] = [];\n let currentChunk = \"\";\n let currentOffset = startOffset;\n let chunkIndex = 0;\n\n for (let i = 0; i < splits.length; i++) {\n const split = splits[i];\n const withSeparator = i < splits.length - 1 ? split + separator : split;\n const potential = currentChunk + withSeparator;\n\n if (potential.length > opts.chunkSize && currentChunk.length > 0) {\n // Current chunk is ready\n if (currentChunk.length > opts.maxChunkSize) {\n // Too big, recursively split\n const subChunks = recursiveChunkingSplit(\n currentChunk,\n nextSeparators,\n opts,\n currentOffset\n );\n subChunks.forEach((c, idx) => {\n c.index = chunkIndex + idx;\n });\n chunks.push(...subChunks);\n chunkIndex += subChunks.length;\n } else {\n chunks.push(\n createChunk(chunkIndex, currentChunk.trim(), currentOffset, currentOffset + currentChunk.length, {\n startsAtSentence: separator.includes(\".\"),\n endsAtSentence: separator.includes(\".\"),\n hasOverlapFromPrevious: chunkIndex > 0,\n hasOverlapToNext: true,\n })\n );\n chunkIndex++;\n }\n\n currentOffset += currentChunk.length;\n currentChunk = withSeparator;\n } else {\n currentChunk = potential;\n }\n }\n\n // Handle final chunk\n if (currentChunk.trim().length > 0) {\n if (currentChunk.length > opts.maxChunkSize) {\n const subChunks = recursiveChunkingSplit(\n currentChunk,\n nextSeparators,\n opts,\n currentOffset\n );\n subChunks.forEach((c, idx) => {\n c.index = chunkIndex + idx;\n });\n chunks.push(...subChunks);\n } else {\n chunks.push(\n createChunk(chunkIndex, currentChunk.trim(), currentOffset, currentOffset + currentChunk.length, {\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: chunkIndex > 0,\n hasOverlapToNext: false,\n })\n );\n }\n }\n\n return chunks;\n}\n\n/**\n * Semantic chunking - combines strategies for best results\n */\nfunction semanticChunking(\n text: string,\n opts: Required<ChunkerOptions>\n): Chunk[] {\n // First, identify sections by headers\n const sections = opts.preserveSections\n ? splitIntoSections(text)\n : [{ header: undefined, content: text }];\n\n const allChunks: Chunk[] = [];\n let globalIndex = 0;\n let globalOffset = 0;\n\n for (const section of sections) {\n const sectionText = section.content;\n\n // Use paragraph-based chunking within sections\n const paragraphs = sectionText\n .split(/\\n\\s*\\n/)\n .filter((p) => p.trim().length > 0);\n\n let currentChunk = \"\";\n let chunkStart = globalOffset;\n\n for (let i = 0; i < paragraphs.length; i++) {\n const paragraph = paragraphs[i].trim();\n\n // If adding this paragraph exceeds max size\n if (\n currentChunk.length + paragraph.length + 2 > opts.maxChunkSize &&\n currentChunk.length > 0\n ) {\n // Save current chunk\n allChunks.push(\n createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {\n sectionHeader: section.header,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: globalIndex > 0,\n hasOverlapToNext: true,\n })\n );\n globalIndex++;\n\n // Add overlap\n const overlap = getOverlapText(currentChunk, opts.chunkOverlap);\n chunkStart = chunkStart + currentChunk.length - overlap.length;\n currentChunk = overlap + \"\\n\\n\" + paragraph;\n } else if (\n currentChunk.length + paragraph.length >= opts.chunkSize &&\n currentChunk.length >= opts.minChunkSize\n ) {\n // Target size reached\n currentChunk += (currentChunk ? \"\\n\\n\" : \"\") + paragraph;\n\n allChunks.push(\n createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {\n sectionHeader: section.header,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: globalIndex > 0,\n hasOverlapToNext: i < paragraphs.length - 1,\n })\n );\n globalIndex++;\n\n // Add overlap for next chunk\n const overlap = getOverlapText(currentChunk, opts.chunkOverlap);\n chunkStart = chunkStart + currentChunk.length - overlap.length;\n currentChunk = overlap;\n } else {\n currentChunk += (currentChunk ? \"\\n\\n\" : \"\") + paragraph;\n }\n }\n\n // Save remaining content\n if (currentChunk.trim().length > 0) {\n allChunks.push(\n createChunk(globalIndex, currentChunk.trim(), chunkStart, chunkStart + currentChunk.length, {\n sectionHeader: section.header,\n startsAtSentence: true,\n endsAtSentence: true,\n hasOverlapFromPrevious: globalIndex > 0,\n hasOverlapToNext: false,\n })\n );\n globalIndex++;\n }\n\n globalOffset += section.content.length;\n }\n\n // Renumber indices\n return allChunks.map((chunk, idx) => ({\n ...chunk,\n index: idx,\n }));\n}\n\n/**\n * Split text into sections by headers\n */\nfunction splitIntoSections(\n text: string\n): Array<{ header: string | undefined; content: string }> {\n // Match markdown headers and other common section patterns\n const headerPattern = /^(#{1,6}\\s+.+|[A-Z][A-Za-z\\s]+:\\s*$|[A-Z][A-Z\\s]{3,}$)/gm;\n\n const sections: Array<{ header: string | undefined; content: string }> = [];\n let lastIndex = 0;\n let lastHeader: string | undefined;\n\n let match;\n while ((match = headerPattern.exec(text)) !== null) {\n // Save previous section\n if (lastIndex < match.index) {\n const content = text.slice(lastIndex, match.index);\n if (content.trim().length > 0) {\n sections.push({ header: lastHeader, content });\n }\n }\n\n lastHeader = match[1].replace(/^#+\\s*/, \"\").trim();\n lastIndex = match.index + match[0].length;\n }\n\n // Don't forget the last section\n if (lastIndex < text.length) {\n const content = text.slice(lastIndex);\n if (content.trim().length > 0) {\n sections.push({ header: lastHeader, content });\n }\n }\n\n // If no sections found, return the whole text\n if (sections.length === 0) {\n return [{ header: undefined, content: text }];\n }\n\n return sections;\n}\n\n/**\n * Split text into sentences\n */\nfunction splitIntoSentences(text: string): string[] {\n // Handle common abbreviations and edge cases\n const sentenceEnders = /([.!?]+)\\s+(?=[A-Z])/g;\n const sentences: string[] = [];\n let lastIndex = 0;\n\n let match;\n while ((match = sentenceEnders.exec(text)) !== null) {\n const endIndex = match.index + match[1].length;\n sentences.push(text.slice(lastIndex, endIndex + 1));\n lastIndex = endIndex + 1;\n }\n\n // Add remaining text\n if (lastIndex < text.length) {\n const remaining = text.slice(lastIndex);\n if (remaining.trim().length > 0) {\n sentences.push(remaining);\n }\n }\n\n return sentences;\n}\n\n/**\n * Get overlap sentences for target character count\n */\nfunction getOverlapSentences(sentences: string[], targetChars: number): string {\n let overlap = \"\";\n\n for (let i = sentences.length - 1; i >= 0 && overlap.length < targetChars; i--) {\n overlap = sentences[i] + overlap;\n }\n\n return overlap;\n}\n\n/**\n * Get overlap text from the end of a chunk\n */\nfunction getOverlapText(text: string, targetChars: number): string {\n if (text.length <= targetChars) {\n return text;\n }\n\n // Try to break at sentence boundary\n const lastPart = text.slice(-targetChars * 1.5);\n const sentenceMatch = lastPart.match(/[.!?]\\s+/);\n\n if (sentenceMatch && sentenceMatch.index) {\n return lastPart.slice(sentenceMatch.index + sentenceMatch[0].length);\n }\n\n // Fall back to word boundary\n const wordMatch = lastPart.match(/\\s+/);\n if (wordMatch && wordMatch.index) {\n return lastPart.slice(wordMatch.index + wordMatch[0].length);\n }\n\n return text.slice(-targetChars);\n}\n\n/**\n * Create a chunk object with metadata\n */\nfunction createChunk(\n index: number,\n content: string,\n startOffset: number,\n endOffset: number,\n metadata: Partial<ChunkMetadata>\n): Chunk {\n const wordCount = content.split(/\\s+/).filter((w) => w.length > 0).length;\n\n return {\n index,\n content,\n startOffset,\n endOffset,\n wordCount,\n tokenEstimate: Math.ceil(content.length / 4),\n metadata: {\n startsAtSentence: metadata.startsAtSentence ?? false,\n endsAtSentence: metadata.endsAtSentence ?? false,\n hasOverlapFromPrevious: metadata.hasOverlapFromPrevious ?? false,\n hasOverlapToNext: metadata.hasOverlapToNext ?? false,\n sectionHeader: metadata.sectionHeader,\n paragraphNumber: metadata.paragraphNumber,\n },\n };\n}\n\n/**\n * Estimate token count for text\n */\nexport function estimateTokens(text: string): number {\n // Rough estimate: ~4 characters per token for English text\n return Math.ceil(text.length / 4);\n}\n\n/**\n * Merge small chunks that are below minimum size\n */\nexport function mergeSmallChunks(\n chunks: Chunk[],\n minSize: number = 100\n): Chunk[] {\n if (chunks.length === 0) return [];\n\n const merged: Chunk[] = [];\n let current: Chunk | null = null;\n\n for (const chunk of chunks) {\n if (!current) {\n current = { ...chunk };\n continue;\n }\n\n if (current.content.length < minSize) {\n // Merge with current\n current = {\n ...current,\n content: current.content + \"\\n\\n\" + chunk.content,\n endOffset: chunk.endOffset,\n wordCount: current.wordCount + chunk.wordCount,\n tokenEstimate: current.tokenEstimate + chunk.tokenEstimate,\n metadata: {\n ...current.metadata,\n endsAtSentence: chunk.metadata.endsAtSentence,\n hasOverlapToNext: chunk.metadata.hasOverlapToNext,\n },\n };\n } else {\n merged.push(current);\n current = { ...chunk, index: merged.length };\n }\n }\n\n if (current) {\n merged.push(current);\n }\n\n return merged;\n}\n"],"mappings":"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","names":[]}
|
package/dist/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ switch (command) {
|
|
|
16
16
|
import("./commands/status.js").then((m) => m.default());
|
|
17
17
|
break;
|
|
18
18
|
case "pair":
|
|
19
|
-
import("./pair-
|
|
19
|
+
import("./pair-YZJFQUU5.js").then((m) => m.showPairingInfo());
|
|
20
20
|
break;
|
|
21
21
|
case "version":
|
|
22
22
|
case "--version":
|
|
@@ -1,21 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
|
+
Client,
|
|
2
3
|
getNotionClient,
|
|
3
4
|
getRootPageId,
|
|
4
|
-
import_client,
|
|
5
5
|
initNotionClient,
|
|
6
6
|
init_client,
|
|
7
7
|
isNotionInitialized,
|
|
8
8
|
resetNotionClient
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-C6PELIHS.js";
|
|
10
|
+
import "./chunk-UP2VWCW5.js";
|
|
11
11
|
init_client();
|
|
12
|
-
var export_Client = import_client.Client;
|
|
13
12
|
export {
|
|
14
|
-
|
|
13
|
+
Client,
|
|
15
14
|
getNotionClient,
|
|
16
15
|
getRootPageId,
|
|
17
16
|
initNotionClient,
|
|
18
17
|
isNotionInitialized,
|
|
19
18
|
resetNotionClient
|
|
20
19
|
};
|
|
21
|
-
//# sourceMappingURL=client-
|
|
20
|
+
//# sourceMappingURL=client-FOIYPOZQ.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
save,
|
|
10
10
|
search
|
|
11
11
|
} from "./chunk-MGFBLVR7.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-UP2VWCW5.js";
|
|
13
13
|
export {
|
|
14
14
|
clearAll,
|
|
15
15
|
clipboardTool,
|
|
@@ -21,4 +21,4 @@ export {
|
|
|
21
21
|
save,
|
|
22
22
|
search
|
|
23
23
|
};
|
|
24
|
-
//# sourceMappingURL=clipboard-manager-
|
|
24
|
+
//# sourceMappingURL=clipboard-manager-4SBNESGZ.js.map
|