pipebrain-mcp 0.22.0 → 0.24.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 +21 -3
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -15252,6 +15252,13 @@ var issueSchema = external_exports.object({
|
|
|
15252
15252
|
statusChangedAt: external_exports.iso.datetime({ offset: true }),
|
|
15253
15253
|
deletedAt: external_exports.iso.datetime({ offset: true }).nullable()
|
|
15254
15254
|
});
|
|
15255
|
+
var criterionFiledBugSchema = external_exports.object({
|
|
15256
|
+
id: uuidSchema,
|
|
15257
|
+
projectKey: projectKeySchema,
|
|
15258
|
+
displayId: external_exports.string().min(1),
|
|
15259
|
+
title: external_exports.string().min(1),
|
|
15260
|
+
status: issueStatusSchema
|
|
15261
|
+
});
|
|
15255
15262
|
var criterionSchema = external_exports.object({
|
|
15256
15263
|
id: uuidSchema,
|
|
15257
15264
|
displayId: external_exports.string().min(1),
|
|
@@ -15272,6 +15279,12 @@ var criterionSchema = external_exports.object({
|
|
|
15272
15279
|
stateSetBy: uuidSchema.nullable(),
|
|
15273
15280
|
stateSetAt: external_exports.iso.datetime({ offset: true }).nullable(),
|
|
15274
15281
|
stateViaTokenId: uuidSchema.nullable(),
|
|
15282
|
+
// Every bug ever filed against this criterion (PIPE-272), oldest first. ALWAYS
|
|
15283
|
+
// present, `[]` when none — a client must never have to tell "no bug was filed"
|
|
15284
|
+
// from "a payload that omits the key". Terminal bugs stay listed: a bug's own
|
|
15285
|
+
// lifecycle says nothing about whether it was FILED, and a row that stopped naming
|
|
15286
|
+
// its bug the moment the bug was finished would start inviting a duplicate.
|
|
15287
|
+
filedBugs: external_exports.array(criterionFiledBugSchema),
|
|
15275
15288
|
createdAt: external_exports.iso.datetime({ offset: true }),
|
|
15276
15289
|
updatedAt: external_exports.iso.datetime({ offset: true }),
|
|
15277
15290
|
deletedAt: external_exports.iso.datetime({ offset: true }).nullable()
|
|
@@ -15598,7 +15611,12 @@ var createIssueInputSchema = external_exports.strictObject({
|
|
|
15598
15611
|
// Content-deliverable links (Content module) — mirrors requirementLinks; pins
|
|
15599
15612
|
// each at the deliverable's CURRENT (latest) revision. Promotion sets this.
|
|
15600
15613
|
deliverableLinks: external_exports.array(deliverableRefSchema).optional(),
|
|
15601
|
-
criteria: external_exports.array(criterionInputSchema).optional()
|
|
15614
|
+
criteria: external_exports.array(criterionInputSchema).optional(),
|
|
15615
|
+
// The acceptance criterion this bug was filed against (PIPE-272). Records on the
|
|
15616
|
+
// BUG which row sent someone to file it, so that row can name the bug instead of
|
|
15617
|
+
// offering to file another. Server-refused on any type but `bug`
|
|
15618
|
+
// (`criterion_requires_bug`) and on a criterion outside the caller's org.
|
|
15619
|
+
criterionId: uuidSchema.optional()
|
|
15602
15620
|
});
|
|
15603
15621
|
var promoteFeedbackInputSchema = external_exports.strictObject({
|
|
15604
15622
|
type: external_exports.enum(["epic", "task"]),
|
|
@@ -17081,7 +17099,7 @@ Every loose end has one destination, and none of them is prose. Anything you not
|
|
|
17081
17099
|
inputSchema: { issue: issueRefSchema }
|
|
17082
17100
|
}, (args) => run(() => client2.getIssue(args.issue)));
|
|
17083
17101
|
registerTool("create_issue", {
|
|
17084
|
-
description: 'Create an issue (epic/task/bug/feedback). Omitted status defaults to triage (still subject to \xA76 guards); omitted environment resolves explicit \u2192 parent\u2019s environment \u2192 project default (prod). Optional parent (self/cycle rejected), priority, milestone, requirement_links (pins each at its approved revision; a target with no approved revision is rejected), deliverable_links (content deliverables like DWB-C3/bsky \u2014 pins each at its current revision; the promotion path), and ordered {text, verification, howTo} criteria (\xA77). A `status` other than `triage` or `killed` REQUIRES `milestone` (PIPE-R10 rule 9): work past triage belongs to a release, and the create is refused (`milestone_required`) without one. Search before you create: `list_issues` takes a `text` filter \u2014 run it on the distinctive nouns first. Sessions do not see each other, so a duplicate is invisible until someone finds both; on a near match, comment or amend the existing record rather than filing again. The bar for filing a bug: file `type: bug` only when the observed behavior breaks an approved requirement or a defined acceptance criterion, and name which one before you file. If you cannot name one, this is not a bug \u2014 code you find unclear, an edge case nobody specified, a performance number nobody set, and anything you would phrase as "this could be better" are opinions about the product, so file each as `type: feedback`, or not at all. The bar exists because a queue holding both real defects and unshared taste has to be read entirely before any of it can be trusted. Link another record by key plus title on first mention; never paste its text into a body \u2014 the source changes, the copy does not, and a stale copy gets built. A decision you need from the operator is filed as a question via `ask_questions`, never written as an "Open questions" heading inside a body \u2014 a heading prompts nobody and records no answer, so a later session cannot tell whether the decision was made. Before assigning any verification mode, establish what this project can drive end to end \u2014 an end-to-end test harness and the command that runs it. A criterion is `auto` when an evaluator can drive the input and read the result against the running system, which includes behavior shown in the interface wherever such a harness exists; the mode follows from what can be driven, not from where the behavior appears. What qualifies a criterion as `auto` is the evaluator\u2019s own run, never the existence of a test the implementer wrote. Mark `manual` only when the verdict needs a person\u2019s judgment; a criterion you cannot describe as drivable is usually worded too vaguely, so reword it against the observable rather than fall back to a person. A `manual` criterion must also carry `howTo` \u2014 one or two sentences, not an essay, saying where to look, what to do, and what counts as passing for whoever checks it by hand. Writing or changing one without it is refused (`how_to_required`); so is supplying it on an `auto` criterion, which a machine checks. Criteria live on epics only: a task cannot carry a criteria list and instead states in its own body what would count as done. Cross-cutting requirements bind every epic automatically and arrive with `get_issue` \u2014 never restate them in a body and never add them to `requirement_links`; an explicit link pins the linked document\u2019s approved revision.',
|
|
17102
|
+
description: 'Create an issue (epic/task/bug/feedback). Omitted status defaults to triage (still subject to \xA76 guards); omitted environment resolves explicit \u2192 parent\u2019s environment \u2192 project default (prod). Optional parent (self/cycle rejected), priority, milestone, requirement_links (pins each at its approved revision; a target with no approved revision is rejected), deliverable_links (content deliverables like DWB-C3/bsky \u2014 pins each at its current revision; the promotion path), and ordered {text, verification, howTo} criteria (\xA77). A `status` other than `triage` or `killed` REQUIRES `milestone` (PIPE-R10 rule 9): work past triage belongs to a release, and the create is refused (`milestone_required`) without one. Search before you create: `list_issues` takes a `text` filter \u2014 run it on the distinctive nouns first. Sessions do not see each other, so a duplicate is invisible until someone finds both; on a near match, comment or amend the existing record rather than filing again. The bar for filing a bug: file `type: bug` only when the observed behavior breaks an approved requirement or a defined acceptance criterion, and name which one before you file. If you cannot name one, this is not a bug \u2014 code you find unclear, an edge case nobody specified, a performance number nobody set, and anything you would phrase as "this could be better" are opinions about the product, so file each as `type: feedback`, or not at all. The bar exists because a queue holding both real defects and unshared taste has to be read entirely before any of it can be trusted. When the criterion you named is an acceptance criterion, pass its uuid as `criterionId` and the bug records which criterion it was filed against \u2014 the criterion then names the bug (it arrives as `filedBugs` on every criteria read) instead of inviting the next reader to file it again. Bugs only: any other type naming a criterion is refused (`criterion_requires_bug`). Link another record by key plus title on first mention; never paste its text into a body \u2014 the source changes, the copy does not, and a stale copy gets built. A decision you need from the operator is filed as a question via `ask_questions`, never written as an "Open questions" heading inside a body \u2014 a heading prompts nobody and records no answer, so a later session cannot tell whether the decision was made. Before assigning any verification mode, establish what this project can drive end to end \u2014 an end-to-end test harness and the command that runs it. A criterion is `auto` when an evaluator can drive the input and read the result against the running system, which includes behavior shown in the interface wherever such a harness exists; the mode follows from what can be driven, not from where the behavior appears. What qualifies a criterion as `auto` is the evaluator\u2019s own run, never the existence of a test the implementer wrote. Mark `manual` only when the verdict needs a person\u2019s judgment; a criterion you cannot describe as drivable is usually worded too vaguely, so reword it against the observable rather than fall back to a person. A `manual` criterion must also carry `howTo` \u2014 one or two sentences, not an essay, saying where to look, what to do, and what counts as passing for whoever checks it by hand. Writing or changing one without it is refused (`how_to_required`); so is supplying it on an `auto` criterion, which a machine checks. Criteria live on epics only: a task cannot carry a criteria list and instead states in its own body what would count as done. Cross-cutting requirements bind every epic automatically and arrive with `get_issue` \u2014 never restate them in a body and never add them to `requirement_links`; an explicit link pins the linked document\u2019s approved revision.',
|
|
17085
17103
|
inputSchema: createIssueInputSchema.shape
|
|
17086
17104
|
}, (args) => run(() => client2.createIssue(args)));
|
|
17087
17105
|
registerTool("promote_feedback", {
|
|
@@ -17407,7 +17425,7 @@ function loadMcpConfig() {
|
|
|
17407
17425
|
}
|
|
17408
17426
|
|
|
17409
17427
|
// src/version.ts
|
|
17410
|
-
var VERSION = "0.
|
|
17428
|
+
var VERSION = "0.24.0";
|
|
17411
17429
|
|
|
17412
17430
|
// src/main.ts
|
|
17413
17431
|
var config2 = loadMcpConfig();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pipebrain-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"description": "Pipebrain MCP server for Claude Code and Claude Desktop — issues, requirements, content, assets, and metadata-only secrets over the Pipebrain API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|