sipgate-mcp 0.5.2 → 0.6.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/CHANGELOG.md +75 -0
- package/README.md +25 -21
- package/SKILL.md +11 -6
- package/dist/backend/access-controlled-backend.d.ts.map +1 -1
- package/dist/backend/access-controlled-backend.js +15 -26
- package/dist/backend/access-controlled-backend.js.map +1 -1
- package/dist/backend/pagination.d.ts +16 -0
- package/dist/backend/pagination.d.ts.map +1 -0
- package/dist/backend/pagination.js +52 -0
- package/dist/backend/pagination.js.map +1 -0
- package/dist/backend/sipgate-backend.d.ts.map +1 -1
- package/dist/backend/sipgate-backend.js +30 -44
- package/dist/backend/sipgate-backend.js.map +1 -1
- package/dist/backend/sipgate-client.d.ts +5 -1
- package/dist/backend/sipgate-client.d.ts.map +1 -1
- package/dist/backend/sipgate-client.js +193 -38
- package/dist/backend/sipgate-client.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/request-journal.d.ts +14 -0
- package/dist/request-journal.d.ts.map +1 -0
- package/dist/request-journal.js +7 -0
- package/dist/request-journal.js.map +1 -0
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +40 -6
- package/dist/server.js.map +1 -1
- package/dist/tools/definitions.d.ts +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +125 -114
- package/dist/tools/definitions.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,11 @@
|
|
|
1
|
+
import { requestJournal } from "../request-journal.js";
|
|
1
2
|
const DEFAULT_BASE_URL = "https://api.sipgate.com/v2";
|
|
3
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
4
|
+
const DEFAULT_RETRY_DELAY_MS = 1_000;
|
|
5
|
+
/** A longer server-requested wait is reported instead of blocking the tool call. */
|
|
6
|
+
const MAX_RETRY_DELAY_MS = 5_000;
|
|
7
|
+
/** Enough for any recognised denial sentence; the rest of an error body is never read. */
|
|
8
|
+
const MAX_ERROR_BODY_BYTES = 4_096;
|
|
2
9
|
export class SipgateApiError extends Error {
|
|
3
10
|
status;
|
|
4
11
|
constructor(message, status) {
|
|
@@ -9,64 +16,171 @@ export class SipgateApiError extends Error {
|
|
|
9
16
|
}
|
|
10
17
|
/**
|
|
11
18
|
* sipgate explains some denials in a short plain-text body, for example
|
|
12
|
-
* "This endpoint requires a sipgate Classic PBX Account".
|
|
13
|
-
*
|
|
14
|
-
*
|
|
19
|
+
* "This endpoint requires a sipgate Classic PBX Account". Only sentences known
|
|
20
|
+
* to be sipgate's own static text are shown, and they are shown from this list
|
|
21
|
+
* rather than from the response: any other body is dropped, because text from
|
|
22
|
+
* the network must not reach an agent's context as if it were guidance.
|
|
15
23
|
*/
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
24
|
+
const KNOWN_DENIALS = [
|
|
25
|
+
"This endpoint requires a sipgate Classic PBX Account",
|
|
26
|
+
];
|
|
27
|
+
function knownDenial(body) {
|
|
28
|
+
const sentence = body.trim().replace(/\.$/, "");
|
|
29
|
+
const known = KNOWN_DENIALS.find((denial) => denial === sentence);
|
|
30
|
+
return known ? ` sipgate says: "${known}"` : "";
|
|
20
31
|
}
|
|
21
|
-
|
|
32
|
+
/** Parses Retry-After (delta seconds or an HTTP date) without ever echoing it. */
|
|
33
|
+
function retryAfterSeconds(header, now) {
|
|
34
|
+
const value = header?.trim();
|
|
35
|
+
if (!value)
|
|
36
|
+
return undefined;
|
|
37
|
+
if (/^\d+$/.test(value))
|
|
38
|
+
return Number(value);
|
|
39
|
+
const date = Date.parse(value);
|
|
40
|
+
return Number.isNaN(date) ? undefined : Math.max(0, Math.ceil((date - now) / 1000));
|
|
41
|
+
}
|
|
42
|
+
const WRITE_OUTCOME_UNKNOWN = " The change or chargeable action may still have been applied, so check the current state before retrying.";
|
|
43
|
+
function errorForStatus(status, method, retryAfter, path, detail) {
|
|
22
44
|
switch (status) {
|
|
23
45
|
case 401:
|
|
24
46
|
return new SipgateApiError("sipgate authentication failed (HTTP 401). Check SIPGATE_TOKEN_ID and SIPGATE_TOKEN.", status);
|
|
25
47
|
case 403:
|
|
26
|
-
return new SipgateApiError(`sipgate denied ${path} (HTTP 403).${
|
|
48
|
+
return new SipgateApiError(`sipgate denied ${path} (HTTP 403).${detail} The Personal Access Token may be missing a required PAT scope for it, or the account may not include this feature. Other endpoints can still work, so check the token's scopes for this one specifically.`, status);
|
|
27
49
|
case 404:
|
|
28
50
|
return new SipgateApiError("The requested sipgate resource was not found (HTTP 404). Check the supplied user, device, phoneline, number, or extension ID.", status);
|
|
29
51
|
case 429: {
|
|
30
|
-
const suffix = retryAfter ? ` Retry after ${retryAfter} seconds
|
|
52
|
+
const suffix = retryAfter === undefined ? " Retry later." : ` Retry after ${retryAfter} seconds.`;
|
|
31
53
|
return new SipgateApiError(`sipgate rate limit exceeded (HTTP 429).${suffix}`, status);
|
|
32
54
|
}
|
|
33
|
-
default:
|
|
34
|
-
|
|
55
|
+
default: {
|
|
56
|
+
// A server error on a write says nothing about whether sipgate acted on it.
|
|
57
|
+
const outcome = status >= 500 && method !== "GET" ? WRITE_OUTCOME_UNKNOWN : "";
|
|
58
|
+
const reason = status === 502 || status === 503 || status === 504
|
|
59
|
+
? `sipgate is temporarily unavailable (HTTP ${status}).`
|
|
60
|
+
: `sipgate rejected the request (HTTP ${status}).`;
|
|
61
|
+
return new SipgateApiError(`${reason}${outcome || (status >= 500 ? " Try again later." : "")}`, status);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Only a read can be repeated safely: a write that sipgate throttled may still
|
|
67
|
+
* be retried by the caller, but never behind its back.
|
|
68
|
+
*/
|
|
69
|
+
function retryDelay(method, status, retryAfter) {
|
|
70
|
+
if (method !== "GET" || (status !== 429 && status !== 503))
|
|
71
|
+
return undefined;
|
|
72
|
+
if (retryAfter === undefined)
|
|
73
|
+
return DEFAULT_RETRY_DELAY_MS;
|
|
74
|
+
const delay = retryAfter * 1000;
|
|
75
|
+
return delay > MAX_RETRY_DELAY_MS ? undefined : delay;
|
|
76
|
+
}
|
|
77
|
+
/** Only plain identifiers of a confirmation body are kept, never its content. */
|
|
78
|
+
const IDENTIFIER_KEYS = ["sessionId", "callId", "faxId", "id"];
|
|
79
|
+
const PLAIN_IDENTIFIER = /^[\w.:-]{1,128}$/;
|
|
80
|
+
function confirmationIdentifiers(text, containsSecret) {
|
|
81
|
+
let body;
|
|
82
|
+
try {
|
|
83
|
+
body = JSON.parse(text);
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
if (!body || typeof body !== "object" || Array.isArray(body))
|
|
89
|
+
return undefined;
|
|
90
|
+
const found = Object.fromEntries(IDENTIFIER_KEYS.flatMap((key) => {
|
|
91
|
+
const value = body[key];
|
|
92
|
+
// Checked after decoding: a JSON escape must not smuggle a credential past it.
|
|
93
|
+
if (typeof value === "number")
|
|
94
|
+
return containsSecret(String(value)) ? [] : [[key, value]];
|
|
95
|
+
return typeof value === "string" && PLAIN_IDENTIFIER.test(value) && !containsSecret(value)
|
|
96
|
+
? [[key, value]]
|
|
97
|
+
: [];
|
|
98
|
+
}));
|
|
99
|
+
return Object.keys(found).length > 0 ? found : undefined;
|
|
100
|
+
}
|
|
101
|
+
async function readBounded(response, maxBytes) {
|
|
102
|
+
if (!response.body)
|
|
103
|
+
return "";
|
|
104
|
+
const reader = response.body.getReader();
|
|
105
|
+
const chunks = [];
|
|
106
|
+
let size = 0;
|
|
107
|
+
try {
|
|
108
|
+
while (size < maxBytes) {
|
|
109
|
+
const { done, value } = await reader.read();
|
|
110
|
+
if (done)
|
|
111
|
+
break;
|
|
112
|
+
chunks.push(value);
|
|
113
|
+
size += value.byteLength;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
reader.cancel().catch(() => { });
|
|
35
118
|
}
|
|
119
|
+
return Buffer.concat(chunks).subarray(0, maxBytes).toString("utf8");
|
|
36
120
|
}
|
|
37
121
|
export class SipgateClient {
|
|
38
122
|
#baseUrl;
|
|
39
123
|
#authorization;
|
|
124
|
+
#secrets;
|
|
40
125
|
#fetch;
|
|
126
|
+
#timeoutMs;
|
|
127
|
+
#sleep;
|
|
41
128
|
constructor(options) {
|
|
42
129
|
if (!options.tokenId || !options.token) {
|
|
43
130
|
throw new SipgateApiError("Both SIPGATE_TOKEN_ID and SIPGATE_TOKEN must be set in the server environment.");
|
|
44
131
|
}
|
|
132
|
+
const credential = Buffer.from(`${options.tokenId}:${options.token}`, "utf8").toString("base64");
|
|
45
133
|
this.#baseUrl = (options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, "");
|
|
46
|
-
this.#authorization = `Basic ${
|
|
134
|
+
this.#authorization = `Basic ${credential}`;
|
|
135
|
+
// Longest first, so a secret that contains another is replaced whole.
|
|
136
|
+
this.#secrets = [credential, options.token, options.tokenId]
|
|
137
|
+
.sort((left, right) => right.length - left.length);
|
|
47
138
|
this.#fetch = options.fetch ?? globalThis.fetch;
|
|
139
|
+
this.#timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
140
|
+
this.#sleep = options.sleep
|
|
141
|
+
?? ((milliseconds) => new Promise((resolve) => setTimeout(resolve, milliseconds)));
|
|
48
142
|
}
|
|
49
143
|
async request(path, options = {}) {
|
|
50
|
-
const
|
|
51
|
-
if (response.status === 204)
|
|
52
|
-
return undefined;
|
|
53
|
-
const text = await response.text();
|
|
144
|
+
const { status, text } = await this.send(path, options);
|
|
54
145
|
if (!text)
|
|
55
146
|
return undefined;
|
|
56
147
|
try {
|
|
57
148
|
return JSON.parse(text);
|
|
58
149
|
}
|
|
59
150
|
catch {
|
|
60
|
-
|
|
151
|
+
// sipgate accepted the write; an unreadable confirmation body must not
|
|
152
|
+
// read as a failure that invites a second SMS or call.
|
|
153
|
+
if ((options.method ?? "GET") !== "GET")
|
|
154
|
+
return undefined;
|
|
155
|
+
throw new SipgateApiError("sipgate returned an unexpected non-JSON response.", status);
|
|
61
156
|
}
|
|
62
157
|
}
|
|
63
158
|
async requestText(path, options = {}) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
159
|
+
return (await this.send(path, options)).text;
|
|
160
|
+
}
|
|
161
|
+
#redact(text) {
|
|
162
|
+
return this.#secrets.reduce((redacted, secret) => redacted.split(secret).join("[REDACTED]"), text);
|
|
163
|
+
}
|
|
164
|
+
#record(method, url, ok, text = "") {
|
|
165
|
+
const journal = requestJournal.getStore();
|
|
166
|
+
if (!journal)
|
|
167
|
+
return;
|
|
168
|
+
const identifiers = ok && method !== "GET"
|
|
169
|
+
? confirmationIdentifiers(text, (value) => this.#redact(value) !== value)
|
|
170
|
+
: undefined;
|
|
171
|
+
journal.push({
|
|
172
|
+
method,
|
|
173
|
+
path: this.#redact(url.pathname),
|
|
174
|
+
ok,
|
|
175
|
+
...(identifiers === undefined ? {} : { identifiers }),
|
|
176
|
+
});
|
|
68
177
|
}
|
|
69
|
-
|
|
178
|
+
/** Every error leaves the client scrubbed, including interpolated paths. */
|
|
179
|
+
#error(message, status) {
|
|
180
|
+
return new SipgateApiError(this.#redact(message), status);
|
|
181
|
+
}
|
|
182
|
+
async send(path, options) {
|
|
183
|
+
const method = options.method ?? "GET";
|
|
70
184
|
const url = new URL(`${this.#baseUrl}${path.startsWith("/") ? path : `/${path}`}`);
|
|
71
185
|
for (const [name, value] of Object.entries(options.query ?? {})) {
|
|
72
186
|
if (value === undefined)
|
|
@@ -81,22 +195,63 @@ export class SipgateClient {
|
|
|
81
195
|
};
|
|
82
196
|
if (options.body !== undefined)
|
|
83
197
|
headers["Content-Type"] = "application/json";
|
|
84
|
-
let
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
198
|
+
for (let attempt = 0;; attempt += 1) {
|
|
199
|
+
// One deadline per attempt bounds the headers and the body read together.
|
|
200
|
+
// AbortSignal.timeout() is not used: its timer is unref'd, so on Node 22
|
|
201
|
+
// it never fires while nothing else keeps the event loop alive.
|
|
202
|
+
const controller = new AbortController();
|
|
203
|
+
const { signal } = controller;
|
|
204
|
+
const deadline = setTimeout(() => controller.abort(new DOMException("The sipgate request timed out.", "TimeoutError")), this.#timeoutMs);
|
|
205
|
+
try {
|
|
206
|
+
const response = await this.#fetch(url, {
|
|
207
|
+
method,
|
|
208
|
+
headers,
|
|
209
|
+
signal,
|
|
210
|
+
...(options.body === undefined ? {} : { body: JSON.stringify(options.body) }),
|
|
211
|
+
});
|
|
212
|
+
if (response.ok) {
|
|
213
|
+
const text = response.status === 204 ? "" : await response.text();
|
|
214
|
+
this.#record(method, url, true, text);
|
|
215
|
+
return { status: response.status, text };
|
|
216
|
+
}
|
|
217
|
+
const retryAfter = retryAfterSeconds(response.headers.get("retry-after"), Date.now());
|
|
218
|
+
const delay = attempt === 0 ? retryDelay(method, response.status, retryAfter) : undefined;
|
|
219
|
+
if (delay !== undefined) {
|
|
220
|
+
await response.body?.cancel().catch(() => { });
|
|
221
|
+
await this.#sleep(delay);
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
224
|
+
let detail = "";
|
|
225
|
+
if (response.status === 403) {
|
|
226
|
+
// A stalled body still times out below; any other read failure
|
|
227
|
+
// leaves the status as the most precise information available.
|
|
228
|
+
detail = knownDenial(await readBounded(response, MAX_ERROR_BODY_BYTES).catch((error) => {
|
|
229
|
+
if (signal.aborted)
|
|
230
|
+
throw error;
|
|
231
|
+
return "";
|
|
232
|
+
}));
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
await response.body?.cancel().catch(() => { });
|
|
236
|
+
}
|
|
237
|
+
const failure = errorForStatus(response.status, method, retryAfter, url.pathname, detail);
|
|
238
|
+
this.#record(method, url, false);
|
|
239
|
+
throw this.#error(failure.message, failure.status);
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error instanceof SipgateApiError)
|
|
243
|
+
throw error;
|
|
244
|
+
this.#record(method, url, false);
|
|
245
|
+
const outcome = method === "GET" ? "" : WRITE_OUTCOME_UNKNOWN;
|
|
246
|
+
if (signal.aborted) {
|
|
247
|
+
throw this.#error(`sipgate did not answer within ${Math.round(this.#timeoutMs / 1000)} seconds.${outcome || " Try again later."}`);
|
|
248
|
+
}
|
|
249
|
+
throw this.#error(`Could not reach the sipgate API.${outcome || " Check the network connection and try again."}`);
|
|
250
|
+
}
|
|
251
|
+
finally {
|
|
252
|
+
clearTimeout(deadline);
|
|
253
|
+
}
|
|
98
254
|
}
|
|
99
|
-
return response;
|
|
100
255
|
}
|
|
101
256
|
}
|
|
102
257
|
//# sourceMappingURL=sipgate-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sipgate-client.js","sourceRoot":"","sources":["../../src/backend/sipgate-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sipgate-client.js","sourceRoot":"","sources":["../../src/backend/sipgate-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAeA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAeA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ1C;AAED,wBAAsB,MAAM,CAAC,IAAI,GAAE,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBlF;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAUvF;AAaD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC7E,YAAY,EACV,WAAW,EACX,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,8 @@ export async function main() {
|
|
|
14
14
|
const client = new SipgateClient({ tokenId: config.tokenId, token: config.token });
|
|
15
15
|
const sipgateBackend = new SipgateBackend(client);
|
|
16
16
|
const backend = await createAccessControlledBackend(sipgateBackend, config.accessScope);
|
|
17
|
-
const
|
|
17
|
+
const { userId } = await backend.getAuthenticatedUser();
|
|
18
|
+
const server = createServer(backend, config.readonly, config.accessScope, userId);
|
|
18
19
|
await server.connect(new StdioServerTransport());
|
|
19
20
|
}
|
|
20
21
|
export async function runCli(args = process.argv.slice(2)) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACxF,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,cAAc,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;IACxF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,oBAAoB,EAAE,CAAC;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAClF,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAI,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,UAAU,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,EAAE,CAAC;AACf,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,UAA8B;IAC5E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,YAAY,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QAChC,MAAM,MAAM,GACV,KAAK,YAAY,iBAAiB,IAAI,KAAK,YAAY,UAAU;YAC/D,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE;YACrB,CAAC,CAAC,EAAE,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,sBAAsB,MAAM,kDAAkD,CAAC,CAAC;QAC9F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EACL,iBAAiB,EACjB,6BAA6B,GAC9B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAM7E,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
export interface JournalEntry {
|
|
3
|
+
method: string;
|
|
4
|
+
path: string;
|
|
5
|
+
ok: boolean;
|
|
6
|
+
/** Identifiers from a write's confirmation body, such as a call session ID. */
|
|
7
|
+
identifiers?: Record<string, string | number>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Records the sipgate requests made during one tool call, so that a failure
|
|
11
|
+
* after sipgate accepted a write is reported as applied, not as retryable.
|
|
12
|
+
*/
|
|
13
|
+
export declare const requestJournal: AsyncLocalStorage<JournalEntry[]>;
|
|
14
|
+
//# sourceMappingURL=request-journal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-journal.d.ts","sourceRoot":"","sources":["../src/request-journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,mCAA0C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
2
|
+
/**
|
|
3
|
+
* Records the sipgate requests made during one tool call, so that a failure
|
|
4
|
+
* after sipgate accepted a write is reported as applied, not as retryable.
|
|
5
|
+
*/
|
|
6
|
+
export const requestJournal = new AsyncLocalStorage();
|
|
7
|
+
//# sourceMappingURL=request-journal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-journal.js","sourceRoot":"","sources":["../src/request-journal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAUrD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,iBAAiB,EAAkB,CAAC"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import type { AccessScope, TelephonyBackend } from "./backend/telephony-backend.js";
|
|
3
|
-
export declare function createServer(backend: TelephonyBackend, readonly?: boolean, accessScope?: AccessScope): Server;
|
|
3
|
+
export declare function createServer(backend: TelephonyBackend, readonly?: boolean, accessScope?: AccessScope, authenticatedUserId?: string): Server;
|
|
4
4
|
//# sourceMappingURL=server.d.ts.map
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAOnE,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAyDpF,wBAAgB,YAAY,CAC1B,OAAO,EAAE,gBAAgB,EACzB,QAAQ,UAAQ,EAChB,WAAW,GAAE,WAAoB,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,MAAM,CAgDR"}
|
package/dist/server.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
2
2
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
|
+
import { requestJournal } from "./request-journal.js";
|
|
4
5
|
import { createToolDefinitions } from "./tools/definitions.js";
|
|
5
6
|
import { VERSION } from "./version.js";
|
|
6
7
|
function publicError(error) {
|
|
@@ -16,18 +17,50 @@ function publicError(error) {
|
|
|
16
17
|
}
|
|
17
18
|
return "The sipgate operation failed unexpectedly.";
|
|
18
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A tool that failed after sipgate accepted one of its writes must not read
|
|
22
|
+
* as a clean failure: an agent would retry and send a second SMS or place a
|
|
23
|
+
* second call. The accepted requests are reported instead.
|
|
24
|
+
*/
|
|
25
|
+
function failureAfterWrites(error, journal) {
|
|
26
|
+
const accepted = journal.filter((entry) => entry.ok && entry.method !== "GET");
|
|
27
|
+
if (accepted.length === 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
const acceptedRequests = accepted.map((entry) => `${entry.method} ${entry.path}`);
|
|
30
|
+
if (journal.some((entry) => !entry.ok && entry.method !== "GET")) {
|
|
31
|
+
return {
|
|
32
|
+
isError: true,
|
|
33
|
+
content: [{
|
|
34
|
+
type: "text",
|
|
35
|
+
text: `${publicError(error)} sipgate had already accepted these requests of the same tool call: ${acceptedRequests.join(", ")}. Check the current state before retrying anything.`,
|
|
36
|
+
}],
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const identifiers = Object.assign({}, ...accepted.map((entry) => entry.identifiers ?? {}));
|
|
40
|
+
const result = {
|
|
41
|
+
applied: true,
|
|
42
|
+
note: "sipgate accepted the change, but reading the resulting state back failed. Do not repeat the action; verify the current state with a read tool first.",
|
|
43
|
+
acceptedRequests,
|
|
44
|
+
...(Object.keys(identifiers).length > 0 ? { identifiers } : {}),
|
|
45
|
+
// Retry advice in the underlying error concerns the read, not the write.
|
|
46
|
+
readbackError: publicError(error)
|
|
47
|
+
.replace(/ (Check the network connection and try again|Try again later|Retry later)\.$/, ""),
|
|
48
|
+
};
|
|
49
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
50
|
+
}
|
|
19
51
|
function jsonSchemaFor(schema) {
|
|
20
|
-
|
|
52
|
+
// Describe what a caller sends: fields with defaults are optional input.
|
|
53
|
+
const generated = z.toJSONSchema(schema, { target: "draft-7", io: "input" });
|
|
21
54
|
const { $schema: _ignored, ...inputSchema } = generated;
|
|
22
55
|
return inputSchema;
|
|
23
56
|
}
|
|
24
|
-
export function createServer(backend, readonly = false, accessScope = "user") {
|
|
25
|
-
const definitions = createToolDefinitions(backend, readonly, accessScope);
|
|
57
|
+
export function createServer(backend, readonly = false, accessScope = "user", authenticatedUserId) {
|
|
58
|
+
const definitions = createToolDefinitions(backend, readonly, accessScope, authenticatedUserId);
|
|
26
59
|
const byName = new Map(definitions.map((definition) => [definition.name, definition]));
|
|
27
60
|
const server = new Server({ name: "sipgate-mcp", version: VERSION }, {
|
|
28
61
|
capabilities: { tools: {} },
|
|
29
62
|
instructions: accessScope === "user"
|
|
30
|
-
? `This sipgate MCP is restricted to the authenticated user's resources. ${readonly ? "It is read-only and cannot change the account." : "It may change that user's telephony settings or initiate chargeable actions when explicitly requested. Account-wide contact, blacklist, porting-cancellation, and sipgate.io writes require an explicit confirmation argument."} Never request or infer another user's ID.`
|
|
63
|
+
? `This sipgate MCP is restricted to the authenticated user's resources. ${readonly ? "It is read-only and cannot change the account." : "It may change that user's telephony settings or initiate chargeable actions when explicitly requested. Account-wide contact, blacklist, porting-cancellation, and sipgate.io writes require an explicit confirmation argument."} Never request or infer another user's ID${authenticatedUserId === undefined ? "" : "; omit user_id to act as the authenticated user"}.`
|
|
31
64
|
: `This sipgate MCP has account scope and the authenticated sipgate user was verified as an administrator. ${readonly ? "It is read-only and cannot change the account." : "It may change account-wide telephony settings or initiate chargeable actions when explicitly requested."}`,
|
|
32
65
|
});
|
|
33
66
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
@@ -46,14 +79,15 @@ export function createServer(backend, readonly = false, accessScope = "user") {
|
|
|
46
79
|
content: [{ type: "text", text: `Unknown tool: ${request.params.name}` }],
|
|
47
80
|
};
|
|
48
81
|
}
|
|
82
|
+
const journal = [];
|
|
49
83
|
try {
|
|
50
|
-
const result = await definition.execute(request.params.arguments ?? {});
|
|
84
|
+
const result = await requestJournal.run(journal, () => definition.execute(request.params.arguments ?? {}));
|
|
51
85
|
return {
|
|
52
86
|
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
53
87
|
};
|
|
54
88
|
}
|
|
55
89
|
catch (error) {
|
|
56
|
-
return {
|
|
90
|
+
return failureAfterWrites(error, journal) ?? {
|
|
57
91
|
isError: true,
|
|
58
92
|
content: [{ type: "text", text: publicError(error) }],
|
|
59
93
|
};
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,KAAK,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,OAAO,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,4CAA4C,CAAC;AACtD,CAAC;AAED,SAAS,aAAa,CAAC,MAA0C;IAC/D,MAAM,SAAS,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,5 +13,5 @@ export interface ToolDefinition {
|
|
|
13
13
|
annotations: ToolAnnotations;
|
|
14
14
|
execute(input: unknown): Promise<JsonValue>;
|
|
15
15
|
}
|
|
16
|
-
export declare function createToolDefinitions(backend: TelephonyBackend, readonly?: boolean, accessScope?: AccessScope): ToolDefinition[];
|
|
16
|
+
export declare function createToolDefinitions(backend: TelephonyBackend, readonly?: boolean, accessScope?: AccessScope, authenticatedUserId?: string): ToolDefinition[];
|
|
17
17
|
//# sourceMappingURL=definitions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7C;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEhG,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAChD,WAAW,EAAE,eAAe,CAAC;IAC7B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;CAC7C;AA0HD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,gBAAgB,EACzB,QAAQ,UAAQ,EAChB,WAAW,GAAE,WAAoB,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,cAAc,EAAE,CAmkDlB"}
|