@talkpilot/core-db 1.3.86 → 1.3.88
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 +19 -0
- package/dist/configuration/gptLive.seed.d.ts +2 -0
- package/dist/configuration/gptLive.seed.d.ts.map +1 -0
- package/dist/configuration/gptLive.seed.js +59 -0
- package/dist/configuration/gptLive.seed.js.map +1 -0
- package/dist/talkpilot/clients/clients.quota.constants.d.ts +2 -0
- package/dist/talkpilot/clients/clients.quota.constants.d.ts.map +1 -0
- package/dist/talkpilot/clients/clients.quota.constants.js +5 -0
- package/dist/talkpilot/clients/clients.quota.constants.js.map +1 -0
- package/dist/talkpilot/clients/clients.quota.utils.d.ts +8 -0
- package/dist/talkpilot/clients/clients.quota.utils.d.ts.map +1 -0
- package/dist/talkpilot/clients/clients.quota.utils.js +45 -0
- package/dist/talkpilot/clients/clients.quota.utils.js.map +1 -0
- package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts +7 -1
- package/dist/talkpilot/contextNotes/contextNotes.getters.d.ts.map +1 -1
- package/dist/talkpilot/contextNotes/contextNotes.getters.js +37 -1
- package/dist/talkpilot/contextNotes/contextNotes.getters.js.map +1 -1
- package/dist/talkpilot/contextNotes/contextNotes.types.d.ts +6 -0
- package/dist/talkpilot/contextNotes/contextNotes.types.d.ts.map +1 -1
- package/dist/talkpilot/flows/flows.schema.d.ts +0 -9
- package/dist/talkpilot/flows/flows.schema.d.ts.map +1 -1
- package/dist/talkpilot/flows/flows.schema.js +0 -7
- package/dist/talkpilot/flows/flows.schema.js.map +1 -1
- package/dist/talkpilot/flows/flows.types.d.ts +0 -3
- package/dist/talkpilot/flows/flows.types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/talkpilot/contextNotes/__tests__/contextNotes.getters.spec.ts +141 -0
- package/src/talkpilot/contextNotes/contextNotes.getters.ts +75 -1
- package/src/talkpilot/contextNotes/contextNotes.types.ts +7 -0
- package/src/talkpilot/flows/__tests__/flows.schema.spec.ts +0 -11
- package/src/talkpilot/flows/flows.schema.ts +0 -7
- package/src/talkpilot/flows/flows.types.ts +0 -1
- package/dist/talkpilot/subscriptions/subscriptions.utils.d.ts +0 -4
- package/dist/talkpilot/subscriptions/subscriptions.utils.d.ts.map +0 -1
- package/dist/talkpilot/subscriptions/subscriptions.utils.js +0 -20
- package/dist/talkpilot/subscriptions/subscriptions.utils.js.map +0 -1
package/README.md
CHANGED
|
@@ -187,6 +187,8 @@ Refer to `DEVELOPMENT.md` for the full walkthrough, token instructions, and fact
|
|
|
187
187
|
| 1.3.71 | Who ended a call (CP-1873): optional `Call.endedBy` (`system` / `agent` / `user`), `CallEndedByValues`, and `setCallEndedBy` (first write wins). **Breaking** vs 1.3.69–1.3.70: the value `resident` was replaced by `user`. |
|
|
188
188
|
| 1.3.74 | Added `human` to `CallEndedByValues` (CP-1873): a human agent ended the call, after a transfer or in a conference. |
|
|
189
189
|
| 1.3.82 | Complaint tracking on `muniIssues` (CP-1888): optional `status` / `response` / `updatedAt`; an editable TalkPilot response with up to `MUNI_ISSUE_MAX_RESPONSE_IMAGES` (5) `response.imageUrls` and `response.updatedAt`; `updateMuniIssueStatus`, `setMuniIssueResponse`, `findMuniIssuesByClient`, `countMuniIssuesByClient`, `getMuniIssueByIdForClient`; index `clientId_1_createdAt_-1`. |
|
|
190
|
+
| 1.3.88 | Single-note writes on `contextNotes` (CP-1998): append, update, or remove one entry without replacing the rest of the list. |
|
|
191
|
+
|
|
190
192
|
|
|
191
193
|
### 1.1.9
|
|
192
194
|
|
|
@@ -835,6 +837,23 @@ New `CallEndedByValues.Human` (`"human"`): a human agent ended the call, either
|
|
|
835
837
|
|
|
836
838
|
No — purely additive. **TalkPilot Server** should upgrade to **1.3.74** to write it.
|
|
837
839
|
|
|
840
|
+
### 1.3.85 — Single context-note writes (CP-1998)
|
|
841
|
+
|
|
842
|
+
Append, update, or remove one note on a client/product document without replacing the rest of the `notes` array. `appendContextNoteEntry` creates the document when none exists yet. `setContextNoteEntries` still replaces the whole list.
|
|
843
|
+
|
|
844
|
+
**Added**
|
|
845
|
+
|
|
846
|
+
| Export | Purpose |
|
|
847
|
+
| --- | --- |
|
|
848
|
+
| `ContextNoteEntryWrite` | Fields the caller sets: `title`, `content`, `activeFrom`, `expiresAt`. The getter assigns `_id`, `createdAt`, and `updatedAt`. |
|
|
849
|
+
| `appendContextNoteEntry(clientId, product, entry, now?)` | Pushes one note and upserts the document. Returns the stored entry. |
|
|
850
|
+
| `updateContextNoteEntryFields(clientId, product, noteId, entry, now?)` | Replaces one note's writable fields and `updatedAt`. Leaves `createdAt` and the other notes alone. Returns `null` when the note is missing. |
|
|
851
|
+
| `pullContextNoteEntry(clientId, product, noteId)` | Removes one note by id. Returns `false` when nothing changed. |
|
|
852
|
+
|
|
853
|
+
**Do I need to update my app?**
|
|
854
|
+
|
|
855
|
+
No — purely additive. Use these instead of `setContextNoteEntries` when only one note changes.
|
|
856
|
+
|
|
838
857
|
## 🛠 CI/CD & deployment
|
|
839
858
|
|
|
840
859
|
- This package is consumed by Cloud Build-based services (TalkPilot Server, MIS, CIS) as a dependency when Docker images are built. Keep `dist/` in sync with your builds because the compiled artifact is what downstream services install.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gptLive.seed.d.ts","sourceRoot":"","sources":["../../src/configuration/gptLive.seed.ts"],"names":[],"mappings":"AA2BA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyC1D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seedGptLiveDocuments = seedGptLiveDocuments;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
const models_getters_1 = require("./models/models.getters");
|
|
6
|
+
const prompts_getters_1 = require("./prompts/prompts.getters");
|
|
7
|
+
const GPT_LIVE_MODEL_ID = "gpt-live-1";
|
|
8
|
+
const VOICE_PROMPT = "gptLiveVoiceInstructions";
|
|
9
|
+
const BACKEND_PROMPT = "gptLiveBackendInstructions";
|
|
10
|
+
const VOICE_INSTRUCTIONS = [
|
|
11
|
+
"You are a phone agent on a live call. Speak naturally and briefly.",
|
|
12
|
+
"{{flowInstructions}}",
|
|
13
|
+
"Backchannel: {{backchannelPolicy}}",
|
|
14
|
+
"Interruptions: {{interruptionPolicy}}",
|
|
15
|
+
"Delegation: {{delegationPolicy}}",
|
|
16
|
+
"When the flow is finished, say one short closing line and then stop talking.",
|
|
17
|
+
].join("\n");
|
|
18
|
+
const BACKEND_INSTRUCTIONS = [
|
|
19
|
+
"You are the reasoning backend for a phone agent. Use the tools to do the work.",
|
|
20
|
+
"Return only what the tools returned. Never invent a result, a ticket number, or a confirmation.",
|
|
21
|
+
"{{flowInstructions}}",
|
|
22
|
+
"{{backchannelPolicy}}",
|
|
23
|
+
"{{interruptionPolicy}}",
|
|
24
|
+
"{{delegationPolicy}}",
|
|
25
|
+
].join("\n");
|
|
26
|
+
async function seedGptLiveDocuments() {
|
|
27
|
+
const now = new Date();
|
|
28
|
+
await (0, models_getters_1.getModelsCollection)().updateOne({ modelId: GPT_LIVE_MODEL_ID, type: "realtime" }, {
|
|
29
|
+
$setOnInsert: {
|
|
30
|
+
_id: new mongodb_1.ObjectId(),
|
|
31
|
+
modelId: GPT_LIVE_MODEL_ID,
|
|
32
|
+
name: "GPT-Live 1",
|
|
33
|
+
description: "Turnless full-duplex voice",
|
|
34
|
+
type: "realtime",
|
|
35
|
+
provider: "openai-live",
|
|
36
|
+
available: true,
|
|
37
|
+
features: { supportsAudio: true },
|
|
38
|
+
configDefaults: { backendModel: "gpt-5.6-luna" },
|
|
39
|
+
createdAt: now,
|
|
40
|
+
updatedAt: now,
|
|
41
|
+
},
|
|
42
|
+
}, { upsert: true });
|
|
43
|
+
for (const prompt of [
|
|
44
|
+
{ name: VOICE_PROMPT, content: VOICE_INSTRUCTIONS },
|
|
45
|
+
{ name: BACKEND_PROMPT, content: BACKEND_INSTRUCTIONS },
|
|
46
|
+
]) {
|
|
47
|
+
await (0, prompts_getters_1.getPromptsCollection)().updateOne({ name: prompt.name }, {
|
|
48
|
+
$setOnInsert: {
|
|
49
|
+
_id: new mongodb_1.ObjectId(),
|
|
50
|
+
name: prompt.name,
|
|
51
|
+
content: prompt.content,
|
|
52
|
+
productName: "municipal",
|
|
53
|
+
createdAt: now,
|
|
54
|
+
updatedAt: now,
|
|
55
|
+
},
|
|
56
|
+
}, { upsert: true });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=gptLive.seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gptLive.seed.js","sourceRoot":"","sources":["../../src/configuration/gptLive.seed.ts"],"names":[],"mappings":";;AA2BA,oDAyCC;AApED,qCAA2C;AAC3C,4DAA8D;AAC9D,+DAAiE;AAGjE,MAAM,iBAAiB,GAAG,YAAY,CAAC;AACvC,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAChD,MAAM,cAAc,GAAG,4BAA4B,CAAC;AAEpD,MAAM,kBAAkB,GAAG;IACzB,oEAAoE;IACpE,sBAAsB;IACtB,oCAAoC;IACpC,uCAAuC;IACvC,kCAAkC;IAClC,8EAA8E;CAC/E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,oBAAoB,GAAG;IAC3B,gFAAgF;IAChF,iGAAiG;IACjG,sBAAsB;IACtB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;CACvB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEN,KAAK,UAAU,oBAAoB;IACxC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAA,oCAAmB,GAAE,CAAC,SAAS,CACnC,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAsB,EACpE;QACE,YAAY,EAAE;YACZ,GAAG,EAAE,IAAI,kBAAQ,EAAE;YACnB,OAAO,EAAE,iBAAiB;YAC1B,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,4BAA4B;YACzC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,aAAa;YACvB,SAAS,EAAE,IAAI;YACf,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE;YACjC,cAAc,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE;YAChD,SAAS,EAAE,GAAG;YACd,SAAS,EAAE,GAAG;SACQ;KACzB,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IAEF,KAAK,MAAM,MAAM,IAAI;QACnB,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,kBAAkB,EAAE;QACnD,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,EAAE;KACxD,EAAE,CAAC;QACF,MAAM,IAAA,sCAAoB,GAAE,CAAC,SAAS,CACpC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EACrB;YACE,YAAY,EAAE;gBACZ,GAAG,EAAE,IAAI,kBAAQ,EAAE;gBACnB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,GAAG;gBACd,SAAS,EAAE,GAAG;aACf;SACF,EACD,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.quota.constants.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clients/clients.quota.constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,MAAM,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.quota.constants.js","sourceRoot":"","sources":["../../../src/talkpilot/clients/clients.quota.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ClientQuotaNotifications, ClientQuotaState, ClientQuotaStatus, QuotaThresholdAlert } from "./clients.quota.types";
|
|
2
|
+
export declare const computeClientQuotaStatus: (quota: ClientQuotaState | null) => ClientQuotaStatus;
|
|
3
|
+
export declare const getQuotaAlerts: (quota?: ClientQuotaState) => QuotaThresholdAlert[];
|
|
4
|
+
export declare const findFullQuotaAlertIndex: (alerts: QuotaThresholdAlert[]) => number;
|
|
5
|
+
export declare const getFullQuotaAlert: (quota?: ClientQuotaState) => QuotaThresholdAlert | undefined;
|
|
6
|
+
export declare const isFullQuotaAlert: (thresholdPct: number) => boolean;
|
|
7
|
+
export declare const toClientQuotaNotifications: (quota: ClientQuotaState | null) => ClientQuotaNotifications;
|
|
8
|
+
//# sourceMappingURL=clients.quota.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.quota.utils.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/clients/clients.quota.utils.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAQ/B,eAAO,MAAM,wBAAwB,GACnC,OAAO,gBAAgB,GAAG,IAAI,KAC7B,iBAiBF,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,QAAQ,gBAAgB,KAAG,mBAAmB,EAClC,CAAC;AAE5C,eAAO,MAAM,uBAAuB,GAAI,QAAQ,mBAAmB,EAAE,KAAG,MACP,CAAC;AAElE,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,gBAAgB,KACvB,mBAAmB,GAAG,SAIxB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,cAAc,MAAM,KAAG,OAClB,CAAC;AAEvC,eAAO,MAAM,0BAA0B,GACrC,OAAO,gBAAgB,GAAG,IAAI,KAC7B,wBASD,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toClientQuotaNotifications = exports.isFullQuotaAlert = exports.getFullQuotaAlert = exports.findFullQuotaAlertIndex = exports.getQuotaAlerts = exports.computeClientQuotaStatus = void 0;
|
|
4
|
+
const clients_quota_constants_1 = require("./clients.quota.constants");
|
|
5
|
+
const computeUsagePct = (usedQuota, totalQuota) => totalQuota > 0 ? Math.round((usedQuota / totalQuota) * 100) : 0;
|
|
6
|
+
const isPastExpiration = (expiresAt) => expiresAt ? Date.now() > new Date(expiresAt).getTime() : false;
|
|
7
|
+
const computeClientQuotaStatus = (quota) => {
|
|
8
|
+
if (!quota) {
|
|
9
|
+
return { hasQuota: false };
|
|
10
|
+
}
|
|
11
|
+
const totalQuota = quota.totalQuota;
|
|
12
|
+
const usedQuota = quota.usedQuota ?? 0;
|
|
13
|
+
return {
|
|
14
|
+
hasQuota: true,
|
|
15
|
+
totalQuota,
|
|
16
|
+
usedQuota,
|
|
17
|
+
pct: computeUsagePct(usedQuota, totalQuota),
|
|
18
|
+
expiresAt: quota.expiresAt ? new Date(quota.expiresAt).toISOString() : null,
|
|
19
|
+
isExceeded: usedQuota >= totalQuota,
|
|
20
|
+
isExpired: isPastExpiration(quota.expiresAt),
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
exports.computeClientQuotaStatus = computeClientQuotaStatus;
|
|
24
|
+
const getQuotaAlerts = (quota) => quota?.alerts?.length ? quota.alerts : [];
|
|
25
|
+
exports.getQuotaAlerts = getQuotaAlerts;
|
|
26
|
+
const findFullQuotaAlertIndex = (alerts) => alerts.findIndex((a) => a.thresholdPct >= clients_quota_constants_1.FULL_QUOTA_THRESHOLD);
|
|
27
|
+
exports.findFullQuotaAlertIndex = findFullQuotaAlertIndex;
|
|
28
|
+
const getFullQuotaAlert = (quota) => {
|
|
29
|
+
const alerts = (0, exports.getQuotaAlerts)(quota);
|
|
30
|
+
const index = (0, exports.findFullQuotaAlertIndex)(alerts);
|
|
31
|
+
return index >= 0 ? alerts[index] : undefined;
|
|
32
|
+
};
|
|
33
|
+
exports.getFullQuotaAlert = getFullQuotaAlert;
|
|
34
|
+
const isFullQuotaAlert = (thresholdPct) => thresholdPct >= clients_quota_constants_1.FULL_QUOTA_THRESHOLD;
|
|
35
|
+
exports.isFullQuotaAlert = isFullQuotaAlert;
|
|
36
|
+
const toClientQuotaNotifications = (quota) => ({
|
|
37
|
+
alerts: (0, exports.getQuotaAlerts)(quota ?? undefined).map(({ thresholdPct, recipientEmails, thresholdSent }) => ({
|
|
38
|
+
thresholdPct,
|
|
39
|
+
recipientEmails: recipientEmails ?? [],
|
|
40
|
+
...(thresholdSent ? { thresholdSent: true } : {}),
|
|
41
|
+
})),
|
|
42
|
+
...(quota?.expiredSent ? { expiredSent: true } : {}),
|
|
43
|
+
});
|
|
44
|
+
exports.toClientQuotaNotifications = toClientQuotaNotifications;
|
|
45
|
+
//# sourceMappingURL=clients.quota.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.quota.utils.js","sourceRoot":"","sources":["../../../src/talkpilot/clients/clients.quota.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Collection, ObjectId, WithId } from "mongodb";
|
|
2
|
-
import type { ContextNote, ContextNoteEntry } from "./contextNotes.types";
|
|
2
|
+
import type { ContextNote, ContextNoteEntry, ContextNoteEntryWrite } from "./contextNotes.types";
|
|
3
3
|
export declare const getContextNotesCollection: () => Collection<ContextNote>;
|
|
4
4
|
/** Returns all context note documents matching a clientId and product. */
|
|
5
5
|
export declare const getContextNotes: (clientId: string, product: string) => Promise<WithId<ContextNote>[]>;
|
|
@@ -14,6 +14,12 @@ export declare const setContextNoteConfig: (id: ObjectId, clientId: string, conf
|
|
|
14
14
|
systemPrompt?: string;
|
|
15
15
|
product?: string;
|
|
16
16
|
}) => Promise<boolean>;
|
|
17
|
+
/** Appends one note. Other notes on the document are left untouched. */
|
|
18
|
+
export declare const appendContextNoteEntry: (clientId: string, product: string, entry: ContextNoteEntryWrite, now?: Date) => Promise<ContextNoteEntry>;
|
|
19
|
+
/** Replaces one note's fields. Other notes on the document are left untouched. */
|
|
20
|
+
export declare const updateContextNoteEntryFields: (clientId: string, product: string, noteId: ObjectId, entry: ContextNoteEntryWrite, now?: Date) => Promise<ContextNoteEntry | null>;
|
|
21
|
+
/** Removes one note by id. Other notes on the document are left untouched. */
|
|
22
|
+
export declare const pullContextNoteEntry: (clientId: string, product: string, noteId: ObjectId) => Promise<boolean>;
|
|
17
23
|
/** Removes a single note entry from a document by its _id. */
|
|
18
24
|
export declare const deleteContextNoteEntry: (id: ObjectId, clientId: string, noteId: ObjectId) => Promise<boolean>;
|
|
19
25
|
//# sourceMappingURL=contextNotes.getters.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextNotes.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"contextNotes.getters.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.getters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,KAAK,EACV,WAAW,EACX,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,yBAAyB,QAAO,UAAU,CAAC,WAAW,CAElE,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,SAAS,MAAM,KACd,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAE/B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,qBAAqB,GAChC,UAAU,MAAM,EAChB,SAAS,MAAM,KACd,OAAO,CAAC,gBAAgB,EAAE,CAU5B,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,GAC5B,MAAM,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,KAC7B,OAAO,CAAC,QAAQ,CAIlB,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,qBAAqB,GAChC,IAAI,QAAQ,EACZ,UAAU,MAAM,EAChB,OAAO,gBAAgB,EAAE,KACxB,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,oBAAoB,GAC/B,IAAI,QAAQ,EACZ,UAAU,MAAM,EAChB,QAAQ;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,KAClD,OAAO,CAAC,OAAO,CAYjB,CAAC;AAQF,wEAAwE;AACxE,eAAO,MAAM,sBAAsB,GACjC,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,OAAO,qBAAqB,EAC5B,MAAK,IAAiB,KACrB,OAAO,CAAC,gBAAgB,CAkB1B,CAAC;AAEF,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,GACvC,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,QAAQ,QAAQ,EAChB,OAAO,qBAAqB,EAC5B,MAAK,IAAiB,KACrB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAgBjC,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,GAC/B,UAAU,MAAM,EAChB,SAAS,MAAM,EACf,QAAQ,QAAQ,KACf,OAAO,CAAC,OAAO,CAMjB,CAAC;AAEF,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,GACjC,IAAI,QAAQ,EACZ,UAAU,MAAM,EAChB,QAAQ,QAAQ,KACf,OAAO,CAAC,OAAO,CAMjB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.deleteContextNoteEntry = exports.setContextNoteConfig = exports.setContextNoteEntries = exports.createContextNote = exports.getActiveContextNotes = exports.getContextNotes = exports.getContextNotesCollection = void 0;
|
|
3
|
+
exports.deleteContextNoteEntry = exports.pullContextNoteEntry = exports.updateContextNoteEntryFields = exports.appendContextNoteEntry = exports.setContextNoteConfig = exports.setContextNoteEntries = exports.createContextNote = exports.getActiveContextNotes = exports.getContextNotes = exports.getContextNotesCollection = void 0;
|
|
4
4
|
const mongodb_1 = require("mongodb");
|
|
5
5
|
const index_1 = require("../index");
|
|
6
6
|
const getContextNotesCollection = () => {
|
|
@@ -46,6 +46,42 @@ const setContextNoteConfig = async (id, clientId, config) => {
|
|
|
46
46
|
return result.matchedCount > 0;
|
|
47
47
|
};
|
|
48
48
|
exports.setContextNoteConfig = setContextNoteConfig;
|
|
49
|
+
const findNoteEntryById = (doc, noteId) => doc?.notes.find((note) => note._id.equals(noteId)) ?? null;
|
|
50
|
+
/** Appends one note. Other notes on the document are left untouched. */
|
|
51
|
+
const appendContextNoteEntry = async (clientId, product, entry, now = new Date()) => {
|
|
52
|
+
const note = {
|
|
53
|
+
_id: new mongodb_1.ObjectId(),
|
|
54
|
+
title: entry.title,
|
|
55
|
+
content: entry.content,
|
|
56
|
+
activeFrom: entry.activeFrom,
|
|
57
|
+
expiresAt: entry.expiresAt,
|
|
58
|
+
createdAt: now,
|
|
59
|
+
updatedAt: now,
|
|
60
|
+
};
|
|
61
|
+
const saved = await (0, exports.getContextNotesCollection)().findOneAndUpdate({ clientId, product }, { $push: { notes: note } }, { upsert: true, returnDocument: "after" });
|
|
62
|
+
return findNoteEntryById(saved, note._id) ?? note;
|
|
63
|
+
};
|
|
64
|
+
exports.appendContextNoteEntry = appendContextNoteEntry;
|
|
65
|
+
/** Replaces one note's fields. Other notes on the document are left untouched. */
|
|
66
|
+
const updateContextNoteEntryFields = async (clientId, product, noteId, entry, now = new Date()) => {
|
|
67
|
+
const saved = await (0, exports.getContextNotesCollection)().findOneAndUpdate({ clientId, product, "notes._id": noteId }, {
|
|
68
|
+
$set: {
|
|
69
|
+
"notes.$.title": entry.title,
|
|
70
|
+
"notes.$.content": entry.content,
|
|
71
|
+
"notes.$.activeFrom": entry.activeFrom,
|
|
72
|
+
"notes.$.expiresAt": entry.expiresAt,
|
|
73
|
+
"notes.$.updatedAt": now,
|
|
74
|
+
},
|
|
75
|
+
}, { returnDocument: "after" });
|
|
76
|
+
return findNoteEntryById(saved, noteId);
|
|
77
|
+
};
|
|
78
|
+
exports.updateContextNoteEntryFields = updateContextNoteEntryFields;
|
|
79
|
+
/** Removes one note by id. Other notes on the document are left untouched. */
|
|
80
|
+
const pullContextNoteEntry = async (clientId, product, noteId) => {
|
|
81
|
+
const result = await (0, exports.getContextNotesCollection)().updateOne({ clientId, product, "notes._id": noteId }, { $pull: { notes: { _id: noteId } } });
|
|
82
|
+
return result.modifiedCount > 0;
|
|
83
|
+
};
|
|
84
|
+
exports.pullContextNoteEntry = pullContextNoteEntry;
|
|
49
85
|
/** Removes a single note entry from a document by its _id. */
|
|
50
86
|
const deleteContextNoteEntry = async (id, clientId, noteId) => {
|
|
51
87
|
const result = await (0, exports.getContextNotesCollection)().updateOne({ _id: id, clientId }, { $pull: { notes: { _id: noteId } } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextNotes.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.getters.ts"],"names":[],"mappings":";;;AAAA,qCAAuD;AACvD,oCAAiC;
|
|
1
|
+
{"version":3,"file":"contextNotes.getters.js","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.getters.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@ export type ContextNoteEntry = {
|
|
|
8
8
|
createdAt: Date;
|
|
9
9
|
updatedAt: Date;
|
|
10
10
|
};
|
|
11
|
+
export type ContextNoteEntryWrite = {
|
|
12
|
+
title: string;
|
|
13
|
+
content: string;
|
|
14
|
+
activeFrom: Date;
|
|
15
|
+
expiresAt: Date | null;
|
|
16
|
+
};
|
|
11
17
|
export type ContextNote = {
|
|
12
18
|
_id: ObjectId;
|
|
13
19
|
clientId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contextNotes.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"contextNotes.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/contextNotes/contextNotes.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,QAAQ,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,IAAI,CAAC;IACjB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,GAAG,EAAE,QAAQ,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC"}
|
|
@@ -20,15 +20,6 @@ export declare const flowMongoSchema: {
|
|
|
20
20
|
readonly disableGenericPrompt: {
|
|
21
21
|
readonly bsonType: "bool";
|
|
22
22
|
};
|
|
23
|
-
readonly keypadInput: {
|
|
24
|
-
readonly bsonType: readonly ["object", "null"];
|
|
25
|
-
readonly properties: {
|
|
26
|
-
readonly enabled: {
|
|
27
|
-
readonly bsonType: "bool";
|
|
28
|
-
};
|
|
29
|
-
};
|
|
30
|
-
readonly additionalProperties: false;
|
|
31
|
-
};
|
|
32
23
|
readonly voice: {
|
|
33
24
|
readonly bsonType: readonly ["string", "null"];
|
|
34
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flows.schema.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"flows.schema.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.schema.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmMlB,CAAC"}
|
|
@@ -16,13 +16,6 @@ exports.flowMongoSchema = {
|
|
|
16
16
|
systemInstructions: { bsonType: "string" },
|
|
17
17
|
initialSentence: { bsonType: "string" },
|
|
18
18
|
disableGenericPrompt: { bsonType: "bool" },
|
|
19
|
-
keypadInput: {
|
|
20
|
-
bsonType: ["object", "null"],
|
|
21
|
-
properties: {
|
|
22
|
-
enabled: { bsonType: "bool" },
|
|
23
|
-
},
|
|
24
|
-
additionalProperties: false,
|
|
25
|
-
},
|
|
26
19
|
voice: { bsonType: ["string", "null"] },
|
|
27
20
|
conversationSettings: {
|
|
28
21
|
bsonType: ["object", "null"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flows.schema.js","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.schema.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG;IAC7B,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE;QACR,UAAU;QACV,oBAAoB;QACpB,iBAAiB;QACjB,cAAc;KACf;IACD,UAAU,EAAE;QACV,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE;QAC7B,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAChC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAChC,kBAAkB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QAC1C,eAAe,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE;QACvC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC1C,
|
|
1
|
+
{"version":3,"file":"flows.schema.js","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flows.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"flows.types.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/flows/flows.types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -6,6 +6,9 @@ import {
|
|
|
6
6
|
setContextNoteEntries,
|
|
7
7
|
setContextNoteConfig,
|
|
8
8
|
deleteContextNoteEntry,
|
|
9
|
+
appendContextNoteEntry,
|
|
10
|
+
updateContextNoteEntryFields,
|
|
11
|
+
pullContextNoteEntry,
|
|
9
12
|
} from "../contextNotes.getters";
|
|
10
13
|
import { ObjectId } from "../../index";
|
|
11
14
|
import {
|
|
@@ -203,6 +206,144 @@ describe("contextNotes getters", () => {
|
|
|
203
206
|
expect(saved?.notes[0]._id.toString()).toBe(noteToKeep._id.toString());
|
|
204
207
|
});
|
|
205
208
|
|
|
209
|
+
it("should append one note without replacing the others", async () => {
|
|
210
|
+
const kept = createContextNoteEntry({ title: "kept" });
|
|
211
|
+
const doc = buildContextNote({ notes: [kept] });
|
|
212
|
+
await createContextNote(doc);
|
|
213
|
+
const now = new Date("2026-10-18T12:00:00.000Z");
|
|
214
|
+
|
|
215
|
+
const added = await appendContextNoteEntry(
|
|
216
|
+
doc.clientId,
|
|
217
|
+
doc.product,
|
|
218
|
+
{
|
|
219
|
+
title: "added",
|
|
220
|
+
content: "new content",
|
|
221
|
+
activeFrom: now,
|
|
222
|
+
expiresAt: null,
|
|
223
|
+
},
|
|
224
|
+
now,
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
const saved = await getContextNotesCollection().findOne({
|
|
228
|
+
clientId: doc.clientId,
|
|
229
|
+
product: doc.product,
|
|
230
|
+
});
|
|
231
|
+
expect(saved?.notes).toHaveLength(2);
|
|
232
|
+
expect(saved?.notes[0]._id.toString()).toBe(kept._id.toString());
|
|
233
|
+
expect(saved?.notes[1].title).toBe("added");
|
|
234
|
+
expect(added._id.toString()).toBe(saved?.notes[1]._id.toString());
|
|
235
|
+
expect(added.createdAt).toEqual(now);
|
|
236
|
+
});
|
|
237
|
+
|
|
238
|
+
it("should create the document when appending the first note", async () => {
|
|
239
|
+
const clientId = new ObjectId().toString();
|
|
240
|
+
const now = new Date("2026-10-18T12:00:00.000Z");
|
|
241
|
+
|
|
242
|
+
const added = await appendContextNoteEntry(
|
|
243
|
+
clientId,
|
|
244
|
+
"Municipal",
|
|
245
|
+
{
|
|
246
|
+
title: "first",
|
|
247
|
+
content: "content",
|
|
248
|
+
activeFrom: now,
|
|
249
|
+
expiresAt: null,
|
|
250
|
+
},
|
|
251
|
+
now,
|
|
252
|
+
);
|
|
253
|
+
|
|
254
|
+
const saved = await getContextNotes(clientId, "Municipal");
|
|
255
|
+
expect(saved).toHaveLength(1);
|
|
256
|
+
expect(saved[0].notes).toHaveLength(1);
|
|
257
|
+
expect(saved[0].notes[0]._id.toString()).toBe(added._id.toString());
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
it("should update one note and leave the others unchanged", async () => {
|
|
261
|
+
const kept = createContextNoteEntry({ title: "kept" });
|
|
262
|
+
const target = createContextNoteEntry({ title: "before" });
|
|
263
|
+
const doc = buildContextNote({ notes: [kept, target] });
|
|
264
|
+
await createContextNote(doc);
|
|
265
|
+
const now = new Date("2026-10-18T13:00:00.000Z");
|
|
266
|
+
const activeFrom = new Date("2026-10-01T00:00:00.000Z");
|
|
267
|
+
|
|
268
|
+
const updated = await updateContextNoteEntryFields(
|
|
269
|
+
doc.clientId,
|
|
270
|
+
doc.product,
|
|
271
|
+
target._id,
|
|
272
|
+
{
|
|
273
|
+
title: "after",
|
|
274
|
+
content: "changed",
|
|
275
|
+
activeFrom,
|
|
276
|
+
expiresAt: null,
|
|
277
|
+
},
|
|
278
|
+
now,
|
|
279
|
+
);
|
|
280
|
+
|
|
281
|
+
const saved = await getContextNotesCollection().findOne({
|
|
282
|
+
clientId: doc.clientId,
|
|
283
|
+
product: doc.product,
|
|
284
|
+
});
|
|
285
|
+
expect(updated?.title).toBe("after");
|
|
286
|
+
expect(updated?.updatedAt).toEqual(now);
|
|
287
|
+
expect(saved?.notes).toHaveLength(2);
|
|
288
|
+
expect(saved?.notes[0].title).toBe("kept");
|
|
289
|
+
expect(saved?.notes[1].title).toBe("after");
|
|
290
|
+
expect(saved?.notes[1].content).toBe("changed");
|
|
291
|
+
expect(saved?.notes[1].createdAt).toEqual(target.createdAt);
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
it("should return null when updating a missing note", async () => {
|
|
295
|
+
const doc = buildContextNote({ notes: [createContextNoteEntry()] });
|
|
296
|
+
await createContextNote(doc);
|
|
297
|
+
|
|
298
|
+
const updated = await updateContextNoteEntryFields(
|
|
299
|
+
doc.clientId,
|
|
300
|
+
doc.product,
|
|
301
|
+
new ObjectId(),
|
|
302
|
+
{
|
|
303
|
+
title: "missing",
|
|
304
|
+
content: "missing",
|
|
305
|
+
activeFrom: new Date(),
|
|
306
|
+
expiresAt: null,
|
|
307
|
+
},
|
|
308
|
+
);
|
|
309
|
+
|
|
310
|
+
expect(updated).toBeNull();
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it("should pull one note and leave the others", async () => {
|
|
314
|
+
const kept = createContextNoteEntry();
|
|
315
|
+
const removed = createContextNoteEntry();
|
|
316
|
+
const doc = buildContextNote({ notes: [kept, removed] });
|
|
317
|
+
await createContextNote(doc);
|
|
318
|
+
|
|
319
|
+
const pulled = await pullContextNoteEntry(
|
|
320
|
+
doc.clientId,
|
|
321
|
+
doc.product,
|
|
322
|
+
removed._id,
|
|
323
|
+
);
|
|
324
|
+
|
|
325
|
+
const saved = await getContextNotesCollection().findOne({
|
|
326
|
+
clientId: doc.clientId,
|
|
327
|
+
product: doc.product,
|
|
328
|
+
});
|
|
329
|
+
expect(pulled).toBe(true);
|
|
330
|
+
expect(saved?.notes).toHaveLength(1);
|
|
331
|
+
expect(saved?.notes[0]._id.toString()).toBe(kept._id.toString());
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
it("should return false when pulling a missing note", async () => {
|
|
335
|
+
const doc = buildContextNote({ notes: [createContextNoteEntry()] });
|
|
336
|
+
await createContextNote(doc);
|
|
337
|
+
|
|
338
|
+
const pulled = await pullContextNoteEntry(
|
|
339
|
+
doc.clientId,
|
|
340
|
+
doc.product,
|
|
341
|
+
new ObjectId(),
|
|
342
|
+
);
|
|
343
|
+
|
|
344
|
+
expect(pulled).toBe(false);
|
|
345
|
+
});
|
|
346
|
+
|
|
206
347
|
it("should return false when deleteContextNoteEntry targets a non-existent note", async () => {
|
|
207
348
|
const doc = buildContextNote({ notes: [] });
|
|
208
349
|
const id = await createContextNote(doc);
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Collection, ObjectId, WithId } from "mongodb";
|
|
2
2
|
import { getDb } from "../index";
|
|
3
|
-
import type {
|
|
3
|
+
import type {
|
|
4
|
+
ContextNote,
|
|
5
|
+
ContextNoteEntry,
|
|
6
|
+
ContextNoteEntryWrite,
|
|
7
|
+
} from "./contextNotes.types";
|
|
4
8
|
|
|
5
9
|
export const getContextNotesCollection = (): Collection<ContextNote> => {
|
|
6
10
|
return getDb().collection<ContextNote>("contextNotes");
|
|
@@ -71,6 +75,76 @@ export const setContextNoteConfig = async (
|
|
|
71
75
|
return result.matchedCount > 0;
|
|
72
76
|
};
|
|
73
77
|
|
|
78
|
+
const findNoteEntryById = (
|
|
79
|
+
doc: WithId<ContextNote> | null,
|
|
80
|
+
noteId: ObjectId,
|
|
81
|
+
): ContextNoteEntry | null =>
|
|
82
|
+
doc?.notes.find((note) => note._id.equals(noteId)) ?? null;
|
|
83
|
+
|
|
84
|
+
/** Appends one note. Other notes on the document are left untouched. */
|
|
85
|
+
export const appendContextNoteEntry = async (
|
|
86
|
+
clientId: string,
|
|
87
|
+
product: string,
|
|
88
|
+
entry: ContextNoteEntryWrite,
|
|
89
|
+
now: Date = new Date(),
|
|
90
|
+
): Promise<ContextNoteEntry> => {
|
|
91
|
+
const note: ContextNoteEntry = {
|
|
92
|
+
_id: new ObjectId(),
|
|
93
|
+
title: entry.title,
|
|
94
|
+
content: entry.content,
|
|
95
|
+
activeFrom: entry.activeFrom,
|
|
96
|
+
expiresAt: entry.expiresAt,
|
|
97
|
+
createdAt: now,
|
|
98
|
+
updatedAt: now,
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
const saved = await getContextNotesCollection().findOneAndUpdate(
|
|
102
|
+
{ clientId, product },
|
|
103
|
+
{ $push: { notes: note } },
|
|
104
|
+
{ upsert: true, returnDocument: "after" },
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
return findNoteEntryById(saved, note._id) ?? note;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/** Replaces one note's fields. Other notes on the document are left untouched. */
|
|
111
|
+
export const updateContextNoteEntryFields = async (
|
|
112
|
+
clientId: string,
|
|
113
|
+
product: string,
|
|
114
|
+
noteId: ObjectId,
|
|
115
|
+
entry: ContextNoteEntryWrite,
|
|
116
|
+
now: Date = new Date(),
|
|
117
|
+
): Promise<ContextNoteEntry | null> => {
|
|
118
|
+
const saved = await getContextNotesCollection().findOneAndUpdate(
|
|
119
|
+
{ clientId, product, "notes._id": noteId },
|
|
120
|
+
{
|
|
121
|
+
$set: {
|
|
122
|
+
"notes.$.title": entry.title,
|
|
123
|
+
"notes.$.content": entry.content,
|
|
124
|
+
"notes.$.activeFrom": entry.activeFrom,
|
|
125
|
+
"notes.$.expiresAt": entry.expiresAt,
|
|
126
|
+
"notes.$.updatedAt": now,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
{ returnDocument: "after" },
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
return findNoteEntryById(saved, noteId);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/** Removes one note by id. Other notes on the document are left untouched. */
|
|
136
|
+
export const pullContextNoteEntry = async (
|
|
137
|
+
clientId: string,
|
|
138
|
+
product: string,
|
|
139
|
+
noteId: ObjectId,
|
|
140
|
+
): Promise<boolean> => {
|
|
141
|
+
const result = await getContextNotesCollection().updateOne(
|
|
142
|
+
{ clientId, product, "notes._id": noteId },
|
|
143
|
+
{ $pull: { notes: { _id: noteId } } },
|
|
144
|
+
);
|
|
145
|
+
return result.modifiedCount > 0;
|
|
146
|
+
};
|
|
147
|
+
|
|
74
148
|
/** Removes a single note entry from a document by its _id. */
|
|
75
149
|
export const deleteContextNoteEntry = async (
|
|
76
150
|
id: ObjectId,
|
|
@@ -10,6 +10,13 @@ export type ContextNoteEntry = {
|
|
|
10
10
|
updatedAt: Date;
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
+
export type ContextNoteEntryWrite = {
|
|
14
|
+
title: string;
|
|
15
|
+
content: string;
|
|
16
|
+
activeFrom: Date;
|
|
17
|
+
expiresAt: Date | null;
|
|
18
|
+
};
|
|
19
|
+
|
|
13
20
|
export type ContextNote = {
|
|
14
21
|
_id: ObjectId;
|
|
15
22
|
clientId: string;
|
|
@@ -3,17 +3,6 @@ import { getDb } from "../../index";
|
|
|
3
3
|
import { flowMongoSchema } from "../flows.schema";
|
|
4
4
|
|
|
5
5
|
describe("flowMongoSchema", () => {
|
|
6
|
-
it("defines keypadInput as an optional object", () => {
|
|
7
|
-
const schema: any = flowMongoSchema;
|
|
8
|
-
|
|
9
|
-
expect(schema.properties).toHaveProperty("keypadInput");
|
|
10
|
-
expect(schema.properties.keypadInput.bsonType).toEqual(["object", "null"]);
|
|
11
|
-
expect(schema.properties.keypadInput.properties.enabled.bsonType).toBe(
|
|
12
|
-
"bool",
|
|
13
|
-
);
|
|
14
|
-
expect(schema.required).not.toContain("keypadInput");
|
|
15
|
-
});
|
|
16
|
-
|
|
17
6
|
it("defines disableGenericPrompt as optional bool", () => {
|
|
18
7
|
const schema: any = flowMongoSchema;
|
|
19
8
|
|
|
@@ -13,13 +13,6 @@ export const flowMongoSchema = {
|
|
|
13
13
|
systemInstructions: { bsonType: "string" },
|
|
14
14
|
initialSentence: { bsonType: "string" },
|
|
15
15
|
disableGenericPrompt: { bsonType: "bool" },
|
|
16
|
-
keypadInput: {
|
|
17
|
-
bsonType: ["object", "null"],
|
|
18
|
-
properties: {
|
|
19
|
-
enabled: { bsonType: "bool" },
|
|
20
|
-
},
|
|
21
|
-
additionalProperties: false,
|
|
22
|
-
},
|
|
23
16
|
voice: { bsonType: ["string", "null"] },
|
|
24
17
|
conversationSettings: {
|
|
25
18
|
bsonType: ["object", "null"],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.utils.d.ts","sourceRoot":"","sources":["../../../src/talkpilot/subscriptions/subscriptions.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAA6B,MAAM,UAAU,CAAC;AAE7F,eAAO,MAAM,gBAAgB,GAAI,QAAQ,wBAAwB,KAAG,MAAM,CAAC,YAAY,CAetF,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildSimpleQuery = void 0;
|
|
4
|
-
const mongodb_1 = require("mongodb");
|
|
5
|
-
const index_1 = require("../index");
|
|
6
|
-
const buildSimpleQuery = (filter) => {
|
|
7
|
-
const query = {};
|
|
8
|
-
if (filter._id) {
|
|
9
|
-
query._id = new mongodb_1.ObjectId(filter._id);
|
|
10
|
-
}
|
|
11
|
-
index_1.simpleFields.forEach((field) => {
|
|
12
|
-
const val = filter[field];
|
|
13
|
-
if (val !== undefined) {
|
|
14
|
-
query[field] = val;
|
|
15
|
-
}
|
|
16
|
-
});
|
|
17
|
-
return query;
|
|
18
|
-
};
|
|
19
|
-
exports.buildSimpleQuery = buildSimpleQuery;
|
|
20
|
-
//# sourceMappingURL=subscriptions.utils.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subscriptions.utils.js","sourceRoot":"","sources":["../../../src/talkpilot/subscriptions/subscriptions.utils.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAC3C,oCAA6F;AAEtF,MAAM,gBAAgB,GAAG,CAAC,MAAgC,EAAwB,EAAE;IACzF,MAAM,KAAK,GAAyB,EAAE,CAAC;IAEvC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,KAAK,CAAC,GAAG,GAAG,IAAI,kBAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,oBAAY,CAAC,OAAO,CAAC,CAAC,KAAkB,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,KAAK,CAAC,GAAG,GAAU,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAfW,QAAA,gBAAgB,oBAe3B"}
|