@bridge_gpt/mcp-server 0.2.6 → 0.2.10
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/README.md +58 -5
- package/build/commands.generated.js +1 -1
- package/build/conductor/bridge-api-client.js +262 -35
- package/build/conductor/cli.js +22 -1
- package/build/conductor/doctor.js +34 -1
- package/build/conductor/done-gate.js +301 -58
- package/build/conductor/epic-reconcile.js +121 -4
- package/build/conductor/epic-runtime.js +299 -13
- package/build/conductor/epic-state.js +108 -9
- package/build/conductor/git-ci-types.js +6 -0
- package/build/conductor/pr-ci-producer.js +114 -15
- package/build/conductor/pr-review-producer.js +116 -0
- package/build/conductor/store.js +8 -1
- package/build/conductor/supervisor-message-relay.js +31 -0
- package/build/conductor/taxonomy.js +3 -0
- package/build/conductor/tools.js +2 -2
- package/build/index.js +356 -1086
- package/build/init.js +481 -0
- package/build/install-bridge.js +692 -0
- package/build/mcp-profile.js +43 -0
- package/build/readme.generated.js +1 -1
- package/build/start-tickets-conductor.js +1 -0
- package/build/start-tickets.js +328 -36
- package/build/upgrade-cli.js +154 -0
- package/build/version.generated.js +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bridge API MCP server one-command upgrade (BAPI-430).
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `index.ts` so the upgrade logic always runs from the latest
|
|
5
|
+
* published version (`@bridge_gpt/mcp-server@latest`) rather than the
|
|
6
|
+
* potentially-stale copy npx resolved at the call site.
|
|
7
|
+
*
|
|
8
|
+
* Flow:
|
|
9
|
+
* 1. Fetch latest version from the npm registry.
|
|
10
|
+
* 2. If newer and not already re-exec'd, re-spawn from `@latest` with
|
|
11
|
+
* `--internal-reexec` so upgrade logic comes from new code.
|
|
12
|
+
* 3. Remove any competing local `node_modules/@bridge_gpt/mcp-server` install
|
|
13
|
+
* (the silent trap that makes npx always prefer the stale local copy).
|
|
14
|
+
* 4. Rewrite the launcher pin across all per-host configs via `runInit`.
|
|
15
|
+
* 5. Print `old -> new` and open a fresh reconnect session.
|
|
16
|
+
*/
|
|
17
|
+
import { spawn } from "child_process";
|
|
18
|
+
import { stat } from "fs/promises";
|
|
19
|
+
import path from "path";
|
|
20
|
+
import { VERSION } from "./version.generated.js";
|
|
21
|
+
import { runInit } from "./init.js";
|
|
22
|
+
import { isNewerVersion } from "./update-check.js";
|
|
23
|
+
import { buildGenericAgentShellCommand, detectTerminal, getDefaultSpawnTerminalTabForPlatform, createDefaultStartTicketsDeps, } from "./start-tickets.js";
|
|
24
|
+
import { AGENT_REGISTRY } from "./agent-registry.js";
|
|
25
|
+
async function fetchLatestVersion() {
|
|
26
|
+
try {
|
|
27
|
+
const res = await fetch("https://registry.npmjs.org/@bridge_gpt/mcp-server/latest", {
|
|
28
|
+
signal: AbortSignal.timeout(3000),
|
|
29
|
+
});
|
|
30
|
+
if (res.ok) {
|
|
31
|
+
const data = (await res.json());
|
|
32
|
+
return data.version || null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
export async function runUpgradeCli(argv) {
|
|
41
|
+
const cwd = process.cwd();
|
|
42
|
+
const isDryRun = argv.includes("--dry-run");
|
|
43
|
+
const isInternalReexec = argv.includes("--internal-reexec");
|
|
44
|
+
let latestVersion = VERSION;
|
|
45
|
+
const fetched = await fetchLatestVersion();
|
|
46
|
+
if (fetched) {
|
|
47
|
+
latestVersion = fetched;
|
|
48
|
+
}
|
|
49
|
+
const isNewer = isNewerVersion(VERSION, latestVersion);
|
|
50
|
+
const npxCmd = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
51
|
+
// Re-exec from @latest to ensure upgrade logic runs from latest code, not
|
|
52
|
+
// the stale local copy that npx may have resolved.
|
|
53
|
+
if (isNewer && !isInternalReexec) {
|
|
54
|
+
if (!isDryRun) {
|
|
55
|
+
console.log(`Update available: ${VERSION} -> ${latestVersion}. Re-executing from @latest...`);
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
const childArgs = [
|
|
58
|
+
"-y",
|
|
59
|
+
"@bridge_gpt/mcp-server@latest",
|
|
60
|
+
"upgrade",
|
|
61
|
+
"--internal-reexec",
|
|
62
|
+
"--old-version",
|
|
63
|
+
VERSION,
|
|
64
|
+
];
|
|
65
|
+
const child = spawn(npxCmd, childArgs, { stdio: "inherit", cwd });
|
|
66
|
+
child.on("close", (code) => resolve(code ?? 0));
|
|
67
|
+
child.on("error", (err) => {
|
|
68
|
+
console.error(`Bridge API upgrade failed: could not re-exec npx: ${err.message}`);
|
|
69
|
+
resolve(1);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const oldVersionIdx = argv.indexOf("--old-version");
|
|
75
|
+
const oldVersion = oldVersionIdx !== -1 && oldVersionIdx + 1 < argv.length ? argv[oldVersionIdx + 1] : VERSION;
|
|
76
|
+
const targetVersion = isDryRun && isNewer ? latestVersion : VERSION;
|
|
77
|
+
if (isDryRun) {
|
|
78
|
+
const configTargets = [".mcp.json", ".vscode/mcp.json", ".cursor/mcp.json"];
|
|
79
|
+
console.log(`\n[Dry Run] Upgrade preview:`);
|
|
80
|
+
if (isNewer && !isInternalReexec) {
|
|
81
|
+
console.log(`- Would re-exec from @latest to upgrade ${VERSION} -> ${latestVersion}`);
|
|
82
|
+
}
|
|
83
|
+
console.log(`- Would detect and remove competing local install in node_modules/@bridge_gpt/mcp-server if present.`);
|
|
84
|
+
console.log(`- Would rewrite launcher pin to @bridge_gpt/mcp-server@${targetVersion} across active per-host configs:`);
|
|
85
|
+
for (const target of configTargets) {
|
|
86
|
+
try {
|
|
87
|
+
await stat(path.join(cwd, target));
|
|
88
|
+
console.log(` - ${target}`);
|
|
89
|
+
}
|
|
90
|
+
catch { }
|
|
91
|
+
}
|
|
92
|
+
console.log(`- Would refresh scaffolded artifacts (commands, agents, pipelines).`);
|
|
93
|
+
const spawnCommand = buildGenericAgentShellCommand(AGENT_REGISTRY.claude, "Bridge API MCP server has been upgraded. Please reload/reconnect the MCP server in your environment.", cwd, process.platform);
|
|
94
|
+
console.log(`- Would print: ${oldVersion} -> ${targetVersion} and spawn a fresh reconnect session with command:\n ${spawnCommand}`);
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
// Detect and resolve the competing-local-install trap: npx silently prefers
|
|
98
|
+
// a local node_modules copy over the registry, so the stale version wins even
|
|
99
|
+
// after an upgrade unless we remove it.
|
|
100
|
+
try {
|
|
101
|
+
const localModulePath = path.join(cwd, "node_modules", "@bridge_gpt", "mcp-server");
|
|
102
|
+
await stat(localModulePath);
|
|
103
|
+
console.log("Found stale local installation in node_modules. Removing to converge on pinned-npx...");
|
|
104
|
+
const npmCmd = process.platform === "win32" ? "npm.cmd" : "npm";
|
|
105
|
+
await new Promise((resolve) => {
|
|
106
|
+
const child = spawn(npmCmd, ["uninstall", "@bridge_gpt/mcp-server"], {
|
|
107
|
+
stdio: "inherit",
|
|
108
|
+
cwd,
|
|
109
|
+
});
|
|
110
|
+
child.on("close", (code) => {
|
|
111
|
+
if (code !== 0)
|
|
112
|
+
console.warn("Warning: npm uninstall failed; you may need to remove node_modules/@bridge_gpt/mcp-server manually.");
|
|
113
|
+
resolve();
|
|
114
|
+
});
|
|
115
|
+
child.on("error", () => resolve());
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Not installed locally — nothing to clean up.
|
|
120
|
+
}
|
|
121
|
+
try {
|
|
122
|
+
console.log(`\nUpgrading @bridge_gpt/mcp-server to ${targetVersion}...\n`);
|
|
123
|
+
// Scaffold & rewrite the launcher pin on upgrade.
|
|
124
|
+
console.log("Refreshing scaffolded artifacts and updating launcher pins...\n");
|
|
125
|
+
await runInit(cwd);
|
|
126
|
+
console.log(`\nUpgrade complete: ${oldVersion} -> ${targetVersion}`);
|
|
127
|
+
console.log("Please reconnect your MCP now.");
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
131
|
+
console.error(`Bridge API upgrade failed: ${msg}`);
|
|
132
|
+
return 1;
|
|
133
|
+
}
|
|
134
|
+
// Open a fresh agent session so the user lands in a reconnected environment
|
|
135
|
+
// rather than having to manually restart.
|
|
136
|
+
try {
|
|
137
|
+
const terminal = detectTerminal(undefined, process.env);
|
|
138
|
+
const deps = createDefaultStartTicketsDeps();
|
|
139
|
+
const spawnTerminalTab = getDefaultSpawnTerminalTabForPlatform(process.platform);
|
|
140
|
+
const spawnCommand = buildGenericAgentShellCommand(AGENT_REGISTRY.claude, "Bridge API MCP server has been upgraded. Please reload/reconnect the MCP server in your environment.", cwd, process.platform);
|
|
141
|
+
console.log("\nOpening a fresh agent session to reconnect...");
|
|
142
|
+
const spawnResult = await spawnTerminalTab(deps, terminal, spawnCommand, {
|
|
143
|
+
key: "reconnect",
|
|
144
|
+
worktreePath: cwd,
|
|
145
|
+
});
|
|
146
|
+
if (!spawnResult.ok) {
|
|
147
|
+
console.log(`\nTo continue, manually run:\n${spawnCommand}\n`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
console.log("To continue, please reload your agent session manually.");
|
|
152
|
+
}
|
|
153
|
+
return 0;
|
|
154
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// AUTO-GENERATED — do not edit manually. Regenerate with: npm run build
|
|
2
|
-
export const VERSION = "0.2.
|
|
2
|
+
export const VERSION = "0.2.10";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bridge_gpt/mcp-server",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.10",
|
|
4
4
|
"description": "Bridge API MCP server — exposes Jira endpoints as MCP tools for Claude Code agents",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -26,8 +26,9 @@
|
|
|
26
26
|
"check:version-generated": "node scripts/bundle-version.js && node scripts/check-version-generated.js",
|
|
27
27
|
"postbuild": "node scripts/prepend-shebang.cjs",
|
|
28
28
|
"start": "node build/index.js",
|
|
29
|
-
"test": "node --test build/pipeline-utils.test.js build/update-check.test.js build/cli-upgrade.test.js build/decision-page-schema.test.js build/decision-page-template.test.js build/bundle-pipelines.test.js build/instructions-contract.test.js build/pipeline-orchestrator-persistence.test.js build/pipeline-orchestrator-execution.test.js build/pipeline-orchestrator-integration.test.js build/index-static.test.js build/index-resolvers.test.js build/index-project-root.test.js build/index-pipelines.test.js build/index.test.js build/bridge-config.test.js build/credential-store.test.js build/agent-config-credential-migration.test.js build/mcp-invoke.test.js build/mcp-provisioning.test.js build/third-party-mcp-targets.test.js build/git-ignore-utils.test.js build/credential-materialization.test.js build/mcp-registration-doctor.test.js build/secret-safety.test.js build/start-tickets.test.js build/review-tickets.test.js build/start-tickets-base-branch.test.js build/agent-registry.test.js build/agent-registry.model-routing.test.js build/start-tickets.shell-model-routing.test.js build/start-tickets.bridge-api-model-routing.test.js build/start-tickets.tier-fetch-model-routing.test.js build/start-tickets.resolve-model-routing.test.js build/start-tickets.orchestrate-model-routing.test.js build/start-tickets.routing-diagnostics.test.js build/start-tickets-repo.test.js build/start-tickets-credential-invariants.static.test.js build/credentials-cli.test.js build/start-tickets-prereqs.test.js build/doctor.test.js build/resolveUploadAttachment.test.js build/package-static.test.js build/chain-utils.test.js build/chain-orchestrator.test.js build/scheduler-backends/types.test.js build/scheduler-backends/escaping.test.js build/scheduler-backends/launchd.test.js build/scheduler-backends/task-scheduler.test.js build/scheduler-backends/systemd-user.test.js build/scheduler-backends/at-fallback.test.js build/scheduler-backends/index.test.js build/command-catalog.test.js build/scheduled-prompt.test.js build/agent-launchers/claude.test.js build/agent-launchers/cursor.test.js build/agent-launchers/index.test.js build/schedule-store.test.js build/schedule-run.test.js build/agent-capabilities/cli.test.js build/agent-capabilities/runner.test.js build/agent-capabilities/probes.test.js build/agent-capabilities/reporter.test.js build/conductor/taxonomy-and-errors.test.js build/conductor/redaction-normalization.test.js build/conductor/claude-hook.test.js build/conductor/git-ci-types.test.js build/conductor/done-gate.test.js build/conductor/git-ci-taxonomy-payload.test.js build/conductor/bridge-api-client.test.js build/conductor/plan.test.js build/conductor/producer-ledger.test.js build/conductor/git-producer.test.js build/conductor/git-hooks.test.js build/conductor/store-migration.test.js build/conductor/pr-discovery.test.js build/conductor/pr-ci-producer.test.js build/conductor/doctor.test.js build/conductor/index-poll-ci-producer.test.js build/start-tickets-conductor.test.js build/start-tickets-conductor.spawn.test.js build/conductor/supervisor-config.test.js build/conductor/supervisor-ledger.test.js build/conductor/supervisor-state-reducer.test.js build/conductor/supervisor-housekeeping-projection.test.js build/conductor/supervisor-escalation.test.js build/conductor/supervisor-judgment.test.js build/conductor/supervisor-judgment-python-adapter.test.js build/conductor/supervisor-runtime.test.js build/conductor/supervisor-store-projection.test.js build/conductor/supervisor-cli.test.js build/conductor/supervisor-start-tickets.test.js build/conductor/supervisor-message-relay.test.js build/conductor/supervisor-state-message-events.test.js build/conductor/store-message-relay.test.js build/start-tickets-message-relay.test.js build/conductor/merge-ledger.test.js build/conductor/supervisor-merge.test.js build/conductor/bridge-api-merge-client.test.js build/conductor/bridge-api-epic-client.test.js build/conductor/supervisor-merge-runtime-state.test.js build/conductor/epic-state.test.js build/conductor/epic-reconcile.test.js build/conductor/epic-runtime.test.js build/conductor/epic-tick-sequence.test.js build/conductor/epic-runtime-post-action.test.js && node --experimental-test-module-mocks --test build/index-heavy-read-truncation.test.js build/index-artifacts.test.js build/index-brainstorm-filenames.test.js build/index-output-path.test.js build/index-generate-decision-page.test.js build/index-generate-decision-page.integration.test.js build/conductor/paths.test.js build/conductor/store-lifecycle.test.js build/conductor/store-queries.test.js build/conductor/tools.test.js build/conductor/cli.test.js build/conductor/security-regressions.test.js build/conductor/git-inspection.test.js build/conductor/tools-done-gate.test.js build/conductor/cli-git-hooks.test.js",
|
|
29
|
+
"test": "node --test build/pipeline-utils.test.js build/update-check.test.js build/cli-upgrade.test.js build/decision-page-schema.test.js build/decision-page-template.test.js build/bundle-pipelines.test.js build/instructions-contract.test.js build/pipeline-orchestrator-persistence.test.js build/pipeline-orchestrator-execution.test.js build/pipeline-orchestrator-integration.test.js build/index-static.test.js build/index-resolvers.test.js build/index-project-root.test.js build/index-pipelines.test.js build/index.test.js build/bridge-config.test.js build/credential-store.test.js build/agent-config-credential-migration.test.js build/mcp-invoke.test.js build/mcp-provisioning.test.js build/third-party-mcp-targets.test.js build/git-ignore-utils.test.js build/credential-materialization.test.js build/mcp-registration-doctor.test.js build/secret-safety.test.js build/start-tickets.test.js build/review-tickets.test.js build/start-tickets-base-branch.test.js build/agent-registry.test.js build/agent-registry.model-routing.test.js build/start-tickets.shell-model-routing.test.js build/start-tickets.bridge-api-model-routing.test.js build/start-tickets.tier-fetch-model-routing.test.js build/start-tickets.resolve-model-routing.test.js build/start-tickets.orchestrate-model-routing.test.js build/start-tickets.routing-diagnostics.test.js build/start-tickets-repo.test.js build/start-tickets-credential-invariants.static.test.js build/credentials-cli.test.js build/start-tickets-prereqs.test.js build/doctor.test.js build/install-bridge.test.js build/resolveUploadAttachment.test.js build/package-static.test.js build/chain-utils.test.js build/chain-orchestrator.test.js build/scheduler-backends/types.test.js build/scheduler-backends/escaping.test.js build/scheduler-backends/launchd.test.js build/scheduler-backends/task-scheduler.test.js build/scheduler-backends/systemd-user.test.js build/scheduler-backends/at-fallback.test.js build/scheduler-backends/index.test.js build/command-catalog.test.js build/scheduled-prompt.test.js build/agent-launchers/claude.test.js build/agent-launchers/cursor.test.js build/agent-launchers/index.test.js build/schedule-store.test.js build/schedule-run.test.js build/agent-capabilities/cli.test.js build/agent-capabilities/runner.test.js build/agent-capabilities/probes.test.js build/agent-capabilities/reporter.test.js build/conductor/taxonomy-and-errors.test.js build/conductor/redaction-normalization.test.js build/conductor/claude-hook.test.js build/conductor/git-ci-types.test.js build/conductor/done-gate.test.js build/conductor/git-ci-taxonomy-payload.test.js build/conductor/bridge-api-client.test.js build/conductor/plan.test.js build/conductor/producer-ledger.test.js build/conductor/git-producer.test.js build/conductor/git-hooks.test.js build/conductor/store-migration.test.js build/conductor/pr-discovery.test.js build/conductor/pr-ci-producer.test.js build/conductor/doctor.test.js build/conductor/index-poll-ci-producer.test.js build/start-tickets-conductor.test.js build/start-tickets-conductor.spawn.test.js build/conductor/supervisor-config.test.js build/conductor/supervisor-ledger.test.js build/conductor/supervisor-state-reducer.test.js build/conductor/supervisor-housekeeping-projection.test.js build/conductor/supervisor-escalation.test.js build/conductor/supervisor-judgment.test.js build/conductor/supervisor-judgment-python-adapter.test.js build/conductor/supervisor-runtime.test.js build/conductor/supervisor-store-projection.test.js build/conductor/supervisor-cli.test.js build/conductor/supervisor-start-tickets.test.js build/conductor/supervisor-message-relay.test.js build/conductor/supervisor-state-message-events.test.js build/conductor/store-message-relay.test.js build/start-tickets-message-relay.test.js build/conductor/merge-ledger.test.js build/conductor/supervisor-merge.test.js build/conductor/bridge-api-merge-client.test.js build/conductor/bridge-api-epic-client.test.js build/conductor/supervisor-merge-runtime-state.test.js build/conductor/epic-state.test.js build/conductor/epic-reconcile.test.js build/conductor/epic-runtime.test.js build/conductor/epic-tick-sequence.test.js build/conductor/epic-runtime-post-action.test.js build/mcp-profile.test.js build/mcp-profile-registration.test.js build/tools-budget.test.js build/integration/measure-tools.test.js && node --experimental-test-module-mocks --test build/index-heavy-read-truncation.test.js build/index-artifacts.test.js build/index-brainstorm-filenames.test.js build/index-output-path.test.js build/index-generate-decision-page.test.js build/index-generate-decision-page.integration.test.js build/conductor/paths.test.js build/conductor/store-lifecycle.test.js build/conductor/store-queries.test.js build/conductor/tools.test.js build/conductor/cli.test.js build/conductor/security-regressions.test.js build/conductor/git-inspection.test.js build/conductor/tools-done-gate.test.js build/conductor/cli-git-hooks.test.js",
|
|
30
30
|
"test:integration": "node --test build/integration/refresh-main.integration.test.js build/integration/start-tickets.integration.test.js build/integration/doctor.integration.test.js build/integration/agent-capabilities.integration.test.js build/integration/conductor-producer.integration.test.js build/integration/conductor-message-relay.integration.test.js",
|
|
31
|
+
"test:smoke": "node --test build/integration/packaged-cli-smoke.test.js",
|
|
31
32
|
"prepublishOnly": "node scripts/bundle-assets.js && npm run build && node scripts/verify-shebang.cjs"
|
|
32
33
|
},
|
|
33
34
|
"dependencies": {
|