@qcobro/common 1.47.0 → 1.48.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/dist/schemas/workspaceSettings.d.ts +6 -0
- package/dist/schemas/workspaceSettings.d.ts.map +1 -1
- package/dist/schemas/workspaceSettings.js +6 -0
- package/dist/schemas/workspaceSettings.js.map +1 -1
- package/dist/types/agentEvaluations.d.ts +1 -0
- package/dist/types/agentEvaluations.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/threads.d.ts +23 -0
- package/dist/utils/threads.d.ts.map +1 -0
- package/dist/utils/threads.js +38 -0
- package/dist/utils/threads.js.map +1 -0
- package/package.json +1 -1
|
@@ -19,6 +19,12 @@ export declare const localeSchema: z.ZodEnum<{
|
|
|
19
19
|
export type Locale = z.infer<typeof localeSchema>;
|
|
20
20
|
/** The locale a workspace gets when none was chosen. Mirrors the Prisma column default. */
|
|
21
21
|
export declare const DEFAULT_LOCALE: Locale;
|
|
22
|
+
/**
|
|
23
|
+
* The timezone a workspace gets when none was chosen. Mirrors the Prisma column default on
|
|
24
|
+
* `WorkspaceSettings.timezone`. Used at read boundaries where the settings row may not exist
|
|
25
|
+
* yet — it is seeded lazily — so a missing row cannot silently shift a calendar date to UTC.
|
|
26
|
+
*/
|
|
27
|
+
export declare const DEFAULT_TIMEZONE = "America/Santo_Domingo";
|
|
22
28
|
/**
|
|
23
29
|
* Narrows a persisted locale to a supported one at the read boundary. The column is a plain
|
|
24
30
|
* `String`, so a row written outside the app (a manual migration, a restored dump) could hold
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceSettings.d.ts","sourceRoot":"","sources":["../../src/schemas/workspaceSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,eAAO,MAAM,cAAc;;;EAAyB,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,oBAAqB,CAAC;AACnD,eAAO,MAAM,YAAY;;EAA2B,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,MAAgB,CAAC;AAE9C;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,uFAAuF;AACvF,eAAO,MAAM,uBAAuB;;;;;;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;;;;;;iBAGxC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"workspaceSettings.d.ts","sourceRoot":"","sources":["../../src/schemas/workspaceSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,eAAO,MAAM,cAAc;;;EAAyB,CAAC;AACrD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,oBAAqB,CAAC;AACnD,eAAO,MAAM,YAAY;;EAA2B,CAAC;AACrD,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,2FAA2F;AAC3F,eAAO,MAAM,cAAc,EAAE,MAAgB,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAExD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGlD;AAED,uFAAuF;AACvF,eAAO,MAAM,uBAAuB;;;;;;;;;;iBAKlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B;;;;;;iBAGxC,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
|
|
@@ -12,6 +12,12 @@ export const supportedLocales = ["es-DO"];
|
|
|
12
12
|
export const localeSchema = z.enum(supportedLocales);
|
|
13
13
|
/** The locale a workspace gets when none was chosen. Mirrors the Prisma column default. */
|
|
14
14
|
export const DEFAULT_LOCALE = "es-DO";
|
|
15
|
+
/**
|
|
16
|
+
* The timezone a workspace gets when none was chosen. Mirrors the Prisma column default on
|
|
17
|
+
* `WorkspaceSettings.timezone`. Used at read boundaries where the settings row may not exist
|
|
18
|
+
* yet — it is seeded lazily — so a missing row cannot silently shift a calendar date to UTC.
|
|
19
|
+
*/
|
|
20
|
+
export const DEFAULT_TIMEZONE = "America/Santo_Domingo";
|
|
15
21
|
/**
|
|
16
22
|
* Narrows a persisted locale to a supported one at the read boundary. The column is a plain
|
|
17
23
|
* `String`, so a row written outside the app (a manual migration, a restored dump) could hold
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceSettings.js","sourceRoot":"","sources":["../../src/schemas/workspaceSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAGrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAU,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAGrD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAW,OAAO,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;AACvD,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"workspaceSettings.js","sourceRoot":"","sources":["../../src/schemas/workspaceSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AACzE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAGrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAO,CAAU,CAAC;AACnD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAGrD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,cAAc,GAAW,OAAO,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC;AAExD;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC7C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;AACvD,CAAC;AAED,uFAAuF;AACvF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,MAAM,EAAE,YAAY;CACrB,CAAC,CAAC;AAGH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC;IACpD,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5B,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentEvaluations.d.ts","sourceRoot":"","sources":["../../src/types/agentEvaluations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;yFACqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,8DAA8D;IAC9D,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,8FAA8F;AAC9F,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;4EAC4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9F,sBAAsB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"agentEvaluations.d.ts","sourceRoot":"","sources":["../../src/types/agentEvaluations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;yFACqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC,eAAe,CAAC,EAAE;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,OAAO,CAAC;KACjB,EAAE,CAAC;IACJ,8DAA8D;IAC9D,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,8FAA8F;AAC9F,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,OAAO,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC/E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC;4EAC4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9F,sBAAsB,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACpE,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1C,WAAW,EAAE;QACX,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;KAC3B,GAAG,IAAI,CAAC;IACT,cAAc,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CACjG;AAED,wFAAwF;AACxF,MAAM,WAAW,uBAAuB;IACtC,aAAa,EAAE;QACb,gBAAgB,CAAC,IAAI,EAAE;YACrB,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,YAAY,EAAE,MAAM,CAAA;aAAE,CAAC;YAC5C,OAAO,EAAE;gBACP,aAAa,EAAE,IAAI,CAAC;gBACpB,sBAAsB,EAAE,IAAI,CAAC;gBAC7B,SAAS,EAAE,IAAI,CAAC;gBAChB,WAAW,EAAE,IAAI,CAAC;gBAClB,cAAc,EAAE,IAAI,CAAC;aACtB,CAAC;SACH,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;KACnC,CAAC;CACH"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, buildAutopilotContextLines, toCallMetadata, pickRandomNumber, snakeToCamel, renderWhatsAppTemplate } from "./outreach.js";
|
|
3
3
|
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow, type ScheduleWindow } from "./time.js";
|
|
4
|
+
export { buildThreadWithOpener } from "./threads.js";
|
|
4
5
|
export { calculateSmsSegments, normalizeForGsm7, type SmsEncoding, type SmsSegmentInfo } from "./smsSegments.js";
|
|
5
6
|
export { formatMoney, formatWorkspaceMoney, createMoneyFormatters, toNumber } from "./money.js";
|
|
6
7
|
export { bucketOf, perTickCapacity, type PacingBucket } from "./pacing.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,KAAK,cAAc,EACpB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { withErrorHandlingAndValidation } from "./withErrorHandlingAndValidation.js";
|
|
2
2
|
export { renderTemplate, extractTemplateTokens, buildOutreachContext, buildAutopilotContextLines, toCallMetadata, pickRandomNumber, snakeToCamel, renderWhatsAppTemplate } from "./outreach.js";
|
|
3
3
|
export { localParts, localDateString, isSameLocalDay, localWeekdayISO, localTimeHHMM, isWithinScheduleWindow } from "./time.js";
|
|
4
|
+
export { buildThreadWithOpener } from "./threads.js";
|
|
4
5
|
export { calculateSmsSegments, normalizeForGsm7 } from "./smsSegments.js";
|
|
5
6
|
export { formatMoney, formatWorkspaceMoney, createMoneyFormatters, toNumber } from "./money.js";
|
|
6
7
|
export { bucketOf, perTickCapacity } from "./pacing.js";
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,EACL,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,eAAe,EACf,aAAa,EACb,sBAAsB,EAEvB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAGjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { EmailThreadMessage } from "../types/email.js";
|
|
2
|
+
/**
|
|
3
|
+
* Prepends the initial outbound message (the collection notice we sent) to a reply
|
|
4
|
+
* thread, so a conversation reads as the whole exchange rather than starting at the
|
|
5
|
+
* customer's first reply.
|
|
6
|
+
*
|
|
7
|
+
* Dispatch stores that notice as flat `channelData.messageBody`/`subject` fields, not as
|
|
8
|
+
* a thread message — `emailThread`/`whatsAppThread` are only created once the first reply
|
|
9
|
+
* arrives. Without this, the autopilot's first-ever view of a conversation is that reply,
|
|
10
|
+
* so it cannot answer "¿de qué trata esto?", cite a link that appeared only in the notice,
|
|
11
|
+
* or reference its subject line.
|
|
12
|
+
*
|
|
13
|
+
* Deliberately **not** persisted back into `channelData`. Building it here, at the point of
|
|
14
|
+
* use, keeps `messageBody` the single source of truth for the notice, needs no migration or
|
|
15
|
+
* backfill, and works for gestiones already in flight. It also avoids the console rendering
|
|
16
|
+
* the notice twice, since `GestionDetail` already shows `messageBody` above the thread.
|
|
17
|
+
*
|
|
18
|
+
* @param channelData the gestión's `channelData` (any shape; missing fields are tolerated)
|
|
19
|
+
* @param messages the reply thread as stored, oldest first
|
|
20
|
+
* @returns `[opener, ...messages]`, or `messages` unchanged when there is no notice to add
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildThreadWithOpener(channelData: unknown, messages: EmailThreadMessage[]): EmailThreadMessage[];
|
|
23
|
+
//# sourceMappingURL=threads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/utils/threads.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAa5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,kBAAkB,EAAE,GAC7B,kBAAkB,EAAE,CAgBtB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepends the initial outbound message (the collection notice we sent) to a reply
|
|
3
|
+
* thread, so a conversation reads as the whole exchange rather than starting at the
|
|
4
|
+
* customer's first reply.
|
|
5
|
+
*
|
|
6
|
+
* Dispatch stores that notice as flat `channelData.messageBody`/`subject` fields, not as
|
|
7
|
+
* a thread message — `emailThread`/`whatsAppThread` are only created once the first reply
|
|
8
|
+
* arrives. Without this, the autopilot's first-ever view of a conversation is that reply,
|
|
9
|
+
* so it cannot answer "¿de qué trata esto?", cite a link that appeared only in the notice,
|
|
10
|
+
* or reference its subject line.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately **not** persisted back into `channelData`. Building it here, at the point of
|
|
13
|
+
* use, keeps `messageBody` the single source of truth for the notice, needs no migration or
|
|
14
|
+
* backfill, and works for gestiones already in flight. It also avoids the console rendering
|
|
15
|
+
* the notice twice, since `GestionDetail` already shows `messageBody` above the thread.
|
|
16
|
+
*
|
|
17
|
+
* @param channelData the gestión's `channelData` (any shape; missing fields are tolerated)
|
|
18
|
+
* @param messages the reply thread as stored, oldest first
|
|
19
|
+
* @returns `[opener, ...messages]`, or `messages` unchanged when there is no notice to add
|
|
20
|
+
*/
|
|
21
|
+
export function buildThreadWithOpener(channelData, messages) {
|
|
22
|
+
const cd = (channelData ?? {});
|
|
23
|
+
const body = typeof cd.messageBody === "string" ? cd.messageBody : "";
|
|
24
|
+
if (!body)
|
|
25
|
+
return messages;
|
|
26
|
+
const opener = {
|
|
27
|
+
direction: "outbound",
|
|
28
|
+
from: typeof cd.from === "string" && cd.from ? cd.from : "agent",
|
|
29
|
+
// The notice's send time lives on the gestión (`contactedAt`), not in `channelData`,
|
|
30
|
+
// and no prompt renderer reads `at`. Left empty rather than invented.
|
|
31
|
+
at: "",
|
|
32
|
+
body
|
|
33
|
+
};
|
|
34
|
+
if (typeof cd.subject === "string" && cd.subject)
|
|
35
|
+
opener.subject = cd.subject;
|
|
36
|
+
return [opener, ...messages];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=threads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../src/utils/threads.ts"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAoB,EACpB,QAA8B;IAE9B,MAAM,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE,CAAiB,CAAC;IAC/C,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC;IAE3B,MAAM,MAAM,GAAuB;QACjC,SAAS,EAAE,UAAU;QACrB,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;QAChE,qFAAqF;QACrF,sEAAsE;QACtE,EAAE,EAAE,EAAE;QACN,IAAI;KACL,CAAC;IACF,IAAI,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;IAE9E,OAAO,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|