pipebrain-mcp 0.44.1 → 0.45.0

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/main.js +28 -5
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -15402,7 +15402,28 @@ var projectMilestoneSchema = external_exports.object({
15402
15402
  token: external_exports.string().min(1),
15403
15403
  label: external_exports.string().min(1),
15404
15404
  position: external_exports.number().int().nonnegative(),
15405
- active: external_exports.boolean()
15405
+ active: external_exports.boolean(),
15406
+ /**
15407
+ * Retired from the everyday pickers (PIPE-303) — NOT deleted. The row is still
15408
+ * listed here, still holds its token, label and position, and a completion review
15409
+ * still opens against it; only the pickers that offer a milestone to choose stop
15410
+ * offering it. Carried on the wire because this embedded array IS the read surface
15411
+ * for milestones (there is no GET for them), so a picker that could not see the flag
15412
+ * could not honour it.
15413
+ *
15414
+ * OPTIONAL, while the `milestones.archived` COLUMN and the wire rows `libs/db`
15415
+ * builds are both NOT NULL. This is the additive-field tolerance the block comment
15416
+ * at the top of this file states outright, applied where it earns something: the
15417
+ * server always sends the flag, so `undefined` can only mean a response that
15418
+ * predates the column, and "no flag" and "not archived" are the same answer for
15419
+ * every consumer. Requiring it here would instead make a milestone row literal
15420
+ * illegal unless it restates the default — which is a cost paid by every fixture
15421
+ * and caller that has no opinion about archiving, to buy a guarantee the producer
15422
+ * already provides. What actually guards the flag reaching the wire is the projects
15423
+ * integration suite, which reads `archived` off this array and would fail on
15424
+ * `undefined` — a type could not catch a dropped SELECT column anyway.
15425
+ */
15426
+ archived: external_exports.boolean().optional()
15406
15427
  });
15407
15428
  var projectDeliverableTargetSchema = external_exports.object({
15408
15429
  id: uuidSchema,
@@ -15442,6 +15463,7 @@ var milestoneSchema = external_exports.object({
15442
15463
  label: external_exports.string().min(1),
15443
15464
  position: external_exports.number().int().nonnegative(),
15444
15465
  active: external_exports.boolean(),
15466
+ archived: external_exports.boolean(),
15445
15467
  createdAt: external_exports.iso.datetime({ offset: true }),
15446
15468
  updatedAt: external_exports.iso.datetime({ offset: true }),
15447
15469
  deletedAt: external_exports.iso.datetime({ offset: true }).nullable()
@@ -17677,7 +17699,7 @@ function createMcpServer(baseClient, apiBaseUrl, orgInstructions2 = /* @__PURE__
17677
17699
  run(() => client2().unscoped().listOrgs(), GUIDANCE_POINTER)
17678
17700
  ));
17679
17701
  registerStrict("list_projects", {
17680
- description: "List all projects with their key, environments, milestones (token, label, active), deliverable targets (slug, label, active), and open-issue counts \u2014 the project switcher and workflow entry point (\xA77).",
17702
+ description: "List all projects with their key, environments, milestones (token, label, active, archived \u2014 an archived milestone is a finished release retired from the pickers used to schedule work, still valid on every issue that already names it), deliverable targets (slug, label, active), and open-issue counts \u2014 the project switcher and workflow entry point (\xA77).",
17681
17703
  // Optional pagination (§9) — bounds mirror list_issues/list_requirements; the
17682
17704
  // server defaults limit to 200 (max 500) and passes limit/offset as query params.
17683
17705
  inputSchema: {
@@ -17781,13 +17803,14 @@ function createMcpServer(baseClient, apiBaseUrl, orgInstructions2 = /* @__PURE__
17781
17803
  }
17782
17804
  }, ({ project, ...input }) => run(() => client2().createMilestone(project, input)));
17783
17805
  registerStrict("update_milestone", {
17784
- description: "Rename or reorder a milestone, addressed by its token (e.g. `M1`) or uuid. Supply at least one of `token`, `label`, or `position` \u2014 an empty edit is rejected. Renaming the `token` does NOT rewrite issues pointing at the old one (`issues.milestone` is a loose ref), so prefer changing `label`. Use set_active_milestone to change `active` (\xA77).",
17806
+ description: "Rename, reorder, archive or restore a milestone, addressed by its token (e.g. `M1`) or uuid. Supply at least one of `token`, `label`, `position`, or `archived` \u2014 an empty edit is rejected. Renaming the `token` does NOT rewrite issues pointing at the old one (`issues.milestone` is a loose ref), so prefer changing `label`. `archived: true` retires a finished release from the everyday pickers WITHOUT deleting it \u2014 the row keeps its token, label and position, issues carrying the token are untouched, and a completion review still opens against it; `archived: false` restores it. The project\u2019s ACTIVE milestone cannot be archived (refused `milestone_active` \u2014 make another milestone active first), and an archived one cannot be activated (refused `milestone_archived` \u2014 restore it first). Use set_active_milestone to change `active` (\xA77).",
17785
17807
  inputSchema: {
17786
17808
  project: projectKeySchema,
17787
17809
  milestone: external_exports.string().min(1),
17788
17810
  token: external_exports.string().min(1).optional(),
17789
17811
  label: external_exports.string().min(1).optional(),
17790
- position: external_exports.number().int().nonnegative().optional()
17812
+ position: external_exports.number().int().nonnegative().optional(),
17813
+ archived: external_exports.boolean().optional()
17791
17814
  }
17792
17815
  }, ({ project, milestone, ...fields }) => run(async () => client2().updateMilestone(project, await resolveMilestoneId(client2(), project, milestone), fields)));
17793
17816
  registerStrict("set_active_milestone", {
@@ -18294,7 +18317,7 @@ function loadMcpConfig() {
18294
18317
  }
18295
18318
 
18296
18319
  // src/version.ts
18297
- var VERSION = "0.44.1";
18320
+ var VERSION = "0.45.0";
18298
18321
 
18299
18322
  // src/main.ts
18300
18323
  async function scopedClient(base, org) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pipebrain-mcp",
3
- "version": "0.44.1",
3
+ "version": "0.45.0",
4
4
  "description": "Pipebrain MCP server for Claude Code and Claude Desktop — issues, requirements, decision records, conventions, prompts, content, assets, metadata-only secrets, and more of the platform's modules over the Pipebrain API.",
5
5
  "type": "module",
6
6
  "license": "MIT",