opensentinel 3.6.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 +12 -0
- package/dist/{agent-manager-7N7REQZQ.js → agent-manager-JZ4IM7XI.js} +8 -8
- package/dist/{agent-processor-I23VWQY3.js → agent-processor-DDDHC2SO.js} +22 -21
- package/dist/{agent-processor-I23VWQY3.js.map → agent-processor-DDDHC2SO.js.map} +1 -1
- package/dist/{alerting-4I37GG4U.js → alerting-LK7VVYTX.js} +4 -4
- package/dist/alerting-LK7VVYTX.js.map +1 -0
- package/dist/analyzer-OTWE3ARE.js +22 -0
- package/dist/{archiver-XLRIIXPY.js → archiver-FPGKRP6P.js} +16 -85
- package/dist/archiver-FPGKRP6P.js.map +1 -0
- package/dist/{audit-logger-AU3TMWKI.js → audit-logger-CI4WZQPD.js} +5 -5
- package/dist/bot-VDHBGUVI.js +47 -0
- package/dist/{brain-SLA474EU.js → brain-6QTXN4QP.js} +18 -17
- package/dist/{chunk-AR34B6XR.js → chunk-2I5QHYG6.js} +3 -3
- package/dist/chunk-2I5QHYG6.js.map +1 -0
- package/dist/chunk-3AWAWRWB.js +143 -0
- package/dist/chunk-3AWAWRWB.js.map +1 -0
- package/dist/{chunk-PUNIMPMY.js → chunk-4KIHDIXZ.js} +13 -2
- package/dist/chunk-4KIHDIXZ.js.map +1 -0
- package/dist/{chunk-GUKKW7JI.js → chunk-4WH6MFEW.js} +2 -2
- package/dist/chunk-4WH6MFEW.js.map +1 -0
- package/dist/{chunk-M7YLQHFP.js → chunk-56UJS2LA.js} +6 -6
- package/dist/{chunk-S4NJJS5C.js → chunk-5BTVJR7R.js} +3 -3
- package/dist/{chunk-HKOPRRDJ.js → chunk-5JJTLWOR.js} +3 -3
- 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-BMOUYXLX.js → chunk-6ZNCY2GI.js} +5 -5
- package/dist/chunk-7BNFELEK.js +31 -0
- package/dist/chunk-7BNFELEK.js.map +1 -0
- package/dist/{chunk-KABG5PG3.js → chunk-BBN4VCNK.js} +4 -4
- package/dist/chunk-BBN4VCNK.js.map +1 -0
- package/dist/{chunk-4YJRBMMA.js → chunk-BNZHWAZC.js} +2 -2
- package/dist/{chunk-TAAZB5KN.js → chunk-CWT6CAE5.js} +2 -2
- package/dist/{chunk-UWUIJTT4.js → chunk-CZTMGHUC.js} +1 -1
- package/dist/chunk-CZTMGHUC.js.map +1 -0
- package/dist/chunk-DTISLIMB.js +89 -0
- package/dist/chunk-DTISLIMB.js.map +1 -0
- package/dist/{chunk-VKMFUIVA.js → chunk-GBVJTRXS.js} +2 -2
- package/dist/{chunk-MFK34XSY.js → chunk-GJETKBOY.js} +15 -15
- package/dist/chunk-GJETKBOY.js.map +1 -0
- package/dist/{chunk-HTF2GIQC.js → chunk-GW6V4D43.js} +2 -2
- package/dist/chunk-GW6V4D43.js.map +1 -0
- package/dist/{chunk-2RGPWU77.js → chunk-HJSEEFO3.js} +2 -2
- package/dist/{chunk-JOA5A3G3.js → chunk-HQZQFEAX.js} +5 -5
- package/dist/{chunk-45YXODSB.js → chunk-J4JW73TT.js} +2 -2
- package/dist/{chunk-KT7NLIXP.js → chunk-JHYYFPKX.js} +2 -2
- 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-H3BOLSTS.js → chunk-PD3CTDO6.js} +2 -2
- package/dist/{chunk-6UZPE35A.js → chunk-QPY3WRVM.js} +10 -87
- package/dist/chunk-QPY3WRVM.js.map +1 -0
- package/dist/{chunk-AD6YEH6U.js → chunk-S2EOIVF4.js} +590 -91
- 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-7MZN73J2.js → chunk-TKBVW7ZJ.js} +4 -4
- package/dist/{chunk-A24GPVLY.js → chunk-V3OKHQUX.js} +5 -5
- package/dist/{chunk-NMSHVO5O.js → chunk-WMDVOWN6.js} +4 -4
- package/dist/{chunk-643M3AP5.js → chunk-WMFYI7XC.js} +7 -7
- package/dist/{chunk-6LTLIYAQ.js → chunk-YEDEAX6Y.js} +3 -3
- package/dist/{chunk-NYVBXUGD.js → chunk-ZIBRVA3Y.js} +60 -1
- package/dist/chunk-ZIBRVA3Y.js.map +1 -0
- package/dist/{chunk-6JY4HNUH.js → chunk-ZMML6T63.js} +361 -24
- package/dist/chunk-ZMML6T63.js.map +1 -0
- package/dist/{chunk-FFV2SXFD.js → chunk-ZVHG4KF2.js} +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/commands/start.js +2 -2
- package/dist/commands/status.js +1 -1
- package/dist/commands/stop.js +1 -1
- package/dist/commands/utils.js +1 -1
- package/dist/{cost-tracker-EMOIOYH7.js → cost-tracker-KZQSTSE2.js} +2 -2
- package/dist/{db-LRIOKQBO.js → db-I7MNG6CL.js} +10 -4
- package/dist/{discord-NKR3X4AV.js → discord-6UQHCN27.js} +24 -23
- package/dist/{documents-EYIYLZK2.js → documents-PFHSK7SZ.js} +19 -19
- package/dist/{email-EAQNULVD.js → email-6OIN4SYL.js} +22 -21
- package/dist/email-6OIN4SYL.js.map +1 -0
- package/dist/{enhanced-retrieval-OGHT6TS5.js → enhanced-retrieval-JWX2HWU4.js} +7 -6
- package/dist/{enhanced-retrieval-OGHT6TS5.js.map → enhanced-retrieval-JWX2HWU4.js.map} +1 -1
- package/dist/enrichment-pipeline-7FE5R5ZI.js +14 -0
- package/dist/{entity-resolution-4X4JU43O.js → entity-resolution-7Z6STVXX.js} +5 -5
- package/dist/{env-CHOFICED.js → env-GN5VHI43.js} +2 -2
- package/dist/{error-tracker-SVQSDQDW.js → error-tracker-64DEH3D7.js} +6 -6
- package/dist/{github-KGNILDWJ.js → github-DUWSXCNP.js} +4 -4
- package/dist/graph-client-NB475AK5.js +17 -0
- package/dist/{imessage-V2XNDDHT.js → imessage-DSGSGUZS.js} +19 -18
- package/dist/{inbox-summarizer-DKKRYXDR.js → inbox-summarizer-F2KAU72V.js} +19 -18
- package/dist/{incident-response-ZTIKUWEO.js → incident-response-E3UGMX5G.js} +5 -5
- package/dist/incident-response-E3UGMX5G.js.map +1 -0
- package/dist/{knowledge-base-J7PJ7MZ3.js → knowledge-base-5SMMOGQJ.js} +5 -5
- package/dist/lib.d.ts +21 -0
- package/dist/lib.js +64 -57
- package/dist/lib.js.map +1 -1
- package/dist/{matrix-XHTR53VQ.js → matrix-WYGEOZL5.js} +18 -17
- package/dist/{matrix-XHTR53VQ.js.map → matrix-WYGEOZL5.js.map} +1 -1
- package/dist/{mcp-3C2TN67D.js → mcp-DJ2QDA6A.js} +2 -2
- package/dist/{metrics-VJDWQWU7.js → metrics-BH3ZLGEV.js} +5 -5
- package/dist/{multi-user-S56GUD6L.js → multi-user-XAEMB244.js} +4 -4
- package/dist/oauth-UPJYFOVU.js +34 -0
- package/dist/{ocr-LGUIPKVZ.js → ocr-UONKTQU7.js} +4 -4
- package/dist/{presentations-HXTAMGHT.js → presentations-UOET2FVZ.js} +2 -2
- package/dist/{providers-H6YIC3MG.js → providers-2YQ6E3IF.js} +3 -3
- package/dist/{scheduler-CA5UNHZV.js → scheduler-6PLLAQI7.js} +21 -20
- package/dist/{schema-ALJ67YVG.js → schema-ETY7L2VA.js} +8 -2
- package/dist/sharepoint-V5P4Q62L.js +30 -0
- package/dist/{signal-X7IQJGRQ.js → signal-7D5EPGVL.js} +19 -18
- package/dist/{slack-P2LFUJUQ.js → slack-KSS6YK5Z.js} +23 -22
- package/dist/slack-KSS6YK5Z.js.map +1 -0
- package/dist/{sms-4VME2HUL.js → sms-CSUCC7HL.js} +3 -3
- package/dist/sms-CSUCC7HL.js.map +1 -0
- package/dist/{src-S5KX4YEV.js → src-GO7GGW7O.js} +48 -41
- package/dist/{src-S5KX4YEV.js.map → src-GO7GGW7O.js.map} +1 -1
- package/dist/token-store-SEWRX6RE.js +20 -0
- package/dist/token-store-SEWRX6RE.js.map +1 -0
- package/dist/{tools-FGPN522P.js → tools-PJZ6RI4P.js} +18 -17
- package/dist/tools-PJZ6RI4P.js.map +1 -0
- package/dist/{whatsapp-KRPQ4YUX.js → whatsapp-DWXK25V2.js} +19 -18
- package/dist/whatsapp-DWXK25V2.js.map +1 -0
- package/dist/{word-document-D6N2C47N.js → word-document-AV3YB4L2.js} +2 -2
- package/dist/{workflow-store-ZYAYE5P6.js → workflow-store-5Y56GUP7.js} +4 -4
- 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 -110
- package/dist/alerting-4I37GG4U.js.map +0 -1
- package/dist/archiver-XLRIIXPY.js.map +0 -1
- package/dist/bot-MU2TJQ3Y.js +0 -46
- package/dist/chunk-6JY4HNUH.js.map +0 -1
- package/dist/chunk-6UZPE35A.js.map +0 -1
- package/dist/chunk-AD6YEH6U.js.map +0 -1
- package/dist/chunk-AR34B6XR.js.map +0 -1
- package/dist/chunk-GUKKW7JI.js.map +0 -1
- package/dist/chunk-HKOPRRDJ.js.map +0 -1
- package/dist/chunk-HTF2GIQC.js.map +0 -1
- package/dist/chunk-KABG5PG3.js.map +0 -1
- package/dist/chunk-MFK34XSY.js.map +0 -1
- package/dist/chunk-NYVBXUGD.js.map +0 -1
- package/dist/chunk-PUNIMPMY.js.map +0 -1
- package/dist/chunk-UWUIJTT4.js.map +0 -1
- package/dist/chunk-XMCVRVTF.js.map +0 -1
- package/dist/email-EAQNULVD.js.map +0 -1
- package/dist/enrichment-pipeline-CMUVBDC7.js +0 -14
- package/dist/incident-response-ZTIKUWEO.js.map +0 -1
- /package/dist/{agent-manager-7N7REQZQ.js.map → agent-manager-JZ4IM7XI.js.map} +0 -0
- /package/dist/{audit-logger-AU3TMWKI.js.map → analyzer-OTWE3ARE.js.map} +0 -0
- /package/dist/{bot-MU2TJQ3Y.js.map → audit-logger-CI4WZQPD.js.map} +0 -0
- /package/dist/{brain-SLA474EU.js.map → bot-VDHBGUVI.js.map} +0 -0
- /package/dist/{cost-tracker-EMOIOYH7.js.map → brain-6QTXN4QP.js.map} +0 -0
- /package/dist/{chunk-M7YLQHFP.js.map → chunk-56UJS2LA.js.map} +0 -0
- /package/dist/{chunk-S4NJJS5C.js.map → chunk-5BTVJR7R.js.map} +0 -0
- /package/dist/{chunk-BMOUYXLX.js.map → chunk-6ZNCY2GI.js.map} +0 -0
- /package/dist/{chunk-4YJRBMMA.js.map → chunk-BNZHWAZC.js.map} +0 -0
- /package/dist/{chunk-TAAZB5KN.js.map → chunk-CWT6CAE5.js.map} +0 -0
- /package/dist/{chunk-VKMFUIVA.js.map → chunk-GBVJTRXS.js.map} +0 -0
- /package/dist/{chunk-2RGPWU77.js.map → chunk-HJSEEFO3.js.map} +0 -0
- /package/dist/{chunk-JOA5A3G3.js.map → chunk-HQZQFEAX.js.map} +0 -0
- /package/dist/{chunk-45YXODSB.js.map → chunk-J4JW73TT.js.map} +0 -0
- /package/dist/{chunk-KT7NLIXP.js.map → chunk-JHYYFPKX.js.map} +0 -0
- /package/dist/{chunk-H3BOLSTS.js.map → chunk-PD3CTDO6.js.map} +0 -0
- /package/dist/{chunk-7MZN73J2.js.map → chunk-TKBVW7ZJ.js.map} +0 -0
- /package/dist/{chunk-A24GPVLY.js.map → chunk-V3OKHQUX.js.map} +0 -0
- /package/dist/{chunk-NMSHVO5O.js.map → chunk-WMDVOWN6.js.map} +0 -0
- /package/dist/{chunk-643M3AP5.js.map → chunk-WMFYI7XC.js.map} +0 -0
- /package/dist/{chunk-6LTLIYAQ.js.map → chunk-YEDEAX6Y.js.map} +0 -0
- /package/dist/{chunk-FFV2SXFD.js.map → chunk-ZVHG4KF2.js.map} +0 -0
- /package/dist/{db-LRIOKQBO.js.map → cost-tracker-KZQSTSE2.js.map} +0 -0
- /package/dist/{discord-NKR3X4AV.js.map → db-I7MNG6CL.js.map} +0 -0
- /package/dist/{enrichment-pipeline-CMUVBDC7.js.map → discord-6UQHCN27.js.map} +0 -0
- /package/dist/{documents-EYIYLZK2.js.map → documents-PFHSK7SZ.js.map} +0 -0
- /package/dist/{entity-resolution-4X4JU43O.js.map → enrichment-pipeline-7FE5R5ZI.js.map} +0 -0
- /package/dist/{env-CHOFICED.js.map → entity-resolution-7Z6STVXX.js.map} +0 -0
- /package/dist/{error-tracker-SVQSDQDW.js.map → env-GN5VHI43.js.map} +0 -0
- /package/dist/{imessage-V2XNDDHT.js.map → error-tracker-64DEH3D7.js.map} +0 -0
- /package/dist/{github-KGNILDWJ.js.map → github-DUWSXCNP.js.map} +0 -0
- /package/dist/{inbox-summarizer-DKKRYXDR.js.map → graph-client-NB475AK5.js.map} +0 -0
- /package/dist/{knowledge-base-J7PJ7MZ3.js.map → imessage-DSGSGUZS.js.map} +0 -0
- /package/dist/{mcp-3C2TN67D.js.map → inbox-summarizer-F2KAU72V.js.map} +0 -0
- /package/dist/{metrics-VJDWQWU7.js.map → knowledge-base-5SMMOGQJ.js.map} +0 -0
- /package/dist/{ocr-LGUIPKVZ.js.map → mcp-DJ2QDA6A.js.map} +0 -0
- /package/dist/{providers-H6YIC3MG.js.map → metrics-BH3ZLGEV.js.map} +0 -0
- /package/dist/{multi-user-S56GUD6L.js.map → multi-user-XAEMB244.js.map} +0 -0
- /package/dist/{scheduler-CA5UNHZV.js.map → oauth-UPJYFOVU.js.map} +0 -0
- /package/dist/{schema-ALJ67YVG.js.map → ocr-UONKTQU7.js.map} +0 -0
- /package/dist/{presentations-HXTAMGHT.js.map → presentations-UOET2FVZ.js.map} +0 -0
- /package/dist/{signal-X7IQJGRQ.js.map → providers-2YQ6E3IF.js.map} +0 -0
- /package/dist/{slack-P2LFUJUQ.js.map → scheduler-6PLLAQI7.js.map} +0 -0
- /package/dist/{sms-4VME2HUL.js.map → schema-ETY7L2VA.js.map} +0 -0
- /package/dist/{tools-FGPN522P.js.map → sharepoint-V5P4Q62L.js.map} +0 -0
- /package/dist/{whatsapp-KRPQ4YUX.js.map → signal-7D5EPGVL.js.map} +0 -0
- /package/dist/{word-document-D6N2C47N.js.map → word-document-AV3YB4L2.js.map} +0 -0
- /package/dist/{workflow-store-ZYAYE5P6.js.map → workflow-store-5Y56GUP7.js.map} +0 -0
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
reviewPullRequest,
|
|
3
3
|
securityScan,
|
|
4
4
|
summarizeChanges
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-5JJTLWOR.js";
|
|
6
6
|
import {
|
|
7
7
|
TFIDFProvider,
|
|
8
8
|
buildMemoryContext,
|
|
9
9
|
searchMemories,
|
|
10
10
|
storeMemory
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-QPY3WRVM.js";
|
|
12
12
|
import {
|
|
13
13
|
hookManager,
|
|
14
14
|
soulHookManager
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
sendMMS,
|
|
47
47
|
sendSMS,
|
|
48
48
|
validateTwilioSignature
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-HJSEEFO3.js";
|
|
50
50
|
import {
|
|
51
51
|
client_exports,
|
|
52
52
|
init_client,
|
|
@@ -60,15 +60,15 @@ import {
|
|
|
60
60
|
cancelAgent,
|
|
61
61
|
getAgent,
|
|
62
62
|
spawnAgent
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-WMFYI7XC.js";
|
|
64
64
|
import {
|
|
65
65
|
metric
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-YEDEAX6Y.js";
|
|
67
67
|
import {
|
|
68
68
|
MODEL_TIERS,
|
|
69
69
|
costTracker,
|
|
70
70
|
modelRouter
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-6ZNCY2GI.js";
|
|
72
72
|
import {
|
|
73
73
|
CryptoClient
|
|
74
74
|
} from "./chunk-6KONMXQ6.js";
|
|
@@ -92,26 +92,26 @@ import {
|
|
|
92
92
|
getCommunities,
|
|
93
93
|
getNeighbors,
|
|
94
94
|
runCustomCypher
|
|
95
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-V3OKHQUX.js";
|
|
96
96
|
import {
|
|
97
97
|
findDuplicates,
|
|
98
98
|
mergeEntities,
|
|
99
99
|
resolveEntity
|
|
100
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-2I5QHYG6.js";
|
|
101
101
|
import {
|
|
102
102
|
executeMCPTool,
|
|
103
103
|
isMCPTool,
|
|
104
104
|
mcpToolsToAnthropicTools
|
|
105
|
-
} from "./chunk-
|
|
105
|
+
} from "./chunk-CZTMGHUC.js";
|
|
106
106
|
import {
|
|
107
107
|
analyzeImage,
|
|
108
108
|
analyzeImageBuffer,
|
|
109
109
|
extractStructuredData,
|
|
110
110
|
performOCR
|
|
111
|
-
} from "./chunk-
|
|
111
|
+
} from "./chunk-4WH6MFEW.js";
|
|
112
112
|
import {
|
|
113
113
|
providerRegistry
|
|
114
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-GW6V4D43.js";
|
|
115
115
|
import {
|
|
116
116
|
generatePDF
|
|
117
117
|
} from "./chunk-DOYGMNMK.js";
|
|
@@ -124,13 +124,13 @@ import {
|
|
|
124
124
|
} from "./chunk-CQ4JURG7.js";
|
|
125
125
|
import {
|
|
126
126
|
audit
|
|
127
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-BBN4VCNK.js";
|
|
128
128
|
import {
|
|
129
129
|
db
|
|
130
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-5BTVJR7R.js";
|
|
131
131
|
import {
|
|
132
132
|
env
|
|
133
|
-
} from "./chunk-
|
|
133
|
+
} from "./chunk-4KIHDIXZ.js";
|
|
134
134
|
import {
|
|
135
135
|
achievements,
|
|
136
136
|
conversations,
|
|
@@ -143,7 +143,7 @@ import {
|
|
|
143
143
|
toolLogs,
|
|
144
144
|
usagePatterns,
|
|
145
145
|
userAchievements
|
|
146
|
-
} from "./chunk-
|
|
146
|
+
} from "./chunk-ZIBRVA3Y.js";
|
|
147
147
|
import {
|
|
148
148
|
__esm,
|
|
149
149
|
__export,
|
|
@@ -26572,7 +26572,7 @@ var TOOLS = [
|
|
|
26572
26572
|
},
|
|
26573
26573
|
{
|
|
26574
26574
|
name: "generate_spreadsheet",
|
|
26575
|
-
description: "
|
|
26575
|
+
description: "Create a local Excel (.xlsx) or CSV spreadsheet from structured data (2D array or array of objects). Returns a file path the user can download. Use for queries like 'create an Excel with Q2 sales data', 'make a CSV of my contacts', 'build a spreadsheet with these columns'.",
|
|
26576
26576
|
input_schema: {
|
|
26577
26577
|
type: "object",
|
|
26578
26578
|
properties: {
|
|
@@ -28777,7 +28777,7 @@ var TOOLS = [
|
|
|
28777
28777
|
},
|
|
28778
28778
|
{
|
|
28779
28779
|
name: "generate_word_document",
|
|
28780
|
-
description: "
|
|
28780
|
+
description: "Create a local Word (.docx) document with formatted content including headings, paragraphs, lists, tables, and images. Content is passed as markdown and converted. Use for queries like 'create a Word doc about X', 'draft a letter in Word', 'write a memo'.",
|
|
28781
28781
|
input_schema: {
|
|
28782
28782
|
type: "object",
|
|
28783
28783
|
properties: {
|
|
@@ -28818,7 +28818,7 @@ var TOOLS = [
|
|
|
28818
28818
|
},
|
|
28819
28819
|
{
|
|
28820
28820
|
name: "parse_document",
|
|
28821
|
-
description: "
|
|
28821
|
+
description: "Read a local document file and extract its text (for summarising, analysing, question-answering). Supports PDF, DOCX (Word), TXT, MD, HTML, CSV, JSON, XML, YAML. For Excel/XLSX files use analyze_spreadsheet instead. Use this for queries like 'analyze my document', 'summarize this PDF', 'what does this Word doc say'.",
|
|
28822
28822
|
input_schema: {
|
|
28823
28823
|
type: "object",
|
|
28824
28824
|
properties: {
|
|
@@ -28828,6 +28828,18 @@ var TOOLS = [
|
|
|
28828
28828
|
required: ["file_path"]
|
|
28829
28829
|
}
|
|
28830
28830
|
},
|
|
28831
|
+
{
|
|
28832
|
+
name: "analyze_spreadsheet",
|
|
28833
|
+
description: "Read a local Excel (.xlsx) or CSV spreadsheet and return its contents as structured text (sheet names, headers, rows). Claude can then summarise, spot anomalies, flag PII, answer questions about the data, etc. Use for queries like 'analyze my spreadsheet', 'summarize this xlsx', 'find anomalies in this Excel', 'pull PII from this CSV'.",
|
|
28834
|
+
input_schema: {
|
|
28835
|
+
type: "object",
|
|
28836
|
+
properties: {
|
|
28837
|
+
file_path: { type: "string", description: "Path to the .xlsx or .csv file" },
|
|
28838
|
+
max_rows_per_sheet: { type: "number", description: "Cap rows returned per sheet (default 500)" }
|
|
28839
|
+
},
|
|
28840
|
+
required: ["file_path"]
|
|
28841
|
+
}
|
|
28842
|
+
},
|
|
28831
28843
|
{
|
|
28832
28844
|
name: "key_rotation",
|
|
28833
28845
|
description: "Rotate encryption keys and security credentials. Generate new keys, check rotation status, and re-encrypt stored data.",
|
|
@@ -28987,6 +28999,71 @@ var TOOLS = [
|
|
|
28987
28999
|
},
|
|
28988
29000
|
required: ["action"]
|
|
28989
29001
|
}
|
|
29002
|
+
},
|
|
29003
|
+
// ---------------------------------------------------------------------
|
|
29004
|
+
// Microsoft 365 / Graph — chat-callable
|
|
29005
|
+
// Requires the user to have connected M365 first via the dashboard.
|
|
29006
|
+
// ---------------------------------------------------------------------
|
|
29007
|
+
{
|
|
29008
|
+
name: "m365_list_inbox",
|
|
29009
|
+
description: "List the latest emails from the user's Outlook inbox via Microsoft Graph. Requires Microsoft 365 to be connected via the dashboard. Use this when the user asks something like 'list my emails' or 'show my inbox' or 'any new Microsoft mail'.",
|
|
29010
|
+
input_schema: {
|
|
29011
|
+
type: "object",
|
|
29012
|
+
properties: {
|
|
29013
|
+
top: { type: "number", description: "Number of messages to return (default 10, max 50)" },
|
|
29014
|
+
unreadOnly: { type: "boolean", description: "Only return unread messages" },
|
|
29015
|
+
search: { type: "string", description: "Free-text search term (sender, subject, body)" }
|
|
29016
|
+
}
|
|
29017
|
+
}
|
|
29018
|
+
},
|
|
29019
|
+
{
|
|
29020
|
+
name: "m365_analyze_email",
|
|
29021
|
+
description: "Analyze a specific email for phishing, business-email-compromise, and credential-harvest risk. Uses Claude with a security analyst prompt. Returns risk score 0-100, category (Safe/Suspicious/Phishing), signals detected, and recommended actions. Pass either a graphMessageId (preferred \u2014 full message is fetched via Graph) OR raw subject+sender+body.",
|
|
29022
|
+
input_schema: {
|
|
29023
|
+
type: "object",
|
|
29024
|
+
properties: {
|
|
29025
|
+
graphMessageId: { type: "string", description: "Microsoft Graph message id \u2014 fetched and analyzed" },
|
|
29026
|
+
subject: { type: "string", description: "Email subject (if not using graphMessageId)" },
|
|
29027
|
+
sender: { type: "string", description: "Sender email or display (if not using graphMessageId)" },
|
|
29028
|
+
body: { type: "string", description: "Email body text (if not using graphMessageId)" }
|
|
29029
|
+
}
|
|
29030
|
+
}
|
|
29031
|
+
},
|
|
29032
|
+
{
|
|
29033
|
+
name: "m365_list_sharepoint_sites",
|
|
29034
|
+
description: "List SharePoint sites the user has access to via Microsoft Graph. Returns site id, name, description, and webUrl. Requires Microsoft 365 connected. Use for queries like 'what SharePoint sites do I have', 'find the Finance SharePoint site', etc.",
|
|
29035
|
+
input_schema: {
|
|
29036
|
+
type: "object",
|
|
29037
|
+
properties: {
|
|
29038
|
+
search: { type: "string", description: "Optional search term to filter sites by name" },
|
|
29039
|
+
top: { type: "number", description: "Max sites to return (default 25)" }
|
|
29040
|
+
}
|
|
29041
|
+
}
|
|
29042
|
+
},
|
|
29043
|
+
{
|
|
29044
|
+
name: "m365_list_sharepoint_files",
|
|
29045
|
+
description: "List files in a SharePoint site's default document library (Shared Documents). Returns file id, name, size, mimeType, and webUrl. Pass siteId from m365_list_sharepoint_sites.",
|
|
29046
|
+
input_schema: {
|
|
29047
|
+
type: "object",
|
|
29048
|
+
properties: {
|
|
29049
|
+
siteId: { type: "string", description: "SharePoint site id (from m365_list_sharepoint_sites)" },
|
|
29050
|
+
search: { type: "string", description: "Optional search term to filter files" },
|
|
29051
|
+
top: { type: "number", description: "Max items to return (default 25)" }
|
|
29052
|
+
},
|
|
29053
|
+
required: ["siteId"]
|
|
29054
|
+
}
|
|
29055
|
+
},
|
|
29056
|
+
{
|
|
29057
|
+
name: "m365_analyze_sharepoint_file",
|
|
29058
|
+
description: "Analyze a SharePoint/OneDrive file for risk (PII, phishing payload, credential-harvest content, policy violations). Extracts text from .docx/.xlsx/.pdf/.txt/.csv/.html and sends to Claude. Pass driveId + itemId \u2014 both come from m365_list_sharepoint_files response (item.parentReference.driveId + item.id).",
|
|
29059
|
+
input_schema: {
|
|
29060
|
+
type: "object",
|
|
29061
|
+
properties: {
|
|
29062
|
+
driveId: { type: "string", description: "Microsoft Graph drive id" },
|
|
29063
|
+
itemId: { type: "string", description: "Microsoft Graph drive item id (file id)" }
|
|
29064
|
+
},
|
|
29065
|
+
required: ["driveId", "itemId"]
|
|
29066
|
+
}
|
|
28990
29067
|
}
|
|
28991
29068
|
];
|
|
28992
29069
|
var mcpRegistry = null;
|
|
@@ -31223,7 +31300,7 @@ async function executeTool(name, input) {
|
|
|
31223
31300
|
}
|
|
31224
31301
|
case "message_status": {
|
|
31225
31302
|
if (!input.message_sid) return { success: false, result: null, error: "'message_sid' required" };
|
|
31226
|
-
const { getMessageStatus: getMessageStatus2 } = await import("./sms-
|
|
31303
|
+
const { getMessageStatus: getMessageStatus2 } = await import("./sms-CSUCC7HL.js");
|
|
31227
31304
|
const result = await getMessageStatus2(input.message_sid);
|
|
31228
31305
|
return { success: result.success, result: result.success ? { sid: result.messageSid, status: result.status } : null, error: result.error };
|
|
31229
31306
|
}
|
|
@@ -32443,7 +32520,7 @@ async function executeTool(name, input) {
|
|
|
32443
32520
|
}
|
|
32444
32521
|
// ===== NEW TOOLS (v3.1.0) =====
|
|
32445
32522
|
case "ocr_tesseract": {
|
|
32446
|
-
const { ocrWithTesseract } = await import("./ocr-
|
|
32523
|
+
const { ocrWithTesseract } = await import("./ocr-UONKTQU7.js");
|
|
32447
32524
|
const result = await ocrWithTesseract(input.file_path, input.language);
|
|
32448
32525
|
return { success: result.success, result: result.text || result.error, error: result.error };
|
|
32449
32526
|
}
|
|
@@ -32458,7 +32535,7 @@ async function executeTool(name, input) {
|
|
|
32458
32535
|
return withDownloadUrl({ success: result.success, filePath: result.filePath, error: result.error });
|
|
32459
32536
|
}
|
|
32460
32537
|
case "generate_word_document": {
|
|
32461
|
-
const { generateWordDocument } = await import("./word-document-
|
|
32538
|
+
const { generateWordDocument } = await import("./word-document-AV3YB4L2.js");
|
|
32462
32539
|
const elements = typeof input.content === "string" ? JSON.parse(input.content) : input.content || [];
|
|
32463
32540
|
const opts = { title: input.title };
|
|
32464
32541
|
if (input.template) opts.template = input.template;
|
|
@@ -32466,7 +32543,7 @@ async function executeTool(name, input) {
|
|
|
32466
32543
|
return withDownloadUrl({ success: result.success, filePath: result.filePath, error: result.error });
|
|
32467
32544
|
}
|
|
32468
32545
|
case "generate_presentation": {
|
|
32469
|
-
const { generatePresentation } = await import("./presentations-
|
|
32546
|
+
const { generatePresentation } = await import("./presentations-UOET2FVZ.js");
|
|
32470
32547
|
const slides = typeof input.slides === "string" ? JSON.parse(input.slides) : input.slides;
|
|
32471
32548
|
const result = await generatePresentation(slides, input.filename, {
|
|
32472
32549
|
theme: input.theme
|
|
@@ -32482,7 +32559,7 @@ async function executeTool(name, input) {
|
|
|
32482
32559
|
return withDownloadUrl({ success: result.success, filePath: result.url || result.filePath, error: result.error });
|
|
32483
32560
|
}
|
|
32484
32561
|
case "parse_document": {
|
|
32485
|
-
const { parseDocument } = await import("./documents-
|
|
32562
|
+
const { parseDocument } = await import("./documents-PFHSK7SZ.js");
|
|
32486
32563
|
const result = await parseDocument(input.file_path, input.format);
|
|
32487
32564
|
const text3 = result.text || "";
|
|
32488
32565
|
return {
|
|
@@ -32495,6 +32572,82 @@ async function executeTool(name, input) {
|
|
|
32495
32572
|
}
|
|
32496
32573
|
};
|
|
32497
32574
|
}
|
|
32575
|
+
case "analyze_spreadsheet": {
|
|
32576
|
+
const path4 = input.file_path;
|
|
32577
|
+
if (!path4) {
|
|
32578
|
+
return { success: false, result: null, error: "file_path is required" };
|
|
32579
|
+
}
|
|
32580
|
+
const maxRows = typeof input.max_rows_per_sheet === "number" ? input.max_rows_per_sheet : 500;
|
|
32581
|
+
const { readFile: readFile4 } = await import("fs/promises");
|
|
32582
|
+
const { extname: extname2 } = await import("path");
|
|
32583
|
+
const ext = extname2(path4).toLowerCase();
|
|
32584
|
+
try {
|
|
32585
|
+
if (ext === ".csv") {
|
|
32586
|
+
const raw = await readFile4(path4, "utf8");
|
|
32587
|
+
const lines = raw.split(/\r?\n/).slice(0, maxRows + 1);
|
|
32588
|
+
return {
|
|
32589
|
+
success: true,
|
|
32590
|
+
result: {
|
|
32591
|
+
format: "csv",
|
|
32592
|
+
rowCount: lines.length,
|
|
32593
|
+
truncated: raw.split(/\r?\n/).length > maxRows + 1,
|
|
32594
|
+
text: lines.join("\n")
|
|
32595
|
+
}
|
|
32596
|
+
};
|
|
32597
|
+
}
|
|
32598
|
+
if (ext !== ".xlsx") {
|
|
32599
|
+
return {
|
|
32600
|
+
success: false,
|
|
32601
|
+
result: null,
|
|
32602
|
+
error: `Unsupported extension ${ext}. Use .xlsx or .csv.`
|
|
32603
|
+
};
|
|
32604
|
+
}
|
|
32605
|
+
const buf = await readFile4(path4);
|
|
32606
|
+
const ExcelJS = await import("exceljs");
|
|
32607
|
+
const wb = new ExcelJS.default.Workbook();
|
|
32608
|
+
await wb.xlsx.load(buf);
|
|
32609
|
+
const sheets = [];
|
|
32610
|
+
wb.eachSheet((sheet) => {
|
|
32611
|
+
const rows = [];
|
|
32612
|
+
let i = 0;
|
|
32613
|
+
sheet.eachRow((row) => {
|
|
32614
|
+
if (i >= maxRows) return;
|
|
32615
|
+
const cells = [];
|
|
32616
|
+
row.eachCell({ includeEmpty: true }, (c) => {
|
|
32617
|
+
cells.push(c.value == null ? "" : String(c.value));
|
|
32618
|
+
});
|
|
32619
|
+
rows.push(cells);
|
|
32620
|
+
i++;
|
|
32621
|
+
});
|
|
32622
|
+
sheets.push({
|
|
32623
|
+
name: sheet.name,
|
|
32624
|
+
rowCount: sheet.rowCount,
|
|
32625
|
+
truncated: sheet.rowCount > maxRows,
|
|
32626
|
+
rows
|
|
32627
|
+
});
|
|
32628
|
+
});
|
|
32629
|
+
const textBlob = sheets.map(
|
|
32630
|
+
(s) => `# Sheet: ${s.name} (${s.rowCount} rows${s.truncated ? ", truncated" : ""})
|
|
32631
|
+
` + s.rows.map((r) => r.join(" ")).join("\n")
|
|
32632
|
+
).join("\n\n");
|
|
32633
|
+
return {
|
|
32634
|
+
success: true,
|
|
32635
|
+
result: {
|
|
32636
|
+
format: "xlsx",
|
|
32637
|
+
sheetCount: sheets.length,
|
|
32638
|
+
sheets,
|
|
32639
|
+
text: textBlob.length > 5e4 ? textBlob.slice(0, 5e4) + "\n...[truncated]" : textBlob,
|
|
32640
|
+
truncated: textBlob.length > 5e4
|
|
32641
|
+
}
|
|
32642
|
+
};
|
|
32643
|
+
} catch (err) {
|
|
32644
|
+
return {
|
|
32645
|
+
success: false,
|
|
32646
|
+
result: null,
|
|
32647
|
+
error: err instanceof Error ? err.message : String(err)
|
|
32648
|
+
};
|
|
32649
|
+
}
|
|
32650
|
+
}
|
|
32498
32651
|
case "key_rotation": {
|
|
32499
32652
|
const keyRotation = await import("./key-rotation-WCC5FOYS.js");
|
|
32500
32653
|
switch (input.action) {
|
|
@@ -32614,6 +32767,190 @@ async function executeTool(name, input) {
|
|
|
32614
32767
|
});
|
|
32615
32768
|
return { success: result.success, result: result.entry || result.entries || result.error, error: result.error };
|
|
32616
32769
|
}
|
|
32770
|
+
// -------------------------------------------------------------------
|
|
32771
|
+
// Microsoft 365 / Graph — chat-callable
|
|
32772
|
+
// Uses the "local" user key since tool execution doesn't currently
|
|
32773
|
+
// carry the authenticated user context through to this switch.
|
|
32774
|
+
// -------------------------------------------------------------------
|
|
32775
|
+
case "m365_list_inbox": {
|
|
32776
|
+
const { getAccessToken: getAccessToken3 } = await import("./token-store-SEWRX6RE.js");
|
|
32777
|
+
const { listMessages } = await import("./graph-client-NB475AK5.js");
|
|
32778
|
+
const { isM365Configured } = await import("./oauth-UPJYFOVU.js");
|
|
32779
|
+
if (!isM365Configured()) {
|
|
32780
|
+
return { success: false, result: null, error: "Microsoft 365 is not configured. Set M365_CLIENT_ID and M365_CLIENT_SECRET in .env." };
|
|
32781
|
+
}
|
|
32782
|
+
const token = await getAccessToken3("local");
|
|
32783
|
+
const result = await listMessages(token, {
|
|
32784
|
+
top: typeof input.top === "number" ? input.top : 10,
|
|
32785
|
+
unreadOnly: input.unreadOnly === true,
|
|
32786
|
+
search: typeof input.search === "string" ? input.search : void 0
|
|
32787
|
+
});
|
|
32788
|
+
const slim = (result.value || []).map((m) => ({
|
|
32789
|
+
id: m.id,
|
|
32790
|
+
subject: m.subject,
|
|
32791
|
+
from: m.from?.emailAddress?.address,
|
|
32792
|
+
receivedDateTime: m.receivedDateTime,
|
|
32793
|
+
isRead: m.isRead,
|
|
32794
|
+
preview: m.bodyPreview
|
|
32795
|
+
}));
|
|
32796
|
+
return { success: true, result: { count: slim.length, messages: slim } };
|
|
32797
|
+
}
|
|
32798
|
+
case "m365_analyze_email": {
|
|
32799
|
+
const { isM365Configured } = await import("./oauth-UPJYFOVU.js");
|
|
32800
|
+
const { analyzeEmail, persistAnalysis } = await import("./analyzer-OTWE3ARE.js");
|
|
32801
|
+
let analysisInput = null;
|
|
32802
|
+
let inputId;
|
|
32803
|
+
if (typeof input.graphMessageId === "string" && input.graphMessageId) {
|
|
32804
|
+
if (!isM365Configured()) {
|
|
32805
|
+
return { success: false, result: null, error: "Microsoft 365 is not configured." };
|
|
32806
|
+
}
|
|
32807
|
+
const { getAccessToken: getAccessToken3 } = await import("./token-store-SEWRX6RE.js");
|
|
32808
|
+
const { getMessage, stripHtml } = await import("./graph-client-NB475AK5.js");
|
|
32809
|
+
const token = await getAccessToken3("local");
|
|
32810
|
+
const msg = await getMessage(token, input.graphMessageId);
|
|
32811
|
+
const bodyText = msg.body?.contentType === "html" ? stripHtml(msg.body.content || "") : msg.body?.content || msg.bodyPreview || "";
|
|
32812
|
+
analysisInput = {
|
|
32813
|
+
subject: msg.subject || "(no subject)",
|
|
32814
|
+
sender: msg.from?.emailAddress?.address || "unknown",
|
|
32815
|
+
body: bodyText
|
|
32816
|
+
};
|
|
32817
|
+
inputId = input.graphMessageId;
|
|
32818
|
+
} else if (input.subject && input.sender) {
|
|
32819
|
+
analysisInput = {
|
|
32820
|
+
subject: String(input.subject),
|
|
32821
|
+
sender: String(input.sender),
|
|
32822
|
+
body: typeof input.body === "string" ? input.body : void 0
|
|
32823
|
+
};
|
|
32824
|
+
} else {
|
|
32825
|
+
return {
|
|
32826
|
+
success: false,
|
|
32827
|
+
result: null,
|
|
32828
|
+
error: "Either graphMessageId or subject+sender is required"
|
|
32829
|
+
};
|
|
32830
|
+
}
|
|
32831
|
+
const result = await analyzeEmail(analysisInput);
|
|
32832
|
+
try {
|
|
32833
|
+
await persistAnalysis({
|
|
32834
|
+
userKey: "local",
|
|
32835
|
+
input: analysisInput,
|
|
32836
|
+
inputId,
|
|
32837
|
+
inputType: "email",
|
|
32838
|
+
result
|
|
32839
|
+
});
|
|
32840
|
+
} catch {
|
|
32841
|
+
}
|
|
32842
|
+
return { success: true, result };
|
|
32843
|
+
}
|
|
32844
|
+
case "m365_list_sharepoint_sites": {
|
|
32845
|
+
const { isM365Configured } = await import("./oauth-UPJYFOVU.js");
|
|
32846
|
+
const { getAccessToken: getAccessToken3 } = await import("./token-store-SEWRX6RE.js");
|
|
32847
|
+
const { listSites: listSites2 } = await import("./sharepoint-V5P4Q62L.js");
|
|
32848
|
+
if (!isM365Configured()) {
|
|
32849
|
+
return { success: false, result: null, error: "Microsoft 365 is not configured." };
|
|
32850
|
+
}
|
|
32851
|
+
const token = await getAccessToken3("local");
|
|
32852
|
+
const sites2 = await listSites2(token, {
|
|
32853
|
+
search: typeof input.search === "string" ? input.search : void 0,
|
|
32854
|
+
top: typeof input.top === "number" ? input.top : 25
|
|
32855
|
+
});
|
|
32856
|
+
return {
|
|
32857
|
+
success: true,
|
|
32858
|
+
result: {
|
|
32859
|
+
count: sites2.length,
|
|
32860
|
+
sites: sites2.map((s) => ({
|
|
32861
|
+
id: s.id,
|
|
32862
|
+
name: s.displayName || s.name,
|
|
32863
|
+
description: s.description,
|
|
32864
|
+
webUrl: s.webUrl
|
|
32865
|
+
}))
|
|
32866
|
+
}
|
|
32867
|
+
};
|
|
32868
|
+
}
|
|
32869
|
+
case "m365_list_sharepoint_files": {
|
|
32870
|
+
const { isM365Configured } = await import("./oauth-UPJYFOVU.js");
|
|
32871
|
+
const { getAccessToken: getAccessToken3 } = await import("./token-store-SEWRX6RE.js");
|
|
32872
|
+
const { getDefaultDrive, listDriveRoot } = await import("./sharepoint-V5P4Q62L.js");
|
|
32873
|
+
if (!isM365Configured()) {
|
|
32874
|
+
return { success: false, result: null, error: "Microsoft 365 is not configured." };
|
|
32875
|
+
}
|
|
32876
|
+
if (!input.siteId) {
|
|
32877
|
+
return { success: false, result: null, error: "siteId is required" };
|
|
32878
|
+
}
|
|
32879
|
+
const token = await getAccessToken3("local");
|
|
32880
|
+
const drive = await getDefaultDrive(token, input.siteId);
|
|
32881
|
+
const items2 = await listDriveRoot(token, drive.id, {
|
|
32882
|
+
search: typeof input.search === "string" ? input.search : void 0,
|
|
32883
|
+
top: typeof input.top === "number" ? input.top : 25
|
|
32884
|
+
});
|
|
32885
|
+
return {
|
|
32886
|
+
success: true,
|
|
32887
|
+
result: {
|
|
32888
|
+
driveId: drive.id,
|
|
32889
|
+
driveName: drive.name,
|
|
32890
|
+
count: items2.length,
|
|
32891
|
+
items: items2.map((i) => ({
|
|
32892
|
+
id: i.id,
|
|
32893
|
+
name: i.name,
|
|
32894
|
+
isFolder: !!i.folder,
|
|
32895
|
+
size: i.size,
|
|
32896
|
+
mimeType: i.file?.mimeType,
|
|
32897
|
+
webUrl: i.webUrl,
|
|
32898
|
+
lastModified: i.lastModifiedDateTime
|
|
32899
|
+
}))
|
|
32900
|
+
}
|
|
32901
|
+
};
|
|
32902
|
+
}
|
|
32903
|
+
case "m365_analyze_sharepoint_file": {
|
|
32904
|
+
const { isM365Configured } = await import("./oauth-UPJYFOVU.js");
|
|
32905
|
+
const { getAccessToken: getAccessToken3 } = await import("./token-store-SEWRX6RE.js");
|
|
32906
|
+
const { getDriveItem, extractTextFromDriveItem } = await import("./sharepoint-V5P4Q62L.js");
|
|
32907
|
+
const { analyzeEmail, persistAnalysis } = await import("./analyzer-OTWE3ARE.js");
|
|
32908
|
+
if (!isM365Configured()) {
|
|
32909
|
+
return { success: false, result: null, error: "Microsoft 365 is not configured." };
|
|
32910
|
+
}
|
|
32911
|
+
if (!input.driveId || !input.itemId) {
|
|
32912
|
+
return { success: false, result: null, error: "driveId and itemId are required" };
|
|
32913
|
+
}
|
|
32914
|
+
const token = await getAccessToken3("local");
|
|
32915
|
+
const item = await getDriveItem(token, input.driveId, input.itemId);
|
|
32916
|
+
const extracted = await extractTextFromDriveItem(
|
|
32917
|
+
token,
|
|
32918
|
+
input.driveId,
|
|
32919
|
+
input.itemId,
|
|
32920
|
+
item
|
|
32921
|
+
);
|
|
32922
|
+
if (!extracted.text || extracted.text.trim().length === 0) {
|
|
32923
|
+
return {
|
|
32924
|
+
success: false,
|
|
32925
|
+
result: { extractedFrom: extracted.extractedFrom, byteLength: extracted.byteLength },
|
|
32926
|
+
error: `No text could be extracted (${extracted.extractedFrom})`
|
|
32927
|
+
};
|
|
32928
|
+
}
|
|
32929
|
+
const analysisInput = {
|
|
32930
|
+
subject: item.name || "(unnamed file)",
|
|
32931
|
+
sender: item.parentReference?.path || "sharepoint",
|
|
32932
|
+
body: extracted.text.slice(0, 16e3)
|
|
32933
|
+
};
|
|
32934
|
+
const result = await analyzeEmail(analysisInput);
|
|
32935
|
+
try {
|
|
32936
|
+
await persistAnalysis({
|
|
32937
|
+
userKey: "local",
|
|
32938
|
+
input: analysisInput,
|
|
32939
|
+
inputId: `${input.driveId}:${input.itemId}`,
|
|
32940
|
+
inputType: "file",
|
|
32941
|
+
result
|
|
32942
|
+
});
|
|
32943
|
+
} catch {
|
|
32944
|
+
}
|
|
32945
|
+
return {
|
|
32946
|
+
success: true,
|
|
32947
|
+
result: {
|
|
32948
|
+
...result,
|
|
32949
|
+
file: { name: item.name, size: item.size, mimeType: item.file?.mimeType, webUrl: item.webUrl },
|
|
32950
|
+
extractedFrom: extracted.extractedFrom
|
|
32951
|
+
}
|
|
32952
|
+
};
|
|
32953
|
+
}
|
|
32617
32954
|
default:
|
|
32618
32955
|
return { success: false, result: null, error: `Unknown tool: ${name}` };
|
|
32619
32956
|
}
|
|
@@ -32662,4 +32999,4 @@ export {
|
|
|
32662
32999
|
streamChat,
|
|
32663
33000
|
streamChatWithTools
|
|
32664
33001
|
};
|
|
32665
|
-
//# sourceMappingURL=chunk-
|
|
33002
|
+
//# sourceMappingURL=chunk-ZMML6T63.js.map
|