@datasynx/agentic-crm 1.3.0 → 1.4.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 (29) hide show
  1. package/README.md +10 -0
  2. package/dist/{attachments-rLa96rOK.js → attachments-BddHbCt8.js} +51 -32
  3. package/dist/{attachments-D207gXfN.js.map → attachments-BddHbCt8.js.map} +1 -1
  4. package/dist/{attachments-D207gXfN.js → attachments-Co3kXIvu.js} +46 -31
  5. package/dist/{attachments-rLa96rOK.js.map → attachments-Co3kXIvu.js.map} +1 -1
  6. package/dist/{attachments-CX2GAtsw.cjs → attachments-Dbe7Bidz.cjs} +46 -31
  7. package/dist/{attachments-CX2GAtsw.cjs.map → attachments-Dbe7Bidz.cjs.map} +1 -1
  8. package/dist/attachments-YQKYmg6N.js +2 -0
  9. package/dist/cli.js +61 -3
  10. package/dist/cli.js.map +1 -1
  11. package/dist/daemon/worker.js +1 -1
  12. package/dist/{gmail-sync-DIbrPnTK.js → gmail-sync-BHLa8v51.js} +2 -2
  13. package/dist/{gmail-sync-DIbrPnTK.js.map → gmail-sync-BHLa8v51.js.map} +1 -1
  14. package/dist/{gmail-sync-BpSVESSe.cjs → gmail-sync-CodrUNR4.cjs} +2 -2
  15. package/dist/{gmail-sync-BpSVESSe.cjs.map → gmail-sync-CodrUNR4.cjs.map} +1 -1
  16. package/dist/{gmail-sync-B4Iu3AQb.js → gmail-sync-SvECok5p.js} +2 -2
  17. package/dist/{gmail-sync-B4Iu3AQb.js.map → gmail-sync-SvECok5p.js.map} +1 -1
  18. package/dist/imap-o6PRuBvm.js +270 -0
  19. package/dist/imap-o6PRuBvm.js.map +1 -0
  20. package/dist/{index-DMTVVYwr.d.cts → index-Dspvybo0.d.cts} +22 -22
  21. package/dist/index-Dspvybo0.d.cts.map +1 -0
  22. package/dist/index.d.cts +22 -22
  23. package/dist/index.d.cts.map +1 -1
  24. package/dist/mcp.cjs +2 -2
  25. package/dist/mcp.js +2 -2
  26. package/dist/{server-BhNLrnAD.js → server-uqXUhF4H.js} +3 -3
  27. package/dist/{server-BhNLrnAD.js.map → server-uqXUhF4H.js.map} +1 -1
  28. package/package.json +4 -1
  29. package/dist/index-DMTVVYwr.d.cts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imap-o6PRuBvm.js","names":[],"sources":["../src/sync/email-ingest.ts","../src/sync/email-router.ts","../src/sync/connectors/imap.ts"],"sourcesContent":["// src/sync/email-ingest.ts\nimport { appendInteraction } from \"../fs/interactions-writer.js\";\nimport { persistAttachment, DEFAULT_MAX_ATTACHMENT_BYTES } from \"./attachments.js\";\nimport { chunkText } from \"../core/chunk.js\";\nimport { logger } from \"../core/logger.js\";\n\n/** An attachment with its bytes already in hand (no provider fetch needed). */\nexport interface NormalizedAttachment {\n filename: string;\n mimeType: string;\n content: Buffer;\n}\n\n/**\n * A provider-independent email, normalized from Gmail / IMAP / Graph into a\n * single shape so the downstream pipeline (summary, attachments→Markdown,\n * indexing, interaction log) is written once and reused everywhere.\n */\nexport interface NormalizedEmail {\n /** Stable id for dedup and as the attachment filename prefix. */\n messageId: string;\n /** Raw `From` header value (display name + address). */\n from: string;\n /** Recipient addresses (to + cc), lowercased. */\n toAddresses: string[];\n subject: string;\n /** Message date as YYYY-MM-DD. */\n date: string;\n /** Body already rendered to Markdown (plain verbatim or HTML→MD). */\n bodyMarkdown: string;\n attachments: NormalizedAttachment[];\n /** Canonical source ref, e.g. `imap://user@host/INBOX/42`. */\n sourceRef: string;\n}\n\nexport interface IngestOptions {\n includeAttachments?: boolean;\n maxAttachmentBytes?: number;\n direction?: \"inbound\" | \"outbound\";\n}\n\n/**\n * Ingest one normalized email into a customer: convert + index its\n * attachments, summarize it, append the interaction (with attachment links),\n * and index the full body (chunked) for semantic search. Caller is responsible\n * for deduplication (skip messages whose sourceRef is already logged).\n */\nexport async function ingestEmail(\n dataDir: string,\n slug: string,\n msg: NormalizedEmail,\n options: IngestOptions = {}\n): Promise<{ attachments: number; chunks: number }> {\n const includeAttachments = options.includeAttachments ?? true;\n const maxBytes = options.maxAttachmentBytes ?? DEFAULT_MAX_ATTACHMENT_BYTES;\n\n // Attachments first, so the interaction entry can link to the Markdown.\n const attachmentLinks: string[] = [];\n if (includeAttachments) {\n for (const att of msg.attachments) {\n if (att.content.length > maxBytes) {\n logger.warn(\"email-ingest\", \"skipping oversized attachment\", {\n filename: att.filename,\n bytes: att.content.length,\n });\n continue;\n }\n try {\n const saved = await persistAttachment({\n dataDir,\n slug,\n messageId: msg.messageId,\n source: msg.sourceRef,\n date: msg.date,\n filename: att.filename,\n mimeType: att.mimeType,\n buffer: att.content,\n });\n attachmentLinks.push(saved.markdownName);\n } catch (err) {\n logger.warn(\"email-ingest\", \"attachment failed\", {\n filename: att.filename,\n error: (err as Error).message,\n });\n }\n }\n }\n\n // LLM summary — non-blocking fallback to the raw body when no API key.\n const { summarizeEmail } = await import(\"../core/llm.js\");\n const summary = await summarizeEmail(msg.subject, msg.bodyMarkdown, msg.from);\n\n await appendInteraction(dataDir, slug, {\n date: msg.date,\n type: \"Email\",\n direction: options.direction ?? \"inbound\",\n with: msg.from,\n subject: msg.subject,\n summary: summary.summary,\n nextSteps: summary.nextSteps,\n ...(attachmentLinks.length > 0 ? { attachments: attachmentLinks } : {}),\n sourceRef: msg.sourceRef,\n synced: new Date().toISOString(),\n });\n\n // Index the full email (subject + body), chunked for long threads.\n const { indexInLanceDB } = await import(\"../core/lancedb.js\");\n const bodyChunks = chunkText(`${msg.subject}\\n${msg.bodyMarkdown}`);\n for (let i = 0; i < bodyChunks.length; i++) {\n const ref = i === 0 ? msg.sourceRef : `${msg.sourceRef}#${i}`;\n await indexInLanceDB(dataDir, slug, bodyChunks[i]!, ref, {\n date: msg.date,\n type: \"Email\",\n }).catch((err: unknown) => {\n logger.error(\"email-ingest\", \"LanceDB index failed\", { error: (err as Error).message });\n });\n }\n\n return { attachments: attachmentLinks.length, chunks: bodyChunks.length };\n}\n","// src/sync/email-router.ts\nimport fs from \"fs\";\nimport path from \"path\";\nimport matter from \"gray-matter\";\nimport { listCustomerSlugs } from \"../fs/customer-dir.js\";\n\nexport interface CustomerRoutingInfo {\n slug: string;\n /** Lowercased domains that identify this customer (e.g. \"acme.com\"). */\n domains: string[];\n /** Lowercased full email addresses that identify this customer. */\n emails: string[];\n}\n\n/** Extract the bare email address from a header value like `\"Name <a@b.com>\"`. */\nexport function extractEmailAddress(headerValue: string): string {\n const angle = headerValue.match(/<([^>]+)>/);\n const raw = (angle ? angle[1] : headerValue) ?? \"\";\n return raw.trim().toLowerCase();\n}\n\n/** The domain part of an email address, lowercased (empty string if malformed). */\nexport function domainOf(email: string): string {\n const at = email.lastIndexOf(\"@\");\n return at >= 0 ? email.slice(at + 1).trim().toLowerCase() : \"\";\n}\n\n/**\n * Split a header that may contain several comma-separated addresses\n * (To/Cc) into individual lowercased email addresses.\n */\nexport function parseAddressList(headerValue: string | undefined): string[] {\n if (!headerValue) return [];\n return headerValue\n .split(\",\")\n .map((part) => extractEmailAddress(part))\n .filter((a) => a.includes(\"@\"));\n}\n\n/** Read just the routing-relevant fields from a customer's main_facts (tolerant). */\nfunction readRoutingFields(\n dataDir: string,\n slug: string\n): { domain?: string | undefined; email?: string | undefined; primary_contact?: string | undefined } {\n const file = path.join(dataDir, \"customers\", slug, \"main_facts.md\");\n if (!fs.existsSync(file)) return {};\n try {\n const data = matter(fs.readFileSync(file, \"utf-8\")).data as Record<string, unknown>;\n return {\n domain: typeof data[\"domain\"] === \"string\" ? data[\"domain\"] : undefined,\n email: typeof data[\"email\"] === \"string\" ? data[\"email\"] : undefined,\n primary_contact:\n typeof data[\"primary_contact\"] === \"string\" ? data[\"primary_contact\"] : undefined,\n };\n } catch {\n return {};\n }\n}\n\n/**\n * Build the routing table from every customer's main_facts. A customer is\n * identified by its `domain`, `email`, and `primary_contact` (when it looks\n * like an email). Customers without any identifier are still listed (empty\n * arrays) so callers can see them, but they never match.\n */\nexport function buildRoutingTable(dataDir: string): CustomerRoutingInfo[] {\n return listCustomerSlugs(dataDir).map((slug) => {\n const facts = readRoutingFields(dataDir, slug);\n const domains = new Set<string>();\n const emails = new Set<string>();\n if (facts.domain) domains.add(facts.domain.trim().toLowerCase());\n for (const candidate of [facts.email, facts.primary_contact]) {\n if (candidate && candidate.includes(\"@\")) {\n const addr = candidate.trim().toLowerCase();\n emails.add(addr);\n const d = domainOf(addr);\n if (d) domains.add(d);\n }\n }\n return { slug, domains: [...domains], emails: [...emails] };\n });\n}\n\n/**\n * Route a message to a customer slug by matching any of its addresses\n * (from/to/cc) against the routing table. Exact email matches win over domain\n * matches. Returns the matched slug, or null when nothing matches (the message\n * is \"unrouted\").\n */\nexport function routeMessage(addresses: string[], table: CustomerRoutingInfo[]): string | null {\n const addrs = addresses.map((a) => a.trim().toLowerCase()).filter((a) => a.includes(\"@\"));\n if (addrs.length === 0) return null;\n const domains = new Set(addrs.map(domainOf).filter(Boolean));\n\n // Pass 1: exact email match (most specific).\n for (const c of table) {\n if (c.emails.some((e) => addrs.includes(e))) return c.slug;\n }\n // Pass 2: domain match.\n for (const c of table) {\n if (c.domains.some((d) => domains.has(d))) return c.slug;\n }\n return null;\n}\n","// src/sync/connectors/imap.ts\nimport { readInteractions } from \"../../fs/interactions-writer.js\";\nimport { ingestEmail, type NormalizedEmail } from \"../email-ingest.js\";\nimport { buildRoutingTable, routeMessage, domainOf } from \"../email-router.js\";\nimport { htmlToMarkdown } from \"../converters/html.js\";\nimport { logger } from \"../../core/logger.js\";\n\nexport interface ImapMailboxConfig {\n host: string;\n port?: number;\n secure?: boolean;\n /** Either a password (legacy IMAP) or an OAuth2 access token (XOAUTH2). */\n auth: { user: string; pass?: string; accessToken?: string };\n mailbox?: string;\n}\n\n/** Minimal slice of the ImapFlow client surface we depend on (for testability). */\nexport interface ImapMessage {\n uid: number;\n source: Buffer;\n}\nexport interface ImapClient {\n connect(): Promise<void>;\n getMailboxLock(mailbox: string): Promise<{ release: () => void }>;\n fetch(\n range: unknown,\n query: { uid?: boolean; source?: boolean }\n ): AsyncIterable<ImapMessage>;\n logout(): Promise<void>;\n}\n\nexport interface SyncImapOptions {\n dataDir: string;\n config: ImapMailboxConfig;\n since?: Date;\n /** Fixed customer slug. When omitted, messages are auto-routed by domain. */\n slug?: string;\n includeAttachments?: boolean;\n maxAttachmentBytes?: number;\n /** Inject a client (tests); defaults to a real ImapFlow connection. */\n clientFactory?: (config: ImapMailboxConfig) => ImapClient;\n}\n\nexport interface SyncImapResult {\n synced: number;\n skipped: number;\n unrouted: number;\n}\n\n/** Build a real ImapFlow client. Loaded lazily so the dep stays off hot paths. */\nasync function defaultClientFactory(config: ImapMailboxConfig): Promise<ImapClient> {\n const { ImapFlow } = await import(\"imapflow\");\n const auth = config.auth.accessToken\n ? { user: config.auth.user, accessToken: config.auth.accessToken }\n : { user: config.auth.user, pass: config.auth.pass ?? \"\" };\n return new ImapFlow({\n host: config.host,\n port: config.port ?? 993,\n secure: config.secure ?? true,\n auth,\n logger: false,\n }) as unknown as ImapClient;\n}\n\n/** Fields extracted from a parsed message, decoupled from mailparser's types. */\nexport interface ParsedEmailInput {\n messageId?: string | undefined;\n fromText?: string | undefined;\n toAddresses?: string[] | undefined;\n subject?: string | undefined;\n date?: Date | undefined;\n text?: string | undefined;\n html?: string | false | undefined;\n attachments?:\n | Array<{ filename?: string | undefined; contentType?: string | undefined; content: Buffer }>\n | undefined;\n}\n\n/** Normalize extracted email fields into the provider-independent email shape. */\nexport async function normalizeParsedEmail(\n parsed: ParsedEmailInput,\n ctx: { user: string; host: string; mailbox: string; uid: number }\n): Promise<NormalizedEmail> {\n const toAddresses = (parsed.toAddresses ?? [])\n .map((a) => a.toLowerCase())\n .filter((a) => a.includes(\"@\"));\n\n const plain = (parsed.text ?? \"\").trim();\n const bodyMarkdown = plain\n ? plain\n : parsed.html\n ? (await htmlToMarkdown(parsed.html)).trim()\n : \"\";\n\n const rawId = (parsed.messageId ?? \"\").replace(/[<>]/g, \"\").trim();\n const messageId = rawId || `uid-${ctx.uid}`;\n\n return {\n messageId,\n from: parsed.fromText ?? \"\",\n toAddresses,\n subject: parsed.subject ?? \"(no subject)\",\n date: (parsed.date ?? new Date()).toISOString().slice(0, 10),\n bodyMarkdown,\n attachments: (parsed.attachments ?? [])\n .filter((a) => a.filename)\n .map((a) => ({\n filename: a.filename!,\n mimeType: a.contentType ?? \"application/octet-stream\",\n content: a.content,\n })),\n sourceRef: `imap://${ctx.user}@${ctx.host}/${ctx.mailbox}/${ctx.uid}`,\n };\n}\n\n/** Flatten mailparser's AddressObject | AddressObject[] | undefined to addresses. */\nfunction flattenAddresses(\n field:\n | { value?: Array<{ address?: string | undefined }> }\n | Array<{ value?: Array<{ address?: string | undefined }> }>\n | undefined\n): string[] {\n if (!field) return [];\n const objects = Array.isArray(field) ? field : [field];\n return objects\n .flatMap((o) => o.value ?? [])\n .map((a) => (a.address ?? \"\").toLowerCase())\n .filter((a) => a.includes(\"@\"));\n}\n\n/**\n * Sync a whole IMAP mailbox (any provider). Each message is parsed, routed to a\n * customer — by a fixed `slug` or auto-routed by sender/recipient domain — and\n * ingested through the shared pipeline (attachments→Markdown, summary, index).\n * Messages that match no customer are counted as `unrouted` and skipped.\n */\nexport async function syncImapMailbox(opts: SyncImapOptions): Promise<SyncImapResult> {\n const result: SyncImapResult = { synced: 0, skipped: 0, unrouted: 0 };\n const mailbox = opts.config.mailbox ?? \"INBOX\";\n const { simpleParser } = await import(\"mailparser\");\n\n const client = opts.clientFactory\n ? opts.clientFactory(opts.config)\n : await defaultClientFactory(opts.config);\n\n // Routing table (auto-route mode) + per-slug dedup cache.\n const table = opts.slug ? null : buildRoutingTable(opts.dataDir);\n const dedupCache = new Map<string, string>();\n const seen = async (slug: string, sourceRef: string): Promise<boolean> => {\n let content = dedupCache.get(slug);\n if (content === undefined) {\n content = await readInteractions(opts.dataDir, slug).catch(() => \"\");\n dedupCache.set(slug, content);\n }\n return content.includes(sourceRef);\n };\n\n await client.connect();\n const lock = await client.getMailboxLock(mailbox);\n try {\n const range = opts.since ? { since: opts.since } : { all: true };\n for await (const message of client.fetch(range, { uid: true, source: true })) {\n try {\n const parsed = await simpleParser(message.source);\n const msg = await normalizeParsedEmail(\n {\n messageId: parsed.messageId,\n fromText: parsed.from?.text,\n toAddresses: [...flattenAddresses(parsed.to), ...flattenAddresses(parsed.cc)],\n subject: parsed.subject,\n date: parsed.date,\n text: parsed.text,\n html: parsed.html,\n attachments: parsed.attachments,\n },\n {\n user: opts.config.auth.user,\n host: opts.config.host,\n mailbox,\n uid: message.uid,\n }\n );\n\n // Route: fixed slug, or auto-route by any from/to/cc domain.\n let slug = opts.slug ?? null;\n if (!slug && table) {\n const fromAddr = (msg.from.match(/<([^>]+)>/)?.[1] ?? msg.from).toLowerCase();\n const addresses = [fromAddr, ...msg.toAddresses].filter((a) => domainOf(a));\n slug = routeMessage(addresses, table);\n }\n if (!slug) {\n result.unrouted++;\n continue;\n }\n\n if (await seen(slug, msg.sourceRef)) {\n result.skipped++;\n continue;\n }\n\n await ingestEmail(opts.dataDir, slug, msg, {\n ...(opts.includeAttachments !== undefined\n ? { includeAttachments: opts.includeAttachments }\n : {}),\n ...(opts.maxAttachmentBytes !== undefined\n ? { maxAttachmentBytes: opts.maxAttachmentBytes }\n : {}),\n direction: directionFor(msg, opts.config.auth.user),\n });\n dedupCache.set(slug, (dedupCache.get(slug) ?? \"\") + msg.sourceRef);\n result.synced++;\n } catch (err) {\n logger.warn(\"imap-sync\", \"message failed\", {\n uid: message.uid,\n error: (err as Error).message,\n });\n result.skipped++;\n }\n }\n } finally {\n lock.release();\n await client.logout().catch(() => undefined);\n }\n\n return result;\n}\n\n/** Inbound unless the mailbox owner is the sender. */\nfunction directionFor(msg: NormalizedEmail, user: string): \"inbound\" | \"outbound\" {\n const fromAddr = (msg.from.match(/<([^>]+)>/)?.[1] ?? msg.from).toLowerCase();\n return fromAddr === user.toLowerCase() ? \"outbound\" : \"inbound\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;AA+CA,eAAsB,YACpB,SACA,MACA,KACA,UAAyB,CAAC,GACwB;CAClD,MAAM,qBAAqB,QAAQ,sBAAsB;CACzD,MAAM,WAAW,QAAQ,sBAAA;CAGzB,MAAM,kBAA4B,CAAC;CACnC,IAAI,oBACF,KAAK,MAAM,OAAO,IAAI,aAAa;EACjC,IAAI,IAAI,QAAQ,SAAS,UAAU;GACjC,OAAO,KAAK,gBAAgB,iCAAiC;IAC3D,UAAU,IAAI;IACd,OAAO,IAAI,QAAQ;GACrB,CAAC;GACD;EACF;EACA,IAAI;GACF,MAAM,QAAQ,MAAM,kBAAkB;IACpC;IACA;IACA,WAAW,IAAI;IACf,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,UAAU,IAAI;IACd,UAAU,IAAI;IACd,QAAQ,IAAI;GACd,CAAC;GACD,gBAAgB,KAAK,MAAM,YAAY;EACzC,SAAS,KAAK;GACZ,OAAO,KAAK,gBAAgB,qBAAqB;IAC/C,UAAU,IAAI;IACd,OAAQ,IAAc;GACxB,CAAC;EACH;CACF;CAIF,MAAM,EAAE,mBAAmB,MAAM,OAAO;CACxC,MAAM,UAAU,MAAM,eAAe,IAAI,SAAS,IAAI,cAAc,IAAI,IAAI;CAE5E,MAAM,kBAAkB,SAAS,MAAM;EACrC,MAAM,IAAI;EACV,MAAM;EACN,WAAW,QAAQ,aAAa;EAChC,MAAM,IAAI;EACV,SAAS,IAAI;EACb,SAAS,QAAQ;EACjB,WAAW,QAAQ;EACnB,GAAI,gBAAgB,SAAS,IAAI,EAAE,aAAa,gBAAgB,IAAI,CAAC;EACrE,WAAW,IAAI;EACf,yBAAQ,IAAI,KAAK,GAAE,YAAY;CACjC,CAAC;CAGD,MAAM,EAAE,mBAAmB,MAAM,OAAO;CACxC,MAAM,aAAa,UAAU,GAAG,IAAI,QAAQ,IAAI,IAAI,cAAc;CAClE,KAAK,IAAI,IAAI,GAAG,IAAI,WAAW,QAAQ,KAAK;EAC1C,MAAM,MAAM,MAAM,IAAI,IAAI,YAAY,GAAG,IAAI,UAAU,GAAG;EAC1D,MAAM,eAAe,SAAS,MAAM,WAAW,IAAK,KAAK;GACvD,MAAM,IAAI;GACV,MAAM;EACR,CAAC,EAAE,OAAO,QAAiB;GACzB,OAAO,MAAM,gBAAgB,wBAAwB,EAAE,OAAQ,IAAc,QAAQ,CAAC;EACxF,CAAC;CACH;CAEA,OAAO;EAAE,aAAa,gBAAgB;EAAQ,QAAQ,WAAW;CAAO;AAC1E;;;;ACjGA,SAAgB,SAAS,OAAuB;CAC9C,MAAM,KAAK,MAAM,YAAY,GAAG;CAChC,OAAO,MAAM,IAAI,MAAM,MAAM,KAAK,CAAC,EAAE,KAAK,EAAE,YAAY,IAAI;AAC9D;;AAeA,SAAS,kBACP,SACA,MACmG;CACnG,MAAM,OAAO,KAAK,KAAK,SAAS,aAAa,MAAM,eAAe;CAClE,IAAI,CAAC,GAAG,WAAW,IAAI,GAAG,OAAO,CAAC;CAClC,IAAI;EACF,MAAM,OAAO,OAAO,GAAG,aAAa,MAAM,OAAO,CAAC,EAAE;EACpD,OAAO;GACL,QAAQ,OAAO,KAAK,cAAc,WAAW,KAAK,YAAY,KAAA;GAC9D,OAAO,OAAO,KAAK,aAAa,WAAW,KAAK,WAAW,KAAA;GAC3D,iBACE,OAAO,KAAK,uBAAuB,WAAW,KAAK,qBAAqB,KAAA;EAC5E;CACF,QAAQ;EACN,OAAO,CAAC;CACV;AACF;;;;;;;AAQA,SAAgB,kBAAkB,SAAwC;CACxE,OAAO,kBAAkB,OAAO,EAAE,KAAK,SAAS;EAC9C,MAAM,QAAQ,kBAAkB,SAAS,IAAI;EAC7C,MAAM,0BAAU,IAAI,IAAY;EAChC,MAAM,yBAAS,IAAI,IAAY;EAC/B,IAAI,MAAM,QAAQ,QAAQ,IAAI,MAAM,OAAO,KAAK,EAAE,YAAY,CAAC;EAC/D,KAAK,MAAM,aAAa,CAAC,MAAM,OAAO,MAAM,eAAe,GACzD,IAAI,aAAa,UAAU,SAAS,GAAG,GAAG;GACxC,MAAM,OAAO,UAAU,KAAK,EAAE,YAAY;GAC1C,OAAO,IAAI,IAAI;GACf,MAAM,IAAI,SAAS,IAAI;GACvB,IAAI,GAAG,QAAQ,IAAI,CAAC;EACtB;EAEF,OAAO;GAAE;GAAM,SAAS,CAAC,GAAG,OAAO;GAAG,QAAQ,CAAC,GAAG,MAAM;EAAE;CAC5D,CAAC;AACH;;;;;;;AAQA,SAAgB,aAAa,WAAqB,OAA6C;CAC7F,MAAM,QAAQ,UAAU,KAAK,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,QAAQ,MAAM,EAAE,SAAS,GAAG,CAAC;CACxF,IAAI,MAAM,WAAW,GAAG,OAAO;CAC/B,MAAM,UAAU,IAAI,IAAI,MAAM,IAAI,QAAQ,EAAE,OAAO,OAAO,CAAC;CAG3D,KAAK,MAAM,KAAK,OACd,IAAI,EAAE,OAAO,MAAM,MAAM,MAAM,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE;CAGxD,KAAK,MAAM,KAAK,OACd,IAAI,EAAE,QAAQ,MAAM,MAAM,QAAQ,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE;CAEtD,OAAO;AACT;;;;ACrDA,eAAe,qBAAqB,QAAgD;CAClF,MAAM,EAAE,aAAa,MAAM,OAAO;CAClC,MAAM,OAAO,OAAO,KAAK,cACrB;EAAE,MAAM,OAAO,KAAK;EAAM,aAAa,OAAO,KAAK;CAAY,IAC/D;EAAE,MAAM,OAAO,KAAK;EAAM,MAAM,OAAO,KAAK,QAAQ;CAAG;CAC3D,OAAO,IAAI,SAAS;EAClB,MAAM,OAAO;EACb,MAAM,OAAO,QAAQ;EACrB,QAAQ,OAAO,UAAU;EACzB;EACA,QAAQ;CACV,CAAC;AACH;;AAiBA,eAAsB,qBACpB,QACA,KAC0B;CAC1B,MAAM,eAAe,OAAO,eAAe,CAAC,GACzC,KAAK,MAAM,EAAE,YAAY,CAAC,EAC1B,QAAQ,MAAM,EAAE,SAAS,GAAG,CAAC;CAEhC,MAAM,SAAS,OAAO,QAAQ,IAAI,KAAK;CACvC,MAAM,eAAe,QACjB,QACA,OAAO,QACJ,MAAM,eAAe,OAAO,IAAI,GAAG,KAAK,IACzC;CAKN,OAAO;EACL,YAJa,OAAO,aAAa,IAAI,QAAQ,SAAS,EAAE,EAAE,KACtC,KAAK,OAAO,IAAI;EAIpC,MAAM,OAAO,YAAY;EACzB;EACA,SAAS,OAAO,WAAW;EAC3B,OAAO,OAAO,wBAAQ,IAAI,KAAK,GAAG,YAAY,EAAE,MAAM,GAAG,EAAE;EAC3D;EACA,cAAc,OAAO,eAAe,CAAC,GAClC,QAAQ,MAAM,EAAE,QAAQ,EACxB,KAAK,OAAO;GACX,UAAU,EAAE;GACZ,UAAU,EAAE,eAAe;GAC3B,SAAS,EAAE;EACb,EAAE;EACJ,WAAW,UAAU,IAAI,KAAK,GAAG,IAAI,KAAK,GAAG,IAAI,QAAQ,GAAG,IAAI;CAClE;AACF;;AAGA,SAAS,iBACP,OAIU;CACV,IAAI,CAAC,OAAO,OAAO,CAAC;CAEpB,QADgB,MAAM,QAAQ,KAAK,IAAI,QAAQ,CAAC,KAAK,GAElD,SAAS,MAAM,EAAE,SAAS,CAAC,CAAC,EAC5B,KAAK,OAAO,EAAE,WAAW,IAAI,YAAY,CAAC,EAC1C,QAAQ,MAAM,EAAE,SAAS,GAAG,CAAC;AAClC;;;;;;;AAQA,eAAsB,gBAAgB,MAAgD;CACpF,MAAM,SAAyB;EAAE,QAAQ;EAAG,SAAS;EAAG,UAAU;CAAE;CACpE,MAAM,UAAU,KAAK,OAAO,WAAW;CACvC,MAAM,EAAE,iBAAiB,MAAM,OAAO;CAEtC,MAAM,SAAS,KAAK,gBAChB,KAAK,cAAc,KAAK,MAAM,IAC9B,MAAM,qBAAqB,KAAK,MAAM;CAG1C,MAAM,QAAQ,KAAK,OAAO,OAAO,kBAAkB,KAAK,OAAO;CAC/D,MAAM,6BAAa,IAAI,IAAoB;CAC3C,MAAM,OAAO,OAAO,MAAc,cAAwC;EACxE,IAAI,UAAU,WAAW,IAAI,IAAI;EACjC,IAAI,YAAY,KAAA,GAAW;GACzB,UAAU,MAAM,iBAAiB,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE;GACnE,WAAW,IAAI,MAAM,OAAO;EAC9B;EACA,OAAO,QAAQ,SAAS,SAAS;CACnC;CAEA,MAAM,OAAO,QAAQ;CACrB,MAAM,OAAO,MAAM,OAAO,eAAe,OAAO;CAChD,IAAI;EACF,MAAM,QAAQ,KAAK,QAAQ,EAAE,OAAO,KAAK,MAAM,IAAI,EAAE,KAAK,KAAK;EAC/D,WAAW,MAAM,WAAW,OAAO,MAAM,OAAO;GAAE,KAAK;GAAM,QAAQ;EAAK,CAAC,GACzE,IAAI;GACF,MAAM,SAAS,MAAM,aAAa,QAAQ,MAAM;GAChD,MAAM,MAAM,MAAM,qBAChB;IACE,WAAW,OAAO;IAClB,UAAU,OAAO,MAAM;IACvB,aAAa,CAAC,GAAG,iBAAiB,OAAO,EAAE,GAAG,GAAG,iBAAiB,OAAO,EAAE,CAAC;IAC5E,SAAS,OAAO;IAChB,MAAM,OAAO;IACb,MAAM,OAAO;IACb,MAAM,OAAO;IACb,aAAa,OAAO;GACtB,GACA;IACE,MAAM,KAAK,OAAO,KAAK;IACvB,MAAM,KAAK,OAAO;IAClB;IACA,KAAK,QAAQ;GACf,CACF;GAGA,IAAI,OAAO,KAAK,QAAQ;GACxB,IAAI,CAAC,QAAQ,OAGX,OAAO,aADW,EADA,IAAI,KAAK,MAAM,WAAW,IAAI,MAAM,IAAI,MAAM,YACtC,GAAG,GAAG,IAAI,WAAW,EAAE,QAAQ,MAAM,SAAS,CAAC,CAC7C,GAAG,KAAK;GAEtC,IAAI,CAAC,MAAM;IACT,OAAO;IACP;GACF;GAEA,IAAI,MAAM,KAAK,MAAM,IAAI,SAAS,GAAG;IACnC,OAAO;IACP;GACF;GAEA,MAAM,YAAY,KAAK,SAAS,MAAM,KAAK;IACzC,GAAI,KAAK,uBAAuB,KAAA,IAC5B,EAAE,oBAAoB,KAAK,mBAAmB,IAC9C,CAAC;IACL,GAAI,KAAK,uBAAuB,KAAA,IAC5B,EAAE,oBAAoB,KAAK,mBAAmB,IAC9C,CAAC;IACL,WAAW,aAAa,KAAK,KAAK,OAAO,KAAK,IAAI;GACpD,CAAC;GACD,WAAW,IAAI,OAAO,WAAW,IAAI,IAAI,KAAK,MAAM,IAAI,SAAS;GACjE,OAAO;EACT,SAAS,KAAK;GACZ,OAAO,KAAK,aAAa,kBAAkB;IACzC,KAAK,QAAQ;IACb,OAAQ,IAAc;GACxB,CAAC;GACD,OAAO;EACT;CAEJ,UAAU;EACR,KAAK,QAAQ;EACb,MAAM,OAAO,OAAO,EAAE,YAAY,KAAA,CAAS;CAC7C;CAEA,OAAO;AACT;;AAGA,SAAS,aAAa,KAAsB,MAAsC;CAEhF,QADkB,IAAI,KAAK,MAAM,WAAW,IAAI,MAAM,IAAI,MAAM,YAClD,MAAM,KAAK,YAAY,IAAI,aAAa;AACxD"}
