@taiga-ai/mcp-server 0.37.0-dev.998 → 0.37.0-dev.999
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.js +194 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -24176,6 +24176,107 @@ const CLOUD_PROVIDERS = [
|
|
|
24176
24176
|
"other"
|
|
24177
24177
|
];
|
|
24178
24178
|
//#endregion
|
|
24179
|
+
//#region ../../packages/types/dist/ecosystems.js
|
|
24180
|
+
/**
|
|
24181
|
+
* Engineering ecosystems a tenant builds in.
|
|
24182
|
+
*
|
|
24183
|
+
* The structural twin of CLOUD_PROVIDERS: a discrete onboarding choice that
|
|
24184
|
+
* drives seeded policy content. Clouds say where the software runs; ecosystems
|
|
24185
|
+
* say what it is written in.
|
|
24186
|
+
*
|
|
24187
|
+
* Deliberately scoped to the runtimes the coding agent actually ships skills
|
|
24188
|
+
* for (`apps/agents/coding/src/coding/skills/loader.py`, `_RUNTIME_SKILLS`).
|
|
24189
|
+
* Offering a choice the agent cannot honour would be worse than not asking.
|
|
24190
|
+
* JVM was absent for that reason until the coding image gained the JDK, Maven,
|
|
24191
|
+
* Gradle, Ruby and PHP toolchains (PRO-1745) and the agent its `java`,
|
|
24192
|
+
* `ruby-rails` and `php-laravel` skills (PRO-2914); see the three entries
|
|
24193
|
+
* below.
|
|
24194
|
+
*
|
|
24195
|
+
* Frontend is its own entry rather than being bundled into `node`, because a
|
|
24196
|
+
* stack has tiers and a runtime list cannot express them. React-with-a-Python-
|
|
24197
|
+
* backend is one of the most common shapes there is; folding React into `node`
|
|
24198
|
+
* would force those tenants to declare a Node backend they do not run, and the
|
|
24199
|
+
* seeded policy would then approve Fastify for a Python shop. It also matches
|
|
24200
|
+
* the coding agent more closely, which already keeps `node-typescript` and
|
|
24201
|
+
* `react-nextjs` as separate skills under one runtime key.
|
|
24202
|
+
*
|
|
24203
|
+
* `nextjs` is the case that broke the tier model, and the reason it is its own
|
|
24204
|
+
* entry rather than react+node (PRO-809). Next.js occupies BOTH tiers: route
|
|
24205
|
+
* handlers and Server Actions are a backend, so `react` alone leaves a real
|
|
24206
|
+
* backend undeclared, while `react` + `node` approves Fastify and Drizzle at a
|
|
24207
|
+
* shop running neither. It also builds with its own bundler, so the react
|
|
24208
|
+
* preset's Vite row is wrong for it. One framework spanning two tiers is not
|
|
24209
|
+
* something hedged wording can fix; it needs its own entry.
|
|
24210
|
+
*
|
|
24211
|
+
* `other` is the escape hatch, and exists because its absence was a trap.
|
|
24212
|
+
* `CLOUD_PROVIDERS` has always had one; ecosystems did not, so a Vue, Angular
|
|
24213
|
+
* or Svelte shop had no true answer: declaring `react` is wrong, and declaring
|
|
24214
|
+
* nothing falls to `UNDECLARED_STACK_ROWS`, which opens with
|
|
24215
|
+
* "Frontend: React, TypeScript". Both paths asserted React at them. `other`
|
|
24216
|
+
* contributes no rows at all, so their approved-technology table is silent
|
|
24217
|
+
* about language rather than wrong about it.
|
|
24218
|
+
*
|
|
24219
|
+
* Note what `other` is NOT: an invitation to add Vue and friends as options.
|
|
24220
|
+
* The agent ships no skill for any of them, and the rule above still stands --
|
|
24221
|
+
* a skill first, then the option, never the reverse.
|
|
24222
|
+
*
|
|
24223
|
+
* `angular` is the first entry outside the React family, and it is its own
|
|
24224
|
+
* entry for the same reason `nextjs` is: the toolchain, not the language.
|
|
24225
|
+
* Angular builds with the Angular CLI's own esbuild-based builder rather than
|
|
24226
|
+
* Vite, lints with angular-eslint rather than oxlint, and (since v21) tests
|
|
24227
|
+
* with the CLI's Vitest builder rather than a bare Vitest config. Declaring
|
|
24228
|
+
* `react` at an Angular shop would seed every one of those rows wrong.
|
|
24229
|
+
*
|
|
24230
|
+
* It also retires the specific trap `other` was documented with: an Angular
|
|
24231
|
+
* shop previously had no true answer. Vue and Svelte still do not, and the
|
|
24232
|
+
* rule below is why -- Angular earned the entry by having a coding-agent
|
|
24233
|
+
* skill written for it first (PRO-1401), not the reverse.
|
|
24234
|
+
*
|
|
24235
|
+
* `nestjs` is the backend counterpart of that same rule, and its own entry
|
|
24236
|
+
* rather than folding into `node` for the same reason: the toolchain, not the
|
|
24237
|
+
* language. `node` approves Fastify, Zod and Drizzle and builds with Vite; a
|
|
24238
|
+
* NestJS service runs its own framework on the Express or Fastify adapter,
|
|
24239
|
+
* validates with class-validator DTOs, persists through Prisma or TypeORM, and
|
|
24240
|
+
* builds with the Nest CLI or Nx. Declaring `node` at a Nest shop would seed
|
|
24241
|
+
* every one of those rows wrong. Like Angular, it earned the entry by having
|
|
24242
|
+
* its coding-agent skill shipped first (PRO-1901), not the reverse.
|
|
24243
|
+
*
|
|
24244
|
+
* `react-native` is the mobile client tier, and a separate entry from `react`
|
|
24245
|
+
* for the same reason `nextjs` is (PRO-936). `react` is a web SPA that builds
|
|
24246
|
+
* with Vite and tests with Vitest/Playwright; React Native is an Expo-managed
|
|
24247
|
+
* mobile app that builds with the Expo/EAS toolchain and tests with jest-expo,
|
|
24248
|
+
* so declaring `react` would seed a web tenant's Vite/Vitest rows at a mobile
|
|
24249
|
+
* shop. Expo-managed is the default and the only variant here: a bare-workflow
|
|
24250
|
+
* React Native app is the same source with a different native build pipeline,
|
|
24251
|
+
* not a different approved-technology table, so it does not warrant its own id.
|
|
24252
|
+
*
|
|
24253
|
+
* `java`, `rails` and `laravel` are the server-rendered and API backends
|
|
24254
|
+
* outside JavaScript, Python and .NET (PRO-2915). `java` approves Spring Boot as
|
|
24255
|
+
* its framework the way `python` approves FastAPI or Django and `go` approves
|
|
24256
|
+
* chi: the table names what new work should use, and the picker's sublabel
|
|
24257
|
+
* says so ("Spring Boot, Maven or Gradle"). A JVM shop on another framework
|
|
24258
|
+
* picks `other` rather than being approved one it does not run. `rails` and
|
|
24259
|
+
* `laravel` are named by framework rather than language for the same reason:
|
|
24260
|
+
* a Ruby or PHP shop that runs neither has no table we could write for it.
|
|
24261
|
+
* Each followed the rule below -- its coding-agent skill shipped first.
|
|
24262
|
+
*/
|
|
24263
|
+
const ECOSYSTEMS = [
|
|
24264
|
+
"react",
|
|
24265
|
+
"react-native",
|
|
24266
|
+
"angular",
|
|
24267
|
+
"nextjs",
|
|
24268
|
+
"node",
|
|
24269
|
+
"nestjs",
|
|
24270
|
+
"python",
|
|
24271
|
+
"dotnet",
|
|
24272
|
+
"go",
|
|
24273
|
+
"rust",
|
|
24274
|
+
"java",
|
|
24275
|
+
"rails",
|
|
24276
|
+
"laravel",
|
|
24277
|
+
"other"
|
|
24278
|
+
];
|
|
24279
|
+
//#endregion
|
|
24179
24280
|
//#region ../../packages/types/dist/lenient-schema.js
|
|
24180
24281
|
/**
|
|
24181
24282
|
* Building blocks for reading JSON that arrives untyped -- a stored jsonb
|
|
@@ -24334,6 +24435,17 @@ const CONTROL_ID_SOURCE = "[A-Z][A-Z0-9]{1,5}(?:-[A-Z][A-Z0-9]{1,5})*-\\d+(?:\\.
|
|
|
24334
24435
|
function isControlId(text) {
|
|
24335
24436
|
return new RegExp(`^${CONTROL_ID_SOURCE}$`).test(text);
|
|
24336
24437
|
}
|
|
24438
|
+
const SUPPORTED_INDUSTRIES = [
|
|
24439
|
+
"technology",
|
|
24440
|
+
"telecom",
|
|
24441
|
+
"healthcare",
|
|
24442
|
+
"manufacturing",
|
|
24443
|
+
"defense",
|
|
24444
|
+
"fintech",
|
|
24445
|
+
"public_sector",
|
|
24446
|
+
"energy",
|
|
24447
|
+
"other"
|
|
24448
|
+
];
|
|
24337
24449
|
const EU_COUNTRIES = [
|
|
24338
24450
|
{
|
|
24339
24451
|
code: "AT",
|
|
@@ -24479,8 +24591,28 @@ const UK_COUNTRIES = [{
|
|
|
24479
24591
|
];
|
|
24480
24592
|
/** Countries available during closed beta. Expand as we open new markets. */
|
|
24481
24593
|
const BETA_COUNTRIES = ["FI"];
|
|
24482
|
-
|
|
24594
|
+
/**
|
|
24595
|
+
* Countries offered only while the `regulations` flag is on (PRO-3419,
|
|
24596
|
+
* PRO-3420): every EU member but Finland, and Norway. Sweden, Denmark and
|
|
24597
|
+
* Norway have a national layer of their own; the rest get the EU acts and
|
|
24598
|
+
* say, on the Regulations page, that their national law is not in the
|
|
24599
|
+
* policies yet (`TenantRegulations.context.countryLayer`). Iceland and
|
|
24600
|
+
* Liechtenstein stay unoffered. They go with the flag when it is removed.
|
|
24601
|
+
*/
|
|
24602
|
+
const PREVIEW_COUNTRIES = [
|
|
24603
|
+
...EU_COUNTRIES.map((c) => c.code).filter((code) => !BETA_COUNTRIES.includes(code)),
|
|
24604
|
+
"NO",
|
|
24605
|
+
"GB"
|
|
24606
|
+
];
|
|
24483
24607
|
EU_COUNTRIES.filter((c) => BETA_COUNTRIES.includes(c.code));
|
|
24608
|
+
/**
|
|
24609
|
+
* The countries a tenant may choose. The caller passes its own resolution of
|
|
24610
|
+
* the `regulations` flag, so the API's validation and the web's picker cannot
|
|
24611
|
+
* disagree about which countries exist.
|
|
24612
|
+
*/
|
|
24613
|
+
function offeredCountries(previewEnabled) {
|
|
24614
|
+
return previewEnabled ? [...BETA_COUNTRIES, ...PREVIEW_COUNTRIES] : [...BETA_COUNTRIES];
|
|
24615
|
+
}
|
|
24484
24616
|
Object.fromEntries([
|
|
24485
24617
|
...EU_COUNTRIES.map((c) => [c.code, "eu"]),
|
|
24486
24618
|
...EEA_COUNTRIES.map((c) => [c.code, "eea"]),
|
|
@@ -27764,6 +27896,66 @@ object({
|
|
|
27764
27896
|
});
|
|
27765
27897
|
/** A value GitHub's redirect carries back: a state token, or a one-time code. */
|
|
27766
27898
|
const githubCallbackSecret = string$2().trim().min(1).max(1024);
|
|
27899
|
+
/** Every country Taiga knows; the server refuses one it does not offer yet. */
|
|
27900
|
+
const KNOWN_COUNTRIES = offeredCountries(true);
|
|
27901
|
+
const knownCountry = string$2().length(2).refine((code) => KNOWN_COUNTRIES.includes(code), { message: "Unsupported country" });
|
|
27902
|
+
strictObject({
|
|
27903
|
+
industries: array(_enum(SUPPORTED_INDUSTRIES)).min(1).optional(),
|
|
27904
|
+
country: knownCountry.optional(),
|
|
27905
|
+
servesEu: boolean().optional(),
|
|
27906
|
+
cloudProviders: array(_enum(CLOUD_PROVIDERS)).min(1).optional(),
|
|
27907
|
+
ecosystems: array(_enum(ECOSYSTEMS)).min(1).optional(),
|
|
27908
|
+
productMarkets: strictObject({
|
|
27909
|
+
productId: uuid,
|
|
27910
|
+
countries: array(knownCountry).max(40)
|
|
27911
|
+
}).optional(),
|
|
27912
|
+
overrides: record(string$2().max(100), array(string$2().max(200)).max(200)).optional()
|
|
27913
|
+
}).refine(({ industries, country, servesEu, cloudProviders, ecosystems, productMarkets }) => [
|
|
27914
|
+
industries,
|
|
27915
|
+
country,
|
|
27916
|
+
servesEu,
|
|
27917
|
+
cloudProviders,
|
|
27918
|
+
ecosystems,
|
|
27919
|
+
productMarkets
|
|
27920
|
+
].some((x) => x !== void 0), { message: "Provide at least one context field to change" });
|
|
27921
|
+
object({
|
|
27922
|
+
context: object({
|
|
27923
|
+
industries: array(string$2()),
|
|
27924
|
+
country: string$2().optional(),
|
|
27925
|
+
operatingRegions: array(string$2()),
|
|
27926
|
+
marketCountries: array(string$2()),
|
|
27927
|
+
cloudProviders: array(_enum(CLOUD_PROVIDERS)),
|
|
27928
|
+
ecosystems: array(_enum(ECOSYSTEMS))
|
|
27929
|
+
}),
|
|
27930
|
+
documents: array(object({
|
|
27931
|
+
type: string$2(),
|
|
27932
|
+
name: string$2(),
|
|
27933
|
+
action: _enum([
|
|
27934
|
+
"seed",
|
|
27935
|
+
"publish",
|
|
27936
|
+
"skip-edited",
|
|
27937
|
+
"backfilled",
|
|
27938
|
+
"up-to-date"
|
|
27939
|
+
]),
|
|
27940
|
+
sections: array(object({
|
|
27941
|
+
key: string$2(),
|
|
27942
|
+
changeType: _enum([
|
|
27943
|
+
"added",
|
|
27944
|
+
"removed",
|
|
27945
|
+
"modified",
|
|
27946
|
+
"reattributed"
|
|
27947
|
+
]),
|
|
27948
|
+
before: string$2().nullable(),
|
|
27949
|
+
after: string$2().nullable(),
|
|
27950
|
+
source: string$2().nullable()
|
|
27951
|
+
})).optional(),
|
|
27952
|
+
conflicts: array(object({
|
|
27953
|
+
key: string$2(),
|
|
27954
|
+
stored: string$2().nullable(),
|
|
27955
|
+
incoming: string$2().nullable()
|
|
27956
|
+
})).optional()
|
|
27957
|
+
}))
|
|
27958
|
+
});
|
|
27767
27959
|
strictObject({
|
|
27768
27960
|
displayName: string$2().trim().min(1).max(255),
|
|
27769
27961
|
baseUrl: string$2().trim().min(1).max(480),
|
|
@@ -27851,7 +28043,7 @@ strictObject({
|
|
|
27851
28043
|
}), object({
|
|
27852
28044
|
principalArn: string$2().nullable(),
|
|
27853
28045
|
externalId: string$2()
|
|
27854
|
-
});
|
|
28046
|
+
}), object({ documentsMoved: number$1().int() });
|
|
27855
28047
|
strictObject({ kind: _enum(["sbom", "notices"]) }), object({
|
|
27856
28048
|
url: string$2().url().nullable(),
|
|
27857
28049
|
expiresAt: string$2().nullable()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ai/mcp-server",
|
|
3
|
-
"version": "0.37.0-dev.
|
|
3
|
+
"version": "0.37.0-dev.999",
|
|
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",
|