@xihe-lab/tapd-mcp-server 1.4.3 → 2.0.0-rc.1
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/{index.d.ts → bin/tapd-mcp-server.d.ts} +1 -1
- package/dist/bin/tapd-mcp-server.d.ts.map +1 -0
- package/dist/{index.js → bin/tapd-mcp-server.js} +3 -3
- package/dist/bin/tapd-mcp-server.js.map +1 -0
- package/dist/integration-test.js +1 -1
- package/dist/integration-test.js.map +1 -1
- package/dist/server.d.ts +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -61
- package/dist/server.js.map +1 -1
- package/package.json +14 -22
- package/README.md +0 -266
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/tapd-client.d.ts +0 -86
- package/dist/tapd-client.d.ts.map +0 -1
- package/dist/tapd-client.js +0 -190
- package/dist/tapd-client.js.map +0 -1
- package/dist/tools/attachment.d.ts +0 -3
- package/dist/tools/attachment.d.ts.map +0 -1
- package/dist/tools/attachment.js +0 -99
- package/dist/tools/attachment.js.map +0 -1
- package/dist/tools/board.d.ts +0 -3
- package/dist/tools/board.d.ts.map +0 -1
- package/dist/tools/board.js +0 -98
- package/dist/tools/board.js.map +0 -1
- package/dist/tools/bug.d.ts +0 -3
- package/dist/tools/bug.d.ts.map +0 -1
- package/dist/tools/bug.js +0 -619
- package/dist/tools/bug.js.map +0 -1
- package/dist/tools/changes.d.ts +0 -3
- package/dist/tools/changes.d.ts.map +0 -1
- package/dist/tools/changes.js +0 -73
- package/dist/tools/changes.js.map +0 -1
- package/dist/tools/comment.d.ts +0 -3
- package/dist/tools/comment.d.ts.map +0 -1
- package/dist/tools/comment.js +0 -93
- package/dist/tools/comment.js.map +0 -1
- package/dist/tools/custom-fields.d.ts +0 -3
- package/dist/tools/custom-fields.d.ts.map +0 -1
- package/dist/tools/custom-fields.js +0 -105
- package/dist/tools/custom-fields.js.map +0 -1
- package/dist/tools/image.d.ts +0 -3
- package/dist/tools/image.d.ts.map +0 -1
- package/dist/tools/image.js +0 -23
- package/dist/tools/image.js.map +0 -1
- package/dist/tools/index.d.ts +0 -3
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -55
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/iteration.d.ts +0 -3
- package/dist/tools/iteration.d.ts.map +0 -1
- package/dist/tools/iteration.js +0 -190
- package/dist/tools/iteration.js.map +0 -1
- package/dist/tools/mini-comment.d.ts +0 -3
- package/dist/tools/mini-comment.d.ts.map +0 -1
- package/dist/tools/mini-comment.js +0 -74
- package/dist/tools/mini-comment.js.map +0 -1
- package/dist/tools/mini-item.d.ts +0 -3
- package/dist/tools/mini-item.d.ts.map +0 -1
- package/dist/tools/mini-item.js +0 -166
- package/dist/tools/mini-item.js.map +0 -1
- package/dist/tools/mini-workspace.d.ts +0 -3
- package/dist/tools/mini-workspace.d.ts.map +0 -1
- package/dist/tools/mini-workspace.js +0 -43
- package/dist/tools/mini-workspace.js.map +0 -1
- package/dist/tools/program.d.ts +0 -3
- package/dist/tools/program.d.ts.map +0 -1
- package/dist/tools/program.js +0 -27
- package/dist/tools/program.js.map +0 -1
- package/dist/tools/relations.d.ts +0 -3
- package/dist/tools/relations.d.ts.map +0 -1
- package/dist/tools/relations.js +0 -68
- package/dist/tools/relations.js.map +0 -1
- package/dist/tools/release.d.ts +0 -3
- package/dist/tools/release.d.ts.map +0 -1
- package/dist/tools/release.js +0 -250
- package/dist/tools/release.js.map +0 -1
- package/dist/tools/report.d.ts +0 -3
- package/dist/tools/report.d.ts.map +0 -1
- package/dist/tools/report.js +0 -38
- package/dist/tools/report.js.map +0 -1
- package/dist/tools/settings.d.ts +0 -3
- package/dist/tools/settings.d.ts.map +0 -1
- package/dist/tools/settings.js +0 -409
- package/dist/tools/settings.js.map +0 -1
- package/dist/tools/source.d.ts +0 -3
- package/dist/tools/source.d.ts.map +0 -1
- package/dist/tools/source.js +0 -69
- package/dist/tools/source.js.map +0 -1
- package/dist/tools/story.d.ts +0 -3
- package/dist/tools/story.d.ts.map +0 -1
- package/dist/tools/story.js +0 -680
- package/dist/tools/story.js.map +0 -1
- package/dist/tools/task.d.ts +0 -3
- package/dist/tools/task.d.ts.map +0 -1
- package/dist/tools/task.js +0 -267
- package/dist/tools/task.js.map +0 -1
- package/dist/tools/test.d.ts +0 -3
- package/dist/tools/test.d.ts.map +0 -1
- package/dist/tools/test.js +0 -564
- package/dist/tools/test.js.map +0 -1
- package/dist/tools/timesheet.d.ts +0 -3
- package/dist/tools/timesheet.d.ts.map +0 -1
- package/dist/tools/timesheet.js +0 -118
- package/dist/tools/timesheet.js.map +0 -1
- package/dist/tools/user.d.ts +0 -3
- package/dist/tools/user.d.ts.map +0 -1
- package/dist/tools/user.js +0 -57
- package/dist/tools/user.js.map +0 -1
- package/dist/tools/utility.d.ts +0 -3
- package/dist/tools/utility.d.ts.map +0 -1
- package/dist/tools/utility.js +0 -133
- package/dist/tools/utility.js.map +0 -1
- package/dist/tools/wiki.d.ts +0 -3
- package/dist/tools/wiki.d.ts.map +0 -1
- package/dist/tools/wiki.js +0 -227
- package/dist/tools/wiki.js.map +0 -1
- package/dist/tools/workflow.d.ts +0 -3
- package/dist/tools/workflow.d.ts.map +0 -1
- package/dist/tools/workflow.js +0 -116
- package/dist/tools/workflow.js.map +0 -1
- package/dist/tools/workspace.d.ts +0 -3
- package/dist/tools/workspace.d.ts.map +0 -1
- package/dist/tools/workspace.js +0 -137
- package/dist/tools/workspace.js.map +0 -1
- package/dist/types.d.ts +0 -17
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapd-mcp-server.d.ts","sourceRoot":"","sources":["../../src/bin/tapd-mcp-server.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* It initializes the server, registers all tools, and starts
|
|
7
7
|
* the stdio transport for communication with MCP clients.
|
|
8
8
|
*/
|
|
9
|
-
import { start } from '
|
|
10
|
-
import { allTools } from '
|
|
9
|
+
import { start } from '../server.js';
|
|
10
|
+
import { allTools } from '@xihe-lab/tapd-core';
|
|
11
11
|
/**
|
|
12
12
|
* Start the MCP server
|
|
13
13
|
*/
|
|
@@ -26,4 +26,4 @@ main().catch((error) => {
|
|
|
26
26
|
console.error('Failed to start TAPD MCP server:', error);
|
|
27
27
|
process.exit(1);
|
|
28
28
|
});
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=tapd-mcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tapd-mcp-server.js","sourceRoot":"","sources":["../../src/bin/tapd-mcp-server.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtB,6DAA6D;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/integration-test.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* - Task 212: tapd_get_current_user
|
|
7
7
|
* - Task 213: batch fetch functionality
|
|
8
8
|
*/
|
|
9
|
-
import { TapdClient } from '
|
|
9
|
+
import { TapdClient } from '@xihe-lab/tapd-core';
|
|
10
10
|
async function runTests() {
|
|
11
11
|
console.log('Starting integration tests...\n');
|
|
12
12
|
const client = TapdClient.fromEnv();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integration-test.js","sourceRoot":"","sources":["../src/integration-test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"integration-test.js","sourceRoot":"","sources":["../src/integration-test.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
-
import type { ToolDef } from '
|
|
2
|
+
import type { ToolDef } from '@xihe-lab/tapd-core';
|
|
3
3
|
export declare function createServer(): McpServer;
|
|
4
4
|
export declare function registerTools(server: McpServer, tools: ToolDef[]): void;
|
|
5
5
|
export declare function start(tools: ToolDef[]): Promise<void>;
|
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,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAUnD,wBAAgB,YAAY,IAAI,SAAS,CAOxC;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAmCvE;AAED,wBAAsB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3D"}
|
package/dist/server.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
-
import {
|
|
4
|
-
import { TapdClient } from './tapd-client.js';
|
|
3
|
+
import { ToolRegistry, TapdClient } from '@xihe-lab/tapd-core';
|
|
5
4
|
let client = null;
|
|
6
5
|
function getTapdClient() {
|
|
7
6
|
client ??= TapdClient.fromEnv();
|
|
@@ -14,75 +13,33 @@ export function createServer() {
|
|
|
14
13
|
});
|
|
15
14
|
return server;
|
|
16
15
|
}
|
|
17
|
-
const LONG_ID_PARAM = /^(id|ids)$|^([a-z_]+_ids?)$/;
|
|
18
|
-
function wrapLongIdField(field, key) {
|
|
19
|
-
const wrap = (inner) => z.preprocess(v => {
|
|
20
|
-
if (typeof v !== 'number')
|
|
21
|
-
return v;
|
|
22
|
-
if (Number.isSafeInteger(v))
|
|
23
|
-
return String(v);
|
|
24
|
-
throw new Error(`参数 ${key} 的值超出 JS 安全整数范围(精度丢失),请以字符串(带引号)重传`);
|
|
25
|
-
}, inner);
|
|
26
|
-
if (field instanceof z.ZodString)
|
|
27
|
-
return wrap(field);
|
|
28
|
-
if (field instanceof z.ZodOptional || field instanceof z.ZodNullable) {
|
|
29
|
-
const inner = field._def.innerType;
|
|
30
|
-
if (!(inner instanceof z.ZodString))
|
|
31
|
-
return null;
|
|
32
|
-
const core = wrap(inner);
|
|
33
|
-
const rebuilt = field instanceof z.ZodOptional ? core.optional() : core.nullable();
|
|
34
|
-
return field.description ? rebuilt.describe(field.description) : rebuilt;
|
|
35
|
-
}
|
|
36
|
-
return null;
|
|
37
|
-
}
|
|
38
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
39
|
-
function wrapLongIdParams(schema) {
|
|
40
|
-
const shape = schema instanceof z.ZodObject ? schema.shape : schema;
|
|
41
|
-
if (typeof shape !== 'object' || shape === null)
|
|
42
|
-
return schema;
|
|
43
|
-
const next = {};
|
|
44
|
-
let touched = false;
|
|
45
|
-
const entries = Object.entries(shape);
|
|
46
|
-
for (const [key, field] of entries) {
|
|
47
|
-
const wrapped = LONG_ID_PARAM.test(key) ? wrapLongIdField(field, key) : null;
|
|
48
|
-
if (wrapped) {
|
|
49
|
-
touched = true;
|
|
50
|
-
next[key] = wrapped;
|
|
51
|
-
}
|
|
52
|
-
else {
|
|
53
|
-
next[key] = field;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
return touched ? next : shape;
|
|
57
|
-
}
|
|
58
16
|
export function registerTools(server, tools) {
|
|
59
|
-
|
|
60
|
-
|
|
17
|
+
const registry = new ToolRegistry();
|
|
18
|
+
registry.register(tools);
|
|
19
|
+
for (const tool of registry.list()) {
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
const schema = tool.inputSchema.shape ?? tool.inputSchema;
|
|
61
22
|
server.tool(tool.name, tool.description, schema, async (args) => {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const result = await tool.handler(tapdClient, args);
|
|
65
|
-
return {
|
|
66
|
-
content: [
|
|
67
|
-
{
|
|
68
|
-
type: 'text',
|
|
69
|
-
text: JSON.stringify(result, null, 2),
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
catch (error) {
|
|
75
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
23
|
+
const result = await registry.exec(tool.name, args, { entry: 'mcp' }, getTapdClient);
|
|
24
|
+
if (result.ok) {
|
|
76
25
|
return {
|
|
77
26
|
content: [
|
|
78
27
|
{
|
|
79
28
|
type: 'text',
|
|
80
|
-
text: JSON.stringify(
|
|
29
|
+
text: JSON.stringify(result.data, null, 2),
|
|
81
30
|
},
|
|
82
31
|
],
|
|
83
|
-
isError: true,
|
|
84
32
|
};
|
|
85
33
|
}
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: JSON.stringify({ error: result.error?.message }, null, 2),
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
isError: true,
|
|
42
|
+
};
|
|
86
43
|
});
|
|
87
44
|
}
|
|
88
45
|
}
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE/D,IAAI,MAAM,GAAsB,IAAI,CAAC;AAErC,SAAS,aAAa;IACpB,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,KAAgB;IAC/D,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QACnC,8DAA8D;QAC9D,MAAM,MAAM,GAAI,IAAI,CAAC,WAAmB,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;QACnE,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,MAAM,EACN,KAAK,EAAE,IAAa,EAAE,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC;YACrF,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC3C;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAChE;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,KAAgB;IAC1C,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xihe-lab/tapd-mcp-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-rc.1",
|
|
4
4
|
"description": "MCP server for TAPD project management API, enabling AI assistants to manage stories, bugs, tasks, iterations and more via natural language",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "dist/
|
|
6
|
+
"main": "dist/bin/tapd-mcp-server.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"tapd-mcp-server": "./dist/
|
|
9
|
-
},
|
|
10
|
-
"scripts": {
|
|
11
|
-
"build": "tsc",
|
|
12
|
-
"start": "node dist/index.js",
|
|
13
|
-
"dev": "tsx src/index.ts",
|
|
14
|
-
"test": "tsx src/integration-test.ts",
|
|
15
|
-
"type-check": "tsc --noEmit",
|
|
16
|
-
"lint": "eslint src/",
|
|
17
|
-
"prepublishOnly": "npm run build"
|
|
8
|
+
"tapd-mcp-server": "./dist/bin/tapd-mcp-server.js"
|
|
18
9
|
},
|
|
19
10
|
"keywords": [
|
|
20
11
|
"mcp",
|
|
@@ -29,7 +20,8 @@
|
|
|
29
20
|
"license": "Apache-2.0",
|
|
30
21
|
"repository": {
|
|
31
22
|
"type": "git",
|
|
32
|
-
"url": "git+https://github.com/xihe-lab/tapd-mcp-server.git"
|
|
23
|
+
"url": "git+https://github.com/xihe-lab/tapd-mcp-server.git",
|
|
24
|
+
"directory": "packages/mcp"
|
|
33
25
|
},
|
|
34
26
|
"bugs": {
|
|
35
27
|
"url": "https://github.com/xihe-lab/tapd-mcp-server/issues"
|
|
@@ -49,14 +41,14 @@
|
|
|
49
41
|
],
|
|
50
42
|
"dependencies": {
|
|
51
43
|
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
52
|
-
"zod": "^3.24.1"
|
|
44
|
+
"zod": "^3.24.1",
|
|
45
|
+
"@xihe-lab/tapd-core": "2.0.0-rc.1"
|
|
53
46
|
},
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"typescript-eslint": "^8.59.0"
|
|
47
|
+
"scripts": {
|
|
48
|
+
"build": "tsc",
|
|
49
|
+
"start": "node dist/bin/tapd-mcp-server.js",
|
|
50
|
+
"dev": "tsx src/bin/tapd-mcp-server.ts",
|
|
51
|
+
"test": "tsx src/integration-test.ts",
|
|
52
|
+
"type-check": "tsc --noEmit"
|
|
61
53
|
}
|
|
62
|
-
}
|
|
54
|
+
}
|
package/README.md
DELETED
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
# TAPD MCP Server
|
|
2
|
-
|
|
3
|
-
[](https://github.com/xihe-lab/tapd-mcp-server/actions/workflows/ci.yml)
|
|
4
|
-
[](https://www.npmjs.com/package/@xihe-lab/tapd-mcp-server)
|
|
5
|
-
[](https://github.com/xihe-lab/tapd-mcp-server/blob/main/LICENSE)
|
|
6
|
-
[](https://www.npmjs.com/package/@xihe-lab/tapd-mcp-server)
|
|
7
|
-
|
|
8
|
-
TAPD 是腾讯敏捷研发管理平台,覆盖需求、计划、研发、测试、发布研发全生命周期。通过 [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) 接入 Claude、Cursor 等 AI 助手,用自然语言管理需求、缺陷、任务和迭代。
|
|
9
|
-
|
|
10
|
-
## 系统要求
|
|
11
|
-
|
|
12
|
-
- Node.js >= 18.0.0
|
|
13
|
-
- TAPD Access Token(推荐)或 TAPD API 账号密码
|
|
14
|
-
|
|
15
|
-
## 快速开始
|
|
16
|
-
|
|
17
|
-
### 1. 获取凭证
|
|
18
|
-
|
|
19
|
-
#### 方式一:个人访问令牌(推荐)
|
|
20
|
-
|
|
21
|
-
`TAPD_ACCESS_TOKEN` 为 TAPD 个人令牌:
|
|
22
|
-
|
|
23
|
-
1. 登录 TAPD,进入 **我的设置 → 个人访问令牌**
|
|
24
|
-
2. 点击"创建个人访问令牌"
|
|
25
|
-
3. 令牌只显示一次,注意保存
|
|
26
|
-
|
|
27
|
-
#### 方式二:API 账号密码(兼容)
|
|
28
|
-
|
|
29
|
-
- 未注册:前往 [TAPD 开放平台](https://open.tapd.cn) 注册
|
|
30
|
-
- 已注册未授权 API:登录 TAPD,进入 **公司管理 → API账号管理**,复制 API 账号和 API 密钥
|
|
31
|
-
|
|
32
|
-
### 2. 配置 MCP 客户端
|
|
33
|
-
|
|
34
|
-
#### 方式一:一键安装命令
|
|
35
|
-
|
|
36
|
-
注意替换以下参数(必填项标记为 **必填**,其余可选)。`-s user` 为用户级配置(所有项目生效),改为 `-s project` 则仅当前项目生效:
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
claude mcp add -s user tapd \
|
|
40
|
-
--env TAPD_ACCESS_TOKEN=your_access_token \ # 必填:个人访问令牌
|
|
41
|
-
--env TAPD_DEFAULT_WORKSPACE_ID=your_workspace_id \ # 必填:默认项目 ID
|
|
42
|
-
--env TAPD_NICK_NAME=your_nick_name \ # 推荐:用户昵称,用于 owner/creator 默认值
|
|
43
|
-
--env TAPD_DEFAULT_TASK_WORKITEM_TYPE_ID=your_task_type_id \ # 可选:默认 TASK 类型 ID,可通过 tapd_get_workitem_types 查询
|
|
44
|
-
--env TAPD_DEFAULT_STORY_WORKITEM_TYPE_ID=your_story_type_id \ # 可选:默认 STORY 类型 ID
|
|
45
|
-
-- npx -y "@xihe-lab/tapd-mcp-server@latest"
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
若忘记替换凭证,重新安装前需先卸载旧的配置:
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
claude mcp list
|
|
52
|
-
claude mcp remove tapd
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
#### 方式二:手动配置
|
|
56
|
-
|
|
57
|
-
编辑 Claude Code 的配置文件(用户目录下 `.claude.json`):
|
|
58
|
-
|
|
59
|
-
```json
|
|
60
|
-
{
|
|
61
|
-
"mcpServers": {
|
|
62
|
-
"tapd": {
|
|
63
|
-
"command": "npx",
|
|
64
|
-
"args": ["-y", "@xihe-lab/tapd-mcp-server@latest"],
|
|
65
|
-
"env": {
|
|
66
|
-
"TAPD_ACCESS_TOKEN": "",
|
|
67
|
-
"TAPD_API_USER": "",
|
|
68
|
-
"TAPD_API_PASSWORD": "",
|
|
69
|
-
"TAPD_API_BASE_URL": "https://api.tapd.cn",
|
|
70
|
-
"TAPD_DEFAULT_WORKSPACE_ID": "",
|
|
71
|
-
"TAPD_NICK_NAME": "",
|
|
72
|
-
"TAPD_DEFAULT_STORY_WORKITEM_TYPE_ID": "",
|
|
73
|
-
"TAPD_DEFAULT_TASK_WORKITEM_TYPE_ID": ""
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
其他客户端配置方式:
|
|
81
|
-
|
|
82
|
-
- **Claude Desktop**:编辑 `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)
|
|
83
|
-
- **Cursor / VS Code**:在项目根目录创建 `.cursor/mcp.json` 或 `.vscode/mcp.json`
|
|
84
|
-
|
|
85
|
-
配置格式与上方相同。
|
|
86
|
-
|
|
87
|
-
### 3. 开始使用
|
|
88
|
-
|
|
89
|
-
配置完成后重启客户端,直接用自然语言与 AI 助手对话:
|
|
90
|
-
|
|
91
|
-
> 查看我的待办需求
|
|
92
|
-
|
|
93
|
-
> 创建一个高优先级缺陷:登录页面报 500 错误
|
|
94
|
-
|
|
95
|
-
> 当前迭代的进度怎么样
|
|
96
|
-
|
|
97
|
-
> 给任务 10001 录入 3 小时工时
|
|
98
|
-
|
|
99
|
-
## 环境变量
|
|
100
|
-
|
|
101
|
-
| 变量 | 必填 | 说明 |
|
|
102
|
-
|------|------|------|
|
|
103
|
-
| `TAPD_ACCESS_TOKEN` | 二选一 | 个人访问令牌(推荐) |
|
|
104
|
-
| `TAPD_API_USER` + `TAPD_API_PASSWORD` | 二选一 | API 账号 + API 密钥 |
|
|
105
|
-
| `TAPD_API_BASE_URL` | 否 | API 基础地址,默认 `https://api.tapd.cn` |
|
|
106
|
-
| `TAPD_DEFAULT_WORKSPACE_ID` | 否 | 默认项目 ID,省去每次传 workspace_id |
|
|
107
|
-
| `TAPD_NICK_NAME` | 否 | 用户昵称,作为 owner/creator 等参数的默认值 |
|
|
108
|
-
| `TAPD_DEFAULT_STORY_WORKITEM_TYPE_ID` | 否 | 默认 STORY 工作项类型 ID |
|
|
109
|
-
| `TAPD_DEFAULT_TASK_WORKITEM_TYPE_ID` | 否 | 默认 TASK 工作项类型 ID |
|
|
110
|
-
|
|
111
|
-
注意:`TAPD_API_USER`/`TAPD_API_PASSWORD`(API 账号密码)与 `TAPD_ACCESS_TOKEN`(个人访问令牌)为两种调用方式,选一种即可。
|
|
112
|
-
|
|
113
|
-
## 支持的能力
|
|
114
|
-
|
|
115
|
-
| 模块 | 工具数 | 可用操作 |
|
|
116
|
-
|------|--------|----------|
|
|
117
|
-
| 需求 | 28 | 查询/创建/更新/复制/批量更新需求;需求分类管理;工作项类型转换;字段信息查询;模板管理;关联缺陷/测试用例;时间关系管理 |
|
|
118
|
-
| 测试 | 28 | 测试用例 CRUD;测试用例分类;测试计划 CRUD;测试执行与结果;用例与计划关联管理 |
|
|
119
|
-
| 缺陷 | 20 | 查询/创建/更新/复制/批量更新缺陷;缺陷关联管理;字段信息查询;模板管理;变更历史 |
|
|
120
|
-
| 项目配置 | 21 | 模块/版本/特性/基线 CRUD;自定义字段配置;项目配置开关 |
|
|
121
|
-
| Wiki | 11 | 查询/创建/更新 Wiki 页面;附件/DrawIO/权限/关注者/标签管理 |
|
|
122
|
-
| 发布 | 11 | 发布计划 CRUD;发布评审创建与管理;评审依据管理;模板查询 |
|
|
123
|
-
| 项目 | 9 | 项目信息查询;成员列表;子项目;文档;日历;自定义字段;第三方项目关联 |
|
|
124
|
-
| 任务 | 7 | 查询/创建/更新/批量更新任务;任务变更历史 |
|
|
125
|
-
| 迭代 | 7 | 查询/创建/更新迭代;迭代变更历史;锁定/解锁 |
|
|
126
|
-
| 工作流 | 7 | 工作流定义查询;状态映射;节点信息;转换规则;首末步骤查询 |
|
|
127
|
-
| 自定义字段 | 7 | 需求/缺陷/任务/测试用例/迭代自定义字段配置查询;字段信息查询 |
|
|
128
|
-
| 轻量级项目 | 6 | 轻量级工作项查询/创建/更新;分类管理;变更历史 |
|
|
129
|
-
| 附件 | 5 | 附件查询/下载;轻量级项目附件管理 |
|
|
130
|
-
| 工时 | 5 | 工时记录查询/创建/更新/删除;工时统计 |
|
|
131
|
-
| 评论 | 4 | 评论查询/创建/更新;评论数量统计 |
|
|
132
|
-
| 用户 | 4 | 个人设置查询;角色列表;第三方用户映射;当前用户信息 |
|
|
133
|
-
| 变更历史 | 4 | 需求/任务变更历史查询;变更数量统计 |
|
|
134
|
-
| 看板 | 4 | 看板工作项创建/查询/更新;看板列查询 |
|
|
135
|
-
| 关联关系 | 4 | 需求关联查询/添加/删除;关联缺陷查询 |
|
|
136
|
-
| 工具类 | 4 | 短ID转长ID;批量获取需求/缺陷/任务详情 |
|
|
137
|
-
| 代码 | 3 | 代码提交记录添加/查询;提交对象详情 |
|
|
138
|
-
| 轻量级项目空间 | 3 | 项目信息查询;成员列表;用户项目列表 |
|
|
139
|
-
| 轻量级评论 | 3 | 评论查询/创建;评论数量统计 |
|
|
140
|
-
| 报表 | 2 | 项目报表列表;状态流转时间统计 |
|
|
141
|
-
| 项目集 | 2 | 项目集关联项目;项目集绑定实体 |
|
|
142
|
-
| 图片 | 1 | 获取图片 URL |
|
|
143
|
-
|
|
144
|
-
共 **210 个工具**,覆盖 **26 个模块**。AI 助手会根据你的自然语言描述自动选择合适的工具。
|
|
145
|
-
|
|
146
|
-
## 常见问题
|
|
147
|
-
|
|
148
|
-
### AI 助手没有识别到 TAPD 工具
|
|
149
|
-
|
|
150
|
-
确认 Node.js >= 18 已安装,npx 可正常执行。修改配置后需重启客户端。
|
|
151
|
-
|
|
152
|
-
### 工具返回权限不足 (403)
|
|
153
|
-
|
|
154
|
-
在 TAPD 开放平台检查应用权限,确保已勾选所需 API 的访问权限。
|
|
155
|
-
|
|
156
|
-
### 创建任务时提示权限不足
|
|
157
|
-
|
|
158
|
-
如果 OAuth Token 没有 `tasks::create` 权限,可以通过 `tapd_create_story` 工具传入 TASK 类型的 `workitem_type_id` 来创建任务(仅需 `stories::create` 权限):
|
|
159
|
-
|
|
160
|
-
> 用 tapd_create_story 创建一个任务,workitem_type_id 设为 TASK 类型
|
|
161
|
-
|
|
162
|
-
可通过 `tapd_get_workitem_types` 查询项目中可用的 TASK 类型 ID。
|
|
163
|
-
|
|
164
|
-
### 调用工具报「ID 超出 JS 安全整数范围」或首次调用 ID 校验失败
|
|
165
|
-
|
|
166
|
-
TAPD 的需求/缺陷/任务等实体长 ID 为 19-20 位数字(如 `1139814312001001378`),超出 JS 安全整数上限(`Number.MAX_SAFE_INTEGER`,16 位),以 JSON 数值形式传递会丢精度导致查询为空。所有长 ID 参数必须以字符串(带引号)传递。
|
|
167
|
-
|
|
168
|
-
自 v1.4.3 起:所有工具的长 ID 参数描述已包含引导提示;若传入安全整数范围内的数值(≤16 位,如短 ID)会自动转为字符串;超出安全范围的数值会返回明确错误提示,请按提示以字符串重传。
|
|
169
|
-
|
|
170
|
-
### 支持 Basic Auth 吗
|
|
171
|
-
|
|
172
|
-
支持。设置 `TAPD_API_USER` 和 `TAPD_API_PASSWORD` 即可,与 Access Token 二选一。
|
|
173
|
-
|
|
174
|
-
## 更新
|
|
175
|
-
|
|
176
|
-
MCP 客户端使用 `npx` 运行时会自动检查并下载最新版本。如需确保使用最新版本:
|
|
177
|
-
|
|
178
|
-
### Claude Code
|
|
179
|
-
|
|
180
|
-
重新安装配置(会自动使用最新版本):
|
|
181
|
-
|
|
182
|
-
```bash
|
|
183
|
-
claude mcp remove tapd
|
|
184
|
-
claude mcp add -s user tapd \
|
|
185
|
-
--env TAPD_ACCESS_TOKEN=your_access_token \
|
|
186
|
-
--env TAPD_DEFAULT_WORKSPACE_ID=your_workspace_id \
|
|
187
|
-
--env TAPD_NICK_NAME=your_nick_name \
|
|
188
|
-
--env TAPD_DEFAULT_TASK_WORKITEM_TYPE_ID=your_task_type_id \
|
|
189
|
-
--env TAPD_DEFAULT_STORY_WORKITEM_TYPE_ID=your_story_type_id \
|
|
190
|
-
-- npx -y "@xihe-lab/tapd-mcp-server@latest"
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
### Claude Desktop / Cursor
|
|
194
|
-
|
|
195
|
-
修改配置文件中的版本号为 `@latest` 或删除版本锁定:
|
|
196
|
-
|
|
197
|
-
```json
|
|
198
|
-
{
|
|
199
|
-
"mcpServers": {
|
|
200
|
-
"tapd": {
|
|
201
|
-
"command": "npx",
|
|
202
|
-
"args": ["-y", "@xihe-lab/tapd-mcp-server@latest"],
|
|
203
|
-
"env": { ... }
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
### npm 全局安装方式
|
|
210
|
-
|
|
211
|
-
如果通过 npm 全局安装使用:
|
|
212
|
-
|
|
213
|
-
```bash
|
|
214
|
-
# 查看当前安装版本
|
|
215
|
-
npm list -g @xihe-lab/tapd-mcp-server
|
|
216
|
-
|
|
217
|
-
# 更新到最新版本
|
|
218
|
-
npm update -g @xihe-lab/tapd-mcp-server
|
|
219
|
-
|
|
220
|
-
# 或指定版本安装
|
|
221
|
-
npm install -g @xihe-lab/tapd-mcp-server@1.5.0
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
更新后需重启 MCP 客户端。
|
|
225
|
-
|
|
226
|
-
### npx 缓存清理
|
|
227
|
-
|
|
228
|
-
如果 npx 使用了旧版本缓存,可手动清理后重新运行:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
# 清理 npx 缓存
|
|
232
|
-
npx clear-npx-cache
|
|
233
|
-
|
|
234
|
-
# 或手动删除缓存目录
|
|
235
|
-
rm -rf ~/.npm/_npx
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
### 查看版本信息
|
|
239
|
-
|
|
240
|
-
```bash
|
|
241
|
-
# 查看最新发布版本
|
|
242
|
-
npm view @xihe-lab/tapd-mcp-server version
|
|
243
|
-
|
|
244
|
-
# 查看所有已发布版本
|
|
245
|
-
npm view @xihe-lab/tapd-mcp-server versions
|
|
246
|
-
```
|
|
247
|
-
|
|
248
|
-
### 查看更新日志
|
|
249
|
-
|
|
250
|
-
查看 [CHANGELOG.md](CHANGELOG.md) 了解各版本的变更内容。
|
|
251
|
-
|
|
252
|
-
## 本地开发
|
|
253
|
-
|
|
254
|
-
如需二次开发:
|
|
255
|
-
|
|
256
|
-
```bash
|
|
257
|
-
git clone git@github.com:xihe-lab/tapd-mcp-server.git && cd tapd-mcp-server
|
|
258
|
-
npm install && npm run build
|
|
259
|
-
npm run dev
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
添加新工具:在 `src/tools/` 下创建模块文件,导出 `ToolDef[]` 数组,然后在 `src/tools/index.ts` 中导入即可。
|
|
263
|
-
|
|
264
|
-
## 许可证
|
|
265
|
-
|
|
266
|
-
[Apache-2.0](LICENSE)
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC;QACtB,6DAA6D;IAC/D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,mBAAmB;AACnB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/tapd-client.d.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TAPD API Client
|
|
3
|
-
*
|
|
4
|
-
* Supports dual authentication modes:
|
|
5
|
-
* - Basic Auth: using api_user + api_password
|
|
6
|
-
* - OAuth/Bearer Token: using access_token
|
|
7
|
-
*
|
|
8
|
-
* Uses custom HTTP client for all API calls.
|
|
9
|
-
*/
|
|
10
|
-
export declare class TapdClient {
|
|
11
|
-
private authHeader;
|
|
12
|
-
private baseUrl;
|
|
13
|
-
private authType;
|
|
14
|
-
private apiUser?;
|
|
15
|
-
private apiPassword?;
|
|
16
|
-
private constructor();
|
|
17
|
-
/**
|
|
18
|
-
* Create client from OAuth access token
|
|
19
|
-
*/
|
|
20
|
-
static fromAccessToken(accessToken: string, baseUrl?: string): TapdClient;
|
|
21
|
-
/**
|
|
22
|
-
* Create client from Basic Auth credentials
|
|
23
|
-
*/
|
|
24
|
-
static fromBasicAuth(apiUser: string, apiPassword: string, baseUrl?: string): TapdClient;
|
|
25
|
-
/**
|
|
26
|
-
* Create client from environment variables
|
|
27
|
-
* Priority: TAPD_ACCESS_TOKEN > (TAPD_API_USER + TAPD_API_PASSWORD)
|
|
28
|
-
*/
|
|
29
|
-
static fromEnv(): TapdClient;
|
|
30
|
-
/**
|
|
31
|
-
* Get user nickname from environment variable TAPD_NICK_NAME
|
|
32
|
-
*/
|
|
33
|
-
static getNickName(): string | undefined;
|
|
34
|
-
/**
|
|
35
|
-
* Get default workspace ID from environment variable TAPD_DEFAULT_WORKSPACE_ID
|
|
36
|
-
*/
|
|
37
|
-
static getDefaultWorkspaceId(): number | undefined;
|
|
38
|
-
/**
|
|
39
|
-
* Get default STORY workitem type ID from environment variable
|
|
40
|
-
*/
|
|
41
|
-
static getDefaultStoryWorkitemTypeId(): string | undefined;
|
|
42
|
-
/**
|
|
43
|
-
* Get default TASK workitem type ID from environment variable
|
|
44
|
-
*/
|
|
45
|
-
static getDefaultTaskWorkitemTypeId(): string | undefined;
|
|
46
|
-
/**
|
|
47
|
-
* Convert short ID to long ID
|
|
48
|
-
*
|
|
49
|
-
* Rules:
|
|
50
|
-
* - Pure numeric ID with ≤9 digits is treated as short ID
|
|
51
|
-
* - For cloud environment (is_cloud=true), prefix is '11'
|
|
52
|
-
* - Pad short ID to 9 digits and concatenate with workspace_id
|
|
53
|
-
* - Non-short IDs are returned unchanged
|
|
54
|
-
*
|
|
55
|
-
* @param id - Story/bug/task ID (short or long format)
|
|
56
|
-
* @param workspaceId - Workspace ID for constructing long ID
|
|
57
|
-
* @param isCloud - Whether it's cloud environment (default: true)
|
|
58
|
-
*/
|
|
59
|
-
static toLongId(id: string | number, workspaceId: string | number, isCloud?: boolean): string;
|
|
60
|
-
/**
|
|
61
|
-
* Make HTTP request to TAPD API with retry support
|
|
62
|
-
*
|
|
63
|
-
* Retry policy:
|
|
64
|
-
* - Retry on 429/500/502/503 status codes
|
|
65
|
-
* - Max 3 retries with exponential backoff (1s, 2s, 4s)
|
|
66
|
-
* - POST requests do NOT retry (avoid duplicate creation)
|
|
67
|
-
*/
|
|
68
|
-
request<T>(method: 'GET' | 'POST', path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
69
|
-
/**
|
|
70
|
-
* GET request to TAPD API
|
|
71
|
-
*/
|
|
72
|
-
get<T>(path: string, params?: Record<string, string | number | boolean>): Promise<T>;
|
|
73
|
-
/**
|
|
74
|
-
* POST request to TAPD API
|
|
75
|
-
*/
|
|
76
|
-
post<T>(path: string, params?: Record<string, string | number | boolean | undefined>): Promise<T>;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* TAPD API response structure
|
|
80
|
-
*/
|
|
81
|
-
export interface TapdResponse<T> {
|
|
82
|
-
status: number;
|
|
83
|
-
data: T;
|
|
84
|
-
info: string;
|
|
85
|
-
}
|
|
86
|
-
//# sourceMappingURL=tapd-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tapd-client.d.ts","sourceRoot":"","sources":["../src/tapd-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAoB;IACpC,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,WAAW,CAAC,CAAS;IAE7B,OAAO;IAcP;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU;IAIzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU;IAWxF;;;OAGG;IACH,MAAM,CAAC,OAAO,IAAI,UAAU;IAmB5B;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,MAAM,GAAG,SAAS;IAIxC;;OAEG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM,GAAG,SAAS;IAKlD;;OAEG;IACH,MAAM,CAAC,6BAA6B,IAAI,MAAM,GAAG,SAAS;IAI1D;;OAEG;IACH,MAAM,CAAC,4BAA4B,IAAI,MAAM,GAAG,SAAS;IAIzD;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,OAAO,UAAO,GAAG,MAAM;IAc1F;;;;;;;KAOC;IACK,OAAO,CAAC,CAAC,EACb,MAAM,EAAE,KAAK,GAAG,MAAM,EACtB,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAC7D,OAAO,CAAC,CAAC,CAAC;IAkFb;;OAEG;IACG,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAI1F;;OAEG;IACG,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGxG;AAED;;GAEG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;CACd"}
|