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.
Files changed (361) hide show
  1. package/README.md +138 -83
  2. package/dist/agent-manager-JZ4IM7XI.js +39 -0
  3. package/dist/agent-processor-DDDHC2SO.js +281 -0
  4. package/dist/agent-processor-DDDHC2SO.js.map +1 -0
  5. package/dist/agent-types-2T4PXLFQ.js +12 -0
  6. package/dist/alerting-LK7VVYTX.js +699 -0
  7. package/dist/alerting-LK7VVYTX.js.map +1 -0
  8. package/dist/analysis-agent-JWN2GXYE.js +288 -0
  9. package/dist/analysis-agent-JWN2GXYE.js.map +1 -0
  10. package/dist/analyzer-OTWE3ARE.js +22 -0
  11. package/dist/{archiver-AVNBYCKQ.js → archiver-FPGKRP6P.js} +2 -2
  12. package/dist/{audit-logger-OBPR7CRO.js → audit-logger-CI4WZQPD.js} +6 -5
  13. package/dist/{auth-UOX5K2BE.js → auth-PH5IHISW.js} +2 -2
  14. package/dist/{autonomy-ZXDBDQUJ.js → autonomy-N7W5XPLX.js} +4 -3
  15. package/dist/autonomy-N7W5XPLX.js.map +1 -0
  16. package/dist/{aws-s3-Q4LLZZPD.js → aws-s3-QZMURYXB.js} +2 -2
  17. package/dist/{backup-restore-PZ7CYYB7.js → backup-restore-72OQTZO3.js} +2 -2
  18. package/dist/{blocks-R3PODY47.js → blocks-YOWOESDD.js} +4 -4
  19. package/dist/bot-VDHBGUVI.js +47 -0
  20. package/dist/brain-6QTXN4QP.js +66 -0
  21. package/dist/{camera-monitor-M5CYKUU4.js → camera-monitor-LHTUWHEL.js} +2 -2
  22. package/dist/{charts-V7ARZNKF.js → charts-FJ32GQK7.js} +2 -2
  23. package/dist/{chunk-WRAKK6K6.js → chunk-2I5QHYG6.js} +5 -3
  24. package/dist/chunk-2I5QHYG6.js.map +1 -0
  25. package/dist/{chunk-TVEWKIK3.js → chunk-2WTKTG2C.js} +2 -2
  26. package/dist/chunk-3AWAWRWB.js +143 -0
  27. package/dist/chunk-3AWAWRWB.js.map +1 -0
  28. package/dist/{chunk-ZLZKF2PM.js → chunk-4KIHDIXZ.js} +43 -2
  29. package/dist/chunk-4KIHDIXZ.js.map +1 -0
  30. package/dist/{chunk-EVE7MIIY.js → chunk-4WH6MFEW.js} +15 -16
  31. package/dist/chunk-4WH6MFEW.js.map +1 -0
  32. package/dist/{chunk-I6BDYQIG.js → chunk-56UJS2LA.js} +6 -6
  33. package/dist/chunk-56UJS2LA.js.map +1 -0
  34. package/dist/chunk-5BTVJR7R.js +37 -0
  35. package/dist/chunk-5BTVJR7R.js.map +1 -0
  36. package/dist/chunk-5JJTLWOR.js +1021 -0
  37. package/dist/chunk-5JJTLWOR.js.map +1 -0
  38. package/dist/chunk-66SAOZPU.js +236 -0
  39. package/dist/chunk-66SAOZPU.js.map +1 -0
  40. package/dist/chunk-6HGMRR4J.js +113 -0
  41. package/dist/chunk-6HGMRR4J.js.map +1 -0
  42. package/dist/chunk-6W6PTJFT.js +181 -0
  43. package/dist/chunk-6W6PTJFT.js.map +1 -0
  44. package/dist/chunk-6ZNCY2GI.js +418 -0
  45. package/dist/chunk-6ZNCY2GI.js.map +1 -0
  46. package/dist/chunk-7BNFELEK.js +31 -0
  47. package/dist/chunk-7BNFELEK.js.map +1 -0
  48. package/dist/chunk-ADTDYJO7.js +265 -0
  49. package/dist/chunk-ADTDYJO7.js.map +1 -0
  50. package/dist/{chunk-OCVQGBJK.js → chunk-BBN4VCNK.js} +6 -4
  51. package/dist/chunk-BBN4VCNK.js.map +1 -0
  52. package/dist/{chunk-SJSUSJ47.js → chunk-BNZHWAZC.js} +2 -2
  53. package/dist/chunk-C6PELIHS.js +60 -0
  54. package/dist/chunk-C6PELIHS.js.map +1 -0
  55. package/dist/{chunk-MQJ2ECQT.js → chunk-CUPEENUY.js} +3 -3
  56. package/dist/{chunk-NHMBTUMW.js → chunk-CWT6CAE5.js} +2 -2
  57. package/dist/{chunk-4GLYY4NN.js → chunk-CZTMGHUC.js} +8 -2
  58. package/dist/chunk-CZTMGHUC.js.map +1 -0
  59. package/dist/{chunk-RZ4YESBG.js → chunk-DOYGMNMK.js} +1 -1
  60. package/dist/chunk-DOYGMNMK.js.map +1 -0
  61. package/dist/chunk-DTISLIMB.js +89 -0
  62. package/dist/chunk-DTISLIMB.js.map +1 -0
  63. package/dist/{chunk-SPPMCAKG.js → chunk-GBVJTRXS.js} +2 -2
  64. package/dist/chunk-GBVJTRXS.js.map +1 -0
  65. package/dist/{chunk-AYUKPTSM.js → chunk-GJETKBOY.js} +96 -218
  66. package/dist/chunk-GJETKBOY.js.map +1 -0
  67. package/dist/{chunk-BXZ6EA52.js → chunk-GW6V4D43.js} +57 -3
  68. package/dist/chunk-GW6V4D43.js.map +1 -0
  69. package/dist/{chunk-6PMVAAA7.js → chunk-HJSEEFO3.js} +3 -3
  70. package/dist/{chunk-TYAGMJNV.js → chunk-HQZQFEAX.js} +5 -5
  71. package/dist/{chunk-MXAPLSJ5.js → chunk-J4JW73TT.js} +2 -2
  72. package/dist/{chunk-VEHFVBLI.js → chunk-JHYYFPKX.js} +2 -2
  73. package/dist/chunk-LFDXEYYB.js +150 -0
  74. package/dist/chunk-LFDXEYYB.js.map +1 -0
  75. package/dist/chunk-MIC5IBQF.js +386 -0
  76. package/dist/chunk-MIC5IBQF.js.map +1 -0
  77. package/dist/chunk-ODCFS5WD.js +463 -0
  78. package/dist/chunk-ODCFS5WD.js.map +1 -0
  79. package/dist/{chunk-XMCVRVTF.js → chunk-P64EV4YY.js} +1 -1
  80. package/dist/chunk-P64EV4YY.js.map +1 -0
  81. package/dist/chunk-PBOCSGNL.js +84 -0
  82. package/dist/chunk-PBOCSGNL.js.map +1 -0
  83. package/dist/{chunk-66OJ3WB4.js → chunk-PD3CTDO6.js} +2 -2
  84. package/dist/chunk-QPY3WRVM.js +647 -0
  85. package/dist/chunk-QPY3WRVM.js.map +1 -0
  86. package/dist/chunk-S2EOIVF4.js +3907 -0
  87. package/dist/chunk-S2EOIVF4.js.map +1 -0
  88. package/dist/chunk-SDLOMKCW.js +213 -0
  89. package/dist/chunk-SDLOMKCW.js.map +1 -0
  90. package/dist/chunk-TKBVW7ZJ.js +162 -0
  91. package/dist/chunk-TKBVW7ZJ.js.map +1 -0
  92. package/dist/{chunk-BRBWNV65.js → chunk-U2X2J3FI.js} +3 -3
  93. package/dist/chunk-U2X2J3FI.js.map +1 -0
  94. package/dist/{chunk-PLDDJCW6.js → chunk-UP2VWCW5.js} +1 -12
  95. package/dist/{chunk-SVAPX2XN.js → chunk-V3OKHQUX.js} +9 -7
  96. package/dist/{chunk-SVAPX2XN.js.map → chunk-V3OKHQUX.js.map} +1 -1
  97. package/dist/{chunk-4UOE5TUZ.js → chunk-WMDVOWN6.js} +4 -4
  98. package/dist/chunk-WMFYI7XC.js +564 -0
  99. package/dist/chunk-WMFYI7XC.js.map +1 -0
  100. package/dist/chunk-WZAH34TG.js +129 -0
  101. package/dist/chunk-WZAH34TG.js.map +1 -0
  102. package/dist/{chunk-H5RQOFO2.js → chunk-X6Q3K3L2.js} +6 -6
  103. package/dist/chunk-X6Q3K3L2.js.map +1 -0
  104. package/dist/chunk-XTX7EK43.js +134 -0
  105. package/dist/chunk-XTX7EK43.js.map +1 -0
  106. package/dist/chunk-YEDEAX6Y.js +194 -0
  107. package/dist/chunk-YEDEAX6Y.js.map +1 -0
  108. package/dist/{chunk-XKYRH4FM.js → chunk-ZIBRVA3Y.js} +70 -30
  109. package/dist/chunk-ZIBRVA3Y.js.map +1 -0
  110. package/dist/chunk-ZIYTHUM5.js +457 -0
  111. package/dist/chunk-ZIYTHUM5.js.map +1 -0
  112. package/dist/{chunk-766ASQWE.js → chunk-ZMML6T63.js} +2711 -2329
  113. package/dist/chunk-ZMML6T63.js.map +1 -0
  114. package/dist/chunk-ZVHG4KF2.js +380 -0
  115. package/dist/chunk-ZVHG4KF2.js.map +1 -0
  116. package/dist/chunker-K6WTR62A.js +12 -0
  117. package/dist/cli.js +1 -1
  118. package/dist/cli.js.map +1 -1
  119. package/dist/{client-ZQSFPMOB.js → client-FOIYPOZQ.js} +5 -6
  120. package/dist/{clipboard-manager-TEO2GEDN.js → clipboard-manager-4SBNESGZ.js} +2 -2
  121. package/dist/coding-agent-DESSU3AC.js +233 -0
  122. package/dist/coding-agent-DESSU3AC.js.map +1 -0
  123. package/dist/commands/setup.js +2 -2
  124. package/dist/commands/start.js +3 -3
  125. package/dist/commands/status.js +2 -2
  126. package/dist/commands/stop.js +2 -2
  127. package/dist/commands/utils.js +2 -2
  128. package/dist/cost-tracker-KZQSTSE2.js +11 -0
  129. package/dist/{cron-explain-HHQKPD3M.js → cron-explain-UOOOYWZZ.js} +2 -2
  130. package/dist/{crypto-4AP47IKC.js → crypto-2VG3RJR2.js} +2 -2
  131. package/dist/{databases-37X4CI2Y.js → databases-XDPMG5AV.js} +4 -4
  132. package/dist/db-I7MNG6CL.js +83 -0
  133. package/dist/discord-6UQHCN27.js +81 -0
  134. package/dist/documents-PFHSK7SZ.js +184 -0
  135. package/dist/documents-PFHSK7SZ.js.map +1 -0
  136. package/dist/docx-parser-EXL4TN5E.js +16 -0
  137. package/dist/{email-K7LO2IPB.js → email-6OIN4SYL.js} +34 -25
  138. package/dist/email-6OIN4SYL.js.map +1 -0
  139. package/dist/{enhanced-retrieval-DNLLEM4Z.js → enhanced-retrieval-JWX2HWU4.js} +12 -8
  140. package/dist/{enhanced-retrieval-DNLLEM4Z.js.map → enhanced-retrieval-JWX2HWU4.js.map} +1 -1
  141. package/dist/enrichment-pipeline-7FE5R5ZI.js +14 -0
  142. package/dist/{entity-resolution-Y3IUWEAT.js → entity-resolution-7Z6STVXX.js} +6 -5
  143. package/dist/env-GN5VHI43.js +12 -0
  144. package/dist/error-tracker-64DEH3D7.js +32 -0
  145. package/dist/finnhub-X7ZMQSXF.js +178 -0
  146. package/dist/finnhub-X7ZMQSXF.js.map +1 -0
  147. package/dist/fred-TMUF3J2V.js +203 -0
  148. package/dist/fred-TMUF3J2V.js.map +1 -0
  149. package/dist/github-DUWSXCNP.js +833 -0
  150. package/dist/github-DUWSXCNP.js.map +1 -0
  151. package/dist/{google-workspace-DKWUVNGC.js → google-workspace-TSZPZK5G.js} +2 -2
  152. package/dist/graph-client-NB475AK5.js +17 -0
  153. package/dist/{hash-tool-ULQYD7B5.js → hash-tool-ENAB5LWH.js} +2 -2
  154. package/dist/{heartbeat-monitor-GCISLXI3.js → heartbeat-monitor-KRDYTDBF.js} +2 -2
  155. package/dist/hooks-N4MIFBVM.js +14 -0
  156. package/dist/{image-generation-OSU7FP6F.js → image-generation-MDE6AVQO.js} +2 -2
  157. package/dist/imessage-DSGSGUZS.js +44 -0
  158. package/dist/inbox-summarizer-F2KAU72V.js +56 -0
  159. package/dist/{incident-response-C5J7Q6DT.js → incident-response-E3UGMX5G.js} +8 -6
  160. package/dist/incident-response-E3UGMX5G.js.map +1 -0
  161. package/dist/{inventory-manager-352OHXWD.js → inventory-manager-C67BSZM6.js} +2 -2
  162. package/dist/{jira-GSGDBMIG.js → jira-PAGZWUBJ.js} +2 -2
  163. package/dist/{json-tool-QE2SYHEG.js → json-tool-4FK5RNER.js} +2 -2
  164. package/dist/{key-rotation-DPHU4ZTB.js → key-rotation-WCC5FOYS.js} +2 -2
  165. package/dist/knowledge-base-5SMMOGQJ.js +46 -0
  166. package/dist/lib.d.ts +94 -1
  167. package/dist/lib.js +83 -66
  168. package/dist/lib.js.map +1 -1
  169. package/dist/{mailchimp-KKNF6QJ7.js → mailchimp-ZFYDC44J.js} +2 -2
  170. package/dist/{matrix-QVHG76I7.js → matrix-WYGEOZL5.js} +30 -21
  171. package/dist/{matrix-QVHG76I7.js.map → matrix-WYGEOZL5.js.map} +1 -1
  172. package/dist/{mcp-3JI6W7ZE.js → mcp-DJ2QDA6A.js} +3 -3
  173. package/dist/metrics-BH3ZLGEV.js +25 -0
  174. package/dist/{microsoft365-UCBKJHNX.js → microsoft365-6G2IJMWC.js} +2 -2
  175. package/dist/multi-user-XAEMB244.js +411 -0
  176. package/dist/multi-user-XAEMB244.js.map +1 -0
  177. package/dist/oauth-UPJYFOVU.js +34 -0
  178. package/dist/{ocr-AC7NPX33.js → ocr-UONKTQU7.js} +6 -4
  179. package/dist/{ollama-BOAMSPLJ.js → ollama-J7CU45WT.js} +2 -2
  180. package/dist/osint-agent-RL5XPBRQ.js +189 -0
  181. package/dist/osint-agent-RL5XPBRQ.js.map +1 -0
  182. package/dist/{pages-MI523RB7.js → pages-XDE7JRCA.js} +5 -5
  183. package/dist/{pair-JDFTERIK.js → pair-YZJFQUU5.js} +2 -2
  184. package/dist/{pairing-IFQYCPNS.js → pairing-77N47RAT.js} +2 -2
  185. package/dist/{pdf-ALQVOEJR.js → pdf-67HGXCFJ.js} +3 -3
  186. package/dist/pdf-parser-YLMTTYHL.js +14 -0
  187. package/dist/{presentations-DSV5IHG5.js → presentations-UOET2FVZ.js} +3 -3
  188. package/dist/presentations-UOET2FVZ.js.map +1 -0
  189. package/dist/{prometheus-JNT2BD4L.js → prometheus-YETCZO4I.js} +2 -2
  190. package/dist/prometheus-YETCZO4I.js.map +1 -0
  191. package/dist/{providers-J4LYPHDR.js → providers-2YQ6E3IF.js} +6 -4
  192. package/dist/providers-2YQ6E3IF.js.map +1 -0
  193. package/dist/{qr-code-WIX4PB4U.js → qr-code-6WZJHRKL.js} +2 -2
  194. package/dist/qr-code-6WZJHRKL.js.map +1 -0
  195. package/dist/{quickbooks-XB4NII2S.js → quickbooks-N675W7IK.js} +2 -2
  196. package/dist/{regex-tool-W4ABRKGK.js → regex-tool-6Q63LQ7B.js} +2 -2
  197. package/dist/regex-tool-6Q63LQ7B.js.map +1 -0
  198. package/dist/research-agent-WCRSY3UZ.js +168 -0
  199. package/dist/research-agent-WCRSY3UZ.js.map +1 -0
  200. package/dist/risk-engine-YKCPT5D5.js +10 -0
  201. package/dist/risk-engine-YKCPT5D5.js.map +1 -0
  202. package/dist/scheduler-6PLLAQI7.js +74 -0
  203. package/dist/scheduler-6PLLAQI7.js.map +1 -0
  204. package/dist/schema-ETY7L2VA.js +78 -0
  205. package/dist/schema-ETY7L2VA.js.map +1 -0
  206. package/dist/{search-BCLBO5E3.js → search-GMLKBHSW.js} +4 -4
  207. package/dist/search-GMLKBHSW.js.map +1 -0
  208. package/dist/{sendgrid-RNXCAFKM.js → sendgrid-QGJIVPWV.js} +2 -2
  209. package/dist/sharepoint-V5P4Q62L.js +30 -0
  210. package/dist/sharepoint-V5P4Q62L.js.map +1 -0
  211. package/dist/{shopify-NCXYJB4R.js → shopify-ON2PAU27.js} +2 -2
  212. package/dist/signal-7D5EPGVL.js +44 -0
  213. package/dist/signal-7D5EPGVL.js.map +1 -0
  214. package/dist/slack-KSS6YK5Z.js +86 -0
  215. package/dist/slack-KSS6YK5Z.js.map +1 -0
  216. package/dist/{sms-M3JIOTCW.js → sms-CSUCC7HL.js} +4 -4
  217. package/dist/sms-CSUCC7HL.js.map +1 -0
  218. package/dist/{src-VYUE6LRA.js → src-GO7GGW7O.js} +190 -52
  219. package/dist/src-GO7GGW7O.js.map +1 -0
  220. package/dist/{stocks-XXWBPOCU.js → stocks-4M4HZWZS.js} +2 -2
  221. package/dist/stocks-4M4HZWZS.js.map +1 -0
  222. package/dist/text-extractor-OAUBAW5P.js +12 -0
  223. package/dist/text-extractor-OAUBAW5P.js.map +1 -0
  224. package/dist/{text-transform-6SGUA5Z4.js → text-transform-HCLCUDFZ.js} +2 -2
  225. package/dist/text-transform-HCLCUDFZ.js.map +1 -0
  226. package/dist/token-store-SEWRX6RE.js +20 -0
  227. package/dist/token-store-SEWRX6RE.js.map +1 -0
  228. package/dist/tools-PJZ6RI4P.js +47 -0
  229. package/dist/tools-PJZ6RI4P.js.map +1 -0
  230. package/dist/{tunnel-IWMXUML4.js → tunnel-XOUVVRAK.js} +4 -2
  231. package/dist/tunnel-XOUVVRAK.js.map +1 -0
  232. package/dist/{twilio-53GEW5JT.js → twilio-3L7DUNYQ.js} +2 -2
  233. package/dist/{unit-converter-ZYXMEZOE.js → unit-converter-LYPAHU64.js} +2 -2
  234. package/dist/unit-converter-LYPAHU64.js.map +1 -0
  235. package/dist/whatsapp-DWXK25V2.js +44 -0
  236. package/dist/whatsapp-DWXK25V2.js.map +1 -0
  237. package/dist/{word-document-7B6SJMAY.js → word-document-AV3YB4L2.js} +4 -4
  238. package/dist/word-document-AV3YB4L2.js.map +1 -0
  239. package/dist/workflow-store-5Y56GUP7.js +373 -0
  240. package/dist/workflow-store-5Y56GUP7.js.map +1 -0
  241. package/dist/writing-agent-VDGLNOGO.js +243 -0
  242. package/dist/writing-agent-VDGLNOGO.js.map +1 -0
  243. package/dist/{xero-QYO66D45.js → xero-UHAHVYSD.js} +2 -2
  244. package/dist/{zapier-webhook-TBZ5YF2A.js → zapier-webhook-NIELLTXR.js} +2 -2
  245. package/drizzle/0002_mushy_master_mold.sql +139 -139
  246. package/drizzle/0003_overjoyed_rhodey.sql +46 -0
  247. package/drizzle/meta/0002_snapshot.json +3636 -3636
  248. package/drizzle/meta/0003_snapshot.json +3946 -0
  249. package/drizzle/meta/_journal.json +7 -0
  250. package/package.json +110 -100
  251. package/dist/autonomy-ZXDBDQUJ.js.map +0 -1
  252. package/dist/bot-QRARP4UN.js +0 -36
  253. package/dist/brain-7XLLM3KC.js +0 -56
  254. package/dist/chunk-4GLYY4NN.js.map +0 -1
  255. package/dist/chunk-766ASQWE.js.map +0 -1
  256. package/dist/chunk-AYUKPTSM.js.map +0 -1
  257. package/dist/chunk-BRBWNV65.js.map +0 -1
  258. package/dist/chunk-BXZ6EA52.js.map +0 -1
  259. package/dist/chunk-EVE7MIIY.js.map +0 -1
  260. package/dist/chunk-H5RQOFO2.js.map +0 -1
  261. package/dist/chunk-I6BDYQIG.js.map +0 -1
  262. package/dist/chunk-IZJMVV7O.js +0 -347
  263. package/dist/chunk-IZJMVV7O.js.map +0 -1
  264. package/dist/chunk-O7IH7JTI.js +0 -1898
  265. package/dist/chunk-O7IH7JTI.js.map +0 -1
  266. package/dist/chunk-OCVQGBJK.js.map +0 -1
  267. package/dist/chunk-RZ4YESBG.js.map +0 -1
  268. package/dist/chunk-SPPMCAKG.js.map +0 -1
  269. package/dist/chunk-VRD5CYRL.js +0 -1568
  270. package/dist/chunk-VRD5CYRL.js.map +0 -1
  271. package/dist/chunk-WRAKK6K6.js.map +0 -1
  272. package/dist/chunk-XKYRH4FM.js.map +0 -1
  273. package/dist/chunk-XMCVRVTF.js.map +0 -1
  274. package/dist/chunk-ZLZKF2PM.js.map +0 -1
  275. package/dist/discord-B3HUPGQ6.js +0 -70
  276. package/dist/dist-UISMLMFN.js +0 -21847
  277. package/dist/dist-UISMLMFN.js.map +0 -1
  278. package/dist/email-K7LO2IPB.js.map +0 -1
  279. package/dist/enrichment-pipeline-MNHNW65K.js +0 -13
  280. package/dist/env-IWXUVTCB.js +0 -12
  281. package/dist/imessage-NGA2XF2V.js +0 -35
  282. package/dist/inbox-summarizer-NRI4S7IF.js +0 -47
  283. package/dist/incident-response-C5J7Q6DT.js.map +0 -1
  284. package/dist/presentations-DSV5IHG5.js.map +0 -1
  285. package/dist/scheduler-VK4WFERV.js +0 -63
  286. package/dist/signal-6CGDFYL2.js +0 -35
  287. package/dist/slack-IZQWIKOH.js +0 -75
  288. package/dist/src-VYUE6LRA.js.map +0 -1
  289. package/dist/tools-2RLEI2N6.js +0 -38
  290. package/dist/tunnel-IWMXUML4.js.map +0 -1
  291. package/dist/whatsapp-LFX6YKCM.js +0 -35
  292. package/dist/word-document-7B6SJMAY.js.map +0 -1
  293. /package/dist/{audit-logger-OBPR7CRO.js.map → agent-manager-JZ4IM7XI.js.map} +0 -0
  294. /package/dist/{auth-UOX5K2BE.js.map → agent-types-2T4PXLFQ.js.map} +0 -0
  295. /package/dist/{backup-restore-PZ7CYYB7.js.map → analyzer-OTWE3ARE.js.map} +0 -0
  296. /package/dist/{archiver-AVNBYCKQ.js.map → archiver-FPGKRP6P.js.map} +0 -0
  297. /package/dist/{blocks-R3PODY47.js.map → audit-logger-CI4WZQPD.js.map} +0 -0
  298. /package/dist/{bot-QRARP4UN.js.map → auth-PH5IHISW.js.map} +0 -0
  299. /package/dist/{aws-s3-Q4LLZZPD.js.map → aws-s3-QZMURYXB.js.map} +0 -0
  300. /package/dist/{brain-7XLLM3KC.js.map → backup-restore-72OQTZO3.js.map} +0 -0
  301. /package/dist/{chunk-PLDDJCW6.js.map → blocks-YOWOESDD.js.map} +0 -0
  302. /package/dist/{client-ZQSFPMOB.js.map → bot-VDHBGUVI.js.map} +0 -0
  303. /package/dist/{clipboard-manager-TEO2GEDN.js.map → brain-6QTXN4QP.js.map} +0 -0
  304. /package/dist/{camera-monitor-M5CYKUU4.js.map → camera-monitor-LHTUWHEL.js.map} +0 -0
  305. /package/dist/{charts-V7ARZNKF.js.map → charts-FJ32GQK7.js.map} +0 -0
  306. /package/dist/{chunk-TVEWKIK3.js.map → chunk-2WTKTG2C.js.map} +0 -0
  307. /package/dist/{chunk-SJSUSJ47.js.map → chunk-BNZHWAZC.js.map} +0 -0
  308. /package/dist/{chunk-MQJ2ECQT.js.map → chunk-CUPEENUY.js.map} +0 -0
  309. /package/dist/{chunk-NHMBTUMW.js.map → chunk-CWT6CAE5.js.map} +0 -0
  310. /package/dist/{chunk-6PMVAAA7.js.map → chunk-HJSEEFO3.js.map} +0 -0
  311. /package/dist/{chunk-TYAGMJNV.js.map → chunk-HQZQFEAX.js.map} +0 -0
  312. /package/dist/{chunk-MXAPLSJ5.js.map → chunk-J4JW73TT.js.map} +0 -0
  313. /package/dist/{chunk-VEHFVBLI.js.map → chunk-JHYYFPKX.js.map} +0 -0
  314. /package/dist/{chunk-66OJ3WB4.js.map → chunk-PD3CTDO6.js.map} +0 -0
  315. /package/dist/{cron-explain-HHQKPD3M.js.map → chunk-UP2VWCW5.js.map} +0 -0
  316. /package/dist/{chunk-4UOE5TUZ.js.map → chunk-WMDVOWN6.js.map} +0 -0
  317. /package/dist/{crypto-4AP47IKC.js.map → chunker-K6WTR62A.js.map} +0 -0
  318. /package/dist/{databases-37X4CI2Y.js.map → client-FOIYPOZQ.js.map} +0 -0
  319. /package/dist/{discord-B3HUPGQ6.js.map → clipboard-manager-4SBNESGZ.js.map} +0 -0
  320. /package/dist/{enrichment-pipeline-MNHNW65K.js.map → cost-tracker-KZQSTSE2.js.map} +0 -0
  321. /package/dist/{entity-resolution-Y3IUWEAT.js.map → cron-explain-UOOOYWZZ.js.map} +0 -0
  322. /package/dist/{env-IWXUVTCB.js.map → crypto-2VG3RJR2.js.map} +0 -0
  323. /package/dist/{hash-tool-ULQYD7B5.js.map → databases-XDPMG5AV.js.map} +0 -0
  324. /package/dist/{heartbeat-monitor-GCISLXI3.js.map → db-I7MNG6CL.js.map} +0 -0
  325. /package/dist/{imessage-NGA2XF2V.js.map → discord-6UQHCN27.js.map} +0 -0
  326. /package/dist/{inbox-summarizer-NRI4S7IF.js.map → docx-parser-EXL4TN5E.js.map} +0 -0
  327. /package/dist/{inventory-manager-352OHXWD.js.map → enrichment-pipeline-7FE5R5ZI.js.map} +0 -0
  328. /package/dist/{json-tool-QE2SYHEG.js.map → entity-resolution-7Z6STVXX.js.map} +0 -0
  329. /package/dist/{key-rotation-DPHU4ZTB.js.map → env-GN5VHI43.js.map} +0 -0
  330. /package/dist/{mcp-3JI6W7ZE.js.map → error-tracker-64DEH3D7.js.map} +0 -0
  331. /package/dist/{google-workspace-DKWUVNGC.js.map → google-workspace-TSZPZK5G.js.map} +0 -0
  332. /package/dist/{ocr-AC7NPX33.js.map → graph-client-NB475AK5.js.map} +0 -0
  333. /package/dist/{ollama-BOAMSPLJ.js.map → hash-tool-ENAB5LWH.js.map} +0 -0
  334. /package/dist/{pages-MI523RB7.js.map → heartbeat-monitor-KRDYTDBF.js.map} +0 -0
  335. /package/dist/{pairing-IFQYCPNS.js.map → hooks-N4MIFBVM.js.map} +0 -0
  336. /package/dist/{image-generation-OSU7FP6F.js.map → image-generation-MDE6AVQO.js.map} +0 -0
  337. /package/dist/{pdf-ALQVOEJR.js.map → imessage-DSGSGUZS.js.map} +0 -0
  338. /package/dist/{prometheus-JNT2BD4L.js.map → inbox-summarizer-F2KAU72V.js.map} +0 -0
  339. /package/dist/{providers-J4LYPHDR.js.map → inventory-manager-C67BSZM6.js.map} +0 -0
  340. /package/dist/{jira-GSGDBMIG.js.map → jira-PAGZWUBJ.js.map} +0 -0
  341. /package/dist/{qr-code-WIX4PB4U.js.map → json-tool-4FK5RNER.js.map} +0 -0
  342. /package/dist/{regex-tool-W4ABRKGK.js.map → key-rotation-WCC5FOYS.js.map} +0 -0
  343. /package/dist/{scheduler-VK4WFERV.js.map → knowledge-base-5SMMOGQJ.js.map} +0 -0
  344. /package/dist/{mailchimp-KKNF6QJ7.js.map → mailchimp-ZFYDC44J.js.map} +0 -0
  345. /package/dist/{search-BCLBO5E3.js.map → mcp-DJ2QDA6A.js.map} +0 -0
  346. /package/dist/{signal-6CGDFYL2.js.map → metrics-BH3ZLGEV.js.map} +0 -0
  347. /package/dist/{microsoft365-UCBKJHNX.js.map → microsoft365-6G2IJMWC.js.map} +0 -0
  348. /package/dist/{slack-IZQWIKOH.js.map → oauth-UPJYFOVU.js.map} +0 -0
  349. /package/dist/{sms-M3JIOTCW.js.map → ocr-UONKTQU7.js.map} +0 -0
  350. /package/dist/{stocks-XXWBPOCU.js.map → ollama-J7CU45WT.js.map} +0 -0
  351. /package/dist/{text-transform-6SGUA5Z4.js.map → pages-XDE7JRCA.js.map} +0 -0
  352. /package/dist/{pair-JDFTERIK.js.map → pair-YZJFQUU5.js.map} +0 -0
  353. /package/dist/{tools-2RLEI2N6.js.map → pairing-77N47RAT.js.map} +0 -0
  354. /package/dist/{unit-converter-ZYXMEZOE.js.map → pdf-67HGXCFJ.js.map} +0 -0
  355. /package/dist/{whatsapp-LFX6YKCM.js.map → pdf-parser-YLMTTYHL.js.map} +0 -0
  356. /package/dist/{quickbooks-XB4NII2S.js.map → quickbooks-N675W7IK.js.map} +0 -0
  357. /package/dist/{sendgrid-RNXCAFKM.js.map → sendgrid-QGJIVPWV.js.map} +0 -0
  358. /package/dist/{shopify-NCXYJB4R.js.map → shopify-ON2PAU27.js.map} +0 -0
  359. /package/dist/{twilio-53GEW5JT.js.map → twilio-3L7DUNYQ.js.map} +0 -0
  360. /package/dist/{xero-QYO66D45.js.map → xero-UHAHVYSD.js.map} +0 -0
  361. /package/dist/{zapier-webhook-TBZ5YF2A.js.map → zapier-webhook-NIELLTXR.js.map} +0 -0
