opensentinel 3.1.1 → 3.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +138 -83
- package/dist/agent-manager-JZ4IM7XI.js +39 -0
- package/dist/agent-processor-DDDHC2SO.js +281 -0
- package/dist/agent-processor-DDDHC2SO.js.map +1 -0
- package/dist/agent-types-2T4PXLFQ.js +12 -0
- package/dist/alerting-LK7VVYTX.js +699 -0
- package/dist/alerting-LK7VVYTX.js.map +1 -0
- package/dist/analysis-agent-JWN2GXYE.js +288 -0
- package/dist/analysis-agent-JWN2GXYE.js.map +1 -0
- package/dist/analyzer-OTWE3ARE.js +22 -0
- package/dist/{archiver-AVNBYCKQ.js → archiver-FPGKRP6P.js} +2 -2
- package/dist/{audit-logger-OBPR7CRO.js → audit-logger-CI4WZQPD.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-VDHBGUVI.js +47 -0
- package/dist/brain-6QTXN4QP.js +66 -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-WRAKK6K6.js → chunk-2I5QHYG6.js} +5 -3
- package/dist/chunk-2I5QHYG6.js.map +1 -0
- package/dist/{chunk-TVEWKIK3.js → chunk-2WTKTG2C.js} +2 -2
- package/dist/chunk-3AWAWRWB.js +143 -0
- package/dist/chunk-3AWAWRWB.js.map +1 -0
- package/dist/{chunk-ZLZKF2PM.js → chunk-4KIHDIXZ.js} +43 -2
- package/dist/chunk-4KIHDIXZ.js.map +1 -0
- package/dist/{chunk-EVE7MIIY.js → chunk-4WH6MFEW.js} +15 -16
- package/dist/chunk-4WH6MFEW.js.map +1 -0
- package/dist/{chunk-I6BDYQIG.js → chunk-56UJS2LA.js} +6 -6
- package/dist/chunk-56UJS2LA.js.map +1 -0
- package/dist/chunk-5BTVJR7R.js +37 -0
- package/dist/chunk-5BTVJR7R.js.map +1 -0
- package/dist/chunk-5JJTLWOR.js +1021 -0
- package/dist/chunk-5JJTLWOR.js.map +1 -0
- package/dist/chunk-66SAOZPU.js +236 -0
- package/dist/chunk-66SAOZPU.js.map +1 -0
- package/dist/chunk-6HGMRR4J.js +113 -0
- package/dist/chunk-6HGMRR4J.js.map +1 -0
- package/dist/chunk-6W6PTJFT.js +181 -0
- package/dist/chunk-6W6PTJFT.js.map +1 -0
- package/dist/chunk-6ZNCY2GI.js +418 -0
- package/dist/chunk-6ZNCY2GI.js.map +1 -0
- package/dist/chunk-7BNFELEK.js +31 -0
- package/dist/chunk-7BNFELEK.js.map +1 -0
- package/dist/chunk-ADTDYJO7.js +265 -0
- package/dist/chunk-ADTDYJO7.js.map +1 -0
- package/dist/{chunk-OCVQGBJK.js → chunk-BBN4VCNK.js} +6 -4
- package/dist/chunk-BBN4VCNK.js.map +1 -0
- package/dist/{chunk-SJSUSJ47.js → chunk-BNZHWAZC.js} +2 -2
- 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-NHMBTUMW.js → chunk-CWT6CAE5.js} +2 -2
- package/dist/{chunk-4GLYY4NN.js → chunk-CZTMGHUC.js} +8 -2
- package/dist/chunk-CZTMGHUC.js.map +1 -0
- package/dist/{chunk-RZ4YESBG.js → chunk-DOYGMNMK.js} +1 -1
- package/dist/chunk-DOYGMNMK.js.map +1 -0
- package/dist/chunk-DTISLIMB.js +89 -0
- package/dist/chunk-DTISLIMB.js.map +1 -0
- package/dist/{chunk-SPPMCAKG.js → chunk-GBVJTRXS.js} +2 -2
- package/dist/chunk-GBVJTRXS.js.map +1 -0
- package/dist/{chunk-AYUKPTSM.js → chunk-GJETKBOY.js} +96 -218
- package/dist/chunk-GJETKBOY.js.map +1 -0
- package/dist/{chunk-BXZ6EA52.js → chunk-GW6V4D43.js} +57 -3
- package/dist/chunk-GW6V4D43.js.map +1 -0
- package/dist/{chunk-6PMVAAA7.js → chunk-HJSEEFO3.js} +3 -3
- package/dist/{chunk-TYAGMJNV.js → chunk-HQZQFEAX.js} +5 -5
- package/dist/{chunk-MXAPLSJ5.js → chunk-J4JW73TT.js} +2 -2
- package/dist/{chunk-VEHFVBLI.js → chunk-JHYYFPKX.js} +2 -2
- package/dist/chunk-LFDXEYYB.js +150 -0
- package/dist/chunk-LFDXEYYB.js.map +1 -0
- package/dist/chunk-MIC5IBQF.js +386 -0
- package/dist/chunk-MIC5IBQF.js.map +1 -0
- package/dist/chunk-ODCFS5WD.js +463 -0
- package/dist/chunk-ODCFS5WD.js.map +1 -0
- package/dist/{chunk-XMCVRVTF.js → chunk-P64EV4YY.js} +1 -1
- package/dist/chunk-P64EV4YY.js.map +1 -0
- package/dist/chunk-PBOCSGNL.js +84 -0
- package/dist/chunk-PBOCSGNL.js.map +1 -0
- package/dist/{chunk-66OJ3WB4.js → chunk-PD3CTDO6.js} +2 -2
- package/dist/chunk-QPY3WRVM.js +647 -0
- package/dist/chunk-QPY3WRVM.js.map +1 -0
- package/dist/chunk-S2EOIVF4.js +3907 -0
- package/dist/chunk-S2EOIVF4.js.map +1 -0
- package/dist/chunk-SDLOMKCW.js +213 -0
- package/dist/chunk-SDLOMKCW.js.map +1 -0
- package/dist/chunk-TKBVW7ZJ.js +162 -0
- package/dist/chunk-TKBVW7ZJ.js.map +1 -0
- 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-SVAPX2XN.js → chunk-V3OKHQUX.js} +9 -7
- package/dist/{chunk-SVAPX2XN.js.map → chunk-V3OKHQUX.js.map} +1 -1
- package/dist/{chunk-4UOE5TUZ.js → chunk-WMDVOWN6.js} +4 -4
- package/dist/chunk-WMFYI7XC.js +564 -0
- package/dist/chunk-WMFYI7XC.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-YEDEAX6Y.js +194 -0
- package/dist/chunk-YEDEAX6Y.js.map +1 -0
- package/dist/{chunk-XKYRH4FM.js → chunk-ZIBRVA3Y.js} +70 -30
- package/dist/chunk-ZIBRVA3Y.js.map +1 -0
- package/dist/chunk-ZIYTHUM5.js +457 -0
- package/dist/chunk-ZIYTHUM5.js.map +1 -0
- package/dist/{chunk-766ASQWE.js → chunk-ZMML6T63.js} +2711 -2329
- package/dist/chunk-ZMML6T63.js.map +1 -0
- package/dist/chunk-ZVHG4KF2.js +380 -0
- package/dist/chunk-ZVHG4KF2.js.map +1 -0
- package/dist/chunker-K6WTR62A.js +12 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +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 +2 -2
- package/dist/commands/start.js +3 -3
- package/dist/commands/status.js +2 -2
- package/dist/commands/stop.js +2 -2
- package/dist/commands/utils.js +2 -2
- package/dist/cost-tracker-KZQSTSE2.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-I7MNG6CL.js +83 -0
- package/dist/discord-6UQHCN27.js +81 -0
- package/dist/documents-PFHSK7SZ.js +184 -0
- package/dist/documents-PFHSK7SZ.js.map +1 -0
- package/dist/docx-parser-EXL4TN5E.js +16 -0
- package/dist/{email-K7LO2IPB.js → email-6OIN4SYL.js} +34 -25
- package/dist/email-6OIN4SYL.js.map +1 -0
- package/dist/{enhanced-retrieval-DNLLEM4Z.js → enhanced-retrieval-JWX2HWU4.js} +12 -8
- package/dist/{enhanced-retrieval-DNLLEM4Z.js.map → enhanced-retrieval-JWX2HWU4.js.map} +1 -1
- package/dist/enrichment-pipeline-7FE5R5ZI.js +14 -0
- package/dist/{entity-resolution-Y3IUWEAT.js → entity-resolution-7Z6STVXX.js} +6 -5
- package/dist/env-GN5VHI43.js +12 -0
- package/dist/error-tracker-64DEH3D7.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-DUWSXCNP.js +833 -0
- package/dist/github-DUWSXCNP.js.map +1 -0
- package/dist/{google-workspace-DKWUVNGC.js → google-workspace-TSZPZK5G.js} +2 -2
- package/dist/graph-client-NB475AK5.js +17 -0
- 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-DSGSGUZS.js +44 -0
- package/dist/inbox-summarizer-F2KAU72V.js +56 -0
- package/dist/{incident-response-C5J7Q6DT.js → incident-response-E3UGMX5G.js} +8 -6
- package/dist/incident-response-E3UGMX5G.js.map +1 -0
- 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-5SMMOGQJ.js +46 -0
- package/dist/lib.d.ts +94 -1
- package/dist/lib.js +83 -66
- package/dist/lib.js.map +1 -1
- package/dist/{mailchimp-KKNF6QJ7.js → mailchimp-ZFYDC44J.js} +2 -2
- package/dist/{matrix-QVHG76I7.js → matrix-WYGEOZL5.js} +30 -21
- package/dist/{matrix-QVHG76I7.js.map → matrix-WYGEOZL5.js.map} +1 -1
- package/dist/{mcp-3JI6W7ZE.js → mcp-DJ2QDA6A.js} +3 -3
- package/dist/metrics-BH3ZLGEV.js +25 -0
- package/dist/{microsoft365-UCBKJHNX.js → microsoft365-6G2IJMWC.js} +2 -2
- package/dist/multi-user-XAEMB244.js +411 -0
- package/dist/multi-user-XAEMB244.js.map +1 -0
- package/dist/oauth-UPJYFOVU.js +34 -0
- package/dist/{ocr-AC7NPX33.js → ocr-UONKTQU7.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-UOET2FVZ.js} +3 -3
- package/dist/presentations-UOET2FVZ.js.map +1 -0
- package/dist/{prometheus-JNT2BD4L.js → prometheus-YETCZO4I.js} +2 -2
- package/dist/prometheus-YETCZO4I.js.map +1 -0
- package/dist/{providers-J4LYPHDR.js → providers-2YQ6E3IF.js} +6 -4
- package/dist/providers-2YQ6E3IF.js.map +1 -0
- package/dist/{qr-code-WIX4PB4U.js → qr-code-6WZJHRKL.js} +2 -2
- package/dist/qr-code-6WZJHRKL.js.map +1 -0
- 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-6PLLAQI7.js +74 -0
- package/dist/scheduler-6PLLAQI7.js.map +1 -0
- package/dist/schema-ETY7L2VA.js +78 -0
- package/dist/schema-ETY7L2VA.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/sharepoint-V5P4Q62L.js +30 -0
- package/dist/sharepoint-V5P4Q62L.js.map +1 -0
- package/dist/{shopify-NCXYJB4R.js → shopify-ON2PAU27.js} +2 -2
- package/dist/signal-7D5EPGVL.js +44 -0
- package/dist/signal-7D5EPGVL.js.map +1 -0
- package/dist/slack-KSS6YK5Z.js +86 -0
- package/dist/slack-KSS6YK5Z.js.map +1 -0
- package/dist/{sms-M3JIOTCW.js → sms-CSUCC7HL.js} +4 -4
- package/dist/sms-CSUCC7HL.js.map +1 -0
- package/dist/{src-VYUE6LRA.js → src-GO7GGW7O.js} +190 -52
- package/dist/src-GO7GGW7O.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/token-store-SEWRX6RE.js +20 -0
- package/dist/token-store-SEWRX6RE.js.map +1 -0
- package/dist/tools-PJZ6RI4P.js +47 -0
- package/dist/tools-PJZ6RI4P.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-DWXK25V2.js +44 -0
- package/dist/whatsapp-DWXK25V2.js.map +1 -0
- package/dist/{word-document-7B6SJMAY.js → word-document-AV3YB4L2.js} +4 -4
- package/dist/word-document-AV3YB4L2.js.map +1 -0
- package/dist/workflow-store-5Y56GUP7.js +373 -0
- package/dist/workflow-store-5Y56GUP7.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/drizzle/0002_mushy_master_mold.sql +139 -139
- package/drizzle/0003_overjoyed_rhodey.sql +46 -0
- package/drizzle/meta/0002_snapshot.json +3636 -3636
- package/drizzle/meta/0003_snapshot.json +3946 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +110 -100
- 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-OCVQGBJK.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-WRAKK6K6.js.map +0 -1
- package/dist/chunk-XKYRH4FM.js.map +0 -1
- package/dist/chunk-XMCVRVTF.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/email-K7LO2IPB.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/incident-response-C5J7Q6DT.js.map +0 -1
- 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-JZ4IM7XI.js.map} +0 -0
- /package/dist/{auth-UOX5K2BE.js.map → agent-types-2T4PXLFQ.js.map} +0 -0
- /package/dist/{backup-restore-PZ7CYYB7.js.map → analyzer-OTWE3ARE.js.map} +0 -0
- /package/dist/{archiver-AVNBYCKQ.js.map → archiver-FPGKRP6P.js.map} +0 -0
- /package/dist/{blocks-R3PODY47.js.map → audit-logger-CI4WZQPD.js.map} +0 -0
- /package/dist/{bot-QRARP4UN.js.map → auth-PH5IHISW.js.map} +0 -0
- /package/dist/{aws-s3-Q4LLZZPD.js.map → aws-s3-QZMURYXB.js.map} +0 -0
- /package/dist/{brain-7XLLM3KC.js.map → backup-restore-72OQTZO3.js.map} +0 -0
- /package/dist/{chunk-PLDDJCW6.js.map → blocks-YOWOESDD.js.map} +0 -0
- /package/dist/{client-ZQSFPMOB.js.map → bot-VDHBGUVI.js.map} +0 -0
- /package/dist/{clipboard-manager-TEO2GEDN.js.map → brain-6QTXN4QP.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-TVEWKIK3.js.map → chunk-2WTKTG2C.js.map} +0 -0
- /package/dist/{chunk-SJSUSJ47.js.map → chunk-BNZHWAZC.js.map} +0 -0
- /package/dist/{chunk-MQJ2ECQT.js.map → chunk-CUPEENUY.js.map} +0 -0
- /package/dist/{chunk-NHMBTUMW.js.map → chunk-CWT6CAE5.js.map} +0 -0
- /package/dist/{chunk-6PMVAAA7.js.map → chunk-HJSEEFO3.js.map} +0 -0
- /package/dist/{chunk-TYAGMJNV.js.map → chunk-HQZQFEAX.js.map} +0 -0
- /package/dist/{chunk-MXAPLSJ5.js.map → chunk-J4JW73TT.js.map} +0 -0
- /package/dist/{chunk-VEHFVBLI.js.map → chunk-JHYYFPKX.js.map} +0 -0
- /package/dist/{chunk-66OJ3WB4.js.map → chunk-PD3CTDO6.js.map} +0 -0
- /package/dist/{cron-explain-HHQKPD3M.js.map → chunk-UP2VWCW5.js.map} +0 -0
- /package/dist/{chunk-4UOE5TUZ.js.map → chunk-WMDVOWN6.js.map} +0 -0
- /package/dist/{crypto-4AP47IKC.js.map → chunker-K6WTR62A.js.map} +0 -0
- /package/dist/{databases-37X4CI2Y.js.map → client-FOIYPOZQ.js.map} +0 -0
- /package/dist/{discord-B3HUPGQ6.js.map → clipboard-manager-4SBNESGZ.js.map} +0 -0
- /package/dist/{enrichment-pipeline-MNHNW65K.js.map → cost-tracker-KZQSTSE2.js.map} +0 -0
- /package/dist/{entity-resolution-Y3IUWEAT.js.map → cron-explain-UOOOYWZZ.js.map} +0 -0
- /package/dist/{env-IWXUVTCB.js.map → crypto-2VG3RJR2.js.map} +0 -0
- /package/dist/{hash-tool-ULQYD7B5.js.map → databases-XDPMG5AV.js.map} +0 -0
- /package/dist/{heartbeat-monitor-GCISLXI3.js.map → db-I7MNG6CL.js.map} +0 -0
- /package/dist/{imessage-NGA2XF2V.js.map → discord-6UQHCN27.js.map} +0 -0
- /package/dist/{inbox-summarizer-NRI4S7IF.js.map → docx-parser-EXL4TN5E.js.map} +0 -0
- /package/dist/{inventory-manager-352OHXWD.js.map → enrichment-pipeline-7FE5R5ZI.js.map} +0 -0
- /package/dist/{json-tool-QE2SYHEG.js.map → entity-resolution-7Z6STVXX.js.map} +0 -0
- /package/dist/{key-rotation-DPHU4ZTB.js.map → env-GN5VHI43.js.map} +0 -0
- /package/dist/{mcp-3JI6W7ZE.js.map → error-tracker-64DEH3D7.js.map} +0 -0
- /package/dist/{google-workspace-DKWUVNGC.js.map → google-workspace-TSZPZK5G.js.map} +0 -0
- /package/dist/{ocr-AC7NPX33.js.map → graph-client-NB475AK5.js.map} +0 -0
- /package/dist/{ollama-BOAMSPLJ.js.map → hash-tool-ENAB5LWH.js.map} +0 -0
- /package/dist/{pages-MI523RB7.js.map → heartbeat-monitor-KRDYTDBF.js.map} +0 -0
- /package/dist/{pairing-IFQYCPNS.js.map → hooks-N4MIFBVM.js.map} +0 -0
- /package/dist/{image-generation-OSU7FP6F.js.map → image-generation-MDE6AVQO.js.map} +0 -0
- /package/dist/{pdf-ALQVOEJR.js.map → imessage-DSGSGUZS.js.map} +0 -0
- /package/dist/{prometheus-JNT2BD4L.js.map → inbox-summarizer-F2KAU72V.js.map} +0 -0
- /package/dist/{providers-J4LYPHDR.js.map → inventory-manager-C67BSZM6.js.map} +0 -0
- /package/dist/{jira-GSGDBMIG.js.map → jira-PAGZWUBJ.js.map} +0 -0
- /package/dist/{qr-code-WIX4PB4U.js.map → json-tool-4FK5RNER.js.map} +0 -0
- /package/dist/{regex-tool-W4ABRKGK.js.map → key-rotation-WCC5FOYS.js.map} +0 -0
- /package/dist/{scheduler-VK4WFERV.js.map → knowledge-base-5SMMOGQJ.js.map} +0 -0
- /package/dist/{mailchimp-KKNF6QJ7.js.map → mailchimp-ZFYDC44J.js.map} +0 -0
- /package/dist/{search-BCLBO5E3.js.map → mcp-DJ2QDA6A.js.map} +0 -0
- /package/dist/{signal-6CGDFYL2.js.map → metrics-BH3ZLGEV.js.map} +0 -0
- /package/dist/{microsoft365-UCBKJHNX.js.map → microsoft365-6G2IJMWC.js.map} +0 -0
- /package/dist/{slack-IZQWIKOH.js.map → oauth-UPJYFOVU.js.map} +0 -0
- /package/dist/{sms-M3JIOTCW.js.map → ocr-UONKTQU7.js.map} +0 -0
- /package/dist/{stocks-XXWBPOCU.js.map → ollama-J7CU45WT.js.map} +0 -0
- /package/dist/{text-transform-6SGUA5Z4.js.map → pages-XDE7JRCA.js.map} +0 -0
- /package/dist/{pair-JDFTERIK.js.map → pair-YZJFQUU5.js.map} +0 -0
- /package/dist/{tools-2RLEI2N6.js.map → pairing-77N47RAT.js.map} +0 -0
- /package/dist/{unit-converter-ZYXMEZOE.js.map → pdf-67HGXCFJ.js.map} +0 -0
- /package/dist/{whatsapp-LFX6YKCM.js.map → pdf-parser-YLMTTYHL.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
|
@@ -2,68 +2,91 @@ import {
|
|
|
2
2
|
app,
|
|
3
3
|
getGatewayToken,
|
|
4
4
|
timingSafeEqual
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import {
|
|
7
|
-
SignalBot
|
|
8
|
-
} from "./chunk-VEHFVBLI.js";
|
|
9
|
-
import {
|
|
10
|
-
iMessageBot
|
|
11
|
-
} from "./chunk-NHMBTUMW.js";
|
|
5
|
+
} from "./chunk-S2EOIVF4.js";
|
|
12
6
|
import {
|
|
13
7
|
createBot
|
|
14
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-56UJS2LA.js";
|
|
15
9
|
import {
|
|
16
10
|
DiscordBot
|
|
17
|
-
} from "./chunk-
|
|
18
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-HQZQFEAX.js";
|
|
12
|
+
import "./chunk-J4JW73TT.js";
|
|
19
13
|
import {
|
|
20
14
|
SlackBot
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-WMDVOWN6.js";
|
|
16
|
+
import "./chunk-BNZHWAZC.js";
|
|
23
17
|
import {
|
|
24
|
-
|
|
18
|
+
initializeScheduler,
|
|
25
19
|
stopWorker
|
|
26
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-GJETKBOY.js";
|
|
27
21
|
import {
|
|
28
22
|
WhatsAppBot
|
|
29
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-PD3CTDO6.js";
|
|
24
|
+
import {
|
|
25
|
+
SignalBot
|
|
26
|
+
} from "./chunk-JHYYFPKX.js";
|
|
27
|
+
import {
|
|
28
|
+
iMessageBot
|
|
29
|
+
} from "./chunk-CWT6CAE5.js";
|
|
30
|
+
import "./chunk-SDLOMKCW.js";
|
|
31
|
+
import "./chunk-66SAOZPU.js";
|
|
30
32
|
import {
|
|
31
33
|
setMCPRegistry,
|
|
32
34
|
streamChat,
|
|
33
35
|
streamChatWithTools
|
|
34
|
-
} from "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
import "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
36
|
+
} from "./chunk-ZMML6T63.js";
|
|
37
|
+
import "./chunk-5JJTLWOR.js";
|
|
38
|
+
import {
|
|
39
|
+
initializeEmbeddings
|
|
40
|
+
} from "./chunk-QPY3WRVM.js";
|
|
41
|
+
import "./chunk-ADTDYJO7.js";
|
|
42
|
+
import "./chunk-LFDXEYYB.js";
|
|
43
|
+
import "./chunk-TKBVW7ZJ.js";
|
|
44
|
+
import "./chunk-6HGMRR4J.js";
|
|
45
|
+
import "./chunk-DTISLIMB.js";
|
|
46
|
+
import "./chunk-3AWAWRWB.js";
|
|
47
|
+
import "./chunk-PBOCSGNL.js";
|
|
48
|
+
import "./chunk-7BNFELEK.js";
|
|
49
|
+
import "./chunk-CUPEENUY.js";
|
|
50
|
+
import "./chunk-2WTKTG2C.js";
|
|
51
|
+
import "./chunk-U2X2J3FI.js";
|
|
52
|
+
import "./chunk-X6Q3K3L2.js";
|
|
53
|
+
import "./chunk-ODCFS5WD.js";
|
|
42
54
|
import "./chunk-KM22GV7G.js";
|
|
43
55
|
import "./chunk-P6QINGFL.js";
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-WRAKK6K6.js";
|
|
56
|
+
import "./chunk-HJSEEFO3.js";
|
|
57
|
+
import "./chunk-C6PELIHS.js";
|
|
47
58
|
import "./chunk-7WQO5J2M.js";
|
|
48
59
|
import {
|
|
49
|
-
|
|
50
|
-
} from "./chunk-
|
|
60
|
+
brainTelemetry
|
|
61
|
+
} from "./chunk-WMFYI7XC.js";
|
|
62
|
+
import "./chunk-YEDEAX6Y.js";
|
|
63
|
+
import "./chunk-6ZNCY2GI.js";
|
|
64
|
+
import "./chunk-WZAH34TG.js";
|
|
65
|
+
import "./chunk-6KONMXQ6.js";
|
|
66
|
+
import "./chunk-22VGGA7S.js";
|
|
67
|
+
import "./chunk-HN3F4WSW.js";
|
|
68
|
+
import "./chunk-V3OKHQUX.js";
|
|
69
|
+
import "./chunk-2I5QHYG6.js";
|
|
51
70
|
import {
|
|
52
71
|
getMCPToolSummary,
|
|
53
72
|
initMCPRegistry
|
|
54
|
-
} from "./chunk-
|
|
55
|
-
import "./chunk-
|
|
56
|
-
import
|
|
73
|
+
} from "./chunk-CZTMGHUC.js";
|
|
74
|
+
import "./chunk-4WH6MFEW.js";
|
|
75
|
+
import {
|
|
76
|
+
initializeProviders
|
|
77
|
+
} from "./chunk-GW6V4D43.js";
|
|
78
|
+
import "./chunk-DOYGMNMK.js";
|
|
57
79
|
import "./chunk-CQ4JURG7.js";
|
|
58
|
-
import
|
|
59
|
-
|
|
80
|
+
import {
|
|
81
|
+
audit
|
|
82
|
+
} from "./chunk-BBN4VCNK.js";
|
|
83
|
+
import "./chunk-5BTVJR7R.js";
|
|
60
84
|
import {
|
|
61
85
|
env
|
|
62
|
-
} from "./chunk-
|
|
63
|
-
import "./chunk-
|
|
64
|
-
import "./chunk-22VGGA7S.js";
|
|
86
|
+
} from "./chunk-4KIHDIXZ.js";
|
|
87
|
+
import "./chunk-ZIBRVA3Y.js";
|
|
65
88
|
import "./chunk-35WYTA3C.js";
|
|
66
|
-
import "./chunk-
|
|
89
|
+
import "./chunk-UP2VWCW5.js";
|
|
67
90
|
|
|
68
91
|
// src/inputs/websocket/index.ts
|
|
69
92
|
import { nanoid } from "nanoid";
|
|
@@ -87,11 +110,27 @@ function parseClientMessage(data) {
|
|
|
87
110
|
function isValidClientMessage(msg) {
|
|
88
111
|
if (!msg || typeof msg !== "object") return false;
|
|
89
112
|
const m = msg;
|
|
90
|
-
return typeof m.type === "string" && typeof m.id === "string" && ["chat", "chat_with_tools", "ping", "cancel"].includes(m.type);
|
|
113
|
+
return typeof m.type === "string" && typeof m.id === "string" && ["chat", "chat_with_tools", "ping", "cancel", "subscribe_brain", "unsubscribe_brain"].includes(m.type);
|
|
91
114
|
}
|
|
92
115
|
|
|
93
116
|
// src/inputs/websocket/index.ts
|
|
94
117
|
var connections = /* @__PURE__ */ new Map();
|
|
118
|
+
var brainSubscribers = /* @__PURE__ */ new Set();
|
|
119
|
+
brainTelemetry.on("brain_event", (event) => {
|
|
120
|
+
if (brainSubscribers.size === 0) return;
|
|
121
|
+
const payload = JSON.stringify({
|
|
122
|
+
type: "brain_event",
|
|
123
|
+
id: "brain",
|
|
124
|
+
payload: event
|
|
125
|
+
});
|
|
126
|
+
for (const ws of brainSubscribers) {
|
|
127
|
+
try {
|
|
128
|
+
ws.send(payload);
|
|
129
|
+
} catch {
|
|
130
|
+
brainSubscribers.delete(ws);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
});
|
|
95
134
|
function createConnectionState() {
|
|
96
135
|
return {
|
|
97
136
|
id: nanoid(),
|
|
@@ -126,15 +165,41 @@ async function handleChat(ws, msg) {
|
|
|
126
165
|
async function handleChatWithTools(ws, msg) {
|
|
127
166
|
const { id, payload } = msg;
|
|
128
167
|
const messages = payload.messages || [];
|
|
168
|
+
const userId = payload.userId || "web:default";
|
|
129
169
|
if (messages.length === 0) {
|
|
130
170
|
ws.send(createServerMessage("error", id, { error: "No messages provided" }));
|
|
131
171
|
return;
|
|
132
172
|
}
|
|
173
|
+
let conversationId = null;
|
|
133
174
|
try {
|
|
134
|
-
const
|
|
175
|
+
const { db } = await import("./db-I7MNG6CL.js");
|
|
176
|
+
const { conversations, messages: messagesTable } = await import("./schema-ETY7L2VA.js");
|
|
177
|
+
const [conv] = await db.insert(conversations).values({
|
|
178
|
+
title: (messages[messages.length - 1]?.content || "Web Chat").slice(0, 100),
|
|
179
|
+
source: "web",
|
|
180
|
+
metadata: { wsConnectionId: id, userId }
|
|
181
|
+
}).returning({ id: conversations.id });
|
|
182
|
+
conversationId = conv.id;
|
|
183
|
+
const lastUserMsg = [...messages].reverse().find((m) => m.role === "user");
|
|
184
|
+
if (lastUserMsg) {
|
|
185
|
+
await db.insert(messagesTable).values({
|
|
186
|
+
conversationId: conv.id,
|
|
187
|
+
role: "user",
|
|
188
|
+
content: lastUserMsg.content
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
audit.toolUse(userId, "chat_message", { conversationId: conv.id, source: "web", messageLength: lastUserMsg?.content?.length || 0 }, true).catch(() => {
|
|
192
|
+
});
|
|
193
|
+
} catch (err) {
|
|
194
|
+
console.warn("[WebSocket] Failed to persist conversation:", err);
|
|
195
|
+
}
|
|
196
|
+
try {
|
|
197
|
+
const stream = streamChatWithTools(messages, userId);
|
|
198
|
+
let fullContent = "";
|
|
135
199
|
for await (const event of stream) {
|
|
136
200
|
switch (event.type) {
|
|
137
201
|
case "chunk":
|
|
202
|
+
fullContent += event.data.text || "";
|
|
138
203
|
ws.send(createServerMessage("chunk", id, { text: event.data.text }));
|
|
139
204
|
break;
|
|
140
205
|
case "tool_start":
|
|
@@ -158,6 +223,23 @@ async function handleChatWithTools(ws, msg) {
|
|
|
158
223
|
},
|
|
159
224
|
toolsUsed: event.data.toolsUsed
|
|
160
225
|
}));
|
|
226
|
+
fullContent = event.data.content || fullContent;
|
|
227
|
+
if (conversationId) {
|
|
228
|
+
try {
|
|
229
|
+
const { db } = await import("./db-I7MNG6CL.js");
|
|
230
|
+
const { messages: messagesTable, conversations } = await import("./schema-ETY7L2VA.js");
|
|
231
|
+
const { eq } = await import("drizzle-orm");
|
|
232
|
+
await db.insert(messagesTable).values({
|
|
233
|
+
conversationId,
|
|
234
|
+
role: "assistant",
|
|
235
|
+
content: fullContent,
|
|
236
|
+
tokenCount: (event.data.inputTokens || 0) + (event.data.outputTokens || 0),
|
|
237
|
+
metadata: { toolsUsed: event.data.toolsUsed, inputTokens: event.data.inputTokens, outputTokens: event.data.outputTokens }
|
|
238
|
+
});
|
|
239
|
+
await db.update(conversations).set({ updatedAt: /* @__PURE__ */ new Date() }).where(eq(conversations.id, conversationId));
|
|
240
|
+
} catch {
|
|
241
|
+
}
|
|
242
|
+
}
|
|
161
243
|
break;
|
|
162
244
|
case "error":
|
|
163
245
|
ws.send(createServerMessage("error", id, { error: event.data.error }));
|
|
@@ -199,6 +281,7 @@ var websocketHandlers = {
|
|
|
199
281
|
console.log(`[WebSocket] Client disconnected: ${state.id} (${code}: ${reason})`);
|
|
200
282
|
}
|
|
201
283
|
connections.delete(ws);
|
|
284
|
+
brainSubscribers.delete(ws);
|
|
202
285
|
},
|
|
203
286
|
async message(ws, message) {
|
|
204
287
|
const state = connections.get(ws);
|
|
@@ -225,6 +308,17 @@ var websocketHandlers = {
|
|
|
225
308
|
case "cancel":
|
|
226
309
|
handleCancel(ws, msg);
|
|
227
310
|
break;
|
|
311
|
+
case "subscribe_brain":
|
|
312
|
+
brainSubscribers.add(ws);
|
|
313
|
+
ws.send(JSON.stringify({
|
|
314
|
+
type: "brain_status",
|
|
315
|
+
id: msg.id,
|
|
316
|
+
payload: brainTelemetry.getStatus()
|
|
317
|
+
}));
|
|
318
|
+
break;
|
|
319
|
+
case "unsubscribe_brain":
|
|
320
|
+
brainSubscribers.delete(ws);
|
|
321
|
+
break;
|
|
228
322
|
default:
|
|
229
323
|
ws.send(createServerMessage("error", msg.id, { error: `Unknown message type: ${msg.type}` }));
|
|
230
324
|
}
|
|
@@ -281,11 +375,16 @@ var websocket_default = {
|
|
|
281
375
|
async function main() {
|
|
282
376
|
console.log(`
|
|
283
377
|
\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
284
|
-
\u2551 OPENSENTINEL v3.
|
|
378
|
+
\u2551 OPENSENTINEL v3.1.1 \u2551
|
|
285
379
|
\u2551 Your Personal AI Assistant \u2551
|
|
286
380
|
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
|
|
287
381
|
`);
|
|
288
382
|
await initializeProviders();
|
|
383
|
+
try {
|
|
384
|
+
await initializeEmbeddings();
|
|
385
|
+
} catch (err) {
|
|
386
|
+
console.warn("[Embeddings] Failed to initialize:", err.message);
|
|
387
|
+
}
|
|
289
388
|
let bot = null;
|
|
290
389
|
if (env.TELEGRAM_BOT_TOKEN) {
|
|
291
390
|
console.log("[Telegram] Starting bot...");
|
|
@@ -299,7 +398,7 @@ async function main() {
|
|
|
299
398
|
console.log("[Telegram] No bot token configured, skipping");
|
|
300
399
|
}
|
|
301
400
|
try {
|
|
302
|
-
|
|
401
|
+
await initializeScheduler(async (task) => {
|
|
303
402
|
console.log(`[Scheduler] Executing task: ${task.type}`);
|
|
304
403
|
if (task.chatId && task.message && bot) {
|
|
305
404
|
try {
|
|
@@ -312,10 +411,24 @@ async function main() {
|
|
|
312
411
|
} catch (err) {
|
|
313
412
|
console.warn("[Scheduler] Could not start worker (Redis may be unavailable):", err);
|
|
314
413
|
}
|
|
414
|
+
try {
|
|
415
|
+
const { costTracker } = await import("./cost-tracker-KZQSTSE2.js");
|
|
416
|
+
await costTracker.loadFromDb();
|
|
417
|
+
} catch (err) {
|
|
418
|
+
console.warn("[CostTracker] Could not load historical data:", err);
|
|
419
|
+
}
|
|
420
|
+
try {
|
|
421
|
+
const { startAlertingSystem, loadAlertHistoryFromDb } = await import("./alerting-LK7VVYTX.js");
|
|
422
|
+
await loadAlertHistoryFromDb();
|
|
423
|
+
startAlertingSystem(6e4);
|
|
424
|
+
console.log("[Alerting] System started with default rules");
|
|
425
|
+
} catch (err) {
|
|
426
|
+
console.warn("[Alerting] Could not start alerting system:", err);
|
|
427
|
+
}
|
|
315
428
|
let mcpRegistry = null;
|
|
316
|
-
|
|
429
|
+
const mcpInitPromise = env.MCP_ENABLED ? (async () => {
|
|
317
430
|
try {
|
|
318
|
-
console.log("[MCP] Initializing MCP servers...");
|
|
431
|
+
console.log("[MCP] Initializing MCP servers (background)...");
|
|
319
432
|
mcpRegistry = await initMCPRegistry(env.MCP_CONFIG_PATH);
|
|
320
433
|
setMCPRegistry(mcpRegistry);
|
|
321
434
|
if (mcpRegistry.connectedCount > 0) {
|
|
@@ -328,7 +441,7 @@ async function main() {
|
|
|
328
441
|
console.warn("[MCP] Failed to initialize:", err);
|
|
329
442
|
mcpRegistry = null;
|
|
330
443
|
}
|
|
331
|
-
}
|
|
444
|
+
})() : Promise.resolve();
|
|
332
445
|
let discordBot = null;
|
|
333
446
|
if (env.DISCORD_BOT_TOKEN) {
|
|
334
447
|
console.log("[Discord] Starting bot...");
|
|
@@ -362,8 +475,8 @@ async function main() {
|
|
|
362
475
|
token: env.SLACK_BOT_TOKEN,
|
|
363
476
|
signingSecret: env.SLACK_SIGNING_SECRET,
|
|
364
477
|
appToken: env.SLACK_APP_TOKEN,
|
|
365
|
-
socketMode: env.SLACK_SOCKET_MODE
|
|
366
|
-
port:
|
|
478
|
+
socketMode: !!env.SLACK_SOCKET_MODE,
|
|
479
|
+
port: env.SLACK_PORT || 3e3,
|
|
367
480
|
allowedUserIds: env.SLACK_ALLOWED_USER_IDS?.split(",") || [],
|
|
368
481
|
allowedChannelIds: env.SLACK_ALLOWED_CHANNEL_IDS?.split(",") || []
|
|
369
482
|
});
|
|
@@ -423,6 +536,14 @@ async function main() {
|
|
|
423
536
|
imessageBot = null;
|
|
424
537
|
}
|
|
425
538
|
}
|
|
539
|
+
if (env.AGENT_PROCESSOR_ENABLED) {
|
|
540
|
+
try {
|
|
541
|
+
const { startAgentProcessor } = await import("./agent-processor-DDDHC2SO.js");
|
|
542
|
+
startAgentProcessor();
|
|
543
|
+
} catch (err) {
|
|
544
|
+
console.warn("[AgentProcessor] Failed to start:", err.message);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
426
547
|
console.log(`[API] Starting server on port ${env.PORT}...`);
|
|
427
548
|
const server = Bun.serve({
|
|
428
549
|
port: env.PORT,
|
|
@@ -442,7 +563,7 @@ async function main() {
|
|
|
442
563
|
let tunnelUrl = null;
|
|
443
564
|
if (env.TUNNEL_ENABLED) {
|
|
444
565
|
try {
|
|
445
|
-
const { autoStartTunnel } = await import("./tunnel-
|
|
566
|
+
const { autoStartTunnel } = await import("./tunnel-XOUVVRAK.js");
|
|
446
567
|
tunnelUrl = await autoStartTunnel(
|
|
447
568
|
env.PORT,
|
|
448
569
|
env.TUNNEL_PROVIDER || "cloudflare",
|
|
@@ -457,15 +578,31 @@ async function main() {
|
|
|
457
578
|
}
|
|
458
579
|
if (env.AUTONOMY_LEVEL) {
|
|
459
580
|
try {
|
|
460
|
-
const { autonomyManager } = await import("./autonomy-
|
|
581
|
+
const { autonomyManager } = await import("./autonomy-N7W5XPLX.js");
|
|
461
582
|
autonomyManager.setDefaultLevel(env.AUTONOMY_LEVEL);
|
|
462
583
|
console.log(`[Autonomy] Level: ${env.AUTONOMY_LEVEL}`);
|
|
463
584
|
} catch {
|
|
464
585
|
}
|
|
465
586
|
}
|
|
587
|
+
try {
|
|
588
|
+
const { riskEngine } = await import("./risk-engine-YKCPT5D5.js");
|
|
589
|
+
const { hookManager } = await import("./hooks-N4MIFBVM.js");
|
|
590
|
+
riskEngine.updateConfig({
|
|
591
|
+
maxTradeSize: env.EXCHANGE_MAX_TRADE_SIZE ?? 100,
|
|
592
|
+
maxDailyTradeSpend: env.EXCHANGE_MAX_DAILY_SPEND ?? 500,
|
|
593
|
+
maxTradesPerHour: env.EXCHANGE_MAX_TRADES_PER_HOUR ?? 5
|
|
594
|
+
});
|
|
595
|
+
riskEngine.registerAsHook(hookManager);
|
|
596
|
+
const maxTrade = env.EXCHANGE_MAX_TRADE_SIZE ?? 100;
|
|
597
|
+
const maxDaily = env.EXCHANGE_MAX_DAILY_SPEND ?? 500;
|
|
598
|
+
const maxRate = env.EXCHANGE_MAX_TRADES_PER_HOUR ?? 5;
|
|
599
|
+
const agentTrading = env.EXCHANGE_AGENT_TRADING_ENABLED ?? false;
|
|
600
|
+
console.log(`[Security] Financial safeguards active: max_trade=$${maxTrade}, max_daily=$${maxDaily}, max_rate=${maxRate}/hr, agent_trading=${agentTrading}`);
|
|
601
|
+
} catch {
|
|
602
|
+
}
|
|
466
603
|
if (env.PAIRING_ENABLED) {
|
|
467
604
|
try {
|
|
468
|
-
const { pairingManager } = await import("./pairing-
|
|
605
|
+
const { pairingManager } = await import("./pairing-77N47RAT.js");
|
|
469
606
|
if (env.PAIRING_CODE_LIFETIME_MINUTES) {
|
|
470
607
|
pairingManager.setCodeLifetime(env.PAIRING_CODE_LIFETIME_MINUTES);
|
|
471
608
|
}
|
|
@@ -478,7 +615,7 @@ async function main() {
|
|
|
478
615
|
if (env.MATRIX_ENABLED && env.MATRIX_HOMESERVER_URL && env.MATRIX_ACCESS_TOKEN) {
|
|
479
616
|
console.log("[Matrix] Starting bot...");
|
|
480
617
|
try {
|
|
481
|
-
const { MatrixBot } = await import("./matrix-
|
|
618
|
+
const { MatrixBot } = await import("./matrix-WYGEOZL5.js");
|
|
482
619
|
matrixBot = new MatrixBot({
|
|
483
620
|
homeserverUrl: env.MATRIX_HOMESERVER_URL,
|
|
484
621
|
accessToken: env.MATRIX_ACCESS_TOKEN,
|
|
@@ -514,6 +651,7 @@ async function main() {
|
|
|
514
651
|
console.log("\nShutting down...");
|
|
515
652
|
stopWorker();
|
|
516
653
|
websocket_default.closeAllConnections();
|
|
654
|
+
await mcpInitPromise;
|
|
517
655
|
if (mcpRegistry) await mcpRegistry.shutdown();
|
|
518
656
|
if (bot) await bot.stop();
|
|
519
657
|
if (discordBot) await discordBot.stop();
|
|
@@ -523,7 +661,7 @@ async function main() {
|
|
|
523
661
|
if (imessageBot) await imessageBot.stop();
|
|
524
662
|
if (matrixBot) await matrixBot.stop();
|
|
525
663
|
try {
|
|
526
|
-
const { stopTunnel } = await import("./tunnel-
|
|
664
|
+
const { stopTunnel } = await import("./tunnel-XOUVVRAK.js");
|
|
527
665
|
await stopTunnel();
|
|
528
666
|
} catch {
|
|
529
667
|
}
|
|
@@ -533,4 +671,4 @@ async function main() {
|
|
|
533
671
|
export {
|
|
534
672
|
main
|
|
535
673
|
};
|
|
536
|
-
//# sourceMappingURL=src-
|
|
674
|
+
//# sourceMappingURL=src-GO7GGW7O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/inputs/websocket/index.ts","../src/inputs/websocket/protocol.ts","../src/index.ts"],"sourcesContent":["/**\r\n * WebSocket Handler - Real-time streaming for OpenSentinel\r\n */\r\n\r\n// Generic WebSocket interface compatible with Bun's ServerWebSocket\r\ninterface ServerWebSocket<T = unknown> {\r\n send(data: string | Buffer): void;\r\n close(code?: number, reason?: string): void;\r\n data: T;\r\n}\r\nimport { nanoid } from \"nanoid\";\r\nimport { getGatewayToken, timingSafeEqual } from \"../../core/security/gateway-utils\";\r\nimport {\r\n type WSClientMessage,\r\n type ConnectionState,\r\n createServerMessage,\r\n parseClientMessage,\r\n isValidClientMessage,\r\n} from \"./protocol\";\r\nimport { chat, streamChat, chatWithTools, streamChatWithTools } from \"../../core/brain\";\r\nimport type { Message } from \"../../core/brain\";\r\nimport { brainTelemetry, type BrainEvent } from \"../../core/observability/brain-telemetry\";\r\nimport { audit } from \"../../core/security/audit-logger\";\r\n\r\n// ============================================\r\n// CONNECTION MANAGEMENT\r\n// ============================================\r\n\r\nconst connections = new Map<ServerWebSocket<ConnectionState>, ConnectionState>();\r\nconst brainSubscribers = new Set<ServerWebSocket<ConnectionState>>();\r\n\r\n// Global brain event broadcast — wire up once at module scope\r\nbrainTelemetry.on(\"brain_event\", (event: BrainEvent) => {\r\n if (brainSubscribers.size === 0) return;\r\n const payload = JSON.stringify({\r\n type: \"brain_event\",\r\n id: \"brain\",\r\n payload: event,\r\n });\r\n for (const ws of brainSubscribers) {\r\n try {\r\n ws.send(payload);\r\n } catch {\r\n brainSubscribers.delete(ws);\r\n }\r\n }\r\n});\r\n\r\nfunction createConnectionState(): ConnectionState {\r\n return {\r\n id: nanoid(),\r\n connectedAt: new Date(),\r\n lastActivity: new Date(),\r\n activeRequests: new Map(),\r\n };\r\n}\r\n\r\n// ============================================\r\n// MESSAGE HANDLERS\r\n// ============================================\r\n\r\nasync function handleChat(\r\n ws: ServerWebSocket<ConnectionState>,\r\n msg: WSClientMessage\r\n): Promise<void> {\r\n const { id, payload } = msg;\r\n const messages = payload.messages || [];\r\n\r\n if (messages.length === 0) {\r\n ws.send(createServerMessage(\"error\", id, { error: \"No messages provided\" }));\r\n return;\r\n }\r\n\r\n try {\r\n // Use streaming for real-time response\r\n let fullContent = \"\";\r\n\r\n await streamChat(\r\n messages,\r\n payload.systemPrompt,\r\n (chunk) => {\r\n fullContent += chunk;\r\n ws.send(createServerMessage(\"chunk\", id, { text: chunk }));\r\n }\r\n );\r\n\r\n ws.send(createServerMessage(\"complete\", id, { content: fullContent }));\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : \"Unknown error\";\r\n ws.send(createServerMessage(\"error\", id, { error: errorMessage }));\r\n }\r\n}\r\n\r\nasync function handleChatWithTools(\r\n ws: ServerWebSocket<ConnectionState>,\r\n msg: WSClientMessage\r\n): Promise<void> {\r\n const { id, payload } = msg;\r\n const messages = payload.messages || [];\r\n const userId = payload.userId || \"web:default\";\r\n\r\n if (messages.length === 0) {\r\n ws.send(createServerMessage(\"error\", id, { error: \"No messages provided\" }));\r\n return;\r\n }\r\n\r\n // Persist conversation and user message to database\r\n let conversationId: string | null = null;\r\n try {\r\n const { db } = await import(\"../../db\");\r\n const { conversations, messages: messagesTable } = await import(\"../../db/schema\");\r\n\r\n // Create or reuse conversation\r\n const [conv] = await db.insert(conversations).values({\r\n title: (messages[messages.length - 1]?.content || \"Web Chat\").slice(0, 100),\r\n source: \"web\",\r\n metadata: { wsConnectionId: id, userId },\r\n }).returning({ id: conversations.id });\r\n conversationId = conv.id;\r\n\r\n // Save user message\r\n const lastUserMsg = [...messages].reverse().find((m: any) => m.role === \"user\");\r\n if (lastUserMsg) {\r\n await db.insert(messagesTable).values({\r\n conversationId: conv.id,\r\n role: \"user\",\r\n content: lastUserMsg.content,\r\n });\r\n }\r\n\r\n // Audit log\r\n audit.toolUse(userId, \"chat_message\", { conversationId: conv.id, source: \"web\", messageLength: lastUserMsg?.content?.length || 0 }, true).catch(() => {});\r\n } catch (err) {\r\n console.warn(\"[WebSocket] Failed to persist conversation:\", err);\r\n }\r\n\r\n try {\r\n // Use streaming generator for real-time events\r\n const stream = streamChatWithTools(messages, userId);\r\n let fullContent = \"\";\r\n\r\n for await (const event of stream) {\r\n switch (event.type) {\r\n case \"chunk\":\r\n fullContent += event.data.text || \"\";\r\n ws.send(createServerMessage(\"chunk\", id, { text: event.data.text }));\r\n break;\r\n case \"tool_start\":\r\n ws.send(createServerMessage(\"tool_start\", id, {\r\n toolName: event.data.toolName,\r\n toolInput: event.data.toolInput,\r\n }));\r\n break;\r\n case \"tool_result\":\r\n ws.send(createServerMessage(\"tool_result\", id, {\r\n toolName: event.data.toolName,\r\n toolResult: event.data.toolResult,\r\n }));\r\n break;\r\n case \"complete\":\r\n ws.send(createServerMessage(\"complete\", id, {\r\n content: event.data.content,\r\n usage: {\r\n inputTokens: event.data.inputTokens || 0,\r\n outputTokens: event.data.outputTokens || 0,\r\n },\r\n toolsUsed: event.data.toolsUsed,\r\n }));\r\n fullContent = event.data.content || fullContent;\r\n\r\n // Save assistant response to database\r\n if (conversationId) {\r\n try {\r\n const { db } = await import(\"../../db\");\r\n const { messages: messagesTable, conversations } = await import(\"../../db/schema\");\r\n const { eq } = await import(\"drizzle-orm\");\r\n await db.insert(messagesTable).values({\r\n conversationId,\r\n role: \"assistant\",\r\n content: fullContent,\r\n tokenCount: (event.data.inputTokens || 0) + (event.data.outputTokens || 0),\r\n metadata: { toolsUsed: event.data.toolsUsed, inputTokens: event.data.inputTokens, outputTokens: event.data.outputTokens },\r\n });\r\n await db.update(conversations).set({ updatedAt: new Date() }).where(eq(conversations.id, conversationId));\r\n } catch {}\r\n }\r\n break;\r\n case \"error\":\r\n ws.send(createServerMessage(\"error\", id, { error: event.data.error }));\r\n break;\r\n }\r\n }\r\n } catch (error) {\r\n const errorMessage = error instanceof Error ? error.message : \"Unknown error\";\r\n ws.send(createServerMessage(\"error\", id, { error: errorMessage }));\r\n }\r\n}\r\n\r\nfunction handlePing(ws: ServerWebSocket<ConnectionState>, msg: WSClientMessage): void {\r\n ws.send(createServerMessage(\"pong\", msg.id, {}));\r\n}\r\n\r\nfunction handleCancel(ws: ServerWebSocket<ConnectionState>, msg: WSClientMessage): void {\r\n const state = connections.get(ws);\r\n if (state) {\r\n const controller = state.activeRequests.get(msg.id);\r\n if (controller) {\r\n controller.abort();\r\n state.activeRequests.delete(msg.id);\r\n ws.send(createServerMessage(\"complete\", msg.id, { content: \"Request cancelled\" }));\r\n }\r\n }\r\n}\r\n\r\n// ============================================\r\n// WEBSOCKET HANDLERS\r\n// ============================================\r\n\r\nexport const websocketHandlers = {\r\n open(ws: ServerWebSocket<ConnectionState>) {\r\n const state = createConnectionState();\r\n connections.set(ws, state);\r\n console.log(`[WebSocket] Client connected: ${state.id}`);\r\n ws.send(createServerMessage(\"connected\", \"system\", { message: \"Connected to OpenSentinel\" }));\r\n },\r\n\r\n close(ws: ServerWebSocket<ConnectionState>, code: number, reason: string) {\r\n const state = connections.get(ws);\r\n if (state) {\r\n // Cancel any active requests\r\n for (const controller of state.activeRequests.values()) {\r\n controller.abort();\r\n }\r\n console.log(`[WebSocket] Client disconnected: ${state.id} (${code}: ${reason})`);\r\n }\r\n connections.delete(ws);\r\n brainSubscribers.delete(ws);\r\n },\r\n\r\n async message(ws: ServerWebSocket<ConnectionState>, message: string | Buffer) {\r\n const state = connections.get(ws);\r\n if (state) {\r\n state.lastActivity = new Date();\r\n }\r\n\r\n const data = typeof message === \"string\" ? message : message.toString();\r\n const msg = parseClientMessage(data);\r\n\r\n if (!msg || !isValidClientMessage(msg)) {\r\n ws.send(createServerMessage(\"error\", \"unknown\", { error: \"Invalid message format\" }));\r\n return;\r\n }\r\n\r\n console.log(`[WebSocket] Received: ${msg.type} (${msg.id})`);\r\n\r\n switch (msg.type) {\r\n case \"chat\":\r\n await handleChat(ws, msg);\r\n break;\r\n case \"chat_with_tools\":\r\n await handleChatWithTools(ws, msg);\r\n break;\r\n case \"ping\":\r\n handlePing(ws, msg);\r\n break;\r\n case \"cancel\":\r\n handleCancel(ws, msg);\r\n break;\r\n case \"subscribe_brain\":\r\n brainSubscribers.add(ws);\r\n ws.send(JSON.stringify({\r\n type: \"brain_status\",\r\n id: msg.id,\r\n payload: brainTelemetry.getStatus(),\r\n }));\r\n break;\r\n case \"unsubscribe_brain\":\r\n brainSubscribers.delete(ws);\r\n break;\r\n default:\r\n ws.send(createServerMessage(\"error\", msg.id, { error: `Unknown message type: ${msg.type}` }));\r\n }\r\n },\r\n\r\n drain(ws: ServerWebSocket<ConnectionState>) {\r\n // Called when the socket is ready to receive more data after backpressure\r\n console.log(\"[WebSocket] Socket drained, ready for more data\");\r\n },\r\n};\r\n\r\n// ============================================\r\n// UPGRADE HANDLER\r\n// ============================================\r\n\r\nexport function handleUpgrade(\r\n req: Request,\r\n server: { upgrade: (req: Request, options?: { data?: ConnectionState }) => boolean }\r\n): Response | undefined {\r\n const url = new URL(req.url);\r\n\r\n // Only handle /ws path\r\n if (url.pathname !== \"/ws\") {\r\n return undefined;\r\n }\r\n\r\n // Gateway token auth for WebSocket connections\r\n const gwToken = getGatewayToken();\r\n if (gwToken) {\r\n const tokenParam = url.searchParams.get(\"token\");\r\n const authHeader = req.headers.get(\"Authorization\");\r\n const headerToken = authHeader?.startsWith(\"Bearer \") ? authHeader.slice(7) : null;\r\n const providedToken = tokenParam || headerToken;\r\n\r\n if (!providedToken || !timingSafeEqual(providedToken, gwToken)) {\r\n return new Response(\"Unauthorized\", { status: 401 });\r\n }\r\n }\r\n\r\n const state = createConnectionState();\r\n const success = server.upgrade(req, { data: state });\r\n\r\n if (success) {\r\n return undefined; // Upgrade successful, Bun handles the response\r\n }\r\n\r\n return new Response(\"WebSocket upgrade failed\", { status: 500 });\r\n}\r\n\r\n// ============================================\r\n// UTILITIES\r\n// ============================================\r\n\r\nexport function getConnectionCount(): number {\r\n return connections.size;\r\n}\r\n\r\nexport function broadcastMessage(message: string): void {\r\n for (const ws of connections.keys()) {\r\n ws.send(message);\r\n }\r\n}\r\n\r\nexport function closeAllConnections(): void {\r\n for (const ws of connections.keys()) {\r\n ws.close(1000, \"Server shutting down\");\r\n }\r\n connections.clear();\r\n}\r\n\r\nexport default {\r\n handlers: websocketHandlers,\r\n handleUpgrade,\r\n getConnectionCount,\r\n broadcastMessage,\r\n closeAllConnections,\r\n};\r\n","/**\r\n * WebSocket Protocol - Message types for real-time streaming\r\n * OpenSentinel WebSocket API\r\n */\r\n\r\nimport type { Message } from \"../../core/brain\";\r\n\r\n// ============================================\r\n// CLIENT → SERVER MESSAGES\r\n// ============================================\r\n\r\nexport type WSClientMessageType = \"chat\" | \"chat_with_tools\" | \"ping\" | \"cancel\" | \"subscribe_brain\" | \"unsubscribe_brain\";\r\n\r\nexport interface WSClientMessage {\r\n type: WSClientMessageType;\r\n id: string;\r\n payload: WSClientPayload;\r\n}\r\n\r\nexport interface WSClientPayload {\r\n messages?: Message[];\r\n userId?: string;\r\n systemPrompt?: string;\r\n}\r\n\r\n// ============================================\r\n// SERVER → CLIENT MESSAGES\r\n// ============================================\r\n\r\nexport type WSServerMessageType =\r\n | \"chunk\"\r\n | \"tool_start\"\r\n | \"tool_result\"\r\n | \"complete\"\r\n | \"error\"\r\n | \"pong\"\r\n | \"connected\"\r\n | \"brain_event\"\r\n | \"brain_status\";\r\n\r\nexport interface WSServerMessage {\r\n type: WSServerMessageType;\r\n id: string;\r\n payload: WSServerPayload;\r\n}\r\n\r\nexport interface WSServerPayload {\r\n // For chunk events\r\n text?: string;\r\n\r\n // For tool events\r\n toolName?: string;\r\n toolInput?: unknown;\r\n toolResult?: unknown;\r\n\r\n // For complete events\r\n content?: string;\r\n usage?: {\r\n inputTokens: number;\r\n outputTokens: number;\r\n };\r\n toolsUsed?: string[];\r\n\r\n // For error events\r\n error?: string;\r\n code?: string;\r\n\r\n // For connected events\r\n message?: string;\r\n}\r\n\r\n// ============================================\r\n// STREAM EVENTS (internal)\r\n// ============================================\r\n\r\nexport type StreamEventType = \"chunk\" | \"tool_start\" | \"tool_result\" | \"complete\" | \"error\";\r\n\r\nexport interface StreamEvent {\r\n type: StreamEventType;\r\n data: {\r\n text?: string;\r\n toolName?: string;\r\n toolInput?: unknown;\r\n toolResult?: unknown;\r\n content?: string;\r\n inputTokens?: number;\r\n outputTokens?: number;\r\n toolsUsed?: string[];\r\n error?: string;\r\n };\r\n}\r\n\r\n// ============================================\r\n// CONNECTION STATE\r\n// ============================================\r\n\r\nexport interface ConnectionState {\r\n id: string;\r\n userId?: string;\r\n connectedAt: Date;\r\n lastActivity: Date;\r\n activeRequests: Map<string, AbortController>;\r\n}\r\n\r\n// ============================================\r\n// HELPER FUNCTIONS\r\n// ============================================\r\n\r\nexport function createServerMessage(\r\n type: WSServerMessageType,\r\n id: string,\r\n payload: Partial<WSServerPayload> = {}\r\n): string {\r\n const message: WSServerMessage = { type, id, payload };\r\n return JSON.stringify(message);\r\n}\r\n\r\nexport function parseClientMessage(data: string): WSClientMessage | null {\r\n try {\r\n const parsed = JSON.parse(data);\r\n if (!parsed.type || !parsed.id) {\r\n return null;\r\n }\r\n return parsed as WSClientMessage;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nexport function isValidClientMessage(msg: unknown): msg is WSClientMessage {\r\n if (!msg || typeof msg !== \"object\") return false;\r\n const m = msg as Record<string, unknown>;\r\n return (\r\n typeof m.type === \"string\" &&\r\n typeof m.id === \"string\" &&\r\n [\"chat\", \"chat_with_tools\", \"ping\", \"cancel\", \"subscribe_brain\", \"unsubscribe_brain\"].includes(m.type)\r\n );\r\n}\r\n","import { env } from \"./config/env\";\r\nimport { createBot } from \"./inputs/telegram/bot\";\r\nimport { app } from \"./inputs/api/server\";\r\nimport { startWorker, stopWorker, initializeScheduler } from \"./core/scheduler\";\r\nimport { DiscordBot } from \"./inputs/discord\";\r\nimport { SlackBot } from \"./inputs/slack\";\r\nimport { WhatsAppBot } from \"./inputs/whatsapp\";\r\nimport { SignalBot } from \"./inputs/signal\";\r\nimport { iMessageBot } from \"./inputs/imessage\";\r\nimport wsHandler from \"./inputs/websocket\";\r\nimport { initMCPRegistry, type MCPRegistry, getMCPToolSummary } from \"./core/mcp\";\r\nimport { setMCPRegistry } from \"./tools\";\r\nimport { initializeProviders } from \"./core/providers\";\r\nimport { initializeEmbeddings } from \"./core/embeddings\";\r\n\r\nexport async function main() {\r\n console.log(`\r\n╔══════════════════════════════════════════╗\r\n║ OPENSENTINEL v3.1.1 ║\r\n║ Your Personal AI Assistant ║\r\n╚══════════════════════════════════════════╝\r\n`);\r\n\r\n // Initialize LLM providers (Anthropic, OpenRouter, Groq, Gemini, Mistral, Ollama, etc.)\r\n await initializeProviders();\r\n\r\n // Initialize embedding providers (OpenAI, HuggingFace, TF-IDF)\r\n try {\r\n await initializeEmbeddings();\r\n } catch (err: any) {\r\n console.warn(\"[Embeddings] Failed to initialize:\", err.message);\r\n }\r\n\r\n // Start Telegram bot (only if token is configured)\r\n let bot: ReturnType<typeof createBot> | null = null;\r\n if (env.TELEGRAM_BOT_TOKEN) {\r\n console.log(\"[Telegram] Starting bot...\");\r\n bot = createBot();\r\n\r\n bot.start({\r\n onStart: (botInfo) => {\r\n console.log(`[Telegram] Bot started as @${botInfo.username}`);\r\n },\r\n });\r\n } else {\r\n console.log(\"[Telegram] No bot token configured, skipping\");\r\n }\r\n\r\n // Start scheduler with recurring jobs\r\n try {\r\n await initializeScheduler(async (task) => {\r\n console.log(`[Scheduler] Executing task: ${task.type}`);\r\n if (task.chatId && task.message && bot) {\r\n try {\r\n await bot.api.sendMessage(task.chatId, `⏰ Reminder: ${task.message}`);\r\n } catch (err) {\r\n console.error(\"[Scheduler] Failed to send reminder:\", err);\r\n }\r\n }\r\n });\r\n } catch (err) {\r\n console.warn(\"[Scheduler] Could not start worker (Redis may be unavailable):\", err);\r\n }\r\n\r\n // Load historical cost data from database\r\n try {\r\n const { costTracker } = await import(\"./core/observability/cost-tracker\");\r\n await costTracker.loadFromDb();\r\n } catch (err) {\r\n console.warn(\"[CostTracker] Could not load historical data:\", err);\r\n }\r\n\r\n // Initialize alerting system with default rules + load alert history from DB\r\n try {\r\n const { startAlertingSystem, loadAlertHistoryFromDb } = await import(\"./core/observability/alerting\");\r\n await loadAlertHistoryFromDb();\r\n startAlertingSystem(60000);\r\n console.log(\"[Alerting] System started with default rules\");\r\n } catch (err) {\r\n console.warn(\"[Alerting] Could not start alerting system:\", err);\r\n }\r\n\r\n // Initialize MCP (Model Context Protocol) servers in background (non-blocking)\r\n let mcpRegistry: MCPRegistry | null = null;\r\n const mcpInitPromise = env.MCP_ENABLED\r\n ? (async () => {\r\n try {\r\n console.log(\"[MCP] Initializing MCP servers (background)...\");\r\n mcpRegistry = await initMCPRegistry(env.MCP_CONFIG_PATH);\r\n setMCPRegistry(mcpRegistry);\r\n\r\n if (mcpRegistry.connectedCount > 0) {\r\n console.log(`[MCP] Connected to ${mcpRegistry.connectedCount} server(s), ${mcpRegistry.totalToolCount} tools available`);\r\n console.log(getMCPToolSummary(mcpRegistry));\r\n } else {\r\n console.log(\"[MCP] No servers configured (add servers to mcp.json)\");\r\n }\r\n } catch (err) {\r\n console.warn(\"[MCP] Failed to initialize:\", err);\r\n mcpRegistry = null;\r\n }\r\n })()\r\n : Promise.resolve();\r\n\r\n // Start Discord bot if configured\r\n let discordBot: DiscordBot | null = null;\r\n if (env.DISCORD_BOT_TOKEN) {\r\n console.log(\"[Discord] Starting bot...\");\r\n try {\r\n discordBot = new DiscordBot({\r\n token: env.DISCORD_BOT_TOKEN,\r\n clientId: env.DISCORD_CLIENT_ID || \"\",\r\n guildId: env.DISCORD_GUILD_ID,\r\n allowedUserIds: env.DISCORD_ALLOWED_USER_IDS?.split(\",\") || [],\r\n allowedRoleIds: env.DISCORD_ALLOWED_ROLE_IDS?.split(\",\") || [],\r\n });\r\n await discordBot.start();\r\n console.log(\"[Discord] Bot started\");\r\n } catch (err: any) {\r\n console.warn(\"[Discord] Failed to start bot:\", err.message);\r\n if (err.message?.includes(\"disallowed intents\") || err.message?.includes(\"Disallowed\")) {\r\n console.warn(\"[Discord] ⚠️ Enable Privileged Gateway Intents in Discord Developer Portal:\");\r\n console.warn(\"[Discord] 1. Go to https://discord.com/developers/applications\");\r\n console.warn(\"[Discord] 2. Select your bot application\");\r\n console.warn(\"[Discord] 3. Go to Bot → Privileged Gateway Intents\");\r\n console.warn(\"[Discord] 4. Enable: Presence Intent, Server Members Intent, Message Content Intent\");\r\n console.warn(\"[Discord] 5. Save and restart OpenSentinel\");\r\n }\r\n discordBot = null;\r\n }\r\n }\r\n\r\n // Start Slack bot if configured\r\n let slackBot: SlackBot | null = null;\r\n if (env.SLACK_BOT_TOKEN && env.SLACK_SIGNING_SECRET) {\r\n console.log(\"[Slack] Starting bot...\");\r\n slackBot = new SlackBot({\r\n token: env.SLACK_BOT_TOKEN,\r\n signingSecret: env.SLACK_SIGNING_SECRET,\r\n appToken: env.SLACK_APP_TOKEN,\r\n socketMode: !!env.SLACK_SOCKET_MODE,\r\n port: env.SLACK_PORT || 3000,\r\n allowedUserIds: env.SLACK_ALLOWED_USER_IDS?.split(\",\") || [],\r\n allowedChannelIds: env.SLACK_ALLOWED_CHANNEL_IDS?.split(\",\") || [],\r\n });\r\n await slackBot.start();\r\n console.log(\"[Slack] Bot started\");\r\n }\r\n\r\n // Start WhatsApp bot if configured\r\n let whatsappBot: WhatsAppBot | null = null;\r\n if (env.WHATSAPP_ENABLED) {\r\n console.log(\"[WhatsApp] Starting bot...\");\r\n try {\r\n whatsappBot = new WhatsAppBot({\r\n authDir: env.WHATSAPP_AUTH_DIR,\r\n allowedNumbers: env.WHATSAPP_ALLOWED_NUMBERS?.split(\",\").filter(Boolean) || [],\r\n printQR: true,\r\n });\r\n await whatsappBot.start();\r\n console.log(\"[WhatsApp] Bot started (scan QR code if prompted)\");\r\n } catch (err: any) {\r\n console.warn(\"[WhatsApp] Failed to start bot:\", err.message);\r\n whatsappBot = null;\r\n }\r\n }\r\n\r\n // Start Signal bot if configured\r\n let signalBot: SignalBot | null = null;\r\n if (env.SIGNAL_ENABLED && env.SIGNAL_PHONE_NUMBER) {\r\n console.log(\"[Signal] Starting bot...\");\r\n try {\r\n signalBot = new SignalBot({\r\n phoneNumber: env.SIGNAL_PHONE_NUMBER,\r\n signalCliPath: env.SIGNAL_CLI_PATH,\r\n allowedNumbers: env.SIGNAL_ALLOWED_NUMBERS?.split(\",\").filter(Boolean) || [],\r\n });\r\n await signalBot.start();\r\n console.log(\"[Signal] Bot started\");\r\n } catch (err: any) {\r\n console.warn(\"[Signal] Failed to start bot:\", err.message);\r\n console.warn(\"[Signal] Make sure signal-cli is installed and configured\");\r\n signalBot = null;\r\n }\r\n }\r\n\r\n // Start iMessage bot if configured (macOS only)\r\n let imessageBot: iMessageBot | null = null;\r\n if (env.IMESSAGE_ENABLED) {\r\n console.log(\"[iMessage] Starting bot...\");\r\n try {\r\n imessageBot = new iMessageBot({\r\n mode: env.IMESSAGE_MODE as \"bluebubbles\" | \"applescript\",\r\n serverUrl: env.IMESSAGE_BLUEBUBBLES_URL,\r\n password: env.IMESSAGE_BLUEBUBBLES_PASSWORD,\r\n allowedNumbers: env.IMESSAGE_ALLOWED_NUMBERS?.split(\",\").filter(Boolean) || [],\r\n });\r\n await imessageBot.start();\r\n console.log(\"[iMessage] Bot started\");\r\n } catch (err: any) {\r\n console.warn(\"[iMessage] Failed to start bot:\", err.message);\r\n if (process.platform !== \"darwin\") {\r\n console.warn(\"[iMessage] iMessage is only available on macOS\");\r\n }\r\n imessageBot = null;\r\n }\r\n }\r\n\r\n // Start agent processor if enabled (BullMQ worker for sub-agents)\r\n if (env.AGENT_PROCESSOR_ENABLED) {\r\n try {\r\n const { startAgentProcessor } = await import(\"./core/agents/agent-processor\");\r\n startAgentProcessor();\r\n } catch (err: any) {\r\n console.warn(\"[AgentProcessor] Failed to start:\", err.message);\r\n }\r\n }\r\n\r\n // Start API server with WebSocket support\r\n console.log(`[API] Starting server on port ${env.PORT}...`);\r\n const server = Bun.serve({\r\n port: env.PORT,\r\n fetch: (req: Request, server: any) => {\r\n // Handle WebSocket upgrade requests\r\n if (req.headers.get(\"upgrade\") === \"websocket\") {\r\n const result = wsHandler.handleUpgrade(req, server);\r\n if (result) return result;\r\n // If handleUpgrade returns undefined, the upgrade was successful\r\n return undefined as unknown as Response;\r\n }\r\n // Handle regular HTTP requests\r\n return app.fetch(req);\r\n },\r\n websocket: wsHandler.handlers,\r\n });\r\n\r\n console.log(`[API] Server running at http://localhost:${server.port}`);\r\n console.log(`[WebSocket] Available at ws://localhost:${server.port}/ws`);\r\n console.log(`[Web] Dashboard available at http://localhost:${server.port}`);\r\n\r\n // Start tunnel if configured\r\n let tunnelUrl: string | null = null;\r\n if ((env as any).TUNNEL_ENABLED) {\r\n try {\r\n const { autoStartTunnel } = await import(\"./core/tunnel\");\r\n tunnelUrl = await autoStartTunnel(\r\n env.PORT,\r\n (env as any).TUNNEL_PROVIDER || \"cloudflare\",\r\n {\r\n authToken: (env as any).TUNNEL_AUTH_TOKEN,\r\n subdomain: (env as any).TUNNEL_SUBDOMAIN,\r\n }\r\n );\r\n } catch (err: any) {\r\n console.warn(\"[Tunnel] Failed to start:\", err.message);\r\n }\r\n }\r\n\r\n // Initialize autonomy manager\r\n if ((env as any).AUTONOMY_LEVEL) {\r\n try {\r\n const { autonomyManager } = await import(\"./core/security/autonomy\");\r\n autonomyManager.setDefaultLevel((env as any).AUTONOMY_LEVEL);\r\n console.log(`[Autonomy] Level: ${(env as any).AUTONOMY_LEVEL}`);\r\n } catch {\r\n // Autonomy system non-critical\r\n }\r\n }\r\n\r\n // Register financial safeguards (risk engine hook + limits)\r\n try {\r\n const { riskEngine } = await import(\"./core/intelligence/risk-engine\");\r\n const { hookManager } = await import(\"./core/hooks\");\r\n\r\n // Update risk engine with env-based financial limits\r\n riskEngine.updateConfig({\r\n maxTradeSize: (env as any).EXCHANGE_MAX_TRADE_SIZE ?? 100,\r\n maxDailyTradeSpend: (env as any).EXCHANGE_MAX_DAILY_SPEND ?? 500,\r\n maxTradesPerHour: (env as any).EXCHANGE_MAX_TRADES_PER_HOUR ?? 5,\r\n });\r\n\r\n // Register as a hook to intercept tool execution\r\n riskEngine.registerAsHook(hookManager);\r\n\r\n const maxTrade = (env as any).EXCHANGE_MAX_TRADE_SIZE ?? 100;\r\n const maxDaily = (env as any).EXCHANGE_MAX_DAILY_SPEND ?? 500;\r\n const maxRate = (env as any).EXCHANGE_MAX_TRADES_PER_HOUR ?? 5;\r\n const agentTrading = (env as any).EXCHANGE_AGENT_TRADING_ENABLED ?? false;\r\n console.log(`[Security] Financial safeguards active: max_trade=$${maxTrade}, max_daily=$${maxDaily}, max_rate=${maxRate}/hr, agent_trading=${agentTrading}`);\r\n } catch {\r\n // Financial safeguards non-critical if no trading configured\r\n }\r\n\r\n // Initialize device pairing\r\n if ((env as any).PAIRING_ENABLED) {\r\n try {\r\n const { pairingManager } = await import(\"./core/security/pairing\");\r\n if ((env as any).PAIRING_CODE_LIFETIME_MINUTES) {\r\n pairingManager.setCodeLifetime((env as any).PAIRING_CODE_LIFETIME_MINUTES);\r\n }\r\n const code = pairingManager.generateCode();\r\n console.log(`[Pairing] Device pairing enabled. Code: ${code}`);\r\n } catch {\r\n // Pairing system non-critical\r\n }\r\n }\r\n\r\n // Start Matrix bot if configured\r\n let matrixBot: any = null;\r\n if ((env as any).MATRIX_ENABLED && (env as any).MATRIX_HOMESERVER_URL && (env as any).MATRIX_ACCESS_TOKEN) {\r\n console.log(\"[Matrix] Starting bot...\");\r\n try {\r\n const { MatrixBot } = await import(\"./inputs/matrix\");\r\n matrixBot = new MatrixBot({\r\n homeserverUrl: (env as any).MATRIX_HOMESERVER_URL,\r\n accessToken: (env as any).MATRIX_ACCESS_TOKEN,\r\n userId: (env as any).MATRIX_USER_ID || \"\",\r\n allowedRoomIds: (env as any).MATRIX_ALLOWED_ROOM_IDS?.split(\",\").filter(Boolean),\r\n autoJoin: (env as any).MATRIX_AUTO_JOIN ?? true,\r\n e2eEnabled: (env as any).MATRIX_E2E_ENABLED ?? false,\r\n });\r\n await matrixBot.start();\r\n console.log(\"[Matrix] Bot started\");\r\n } catch (err: any) {\r\n console.warn(\"[Matrix] Failed to start bot:\", err.message);\r\n matrixBot = null;\r\n }\r\n }\r\n\r\n console.log(\"\");\r\n const channels = [\r\n bot ? \"Telegram\" : null,\r\n discordBot ? \"Discord\" : null,\r\n slackBot ? \"Slack\" : null,\r\n whatsappBot ? \"WhatsApp\" : null,\r\n signalBot ? \"Signal\" : null,\r\n imessageBot ? \"iMessage\" : null,\r\n matrixBot ? \"Matrix\" : null,\r\n \"API\",\r\n \"WebSocket\",\r\n ].filter(Boolean).join(\", \");\r\n console.log(`OpenSentinel is ready! Send a message via ${channels}.`);\r\n if (tunnelUrl) {\r\n console.log(`Public URL: ${tunnelUrl}`);\r\n }\r\n\r\n // Return shutdown function for CLI to wire up\r\n return async function shutdown() {\r\n console.log(\"\\nShutting down...\");\r\n stopWorker();\r\n wsHandler.closeAllConnections();\r\n await mcpInitPromise;\r\n if (mcpRegistry) await mcpRegistry.shutdown();\r\n if (bot) await bot.stop();\r\n if (discordBot) await discordBot.stop();\r\n if (slackBot) await slackBot.stop();\r\n if (whatsappBot) await whatsappBot.stop();\r\n if (signalBot) await signalBot.stop();\r\n if (imessageBot) await imessageBot.stop();\r\n if (matrixBot) await matrixBot.stop();\r\n // Stop tunnel\r\n try {\r\n const { stopTunnel } = await import(\"./core/tunnel\");\r\n await stopTunnel();\r\n } catch { /* tunnel not loaded */ }\r\n server.stop();\r\n };\r\n}\r\n"],"mappings":"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","names":["server"]}
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
createStockClient,
|
|
5
5
|
stocks_default
|
|
6
6
|
} from "./chunk-22VGGA7S.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-UP2VWCW5.js";
|
|
8
8
|
export {
|
|
9
9
|
StockClient,
|
|
10
10
|
StockClientError,
|
|
11
11
|
createStockClient,
|
|
12
12
|
stocks_default as default
|
|
13
13
|
};
|
|
14
|
-
//# sourceMappingURL=stocks-
|
|
14
|
+
//# sourceMappingURL=stocks-4M4HZWZS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
extractText,
|
|
3
|
+
getSupportedTextFormats,
|
|
4
|
+
isSupportedTextFormat
|
|
5
|
+
} from "./chunk-MIC5IBQF.js";
|
|
6
|
+
import "./chunk-UP2VWCW5.js";
|
|
7
|
+
export {
|
|
8
|
+
extractText,
|
|
9
|
+
getSupportedTextFormats,
|
|
10
|
+
isSupportedTextFormat
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=text-extractor-OAUBAW5P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
transformText,
|
|
9
9
|
truncate
|
|
10
10
|
} from "./chunk-PTGTGXV2.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-UP2VWCW5.js";
|
|
12
12
|
export {
|
|
13
13
|
changeCase,
|
|
14
14
|
countText,
|
|
@@ -19,4 +19,4 @@ export {
|
|
|
19
19
|
transformText,
|
|
20
20
|
truncate
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=text-transform-
|
|
22
|
+
//# sourceMappingURL=text-transform-HCLCUDFZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deleteConnection,
|
|
3
|
+
getAccessToken,
|
|
4
|
+
getConnection,
|
|
5
|
+
saveConnection
|
|
6
|
+
} from "./chunk-6HGMRR4J.js";
|
|
7
|
+
import "./chunk-DTISLIMB.js";
|
|
8
|
+
import "./chunk-3AWAWRWB.js";
|
|
9
|
+
import "./chunk-7BNFELEK.js";
|
|
10
|
+
import "./chunk-5BTVJR7R.js";
|
|
11
|
+
import "./chunk-4KIHDIXZ.js";
|
|
12
|
+
import "./chunk-ZIBRVA3Y.js";
|
|
13
|
+
import "./chunk-UP2VWCW5.js";
|
|
14
|
+
export {
|
|
15
|
+
deleteConnection,
|
|
16
|
+
getAccessToken,
|
|
17
|
+
getConnection,
|
|
18
|
+
saveConnection
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=token-store-SEWRX6RE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TOOLS,
|
|
3
|
+
executeTool,
|
|
4
|
+
getMCPRegistry,
|
|
5
|
+
setMCPRegistry
|
|
6
|
+
} from "./chunk-ZMML6T63.js";
|
|
7
|
+
import "./chunk-5JJTLWOR.js";
|
|
8
|
+
import "./chunk-QPY3WRVM.js";
|
|
9
|
+
import "./chunk-ADTDYJO7.js";
|
|
10
|
+
import "./chunk-DTISLIMB.js";
|
|
11
|
+
import "./chunk-CUPEENUY.js";
|
|
12
|
+
import "./chunk-2WTKTG2C.js";
|
|
13
|
+
import "./chunk-U2X2J3FI.js";
|
|
14
|
+
import "./chunk-X6Q3K3L2.js";
|
|
15
|
+
import "./chunk-ODCFS5WD.js";
|
|
16
|
+
import "./chunk-KM22GV7G.js";
|
|
17
|
+
import "./chunk-P6QINGFL.js";
|
|
18
|
+
import "./chunk-HJSEEFO3.js";
|
|
19
|
+
import "./chunk-C6PELIHS.js";
|
|
20
|
+
import "./chunk-7WQO5J2M.js";
|
|
21
|
+
import "./chunk-WMFYI7XC.js";
|
|
22
|
+
import "./chunk-YEDEAX6Y.js";
|
|
23
|
+
import "./chunk-6ZNCY2GI.js";
|
|
24
|
+
import "./chunk-WZAH34TG.js";
|
|
25
|
+
import "./chunk-6KONMXQ6.js";
|
|
26
|
+
import "./chunk-22VGGA7S.js";
|
|
27
|
+
import "./chunk-HN3F4WSW.js";
|
|
28
|
+
import "./chunk-V3OKHQUX.js";
|
|
29
|
+
import "./chunk-2I5QHYG6.js";
|
|
30
|
+
import "./chunk-CZTMGHUC.js";
|
|
31
|
+
import "./chunk-4WH6MFEW.js";
|
|
32
|
+
import "./chunk-GW6V4D43.js";
|
|
33
|
+
import "./chunk-DOYGMNMK.js";
|
|
34
|
+
import "./chunk-CQ4JURG7.js";
|
|
35
|
+
import "./chunk-BBN4VCNK.js";
|
|
36
|
+
import "./chunk-5BTVJR7R.js";
|
|
37
|
+
import "./chunk-4KIHDIXZ.js";
|
|
38
|
+
import "./chunk-ZIBRVA3Y.js";
|
|
39
|
+
import "./chunk-35WYTA3C.js";
|
|
40
|
+
import "./chunk-UP2VWCW5.js";
|
|
41
|
+
export {
|
|
42
|
+
TOOLS,
|
|
43
|
+
executeTool,
|
|
44
|
+
getMCPRegistry,
|
|
45
|
+
setMCPRegistry
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=tools-PJZ6RI4P.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|