@symerian/symi 2.1.4 → 2.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/plugin-sdk/{accounts-BToL3HlP.js → accounts-BtaOa4z_.js} +1 -1
- package/dist/plugin-sdk/{accounts-D9zGZU5t.js → accounts-Ddm33hQm.js} +3 -3
- package/dist/plugin-sdk/{accounts-Dtszw3Zn.js → accounts-s-AdhXVR.js} +1 -1
- package/dist/plugin-sdk/{active-listener-bEk__wbB.js → active-listener-BXYeALs0.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-C3gMMKCU.js → agent-scope-CYYpcO9W.js} +2 -2
- package/dist/plugin-sdk/{api-key-rotation-B7wX2cS9.js → api-key-rotation-BNN7DLRF.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-ni0fpVp8.js → audio-preflight-Cx5FPiJc.js} +24 -24
- package/dist/plugin-sdk/{bindings-BbwoUGPx.js → bindings-C7hRtgYW.js} +2 -2
- package/dist/plugin-sdk/{channel-activity-Ji7f0gqq.js → channel-activity-DoC1xtDu.js} +1 -1
- package/dist/plugin-sdk/{channel-web-DLpcsfAm.js → channel-web-Bz7z_PrR.js} +22 -22
- package/dist/plugin-sdk/{chrome-B3sE4bXC.js → chrome-BMG9BEuT.js} +3 -3
- package/dist/plugin-sdk/{chunk-jvk9axTQ.js → chunk-Dw2XBYXv.js} +1 -1
- package/dist/plugin-sdk/{command-format-DSdvQ_M5.js → command-format-GKSevep4.js} +1 -1
- package/dist/plugin-sdk/{commands-registry-DFVoW5Za.js → commands-registry-B6QKgH1z.js} +4 -4
- package/dist/plugin-sdk/{config-C8bdNl-t.js → config-ChoJh2v6.js} +9 -9
- package/dist/plugin-sdk/{deliver-DupqKEgT.js → deliver-PHupXW27.js} +10 -10
- package/dist/plugin-sdk/{diagnostic-mFf4i4G9.js → diagnostic-05pm5Rxi.js} +1 -1
- package/dist/plugin-sdk/{image-t0--fcO_.js → image-CZeY-Q2T.js} +4 -4
- package/dist/plugin-sdk/{image-ops-Bnp6LXEx.js → image-ops-BlQR__MN.js} +1 -1
- package/dist/plugin-sdk/index.js +53 -53
- package/dist/plugin-sdk/{ir-Fb3qpcis.js → ir-BJ6BHE5b.js} +4 -4
- package/dist/plugin-sdk/{local-roots-Ckk1QfzI.js → local-roots-BHLNSI8U.js} +3 -3
- package/dist/plugin-sdk/{login-YiSLGJpw.js → login-WrHy4q1W.js} +7 -7
- package/dist/plugin-sdk/{login-qr-Ct3iRCTA.js → login-qr-D30S2gk7.js} +9 -9
- package/dist/plugin-sdk/{manager-PXN_BUWT.js → manager-Cn2S7u-y.js} +8 -8
- package/dist/plugin-sdk/{manifest-registry-B3ugY9-f.js → manifest-registry-CPnHl_K3.js} +1 -1
- package/dist/plugin-sdk/{markdown-tables-Dfaqilz6.js → markdown-tables-BoYFajMu.js} +1 -1
- package/dist/plugin-sdk/{message-channel-BdI5Ra9S.js → message-channel-COTAJzHd.js} +1 -1
- package/dist/plugin-sdk/{model-selection-UQwTqGSw.js → model-selection-CPEL3Uc_.js} +4 -4
- package/dist/plugin-sdk/{outbound-attachment-DnVQfTG2.js → outbound-attachment-CnslKL38.js} +2 -2
- package/dist/plugin-sdk/{outbound-BaAisH4u.js → outbound-ps5sAOfw.js} +7 -7
- package/dist/plugin-sdk/{pi-auth-json-DAttpBPg.js → pi-auth-json-D4gyc_V3.js} +5 -5
- package/dist/plugin-sdk/{pi-embedded-helpers-CHlXbJGj.js → pi-embedded-helpers-CU4D77Op.js} +17 -17
- package/dist/plugin-sdk/{plugins-BbAvhC25.js → plugins-BNByVCIH.js} +4 -4
- package/dist/plugin-sdk/{pw-ai-JO8xac-v.js → pw-ai-81tOC-Ch.js} +8 -8
- package/dist/plugin-sdk/{qmd-manager-mjKcdwVr.js → qmd-manager-CH0XbIHf.js} +4 -4
- package/dist/plugin-sdk/{registry--_pGht6S.js → registry-D0xTnUWt.js} +2 -2
- package/dist/plugin-sdk/{replies-CVSgwFjl.js → replies-zmY9bbot.js} +3 -3
- package/dist/plugin-sdk/{reply-GcVMmckw.js → reply-BSikbH6_.js} +78 -78
- package/dist/plugin-sdk/{reply-prefix-BHuV5t70.js → reply-prefix-uxfMZW4p.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-BkCUbYGV.js → resolve-outbound-target-BiyAyTWz.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-D3JH_D2N.js → resolve-route-B3CCBumQ.js} +3 -3
- package/dist/plugin-sdk/{retry-ilSJqnz9.js → retry-CwQ_iIj8.js} +1 -1
- package/dist/plugin-sdk/{runner-Dm_yIGe6.js → runner-Co_eR7xp.js} +9 -9
- package/dist/plugin-sdk/{send-C9rT2n2M.js → send-6DwkdgEF.js} +7 -7
- package/dist/plugin-sdk/{send-BEeCC5ku.js → send-BNZVvZHE.js} +6 -6
- package/dist/plugin-sdk/{send-DNkOLgrC.js → send-D6BxZPP0.js} +6 -6
- package/dist/plugin-sdk/{send-DWr9Drgp.js → send-D8vgGF3T.js} +10 -10
- package/dist/plugin-sdk/{send-mQr5eXnb.js → send-Dw4gTEN6.js} +10 -10
- package/dist/plugin-sdk/{session-CQ5dJOsX.js → session-BTN5wyhB.js} +4 -4
- package/dist/plugin-sdk/{skill-commands-27tIhSRP.js → skill-commands-BUVE0jBL.js} +5 -5
- package/dist/plugin-sdk/{skills-B1GeRYlu.js → skills-_yTP47Cd.js} +7 -7
- package/dist/plugin-sdk/{sqlite-Cq_7Cg4E.js → sqlite-CxAR5ttJ.js} +1 -1
- package/dist/plugin-sdk/{store-Do3t33-c.js → store-BdrNabcU.js} +2 -2
- package/dist/plugin-sdk/{subsystem-Coz2AgU8.js → subsystem-B2uDN3TV.js} +1 -1
- package/dist/plugin-sdk/{tables-DR0NmBeH.js → tables-DNwXwNFa.js} +1 -1
- package/dist/plugin-sdk/{target-errors-B7YyMnIi.js → target-errors-Paro1BjP.js} +2 -2
- package/dist/plugin-sdk/{thinking-DCNUIAHY.js → thinking-CXqf7WTe.js} +5 -5
- package/dist/plugin-sdk/{tokens-CWMflosr.js → tokens-bC3UVmVH.js} +1 -1
- package/dist/plugin-sdk/{tool-images-D7Lno-TE.js → tool-images-HJ2sfZDV.js} +2 -2
- package/dist/plugin-sdk/{tool-loop-detection-edmW8ZiF.js → tool-loop-detection-BVA6fax-.js} +2 -2
- package/dist/plugin-sdk/web-eAue9zIL.js +65 -0
- package/dist/plugin-sdk/{whatsapp-actions-ZlyPpuJN.js → whatsapp-actions-DU3CTVCg.js} +21 -21
- package/extensions/outlook/index.ts +208 -0
- package/extensions/outlook/package.json +15 -0
- package/extensions/outlook/src/auth.ts +369 -0
- package/extensions/outlook/src/graph-mail.ts +150 -0
- package/extensions/outlook/src/store.ts +72 -0
- package/extensions/outlook/src/tools.ts +256 -0
- package/extensions/outlook/symi.plugin.json +11 -0
- package/package.json +1 -1
- package/dist/plugin-sdk/web-CJWupzDH.js +0 -65
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
|
-
import { B as parseTargetPrefixes, F as resolveDiscordAccount, I as normalizeDiscordToken, L as buildMessagingTarget, R as ensureTargetId, V as requireTargetKind, z as parseTargetMention } from "./plugins-
|
|
2
|
+
import { B as parseTargetPrefixes, F as resolveDiscordAccount, I as normalizeDiscordToken, L as buildMessagingTarget, R as ensureTargetId, V as requireTargetKind, z as parseTargetMention } from "./plugins-BNByVCIH.js";
|
|
3
3
|
import { t as resolveFetch } from "./fetch-CUNoPTKm.js";
|
|
4
|
-
import { ut as resolvePreferredSymiTmpDir } from "./registry
|
|
5
|
-
import { n as retryAsync, t as resolveRetryConfig } from "./retry-
|
|
6
|
-
import { n as loadConfig } from "./config-
|
|
7
|
-
import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-
|
|
4
|
+
import { ut as resolvePreferredSymiTmpDir } from "./registry-D0xTnUWt.js";
|
|
5
|
+
import { n as retryAsync, t as resolveRetryConfig } from "./retry-CwQ_iIj8.js";
|
|
6
|
+
import { n as loadConfig } from "./config-ChoJh2v6.js";
|
|
7
|
+
import { n as recordChannelActivity, r as createDiscordRetryRunner } from "./channel-activity-DoC1xtDu.js";
|
|
8
8
|
import { n as normalizePollInput, t as normalizePollDurationHours } from "./polls-3WJMd-G-.js";
|
|
9
|
-
import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-
|
|
10
|
-
import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-
|
|
11
|
-
import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-
|
|
12
|
-
import { n as resolveMarkdownTableMode } from "./markdown-tables-
|
|
13
|
-
import { t as convertMarkdownTables } from "./tables-
|
|
9
|
+
import { _ as maxBytesForKind, l as extensionForMime } from "./image-ops-BlQR__MN.js";
|
|
10
|
+
import { a as loadWebMedia, o as loadWebMediaRaw } from "./ir-BJ6BHE5b.js";
|
|
11
|
+
import { c as resolveChunkMode, i as chunkMarkdownTextWithMode } from "./chunk-Dw2XBYXv.js";
|
|
12
|
+
import { n as resolveMarkdownTableMode } from "./markdown-tables-BoYFajMu.js";
|
|
13
|
+
import { t as convertMarkdownTables } from "./tables-DNwXwNFa.js";
|
|
14
14
|
import path from "node:path";
|
|
15
15
|
import { ButtonStyle, ChannelType, MessageFlags, PermissionFlagsBits, Routes, TextInputStyle } from "discord-api-types/v10";
|
|
16
16
|
import { Button, ChannelSelectMenu, CheckboxGroup, Container, Embed, File, Label, LinkButton, MediaGallery, MentionableSelectMenu, Modal, RadioGroup, RequestClient, RoleSelectMenu, Row, Section, Separator, StringSelectMenu, TextDisplay, TextInput, Thumbnail, UserSelectMenu, parseCustomId, serializePayload } from "@buape/carbon";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { d as readCredsJsonRaw, h as resolveWebCredsPath, l as maybeRestoreCredsFromBackup, m as resolveWebCredsBackupPath, p as resolveDefaultWebAuthDir } from "./accounts-
|
|
2
|
-
import { P as resolveUserPath, U as danger, X as success, at as toPinoLikeLogger, tt as getChildLogger, w as ensureDir } from "./registry
|
|
3
|
-
import { Z as VERSION } from "./config-
|
|
4
|
-
import { t as formatCliCommand } from "./command-format-
|
|
1
|
+
import { d as readCredsJsonRaw, h as resolveWebCredsPath, l as maybeRestoreCredsFromBackup, m as resolveWebCredsBackupPath, p as resolveDefaultWebAuthDir } from "./accounts-Ddm33hQm.js";
|
|
2
|
+
import { P as resolveUserPath, U as danger, X as success, at as toPinoLikeLogger, tt as getChildLogger, w as ensureDir } from "./registry-D0xTnUWt.js";
|
|
3
|
+
import { Z as VERSION } from "./config-ChoJh2v6.js";
|
|
4
|
+
import { t as formatCliCommand } from "./command-format-GKSevep4.js";
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import { randomUUID } from "node:crypto";
|
|
7
7
|
import { DisconnectReason, fetchLatestBaileysVersion, makeCacheableSignalKeyStore, makeWASocket, useMultiFileAuthState } from "@whiskeysockets/baileys";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as __exportAll } from "./rolldown-runtime-Cbj13DAv.js";
|
|
2
2
|
import { s as resolveStateDir } from "./paths-DR2yt_mP.js";
|
|
3
|
-
import { P as resolveUserPath, b as CONFIG_DIR } from "./registry
|
|
4
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
5
|
-
import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "./agent-scope-
|
|
6
|
-
import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-
|
|
7
|
-
import { i as listChatCommands } from "./commands-registry-
|
|
3
|
+
import { P as resolveUserPath, b as CONFIG_DIR } from "./registry-D0xTnUWt.js";
|
|
4
|
+
import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
|
|
5
|
+
import { s as resolveAgentWorkspaceDir, t as listAgentIds } from "./agent-scope-CYYpcO9W.js";
|
|
6
|
+
import { o as resolvePluginSkillDirs, t as buildWorkspaceSkillCommandSpecs } from "./skills-_yTP47Cd.js";
|
|
7
|
+
import { i as listChatCommands } from "./commands-registry-B6QKgH1z.js";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { P as resolveUserPath, b as CONFIG_DIR } from "./registry
|
|
2
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
3
|
-
import { i as parseBooleanValue } from "./command-format-
|
|
4
|
-
import { M as normalizeSkillFilter, w as resolveSymiPackageRootSync } from "./agent-scope-
|
|
5
|
-
import { a as LEGACY_MANIFEST_KEYS, c as normalizePluginsConfig, l as resolveEnableState, o as MANIFEST_KEY, p as isDangerousHostEnvVarName, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-
|
|
1
|
+
import { P as resolveUserPath, b as CONFIG_DIR } from "./registry-D0xTnUWt.js";
|
|
2
|
+
import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
|
|
3
|
+
import { i as parseBooleanValue } from "./command-format-GKSevep4.js";
|
|
4
|
+
import { M as normalizeSkillFilter, w as resolveSymiPackageRootSync } from "./agent-scope-CYYpcO9W.js";
|
|
5
|
+
import { a as LEGACY_MANIFEST_KEYS, c as normalizePluginsConfig, l as resolveEnableState, o as MANIFEST_KEY, p as isDangerousHostEnvVarName, t as loadPluginManifestRegistry, u as resolveMemorySlotDecision } from "./manifest-registry-CPnHl_K3.js";
|
|
6
6
|
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import os from "node:os";
|
|
9
|
-
import
|
|
9
|
+
import JSON5 from "json5";
|
|
10
10
|
import { createHash, timingSafeEqual } from "node:crypto";
|
|
11
11
|
import fs$1 from "node:fs/promises";
|
|
12
12
|
import { fileURLToPath } from "node:url";
|
|
@@ -226,7 +226,7 @@ function resolveSymiManifestBlock(params) {
|
|
|
226
226
|
const raw = getFrontmatterString(params.frontmatter, params.key ?? "metadata");
|
|
227
227
|
if (!raw) return;
|
|
228
228
|
try {
|
|
229
|
-
const parsed =
|
|
229
|
+
const parsed = JSON5.parse(raw);
|
|
230
230
|
if (!parsed || typeof parsed !== "object") return;
|
|
231
231
|
const manifestKeys = [MANIFEST_KEY, ...LEGACY_MANIFEST_KEYS];
|
|
232
232
|
for (const key of manifestKeys) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
1
|
+
import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
|
|
2
2
|
import { t as redactSensitiveText } from "./redact-DPnDWsnT.js";
|
|
3
3
|
import { o as resolveSessionTranscriptsDirForAgent } from "./paths-A0xdf3yk.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { M as resolveConfigDir } from "./registry
|
|
2
|
-
import { c as detectMime, l as extensionForMime } from "./image-ops-
|
|
1
|
+
import { M as resolveConfigDir } from "./registry-D0xTnUWt.js";
|
|
2
|
+
import { c as detectMime, l as extensionForMime } from "./image-ops-BlQR__MN.js";
|
|
3
3
|
import { createWriteStream } from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import crypto from "node:crypto";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { G as isVerbose, ct as normalizeLogLevel, lt as readLoggingConfig, n as CHAT_CHANNEL_ORDER, ot as loggingState, rt as isFileLogLevelEnabled, st as levelToMinLevel, tt as getChildLogger } from "./registry
|
|
1
|
+
import { G as isVerbose, ct as normalizeLogLevel, lt as readLoggingConfig, n as CHAT_CHANNEL_ORDER, ot as loggingState, rt as isFileLogLevelEnabled, st as levelToMinLevel, tt as getChildLogger } from "./registry-D0xTnUWt.js";
|
|
2
2
|
import { Chalk } from "chalk";
|
|
3
3
|
|
|
4
4
|
//#region src/terminal/progress-line.ts
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as detectMime } from "./image-ops-
|
|
2
|
-
import { r as sanitizeToolResultImages } from "./tool-images-
|
|
1
|
+
import { c as detectMime } from "./image-ops-BlQR__MN.js";
|
|
2
|
+
import { r as sanitizeToolResultImages } from "./tool-images-HJ2sfZDV.js";
|
|
3
3
|
import fs from "node:fs/promises";
|
|
4
4
|
|
|
5
5
|
//#region src/agents/tools/common.ts
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { p as normalizeAccountId } from "./session-key-C_0eELjb.js";
|
|
2
|
-
import { r as resolveWhatsAppAccount } from "./accounts-
|
|
3
|
-
import { D as resolveSlackAccount, F as resolveDiscordAccount, O as resolveSlackReplyToMode, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget } from "./plugins-
|
|
4
|
-
import { A as normalizeE164, T as escapeRegExp, i as getChatChannelMeta, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry
|
|
5
|
-
import { r as resolveIMessageAccount } from "./accounts-
|
|
6
|
-
import { i as resolveSignalAccount } from "./accounts-
|
|
2
|
+
import { r as resolveWhatsAppAccount } from "./accounts-Ddm33hQm.js";
|
|
3
|
+
import { D as resolveSlackAccount, F as resolveDiscordAccount, O as resolveSlackReplyToMode, S as resolveTelegramAccount, _ as normalizeWhatsAppTarget } from "./plugins-BNByVCIH.js";
|
|
4
|
+
import { A as normalizeE164, T as escapeRegExp, i as getChatChannelMeta, l as requireActivePluginRegistry, n as CHAT_CHANNEL_ORDER } from "./registry-D0xTnUWt.js";
|
|
5
|
+
import { r as resolveIMessageAccount } from "./accounts-s-AdhXVR.js";
|
|
6
|
+
import { i as resolveSignalAccount } from "./accounts-BtaOa4z_.js";
|
|
7
7
|
|
|
8
8
|
//#region src/config/group-policy.ts
|
|
9
9
|
function resolveChannelGroupConfig(groups, groupId, caseInsensitive = false) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
2
|
-
import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-
|
|
1
|
+
import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
|
|
2
|
+
import { i as getImageMetadata, n as buildImageResizeSideGrid, s as resizeToJpeg, t as IMAGE_REDUCE_QUALITY_STEPS } from "./image-ops-BlQR__MN.js";
|
|
3
3
|
|
|
4
4
|
//#region src/agents/image-sanitization.ts
|
|
5
5
|
const DEFAULT_IMAGE_MAX_DIMENSION_PX = 1200;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./paths-DR2yt_mP.js";
|
|
2
|
-
import { H as isPlainObject } from "./registry
|
|
3
|
-
import { t as createSubsystemLogger } from "./subsystem-
|
|
2
|
+
import { H as isPlainObject } from "./registry-D0xTnUWt.js";
|
|
3
|
+
import { t as createSubsystemLogger } from "./subsystem-B2uDN3TV.js";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
|
|
6
6
|
//#region src/agents/tool-loop-detection.ts
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { a as WA_WEB_AUTH_DIR, g as webAuthExists, s as logWebSelfId, u as pickWebChannel } from "./accounts-Ddm33hQm.js";
|
|
2
|
+
import "./reply-BSikbH6_.js";
|
|
3
|
+
import "./paths-DR2yt_mP.js";
|
|
4
|
+
import "./github-copilot-token-D9X2phUj.js";
|
|
5
|
+
import "./plugins-BNByVCIH.js";
|
|
6
|
+
import "./fetch-CUNoPTKm.js";
|
|
7
|
+
import "./registry-D0xTnUWt.js";
|
|
8
|
+
import "./retry-CwQ_iIj8.js";
|
|
9
|
+
import "./send-Dw4gTEN6.js";
|
|
10
|
+
import "./config-ChoJh2v6.js";
|
|
11
|
+
import "./subsystem-B2uDN3TV.js";
|
|
12
|
+
import "./command-format-GKSevep4.js";
|
|
13
|
+
import "./model-selection-CPEL3Uc_.js";
|
|
14
|
+
import "./agent-scope-CYYpcO9W.js";
|
|
15
|
+
import "./manifest-registry-CPnHl_K3.js";
|
|
16
|
+
import "./redact-DPnDWsnT.js";
|
|
17
|
+
import "./errors-Bv8oZiTO.js";
|
|
18
|
+
import "./channel-activity-DoC1xtDu.js";
|
|
19
|
+
import "./image-ops-BlQR__MN.js";
|
|
20
|
+
import "./ssrf-DKZ8eBrk.js";
|
|
21
|
+
import "./local-roots-BHLNSI8U.js";
|
|
22
|
+
import "./ir-BJ6BHE5b.js";
|
|
23
|
+
import "./chunk-Dw2XBYXv.js";
|
|
24
|
+
import "./message-channel-COTAJzHd.js";
|
|
25
|
+
import "./bindings-C7hRtgYW.js";
|
|
26
|
+
import "./markdown-tables-BoYFajMu.js";
|
|
27
|
+
import "./render-BiJZ5W4Z.js";
|
|
28
|
+
import "./tables-DNwXwNFa.js";
|
|
29
|
+
import "./send-6DwkdgEF.js";
|
|
30
|
+
import "./tool-images-HJ2sfZDV.js";
|
|
31
|
+
import "./target-errors-Paro1BjP.js";
|
|
32
|
+
import "./send-BNZVvZHE.js";
|
|
33
|
+
import "./send-D8vgGF3T.js";
|
|
34
|
+
import "./runner-Co_eR7xp.js";
|
|
35
|
+
import "./reply-prefix-uxfMZW4p.js";
|
|
36
|
+
import "./tokens-bC3UVmVH.js";
|
|
37
|
+
import "./skill-commands-BUVE0jBL.js";
|
|
38
|
+
import "./skills-_yTP47Cd.js";
|
|
39
|
+
import "./chrome-BMG9BEuT.js";
|
|
40
|
+
import "./thinking-CXqf7WTe.js";
|
|
41
|
+
import "./accounts-s-AdhXVR.js";
|
|
42
|
+
import "./accounts-BtaOa4z_.js";
|
|
43
|
+
import "./deliver-PHupXW27.js";
|
|
44
|
+
import "./pi-embedded-helpers-CU4D77Op.js";
|
|
45
|
+
import "./paths-A0xdf3yk.js";
|
|
46
|
+
import "./diagnostic-05pm5Rxi.js";
|
|
47
|
+
import "./store-BdrNabcU.js";
|
|
48
|
+
import { n as monitorWebInbox, t as monitorWebChannel } from "./channel-web-Bz7z_PrR.js";
|
|
49
|
+
import "./image-CZeY-Q2T.js";
|
|
50
|
+
import "./pi-model-discovery-LbcEa65a.js";
|
|
51
|
+
import "./api-key-rotation-BNN7DLRF.js";
|
|
52
|
+
import "./sqlite-CxAR5ttJ.js";
|
|
53
|
+
import "./diagnostic-session-state-Wd5tNeQG.js";
|
|
54
|
+
import "./manager-Cn2S7u-y.js";
|
|
55
|
+
import "./commands-registry-B6QKgH1z.js";
|
|
56
|
+
import "./send-D6BxZPP0.js";
|
|
57
|
+
import "./proxy-MquBDehr.js";
|
|
58
|
+
import "./resolve-route-B3CCBumQ.js";
|
|
59
|
+
import "./replies-zmY9bbot.js";
|
|
60
|
+
import "./outbound-attachment-CnslKL38.js";
|
|
61
|
+
import { n as sendMessageWhatsApp } from "./outbound-ps5sAOfw.js";
|
|
62
|
+
import { i as waitForWaConnection, t as createWaSocket } from "./session-BTN5wyhB.js";
|
|
63
|
+
import { t as loginWeb } from "./login-WrHy4q1W.js";
|
|
64
|
+
|
|
65
|
+
export { WA_WEB_AUTH_DIR, createWaSocket, logWebSelfId, loginWeb, monitorWebChannel, monitorWebInbox, pickWebChannel, sendMessageWhatsApp, waitForWaConnection, webAuthExists };
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import { r as resolveWhatsAppAccount } from "./accounts-
|
|
1
|
+
import { r as resolveWhatsAppAccount } from "./accounts-Ddm33hQm.js";
|
|
2
2
|
import "./paths-DR2yt_mP.js";
|
|
3
3
|
import "./github-copilot-token-D9X2phUj.js";
|
|
4
|
-
import "./plugins-
|
|
5
|
-
import "./registry
|
|
6
|
-
import "./config-
|
|
7
|
-
import "./subsystem-
|
|
8
|
-
import "./command-format-
|
|
9
|
-
import "./model-selection-
|
|
10
|
-
import "./agent-scope-
|
|
11
|
-
import "./manifest-registry-
|
|
12
|
-
import "./image-ops-
|
|
4
|
+
import "./plugins-BNByVCIH.js";
|
|
5
|
+
import "./registry-D0xTnUWt.js";
|
|
6
|
+
import "./config-ChoJh2v6.js";
|
|
7
|
+
import "./subsystem-B2uDN3TV.js";
|
|
8
|
+
import "./command-format-GKSevep4.js";
|
|
9
|
+
import "./model-selection-CPEL3Uc_.js";
|
|
10
|
+
import "./agent-scope-CYYpcO9W.js";
|
|
11
|
+
import "./manifest-registry-CPnHl_K3.js";
|
|
12
|
+
import "./image-ops-BlQR__MN.js";
|
|
13
13
|
import "./ssrf-DKZ8eBrk.js";
|
|
14
|
-
import "./local-roots-
|
|
15
|
-
import "./ir-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./message-channel-
|
|
18
|
-
import "./bindings-
|
|
19
|
-
import "./markdown-tables-
|
|
14
|
+
import "./local-roots-BHLNSI8U.js";
|
|
15
|
+
import "./ir-BJ6BHE5b.js";
|
|
16
|
+
import "./chunk-Dw2XBYXv.js";
|
|
17
|
+
import "./message-channel-COTAJzHd.js";
|
|
18
|
+
import "./bindings-C7hRtgYW.js";
|
|
19
|
+
import "./markdown-tables-BoYFajMu.js";
|
|
20
20
|
import "./render-BiJZ5W4Z.js";
|
|
21
|
-
import "./tables-
|
|
22
|
-
import "./tool-images-
|
|
23
|
-
import { a as createActionGate, c as jsonResult, d as readReactionParams, i as ToolAuthorizationError, m as readStringParam } from "./target-errors-
|
|
24
|
-
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-
|
|
25
|
-
import { r as sendReactionWhatsApp } from "./outbound-
|
|
21
|
+
import "./tables-DNwXwNFa.js";
|
|
22
|
+
import "./tool-images-HJ2sfZDV.js";
|
|
23
|
+
import { a as createActionGate, c as jsonResult, d as readReactionParams, i as ToolAuthorizationError, m as readStringParam } from "./target-errors-Paro1BjP.js";
|
|
24
|
+
import { t as resolveWhatsAppOutboundTarget } from "./resolve-outbound-target-BiyAyTWz.js";
|
|
25
|
+
import { r as sendReactionWhatsApp } from "./outbound-ps5sAOfw.js";
|
|
26
26
|
|
|
27
27
|
//#region src/agents/tools/whatsapp-target-auth.ts
|
|
28
28
|
function resolveAuthorizedWhatsAppOutboundTarget(params) {
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { buildOauthProviderAuthResult, emptyPluginConfigSchema } from "symi/plugin-sdk";
|
|
2
|
+
import type { AnyAgentTool, SymiPluginApi, ProviderAuthContext } from "../../src/plugins/types.js";
|
|
3
|
+
import { loginOutlook } from "./src/auth.js";
|
|
4
|
+
import { saveCredentials, loadCredentials, deleteCredentials } from "./src/store.js";
|
|
5
|
+
import {
|
|
6
|
+
createOutlookListTool,
|
|
7
|
+
createOutlookReadTool,
|
|
8
|
+
createOutlookSendTool,
|
|
9
|
+
createOutlookReplyTool,
|
|
10
|
+
createOutlookSearchTool,
|
|
11
|
+
createOutlookFoldersTool,
|
|
12
|
+
createOutlookMoveTool,
|
|
13
|
+
} from "./src/tools.js";
|
|
14
|
+
|
|
15
|
+
const outlookPlugin = {
|
|
16
|
+
id: "outlook",
|
|
17
|
+
name: "Outlook 365",
|
|
18
|
+
description: "Outlook 365 email integration via Microsoft Graph API with OAuth2 PKCE",
|
|
19
|
+
configSchema: emptyPluginConfigSchema(),
|
|
20
|
+
|
|
21
|
+
register(api: SymiPluginApi) {
|
|
22
|
+
// -------------------------------------------------------------------------
|
|
23
|
+
// Agent tools — available when Outlook is connected
|
|
24
|
+
// -------------------------------------------------------------------------
|
|
25
|
+
const tools = [
|
|
26
|
+
createOutlookListTool,
|
|
27
|
+
createOutlookReadTool,
|
|
28
|
+
createOutlookSendTool,
|
|
29
|
+
createOutlookReplyTool,
|
|
30
|
+
createOutlookSearchTool,
|
|
31
|
+
createOutlookFoldersTool,
|
|
32
|
+
createOutlookMoveTool,
|
|
33
|
+
];
|
|
34
|
+
|
|
35
|
+
for (const createTool of tools) {
|
|
36
|
+
api.registerTool(createTool() as unknown as AnyAgentTool, { optional: true });
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// -------------------------------------------------------------------------
|
|
40
|
+
// Provider — enables `symi models add --provider outlook --auth oauth`
|
|
41
|
+
// and stores credentials in the standard auth profile store.
|
|
42
|
+
// -------------------------------------------------------------------------
|
|
43
|
+
api.registerProvider({
|
|
44
|
+
id: "outlook-mail",
|
|
45
|
+
label: "Outlook 365 Mail",
|
|
46
|
+
docsPath: "/integrations/outlook",
|
|
47
|
+
aliases: ["outlook"],
|
|
48
|
+
auth: [
|
|
49
|
+
{
|
|
50
|
+
id: "oauth",
|
|
51
|
+
label: "Microsoft OAuth (sign in with your account)",
|
|
52
|
+
hint: "PKCE + localhost callback — uses your normal Microsoft credentials",
|
|
53
|
+
kind: "oauth",
|
|
54
|
+
run: async (ctx: ProviderAuthContext) => {
|
|
55
|
+
const spin = ctx.prompter.progress("Starting Outlook OAuth...");
|
|
56
|
+
try {
|
|
57
|
+
const result = await loginOutlook({
|
|
58
|
+
isRemote: ctx.isRemote,
|
|
59
|
+
openUrl: ctx.openUrl,
|
|
60
|
+
prompt: async (message) => String(await ctx.prompter.text({ message })),
|
|
61
|
+
note: ctx.prompter.note,
|
|
62
|
+
log: (message) => ctx.runtime.log(message),
|
|
63
|
+
progress: spin,
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
// Persist to local credential store for the tools
|
|
67
|
+
saveCredentials({
|
|
68
|
+
access: result.access,
|
|
69
|
+
refresh: result.refresh,
|
|
70
|
+
expires: result.expires,
|
|
71
|
+
email: result.email,
|
|
72
|
+
displayName: result.displayName,
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
return buildOauthProviderAuthResult({
|
|
76
|
+
providerId: "outlook-mail",
|
|
77
|
+
defaultModel: "", // not an LLM provider
|
|
78
|
+
access: result.access,
|
|
79
|
+
refresh: result.refresh,
|
|
80
|
+
expires: result.expires,
|
|
81
|
+
email: result.email,
|
|
82
|
+
notes: [
|
|
83
|
+
result.email
|
|
84
|
+
? `Connected as ${result.displayName ?? result.email}`
|
|
85
|
+
: "Outlook connected.",
|
|
86
|
+
"Email tools (outlook_list, outlook_send, outlook_search, etc.) are now available.",
|
|
87
|
+
"Credentials stored in ~/.symi/credentials/outlook.json",
|
|
88
|
+
],
|
|
89
|
+
});
|
|
90
|
+
} catch (err) {
|
|
91
|
+
spin.stop("Outlook OAuth failed");
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// -------------------------------------------------------------------------
|
|
100
|
+
// CLI — `symi outlook login`, `symi outlook logout`, `symi outlook status`
|
|
101
|
+
// -------------------------------------------------------------------------
|
|
102
|
+
api.registerCli(
|
|
103
|
+
({ program }) => {
|
|
104
|
+
const outlook = program.command("outlook").description("Outlook 365 email integration");
|
|
105
|
+
|
|
106
|
+
outlook
|
|
107
|
+
.command("login")
|
|
108
|
+
.description("Sign in with your Microsoft account")
|
|
109
|
+
.action(async () => {
|
|
110
|
+
const { loginOutlook: login } = await import("./src/auth.js");
|
|
111
|
+
|
|
112
|
+
const isHeadless =
|
|
113
|
+
process.platform === "linux" && !process.env.DISPLAY && !process.env.WAYLAND_DISPLAY;
|
|
114
|
+
|
|
115
|
+
const result = await login({
|
|
116
|
+
isRemote: isHeadless,
|
|
117
|
+
openUrl: async (url) => {
|
|
118
|
+
if (isHeadless) {
|
|
119
|
+
console.log("\nOpen this URL in your browser:\n");
|
|
120
|
+
console.log(url);
|
|
121
|
+
console.log("");
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const { execSync } = await import("node:child_process");
|
|
125
|
+
const cmd =
|
|
126
|
+
process.platform === "darwin"
|
|
127
|
+
? `open "${url}"`
|
|
128
|
+
: process.platform === "win32"
|
|
129
|
+
? `start "" "${url}"`
|
|
130
|
+
: `xdg-open "${url}" 2>/dev/null`;
|
|
131
|
+
try {
|
|
132
|
+
execSync(cmd, { stdio: "ignore" });
|
|
133
|
+
} catch {
|
|
134
|
+
console.log(`\nOpen this URL in your browser:\n${url}\n`);
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
prompt: async (message) => {
|
|
138
|
+
const readline = await import("node:readline");
|
|
139
|
+
const rl = readline.createInterface({
|
|
140
|
+
input: process.stdin,
|
|
141
|
+
output: process.stdout,
|
|
142
|
+
});
|
|
143
|
+
return new Promise((resolve) => {
|
|
144
|
+
rl.question(message, (answer) => {
|
|
145
|
+
rl.close();
|
|
146
|
+
resolve(answer);
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
},
|
|
150
|
+
note: async (message) => {
|
|
151
|
+
console.log(message);
|
|
152
|
+
},
|
|
153
|
+
log: (message) => console.log(message),
|
|
154
|
+
progress: {
|
|
155
|
+
update: (msg) => process.stderr.write(`\r${msg}`),
|
|
156
|
+
stop: (msg) => {
|
|
157
|
+
if (msg) process.stderr.write(`\r${msg}\n`);
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
saveCredentials({
|
|
163
|
+
access: result.access,
|
|
164
|
+
refresh: result.refresh,
|
|
165
|
+
expires: result.expires,
|
|
166
|
+
email: result.email,
|
|
167
|
+
displayName: result.displayName,
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
console.log("");
|
|
171
|
+
console.log(
|
|
172
|
+
result.email
|
|
173
|
+
? `Connected as ${result.displayName ?? result.email}`
|
|
174
|
+
: "Outlook connected.",
|
|
175
|
+
);
|
|
176
|
+
console.log("Email tools are now available to your agent.");
|
|
177
|
+
});
|
|
178
|
+
|
|
179
|
+
outlook
|
|
180
|
+
.command("logout")
|
|
181
|
+
.description("Disconnect Outlook and remove stored credentials")
|
|
182
|
+
.action(() => {
|
|
183
|
+
const removed = deleteCredentials();
|
|
184
|
+
console.log(removed ? "Outlook credentials removed." : "No credentials found.");
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
outlook
|
|
188
|
+
.command("status")
|
|
189
|
+
.description("Show Outlook connection status")
|
|
190
|
+
.action(() => {
|
|
191
|
+
const creds = loadCredentials();
|
|
192
|
+
if (!creds) {
|
|
193
|
+
console.log("Not connected. Run `symi outlook login` to sign in.");
|
|
194
|
+
return;
|
|
195
|
+
}
|
|
196
|
+
const expired = Date.now() >= creds.expires;
|
|
197
|
+
console.log(`Account: ${creds.email ?? "unknown"}`);
|
|
198
|
+
console.log(`Name: ${creds.displayName ?? "unknown"}`);
|
|
199
|
+
console.log(`Token: ${expired ? "expired (will auto-refresh)" : "valid"}`);
|
|
200
|
+
console.log(`Updated: ${creds.updatedAt ?? "unknown"}`);
|
|
201
|
+
});
|
|
202
|
+
},
|
|
203
|
+
{ commands: ["outlook"] },
|
|
204
|
+
);
|
|
205
|
+
},
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
export default outlookPlugin;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@symi/outlook",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"description": "Symi Outlook 365 email integration via Microsoft Graph API",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"devDependencies": {
|
|
8
|
+
"@symerian/symi": "workspace:*"
|
|
9
|
+
},
|
|
10
|
+
"symi": {
|
|
11
|
+
"extensions": [
|
|
12
|
+
"./index.ts"
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
}
|