@@ -0,0 +1,281 @@
1
+ import {
2
+ TOOLS,
3
+ executeTool
4
+ } from "./chunk-ZMML6T63.js";
5
+ import "./chunk-5JJTLWOR.js";
6
+ import "./chunk-QPY3WRVM.js";
7
+ import "./chunk-ADTDYJO7.js";
8
+ import {
9
+ AGENT_SYSTEM_PROMPTS,
10
+ AGENT_TOOL_PERMISSIONS
11
+ } from "./chunk-LFDXEYYB.js";
12
+ import "./chunk-DTISLIMB.js";
13
+ import "./chunk-CUPEENUY.js";
14
+ import "./chunk-2WTKTG2C.js";
15
+ import "./chunk-U2X2J3FI.js";
16
+ import "./chunk-X6Q3K3L2.js";
17
+ import "./chunk-ODCFS5WD.js";
18
+ import "./chunk-KM22GV7G.js";
19
+ import "./chunk-P6QINGFL.js";
20
+ import "./chunk-HJSEEFO3.js";
21
+ import "./chunk-C6PELIHS.js";
22
+ import "./chunk-7WQO5J2M.js";
23
+ import {
24
+ addAgentMessage,
25
+ addAgentProgress,
26
+ shouldAgentStop,
27
+ updateAgentStatus,
28
+ updateAgentTokens
29
+ } from "./chunk-WMFYI7XC.js";
30
+ import {
31
+ metric
32
+ } from "./chunk-YEDEAX6Y.js";
33
+ import {
34
+ MODEL_TIERS
35
+ } from "./chunk-6ZNCY2GI.js";
36
+ import "./chunk-WZAH34TG.js";
37
+ import "./chunk-6KONMXQ6.js";
38
+ import "./chunk-22VGGA7S.js";
39
+ import "./chunk-HN3F4WSW.js";
40
+ import "./chunk-V3OKHQUX.js";
41
+ import "./chunk-2I5QHYG6.js";
42
+ import "./chunk-CZTMGHUC.js";
43
+ import "./chunk-4WH6MFEW.js";
44
+ import {
45
+ providerRegistry
46
+ } from "./chunk-GW6V4D43.js";
47
+ import "./chunk-DOYGMNMK.js";
48
+ import "./chunk-CQ4JURG7.js";
49
+ import "./chunk-BBN4VCNK.js";
50
+ import "./chunk-5BTVJR7R.js";
51
+ import {
52
+ env
53
+ } from "./chunk-4KIHDIXZ.js";
54
+ import "./chunk-ZIBRVA3Y.js";
55
+ import "./chunk-35WYTA3C.js";
56
+ import "./chunk-UP2VWCW5.js";
57
+
58
+ // src/core/agents/agent-processor.ts
59
+ import { Worker } from "bullmq";
60
+ import Redis from "ioredis";
61
+ var worker = null;
62
+ function getAgentTools(agentType, allTools = TOOLS) {
63
+ const allowedNames = new Set(AGENT_TOOL_PERMISSIONS[agentType] || []);
64
+ return allTools.filter((tool) => allowedNames.has(tool.name));
65
+ }
66
+ async function processAgentJob(job) {
67
+ const { agentId, userId, type, objective, context, tokenBudget, timeBudgetMs } = job.data;
68
+ console.log(`[AgentProcessor] Starting agent ${agentId} (type: ${type})`);
69
+ await updateAgentStatus(agentId, "running");
70
+ const startTime = Date.now();
71
+ const systemPrompt = AGENT_SYSTEM_PROMPTS[type] || AGENT_SYSTEM_PROMPTS.research;
72
+ const tools = getAgentTools(type);
73
+ let contextStr = "";
74
+ if (context && Object.keys(context).length > 0) {
75
+ contextStr = `
76
+
77
+ Context provided:
78
+ ${JSON.stringify(context, null, 2)}`;
79
+ }
80
+ const state = {
81
+ agentId,
82
+ step: 0,
83
+ totalInputTokens: 0,
84
+ totalOutputTokens: 0,
85
+ startTime,
86
+ messages: [
87
+ {
88
+ role: "user",
89
+ content: `Objective: ${objective}${contextStr}
90
+
91
+ Please begin working on this objective. Report your progress at each step.`
92
+ }
93
+ ]
94
+ };
95
+ await addAgentMessage(agentId, {
96
+ role: "user",
97
+ content: state.messages[0].content
98
+ });
99
+ const maxTurns = env.AGENT_MAX_TURNS ?? 20;
100
+ const model = MODEL_TIERS.balanced.model;
101
+ try {
102
+ for (let turn = 0; turn < maxTurns; turn++) {
103
+ const stopCheck = await shouldAgentStop(agentId);
104
+ if (stopCheck.stop) {
105
+ console.log(`[AgentProcessor] Agent ${agentId} stopped: ${stopCheck.reason}`);
106
+ const result2 = {
107
+ success: false,
108
+ error: stopCheck.reason,
109
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
110
+ durationMs: Date.now() - startTime
111
+ };
112
+ await updateAgentStatus(agentId, stopCheck.reason?.includes("cancel") ? "cancelled" : "failed", result2);
113
+ return;
114
+ }
115
+ if (Date.now() - startTime >= timeBudgetMs) {
116
+ const result2 = {
117
+ success: false,
118
+ error: "Time budget exceeded",
119
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
120
+ durationMs: Date.now() - startTime
121
+ };
122
+ await updateAgentStatus(agentId, "failed", result2);
123
+ return;
124
+ }
125
+ const provider = providerRegistry.getDefault();
126
+ const response = await provider.createMessage({
127
+ model,
128
+ max_tokens: 4096,
129
+ system: systemPrompt,
130
+ tools: tools.length > 0 ? tools : void 0,
131
+ messages: state.messages
132
+ });
133
+ state.totalInputTokens += response.usage.input_tokens;
134
+ state.totalOutputTokens += response.usage.output_tokens;
135
+ await updateAgentTokens(agentId, state.totalInputTokens + state.totalOutputTokens);
136
+ if (state.totalInputTokens + state.totalOutputTokens >= tokenBudget) {
137
+ const textContent = response.content.find((c) => c.type === "text");
138
+ const result2 = {
139
+ success: true,
140
+ summary: textContent?.text || "Token budget reached",
141
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
142
+ durationMs: Date.now() - startTime
143
+ };
144
+ await updateAgentStatus(agentId, "completed", result2);
145
+ return;
146
+ }
147
+ if (response.stop_reason === "end_turn" || response.stop_reason === "stop") {
148
+ const textContent = response.content.find((c) => c.type === "text");
149
+ const finalText = textContent?.text || "";
150
+ await addAgentMessage(agentId, {
151
+ role: "assistant",
152
+ content: finalText
153
+ });
154
+ state.step++;
155
+ await addAgentProgress(agentId, state.step, "Completed objective", "completed", {
156
+ summary: finalText.slice(0, 500)
157
+ });
158
+ const result2 = {
159
+ success: true,
160
+ summary: finalText,
161
+ output: finalText,
162
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
163
+ durationMs: Date.now() - startTime
164
+ };
165
+ await updateAgentStatus(agentId, "completed", result2);
166
+ console.log(`[AgentProcessor] Agent ${agentId} completed in ${turn + 1} turns`);
167
+ return;
168
+ }
169
+ if (response.stop_reason === "tool_use") {
170
+ const toolUseBlocks = response.content.filter((block) => block.type === "tool_use");
171
+ const toolResults = [];
172
+ for (const toolUse of toolUseBlocks) {
173
+ if (toolUse.type === "tool_use") {
174
+ const toolInput = { ...toolUse.input };
175
+ delete toolInput._callerContext;
176
+ state.step++;
177
+ await addAgentProgress(agentId, state.step, `Executing tool: ${toolUse.name}`, "running");
178
+ console.log(`[AgentProcessor] Agent ${agentId} using tool: ${toolUse.name}`);
179
+ const toolStartTime = Date.now();
180
+ try {
181
+ const result2 = await executeTool(toolUse.name, toolInput);
182
+ const toolDuration = Date.now() - toolStartTime;
183
+ metric.toolDuration(toolUse.name, toolDuration, result2.success);
184
+ toolResults.push({
185
+ type: "tool_result",
186
+ tool_use_id: toolUse.id,
187
+ content: JSON.stringify(result2)
188
+ });
189
+ await addAgentProgress(agentId, state.step, `Tool ${toolUse.name}: ${result2.success ? "success" : "failed"}`, result2.success ? "completed" : "failed");
190
+ } catch (err) {
191
+ const toolDuration = Date.now() - toolStartTime;
192
+ metric.toolDuration(toolUse.name, toolDuration, false);
193
+ toolResults.push({
194
+ type: "tool_result",
195
+ tool_use_id: toolUse.id,
196
+ content: JSON.stringify({ success: false, error: String(err) })
197
+ });
198
+ await addAgentProgress(agentId, state.step, `Tool ${toolUse.name} error: ${err}`, "failed");
199
+ }
200
+ }
201
+ }
202
+ state.messages.push({
203
+ role: "assistant",
204
+ content: response.content
205
+ });
206
+ state.messages.push({
207
+ role: "user",
208
+ content: toolResults
209
+ });
210
+ const textContent = response.content.find((c) => c.type === "text");
211
+ if (textContent?.text) {
212
+ await addAgentMessage(agentId, {
213
+ role: "assistant",
214
+ content: textContent.text
215
+ });
216
+ }
217
+ }
218
+ }
219
+ const result = {
220
+ success: true,
221
+ summary: `Agent completed after reaching max turns (${maxTurns})`,
222
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
223
+ durationMs: Date.now() - startTime
224
+ };
225
+ await updateAgentStatus(agentId, "completed", result);
226
+ console.log(`[AgentProcessor] Agent ${agentId} reached max turns`);
227
+ } catch (error) {
228
+ console.error(`[AgentProcessor] Agent ${agentId} failed:`, error);
229
+ const result = {
230
+ success: false,
231
+ error: String(error),
232
+ tokensUsed: state.totalInputTokens + state.totalOutputTokens,
233
+ durationMs: Date.now() - startTime
234
+ };
235
+ await updateAgentStatus(agentId, "failed", result);
236
+ }
237
+ }
238
+ function startAgentProcessor() {
239
+ if (worker) {
240
+ console.log("[AgentProcessor] Worker already running");
241
+ return;
242
+ }
243
+ const concurrency = env.AGENT_PROCESSOR_CONCURRENCY ?? 1;
244
+ const connection = new Redis(env.REDIS_URL, {
245
+ maxRetriesPerRequest: null
246
+ });
247
+ worker = new Worker(
248
+ "sentinel-agents",
249
+ async (job) => {
250
+ await processAgentJob(job);
251
+ },
252
+ {
253
+ connection,
254
+ concurrency
255
+ }
256
+ );
257
+ worker.on("completed", (job) => {
258
+ console.log(`[AgentProcessor] Job ${job.id} completed for agent ${job.data.agentId}`);
259
+ metric.agentOperation("complete", job.data.type);
260
+ });
261
+ worker.on("failed", (job, err) => {
262
+ console.error(`[AgentProcessor] Job ${job?.id} failed:`, err.message);
263
+ if (job) {
264
+ metric.agentOperation("fail", job.data.type);
265
+ }
266
+ });
267
+ console.log(`[AgentProcessor] Worker started (concurrency: ${concurrency})`);
268
+ }
269
+ async function stopAgentProcessor() {
270
+ if (worker) {
271
+ await worker.close();
272
+ worker = null;
273
+ console.log("[AgentProcessor] Worker stopped");
274
+ }
275
+ }
276
+ export {
277
+ getAgentTools,
278
+ startAgentProcessor,
279
+ stopAgentProcessor
280
+ };
281
+ //# sourceMappingURL=agent-processor-DDDHC2SO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/agents/agent-processor.ts"],"sourcesContent":["// ============================================\r\n// Agent Processor — BullMQ Worker for Sub-Agent Execution\r\n// ============================================\r\n// Consumes jobs from the \"sentinel-agents\" queue and actually executes\r\n// sub-agent tasks. Each agent runs a focused LLM conversation loop\r\n// with an agent-type-specific system prompt and limited tool set.\r\n\r\nimport { Worker, Job } from \"bullmq\";\r\nimport Redis from \"ioredis\";\r\nimport { env } from \"../../config/env\";\r\nimport { providerRegistry } from \"../providers\";\r\nimport { MODEL_TIERS } from \"../brain/router\";\r\nimport { TOOLS, executeTool } from \"../../tools\";\r\nimport {\r\n AGENT_SYSTEM_PROMPTS,\r\n AGENT_TOOL_PERMISSIONS,\r\n type AgentType,\r\n type AgentResult,\r\n} from \"./agent-types\";\r\nimport {\r\n updateAgentStatus,\r\n addAgentMessage,\r\n addAgentProgress,\r\n updateAgentTokens,\r\n shouldAgentStop,\r\n} from \"./agent-manager\";\r\nimport { audit } from \"../security/audit-logger\";\r\nimport { metric } from \"../observability/metrics\";\r\nimport type { LLMTool, LLMMessage, LLMContentBlock } from \"../providers/types\";\r\n\r\n// ============================================\r\n// Types\r\n// ============================================\r\n\r\nexport interface AgentJobData {\r\n agentId: string;\r\n userId: string;\r\n type: AgentType;\r\n objective: string;\r\n context: Record<string, unknown> | undefined;\r\n tokenBudget: number;\r\n timeBudgetMs: number;\r\n}\r\n\r\ninterface AgentExecutionState {\r\n agentId: string;\r\n step: number;\r\n totalInputTokens: number;\r\n totalOutputTokens: number;\r\n startTime: number;\r\n messages: LLMMessage[];\r\n}\r\n\r\n// ============================================\r\n// Worker State\r\n// ============================================\r\n\r\nlet worker: Worker | null = null;\r\n\r\n// ============================================\r\n// Tool Filtering\r\n// ============================================\r\n\r\n/**\r\n * Filter the global tool list to only tools allowed for this agent type.\r\n */\r\nexport function getAgentTools(\r\n agentType: AgentType,\r\n allTools: LLMTool[] = TOOLS as LLMTool[]\r\n): LLMTool[] {\r\n const allowedNames = new Set(AGENT_TOOL_PERMISSIONS[agentType] || []);\r\n return allTools.filter((tool) => allowedNames.has(tool.name));\r\n}\r\n\r\n// ============================================\r\n// Agent Job Processor\r\n// ============================================\r\n\r\n/**\r\n * Process a single agent job.\r\n * Runs a focused LLM conversation loop with:\r\n * - Agent-type-specific system prompt\r\n * - Limited tool set (from AGENT_TOOL_PERMISSIONS)\r\n * - Budget enforcement (token + time)\r\n * - Progress tracking via agentProgress table\r\n */\r\nasync function processAgentJob(job: Job<AgentJobData>): Promise<void> {\r\n const { agentId, userId, type, objective, context, tokenBudget, timeBudgetMs } = job.data;\r\n\r\n console.log(`[AgentProcessor] Starting agent ${agentId} (type: ${type})`);\r\n\r\n // Mark as running\r\n await updateAgentStatus(agentId, \"running\");\r\n\r\n const startTime = Date.now();\r\n\r\n // Build system prompt\r\n const systemPrompt = AGENT_SYSTEM_PROMPTS[type] || AGENT_SYSTEM_PROMPTS.research;\r\n\r\n // Get filtered tools\r\n const tools = getAgentTools(type);\r\n\r\n // Initialize conversation with objective\r\n let contextStr = \"\";\r\n if (context && Object.keys(context).length > 0) {\r\n contextStr = `\\n\\nContext provided:\\n${JSON.stringify(context, null, 2)}`;\r\n }\r\n\r\n const state: AgentExecutionState = {\r\n agentId,\r\n step: 0,\r\n totalInputTokens: 0,\r\n totalOutputTokens: 0,\r\n startTime,\r\n messages: [\r\n {\r\n role: \"user\",\r\n content: `Objective: ${objective}${contextStr}\\n\\nPlease begin working on this objective. Report your progress at each step.`,\r\n },\r\n ],\r\n };\r\n\r\n // Store initial message\r\n await addAgentMessage(agentId, {\r\n role: \"user\",\r\n content: state.messages[0].content as string,\r\n });\r\n\r\n const maxTurns = env.AGENT_MAX_TURNS ?? 20;\r\n const model = MODEL_TIERS.balanced.model;\r\n\r\n try {\r\n for (let turn = 0; turn < maxTurns; turn++) {\r\n // Check if agent should stop (cancellation, budget exceeded)\r\n const stopCheck = await shouldAgentStop(agentId);\r\n if (stopCheck.stop) {\r\n console.log(`[AgentProcessor] Agent ${agentId} stopped: ${stopCheck.reason}`);\r\n\r\n const result: AgentResult = {\r\n success: false,\r\n error: stopCheck.reason,\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, stopCheck.reason?.includes(\"cancel\") ? \"cancelled\" : \"failed\", result);\r\n return;\r\n }\r\n\r\n // Check time budget\r\n if (Date.now() - startTime >= timeBudgetMs) {\r\n const result: AgentResult = {\r\n success: false,\r\n error: \"Time budget exceeded\",\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, \"failed\", result);\r\n return;\r\n }\r\n\r\n // Make LLM call\r\n const provider = providerRegistry.getDefault();\r\n const response = await provider.createMessage({\r\n model,\r\n max_tokens: 4096,\r\n system: systemPrompt,\r\n tools: tools.length > 0 ? tools : undefined,\r\n messages: state.messages,\r\n });\r\n\r\n state.totalInputTokens += response.usage.input_tokens;\r\n state.totalOutputTokens += response.usage.output_tokens;\r\n\r\n // Update token count in DB\r\n await updateAgentTokens(agentId, state.totalInputTokens + state.totalOutputTokens);\r\n\r\n // Check token budget\r\n if (state.totalInputTokens + state.totalOutputTokens >= tokenBudget) {\r\n const textContent = response.content.find((c) => c.type === \"text\");\r\n const result: AgentResult = {\r\n success: true,\r\n summary: textContent?.text || \"Token budget reached\",\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, \"completed\", result);\r\n return;\r\n }\r\n\r\n // If end_turn, agent is done\r\n if (response.stop_reason === \"end_turn\" || response.stop_reason === \"stop\") {\r\n const textContent = response.content.find((c) => c.type === \"text\");\r\n const finalText = textContent?.text || \"\";\r\n\r\n // Store assistant response\r\n await addAgentMessage(agentId, {\r\n role: \"assistant\",\r\n content: finalText,\r\n });\r\n\r\n // Log progress\r\n state.step++;\r\n await addAgentProgress(agentId, state.step, \"Completed objective\", \"completed\", {\r\n summary: finalText.slice(0, 500),\r\n });\r\n\r\n // Mark completed\r\n const result: AgentResult = {\r\n success: true,\r\n summary: finalText,\r\n output: finalText,\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, \"completed\", result);\r\n console.log(`[AgentProcessor] Agent ${agentId} completed in ${turn + 1} turns`);\r\n return;\r\n }\r\n\r\n // Handle tool use\r\n if (response.stop_reason === \"tool_use\") {\r\n const toolUseBlocks = response.content.filter((block) => block.type === \"tool_use\");\r\n const toolResults: LLMContentBlock[] = [];\r\n\r\n for (const toolUse of toolUseBlocks) {\r\n if (toolUse.type === \"tool_use\") {\r\n const toolInput = { ...(toolUse.input as Record<string, unknown>) };\r\n delete toolInput._callerContext;\r\n\r\n state.step++;\r\n await addAgentProgress(agentId, state.step, `Executing tool: ${toolUse.name}`, \"running\");\r\n\r\n console.log(`[AgentProcessor] Agent ${agentId} using tool: ${toolUse.name}`);\r\n const toolStartTime = Date.now();\r\n\r\n try {\r\n const result = await executeTool(toolUse.name!, toolInput);\r\n const toolDuration = Date.now() - toolStartTime;\r\n\r\n // Log tool usage\r\n metric.toolDuration(toolUse.name!, toolDuration, result.success);\r\n\r\n toolResults.push({\r\n type: \"tool_result\",\r\n tool_use_id: toolUse.id,\r\n content: JSON.stringify(result),\r\n });\r\n\r\n await addAgentProgress(agentId, state.step, `Tool ${toolUse.name}: ${result.success ? \"success\" : \"failed\"}`, result.success ? \"completed\" : \"failed\");\r\n } catch (err) {\r\n const toolDuration = Date.now() - toolStartTime;\r\n metric.toolDuration(toolUse.name!, toolDuration, false);\r\n\r\n toolResults.push({\r\n type: \"tool_result\",\r\n tool_use_id: toolUse.id,\r\n content: JSON.stringify({ success: false, error: String(err) }),\r\n });\r\n\r\n await addAgentProgress(agentId, state.step, `Tool ${toolUse.name} error: ${err}`, \"failed\");\r\n }\r\n }\r\n }\r\n\r\n // Add assistant response and tool results to conversation\r\n state.messages.push({\r\n role: \"assistant\",\r\n content: response.content,\r\n });\r\n\r\n state.messages.push({\r\n role: \"user\",\r\n content: toolResults,\r\n });\r\n\r\n // Store text portion of assistant message\r\n const textContent = response.content.find((c) => c.type === \"text\");\r\n if (textContent?.text) {\r\n await addAgentMessage(agentId, {\r\n role: \"assistant\",\r\n content: textContent.text,\r\n });\r\n }\r\n }\r\n }\r\n\r\n // Max turns reached\r\n const result: AgentResult = {\r\n success: true,\r\n summary: `Agent completed after reaching max turns (${maxTurns})`,\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, \"completed\", result);\r\n console.log(`[AgentProcessor] Agent ${agentId} reached max turns`);\r\n } catch (error) {\r\n console.error(`[AgentProcessor] Agent ${agentId} failed:`, error);\r\n\r\n const result: AgentResult = {\r\n success: false,\r\n error: String(error),\r\n tokensUsed: state.totalInputTokens + state.totalOutputTokens,\r\n durationMs: Date.now() - startTime,\r\n };\r\n\r\n await updateAgentStatus(agentId, \"failed\", result);\r\n }\r\n}\r\n\r\n// ============================================\r\n// Worker Lifecycle\r\n// ============================================\r\n\r\n/**\r\n * Initialize the BullMQ worker that processes agent jobs.\r\n * Should be called once at application startup.\r\n */\r\nexport function startAgentProcessor(): void {\r\n if (worker) {\r\n console.log(\"[AgentProcessor] Worker already running\");\r\n return;\r\n }\r\n\r\n const concurrency = env.AGENT_PROCESSOR_CONCURRENCY ?? 1;\r\n\r\n const connection = new Redis(env.REDIS_URL, {\r\n maxRetriesPerRequest: null,\r\n });\r\n\r\n worker = new Worker<AgentJobData>(\r\n \"sentinel-agents\",\r\n async (job) => {\r\n await processAgentJob(job);\r\n },\r\n {\r\n connection,\r\n concurrency,\r\n }\r\n );\r\n\r\n worker.on(\"completed\", (job) => {\r\n console.log(`[AgentProcessor] Job ${job.id} completed for agent ${job.data.agentId}`);\r\n metric.agentOperation(\"complete\", job.data.type);\r\n });\r\n\r\n worker.on(\"failed\", (job, err) => {\r\n console.error(`[AgentProcessor] Job ${job?.id} failed:`, err.message);\r\n if (job) {\r\n metric.agentOperation(\"fail\", job.data.type);\r\n }\r\n });\r\n\r\n console.log(`[AgentProcessor] Worker started (concurrency: ${concurrency})`);\r\n}\r\n\r\n/**\r\n * Stop the agent processor worker gracefully.\r\n */\r\nexport async function stopAgentProcessor(): Promise<void> {\r\n if (worker) {\r\n await worker.close();\r\n worker = null;\r\n console.log(\"[AgentProcessor] Worker stopped\");\r\n }\r\n}\r\n"],"mappings":"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","names":["result"]}
@@ -0,0 +1,12 @@
1
+ import {
2
+ AGENT_SYSTEM_PROMPTS,
3
+ AGENT_TOOL_PERMISSIONS,
4
+ agent_types_default
5
+ } from "./chunk-LFDXEYYB.js";
6
+ import "./chunk-UP2VWCW5.js";
7
+ export {
8
+ AGENT_SYSTEM_PROMPTS,
9
+ AGENT_TOOL_PERMISSIONS,
10
+ agent_types_default as default
11
+ };
12
+ //# sourceMappingURL=agent-types-2T4PXLFQ.js.map