conduyt-mcp 4.54.0 → 4.55.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/tools/lifecycle.js +17 -0
- package/package.json +1 -1
- package/scripts/coverage-matrix.json +12 -5
package/dist/tools/lifecycle.js
CHANGED
|
@@ -105,6 +105,23 @@ export function registerLifecycleTools(server, client) {
|
|
|
105
105
|
.record(z.string().trim().min(1).max(40), z.string().trim().min(1).max(40))
|
|
106
106
|
.describe("Disposition value → master status, the complete map"),
|
|
107
107
|
}, async ({ statusMap }) => patchGeneralSettings(client, { callDispositions: { statusMap } }));
|
|
108
|
+
server.tool("conduyt_get_agent_statuses", "Read the account's curated dialer agent statuses (2026-09-15): Available, Break, Lunch, Meeting, Training, Offline. Each carries a FIXED basis the dialer runs on (available = takes inbound calls and Smart Dialing hand-outs; break = signed in, not ringable; offline = signed out), the tenant's label, and whether the tenant hid it from the softphone menu. Admins rename or hide with conduyt_update_agent_statuses; Available and Offline can never be hidden. Reports bucket by basis; heartbeats and status logs also carry the chosen code (statusCode).", {}, async () => formatResult(await client.get("/api/v1/dialer/agent-statuses")));
|
|
109
|
+
server.tool("conduyt_update_agent_statuses", "Rename or hide the curated dialer statuses (settings.agentStatuses). labels: code → the label reps see (1–24 chars; omit a code or pass an empty string to restore the default); hidden: the codes removed from the softphone menu (available and offline are refused with a 422; a rep already on a hidden status keeps it until they change). Codes: available, break, lunch, meeting, training, offline. Fields you omit keep their stored value (the tool reads the current settings first); two visible statuses cannot share a label (422). Requires settings:edit.", {
|
|
110
|
+
labels: z.record(z.string().trim().min(1).max(24), z.string().trim().max(24)).optional().describe("code → label; '' restores the default label for that code"),
|
|
111
|
+
hidden: z.array(z.string().trim().min(1).max(24)).max(6).optional().describe("the complete list of hidden codes (replaces the stored list when given)"),
|
|
112
|
+
}, async ({ labels, hidden }) => {
|
|
113
|
+
const current = (await client.get("/api/v1/settings"));
|
|
114
|
+
const stored = current?.data?.agentStatuses ?? {};
|
|
115
|
+
const nextLabels = { ...(stored.labels ?? {}) };
|
|
116
|
+
for (const [code, label] of Object.entries(labels ?? {})) {
|
|
117
|
+
if (label.trim())
|
|
118
|
+
nextLabels[code] = label.trim();
|
|
119
|
+
else
|
|
120
|
+
delete nextLabels[code];
|
|
121
|
+
}
|
|
122
|
+
const nextHidden = hidden ?? stored.hidden ?? [];
|
|
123
|
+
return patchGeneralSettings(client, { agentStatuses: { labels: nextLabels, hidden: nextHidden } });
|
|
124
|
+
});
|
|
108
125
|
server.tool("conduyt_update_master_statuses", "Set the account's custom lead lifecycle statuses. The five defaults (open, won, lost, abandoned, disqualified) always exist and cannot be removed; this REPLACES the custom list on top of them (max 20 names, 1-40 chars each, letters/numbers/spaces/-/_ only). Terminal statuses stop all outbound automation for a contact. Requires settings:edit.", {
|
|
109
126
|
statuses: z
|
|
110
127
|
.array(masterStatusName)
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-09-
|
|
3
|
-
"toolCount":
|
|
4
|
-
"totalEndpoints":
|
|
2
|
+
"generatedAt": "2026-09-15T15:01:31.617Z",
|
|
3
|
+
"toolCount": 263,
|
|
4
|
+
"totalEndpoints": 975,
|
|
5
5
|
"counts": {
|
|
6
|
-
"covered":
|
|
6
|
+
"covered": 246,
|
|
7
7
|
"excluded": 288,
|
|
8
8
|
"planned": 441,
|
|
9
9
|
"uncategorized": 0
|
|
@@ -2081,6 +2081,12 @@
|
|
|
2081
2081
|
"status": "planned",
|
|
2082
2082
|
"reason": "deal subroutes beyond core CRUD (history, files, links)"
|
|
2083
2083
|
},
|
|
2084
|
+
"GET /api/v1/dialer/agent-statuses": {
|
|
2085
|
+
"status": "covered",
|
|
2086
|
+
"tools": [
|
|
2087
|
+
"conduyt_get_agent_statuses"
|
|
2088
|
+
]
|
|
2089
|
+
},
|
|
2084
2090
|
"GET /api/v1/dialer/agents-status": {
|
|
2085
2091
|
"status": "excluded",
|
|
2086
2092
|
"reason": "realtime browser dialer (WebRTC tokens, live call control) — needs a live audio session"
|
|
@@ -3582,7 +3588,8 @@
|
|
|
3582
3588
|
"tools": [
|
|
3583
3589
|
"conduyt_get_contact_table_defaults",
|
|
3584
3590
|
"conduyt_set_contact_table_defaults",
|
|
3585
|
-
"conduyt_get_lifecycle_settings"
|
|
3591
|
+
"conduyt_get_lifecycle_settings",
|
|
3592
|
+
"conduyt_update_agent_statuses"
|
|
3586
3593
|
]
|
|
3587
3594
|
},
|
|
3588
3595
|
"PATCH /api/v1/settings": {
|