@taiga-ai/mcp-server 0.2.3-dev.267 → 0.2.3-dev.60

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.
Files changed (40) hide show
  1. package/dist/index.js +495 -62
  2. package/package.json +8 -6
  3. package/scripts/build.mjs +37 -0
  4. package/scripts/prepare-publish.cjs +15 -7
  5. package/src/client.ts +13 -5
  6. package/src/index.ts +19 -7
  7. package/src/server.integration.test.ts +99 -45
  8. package/src/tools/documents.ts +1 -1
  9. package/src/tools/index.ts +5 -1
  10. package/taiga-ai-mcp-server-0.2.3-dev.60.tgz +0 -0
  11. package/dist/client.d.ts +0 -109
  12. package/dist/client.d.ts.map +0 -1
  13. package/dist/client.js +0 -228
  14. package/dist/client.test.d.ts +0 -2
  15. package/dist/client.test.d.ts.map +0 -1
  16. package/dist/client.test.js +0 -203
  17. package/dist/index.d.ts +0 -3
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/server.integration.test.d.ts +0 -2
  20. package/dist/server.integration.test.d.ts.map +0 -1
  21. package/dist/server.integration.test.js +0 -358
  22. package/dist/tools/backlogs.d.ts +0 -4
  23. package/dist/tools/backlogs.d.ts.map +0 -1
  24. package/dist/tools/backlogs.js +0 -6
  25. package/dist/tools/documents.d.ts +0 -4
  26. package/dist/tools/documents.d.ts.map +0 -1
  27. package/dist/tools/documents.js +0 -97
  28. package/dist/tools/index.d.ts +0 -12
  29. package/dist/tools/index.d.ts.map +0 -1
  30. package/dist/tools/index.js +0 -18
  31. package/dist/tools/projects.d.ts +0 -4
  32. package/dist/tools/projects.d.ts.map +0 -1
  33. package/dist/tools/projects.js +0 -64
  34. package/dist/tools/skills.d.ts +0 -4
  35. package/dist/tools/skills.d.ts.map +0 -1
  36. package/dist/tools/skills.js +0 -45
  37. package/dist/tools/summarize.d.ts +0 -15
  38. package/dist/tools/summarize.d.ts.map +0 -1
  39. package/dist/tools/summarize.js +0 -26
  40. package/taiga-ai-mcp-server-0.2.3-dev.267.tgz +0 -0
@@ -5,10 +5,14 @@
5
5
  *
6
6
  * - Removes `private: true` so npm allows publishing
7
7
  * - Sets publishConfig to public access
8
- * - Strips workspace-only dependencies (@taiga/types is compile-time only)
9
- * - Marks the bin entry executable. tsc emits dist/index.js with mode 0644,
10
- * so without this `npx -y @taiga-ai/mcp-server` fails with EACCES because
11
- * the kernel cannot exec a non-executable file regardless of the shebang.
8
+ * - Strips workspace-only dependencies. `@taiga/types` is compile-time only
9
+ * (erased); `@taiga/feature-flags` is a runtime value but is bundled into
10
+ * dist/index.js by the rolldown build, so neither is a real runtime dep.
11
+ * - Drops the `types` entry points the published artifact is a bundled CLI
12
+ * and ships no `.d.ts` (the build runs `tsc --noEmit`).
13
+ * - Marks the bin entry executable. The bundler emits dist/index.js with mode
14
+ * 0644, so without this `npx -y @taiga-ai/mcp-server` fails with EACCES
15
+ * because the kernel cannot exec a non-executable file despite the shebang.
12
16
  */
13
17
 
14
18
  const fs = require('fs');
