@taiga-ai/mcp-server 0.36.0-dev.918 → 0.36.0-dev.920

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 (2) hide show
  1. package/dist/index.js +39 -0
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -26183,6 +26183,31 @@ const ENVIRONMENT_TYPES = [
26183
26183
  //#endregion
26184
26184
  //#region ../../packages/types/dist/api-keys.js
26185
26185
  /**
26186
+ * API key scopes control what operations a key can perform.
26187
+ * Scopes act as a ceiling -- the effective permissions are the intersection
26188
+ * of the key's scopes and the user's role-based capabilities.
26189
+ *
26190
+ * Convention: "resource:action" matching the existing Capability type.
26191
+ */
26192
+ const API_KEY_SCOPES = [
26193
+ "products:read",
26194
+ "products:write",
26195
+ "backlog:read",
26196
+ "backlog:write",
26197
+ "factories:read",
26198
+ "factories:documents:write",
26199
+ "users:read",
26200
+ "tenant:documents:read",
26201
+ "tenant:documents:write",
26202
+ "vcs:read",
26203
+ "customDocuments:read",
26204
+ "customDocuments:write",
26205
+ "customDocuments:delete",
26206
+ "factories:write",
26207
+ "vcs:manage"
26208
+ ];
26209
+ const API_KEY_PREFIX = "taiga_sk_live_";
26210
+ /**
26186
26211
  * The groups the MCP server's tools come in (PRO-2838). A key may name the ones
26187
26212
  * its AI tool sees; null is every one. This is focus, not security: a tool the
26188
26213
  * key's role or scopes do not allow is never offered, whatever is named here.
@@ -27344,6 +27369,19 @@ strictObject({ type: productDocumentType }), object({
27344
27369
  isProtected: boolean().default(false)
27345
27370
  }).optional()
27346
27371
  });
27372
+ /**
27373
+ * The MCP toolsets a key's AI tool sees: at least one, each once, or null for
27374
+ * every one (PRO-2838). An empty list would start a server with no tools at all.
27375
+ */
27376
+ const mcpToolsets = array(_enum(MCP_TOOLSETS)).min(1).refine((sets) => new Set(sets).size === sets.length, "Name each toolset once").nullable();
27377
+ strictObject({
27378
+ key: string$2().regex(new RegExp(`^${API_KEY_PREFIX}[0-9a-f]{64}$`)),
27379
+ name: string$2().min(1).max(255),
27380
+ scopes: array(_enum(API_KEY_SCOPES)).optional(),
27381
+ expiresInDays: number$1().int().min(1).max(365).optional(),
27382
+ mcpToolsets: mcpToolsets.optional()
27383
+ }), object({ keyId: uuid });
27384
+ strictObject({ mcpToolsets });
27347
27385
  object({
27348
27386
  url: string$2().url(),
27349
27387
  expiresAt: string$2()
@@ -31343,6 +31381,7 @@ function registerBuildTools(server, client) {
31343
31381
  }
31344
31382
  /** What happened to a request that steers a run (PRO-3161), in one sentence. */
31345
31383
  function steerSituation(steer) {
31384
+ if (steer === "sent") return "The run takes it as an instruction while it keeps working.";
31346
31385
  if (steer === "replanning") return "The run has paused and its plan is being revised for the request.";
31347
31386
  if (steer === "after_step") return "The run stops when the step it is building ends, then its plan is revised.";
31348
31387
  if (steer === "after_round") return "The run is answering review comments or fixing CI; the request is planned when that round ends, and no further automatic round starts while it is open.";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ai/mcp-server",
3
- "version": "0.36.0-dev.918",
3
+ "version": "0.36.0-dev.920",
4
4
  "description": "Taiga for AI coding assistants: read products, policies, initiatives and runs, and operate the line, over MCP",
5
5
  "mcpName": "ga.tai/mcp-server",
6
6
  "license": "UNLICENSED",