@pollychrome/joan-mcp 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -0
- package/dist/cli.js +5 -0
- package/dist/cli.js.map +1 -1
- package/dist/client/api-client.d.ts +2 -0
- package/dist/client/api-client.d.ts.map +1 -1
- package/dist/client/api-client.js +35 -6
- package/dist/client/api-client.js.map +1 -1
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -14
- package/dist/index.js.map +1 -1
- package/dist/tools/attachments.d.ts.map +1 -1
- package/dist/tools/attachments.js +9 -0
- package/dist/tools/attachments.js.map +1 -1
- package/dist/tools/comments.d.ts.map +1 -1
- package/dist/tools/comments.js +9 -0
- package/dist/tools/comments.js.map +1 -1
- package/dist/tools/goals.d.ts.map +1 -1
- package/dist/tools/goals.js +6 -0
- package/dist/tools/goals.js.map +1 -1
- package/dist/tools/milestones.d.ts.map +1 -1
- package/dist/tools/milestones.js +8 -0
- package/dist/tools/milestones.js.map +1 -1
- package/dist/tools/notes.d.ts.map +1 -1
- package/dist/tools/notes.js +4 -0
- package/dist/tools/notes.js.map +1 -1
- package/dist/tools/project-tags.d.ts.map +1 -1
- package/dist/tools/project-tags.js +10 -0
- package/dist/tools/project-tags.js.map +1 -1
- package/dist/tools/projects.d.ts.map +1 -1
- package/dist/tools/projects.js +10 -0
- package/dist/tools/projects.js.map +1 -1
- package/dist/tools/resources.d.ts.map +1 -1
- package/dist/tools/resources.js +13 -0
- package/dist/tools/resources.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +13 -4
- package/dist/tools/tasks.js.map +1 -1
- package/dist/utils/column-mapper.d.ts.map +1 -1
- package/dist/utils/column-mapper.js +4 -3
- package/dist/utils/column-mapper.js.map +1 -1
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +7 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +39 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/telemetry.d.ts.map +1 -1
- package/dist/utils/telemetry.js +3 -2
- package/dist/utils/telemetry.js.map +1 -1
- package/dist/utils/timeout.d.ts +26 -0
- package/dist/utils/timeout.d.ts.map +1 -0
- package/dist/utils/timeout.js +63 -0
- package/dist/utils/timeout.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout utilities for HTTP requests
|
|
3
|
+
*/
|
|
4
|
+
export class TimeoutError extends Error {
|
|
5
|
+
timeoutMs;
|
|
6
|
+
constructor(timeoutMs, message) {
|
|
7
|
+
super(message || `Request timed out after ${timeoutMs}ms`);
|
|
8
|
+
this.timeoutMs = timeoutMs;
|
|
9
|
+
this.name = 'TimeoutError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Fetch with timeout support
|
|
14
|
+
* @param url - URL to fetch
|
|
15
|
+
* @param options - Fetch options plus optional timeoutMs
|
|
16
|
+
* @returns Response
|
|
17
|
+
* @throws TimeoutError if request exceeds timeout
|
|
18
|
+
*/
|
|
19
|
+
export async function fetchWithTimeout(url, options = {}) {
|
|
20
|
+
const { timeoutMs = 10000, ...fetchOptions } = options;
|
|
21
|
+
const controller = new AbortController();
|
|
22
|
+
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
23
|
+
try {
|
|
24
|
+
return await fetch(url, { ...fetchOptions, signal: controller.signal });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
28
|
+
throw new TimeoutError(timeoutMs, `Request to ${url} timed out`);
|
|
29
|
+
}
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
finally {
|
|
33
|
+
clearTimeout(timeoutId);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Wrap a promise with a timeout.
|
|
38
|
+
*/
|
|
39
|
+
export async function withTimeout(promise, timeoutMs, message) {
|
|
40
|
+
let timeoutId;
|
|
41
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
42
|
+
timeoutId = setTimeout(() => {
|
|
43
|
+
reject(new TimeoutError(timeoutMs, message));
|
|
44
|
+
}, timeoutMs);
|
|
45
|
+
});
|
|
46
|
+
try {
|
|
47
|
+
return await Promise.race([promise, timeoutPromise]);
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
if (timeoutId) {
|
|
51
|
+
clearTimeout(timeoutId);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get default timeout from environment or use 10 seconds
|
|
57
|
+
*/
|
|
58
|
+
export function getDefaultTimeout() {
|
|
59
|
+
return process.env.JOAN_MCP_TIMEOUT_MS
|
|
60
|
+
? parseInt(process.env.JOAN_MCP_TIMEOUT_MS, 10)
|
|
61
|
+
: 10000; // 10 seconds default for fast API
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/utils/timeout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACT;IAA5B,YAA4B,SAAiB,EAAE,OAAgB;QAC7D,KAAK,CAAC,OAAO,IAAI,2BAA2B,SAAS,IAAI,CAAC,CAAC;QADjC,cAAS,GAAT,SAAS,CAAQ;QAE3C,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAW,EACX,UAAgD,EAAE;IAElD,MAAM,EAAE,SAAS,GAAG,KAAK,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAElE,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,GAAG,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,YAAY,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,SAAiB,EACjB,OAAgB;IAEhB,IAAI,SAAoD,CAAC;IACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QACtD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;YAC1B,MAAM,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;IACvD,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB;QACpC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/C,CAAC,CAAC,KAAK,CAAC,CAAC,kCAAkC;AAC/C,CAAC"}
|
package/package.json
CHANGED