@@ -24,9 +28,13 @@ try {
24
28
  delete pkg.private;
25
29
  pkg.publishConfig = { access: 'public' };
26
30
 
27
- if (pkg.dependencies?.['@taiga/types']) {
28
- delete pkg.dependencies['@taiga/types'];
29
- }
31
+ // Workspace deps are inlined by the bundle — drop them from the published deps.
32
+ delete pkg.dependencies?.['@taiga/types'];
33
+ delete pkg.dependencies?.['@taiga/feature-flags'];
34
+
35
+ // No declarations are shipped for the bundled CLI.
36
+ delete pkg.types;
37
+ delete pkg.exports?.['.']?.types;
30
38
 
31
39
  fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n', 'utf8');
32
40
  console.log('prepare-publish: package.json updated');
package/src/client.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { ApiKeyIntrospection } from '@taiga/types';
2
+ import { featureFlags } from '@taiga/feature-flags';
2
3
 
3
4
  /**
4
5
  * HTTP client for the Taiga API.
@@ -169,13 +170,17 @@ export class TaigaClient {
169
170
  const project = await this.request<{ data: Record<string, unknown> }>('GET', `/projects/${projectId}`);
170
171
  const teamId = project.data.teamId as string | undefined;
171
172
 
172
- // Fetch everything in parallel
173
+ // Fetch everything in parallel. Skills is hidden behind a feature flag
174
+ // (user-facing surface only), so skip its fetch entirely when disabled —
175
+ // the endpoint would 404 otherwise.
173
176
  const [projectDocs, teamDocs, skills] = await Promise.all([
174
177
  this.listProjectDocuments(projectId, { limit: 20 }).catch(() => ({ data: [] })),
175
178
  teamId
176
179
  ? this.listTeamDocuments(teamId, { limit: 20 }).catch(() => ({ data: [] }))
177
180
  : Promise.resolve({ data: [] }),
178
- this.listSkills({ limit: 100 }).catch(() => ({ data: [] })),
181
+ featureFlags.skills
182
+ ? this.listSkills({ limit: 100 }).catch(() => ({ data: [] }))
183
+ : Promise.resolve({ data: [] as unknown[] }),
179
184
  ]);
180
185
 
181
186
  // Fetch full content for key documents (in parallel)
@@ -233,11 +238,14 @@ export class TaigaClient {
233
238
  isDraft: d.isDraft,
234
239
  })),
235
240
  },
236
- skills_summary: (skills.data as Record<string, unknown>[])
237
- .filter((s) => !s.teamId || s.teamId === teamId)
238
- .map((s) => ({ id: s.id, name: s.name, slug: s.slug, description: s.description })),
239
241
  };
240
242
 
243
+ if (featureFlags.skills) {
244
+ context.skills_summary = (skills.data as Record<string, unknown>[])
245
+ .filter((s) => !s.teamId || s.teamId === teamId)
246
+ .map((s) => ({ id: s.id, name: s.name, slug: s.slug, description: s.description }));
247
+ }
248
+
241
249
  return context;
242
250
  }
243
251
 
package/src/index.ts CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
4
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
5
+ import { featureFlags } from '@taiga/feature-flags';
5
6
  import { TaigaClient } from './client.js';
6
7
  import { registerAllTools } from './tools/index.js';
7
8
 
@@ -50,16 +51,27 @@ async function main() {
50
51
  "Specification (what to build), architecture (how it's designed), threat model (security risks),",
51
52
  'technology decisions, and data flow. Read these to understand the specific project context.',
52
53
  '',
53
- '**Skills** (taiga_list_skills / taiga_get_skill):',
54
- 'Coding standards, security requirements, API design patterns, testing strategy, database patterns,',
55
- 'and more. These are detailed engineering guidelines with code examples.',
56
- '',
54
+ // Skills is hidden behind a feature flag (user-facing surface only).
55
+ ...(featureFlags.skills
56
+ ? [
57
+ '**Skills** (taiga_list_skills / taiga_get_skill):',
58
+ 'Coding standards, security requirements, API design patterns, testing strategy, database patterns,',
59
+ 'and more. These are detailed engineering guidelines with code examples.',
60
+ '',
61
+ ]
62
+ : []),
57
63
  "Workflow: Start with taiga_list_teams to find your team, then read the team's domain_context",
58
64
  'and tech_preferences. For project-specific work, use taiga_list_projects to find the project,',
59
- 'then read its specification and architecture. Use skills for coding patterns.',
65
+ featureFlags.skills
66
+ ? 'then read its specification and architecture. Use skills for coding patterns.'
67
+ : 'then read its specification and architecture.',
60
68
  '',
61
- 'When you notice a policy, skill, or team document is outdated, use the update tools',
62
- '(taiga_update_document, taiga_update_skill, taiga_update_team_document) to fix it.',
69
+ featureFlags.skills
70
+ ? 'When you notice a policy, skill, or team document is outdated, use the update tools'
71
+ : 'When you notice a policy or team document is outdated, use the update tools',
72
+ featureFlags.skills
73
+ ? '(taiga_update_document, taiga_update_skill, taiga_update_team_document) to fix it.'
74
+ : '(taiga_update_document, taiga_update_team_document) to fix it.',
63
75
  'This keeps the knowledge base accurate for everyone.',
64
76
  ].join('\n'),
65
77
  }
@@ -5,6 +5,11 @@ import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
5
5
  import { TaigaClient } from './client.js';
6
6
  import { registerAllTools } from './tools/index.js';
7
7
 
8
+ // Skills is hidden behind a feature flag. Mock the shared flag with a mutable
9
+ // object so tests can exercise both the default (off) and enabled states.
10
+ const { mockFeatureFlags } = vi.hoisted(() => ({ mockFeatureFlags: { skills: false } }));
11
+ vi.mock('@taiga/feature-flags', () => ({ featureFlags: mockFeatureFlags }));
12
+
8
13
  // ---------------------------------------------------------------------------
9
14
  // Helpers -- thin wrappers, not abstraction layers
10
15
  // ---------------------------------------------------------------------------
@@ -18,20 +23,21 @@ const ALL_CAPABILITIES = [
18
23
  'backlog:read',
19
24
  ];
20
25
 
21
- /** All tool names the server can register (sorted for deterministic comparison). */
22
- const ALL_TOOL_NAMES = [
26
+ /**
27
+ * Tool names registered when the skills feature flag is OFF (the shipped
28
+ * default), sorted for deterministic comparison. The three skill tools
29
+ * (taiga_list_skills / taiga_get_skill / taiga_update_skill) are excluded.
30
+ */
31
+ const BASE_TOOL_NAMES = [
23
32
  'taiga_get_document',
24
33
  'taiga_get_project_document',
25
- 'taiga_get_skill',
26
34
  'taiga_get_team_document',
27
35
  'taiga_list_documents',
28
36
  'taiga_list_project_documents',
29
37
  'taiga_list_projects',
30
- 'taiga_list_skills',
31
38
  'taiga_list_team_documents',
32
39
  'taiga_list_teams',
33
40
  'taiga_update_document',
34
- 'taiga_update_skill',
35
41
  'taiga_update_team_document',
36
42
  ];
37
43
 
@@ -120,6 +126,7 @@ function parseToolResult(result: Record<string, unknown>) {
120
126
  describe('MCP server integration', () => {
121
127
  beforeEach(() => {
122
128
  vi.restoreAllMocks();
129
+ mockFeatureFlags.skills = false;
123
130
  });
124
131
 
125
132
  // -------------------------------------------------------------------------
@@ -129,12 +136,23 @@ describe('MCP server integration', () => {
129
136
  // -------------------------------------------------------------------------
130
137
 
131
138
  describe('tool discovery', () => {
132
- it('should expose all 13 tools when API key has full capabilities', async () => {
139
+ it('should expose all non-skill tools when API key has full capabilities', async () => {
133
140
  const { client } = await bootMcpPair({ capabilities: ALL_CAPABILITIES });
134
141
 
135
142
  const { tools } = await client.listTools();
136
143
 
137
- expect(toolNames(tools)).toEqual(ALL_TOOL_NAMES);
144
+ // Skills is flag-off by default, so the skill tools are not registered.
145
+ expect(toolNames(tools)).toEqual(BASE_TOOL_NAMES);
146
+ });
147
+
148
+ it('should not register skill tools when the skills flag is off', async () => {
149
+ const { client } = await bootMcpPair({ capabilities: ALL_CAPABILITIES });
150
+
151
+ const names = toolNames((await client.listTools()).tools);
152
+
153
+ expect(names).not.toContain('taiga_list_skills');
154
+ expect(names).not.toContain('taiga_get_skill');
155
+ expect(names).not.toContain('taiga_update_skill');
138
156
  });
139
157
 
140
158
  it('should reject tools/list when API key has no capabilities', async () => {
@@ -167,8 +185,9 @@ describe('MCP server integration', () => {
167
185
 
168
186
  expect(names).toContain('taiga_list_documents');
169
187
  expect(names).toContain('taiga_get_document');
170
- expect(names).toContain('taiga_list_skills');
171
- expect(names).toContain('taiga_get_skill');
188
+ // Skills is flag-off by default.
189
+ expect(names).not.toContain('taiga_list_skills');
190
+ expect(names).not.toContain('taiga_get_skill');
172
191
  expect(names).not.toContain('taiga_update_document');
173
192
  });
174
193
 
@@ -181,7 +200,8 @@ describe('MCP server integration', () => {
181
200
  const names = toolNames(tools);
182
201
 
183
202
  expect(names).toContain('taiga_update_document');
184
- expect(names).toContain('taiga_update_skill');
203
+ // Skills is flag-off by default.
204
+ expect(names).not.toContain('taiga_update_skill');
185
205
  });
186
206
 
187
207
  it('should expose team document write when both teams:read and documents:write are granted', async () => {
@@ -209,7 +229,8 @@ describe('MCP server integration', () => {
209
229
  expect(names).toContain('taiga_list_team_documents');
210
230
  // tenant:documents:read tools present
211
231
  expect(names).toContain('taiga_list_documents');
212
- expect(names).toContain('taiga_list_skills');
232
+ // skills flag-off by default
233
+ expect(names).not.toContain('taiga_list_skills');
213
234
  // write tools absent
214
235
  expect(names).not.toContain('taiga_update_document');
215
236
  expect(names).not.toContain('taiga_update_skill');
@@ -238,8 +259,10 @@ describe('MCP server integration', () => {
238
259
  const CONTRACT: Record<string, string[]> = {
239
260
  'projects:read': ['taiga_list_projects', 'taiga_list_project_documents', 'taiga_get_project_document'],
240
261
  'teams:read': ['taiga_list_teams', 'taiga_list_team_documents', 'taiga_get_team_document'],
241
- 'tenant:documents:read': ['taiga_list_documents', 'taiga_get_document', 'taiga_list_skills', 'taiga_get_skill'],
242
- 'tenant:documents:write': ['taiga_update_document', 'taiga_update_skill'],
262
+ // Skills tools are flag-off by default; their capability gating is covered
263
+ // in the 'when the skills feature flag is enabled' block below.
264
+ 'tenant:documents:read': ['taiga_list_documents', 'taiga_get_document'],
265
+ 'tenant:documents:write': ['taiga_update_document'],
243
266
  };
244
267
 
245
268
  for (const [capability, expectedTools] of Object.entries(CONTRACT)) {
@@ -280,25 +303,6 @@ describe('MCP server integration', () => {
280
303
  expect(parseToolResult(result)).toEqual(teams);
281
304
  });
282
305
 
283
- it('should send PATCH when updating a skill', async () => {
284
- const skillId = '00000000-0000-0000-0000-000000000001';
285
- const updated = { id: skillId, name: 'Updated Skill', content: '# Updated' };
286
-
287
- const { client, fetchSpy } = await bootMcpPair({
288
- capabilities: ALL_CAPABILITIES,
289
- routes: { [`PATCH /v1/agent-skills/${skillId}`]: { data: updated } },
290
- });
291
-
292
- await client.callTool({
293
- name: 'taiga_update_skill',
294
- arguments: { id: skillId, content: '# Updated' },
295
- });
296
-
297
- const patchCall = fetchSpy.mock.calls.find((c: unknown[]) => (c[1] as RequestInit)?.method === 'PATCH');
298
- expect(patchCall).toBeDefined();
299
- expect(patchCall![0]).toContain(`/v1/agent-skills/${skillId}`);
300
- });
301
-
302
306
  it('should return document content through MCP protocol', async () => {
303
307
  const docs = [{ id: 'd1', title: 'Security Policy' }];
304
308
 
@@ -353,19 +357,6 @@ describe('MCP server integration', () => {
353
357
  expect(putCall![0]).toContain(`/v1/teams/${teamId}/documents/${docType}/draft`);
354
358
  });
355
359
 
356
- it('should return skills through MCP protocol', async () => {
357
- const skills = [{ id: 's1', name: 'React Standards' }];
358
-
359
- const { client } = await bootMcpPair({
360
- capabilities: ALL_CAPABILITIES,
361
- routes: { 'GET /v1/agent-skills': { data: skills, nextCursor: null } },
362
- });
363
-
364
- const result = await client.callTool({ name: 'taiga_list_skills', arguments: {} });
365
-
366
- expect(parseToolResult(result)).toEqual(skills);
367
- });
368
-
369
360
  it('should return teams through MCP protocol', async () => {
370
361
  const teams = [{ id: 't1', name: 'Engineering' }];
371
362
 
@@ -438,4 +429,67 @@ describe('MCP server integration', () => {
438
429
  expect(result.isError).toBe(true);
439
430
  });
440
431
  });
432
+
433
+ // -------------------------------------------------------------------------
434
+ // Skills feature flag -- when enabled, the skill tools register and behave
435
+ // exactly like the other knowledge-base tools. This preserves coverage of
436
+ // the skill tools for the day the flag is flipped back on.
437
+ // -------------------------------------------------------------------------
438
+
439
+ describe('when the skills feature flag is enabled', () => {
440
+ beforeEach(() => {
441
+ mockFeatureFlags.skills = true;
442
+ });
443
+
444
+ it('registers read skill tools for a documents:read key', async () => {
445
+ const { client } = await bootMcpPair({ capabilities: ['tenant:documents:read'] });
446
+
447
+ const names = toolNames((await client.listTools()).tools);
448
+
449
+ expect(names).toContain('taiga_list_skills');
450
+ expect(names).toContain('taiga_get_skill');
451
+ });
452
+
453
+ it('registers taiga_update_skill with documents:write', async () => {
454
+ const { client } = await bootMcpPair({
455
+ capabilities: ['tenant:documents:read', 'tenant:documents:write'],
456
+ });
457
+
458
+ const names = toolNames((await client.listTools()).tools);
459
+
460
+ expect(names).toContain('taiga_update_skill');
461
+ });
462
+
463
+ it('should return skills through MCP protocol', async () => {
464
+ const skills = [{ id: 's1', name: 'React Standards' }];
465
+
466
+ const { client } = await bootMcpPair({
467
+ capabilities: ALL_CAPABILITIES,
468
+ routes: { 'GET /v1/agent-skills': { data: skills, nextCursor: null } },
469
+ });
470
+
471
+ const result = await client.callTool({ name: 'taiga_list_skills', arguments: {} });
472
+
473
+ expect(parseToolResult(result)).toEqual(skills);
474
+ });
475
+
476
+ it('should send PATCH when updating a skill', async () => {
477
+ const skillId = '00000000-0000-0000-0000-000000000001';
478
+ const updated = { id: skillId, name: 'Updated Skill', content: '# Updated' };
479
+
480
+ const { client, fetchSpy } = await bootMcpPair({
481
+ capabilities: ALL_CAPABILITIES,
482
+ routes: { [`PATCH /v1/agent-skills/${skillId}`]: { data: updated } },
483
+ });
484
+
485
+ await client.callTool({
486
+ name: 'taiga_update_skill',
487
+ arguments: { id: skillId, content: '# Updated' },
488
+ });
489
+
490
+ const patchCall = fetchSpy.mock.calls.find((c: unknown[]) => (c[1] as RequestInit)?.method === 'PATCH');
491
+ expect(patchCall).toBeDefined();
492
+ expect(patchCall![0]).toContain(`/v1/agent-skills/${skillId}`);
493
+ });
494
+ });
441
495
  });
@@ -32,7 +32,7 @@ export function registerDocumentTools(server: McpServer, client: TaigaClient) {
32
32
  'Use this when you need to understand security requirements, data handling rules, ' +
33
33
  'architecture standards, or compliance controls that apply to your code. ' +
34
34
  'Types: policy_security, policy_data, policy_sdlc, policy_ops, policy_tic, ' +
35
- 'policy_risk, policy_architecture, policy_supply_chain, policy_acceptable_use, policy_ip.',
35
+ 'policy_risk, policy_architecture, policy_supply_chain, policy_cloud_governance, policy_acceptable_use, policy_ip.',
36
36
  {
37
37
  type: z
38
38
  .string()
@@ -1,4 +1,5 @@
1
1
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { featureFlags } from '@taiga/feature-flags';
2
3
  import type { TaigaClient } from '../client.js';
3
4
  import { registerProjectTools } from './projects.js';
4
5
  import { registerDocumentTools } from './documents.js';
@@ -17,5 +18,8 @@ export function registerAllTools(server: McpServer, client: TaigaClient): void {
17
18
  registerProjectTools(server, client);
18
19
  registerDocumentTools(server, client);
19
20
  registerBacklogTools(server, client);
20
- registerSkillTools(server, client);
21
+ // Skills is hidden behind a feature flag (user-facing surface only).
22
+ if (featureFlags.skills) {
23
+ registerSkillTools(server, client);
24
+ }
21
25
  }
package/dist/client.d.ts DELETED
@@ -1,109 +0,0 @@
1
- import type { ApiKeyIntrospection } from '@taiga/types';
2
- /**
3
- * HTTP client for the Taiga API.
4
- * Used by the MCP server to proxy tool calls to the backend.
5
- */
6
- export declare class TaigaClient {
7
- private baseUrl;
8
- private apiKey;
9
- private introspection;
10
- constructor(opts: {
11
- baseUrl: string;
12
- apiKey: string;
13
- });
14
- private request;
15
- introspect(): Promise<ApiKeyIntrospection>;
16
- getIntrospection(): ApiKeyIntrospection | null;
17
- hasCapability(capability: string): boolean;
18
- listProjects(opts?: {
19
- teamId?: string;
20
- status?: string;
21
- limit?: number;
22
- }): Promise<{
23
- data: unknown[];
24
- nextCursor: string | null;
25
- }>;
26
- getProject(id: string): Promise<{
27
- data: unknown;
28
- }>;
29
- listTenantDocuments(opts?: {
30
- limit?: number;
31
- }): Promise<{
32
- data: unknown[];
33
- nextCursor: string | null;
34
- }>;
35
- getTenantDocument(type: string): Promise<{
36
- data: unknown;
37
- }>;
38
- saveTenantDocumentDraft(type: string, body: {
39
- data: Record<string, unknown>;
40
- }): Promise<{
41
- data: unknown;
42
- }>;
43
- listTeamDocuments(teamId: string, opts?: {
44
- limit?: number;
45
- }): Promise<{
46
- data: unknown[];
47
- nextCursor: string | null;
48
- }>;
49
- getTeamDocument(teamId: string, type: string): Promise<{
50
- data: unknown;
51
- }>;
52
- saveTeamDocumentDraft(teamId: string, type: string, body: {
53
- data: Record<string, unknown>;
54
- }): Promise<{
55
- data: unknown;
56
- }>;
57
- listProjectDocuments(projectId: string, opts?: {
58
- limit?: number;
59
- }): Promise<{
60
- data: unknown[];
61
- nextCursor: string | null;
62
- }>;
63
- getProjectDocument(projectId: string, type: string): Promise<{
64
- data: unknown;
65
- }>;
66
- listSkills(opts?: {
67
- scope?: string;
68
- scopeId?: string;
69
- limit?: number;
70
- }): Promise<{
71
- data: unknown[];
72
- nextCursor: string | null;
73
- }>;
74
- getSkill(id: string): Promise<{
75
- data: unknown;
76
- }>;
77
- updateSkill(id: string, body: {
78
- name?: string;
79
- description?: string;
80
- content?: string;
81
- }): Promise<{
82
- data: unknown;
83
- }>;
84
- /**
85
- * Fetch the full context for a project in parallel: project metadata,
86
- * team documents, project documents, and team skills.
87
- * Returns a structured bundle optimized for coding agent consumption.
88
- */
89
- getProjectContext(projectId: string): Promise<Record<string, unknown>>;
90
- listBacklogItems(projectId: string, opts?: {
91
- limit?: number;
92
- }): Promise<{
93
- data: unknown[];
94
- nextCursor: string | null;
95
- }>;
96
- getBacklogItem(itemId: string): Promise<{
97
- data: unknown;
98
- }>;
99
- listEnvironments(projectId: string): Promise<{
100
- data: unknown[];
101
- }>;
102
- listTeams(opts?: {
103
- limit?: number;
104
- }): Promise<{
105
- data: unknown[];
106
- nextCursor: string | null;
107
- }>;
108
- }
109
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}