@datasynx/agentic-crm 1.0.0 → 1.2.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 +8 -1
- package/dist/{ask-D8iYqDAr.js → ask-CDysGnRg.js} +2 -2
- package/dist/{ask-D8iYqDAr.js.map → ask-CDysGnRg.js.map} +1 -1
- package/dist/attachments-CX2GAtsw.cjs +517 -0
- package/dist/attachments-CX2GAtsw.cjs.map +1 -0
- package/dist/attachments-D207gXfN.js +514 -0
- package/dist/attachments-D207gXfN.js.map +1 -0
- package/dist/attachments-rLa96rOK.js +514 -0
- package/dist/attachments-rLa96rOK.js.map +1 -0
- package/dist/chunk-BfDYWZQ8.cjs +32 -0
- package/dist/chunk-BfDYWZQ8.cjs.map +1 -0
- package/dist/chunk-BhUZmQg5.js +32 -0
- package/dist/chunk-BhUZmQg5.js.map +1 -0
- package/dist/chunk-ChC83jai.js +2 -0
- package/dist/chunk-e_w8qqtP.js +32 -0
- package/dist/chunk-e_w8qqtP.js.map +1 -0
- package/dist/cli.js +20 -18
- package/dist/cli.js.map +1 -1
- package/dist/daemon/worker.js +3 -3
- package/dist/{doctor-C14-vnJ1.js → doctor-BFeelnq8.js} +2 -2
- package/dist/{doctor-C14-vnJ1.js.map → doctor-BFeelnq8.js.map} +1 -1
- package/dist/doctor-CYDaNmFn.js +2 -0
- package/dist/email-body-BFSRa0AW.cjs +42 -0
- package/dist/email-body-BFSRa0AW.cjs.map +1 -0
- package/dist/email-body-BOd7U-D2.js +42 -0
- package/dist/email-body-BOd7U-D2.js.map +1 -0
- package/dist/{gmail-sync-DueE6tl5.js → gmail-sync-B4Iu3AQb.js} +45 -15
- package/dist/gmail-sync-B4Iu3AQb.js.map +1 -0
- package/dist/{gmail-sync-GEy3oVvw.cjs → gmail-sync-BpSVESSe.cjs} +45 -15
- package/dist/gmail-sync-BpSVESSe.cjs.map +1 -0
- package/dist/{gmail-sync-C-NmibzS.js → gmail-sync-DIbrPnTK.js} +45 -15
- package/dist/gmail-sync-DIbrPnTK.js.map +1 -0
- package/dist/{gmail-webhook-handler-kGKpbY9h.js → gmail-webhook-handler-BzOFbvgh.js} +2 -2
- package/dist/{gmail-webhook-handler-kGKpbY9h.js.map → gmail-webhook-handler-BzOFbvgh.js.map} +1 -1
- package/dist/{gmail-webhook-handler-B26COilD.js → gmail-webhook-handler-CvSDW_Js.js} +1 -1
- package/dist/{google-drive-sync-D1n7WKZn.js → google-drive-sync-B_I1d54Y.js} +2 -2
- package/dist/{google-drive-sync-D1n7WKZn.js.map → google-drive-sync-B_I1d54Y.js.map} +1 -1
- package/dist/html-BaeOCZKE.js +36 -0
- package/dist/html-BaeOCZKE.js.map +1 -0
- package/dist/html-CmOku6jS.cjs +47 -0
- package/dist/html-CmOku6jS.cjs.map +1 -0
- package/dist/{import-hubspot-DB4n89jy.js → import-hubspot-CTId9IGV.js} +2 -2
- package/dist/{import-hubspot-DB4n89jy.js.map → import-hubspot-CTId9IGV.js.map} +1 -1
- package/dist/{index-pY7tYXwH.d.cts → index-CLUKKfGb.d.cts} +12 -8
- package/dist/index-CLUKKfGb.d.cts.map +1 -0
- package/dist/{index-B0IMMrp_.d.ts → index-D8jJ1VIt.d.ts} +14 -10
- package/dist/index-D8jJ1VIt.d.ts.map +1 -0
- package/dist/index.d.cts +12 -8
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +14 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/{interactions-writer-RJB8SWf2.js → interactions-writer-B2y-73lh.js} +1 -1
- package/dist/{interactions-writer-DbSyI2rt.js → interactions-writer-B8XAzdqR.js} +3 -2
- package/dist/interactions-writer-B8XAzdqR.js.map +1 -0
- package/dist/{interactions-writer-a2yzBd7T.cjs → interactions-writer-BRJNrefF.cjs} +3 -2
- package/dist/interactions-writer-BRJNrefF.cjs.map +1 -0
- package/dist/{interactions-writer-BZzUIgJd.js → interactions-writer-ZQcpFOh9.js} +3 -2
- package/dist/interactions-writer-ZQcpFOh9.js.map +1 -0
- package/dist/{knowledge-base-DHNc4hVj.js → knowledge-base-Bx2PKQR2.js} +10 -7
- package/dist/knowledge-base-Bx2PKQR2.js.map +1 -0
- package/dist/mcp-CdTJWTJf.d.cts.map +1 -1
- package/dist/mcp-CdTJWTJf.d.ts.map +1 -1
- package/dist/mcp.cjs +308 -150
- package/dist/mcp.cjs.map +1 -1
- package/dist/mcp.d.cts.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +308 -150
- package/dist/mcp.js.map +1 -1
- package/dist/{microsoft-calendar-jIu9K5zX.js → microsoft-calendar-BgVR8GDv.js} +3 -3
- package/dist/{microsoft-calendar-jIu9K5zX.js.map → microsoft-calendar-BgVR8GDv.js.map} +1 -1
- package/dist/{microsoft-sync-R_r8HL-B.js → microsoft-sync-D30_XksI.js} +3 -3
- package/dist/{microsoft-sync-R_r8HL-B.js.map → microsoft-sync-D30_XksI.js.map} +1 -1
- package/dist/{nba-mTJ4yEqD.js → nba-DwdfM93s.js} +2 -2
- package/dist/{nba-mTJ4yEqD.js.map → nba-DwdfM93s.js.map} +1 -1
- package/dist/{server-DqSMYhSA.js → server-BhNLrnAD.js} +201 -145
- package/dist/server-BhNLrnAD.js.map +1 -0
- package/dist/{transcript-watcher-0mh2ZhmH.js → transcript-watcher-BoClrJAz.js} +2 -2
- package/dist/{transcript-watcher-0mh2ZhmH.js.map → transcript-watcher-BoClrJAz.js.map} +1 -1
- package/package.json +13 -2
- package/dist/gmail-sync-C-NmibzS.js.map +0 -1
- package/dist/gmail-sync-DueE6tl5.js.map +0 -1
- package/dist/gmail-sync-GEy3oVvw.cjs.map +0 -1
- package/dist/index-B0IMMrp_.d.ts.map +0 -1
- package/dist/index-pY7tYXwH.d.cts.map +0 -1
- package/dist/interactions-writer-BZzUIgJd.js.map +0 -1
- package/dist/interactions-writer-DbSyI2rt.js.map +0 -1
- package/dist/interactions-writer-a2yzBd7T.cjs.map +0 -1
- package/dist/knowledge-base-DHNc4hVj.js.map +0 -1
- package/dist/server-DqSMYhSA.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CLUKKfGb.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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"}
|
|
@@ -43,8 +43,8 @@ declare const GlobalSourcesSchema: z.ZodObject<{
|
|
|
43
43
|
version: z.ZodDefault<z.ZodNumber>;
|
|
44
44
|
created: z.ZodString;
|
|
45
45
|
}, "strip", z.ZodTypeAny, {
|
|
46
|
-
version: number;
|
|
47
46
|
created: string;
|
|
47
|
+
version: number;
|
|
48
48
|
gmail?: {
|
|
49
49
|
type: "gmail";
|
|
50
50
|
query: string;
|
|
@@ -136,11 +136,13 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
136
136
|
subject: z.ZodOptional<z.ZodString>;
|
|
137
137
|
summary: z.ZodString;
|
|
138
138
|
nextSteps: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
139
|
+
/** Relative links (from the customer dir) to converted attachment Markdown. */
|
|
140
|
+
attachments: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
139
141
|
sourceRef: z.ZodString;
|
|
140
142
|
synced: z.ZodString;
|
|
141
143
|
}, "strip", z.ZodTypeAny, {
|
|
142
|
-
date: string;
|
|
143
144
|
type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
|
|
145
|
+
date: string;
|
|
144
146
|
with: string;
|
|
145
147
|
summary: string;
|
|
146
148
|
nextSteps: string[];
|
|
@@ -148,9 +150,10 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
148
150
|
synced: string;
|
|
149
151
|
direction?: "inbound" | "outbound" | undefined;
|
|
150
152
|
subject?: string | undefined;
|
|
153
|
+
attachments?: string[] | undefined;
|
|
151
154
|
}, {
|
|
152
|
-
date: string;
|
|
153
155
|
type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
|
|
156
|
+
date: string;
|
|
154
157
|
with: string;
|
|
155
158
|
summary: string;
|
|
156
159
|
sourceRef: string;
|
|
@@ -158,6 +161,7 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
158
161
|
direction?: "inbound" | "outbound" | undefined;
|
|
159
162
|
subject?: string | undefined;
|
|
160
163
|
nextSteps?: string[] | undefined;
|
|
164
|
+
attachments?: string[] | undefined;
|
|
161
165
|
}>;
|
|
162
166
|
type InteractionEntry = z.infer<typeof InteractionEntrySchema>;
|
|
163
167
|
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -208,20 +212,20 @@ declare const TicketSchema: z.ZodObject<{
|
|
|
208
212
|
resolved: z.ZodOptional<z.ZodString>;
|
|
209
213
|
description: z.ZodOptional<z.ZodString>;
|
|
210
214
|
}, "strip", z.ZodTypeAny, {
|
|
211
|
-
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
212
|
-
created: string;
|
|
213
215
|
id: string;
|
|
214
216
|
title: string;
|
|
217
|
+
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
215
218
|
priority: "urgent" | "high" | "normal" | "low";
|
|
219
|
+
created: string;
|
|
216
220
|
resolved?: string | undefined;
|
|
217
221
|
assignee?: string | undefined;
|
|
218
222
|
slaDue?: string | undefined;
|
|
219
223
|
description?: string | undefined;
|
|
220
224
|
}, {
|
|
221
|
-
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
222
|
-
created: string;
|
|
223
225
|
id: string;
|
|
224
226
|
title: string;
|
|
227
|
+
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
228
|
+
created: string;
|
|
225
229
|
resolved?: string | undefined;
|
|
226
230
|
priority?: "urgent" | "high" | "normal" | "low" | undefined;
|
|
227
231
|
assignee?: string | undefined;
|
|
@@ -342,9 +346,9 @@ declare const KbArticleSchema: z.ZodObject<{
|
|
|
342
346
|
updatedAt: z.ZodString;
|
|
343
347
|
sourceTicketId: z.ZodOptional<z.ZodString>;
|
|
344
348
|
}, "strip", z.ZodTypeAny, {
|
|
345
|
-
tags: string[];
|
|
346
349
|
id: string;
|
|
347
350
|
title: string;
|
|
351
|
+
tags: string[];
|
|
348
352
|
createdAt: string;
|
|
349
353
|
category: string;
|
|
350
354
|
public: boolean;
|
|
@@ -385,8 +389,8 @@ declare const SurveyDefinitionSchema: z.ZodObject<{
|
|
|
385
389
|
commentPrompt: z.ZodOptional<z.ZodString>;
|
|
386
390
|
createdAt: z.ZodString;
|
|
387
391
|
}, "strip", z.ZodTypeAny, {
|
|
388
|
-
type: "nps" | "csat" | "ces";
|
|
389
392
|
id: string;
|
|
393
|
+
type: "nps" | "csat" | "ces";
|
|
390
394
|
createdAt: string;
|
|
391
395
|
question: string;
|
|
392
396
|
scale: {
|
|
@@ -540,4 +544,4 @@ declare const VERSION = "0.1.0";
|
|
|
540
544
|
|
|
541
545
|
//#endregion
|
|
542
546
|
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 };
|
|
543
|
-
//# sourceMappingURL=index-
|
|
547
|
+
//# sourceMappingURL=index-D8jJ1VIt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-D8jJ1VIt.d.ts","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
|
@@ -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
|
-
created: string;
|
|
99
98
|
name: string;
|
|
100
|
-
relationship_stage: "prospect" | "active" | "churned" | "paused";
|
|
101
99
|
currency: string;
|
|
102
|
-
tags: string[];
|
|
103
100
|
updated: string;
|
|
101
|
+
created: string;
|
|
102
|
+
relationship_stage: "prospect" | "active" | "churned" | "paused";
|
|
103
|
+
tags: string[];
|
|
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
|
+
currency?: string | undefined;
|
|
115
|
+
updated?: unknown;
|
|
114
116
|
created?: unknown;
|
|
115
117
|
domain?: string | undefined;
|
|
116
118
|
email?: string | undefined;
|
|
117
119
|
phone?: string | undefined;
|
|
118
120
|
industry?: string | undefined;
|
|
119
121
|
deal_value?: number | undefined;
|
|
120
|
-
currency?: string | undefined;
|
|
121
122
|
primary_contact?: string | undefined;
|
|
122
123
|
timezone?: string | undefined;
|
|
123
124
|
tags?: string[] | undefined;
|
|
124
|
-
updated?: unknown;
|
|
125
125
|
}>;
|
|
126
126
|
type MainFacts = z.infer<typeof MainFactsSchema>;
|
|
127
127
|
//# sourceMappingURL=main-facts.d.ts.map
|
|
@@ -135,6 +135,8 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
135
135
|
subject: z.ZodOptional<z.ZodString>;
|
|
136
136
|
summary: z.ZodString;
|
|
137
137
|
nextSteps: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
138
|
+
/** Relative links (from the customer dir) to converted attachment Markdown. */
|
|
139
|
+
attachments: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
138
140
|
sourceRef: z.ZodString;
|
|
139
141
|
synced: z.ZodString;
|
|
140
142
|
}, "strip", z.ZodTypeAny, {
|
|
@@ -147,6 +149,7 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
147
149
|
synced: string;
|
|
148
150
|
direction?: "inbound" | "outbound" | undefined;
|
|
149
151
|
subject?: string | undefined;
|
|
152
|
+
attachments?: string[] | undefined;
|
|
150
153
|
}, {
|
|
151
154
|
type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
|
|
152
155
|
date: string;
|
|
@@ -157,6 +160,7 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
157
160
|
direction?: "inbound" | "outbound" | undefined;
|
|
158
161
|
subject?: string | undefined;
|
|
159
162
|
nextSteps?: string[] | undefined;
|
|
163
|
+
attachments?: string[] | undefined;
|
|
160
164
|
}>;
|
|
161
165
|
type InteractionEntry = z.infer<typeof InteractionEntrySchema>;
|
|
162
166
|
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -173,17 +177,17 @@ declare const PipelineDealSchema: z.ZodObject<{
|
|
|
173
177
|
updated: z.ZodString;
|
|
174
178
|
}, "strip", z.ZodTypeAny, {
|
|
175
179
|
name: string;
|
|
180
|
+
stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
|
|
176
181
|
currency: string;
|
|
177
182
|
updated: string;
|
|
178
|
-
stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
|
|
179
183
|
value?: number | undefined;
|
|
180
184
|
probability?: number | undefined;
|
|
181
185
|
close_date?: string | undefined;
|
|
182
186
|
notes?: string | undefined;
|
|
183
187
|
}, {
|
|
184
188
|
name: string;
|
|
185
|
-
updated: string;
|
|
186
189
|
stage: "lead" | "qualified" | "proposal" | "negotiation" | "won" | "lost";
|
|
190
|
+
updated: string;
|
|
187
191
|
value?: number | undefined;
|
|
188
192
|
currency?: string | undefined;
|
|
189
193
|
probability?: number | undefined;
|
|
@@ -539,4 +543,4 @@ declare const VERSION = "0.1.0";
|
|
|
539
543
|
|
|
540
544
|
//#endregion
|
|
541
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 };
|
|
542
|
-
//# sourceMappingURL=index-
|
|
546
|
+
//# sourceMappingURL=index-CLUKKfGb.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-CLUKKfGb.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.ts
CHANGED
|
@@ -43,8 +43,8 @@ declare const GlobalSourcesSchema: z.ZodObject<{
|
|
|
43
43
|
version: z.ZodDefault<z.ZodNumber>;
|
|
44
44
|
created: z.ZodString;
|
|
45
45
|
}, "strip", z.ZodTypeAny, {
|
|
46
|
-
version: number;
|
|
47
46
|
created: string;
|
|
47
|
+
version: number;
|
|
48
48
|
gmail?: {
|
|
49
49
|
type: "gmail";
|
|
50
50
|
query: string;
|
|
@@ -136,11 +136,13 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
136
136
|
subject: z.ZodOptional<z.ZodString>;
|
|
137
137
|
summary: z.ZodString;
|
|
138
138
|
nextSteps: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
139
|
+
/** Relative links (from the customer dir) to converted attachment Markdown. */
|
|
140
|
+
attachments: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
139
141
|
sourceRef: z.ZodString;
|
|
140
142
|
synced: z.ZodString;
|
|
141
143
|
}, "strip", z.ZodTypeAny, {
|
|
142
|
-
date: string;
|
|
143
144
|
type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
|
|
145
|
+
date: string;
|
|
144
146
|
with: string;
|
|
145
147
|
summary: string;
|
|
146
148
|
nextSteps: string[];
|
|
@@ -148,9 +150,10 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
148
150
|
synced: string;
|
|
149
151
|
direction?: "inbound" | "outbound" | undefined;
|
|
150
152
|
subject?: string | undefined;
|
|
153
|
+
attachments?: string[] | undefined;
|
|
151
154
|
}, {
|
|
152
|
-
date: string;
|
|
153
155
|
type: "Email" | "Call" | "Meeting" | "Note" | "Demo" | "Proposal" | "Contract" | "Other";
|
|
156
|
+
date: string;
|
|
154
157
|
with: string;
|
|
155
158
|
summary: string;
|
|
156
159
|
sourceRef: string;
|
|
@@ -158,6 +161,7 @@ declare const InteractionEntrySchema: z.ZodObject<{
|
|
|
158
161
|
direction?: "inbound" | "outbound" | undefined;
|
|
159
162
|
subject?: string | undefined;
|
|
160
163
|
nextSteps?: string[] | undefined;
|
|
164
|
+
attachments?: string[] | undefined;
|
|
161
165
|
}>;
|
|
162
166
|
type InteractionEntry = z.infer<typeof InteractionEntrySchema>;
|
|
163
167
|
//# sourceMappingURL=interaction.d.ts.map
|
|
@@ -208,20 +212,20 @@ declare const TicketSchema: z.ZodObject<{
|
|
|
208
212
|
resolved: z.ZodOptional<z.ZodString>;
|
|
209
213
|
description: z.ZodOptional<z.ZodString>;
|
|
210
214
|
}, "strip", z.ZodTypeAny, {
|
|
211
|
-
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
212
|
-
created: string;
|
|
213
215
|
id: string;
|
|
214
216
|
title: string;
|
|
217
|
+
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
215
218
|
priority: "urgent" | "high" | "normal" | "low";
|
|
219
|
+
created: string;
|
|
216
220
|
resolved?: string | undefined;
|
|
217
221
|
assignee?: string | undefined;
|
|
218
222
|
slaDue?: string | undefined;
|
|
219
223
|
description?: string | undefined;
|
|
220
224
|
}, {
|
|
221
|
-
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
222
|
-
created: string;
|
|
223
225
|
id: string;
|
|
224
226
|
title: string;
|
|
227
|
+
status: "open" | "in-progress" | "waiting" | "resolved" | "closed";
|
|
228
|
+
created: string;
|
|
225
229
|
resolved?: string | undefined;
|
|
226
230
|
priority?: "urgent" | "high" | "normal" | "low" | undefined;
|
|
227
231
|
assignee?: string | undefined;
|
|
@@ -342,9 +346,9 @@ declare const KbArticleSchema: z.ZodObject<{
|
|
|
342
346
|
updatedAt: z.ZodString;
|
|
343
347
|
sourceTicketId: z.ZodOptional<z.ZodString>;
|
|
344
348
|
}, "strip", z.ZodTypeAny, {
|
|
345
|
-
tags: string[];
|
|
346
349
|
id: string;
|
|
347
350
|
title: string;
|
|
351
|
+
tags: string[];
|
|
348
352
|
createdAt: string;
|
|
349
353
|
category: string;
|
|
350
354
|
public: boolean;
|
|
@@ -385,8 +389,8 @@ declare const SurveyDefinitionSchema: z.ZodObject<{
|
|
|
385
389
|
commentPrompt: z.ZodOptional<z.ZodString>;
|
|
386
390
|
createdAt: z.ZodString;
|
|
387
391
|
}, "strip", z.ZodTypeAny, {
|
|
388
|
-
type: "nps" | "csat" | "ces";
|
|
389
392
|
id: string;
|
|
393
|
+
type: "nps" | "csat" | "ces";
|
|
390
394
|
createdAt: string;
|
|
391
395
|
question: string;
|
|
392
396
|
scale: {
|
|
@@ -540,4 +544,4 @@ declare const VERSION = "0.1.0";
|
|
|
540
544
|
|
|
541
545
|
//#endregion
|
|
542
546
|
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 };
|
|
543
|
-
//# sourceMappingURL=index-
|
|
547
|
+
//# sourceMappingURL=index-D8jJ1VIt.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-D8jJ1VIt.d.ts","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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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as readInteractions, n as appendInteraction, t as InteractionDedup } from "./interactions-writer-
|
|
1
|
+
import { i as readInteractions, n as appendInteraction, t as InteractionDedup } from "./interactions-writer-B8XAzdqR.js";
|
|
2
2
|
export { InteractionDedup, appendInteraction, readInteractions };
|
|
@@ -9,11 +9,12 @@ function formatInteractionEntry(entry) {
|
|
|
9
9
|
const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : ""}`;
|
|
10
10
|
const withLabel = entry.type === "Email" ? "Subject" : "With";
|
|
11
11
|
const nextStepsBlock = entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join("\n") : "- [ ] —";
|
|
12
|
+
const attachmentsLine = entry.attachments && entry.attachments.length > 0 ? `\n**Attachments:** ${entry.attachments.map((a) => `[${a.split("/").pop()}](attachments/${a})`).join(", ")}` : "";
|
|
12
13
|
return `${header}
|
|
13
14
|
**${withLabel}:** ${entry.with}
|
|
14
15
|
**Summary:** ${entry.summary}
|
|
15
16
|
**Next Steps:**
|
|
16
|
-
${nextStepsBlock}
|
|
17
|
+
${nextStepsBlock}${attachmentsLine}
|
|
17
18
|
**Source:** ${entry.sourceRef}
|
|
18
19
|
**Synced:** ${entry.synced}
|
|
19
20
|
${INTERACTION_SEPARATOR}
|
|
@@ -72,4 +73,4 @@ async function appendInteraction(dataDir, slug, entry) {
|
|
|
72
73
|
//#endregion
|
|
73
74
|
export { readInteractions as i, appendInteraction as n, formatInteractionEntry as r, InteractionDedup as t };
|
|
74
75
|
|
|
75
|
-
//# sourceMappingURL=interactions-writer-
|
|
76
|
+
//# sourceMappingURL=interactions-writer-B8XAzdqR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions-writer-B8XAzdqR.js","names":[],"sources":["../src/fs/interactions-writer.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport type { InteractionEntry } from \"../schemas/interaction.js\";\nimport { withFileQueue } from \"./write-queue.js\";\nimport { writeFileAtomic } from \"./atomic-write.js\";\nimport { assertSafeSlug } from \"./customer-dir.js\";\n\nconst INTERACTION_SEPARATOR = \"---\";\n\nexport function formatInteractionEntry(entry: InteractionEntry): string {\n const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : \"\"}`;\n const withLabel = entry.type === \"Email\" ? \"Subject\" : \"With\";\n const nextStepsBlock =\n entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join(\"\\n\") : \"- [ ] —\";\n\n const attachmentsLine =\n entry.attachments && entry.attachments.length > 0\n ? `\\n**Attachments:** ${entry.attachments\n .map((a) => `[${a.split(\"/\").pop()}](attachments/${a})`)\n .join(\", \")}`\n : \"\";\n\n return `${header}\n**${withLabel}:** ${entry.with}\n**Summary:** ${entry.summary}\n**Next Steps:**\n${nextStepsBlock}${attachmentsLine}\n**Source:** ${entry.sourceRef}\n**Synced:** ${entry.synced}\n${INTERACTION_SEPARATOR}\n`;\n}\n\nexport async function readInteractions(dataDir: string, slug: string): Promise<string> {\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n if (!fs.existsSync(filePath)) {\n return \"\";\n }\n return fs.readFileSync(filePath, \"utf-8\");\n}\n\n/**\n * Per-run source-ref deduplication index for bulk imports. Loads each slug's\n * interactions file once (not once per row) and tracks freshly-appended refs\n * in memory, so a 5k-row import stays linear instead of re-reading a growing\n * file on every row (the previous O(rows²) behavior).\n */\nexport class InteractionDedup {\n private readonly cache = new Map<string, string>();\n constructor(private readonly dataDir: string) {}\n\n /** True if `sourceRef` already exists for `slug` (on disk or appended this run). */\n async seen(slug: string, sourceRef: string): Promise<boolean> {\n let content = this.cache.get(slug);\n if (content === undefined) {\n content = await readInteractions(this.dataDir, slug).catch(() => \"\");\n this.cache.set(slug, content);\n }\n return content.includes(sourceRef);\n }\n\n /** Record that `sourceRef` was just appended, so later rows dedupe against it. */\n markAppended(slug: string, sourceRef: string): void {\n this.cache.set(slug, (this.cache.get(slug) ?? \"\") + sourceRef);\n }\n}\n\nexport async function appendInteraction(\n dataDir: string,\n slug: string,\n entry: InteractionEntry\n): Promise<void> {\n assertSafeSlug(slug);\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n return withFileQueue(filePath, async () => {\n const existing = fs.existsSync(filePath) ? (fs.readFileSync(filePath, \"utf-8\") as string) : \"\";\n\n const formatted = formatInteractionEntry(entry);\n\n let newContent: string;\n if (existing === \"\") {\n newContent = formatted;\n } else {\n const headerEnd = existing.indexOf(\"\\n\\n\");\n if (headerEnd > -1) {\n const header = existing.slice(0, headerEnd + 2);\n const body = existing.slice(headerEnd + 2);\n newContent = header + formatted + \"\\n\" + body;\n } else {\n newContent = existing + \"\\n\" + formatted;\n }\n }\n\n writeFileAtomic(filePath, newContent);\n });\n}\n"],"mappings":";;;;;;AAOA,MAAM,wBAAwB;AAE9B,SAAgB,uBAAuB,OAAiC;CACtE,MAAM,SAAS,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,MAAM,YAAY,MAAM,MAAM,cAAc;CAC9F,MAAM,YAAY,MAAM,SAAS,UAAU,YAAY;CACvD,MAAM,iBACJ,MAAM,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG,EAAE,KAAK,IAAI,IAAI;CAErF,MAAM,kBACJ,MAAM,eAAe,MAAM,YAAY,SAAS,IAC5C,sBAAsB,MAAM,YACzB,KAAK,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EACtD,KAAK,IAAI,MACZ;CAEN,OAAO,GAAG,OAAO;IACf,UAAU,MAAM,MAAM,KAAK;eAChB,MAAM,QAAQ;;EAE3B,iBAAiB,gBAAgB;cACrB,MAAM,UAAU;cAChB,MAAM,OAAO;EACzB,sBAAsB;;AAExB;AAEA,eAAsB,iBAAiB,SAAiB,MAA+B;CACrF,MAAM,WAAW,KAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,IAAI,CAAC,GAAG,WAAW,QAAQ,GACzB,OAAO;CAET,OAAO,GAAG,aAAa,UAAU,OAAO;AAC1C;;;;;;;AAQA,IAAa,mBAAb,MAA8B;CAEC;CAD7B,wBAAyB,IAAI,IAAoB;CACjD,YAAY,SAAkC;EAAjB,KAAA,UAAA;CAAkB;;CAG/C,MAAM,KAAK,MAAc,WAAqC;EAC5D,IAAI,UAAU,KAAK,MAAM,IAAI,IAAI;EACjC,IAAI,YAAY,KAAA,GAAW;GACzB,UAAU,MAAM,iBAAiB,KAAK,SAAS,IAAI,EAAE,YAAY,EAAE;GACnE,KAAK,MAAM,IAAI,MAAM,OAAO;EAC9B;EACA,OAAO,QAAQ,SAAS,SAAS;CACnC;;CAGA,aAAa,MAAc,WAAyB;EAClD,KAAK,MAAM,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,SAAS;CAC/D;AACF;AAEA,eAAsB,kBACpB,SACA,MACA,OACe;CACf,eAAe,IAAI;CACnB,MAAM,WAAW,KAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,OAAO,cAAc,UAAU,YAAY;EACzC,MAAM,WAAW,GAAG,WAAW,QAAQ,IAAK,GAAG,aAAa,UAAU,OAAO,IAAe;EAE5F,MAAM,YAAY,uBAAuB,KAAK;EAE9C,IAAI;EACJ,IAAI,aAAa,IACf,aAAa;OACR;GACL,MAAM,YAAY,SAAS,QAAQ,MAAM;GACzC,IAAI,YAAY,IAAI;IAClB,MAAM,SAAS,SAAS,MAAM,GAAG,YAAY,CAAC;IAC9C,MAAM,OAAO,SAAS,MAAM,YAAY,CAAC;IACzC,aAAa,SAAS,YAAY,OAAO;GAC3C,OACE,aAAa,WAAW,OAAO;EAEnC;EAEA,gBAAgB,UAAU,UAAU;CACtC,CAAC;AACH"}
|
|
@@ -17,11 +17,12 @@ function formatInteractionEntry(entry) {
|
|
|
17
17
|
const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : ""}`;
|
|
18
18
|
const withLabel = entry.type === "Email" ? "Subject" : "With";
|
|
19
19
|
const nextStepsBlock = entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join("\n") : "- [ ] —";
|
|
20
|
+
const attachmentsLine = entry.attachments && entry.attachments.length > 0 ? `\n**Attachments:** ${entry.attachments.map((a) => `[${a.split("/").pop()}](attachments/${a})`).join(", ")}` : "";
|
|
20
21
|
return `${header}
|
|
21
22
|
**${withLabel}:** ${entry.with}
|
|
22
23
|
**Summary:** ${entry.summary}
|
|
23
24
|
**Next Steps:**
|
|
24
|
-
${nextStepsBlock}
|
|
25
|
+
${nextStepsBlock}${attachmentsLine}
|
|
25
26
|
**Source:** ${entry.sourceRef}
|
|
26
27
|
**Synced:** ${entry.synced}
|
|
27
28
|
${INTERACTION_SEPARATOR}
|
|
@@ -77,4 +78,4 @@ Object.defineProperty(exports, "readInteractions", {
|
|
|
77
78
|
}
|
|
78
79
|
});
|
|
79
80
|
|
|
80
|
-
//# sourceMappingURL=interactions-writer-
|
|
81
|
+
//# sourceMappingURL=interactions-writer-BRJNrefF.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions-writer-BRJNrefF.cjs","names":["withFileQueue"],"sources":["../src/fs/interactions-writer.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport type { InteractionEntry } from \"../schemas/interaction.js\";\nimport { withFileQueue } from \"./write-queue.js\";\nimport { writeFileAtomic } from \"./atomic-write.js\";\nimport { assertSafeSlug } from \"./customer-dir.js\";\n\nconst INTERACTION_SEPARATOR = \"---\";\n\nexport function formatInteractionEntry(entry: InteractionEntry): string {\n const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : \"\"}`;\n const withLabel = entry.type === \"Email\" ? \"Subject\" : \"With\";\n const nextStepsBlock =\n entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join(\"\\n\") : \"- [ ] —\";\n\n const attachmentsLine =\n entry.attachments && entry.attachments.length > 0\n ? `\\n**Attachments:** ${entry.attachments\n .map((a) => `[${a.split(\"/\").pop()}](attachments/${a})`)\n .join(\", \")}`\n : \"\";\n\n return `${header}\n**${withLabel}:** ${entry.with}\n**Summary:** ${entry.summary}\n**Next Steps:**\n${nextStepsBlock}${attachmentsLine}\n**Source:** ${entry.sourceRef}\n**Synced:** ${entry.synced}\n${INTERACTION_SEPARATOR}\n`;\n}\n\nexport async function readInteractions(dataDir: string, slug: string): Promise<string> {\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n if (!fs.existsSync(filePath)) {\n return \"\";\n }\n return fs.readFileSync(filePath, \"utf-8\");\n}\n\n/**\n * Per-run source-ref deduplication index for bulk imports. Loads each slug's\n * interactions file once (not once per row) and tracks freshly-appended refs\n * in memory, so a 5k-row import stays linear instead of re-reading a growing\n * file on every row (the previous O(rows²) behavior).\n */\nexport class InteractionDedup {\n private readonly cache = new Map<string, string>();\n constructor(private readonly dataDir: string) {}\n\n /** True if `sourceRef` already exists for `slug` (on disk or appended this run). */\n async seen(slug: string, sourceRef: string): Promise<boolean> {\n let content = this.cache.get(slug);\n if (content === undefined) {\n content = await readInteractions(this.dataDir, slug).catch(() => \"\");\n this.cache.set(slug, content);\n }\n return content.includes(sourceRef);\n }\n\n /** Record that `sourceRef` was just appended, so later rows dedupe against it. */\n markAppended(slug: string, sourceRef: string): void {\n this.cache.set(slug, (this.cache.get(slug) ?? \"\") + sourceRef);\n }\n}\n\nexport async function appendInteraction(\n dataDir: string,\n slug: string,\n entry: InteractionEntry\n): Promise<void> {\n assertSafeSlug(slug);\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n return withFileQueue(filePath, async () => {\n const existing = fs.existsSync(filePath) ? (fs.readFileSync(filePath, \"utf-8\") as string) : \"\";\n\n const formatted = formatInteractionEntry(entry);\n\n let newContent: string;\n if (existing === \"\") {\n newContent = formatted;\n } else {\n const headerEnd = existing.indexOf(\"\\n\\n\");\n if (headerEnd > -1) {\n const header = existing.slice(0, headerEnd + 2);\n const body = existing.slice(headerEnd + 2);\n newContent = header + formatted + \"\\n\" + body;\n } else {\n newContent = existing + \"\\n\" + formatted;\n }\n }\n\n writeFileAtomic(filePath, newContent);\n });\n}\n"],"mappings":";;;;;;;;;;;;;;AAOA,MAAM,wBAAwB;AAE9B,SAAgB,uBAAuB,OAAiC;CACtE,MAAM,SAAS,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,MAAM,YAAY,MAAM,MAAM,cAAc;CAC9F,MAAM,YAAY,MAAM,SAAS,UAAU,YAAY;CACvD,MAAM,iBACJ,MAAM,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG,EAAE,KAAK,IAAI,IAAI;CAErF,MAAM,kBACJ,MAAM,eAAe,MAAM,YAAY,SAAS,IAC5C,sBAAsB,MAAM,YACzB,KAAK,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EACtD,KAAK,IAAI,MACZ;CAEN,OAAO,GAAG,OAAO;IACf,UAAU,MAAM,MAAM,KAAK;eAChB,MAAM,QAAQ;;EAE3B,iBAAiB,gBAAgB;cACrB,MAAM,UAAU;cAChB,MAAM,OAAO;EACzB,sBAAsB;;AAExB;AAEA,eAAsB,iBAAiB,SAAiB,MAA+B;CACrF,MAAM,WAAW,KAAA,QAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,IAAI,CAAC,GAAA,QAAG,WAAW,QAAQ,GACzB,OAAO;CAET,OAAO,GAAA,QAAG,aAAa,UAAU,OAAO;AAC1C;AA4BA,eAAsB,kBACpB,SACA,MACA,OACe;CACf,sBAAA,eAAe,IAAI;CACnB,MAAM,WAAW,KAAA,QAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,OAAOA,oBAAAA,cAAc,UAAU,YAAY;EACzC,MAAM,WAAW,GAAA,QAAG,WAAW,QAAQ,IAAK,GAAA,QAAG,aAAa,UAAU,OAAO,IAAe;EAE5F,MAAM,YAAY,uBAAuB,KAAK;EAE9C,IAAI;EACJ,IAAI,aAAa,IACf,aAAa;OACR;GACL,MAAM,YAAY,SAAS,QAAQ,MAAM;GACzC,IAAI,YAAY,IAAI;IAClB,MAAM,SAAS,SAAS,MAAM,GAAG,YAAY,CAAC;IAC9C,MAAM,OAAO,SAAS,MAAM,YAAY,CAAC;IACzC,aAAa,SAAS,YAAY,OAAO;GAC3C,OACE,aAAa,WAAW,OAAO;EAEnC;EAEA,qBAAA,gBAAgB,UAAU,UAAU;CACtC,CAAC;AACH"}
|
|
@@ -15,11 +15,12 @@ function formatInteractionEntry(entry) {
|
|
|
15
15
|
const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : ""}`;
|
|
16
16
|
const withLabel = entry.type === "Email" ? "Subject" : "With";
|
|
17
17
|
const nextStepsBlock = entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join("\n") : "- [ ] —";
|
|
18
|
+
const attachmentsLine = entry.attachments && entry.attachments.length > 0 ? `\n**Attachments:** ${entry.attachments.map((a) => `[${a.split("/").pop()}](attachments/${a})`).join(", ")}` : "";
|
|
18
19
|
return `${header}
|
|
19
20
|
**${withLabel}:** ${entry.with}
|
|
20
21
|
**Summary:** ${entry.summary}
|
|
21
22
|
**Next Steps:**
|
|
22
|
-
${nextStepsBlock}
|
|
23
|
+
${nextStepsBlock}${attachmentsLine}
|
|
23
24
|
**Source:** ${entry.sourceRef}
|
|
24
25
|
**Synced:** ${entry.synced}
|
|
25
26
|
${INTERACTION_SEPARATOR}
|
|
@@ -52,4 +53,4 @@ async function appendInteraction(dataDir, slug, entry) {
|
|
|
52
53
|
//#endregion
|
|
53
54
|
export { readInteractions as i, formatInteractionEntry as n, interactions_writer_exports as r, appendInteraction as t };
|
|
54
55
|
|
|
55
|
-
//# sourceMappingURL=interactions-writer-
|
|
56
|
+
//# sourceMappingURL=interactions-writer-ZQcpFOh9.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactions-writer-ZQcpFOh9.js","names":[],"sources":["../src/fs/interactions-writer.ts"],"sourcesContent":["import fs from \"fs\";\nimport path from \"path\";\nimport type { InteractionEntry } from \"../schemas/interaction.js\";\nimport { withFileQueue } from \"./write-queue.js\";\nimport { writeFileAtomic } from \"./atomic-write.js\";\nimport { assertSafeSlug } from \"./customer-dir.js\";\n\nconst INTERACTION_SEPARATOR = \"---\";\n\nexport function formatInteractionEntry(entry: InteractionEntry): string {\n const header = `## ${entry.date} · ${entry.type}${entry.direction ? ` · ${entry.direction}` : \"\"}`;\n const withLabel = entry.type === \"Email\" ? \"Subject\" : \"With\";\n const nextStepsBlock =\n entry.nextSteps.length > 0 ? entry.nextSteps.map((s) => `- [ ] ${s}`).join(\"\\n\") : \"- [ ] —\";\n\n const attachmentsLine =\n entry.attachments && entry.attachments.length > 0\n ? `\\n**Attachments:** ${entry.attachments\n .map((a) => `[${a.split(\"/\").pop()}](attachments/${a})`)\n .join(\", \")}`\n : \"\";\n\n return `${header}\n**${withLabel}:** ${entry.with}\n**Summary:** ${entry.summary}\n**Next Steps:**\n${nextStepsBlock}${attachmentsLine}\n**Source:** ${entry.sourceRef}\n**Synced:** ${entry.synced}\n${INTERACTION_SEPARATOR}\n`;\n}\n\nexport async function readInteractions(dataDir: string, slug: string): Promise<string> {\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n if (!fs.existsSync(filePath)) {\n return \"\";\n }\n return fs.readFileSync(filePath, \"utf-8\");\n}\n\n/**\n * Per-run source-ref deduplication index for bulk imports. Loads each slug's\n * interactions file once (not once per row) and tracks freshly-appended refs\n * in memory, so a 5k-row import stays linear instead of re-reading a growing\n * file on every row (the previous O(rows²) behavior).\n */\nexport class InteractionDedup {\n private readonly cache = new Map<string, string>();\n constructor(private readonly dataDir: string) {}\n\n /** True if `sourceRef` already exists for `slug` (on disk or appended this run). */\n async seen(slug: string, sourceRef: string): Promise<boolean> {\n let content = this.cache.get(slug);\n if (content === undefined) {\n content = await readInteractions(this.dataDir, slug).catch(() => \"\");\n this.cache.set(slug, content);\n }\n return content.includes(sourceRef);\n }\n\n /** Record that `sourceRef` was just appended, so later rows dedupe against it. */\n markAppended(slug: string, sourceRef: string): void {\n this.cache.set(slug, (this.cache.get(slug) ?? \"\") + sourceRef);\n }\n}\n\nexport async function appendInteraction(\n dataDir: string,\n slug: string,\n entry: InteractionEntry\n): Promise<void> {\n assertSafeSlug(slug);\n const filePath = path.join(dataDir, \"customers\", slug, \"interactions.md\");\n return withFileQueue(filePath, async () => {\n const existing = fs.existsSync(filePath) ? (fs.readFileSync(filePath, \"utf-8\") as string) : \"\";\n\n const formatted = formatInteractionEntry(entry);\n\n let newContent: string;\n if (existing === \"\") {\n newContent = formatted;\n } else {\n const headerEnd = existing.indexOf(\"\\n\\n\");\n if (headerEnd > -1) {\n const header = existing.slice(0, headerEnd + 2);\n const body = existing.slice(headerEnd + 2);\n newContent = header + formatted + \"\\n\" + body;\n } else {\n newContent = existing + \"\\n\" + formatted;\n }\n }\n\n writeFileAtomic(filePath, newContent);\n });\n}\n"],"mappings":";;;;;;;;;;;;AAOA,MAAM,wBAAwB;AAE9B,SAAgB,uBAAuB,OAAiC;CACtE,MAAM,SAAS,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,MAAM,YAAY,MAAM,MAAM,cAAc;CAC9F,MAAM,YAAY,MAAM,SAAS,UAAU,YAAY;CACvD,MAAM,iBACJ,MAAM,UAAU,SAAS,IAAI,MAAM,UAAU,KAAK,MAAM,SAAS,GAAG,EAAE,KAAK,IAAI,IAAI;CAErF,MAAM,kBACJ,MAAM,eAAe,MAAM,YAAY,SAAS,IAC5C,sBAAsB,MAAM,YACzB,KAAK,MAAM,IAAI,EAAE,MAAM,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,EACtD,KAAK,IAAI,MACZ;CAEN,OAAO,GAAG,OAAO;IACf,UAAU,MAAM,MAAM,KAAK;eAChB,MAAM,QAAQ;;EAE3B,iBAAiB,gBAAgB;cACrB,MAAM,UAAU;cAChB,MAAM,OAAO;EACzB,sBAAsB;;AAExB;AAEA,eAAsB,iBAAiB,SAAiB,MAA+B;CACrF,MAAM,WAAW,KAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,IAAI,CAAC,GAAG,WAAW,QAAQ,GACzB,OAAO;CAET,OAAO,GAAG,aAAa,UAAU,OAAO;AAC1C;AA4BA,eAAsB,kBACpB,SACA,MACA,OACe;CACf,eAAe,IAAI;CACnB,MAAM,WAAW,KAAK,KAAK,SAAS,aAAa,MAAM,iBAAiB;CACxE,OAAO,cAAc,UAAU,YAAY;EACzC,MAAM,WAAW,GAAG,WAAW,QAAQ,IAAK,GAAG,aAAa,UAAU,OAAO,IAAe;EAE5F,MAAM,YAAY,uBAAuB,KAAK;EAE9C,IAAI;EACJ,IAAI,aAAa,IACf,aAAa;OACR;GACL,MAAM,YAAY,SAAS,QAAQ,MAAM;GACzC,IAAI,YAAY,IAAI;IAClB,MAAM,SAAS,SAAS,MAAM,GAAG,YAAY,CAAC;IAC9C,MAAM,OAAO,SAAS,MAAM,YAAY,CAAC;IACzC,aAAa,SAAS,YAAY,OAAO;GAC3C,OACE,aAAa,WAAW,OAAO;EAEnC;EAEA,gBAAgB,UAAU,UAAU;CACtC,CAAC;AACH"}
|
|
@@ -56,7 +56,7 @@ Config: \`.agentic/rbac.json\` | Actor: \`DXCRM_ACTOR\` env var
|
|
|
56
56
|
| log_interaction | Write a new interaction entry (call, email, meeting, note) — immediately searchable | rep+ |
|
|
57
57
|
| update_deal | Create or update a deal in pipeline.md — upserts by deal name | rep+ |
|
|
58
58
|
| update_customer_facts | Update fields in customer profile (domain, contact, stage, tags) | admin |
|
|
59
|
-
| export_customer | Export all customer data as JSON or Markdown | admin |
|
|
59
|
+
| export_customer | Export all customer data (incl. attachment contents) as JSON or Markdown | admin |
|
|
60
60
|
| get_deal_health | Score deal health 0–100 (A–F grade) based on activity, velocity, close date, probability | any |
|
|
61
61
|
| get_pipeline_forecast | Aggregate weighted pipeline revenue across all customers grouped by stage | any |
|
|
62
62
|
| get_pipeline_stages | List all configured pipeline stages (defaults: lead, qualified, proposal, negotiation, won, lost) | any |
|
|
@@ -101,6 +101,7 @@ Config: \`.agentic/rbac.json\` | Actor: \`DXCRM_ACTOR\` env var
|
|
|
101
101
|
| trigger_sync | Force immediate Gmail sync for one or all customers | rep+ |
|
|
102
102
|
| get_audit_log | Read audit log — all write operations with actor, tool, customer | admin |
|
|
103
103
|
| get_logs | Query/aggregate the structured application log (level, component, errors) | admin |
|
|
104
|
+
| get_diagnostics | Self-diagnostic health check (data integrity, temp files, log errors, backups) | admin |
|
|
104
105
|
| define_custom_object | Define a runtime custom object type with typed fields (no migration) | admin |
|
|
105
106
|
| create_record | Create a record of a custom object (validated against its schema) | rep+ |
|
|
106
107
|
| list_records | List records of a custom object | any |
|
|
@@ -190,12 +191,14 @@ RBAC: admin
|
|
|
190
191
|
- Input: slug (required) + any combination of the optional fields
|
|
191
192
|
- Returns: { success: boolean, facts: object }
|
|
192
193
|
|
|
193
|
-
### export_customer({ slug, format? })
|
|
194
|
-
Export all customer data (main_facts + interactions
|
|
194
|
+
### export_customer({ slug, format?, includeAttachmentContent? })
|
|
195
|
+
Export all customer data (main_facts + interactions + pipeline + attachments).
|
|
196
|
+
Set includeAttachmentContent to inline every attachment's converted Markdown —
|
|
197
|
+
a single sendable bundle of all conversations and documents for the customer.
|
|
195
198
|
RBAC: admin
|
|
196
|
-
- Input: { slug: string, format?: "json" | "markdown" (default "json") }
|
|
197
|
-
- Returns (JSON): { slug, exportedAt, mainFacts, interactionsCount, pipeline, attachments }
|
|
198
|
-
- Returns (Markdown): Formatted document with all sections
|
|
199
|
+
- Input: { slug: string, format?: "json" | "markdown" (default "json"), includeAttachmentContent?: boolean (default false) }
|
|
200
|
+
- Returns (JSON): { slug, exportedAt, mainFacts, interactionsCount, pipeline, attachments[, attachmentContents] }
|
|
201
|
+
- Returns (Markdown): Formatted document with all sections (and attachment contents when requested)
|
|
199
202
|
|
|
200
203
|
### get_deal_health({ slug })
|
|
201
204
|
Score the health of all deals for a customer based on activity recency, stage velocity,
|
|
@@ -1037,4 +1040,4 @@ function getKbMetaForExport(article) {
|
|
|
1037
1040
|
//#endregion
|
|
1038
1041
|
export { searchKbSimple as a, listKbArticles as i, getKbArticle as n, writeKbArticle as o, getKbMetaForExport as r, CAPABILITIES_TEXT as s, deleteKbArticle as t };
|
|
1039
1042
|
|
|
1040
|
-
//# sourceMappingURL=knowledge-base-
|
|
1043
|
+
//# sourceMappingURL=knowledge-base-Bx2PKQR2.js.map
|