@datasynx/agentic-crm 1.7.0 → 1.9.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 (44) hide show
  1. package/dist/cli.js +101 -8
  2. package/dist/cli.js.map +1 -1
  3. package/dist/daemon/worker.js +3 -3
  4. package/dist/funnel-B2mwpZE1.js +89 -0
  5. package/dist/funnel-B2mwpZE1.js.map +1 -0
  6. package/dist/funnel-CJ7fy7hG.js +2 -0
  7. package/dist/{index-DcDaz_cu.d.cts → index-BAutNcAT.d.cts} +11 -11
  8. package/dist/index-BAutNcAT.d.cts.map +1 -0
  9. package/dist/index.d.cts +11 -11
  10. package/dist/index.d.cts.map +1 -1
  11. package/dist/{knowledge-base-Cc0niBFf.js → knowledge-base-yo-BLUcB.js} +3 -1
  12. package/dist/knowledge-base-yo-BLUcB.js.map +1 -0
  13. package/dist/{login-yt9OOQQk.js → login-dc_Hqosw.js} +2 -2
  14. package/dist/{login-yt9OOQQk.js.map → login-dc_Hqosw.js.map} +1 -1
  15. package/dist/mailbox-config-BU3vib2T.js +2 -0
  16. package/dist/{mailbox-config-Dn2xTn9N.js → mailbox-config-trjLPHPG.js} +2 -2
  17. package/dist/{mailbox-config-Dn2xTn9N.js.map → mailbox-config-trjLPHPG.js.map} +1 -1
  18. package/dist/{mailbox-poll-B8dvFAXT.js → mailbox-poll-Ban7C3X0.js} +3 -3
  19. package/dist/{mailbox-poll-B8dvFAXT.js.map → mailbox-poll-Ban7C3X0.js.map} +1 -1
  20. package/dist/mcp-CdTJWTJf.d.cts.map +1 -1
  21. package/dist/mcp-CdTJWTJf.d.ts.map +1 -1
  22. package/dist/mcp.cjs +415 -137
  23. package/dist/mcp.cjs.map +1 -1
  24. package/dist/mcp.d.cts.map +1 -1
  25. package/dist/mcp.d.ts.map +1 -1
  26. package/dist/mcp.js +415 -137
  27. package/dist/mcp.js.map +1 -1
  28. package/dist/{server-BbInMUgp.js → server-DAcwmRPE.js} +195 -133
  29. package/dist/server-DAcwmRPE.js.map +1 -0
  30. package/dist/{token-resolver-D98qPOOf.js → token-resolver-CL8-CSgZ.js} +2 -2
  31. package/dist/{token-resolver-D98qPOOf.js.map → token-resolver-CL8-CSgZ.js.map} +1 -1
  32. package/dist/{token-store-B0h0USqe.js → token-store-BPDwePNT.js} +13 -2
  33. package/dist/token-store-BPDwePNT.js.map +1 -0
  34. package/dist/token-store-D3HCeXmE.js +2 -0
  35. package/dist/velocity-BtX1l5Gh.js +2 -0
  36. package/dist/velocity-C2l4cW0K.js +123 -0
  37. package/dist/velocity-C2l4cW0K.js.map +1 -0
  38. package/package.json +1 -1
  39. package/dist/index-DcDaz_cu.d.cts.map +0 -1
  40. package/dist/knowledge-base-Cc0niBFf.js.map +0 -1
  41. package/dist/mailbox-config-Bu-J1O4I.js +0 -2
  42. package/dist/server-BbInMUgp.js.map +0 -1
  43. package/dist/token-store-B0h0USqe.js.map +0 -1
  44. package/dist/token-store-CEmz8d-0.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mailbox-poll-B8dvFAXT.js","names":[],"sources":["../src/daemon/mailbox-poll.ts"],"sourcesContent":["// src/daemon/mailbox-poll.ts\n// Background polling of every configured mailbox (stored OAuth accounts +\n// optional env-configured IMAP). Each mailbox is auto-routed to customers by\n// domain. Kept separate from worker.ts so it is unit-testable.\nimport { logger } from \"../core/logger.js\";\nimport { listMailboxTokens } from \"../sync/oauth/token-store.js\";\nimport { resolveAccountConfig, imapConfigFromEnv } from \"../sync/mailbox-config.js\";\nimport {\n syncImapMailbox,\n type ImapMailboxConfig,\n type SyncImapResult,\n} from \"../sync/connectors/imap.js\";\n\nexport interface MailboxPollResult {\n accounts: number;\n synced: number;\n skipped: number;\n unrouted: number;\n errors: string[];\n}\n\nexport interface MailboxPollDeps {\n env?: NodeJS.ProcessEnv;\n listTokens?: typeof listMailboxTokens;\n resolveConfig?: typeof resolveAccountConfig;\n envConfig?: (env: NodeJS.ProcessEnv) => ImapMailboxConfig | null;\n syncFn?: (opts: {\n dataDir: string;\n config: ImapMailboxConfig;\n since: Date;\n }) => Promise<SyncImapResult>;\n}\n\n/**\n * Poll every configured mailbox once and auto-route new mail to customers.\n * Resolves a fresh access token per OAuth account (refreshing as needed) and\n * also syncs an env-configured IMAP mailbox when present. Per-account failures\n * are collected, never thrown, so one bad mailbox can't stall the daemon.\n */\nexport async function runMailboxPollCycle(\n dataDir: string,\n since: Date,\n deps: MailboxPollDeps = {}\n): Promise<MailboxPollResult> {\n const env = deps.env ?? process.env;\n const listTokens = deps.listTokens ?? listMailboxTokens;\n const resolveConfig = deps.resolveConfig ?? resolveAccountConfig;\n const envConfig = deps.envConfig ?? imapConfigFromEnv;\n const syncFn =\n deps.syncFn ??\n ((o: { dataDir: string; config: ImapMailboxConfig; since: Date }) =>\n syncImapMailbox({ dataDir: o.dataDir, config: o.config, since: o.since }));\n\n const result: MailboxPollResult = { accounts: 0, synced: 0, skipped: 0, unrouted: 0, errors: [] };\n\n // 1. Build the list of mailbox configs to poll (OAuth accounts + env IMAP).\n const configs: Array<{ label: string; config: ImapMailboxConfig }> = [];\n for (const token of listTokens(dataDir)) {\n if (token.provider !== \"gmail\" && token.provider !== \"microsoft\") continue;\n const label = `${token.provider}:${token.user}`;\n try {\n configs.push({ label, config: await resolveConfig(dataDir, label, env) });\n } catch (err) {\n result.errors.push(`${label}: ${(err as Error).message}`);\n logger.warn(\"daemon\", \"mailbox token unusable\", {\n account: label,\n error: (err as Error).message,\n });\n }\n }\n const envCfg = envConfig(env);\n if (envCfg) configs.push({ label: `imap:${envCfg.auth.user}`, config: envCfg });\n\n // 2. Sync each mailbox (auto-route).\n for (const { label, config } of configs) {\n result.accounts++;\n try {\n const r = await syncFn({ dataDir, config, since });\n result.synced += r.synced;\n result.skipped += r.skipped;\n result.unrouted += r.unrouted;\n if (r.synced > 0 || r.unrouted > 0) {\n logger.info(\"daemon\", \"mailbox polled\", {\n account: label,\n synced: r.synced,\n unrouted: r.unrouted,\n });\n }\n } catch (err) {\n result.errors.push(`${label}: ${(err as Error).message}`);\n logger.error(\"daemon\", \"mailbox poll failed\", {\n account: label,\n error: (err as Error).message,\n });\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;AAuCA,eAAsB,oBACpB,SACA,OACA,OAAwB,CAAC,GACG;CAC5B,MAAM,MAAM,KAAK,OAAO,QAAQ;CAChC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,gBAAgB,KAAK,iBAAiB;CAC5C,MAAM,YAAY,KAAK,aAAa;CACpC,MAAM,SACJ,KAAK,YACH,MACA,gBAAgB;EAAE,SAAS,EAAE;EAAS,QAAQ,EAAE;EAAQ,OAAO,EAAE;CAAM,CAAC;CAE5E,MAAM,SAA4B;EAAE,UAAU;EAAG,QAAQ;EAAG,SAAS;EAAG,UAAU;EAAG,QAAQ,CAAC;CAAE;CAGhG,MAAM,UAA+D,CAAC;CACtE,KAAK,MAAM,SAAS,WAAW,OAAO,GAAG;EACvC,IAAI,MAAM,aAAa,WAAW,MAAM,aAAa,aAAa;EAClE,MAAM,QAAQ,GAAG,MAAM,SAAS,GAAG,MAAM;EACzC,IAAI;GACF,QAAQ,KAAK;IAAE;IAAO,QAAQ,MAAM,cAAc,SAAS,OAAO,GAAG;GAAE,CAAC;EAC1E,SAAS,KAAK;GACZ,OAAO,OAAO,KAAK,GAAG,MAAM,IAAK,IAAc,SAAS;GACxD,OAAO,KAAK,UAAU,0BAA0B;IAC9C,SAAS;IACT,OAAQ,IAAc;GACxB,CAAC;EACH;CACF;CACA,MAAM,SAAS,UAAU,GAAG;CAC5B,IAAI,QAAQ,QAAQ,KAAK;EAAE,OAAO,QAAQ,OAAO,KAAK;EAAQ,QAAQ;CAAO,CAAC;CAG9E,KAAK,MAAM,EAAE,OAAO,YAAY,SAAS;EACvC,OAAO;EACP,IAAI;GACF,MAAM,IAAI,MAAM,OAAO;IAAE;IAAS;IAAQ;GAAM,CAAC;GACjD,OAAO,UAAU,EAAE;GACnB,OAAO,WAAW,EAAE;GACpB,OAAO,YAAY,EAAE;GACrB,IAAI,EAAE,SAAS,KAAK,EAAE,WAAW,GAC/B,OAAO,KAAK,UAAU,kBAAkB;IACtC,SAAS;IACT,QAAQ,EAAE;IACV,UAAU,EAAE;GACd,CAAC;EAEL,SAAS,KAAK;GACZ,OAAO,OAAO,KAAK,GAAG,MAAM,IAAK,IAAc,SAAS;GACxD,OAAO,MAAM,UAAU,uBAAuB;IAC5C,SAAS;IACT,OAAQ,IAAc;GACxB,CAAC;EACH;CACF;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"mailbox-poll-Ban7C3X0.js","names":[],"sources":["../src/daemon/mailbox-poll.ts"],"sourcesContent":["// src/daemon/mailbox-poll.ts\n// Background polling of every configured mailbox (stored OAuth accounts +\n// optional env-configured IMAP). Each mailbox is auto-routed to customers by\n// domain. Kept separate from worker.ts so it is unit-testable.\nimport { logger } from \"../core/logger.js\";\nimport { listMailboxTokens } from \"../sync/oauth/token-store.js\";\nimport { resolveAccountConfig, imapConfigFromEnv } from \"../sync/mailbox-config.js\";\nimport {\n syncImapMailbox,\n type ImapMailboxConfig,\n type SyncImapResult,\n} from \"../sync/connectors/imap.js\";\n\nexport interface MailboxPollResult {\n accounts: number;\n synced: number;\n skipped: number;\n unrouted: number;\n errors: string[];\n}\n\nexport interface MailboxPollDeps {\n env?: NodeJS.ProcessEnv;\n listTokens?: typeof listMailboxTokens;\n resolveConfig?: typeof resolveAccountConfig;\n envConfig?: (env: NodeJS.ProcessEnv) => ImapMailboxConfig | null;\n syncFn?: (opts: {\n dataDir: string;\n config: ImapMailboxConfig;\n since: Date;\n }) => Promise<SyncImapResult>;\n}\n\n/**\n * Poll every configured mailbox once and auto-route new mail to customers.\n * Resolves a fresh access token per OAuth account (refreshing as needed) and\n * also syncs an env-configured IMAP mailbox when present. Per-account failures\n * are collected, never thrown, so one bad mailbox can't stall the daemon.\n */\nexport async function runMailboxPollCycle(\n dataDir: string,\n since: Date,\n deps: MailboxPollDeps = {}\n): Promise<MailboxPollResult> {\n const env = deps.env ?? process.env;\n const listTokens = deps.listTokens ?? listMailboxTokens;\n const resolveConfig = deps.resolveConfig ?? resolveAccountConfig;\n const envConfig = deps.envConfig ?? imapConfigFromEnv;\n const syncFn =\n deps.syncFn ??\n ((o: { dataDir: string; config: ImapMailboxConfig; since: Date }) =>\n syncImapMailbox({ dataDir: o.dataDir, config: o.config, since: o.since }));\n\n const result: MailboxPollResult = { accounts: 0, synced: 0, skipped: 0, unrouted: 0, errors: [] };\n\n // 1. Build the list of mailbox configs to poll (OAuth accounts + env IMAP).\n const configs: Array<{ label: string; config: ImapMailboxConfig }> = [];\n for (const token of listTokens(dataDir)) {\n if (token.provider !== \"gmail\" && token.provider !== \"microsoft\") continue;\n const label = `${token.provider}:${token.user}`;\n try {\n configs.push({ label, config: await resolveConfig(dataDir, label, env) });\n } catch (err) {\n result.errors.push(`${label}: ${(err as Error).message}`);\n logger.warn(\"daemon\", \"mailbox token unusable\", {\n account: label,\n error: (err as Error).message,\n });\n }\n }\n const envCfg = envConfig(env);\n if (envCfg) configs.push({ label: `imap:${envCfg.auth.user}`, config: envCfg });\n\n // 2. Sync each mailbox (auto-route).\n for (const { label, config } of configs) {\n result.accounts++;\n try {\n const r = await syncFn({ dataDir, config, since });\n result.synced += r.synced;\n result.skipped += r.skipped;\n result.unrouted += r.unrouted;\n if (r.synced > 0 || r.unrouted > 0) {\n logger.info(\"daemon\", \"mailbox polled\", {\n account: label,\n synced: r.synced,\n unrouted: r.unrouted,\n });\n }\n } catch (err) {\n result.errors.push(`${label}: ${(err as Error).message}`);\n logger.error(\"daemon\", \"mailbox poll failed\", {\n account: label,\n error: (err as Error).message,\n });\n }\n }\n\n return result;\n}\n"],"mappings":";;;;;;;;;;;AAuCA,eAAsB,oBACpB,SACA,OACA,OAAwB,CAAC,GACG;CAC5B,MAAM,MAAM,KAAK,OAAO,QAAQ;CAChC,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,gBAAgB,KAAK,iBAAiB;CAC5C,MAAM,YAAY,KAAK,aAAa;CACpC,MAAM,SACJ,KAAK,YACH,MACA,gBAAgB;EAAE,SAAS,EAAE;EAAS,QAAQ,EAAE;EAAQ,OAAO,EAAE;CAAM,CAAC;CAE5E,MAAM,SAA4B;EAAE,UAAU;EAAG,QAAQ;EAAG,SAAS;EAAG,UAAU;EAAG,QAAQ,CAAC;CAAE;CAGhG,MAAM,UAA+D,CAAC;CACtE,KAAK,MAAM,SAAS,WAAW,OAAO,GAAG;EACvC,IAAI,MAAM,aAAa,WAAW,MAAM,aAAa,aAAa;EAClE,MAAM,QAAQ,GAAG,MAAM,SAAS,GAAG,MAAM;EACzC,IAAI;GACF,QAAQ,KAAK;IAAE;IAAO,QAAQ,MAAM,cAAc,SAAS,OAAO,GAAG;GAAE,CAAC;EAC1E,SAAS,KAAK;GACZ,OAAO,OAAO,KAAK,GAAG,MAAM,IAAK,IAAc,SAAS;GACxD,OAAO,KAAK,UAAU,0BAA0B;IAC9C,SAAS;IACT,OAAQ,IAAc;GACxB,CAAC;EACH;CACF;CACA,MAAM,SAAS,UAAU,GAAG;CAC5B,IAAI,QAAQ,QAAQ,KAAK;EAAE,OAAO,QAAQ,OAAO,KAAK;EAAQ,QAAQ;CAAO,CAAC;CAG9E,KAAK,MAAM,EAAE,OAAO,YAAY,SAAS;EACvC,OAAO;EACP,IAAI;GACF,MAAM,IAAI,MAAM,OAAO;IAAE;IAAS;IAAQ;GAAM,CAAC;GACjD,OAAO,UAAU,EAAE;GACnB,OAAO,WAAW,EAAE;GACpB,OAAO,YAAY,EAAE;GACrB,IAAI,EAAE,SAAS,KAAK,EAAE,WAAW,GAC/B,OAAO,KAAK,UAAU,kBAAkB;IACtC,SAAS;IACT,QAAQ,EAAE;IACV,UAAU,EAAE;GACd,CAAC;EAEL,SAAS,KAAK;GACZ,OAAO,OAAO,KAAK,GAAG,MAAM,IAAK,IAAc,SAAS;GACxD,OAAO,MAAM,UAAU,uBAAuB;IAC5C,SAAS;IACT,OAAQ,IAAc;GACxB,CAAC;EACH;CACF;CAEA,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-CdTJWTJf.d.cts","names":[],"sources":["../src/mcp/server.ts"],"mappings":";;;iBAwFgB,kBAAA;iBAWA,eAAA,CAAA,GAAmB;AAXnB,iBAmFM,UAAA,CAAA,CAnFY,EAmFE,OAnFF,CAAA,IAAA,CAAA;AAWlB,iBAkFM,SAAA,CAlFa,IAAS,CAAT,EAAS,MAAA,CAAA,EAkFE,OAlFF,CAAA,IAAA,CAAA;AAwE5C"}
