pipebrain-mcp 0.44.0 → 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.
- package/dist/main.js +33 -9
- 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()
|
|
@@ -17182,9 +17204,10 @@ var ApiClient = class _ApiClient {
|
|
|
17182
17204
|
* Takes NO project and NO org PARAMETER: a queue you point at a project is the
|
|
17183
17205
|
* per-project surface this replaces, and the organization is a property of the CLIENT,
|
|
17184
17206
|
* which is where every caller already binds it — `X-Org-Id` for a session and for a
|
|
17185
|
-
* bearer caller alike
|
|
17186
|
-
*
|
|
17187
|
-
*
|
|
17207
|
+
* bearer caller alike. A call that stamps none is refused rather than resolved against
|
|
17208
|
+
* the credential, because PIPE-410 (an agent credential reaches every organization its
|
|
17209
|
+
* owner belongs to) left no organization on a credential to resolve against. The agent
|
|
17210
|
+
* tool DOES take an `org`, and it is spent on `forOrg` before it
|
|
17188
17211
|
* gets here. `mine` narrows to the gates whose
|
|
17189
17212
|
* work the viewer claimed — plus the requirement gates, which have no claimant at
|
|
17190
17213
|
* all and would otherwise be waited on by nobody; omitting it is the wide view.
|
|
@@ -17676,7 +17699,7 @@ function createMcpServer(baseClient, apiBaseUrl, orgInstructions2 = /* @__PURE__
|
|
|
17676
17699
|
run(() => client2().unscoped().listOrgs(), GUIDANCE_POINTER)
|
|
17677
17700
|
));
|
|
17678
17701
|
registerStrict("list_projects", {
|
|
17679
|
-
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).",
|
|
17680
17703
|
// Optional pagination (§9) — bounds mirror list_issues/list_requirements; the
|
|
17681
17704
|
// server defaults limit to 200 (max 500) and passes limit/offset as query params.
|
|
17682
17705
|
inputSchema: {
|
|
@@ -17696,7 +17719,7 @@ function createMcpServer(baseClient, apiBaseUrl, orgInstructions2 = /* @__PURE__
|
|
|
17696
17719
|
}
|
|
17697
17720
|
}, (args) => run(() => client2().createProject(args)));
|
|
17698
17721
|
registerStrict("list_waiting", {
|
|
17699
|
-
description: "Every gate awaiting a PERSON across ALL projects in the organization this call acts in \u2014 name that organization with `org`,
|
|
17722
|
+
description: "Every gate awaiting a PERSON across ALL projects in the organization this call acts in \u2014 name that organization with `org`, which is refused if omitted unless this session has a default \u2014 longest wait first: a requirement revision awaiting approval, a question awaiting an answer, and work in `verify` holding at least one criterion not yet passed. Each entry names its project, the ref the action is taken on (`KEY-R{n}` for a revision, the ISSUE\u2019s `KEY-{n}` for a question or for work at verify), and `waitingSince` \u2014 the instant the wait began, not a duration. Nothing else is a gate: work in `triage` never appears, and neither does work in verify whose criteria have ALL passed. THIS TOOL is READ-ONLY and clears nothing; what clears each gate differs. Answering a question has no tool on this surface, by design. A requirement revision is approved with `approve_requirement`. A verify gate clears as its criteria pass \u2014 an `auto` one through `set_criterion_state`, a `manual` one only ever by a person in the web app. Use it to see what your work is blocked on before asking, rather than to act on it."
|
|
17700
17723
|
// NO NARROWING ARGUMENTS. The one argument this tool does take — `org`, which every
|
|
17701
17724
|
// tool takes — is not a narrowing: it says WHICH ORGANIZATION the call acts in, not
|
|
17702
17725
|
// which of that organization's gates come back, and the caller's membership there is
|
|
@@ -17780,13 +17803,14 @@ function createMcpServer(baseClient, apiBaseUrl, orgInstructions2 = /* @__PURE__
|
|
|
17780
17803
|
}
|
|
17781
17804
|
}, ({ project, ...input }) => run(() => client2().createMilestone(project, input)));
|
|
17782
17805
|
registerStrict("update_milestone", {
|
|
17783
|
-
description: "Rename or
|
|
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).",
|
|
17784
17807
|
inputSchema: {
|
|
17785
17808
|
project: projectKeySchema,
|
|
17786
17809
|
milestone: external_exports.string().min(1),
|
|
17787
17810
|
token: external_exports.string().min(1).optional(),
|
|
17788
17811
|
label: external_exports.string().min(1).optional(),
|
|
17789
|
-
position: external_exports.number().int().nonnegative().optional()
|
|
17812
|
+
position: external_exports.number().int().nonnegative().optional(),
|
|
17813
|
+
archived: external_exports.boolean().optional()
|
|
17790
17814
|
}
|
|
17791
17815
|
}, ({ project, milestone, ...fields }) => run(async () => client2().updateMilestone(project, await resolveMilestoneId(client2(), project, milestone), fields)));
|
|
17792
17816
|
registerStrict("set_active_milestone", {
|
|
@@ -18293,7 +18317,7 @@ function loadMcpConfig() {
|
|
|
18293
18317
|
}
|
|
18294
18318
|
|
|
18295
18319
|
// src/version.ts
|
|
18296
|
-
var VERSION = "0.
|
|
18320
|
+
var VERSION = "0.45.0";
|
|
18297
18321
|
|
|
18298
18322
|
// src/main.ts
|
|
18299
18323
|
async function scopedClient(base, org) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipebrain-mcp",
|
|
3
|
-
"version": "0.
|
|
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",
|