@taiga-ai/mcp-server 0.26.0-dev.527 → 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.
Files changed (2) hide show
  1. package/dist/index.js +91 -24
  2. 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.527",
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",