@@ -42,8 +42,8 @@ declare const GlobalSourcesSchema: z.ZodObject<{
42
42
  version: z.ZodDefault<z.ZodNumber>;
43
43
  created: z.ZodString;
44
44
  }, "strip", z.ZodTypeAny, {
45
- version: number;
46
45
  created: string;
46
+ version: number;
47
47
  gmail?: {
48
48
  type: "gmail";
49
49
  query: string;
@@ -95,12 +95,12 @@ declare const MainFactsSchema: z.ZodObject<{
95
95
  created: z.ZodEffects<z.ZodString, string, unknown>;
96
96
  updated: z.ZodEffects<z.ZodString, string, unknown>;
97
97
  }, "strip", z.ZodTypeAny, {
98
- tags: string[];
99
- created: string;
100
98
  name: string;
99
+ relationship_stage: "prospect" | "active" | "churned" | "paused";
101
100
  currency: string;
101
+ tags: string[];
102
+ created: string;
102
103
  updated: string;
103
- relationship_stage: "prospect" | "active" | "churned" | "paused";
104
104
  domain?: string | undefined;
105
105
  email?: string | undefined;
106
106
  phone?: string | undefined;
@@ -111,17 +111,17 @@ declare const MainFactsSchema: z.ZodObject<{
111
111
  }, {
112
112
  name: string;
113
113
  relationship_stage: "prospect" | "active" | "churned" | "paused";
114
- tags?: string[] | undefined;
115
- created?: unknown;
116
- currency?: string | undefined;
117
- updated?: unknown;
118
114
  domain?: string | undefined;
119
115
  email?: string | undefined;
120
116
  phone?: string | undefined;
121
117
  industry?: string | undefined;
122
118
  deal_value?: number | undefined;
119
+ currency?: string | undefined;
123
120
  primary_contact?: string | undefined;
124
121
  timezone?: string | undefined;
122
+ tags?: string[] | undefined;
123
+ created?: unknown;
124
+ updated?: unknown;
125
125
  }>;
126
126
  type MainFacts = z.infer<typeof MainFactsSchema>;
127
127
  //# sourceMappingURL=main-facts.d.ts.map
@@ -140,8 +140,8 @@ declare const InteractionEntrySchema: z.ZodObject<{
140
140
  sourceRef: z.ZodString;
141
141
  synced: z.ZodString;
142
142
  }, "strip", z.ZodTypeAny, {
143
- date: string;
144
143
  type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
144
+ date: string;
145
145
  with: string;
146
146
  summary: string;
147
147
  nextSteps: string[];
@@ -151,8 +151,8 @@ declare const InteractionEntrySchema: z.ZodObject<{
151
151
  subject?: string | undefined;
152
152
  attachments?: string[] | undefined;
153
153
  }, {
154
- date: string;
155
154
  type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
155
+ date: string;
156
156
  with: string;
157
157
  summary: string;
158
158
  sourceRef: string;
@@ -177,17 +177,17 @@ declare const PipelineDealSchema: z.ZodObject<{
177
177
  updated: z.ZodString;
178
178
  }, "strip", z.ZodTypeAny, {
179
179
  name: string;
180
- stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
181
180
  currency: string;
182
181
  updated: string;
182
+ stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
183
183
  value?: number | undefined;
184
184
  probability?: number | undefined;
185
185
  close_date?: string | undefined;
186
186
  notes?: string | undefined;
187
187
  }, {
188
188
  name: string;
189
- stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
190
189
  updated: string;
190
+ stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
191
191
  value?: number | undefined;
192
192
  currency?: string | undefined;
193
193
  probability?: number | undefined;
@@ -212,9 +212,9 @@ declare const TicketSchema: z.ZodObject<{
212
212
  description: z.ZodOptional<z.ZodString>;
213
213
  }, "strip", z.ZodTypeAny, {
214
214
  status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
215
+ created: string;
215
216
  id: string;
216
217
  title: string;
217
- created: string;
218
218
  priority: "urgent" | "high" | "normal" | "low";
219
219
  resolved?: string | undefined;
220
220
  assignee?: string | undefined;
@@ -222,9 +222,9 @@ declare const TicketSchema: z.ZodObject<{
222
222
  description?: string | undefined;
223
223
  }, {
224
224
  status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
225
+ created: string;
225
226
  id: string;
226
227
  title: string;
227
- created: string;
228
228
  resolved?: string | undefined;
229
229
  priority?: "urgent" | "high" | "normal" | "low" | undefined;
230
230
  assignee?: string | undefined;
@@ -287,8 +287,8 @@ declare const QuoteSchema: z.ZodObject<{
287
287
  htmlPath: z.ZodOptional<z.ZodString>;
288
288
  }, "strip", z.ZodTypeAny, {
289
289
  status: "draft" | "sent" | "viewed" | "accepted" | "declined";
290
- createdAt: string;
291
290
  currency: string;
291
+ createdAt: string;
292
292
  slug: string;
293
293
  total: number;
294
294
  quoteNumber: string;
@@ -345,21 +345,21 @@ declare const KbArticleSchema: z.ZodObject<{
345
345
  updatedAt: z.ZodString;
346
346
  sourceTicketId: z.ZodOptional<z.ZodString>;
347
347
  }, "strip", z.ZodTypeAny, {
348
+ tags: string[];
348
349
  id: string;
350
+ createdAt: string;
349
351
  title: string;
350
352
  category: string;
351
- tags: string[];
352
353
  public: boolean;
353
- createdAt: string;
354
354
  updatedAt: string;
355
355
  sourceTicketId?: string | undefined;
356
356
  }, {
357
357
  id: string;
358
- title: string;
359
358
  createdAt: string;
359
+ title: string;
360
360
  updatedAt: string;
361
- category?: string | undefined;
362
361
  tags?: string[] | undefined;
362
+ category?: string | undefined;
363
363
  public?: boolean | undefined;
364
364
  sourceTicketId?: string | undefined;
365
365
  }>;
@@ -390,18 +390,18 @@ declare const SurveyDefinitionSchema: z.ZodObject<{
390
390
  }, "strip", z.ZodTypeAny, {
391
391
  type: "nps" | "csat" | "ces";
392
392
  id: string;
393
- createdAt: string;
394
393
  question: string;
395
394
  scale: {
396
395
  min: number;
397
396
  max: number;
398
397
  };
399
398
  includeComment: boolean;
399
+ createdAt: string;
400
400
  commentPrompt?: string | undefined;
401
401
  }, {
402
402
  id: string;
403
- createdAt: string;
404
403
  question: string;
404
+ createdAt: string;
405
405
  type?: "nps" | "csat" | "ces" | undefined;
406
406
  scale?: {
407
407
  min?: number | undefined;
@@ -543,4 +543,4 @@ declare const VERSION = "0.1.0";
543
543
 
544
544
  //#endregion
545
545
  export { type GlobalSources, type InteractionEntry, type KbArticle, type MainFacts, type PipelineDeal, type QuoteLineItem, type Quote as QuoteRecord, type SurveyDefinition, type SurveyResponse, type TicketPriority, type Ticket as TicketRecord, type TicketStatus, VERSION, canSeeCustomer, clearSession, createCustomer, customerExists, filterAuditLog, getRbacConfig, getRole, getSession, readAuditLog, readMainFacts, runAudit, runBackup, runValidate, setSession };
546
- //# sourceMappingURL=index-DMTVVYwr.d.cts.map
546
+ //# sourceMappingURL=index-Dspvybo0.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Dspvybo0.d.cts","names":[],"sources":["../src/schemas/sources.ts","../src/schemas/main-facts.ts","../src/schemas/interaction.ts","../src/schemas/pipeline.ts","../src/schemas/ticket.ts","../src/schemas/quote.ts","../src/schemas/kb-article.ts","../src/schemas/survey.ts","../src/commands/create.ts","../src/commands/backup.ts","../src/commands/audit.ts","../src/commands/validate.ts","../src/fs/customer-dir.ts","../src/fs/audit-log.ts","../src/core/rbac.ts","../src/core/session-store.ts","../src/version.ts"],"mappings":"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"}
package/dist/index.d.cts CHANGED
@@ -42,8 +42,8 @@ declare const GlobalSourcesSchema: z.ZodObject<{
42
42
  version: z.ZodDefault<z.ZodNumber>;
43
43
  created: z.ZodString;
44
44
  }, "strip", z.ZodTypeAny, {
45
- version: number;
46
45
  created: string;
46
+ version: number;
47
47
  gmail?: {
48
48
  type: "gmail";
49
49
  query: string;
@@ -95,12 +95,12 @@ declare const MainFactsSchema: z.ZodObject<{
95
95
  created: z.ZodEffects<z.ZodString, string, unknown>;
96
96
  updated: z.ZodEffects<z.ZodString, string, unknown>;
97
97
  }, "strip", z.ZodTypeAny, {
98
- tags: string[];
99
- created: string;
100
98
  name: string;
99
+ relationship_stage: "prospect" | "active" | "churned" | "paused";
101
100
  currency: string;
101
+ tags: string[];
102
+ created: string;
102
103
  updated: string;
103
- relationship_stage: "prospect" | "active" | "churned" | "paused";
104
104
  domain?: string | undefined;
105
105
  email?: string | undefined;
106
106
  phone?: string | undefined;
@@ -111,17 +111,17 @@ declare const MainFactsSchema: z.ZodObject<{
111
111
  }, {
112
112
  name: string;
113
113
  relationship_stage: "prospect" | "active" | "churned" | "paused";
114
- tags?: string[] | undefined;
115
- created?: unknown;
116
- currency?: string | undefined;
117
- updated?: unknown;
118
114
  domain?: string | undefined;
119
115
  email?: string | undefined;
120
116
  phone?: string | undefined;
121
117
  industry?: string | undefined;
122
118
  deal_value?: number | undefined;
119
+ currency?: string | undefined;
123
120
  primary_contact?: string | undefined;
124
121
  timezone?: string | undefined;
122
+ tags?: string[] | undefined;
123
+ created?: unknown;
124
+ updated?: unknown;
125
125
  }>;
126
126
  type MainFacts = z.infer<typeof MainFactsSchema>;
127
127
  //# sourceMappingURL=main-facts.d.ts.map
@@ -140,8 +140,8 @@ declare const InteractionEntrySchema: z.ZodObject<{
140
140
  sourceRef: z.ZodString;
141
141
  synced: z.ZodString;
142
142
  }, "strip", z.ZodTypeAny, {
143
- date: string;
144
143
  type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
144
+ date: string;
145
145
  with: string;
146
146
  summary: string;
147
147
  nextSteps: string[];
@@ -151,8 +151,8 @@ declare const InteractionEntrySchema: z.ZodObject<{
151
151
  subject?: string | undefined;
152
152
  attachments?: string[] | undefined;
153
153
  }, {
154
- date: string;
155
154
  type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
155
+ date: string;
156
156
  with: string;
157
157
  summary: string;
158
158
  sourceRef: string;
@@ -177,17 +177,17 @@ declare const PipelineDealSchema: z.ZodObject<{
177
177
  updated: z.ZodString;
178
178
  }, "strip", z.ZodTypeAny, {
179
179
  name: string;
180
- stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
181
180
  currency: string;
182
181
  updated: string;
182
+ stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
183
183
  value?: number | undefined;
184
184
  probability?: number | undefined;
185
185
  close_date?: string | undefined;
186
186
  notes?: string | undefined;
187
187
  }, {
188
188
  name: string;
189
- stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
190
189
  updated: string;
190
+ stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
191
191
  value?: number | undefined;
192
192
  currency?: string | undefined;
193
193
  probability?: number | undefined;
@@ -212,9 +212,9 @@ declare const TicketSchema: z.ZodObject<{
212
212
  description: z.ZodOptional<z.ZodString>;
213
213
  }, "strip", z.ZodTypeAny, {
214
214
  status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
215
+ created: string;
215
216
  id: string;
216
217
  title: string;
217
- created: string;
218
218
  priority: "urgent" | "high" | "normal" | "low";
219
219
  resolved?: string | undefined;
220
220
  assignee?: string | undefined;
@@ -222,9 +222,9 @@ declare const TicketSchema: z.ZodObject<{
222
222
  description?: string | undefined;
223
223
  }, {
224
224
  status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
225
+ created: string;
225
226
  id: string;
226
227
  title: string;
227
- created: string;
228
228
  resolved?: string | undefined;
229
229
  priority?: "urgent" | "high" | "normal" | "low" | undefined;
230
230
  assignee?: string | undefined;
@@ -287,8 +287,8 @@ declare const QuoteSchema: z.ZodObject<{
287
287
  htmlPath: z.ZodOptional<z.ZodString>;
288
288
  }, "strip", z.ZodTypeAny, {
289
289
  status: "draft" | "sent" | "viewed" | "accepted" | "declined";
290
- createdAt: string;
291
290
  currency: string;
291
+ createdAt: string;
292
292
  slug: string;
293
293
  total: number;
294
294
  quoteNumber: string;
@@ -345,21 +345,21 @@ declare const KbArticleSchema: z.ZodObject<{
345
345
  updatedAt: z.ZodString;
346
346
  sourceTicketId: z.ZodOptional<z.ZodString>;
347
347
  }, "strip", z.ZodTypeAny, {
348
+ tags: string[];
348
349
  id: string;
350
+ createdAt: string;
349
351
  title: string;
350
352
  category: string;
351
- tags: string[];
352
353
  public: boolean;
353
- createdAt: string;
354
354
  updatedAt: string;
355
355
  sourceTicketId?: string | undefined;
356
356
  }, {
357
357
  id: string;
358
- title: string;
359
358
  createdAt: string;
359
+ title: string;
360
360
  updatedAt: string;
361
- category?: string | undefined;
362
361
  tags?: string[] | undefined;
362
+ category?: string | undefined;
363
363
  public?: boolean | undefined;
364
364
  sourceTicketId?: string | undefined;
365
365
  }>;
@@ -390,18 +390,18 @@ declare const SurveyDefinitionSchema: z.ZodObject<{
390
390
  }, "strip", z.ZodTypeAny, {
391
391
  type: "nps" | "csat" | "ces";
392
392
  id: string;
393
- createdAt: string;
394
393
  question: string;
395
394
  scale: {
396
395
  min: number;
397
396
  max: number;
398
397
  };
399
398
  includeComment: boolean;
399
+ createdAt: string;
400
400
  commentPrompt?: string | undefined;
401
401
  }, {
402
402
  id: string;
403
- createdAt: string;
404
403
  question: string;
404
+ createdAt: string;
405
405
  type?: "nps" | "csat" | "ces" | undefined;
406
406
  scale?: {
407
407
  min?: number | undefined;
@@ -543,4 +543,4 @@ declare const VERSION = "0.1.0";
543
543
 
544
544
  //#endregion
545
545
  export { type GlobalSources, type InteractionEntry, type KbArticle, type MainFacts, type PipelineDeal, type QuoteLineItem, type Quote as QuoteRecord, type SurveyDefinition, type SurveyResponse, type TicketPriority, type Ticket as TicketRecord, type TicketStatus, VERSION, canSeeCustomer, clearSession, createCustomer, customerExists, filterAuditLog, getRbacConfig, getRole, getSession, readAuditLog, readMainFacts, runAudit, runBackup, runValidate, setSession };
546
- //# sourceMappingURL=index-DMTVVYwr.d.cts.map
546
+ //# sourceMappingURL=index-Dspvybo0.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-DMTVVYwr.d.cts","names":[],"sources":["../src/schemas/sources.ts","../src/schemas/main-facts.ts","../src/schemas/interaction.ts","../src/schemas/pipeline.ts","../src/schemas/ticket.ts","../src/schemas/quote.ts","../src/schemas/kb-article.ts","../src/schemas/survey.ts","../src/commands/create.ts","../src/commands/backup.ts","../src/commands/audit.ts","../src/commands/validate.ts","../src/fs/customer-dir.ts","../src/fs/audit-log.ts","../src/core/rbac.ts","../src/core/session-store.ts","../src/version.ts"],"mappings":";;;;cAea,qBAAmB,CAAA,CAAA;;IAAA,IAAA,cAAA,CAAA,OAAA,CAAA;IAAA,KAAA,aAAA;IAUpB,OAAA,cAAa,aAAA,CAAA;EAAA,CAAA,EAAA,OAAA,cAAA,EAAA;IAAkB,IAAA,EAAA,OAAA;IAAf,KAAE,EAAA,MAAA;IAAK,OAAA,EAAA,OAAA;;;;ICvBtB,OAAA,CAAA,EAAA,OAoBX,GAAA,SAAA;EAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;SApB0B,EAAA,MAAA;EAAA,OAAA,EAAA,MAAA;EAsBhB,KAAA,CAAA,EAAA;IAAS,IAAA,EAAA,OAAA;IAAkB,KAAA,EAAA,MAAA;IAAf,OAAE,EAAA,OAAA;EAAK,CAAA,GAAA,SAAA;;;;ECtBlB,WAAA,CAAA,EAAA;IAYX,IAAA,EAAA,YAAA;;;;;;;;;;;;;;;;;;IAZiC,OAAA,CAAA,EAAA,OAAA,GAAA,SAAA;IAAA,UAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAcvB,CAAA,GAAA,SAAA;EAAgB,OAAA,CAAA,EAAA,MAAA,GAAA,SAAA;;KFShB,aAAA,GAAgB,CAAA,CAAE,aAAa;;;;cCvB9B,iBAAe,CAAA,CAAA;;EDaf,MAAA,eAAA,YAMX,CAAA;EAAA,KAAA,eAAA,YAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAN8B,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAAA,OAAA,CAAA,EAAA,OAAA;EAUpB,QAAA,CAAA,EAAA,MAAa,GAAA,SAAA;EAAA,OAAA,CAAA,EAAA,OAAA;QAAkB,CAAA,EAAA,MAAA,GAAA,SAAA;OAAb,CAAA,EAAA,MAAA,GAAA,SAAA;EAAK,KAAA,CAAA,EAAA,MAAA,GAAA,SAAA;;;;ECvBtB,QAAA,CAAA,EAAA,MAAA,GAoBX,SAAA;CAAA,CAAA;KAEU,SAAA,GAAY,CAAA,CAAE,aAAa;;;;cCtB1B,wBAAsB,CAAA,CAAA;;EFatB,IAAA,WAAA,CAAA,CAAA,OAMX,EAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,CAAA,CAAA;EAAA,SAAA,eAAA,UAAA,CAAA,CAAA,SAAA,EAAA,UAAA,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAN8B,CAAA,EAAA,MAAA,GAAA,SAAA;EAAA,SAAA,CAAA,EAAA,MAAA,EAAA,GAAA,SAAA;EAUpB,WAAA,CAAA,EAAA,MAAa,EAAA,GAAA,SAAA;CAAA,CAAA;AAAkB,KET/B,gBAAA,GAAmB,CAAA,CAAE,KFSU,CAAA,OETG,sBFSH,CAAA;;;;cGvB9B,oBAAkB,CAAA,CAAA;;EHalB,KAAA,WAAA,CAAA,CAAA,MAMX,EAAA,WAAA,EAAA,UAAA,EAAA,aAAA,EAAA,KAAA,EAAA,MAAA,CAAA,CAAA;EAAA,KAAA,eAAA,YAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;KGLU,YAAA,GAAe,CAAA,CAAE,aAAa;;;;cCd7B,oBAAkB,CAAA,CAAA;cAClB,sBAAoB,CAAA,CAAA;AJYpB,cIVA,YJgBX,EIhBuB,CAAA,CAAA,SJgBvB,CAAA;EAAA,EAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAN8B,CAAA,EAAA,MAAA,GAAA,SAAA;AAAA,CAAA,CAAA;AAUpB,KIFA,MAAA,GAAS,CAAA,CAAE,KJEE,CAAA,OIFW,YJEX,CAAA;AAAA,KIDb,YAAA,GAAe,CAAA,CAAE,KJCJ,CAAA,OIDiB,kBJCjB,CAAA;AAAkB,KIA/B,cAAA,GAAiB,CAAA,CAAE,KJAY,CAAA,OIAC,oBJAD,CAAA;;;;cKvB9B,qBAAmB,CAAA,CAAA;;ELanB,QAAA,aAAA;EAMX,SAAA,aAAA;;;;;;;;;;;;;cKZW,aAAW,CAAA,CAAA;;;;;;;;;;;;;;;ILMQ,WAAA,EAAA,MAAA;IAAA,QAAA,EAAA,MAAA;IAUpB,SAAA,EAAA,MAAa;IAAA,KAAA,EAAA,MAAA;MAAkB,MAAA,CAAA;UAAb,aAAA;EAAK,UAAA,aAAA;;;;ECvBtB,SAAA,aAoBX;EAAA,cAAA,cAAA,YAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;UApB0B,CAAA,EAAA,MAAA,GAAA,SAAA;AAAA,CAAA,EAAA;EAsBhB,SAAA,EAAA,MAAS;EAAA,IAAA,EAAA,MAAA;OAAkB,EAAA,MAAA;aAAb,EAAA,MAAA;EAAK,QAAA,EAAA,MAAA;;;;ICtBlB,SAAA,EAAA,MAAA;IAYX,KAAA,EAAA,MAAA;;;;;;;;;;;;;KGcU,aAAA,GAAgB,CAAA,CAAE,aAAa;KAC/B,KAAA,GAAQ,CAAA,CAAE,aAAa;;;;cC3BtB,iBAAe,CAAA,CAAA;;ENaf,KAAA,aAAA;EAMX,QAAA,cAAA,YAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;KMRU,aAAA,GAAgB,CAAA,CAAE,aAAa;KAC/B,SAAA,GAAY;;;ANCQ;;;cObnB,wBAAsB,CAAA,CAAA;;EPatB,IAAA,cAAA,UAMX,CAAA,CAAA,KAAA,EAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;EAAA,QAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAN8B,EAAA,MAAA;EAAA,IAAA,CAAA,EAAA,KAAA,GAAA,MAAA,GAAA,KAAA,GAAA,SAAA;EAUpB,KAAA,CAAA,EAAA;IAAa,GAAA,CAAA,EAAA,MAAA,GAAA,SAAA;IAAkB,GAAA,CAAA,EAAA,MAAA,GAAA,SAAA;MAAf,SAAE;EAAK,cAAA,CAAA,EAAA,OAAA,GAAA,SAAA;;;cOXtB,sBAAoB,CAAA,CAAA;ENZpB,QAAA,aAoBX;EAAA,IAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;KMGU,gBAAA,GAAmB,CAAA,CAAE,aAAa;ANvBlB,KMwBhB,cAAA,GAAiB,CAAA,CAAE,KNxBH,CAAA,OMwBgB,oBNxBhB,CAAA;AAAA;;;iBOON,cAAA;;ERMT,MAAA,CAAA,EAAA,MAAA;EAMX,KAAA,CAAA,EAAA,MAAA;;IQPE;;;;;;UCNa,cAAA;;ETOJ,SAAA,EAAA,MAAA;EAMX,YAAA,EAAA,MAAA;;;;;;;;;AAIuB,iBSuJH,SAAA,CTvJG,MAAA,CAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,IAAU,CAAV,EAAA;SAAkB,CAAA,EAAA,OAAA;QAAb,CAAA,EAAA,MAAA;AAAK,CAAA,CAAA,ES2JhC,OT3JgC,CS2JxB,cT3JwB,GAAA,IAAA,CAAA;;;iBUpBb,QAAA;;EVUT,KAAA,CAAA,EAAA,MAAA;EAMX,KAAA,CAAA,EAAA,MAAA;;sBURC;;;iBC4BmB,WAAA;;qBAAuD;;;iBCnB7D,cAAA;;;iBAsCM,aAAA,iCAA8C,QAAQ;;;;UCzD3D,UAAA;;;EbYJ,IAAA,EAAA,MAAA;EAMX,IAAA,EAAA,MAAA;;;iBacc,YAAA,mBAA+B;iBA6B/B,cAAA,UACL;;;;IAER;;;;KC/DS,IAAA;UAEK,UAAA;UACP,eAAe;EdQZ,OAAA,CAAA,EcPD,IdOC;EAMX,eAAA,CAAA,EcZkB,MdYlB,CAAA,MAAA,EAAA,MAAA,EAAA,CAAA;;ccVY,eAAe;;iBAsBb,aAAA,mBAAgC;iBAUhC,OAAA,kCAAyC;iBAuBzC,cAAA;;;;;;;;UClEC,OAAA;;;EfeJ,SAAA,EAAA,MAAA;EAMX,KAAA,CAAA,EAAA,MAAA;;iBeZc,UAAA,IAAc;iBAId,UAAA,CAAA,GAAc;iBAId,YAAA,CAAA;;;;cCjBH,OAAA"}
1
+ {"version":3,"file":"index-Dspvybo0.d.cts","names":[],"sources":["../src/schemas/sources.ts","../src/schemas/main-facts.ts","../src/schemas/interaction.ts","../src/schemas/pipeline.ts","../src/schemas/ticket.ts","../src/schemas/quote.ts","../src/schemas/kb-article.ts","../src/schemas/survey.ts","../src/commands/create.ts","../src/commands/backup.ts","../src/commands/audit.ts","../src/commands/validate.ts","../src/fs/customer-dir.ts","../src/fs/audit-log.ts","../src/core/rbac.ts","../src/core/session-store.ts","../src/version.ts"],"mappings":"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"}
package/dist/mcp.cjs CHANGED
@@ -1442,7 +1442,7 @@ function triggerOnQuerySync(dataDir, slug) {
1442
1442
  const sources = JSON.parse(fs.default.readFileSync(sourcesPath, "utf-8"));
1443
1443
  if (!sources.gmail?.enabled || !sources.gmail.query) return;
1444
1444
  const query = sources.gmail.query;
1445
- Promise.resolve().then(() => require("./gmail-sync-BpSVESSe.cjs")).then(({ syncGmail }) => syncGmail({
1445
+ Promise.resolve().then(() => require("./gmail-sync-CodrUNR4.cjs")).then(({ syncGmail }) => syncGmail({
1446
1446
  slug,
1447
1447
  dataDir,
1448
1448
  auth,
@@ -6721,7 +6721,7 @@ async function handleTriggerSync(input, dataDir = DATA_DIR$5) {
6721
6721
  try {
6722
6722
  const sources = JSON.parse(fs.default.readFileSync(sourcesPath, "utf-8"));
6723
6723
  if (!sources.gmail?.enabled || !sources.gmail.query) continue;
6724
- const { syncGmail } = await Promise.resolve().then(() => require("./gmail-sync-BpSVESSe.cjs"));
6724
+ const { syncGmail } = await Promise.resolve().then(() => require("./gmail-sync-CodrUNR4.cjs"));
6725
6725
  const result = await syncGmail({
6726
6726
  slug,
6727
6727
  dataDir,
package/dist/mcp.js CHANGED
@@ -1435,7 +1435,7 @@ function triggerOnQuerySync(dataDir, slug) {
1435
1435
  const sources = JSON.parse(fs.readFileSync(sourcesPath, "utf-8"));
1436
1436
  if (!sources.gmail?.enabled || !sources.gmail.query) return;
1437
1437
  const query = sources.gmail.query;
1438
- import("./gmail-sync-DIbrPnTK.js").then(({ syncGmail }) => syncGmail({
1438
+ import("./gmail-sync-BHLa8v51.js").then(({ syncGmail }) => syncGmail({
1439
1439
  slug,
1440
1440
  dataDir,
1441
1441
  auth,
@@ -6714,7 +6714,7 @@ async function handleTriggerSync(input, dataDir = DATA_DIR$5) {
6714
6714
  try {
6715
6715
  const sources = JSON.parse(fs.readFileSync(sourcesPath, "utf-8"));
6716
6716
  if (!sources.gmail?.enabled || !sources.gmail.query) continue;
6717
- const { syncGmail } = await import("./gmail-sync-DIbrPnTK.js");
6717
+ const { syncGmail } = await import("./gmail-sync-BHLa8v51.js");
6718
6718
  const result = await syncGmail({
6719
6719
  slug,
6720
6720
  dataDir,
@@ -268,7 +268,7 @@ function triggerOnQuerySync(dataDir, slug) {
268
268
  const sources = JSON.parse(fs.readFileSync(sourcesPath, "utf-8"));
269
269
  if (!sources.gmail?.enabled || !sources.gmail.query) return;
270
270
  const query = sources.gmail.query;
271
- import("./gmail-sync-B4Iu3AQb.js").then(({ syncGmail }) => syncGmail({
271
+ import("./gmail-sync-SvECok5p.js").then(({ syncGmail }) => syncGmail({
272
272
  slug,
273
273
  dataDir,
274
274
  auth,
@@ -3745,7 +3745,7 @@ async function handleTriggerSync(input, dataDir = DATA_DIR$5) {
3745
3745
  try {
3746
3746
  const sources = JSON.parse(fs.readFileSync(sourcesPath, "utf-8"));
3747
3747
  if (!sources.gmail?.enabled || !sources.gmail.query) continue;
3748
- const { syncGmail } = await import("./gmail-sync-B4Iu3AQb.js");
3748
+ const { syncGmail } = await import("./gmail-sync-SvECok5p.js");
3749
3749
  const result = await syncGmail({
3750
3750
  slug,
3751
3751
  dataDir,
@@ -4398,4 +4398,4 @@ else startStdio().catch((err) => {
4398
4398
  //#endregion
4399
4399
  export { startHttp, startStdio };
4400
4400
 
4401
- //# sourceMappingURL=server-BhNLrnAD.js.map
4401
+ //# sourceMappingURL=server-uqXUhF4H.js.map