@paca-ai/paca-mcp 0.1.0-rc.6
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/api/client.d.ts +53 -0
- package/api/client.d.ts.map +1 -0
- package/api/client.js +267 -0
- package/api/client.js.map +1 -0
- package/api/doc-client.d.ts +26 -0
- package/api/doc-client.d.ts.map +1 -0
- package/api/doc-client.js +109 -0
- package/api/doc-client.js.map +1 -0
- package/api/extended-client.d.ts +44 -0
- package/api/extended-client.d.ts.map +1 -0
- package/api/extended-client.js +167 -0
- package/api/extended-client.js.map +1 -0
- package/api/github-client.d.ts +21 -0
- package/api/github-client.d.ts.map +1 -0
- package/api/github-client.js +87 -0
- package/api/github-client.js.map +1 -0
- package/api/index.d.ts +7 -0
- package/api/index.d.ts.map +1 -0
- package/api/index.js +7 -0
- package/api/index.js.map +1 -0
- package/api/task-extended-client.d.ts +28 -0
- package/api/task-extended-client.d.ts.map +1 -0
- package/api/task-extended-client.js +123 -0
- package/api/task-extended-client.js.map +1 -0
- package/api/views-client.d.ts +36 -0
- package/api/views-client.d.ts.map +1 -0
- package/api/views-client.js +157 -0
- package/api/views-client.js.map +1 -0
- package/index.d.ts +3 -0
- package/index.d.ts.map +1 -0
- package/index.js +41 -0
- package/index.js.map +1 -0
- package/package.json +40 -0
- package/server.d.ts +9 -0
- package/server.d.ts.map +1 -0
- package/server.js +46 -0
- package/server.js.map +1 -0
- package/tools/attachment-tools.d.ts +15 -0
- package/tools/attachment-tools.d.ts.map +1 -0
- package/tools/attachment-tools.js +402 -0
- package/tools/attachment-tools.js.map +1 -0
- package/tools/doc-github-tools.d.ts +15 -0
- package/tools/doc-github-tools.d.ts.map +1 -0
- package/tools/doc-github-tools.js +520 -0
- package/tools/doc-github-tools.js.map +1 -0
- package/tools/document-tools.d.ts +16 -0
- package/tools/document-tools.d.ts.map +1 -0
- package/tools/document-tools.js +224 -0
- package/tools/document-tools.js.map +1 -0
- package/tools/index.d.ts +19 -0
- package/tools/index.d.ts.map +1 -0
- package/tools/index.js +171 -0
- package/tools/index.js.map +1 -0
- package/tools/member-tools.d.ts +15 -0
- package/tools/member-tools.d.ts.map +1 -0
- package/tools/member-tools.js +391 -0
- package/tools/member-tools.js.map +1 -0
- package/tools/project-tools.d.ts +16 -0
- package/tools/project-tools.d.ts.map +1 -0
- package/tools/project-tools.js +178 -0
- package/tools/project-tools.js.map +1 -0
- package/tools/sprint-tools.d.ts +16 -0
- package/tools/sprint-tools.d.ts.map +1 -0
- package/tools/sprint-tools.js +258 -0
- package/tools/sprint-tools.js.map +1 -0
- package/tools/task-activity-tools.d.ts +15 -0
- package/tools/task-activity-tools.d.ts.map +1 -0
- package/tools/task-activity-tools.js +425 -0
- package/tools/task-activity-tools.js.map +1 -0
- package/tools/task-tools.d.ts +16 -0
- package/tools/task-tools.d.ts.map +1 -0
- package/tools/task-tools.js +344 -0
- package/tools/task-tools.js.map +1 -0
- package/tools/task-type-tools.d.ts +12 -0
- package/tools/task-type-tools.d.ts.map +1 -0
- package/tools/task-type-tools.js +459 -0
- package/tools/task-type-tools.js.map +1 -0
- package/tools/view-tools.d.ts +15 -0
- package/tools/view-tools.d.ts.map +1 -0
- package/tools/view-tools.js +660 -0
- package/tools/view-tools.js.map +1 -0
- package/types/index.d.ts +564 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +2 -0
- package/types/index.js.map +1 -0
- package/utils/converters.d.ts +13 -0
- package/utils/converters.d.ts.map +1 -0
- package/utils/converters.js +50 -0
- package/utils/converters.js.map +1 -0
- package/utils/formatters.d.ts +34 -0
- package/utils/formatters.d.ts.map +1 -0
- package/utils/formatters.js +87 -0
- package/utils/formatters.js.map +1 -0
- package/utils/index.d.ts +3 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/index.js +3 -0
- package/utils/index.js.map +1 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended API client methods for additional Paca endpoints.
|
|
3
|
+
* This extends the base PacaAPIClient with additional functionality.
|
|
4
|
+
*/
|
|
5
|
+
export class PacaAPIExtendedClient {
|
|
6
|
+
config;
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Makes an HTTP request to the Paca API.
|
|
12
|
+
* Handles SuccessEnvelope wrapper by extracting data.data.
|
|
13
|
+
*/
|
|
14
|
+
async request(method, path, body) {
|
|
15
|
+
const url = `${this.config.baseURL}${path}`;
|
|
16
|
+
const headers = {
|
|
17
|
+
"Content-Type": "application/json",
|
|
18
|
+
"X-API-Key": this.config.apiKey,
|
|
19
|
+
};
|
|
20
|
+
const options = {
|
|
21
|
+
method,
|
|
22
|
+
headers,
|
|
23
|
+
};
|
|
24
|
+
if (body) {
|
|
25
|
+
options.body = JSON.stringify(body);
|
|
26
|
+
}
|
|
27
|
+
const response = await fetch(url, options);
|
|
28
|
+
if (!response.ok) {
|
|
29
|
+
const errorText = await response.text();
|
|
30
|
+
throw new Error(`API request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
31
|
+
}
|
|
32
|
+
const jsonResponse = await response.json();
|
|
33
|
+
// Handle SuccessEnvelope wrapper
|
|
34
|
+
if (jsonResponse &&
|
|
35
|
+
typeof jsonResponse === "object" &&
|
|
36
|
+
"success" in jsonResponse) {
|
|
37
|
+
const envelope = jsonResponse;
|
|
38
|
+
if (envelope.success) {
|
|
39
|
+
return envelope.data;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
// Fallback for responses not wrapped in SuccessEnvelope
|
|
43
|
+
return jsonResponse;
|
|
44
|
+
}
|
|
45
|
+
async get(path) {
|
|
46
|
+
return this.request("GET", path);
|
|
47
|
+
}
|
|
48
|
+
async post(path, body) {
|
|
49
|
+
return this.request("POST", path, body);
|
|
50
|
+
}
|
|
51
|
+
async patch(path, body) {
|
|
52
|
+
return this.request("PATCH", path, body);
|
|
53
|
+
}
|
|
54
|
+
async delete(path) {
|
|
55
|
+
return this.request("DELETE", path);
|
|
56
|
+
}
|
|
57
|
+
async put(path, body) {
|
|
58
|
+
return this.request("PUT", path, body);
|
|
59
|
+
}
|
|
60
|
+
// ==================== Project Members ====================
|
|
61
|
+
async listProjectMembers(projectId) {
|
|
62
|
+
const response = await this.get(`/api/v1/projects/${projectId}/members`);
|
|
63
|
+
if (Array.isArray(response)) {
|
|
64
|
+
return response;
|
|
65
|
+
}
|
|
66
|
+
return response.items || response.members || response.data || [];
|
|
67
|
+
}
|
|
68
|
+
async addProjectMember(projectId, input) {
|
|
69
|
+
return this.post(`/api/v1/projects/${projectId}/members`, input);
|
|
70
|
+
}
|
|
71
|
+
async getMyProjectPermissions(projectId) {
|
|
72
|
+
const response = await this.get(`/api/v1/projects/${projectId}/members/me/permissions`);
|
|
73
|
+
return response.permissions || {};
|
|
74
|
+
}
|
|
75
|
+
async updateProjectMemberRole(projectId, userId, input) {
|
|
76
|
+
return this.patch(`/api/v1/projects/${projectId}/members/${userId}`, input);
|
|
77
|
+
}
|
|
78
|
+
async removeProjectMember(projectId, userId) {
|
|
79
|
+
await this.delete(`/api/v1/projects/${projectId}/members/${userId}`);
|
|
80
|
+
}
|
|
81
|
+
// ==================== Project Roles ====================
|
|
82
|
+
async listProjectRoles(projectId) {
|
|
83
|
+
const response = await this.get(`/api/v1/projects/${projectId}/roles`);
|
|
84
|
+
if (Array.isArray(response)) {
|
|
85
|
+
return response;
|
|
86
|
+
}
|
|
87
|
+
return response.items || response.roles || response.data || [];
|
|
88
|
+
}
|
|
89
|
+
async createProjectRole(projectId, input) {
|
|
90
|
+
return this.post(`/api/v1/projects/${projectId}/roles`, input);
|
|
91
|
+
}
|
|
92
|
+
async updateProjectRole(projectId, roleId, input) {
|
|
93
|
+
return this.patch(`/api/v1/projects/${projectId}/roles/${roleId}`, input);
|
|
94
|
+
}
|
|
95
|
+
async deleteProjectRole(projectId, roleId) {
|
|
96
|
+
await this.delete(`/api/v1/projects/${projectId}/roles/${roleId}`);
|
|
97
|
+
}
|
|
98
|
+
// ==================== Task Types ====================
|
|
99
|
+
async listTaskTypes(projectId) {
|
|
100
|
+
const response = await this.get(`/api/v1/projects/${projectId}/task-types`);
|
|
101
|
+
if (Array.isArray(response)) {
|
|
102
|
+
return response;
|
|
103
|
+
}
|
|
104
|
+
return (response.items ||
|
|
105
|
+
response.taskTypes ||
|
|
106
|
+
response.types ||
|
|
107
|
+
response.data ||
|
|
108
|
+
[]);
|
|
109
|
+
}
|
|
110
|
+
async createTaskType(projectId, input) {
|
|
111
|
+
return this.post(`/api/v1/projects/${projectId}/task-types`, input);
|
|
112
|
+
}
|
|
113
|
+
async updateTaskType(projectId, typeId, input) {
|
|
114
|
+
return this.patch(`/api/v1/projects/${projectId}/task-types/${typeId}`, input);
|
|
115
|
+
}
|
|
116
|
+
async deleteTaskType(projectId, typeId) {
|
|
117
|
+
await this.delete(`/api/v1/projects/${projectId}/task-types/${typeId}`);
|
|
118
|
+
}
|
|
119
|
+
async setDefaultTaskType(projectId, typeId) {
|
|
120
|
+
return this.put(`/api/v1/projects/${projectId}/task-types/${typeId}/set-default`, {});
|
|
121
|
+
}
|
|
122
|
+
// ==================== Task Statuses ====================
|
|
123
|
+
async listTaskStatuses(projectId) {
|
|
124
|
+
const response = await this.get(`/api/v1/projects/${projectId}/task-statuses`);
|
|
125
|
+
if (Array.isArray(response)) {
|
|
126
|
+
return response;
|
|
127
|
+
}
|
|
128
|
+
return (response.items ||
|
|
129
|
+
response.taskStatuses ||
|
|
130
|
+
response.statuses ||
|
|
131
|
+
response.data ||
|
|
132
|
+
[]);
|
|
133
|
+
}
|
|
134
|
+
async createTaskStatus(projectId, input) {
|
|
135
|
+
return this.post(`/api/v1/projects/${projectId}/task-statuses`, input);
|
|
136
|
+
}
|
|
137
|
+
async updateTaskStatus(projectId, statusId, input) {
|
|
138
|
+
return this.patch(`/api/v1/projects/${projectId}/task-statuses/${statusId}`, input);
|
|
139
|
+
}
|
|
140
|
+
async deleteTaskStatus(projectId, statusId) {
|
|
141
|
+
await this.delete(`/api/v1/projects/${projectId}/task-statuses/${statusId}`);
|
|
142
|
+
}
|
|
143
|
+
async setDefaultTaskStatus(projectId, statusId) {
|
|
144
|
+
return this.put(`/api/v1/projects/${projectId}/task-statuses/${statusId}/set-default`, {});
|
|
145
|
+
}
|
|
146
|
+
// ==================== Custom Field Definitions ====================
|
|
147
|
+
async listCustomFieldDefinitions(projectId) {
|
|
148
|
+
const response = await this.get(`/api/v1/projects/${projectId}/custom-fields`);
|
|
149
|
+
if (Array.isArray(response)) {
|
|
150
|
+
return response;
|
|
151
|
+
}
|
|
152
|
+
return response.items || response.customFields || response.data || [];
|
|
153
|
+
}
|
|
154
|
+
async getCustomFieldDefinition(projectId, fieldId) {
|
|
155
|
+
return this.get(`/api/v1/projects/${projectId}/custom-fields/${fieldId}`);
|
|
156
|
+
}
|
|
157
|
+
async createCustomFieldDefinition(projectId, input) {
|
|
158
|
+
return this.post(`/api/v1/projects/${projectId}/custom-fields`, input);
|
|
159
|
+
}
|
|
160
|
+
async updateCustomFieldDefinition(projectId, fieldId, input) {
|
|
161
|
+
return this.patch(`/api/v1/projects/${projectId}/custom-fields/${fieldId}`, input);
|
|
162
|
+
}
|
|
163
|
+
async deleteCustomFieldDefinition(projectId, fieldId) {
|
|
164
|
+
await this.delete(`/api/v1/projects/${projectId}/custom-fields/${fieldId}`);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=extended-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extended-client.js","sourceRoot":"","sources":["../../src/api/extended-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { GitHubIntegration, GitHubRepository, LinkRepositoryInput, PacaConfig, SetTokenInput } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extended API client for GitHub integration.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PacaAPIGitHubClient {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: PacaConfig);
|
|
8
|
+
private request;
|
|
9
|
+
private get;
|
|
10
|
+
private post;
|
|
11
|
+
private put;
|
|
12
|
+
private delete;
|
|
13
|
+
getGitHubIntegration(projectId: string): Promise<GitHubIntegration>;
|
|
14
|
+
setGitHubToken(projectId: string, input: SetTokenInput): Promise<GitHubIntegration>;
|
|
15
|
+
deleteGitHubToken(projectId: string): Promise<void>;
|
|
16
|
+
listRepositories(projectId: string): Promise<any[]>;
|
|
17
|
+
listLinkedRepositories(projectId: string): Promise<GitHubRepository[]>;
|
|
18
|
+
linkRepository(projectId: string, input: LinkRepositoryInput): Promise<GitHubRepository>;
|
|
19
|
+
unlinkRepository(projectId: string, repoId: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=github-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-client.d.ts","sourceRoot":"","sources":["../../src/api/github-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,UAAU,EACV,aAAa,EAEb,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;YAIhB,OAAO;YA+CP,GAAG;YAIH,IAAI;YAIJ,GAAG;YAIH,MAAM;IAMd,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAInE,cAAc,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,GAClB,OAAO,CAAC,iBAAiB,CAAC;IAIvB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAUnD,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgBtE,cAAc,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,mBAAmB,GACxB,OAAO,CAAC,gBAAgB,CAAC;IAOtB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended API client for GitHub integration.
|
|
3
|
+
*/
|
|
4
|
+
export class PacaAPIGitHubClient {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
async request(method, path, body) {
|
|
10
|
+
const url = `${this.config.baseURL}${path}`;
|
|
11
|
+
const headers = {
|
|
12
|
+
"Content-Type": "application/json",
|
|
13
|
+
"X-API-Key": this.config.apiKey,
|
|
14
|
+
};
|
|
15
|
+
const options = {
|
|
16
|
+
method,
|
|
17
|
+
headers,
|
|
18
|
+
};
|
|
19
|
+
if (body) {
|
|
20
|
+
options.body = JSON.stringify(body);
|
|
21
|
+
}
|
|
22
|
+
const response = await fetch(url, options);
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
const errorText = await response.text();
|
|
25
|
+
throw new Error(`API request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
26
|
+
}
|
|
27
|
+
const jsonResponse = await response.json();
|
|
28
|
+
// Handle SuccessEnvelope wrapper
|
|
29
|
+
if (jsonResponse &&
|
|
30
|
+
typeof jsonResponse === "object" &&
|
|
31
|
+
"success" in jsonResponse) {
|
|
32
|
+
const envelope = jsonResponse;
|
|
33
|
+
if (envelope.success) {
|
|
34
|
+
return envelope.data;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Fallback for responses not wrapped in SuccessEnvelope
|
|
38
|
+
return jsonResponse;
|
|
39
|
+
}
|
|
40
|
+
async get(path) {
|
|
41
|
+
return this.request("GET", path);
|
|
42
|
+
}
|
|
43
|
+
async post(path, body) {
|
|
44
|
+
return this.request("POST", path, body);
|
|
45
|
+
}
|
|
46
|
+
async put(path, body) {
|
|
47
|
+
return this.request("PUT", path, body);
|
|
48
|
+
}
|
|
49
|
+
async delete(path) {
|
|
50
|
+
return this.request("DELETE", path);
|
|
51
|
+
}
|
|
52
|
+
// ==================== Project GitHub Integration ====================
|
|
53
|
+
async getGitHubIntegration(projectId) {
|
|
54
|
+
return this.get(`/api/v1/projects/${projectId}/github`);
|
|
55
|
+
}
|
|
56
|
+
async setGitHubToken(projectId, input) {
|
|
57
|
+
return this.put(`/api/v1/projects/${projectId}/github/token`, input);
|
|
58
|
+
}
|
|
59
|
+
async deleteGitHubToken(projectId) {
|
|
60
|
+
await this.delete(`/api/v1/projects/${projectId}/github/token`);
|
|
61
|
+
}
|
|
62
|
+
async listRepositories(projectId) {
|
|
63
|
+
const response = await this.get(`/api/v1/projects/${projectId}/github/repositories`);
|
|
64
|
+
if (Array.isArray(response)) {
|
|
65
|
+
return response;
|
|
66
|
+
}
|
|
67
|
+
return response.items || response.repositories || response.data || [];
|
|
68
|
+
}
|
|
69
|
+
async listLinkedRepositories(projectId) {
|
|
70
|
+
const response = await this.get(`/api/v1/projects/${projectId}/github/linked-repositories`);
|
|
71
|
+
if (Array.isArray(response)) {
|
|
72
|
+
return response;
|
|
73
|
+
}
|
|
74
|
+
return (response.items ||
|
|
75
|
+
response.repositories ||
|
|
76
|
+
response.linkedRepositories ||
|
|
77
|
+
response.data ||
|
|
78
|
+
[]);
|
|
79
|
+
}
|
|
80
|
+
async linkRepository(projectId, input) {
|
|
81
|
+
return this.post(`/api/v1/projects/${projectId}/github/linked-repositories`, input);
|
|
82
|
+
}
|
|
83
|
+
async unlinkRepository(projectId, repoId) {
|
|
84
|
+
await this.delete(`/api/v1/projects/${projectId}/github/linked-repositories/${repoId}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=github-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-client.js","sourceRoot":"","sources":["../../src/api/github-client.ts"],"names":[],"mappings":"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"}
|
package/api/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC"}
|
package/api/index.js
ADDED
package/api/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { BDDScenario, CreateBDDScenarioInput, CreateBranchInput, CreateBranchResult, CreateCommentInput, LinkPRInput, PacaConfig, PullRequest, TaskActivity, TaskBranch, UpdateBDDScenarioInput, UpdateCommentInput } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extended API client for Task Activities, Comments, BDD Scenarios, and GitHub.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PacaAPITaskExtendedClient {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: PacaConfig);
|
|
8
|
+
private request;
|
|
9
|
+
private get;
|
|
10
|
+
private post;
|
|
11
|
+
private patch;
|
|
12
|
+
private delete;
|
|
13
|
+
listTaskActivities(projectId: string, taskId: string): Promise<TaskActivity[]>;
|
|
14
|
+
addTaskComment(projectId: string, taskId: string, input: CreateCommentInput): Promise<TaskActivity>;
|
|
15
|
+
updateTaskComment(projectId: string, taskId: string, commentId: string, input: UpdateCommentInput): Promise<TaskActivity>;
|
|
16
|
+
deleteTaskComment(projectId: string, taskId: string, commentId: string): Promise<void>;
|
|
17
|
+
listBDDScenarios(projectId: string, taskId: string): Promise<BDDScenario[]>;
|
|
18
|
+
createBDDScenario(projectId: string, taskId: string, input: CreateBDDScenarioInput): Promise<BDDScenario>;
|
|
19
|
+
getBDDScenario(projectId: string, taskId: string, scenarioId: string): Promise<BDDScenario>;
|
|
20
|
+
updateBDDScenario(projectId: string, taskId: string, scenarioId: string, input: UpdateBDDScenarioInput): Promise<BDDScenario>;
|
|
21
|
+
deleteBDDScenario(projectId: string, taskId: string, scenarioId: string): Promise<void>;
|
|
22
|
+
listTaskPRs(projectId: string, taskId: string): Promise<PullRequest[]>;
|
|
23
|
+
linkPRToTask(projectId: string, taskId: string, input: LinkPRInput): Promise<PullRequest>;
|
|
24
|
+
unlinkPRFromTask(projectId: string, taskId: string, prId: string): Promise<void>;
|
|
25
|
+
createBranch(projectId: string, taskId: string, input: CreateBranchInput): Promise<CreateBranchResult>;
|
|
26
|
+
listTaskBranches(projectId: string, taskId: string): Promise<TaskBranch[]>;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=task-extended-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-extended-client.d.ts","sourceRoot":"","sources":["../../src/api/task-extended-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,WAAW,EACX,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,UAAU,EACV,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,sBAAsB,EACtB,kBAAkB,EAClB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,yBAAyB;IACrC,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;YAIhB,OAAO;YA+CP,GAAG;YAIH,IAAI;YAIJ,KAAK;YAIL,MAAM;IAMd,kBAAkB,CACvB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,EAAE,CAAC;IAYpB,cAAc,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,YAAY,CAAC;IAOlB,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,YAAY,CAAC;IAOlB,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC;IAQV,gBAAgB,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBnB,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAOjB,cAAc,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC;IAMjB,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,WAAW,CAAC;IAOjB,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAQV,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAgBtE,YAAY,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,WAAW,GAChB,OAAO,CAAC,WAAW,CAAC;IAOjB,gBAAgB,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC;IAMV,YAAY,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,iBAAiB,GACtB,OAAO,CAAC,kBAAkB,CAAC;IAOxB,gBAAgB,CACrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC;CASxB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extended API client for Task Activities, Comments, BDD Scenarios, and GitHub.
|
|
3
|
+
*/
|
|
4
|
+
export class PacaAPITaskExtendedClient {
|
|
5
|
+
config;
|
|
6
|
+
constructor(config) {
|
|
7
|
+
this.config = config;
|
|
8
|
+
}
|
|
9
|
+
async request(method, path, body) {
|
|
10
|
+
const url = `${this.config.baseURL}${path}`;
|
|
11
|
+
const headers = {
|
|
12
|
+
"Content-Type": "application/json",
|
|
13
|
+
"X-API-Key": this.config.apiKey,
|
|
14
|
+
};
|
|
15
|
+
const options = {
|
|
16
|
+
method,
|
|
17
|
+
headers,
|
|
18
|
+
};
|
|
19
|
+
if (body) {
|
|
20
|
+
options.body = JSON.stringify(body);
|
|
21
|
+
}
|
|
22
|
+
const response = await fetch(url, options);
|
|
23
|
+
if (!response.ok) {
|
|
24
|
+
const errorText = await response.text();
|
|
25
|
+
throw new Error(`API request failed: ${response.status} ${response.statusText} - ${errorText}`);
|
|
26
|
+
}
|
|
27
|
+
const jsonResponse = await response.json();
|
|
28
|
+
// Handle SuccessEnvelope wrapper
|
|
29
|
+
if (jsonResponse &&
|
|
30
|
+
typeof jsonResponse === "object" &&
|
|
31
|
+
"success" in jsonResponse) {
|
|
32
|
+
const envelope = jsonResponse;
|
|
33
|
+
if (envelope.success) {
|
|
34
|
+
return envelope.data;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// Fallback for responses not wrapped in SuccessEnvelope
|
|
38
|
+
return jsonResponse;
|
|
39
|
+
}
|
|
40
|
+
async get(path) {
|
|
41
|
+
return this.request("GET", path);
|
|
42
|
+
}
|
|
43
|
+
async post(path, body) {
|
|
44
|
+
return this.request("POST", path, body);
|
|
45
|
+
}
|
|
46
|
+
async patch(path, body) {
|
|
47
|
+
return this.request("PATCH", path, body);
|
|
48
|
+
}
|
|
49
|
+
async delete(path) {
|
|
50
|
+
return this.request("DELETE", path);
|
|
51
|
+
}
|
|
52
|
+
// ==================== Task Activities ====================
|
|
53
|
+
async listTaskActivities(projectId, taskId) {
|
|
54
|
+
const response = await this.get(`/api/v1/projects/${projectId}/tasks/${taskId}/activities`);
|
|
55
|
+
if (Array.isArray(response)) {
|
|
56
|
+
return response;
|
|
57
|
+
}
|
|
58
|
+
return response.items || response.activities || response.data || [];
|
|
59
|
+
}
|
|
60
|
+
// ==================== Task Comments ====================
|
|
61
|
+
async addTaskComment(projectId, taskId, input) {
|
|
62
|
+
return this.post(`/api/v1/projects/${projectId}/tasks/${taskId}/activities/comments`, input);
|
|
63
|
+
}
|
|
64
|
+
async updateTaskComment(projectId, taskId, commentId, input) {
|
|
65
|
+
return this.patch(`/api/v1/projects/${projectId}/tasks/${taskId}/activities/comments/${commentId}`, input);
|
|
66
|
+
}
|
|
67
|
+
async deleteTaskComment(projectId, taskId, commentId) {
|
|
68
|
+
await this.delete(`/api/v1/projects/${projectId}/tasks/${taskId}/activities/comments/${commentId}`);
|
|
69
|
+
}
|
|
70
|
+
// ==================== BDD Scenarios ====================
|
|
71
|
+
async listBDDScenarios(projectId, taskId) {
|
|
72
|
+
const response = await this.get(`/api/v1/projects/${projectId}/tasks/${taskId}/bdd-scenarios`);
|
|
73
|
+
if (Array.isArray(response)) {
|
|
74
|
+
return response;
|
|
75
|
+
}
|
|
76
|
+
return (response.items ||
|
|
77
|
+
response.scenarios ||
|
|
78
|
+
response.bddScenarios ||
|
|
79
|
+
response.data ||
|
|
80
|
+
[]);
|
|
81
|
+
}
|
|
82
|
+
async createBDDScenario(projectId, taskId, input) {
|
|
83
|
+
return this.post(`/api/v1/projects/${projectId}/tasks/${taskId}/bdd-scenarios`, input);
|
|
84
|
+
}
|
|
85
|
+
async getBDDScenario(projectId, taskId, scenarioId) {
|
|
86
|
+
return this.get(`/api/v1/projects/${projectId}/tasks/${taskId}/bdd-scenarios/${scenarioId}`);
|
|
87
|
+
}
|
|
88
|
+
async updateBDDScenario(projectId, taskId, scenarioId, input) {
|
|
89
|
+
return this.patch(`/api/v1/projects/${projectId}/tasks/${taskId}/bdd-scenarios/${scenarioId}`, input);
|
|
90
|
+
}
|
|
91
|
+
async deleteBDDScenario(projectId, taskId, scenarioId) {
|
|
92
|
+
await this.delete(`/api/v1/projects/${projectId}/tasks/${taskId}/bdd-scenarios/${scenarioId}`);
|
|
93
|
+
}
|
|
94
|
+
// ==================== Task GitHub ====================
|
|
95
|
+
async listTaskPRs(projectId, taskId) {
|
|
96
|
+
const response = await this.get(`/api/v1/projects/${projectId}/tasks/${taskId}/github/pull-requests`);
|
|
97
|
+
if (Array.isArray(response)) {
|
|
98
|
+
return response;
|
|
99
|
+
}
|
|
100
|
+
return (response.items ||
|
|
101
|
+
response.pullRequests ||
|
|
102
|
+
response.prs ||
|
|
103
|
+
response.data ||
|
|
104
|
+
[]);
|
|
105
|
+
}
|
|
106
|
+
async linkPRToTask(projectId, taskId, input) {
|
|
107
|
+
return this.post(`/api/v1/projects/${projectId}/tasks/${taskId}/github/pull-requests`, input);
|
|
108
|
+
}
|
|
109
|
+
async unlinkPRFromTask(projectId, taskId, prId) {
|
|
110
|
+
await this.delete(`/api/v1/projects/${projectId}/tasks/${taskId}/github/pull-requests/${prId}`);
|
|
111
|
+
}
|
|
112
|
+
async createBranch(projectId, taskId, input) {
|
|
113
|
+
return this.post(`/api/v1/projects/${projectId}/tasks/${taskId}/github/branches`, input);
|
|
114
|
+
}
|
|
115
|
+
async listTaskBranches(projectId, taskId) {
|
|
116
|
+
const response = await this.get(`/api/v1/projects/${projectId}/tasks/${taskId}/github/branches`);
|
|
117
|
+
if (Array.isArray(response)) {
|
|
118
|
+
return response;
|
|
119
|
+
}
|
|
120
|
+
return response.items || response.branches || response.data || [];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=task-extended-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-extended-client.js","sourceRoot":"","sources":["../../src/api/task-extended-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Attachment, BulkMoveTasksInput, CreateCustomFieldInput, CreateViewInput, CustomFieldDefinition, PacaConfig, ReorderViewsInput, TaskPosition, UpdateCustomFieldInput, UpdateViewInput, View } from "../types/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Extended API client for Views, Custom Fields, and Attachments.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PacaAPIViewsClient {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: PacaConfig);
|
|
8
|
+
private request;
|
|
9
|
+
private get;
|
|
10
|
+
private post;
|
|
11
|
+
private patch;
|
|
12
|
+
private delete;
|
|
13
|
+
private put;
|
|
14
|
+
listViews(projectId: string, context?: string, sprintId?: string | null): Promise<View[]>;
|
|
15
|
+
createView(projectId: string, input: CreateViewInput, context?: string, sprintId?: string | null): Promise<View>;
|
|
16
|
+
reorderViews(projectId: string, input: ReorderViewsInput, context?: string, sprintId?: string | null): Promise<void>;
|
|
17
|
+
getView(projectId: string, viewId: string): Promise<View>;
|
|
18
|
+
updateView(projectId: string, viewId: string, input: UpdateViewInput): Promise<View>;
|
|
19
|
+
deleteView(projectId: string, viewId: string): Promise<void>;
|
|
20
|
+
listTaskPositions(projectId: string, viewId: string): Promise<TaskPosition[]>;
|
|
21
|
+
bulkMoveViewTaskPositions(projectId: string, viewId: string, items: Array<{
|
|
22
|
+
task_id: string;
|
|
23
|
+
position: number;
|
|
24
|
+
group_key?: string | null;
|
|
25
|
+
}>): Promise<void>;
|
|
26
|
+
bulkMoveTasks(projectId: string, viewId: string, input: BulkMoveTasksInput): Promise<void>;
|
|
27
|
+
listCustomFieldDefinitions(projectId: string): Promise<CustomFieldDefinition[]>;
|
|
28
|
+
getCustomFieldDefinition(projectId: string, fieldId: string): Promise<CustomFieldDefinition>;
|
|
29
|
+
createCustomFieldDefinition(projectId: string, input: CreateCustomFieldInput): Promise<CustomFieldDefinition>;
|
|
30
|
+
updateCustomFieldDefinition(projectId: string, fieldId: string, input: UpdateCustomFieldInput): Promise<CustomFieldDefinition>;
|
|
31
|
+
deleteCustomFieldDefinition(projectId: string, fieldId: string): Promise<void>;
|
|
32
|
+
listTaskAttachments(projectId: string, taskId: string): Promise<Attachment[]>;
|
|
33
|
+
getAttachmentDownloadURL(projectId: string, taskId: string, attachmentId: string): Promise<string>;
|
|
34
|
+
deleteTaskAttachment(projectId: string, taskId: string, attachmentId: string): Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=views-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"views-client.d.ts","sourceRoot":"","sources":["../../src/api/views-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EAEjB,YAAY,EACZ,sBAAsB,EACtB,eAAe,EACf,IAAI,EACJ,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;YAIhB,OAAO;YA+CP,GAAG;YAIH,IAAI;YAIJ,KAAK;YAIL,MAAM;YAIN,GAAG;IAMX,SAAS,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,EAAE,CAAC;IAeZ,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC;IAYV,YAAY,CACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,EACxB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,OAAO,CAAC,IAAI,CAAC;IAYV,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,UAAU,CACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,GACpB,OAAO,CAAC,IAAI,CAAC;IAIV,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5D,iBAAiB,CACtB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,YAAY,EAAE,CAAC;IAgBpB,yBAAyB,CAC9B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,CAAC,GACA,OAAO,CAAC,IAAI,CAAC;IAOV,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,GACvB,OAAO,CAAC,IAAI,CAAC;IAaV,0BAA0B,CAC/B,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAgB7B,wBAAwB,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC;IAI3B,2BAA2B,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAI3B,2BAA2B,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAO3B,2BAA2B,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC;IAMV,mBAAmB,CACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,EAAE,CAAC;IAUlB,wBAAwB,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC;IAOZ,oBAAoB,CACzB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;CAKhB"}
|