1
+ {"version":3,"file":"mcp-CdTJWTJf.d.cts","names":[],"sources":["../src/mcp/server.ts"],"mappings":";;;iBA0FgB,kBAAA;iBAWA,eAAA,CAAA,GAAmB;AAXnB,iBAqFM,UAAA,CAAA,CArFY,EAqFE,OArFF,CAAA,IAAA,CAAA;AAWlB,iBAoFM,SAAA,CApFa,IAAS,CAAT,EAAS,MAAA,CAAA,EAoFE,OApFF,CAAA,IAAA,CAAA;AA0E5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-CdTJWTJf.d.ts","names":[],"sources":["../src/mcp/server.ts"],"mappings":";;;iBAwFgB,kBAAA;iBAWA,eAAA,CAAA,GAAmB;AAXnB,iBAmFM,UAAA,CAAA,CAnFY,EAmFE,OAnFF,CAAA,IAAA,CAAA;AAWlB,iBAkFM,SAAA,CAlFa,IAAS,CAAT,EAAS,MAAA,CAAA,EAkFE,OAlFF,CAAA,IAAA,CAAA;AAwE5C"}
1
+ {"version":3,"file":"mcp-CdTJWTJf.d.ts","names":[],"sources":["../src/mcp/server.ts"],"mappings":";;;iBA0FgB,kBAAA;iBAWA,eAAA,CAAA,GAAmB;AAXnB,iBAqFM,UAAA,CAAA,CArFY,EAqFE,OArFF,CAAA,IAAA,CAAA;AAWlB,iBAoFM,SAAA,CApFa,IAAS,CAAT,EAAS,MAAA,CAAA,EAoFE,OApFF,CAAA,IAAA,CAAA;AA0E5C"}