@taiga-ai/mcp-server 0.26.0-dev.526 → 0.26.0-dev.528
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 +91 -24
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1488,6 +1488,59 @@ const INBOX_ITEM_KINDS = [
|
|
|
1488
1488
|
"setup_cloud_permission",
|
|
1489
1489
|
"setup_manual"
|
|
1490
1490
|
];
|
|
1491
|
+
/** The kind of manual setup the agents identified. */
|
|
1492
|
+
const INBOX_TASK_CATEGORIES = [
|
|
1493
|
+
"env_var",
|
|
1494
|
+
"secret",
|
|
1495
|
+
"third_party_account",
|
|
1496
|
+
"api_key",
|
|
1497
|
+
"oauth_app",
|
|
1498
|
+
"dns_record",
|
|
1499
|
+
"billing_approval",
|
|
1500
|
+
"cloud_permission",
|
|
1501
|
+
"manual_config"
|
|
1502
|
+
];
|
|
1503
|
+
/** Where the produced value ultimately lands. */
|
|
1504
|
+
const INBOX_TASK_TARGETS = [
|
|
1505
|
+
"github_secret",
|
|
1506
|
+
"github_env",
|
|
1507
|
+
"cloud_env",
|
|
1508
|
+
"secrets_manager",
|
|
1509
|
+
"local_env",
|
|
1510
|
+
"external"
|
|
1511
|
+
];
|
|
1512
|
+
/**
|
|
1513
|
+
* Setup-task lifecycle phase. Two-level grouping for the setup-task inbox:
|
|
1514
|
+
* - prereq: needed before the first build can run (credentials, accounts)
|
|
1515
|
+
* - wiring: connect build outputs to providers (paste ARN into GitHub, DNS)
|
|
1516
|
+
* - followup: optional polish after first deploy (billing alerts, observability)
|
|
1517
|
+
*
|
|
1518
|
+
* The API derives phase from category at ingest via {@link phaseForCategory};
|
|
1519
|
+
* the agent CAN override by emitting an explicit phase, but the derivation is
|
|
1520
|
+
* the floor so a missing/garbled phase never breaks grouping.
|
|
1521
|
+
*/
|
|
1522
|
+
const INBOX_TASK_PHASES = [
|
|
1523
|
+
"prereq",
|
|
1524
|
+
"wiring",
|
|
1525
|
+
"followup"
|
|
1526
|
+
];
|
|
1527
|
+
//#endregion
|
|
1528
|
+
//#region ../../packages/types/dist/build-narrative.js
|
|
1529
|
+
/**
|
|
1530
|
+
* The build narrative: the project-owner-facing timeline a coding agent posts
|
|
1531
|
+
* while it builds (decisions, tradeoffs, setup it needs, quality findings).
|
|
1532
|
+
*
|
|
1533
|
+
* The agent posts each entry to `POST /v1/builds/:id/progress` as a
|
|
1534
|
+
* `narrative` callback; the API validates it with {@link buildNarrativeBody},
|
|
1535
|
+
* stores it as a `stream_events` row and publishes it over SSE. The run page
|
|
1536
|
+
* reads the timeline either live (SSE) or on page load
|
|
1537
|
+
* (`GET /v1/builds/:id/narrative`, which queries the same rows), so this one
|
|
1538
|
+
* schema is the source of the callback contract, the stored payload type and
|
|
1539
|
+
* the list of kinds every reader accepts.
|
|
1540
|
+
*/
|
|
1541
|
+
/** A moment as factory-vm records it: ISO 8601, with its offset. */
|
|
1542
|
+
const moment = z.iso.datetime({ offset: true });
|
|
1543
|
+
const optionalMoment = moment.optional();
|
|
1491
1544
|
z.discriminatedUnion("kind", [
|
|
1492
1545
|
z.object({
|
|
1493
1546
|
type: z.literal("narrative"),
|
|
@@ -1544,6 +1597,41 @@ z.discriminatedUnion("kind", [
|
|
|
1544
1597
|
state: z.string().min(1).max(60),
|
|
1545
1598
|
activity: z.string().max(200).optional(),
|
|
1546
1599
|
message: z.string().max(2e3).optional(),
|
|
1600
|
+
at: optionalMoment,
|
|
1601
|
+
stepId: optionalUuid
|
|
1602
|
+
}),
|
|
1603
|
+
z.object({
|
|
1604
|
+
type: z.literal("narrative"),
|
|
1605
|
+
kind: z.literal("agent_stage"),
|
|
1606
|
+
agent: z.string().min(1).max(120),
|
|
1607
|
+
stage: z.string().min(1).max(60),
|
|
1608
|
+
outcome: z.string().max(60).optional(),
|
|
1609
|
+
startedAt: moment,
|
|
1610
|
+
endedAt: moment,
|
|
1611
|
+
summary: z.string().max(400).optional(),
|
|
1612
|
+
report: z.string().max(6e3).optional(),
|
|
1613
|
+
commands: z.array(z.object({
|
|
1614
|
+
text: z.string().min(1).max(200),
|
|
1615
|
+
ms: z.number().int().min(0),
|
|
1616
|
+
failed: z.boolean().optional()
|
|
1617
|
+
})).max(40).optional(),
|
|
1618
|
+
moreCommands: z.number().int().min(0).optional(),
|
|
1619
|
+
checks: z.array(z.object({
|
|
1620
|
+
name: z.string().min(1).max(300),
|
|
1621
|
+
passed: z.boolean().optional(),
|
|
1622
|
+
evidence: z.string().max(600).optional()
|
|
1623
|
+
})).max(30).optional(),
|
|
1624
|
+
moreChecks: z.number().int().min(0).optional(),
|
|
1625
|
+
checksPassed: z.number().int().min(0).optional(),
|
|
1626
|
+
edits: z.array(z.string().min(1).max(300)).max(30).optional(),
|
|
1627
|
+
moreEdits: z.number().int().min(0).optional(),
|
|
1628
|
+
threads: z.array(z.object({
|
|
1629
|
+
resolution: z.string().min(1).max(60),
|
|
1630
|
+
reply: z.string().max(1e3).optional()
|
|
1631
|
+
})).max(20).optional(),
|
|
1632
|
+
moreThreads: z.number().int().min(0).optional(),
|
|
1633
|
+
sentBack: z.array(z.string().min(1).max(500)).max(5).optional(),
|
|
1634
|
+
moreSentBack: z.number().int().min(0).optional(),
|
|
1547
1635
|
stepId: optionalUuid
|
|
1548
1636
|
}),
|
|
1549
1637
|
z.object({
|
|
@@ -1562,36 +1650,15 @@ z.discriminatedUnion("kind", [
|
|
|
1562
1650
|
z.object({
|
|
1563
1651
|
type: z.literal("narrative"),
|
|
1564
1652
|
kind: z.literal("setup_required"),
|
|
1565
|
-
category: z.enum(
|
|
1566
|
-
"env_var",
|
|
1567
|
-
"secret",
|
|
1568
|
-
"third_party_account",
|
|
1569
|
-
"api_key",
|
|
1570
|
-
"oauth_app",
|
|
1571
|
-
"dns_record",
|
|
1572
|
-
"billing_approval",
|
|
1573
|
-
"cloud_permission",
|
|
1574
|
-
"manual_config"
|
|
1575
|
-
]),
|
|
1653
|
+
category: z.enum(INBOX_TASK_CATEGORIES),
|
|
1576
1654
|
title: z.string().min(1).max(300),
|
|
1577
1655
|
instructions: z.string().min(1).max(2e3),
|
|
1578
1656
|
key: z.string().regex(/^[A-Za-z_][A-Za-z0-9_.]*$/).max(255).optional(),
|
|
1579
1657
|
isSecret: z.boolean().default(false),
|
|
1580
|
-
target: z.enum(
|
|
1581
|
-
"github_secret",
|
|
1582
|
-
"github_env",
|
|
1583
|
-
"cloud_env",
|
|
1584
|
-
"secrets_manager",
|
|
1585
|
-
"local_env",
|
|
1586
|
-
"external"
|
|
1587
|
-
]).optional(),
|
|
1658
|
+
target: z.enum(INBOX_TASK_TARGETS).optional(),
|
|
1588
1659
|
providerDocUrl: z.string().url().max(1e3).refine((u) => /^https?:\/\//i.test(u), { message: "providerDocUrl must use http or https scheme" }).optional(),
|
|
1589
1660
|
providerActionUrl: z.string().url().max(1e3).refine((u) => /^https?:\/\//i.test(u), { message: "providerActionUrl must use http or https scheme" }).optional(),
|
|
1590
|
-
phase: z.enum(
|
|
1591
|
-
"prereq",
|
|
1592
|
-
"wiring",
|
|
1593
|
-
"followup"
|
|
1594
|
-
]).optional(),
|
|
1661
|
+
phase: z.enum(INBOX_TASK_PHASES).optional(),
|
|
1595
1662
|
suggestedValue: z.string().max(2e3).optional(),
|
|
1596
1663
|
stepId: optionalUuid
|
|
1597
1664
|
}),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taiga-ai/mcp-server",
|
|
3
|
-
"version": "0.26.0-dev.
|
|
3
|
+
"version": "0.26.0-dev.528",
|
|
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
|
"type": "module",
|