@bridge_gpt/mcp-server 0.2.57 → 0.2.58
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 +12 -9
- package/build/codex-bridge-profile.js +5 -1
- package/build/codex-launch-scope.js +13 -2
- package/build/commands.generated.js +2 -2
- package/build/cursor-agent-progress.js +72 -0
- package/build/doctor.js +3 -1
- package/build/epic-implementer-bin.js +1 -1
- package/build/index.js +26 -26
- package/build/install-bridge.js +4 -3
- package/build/install-doctor.js +1 -1
- package/build/pipelines.generated.js +4 -4
- package/build/readme.generated.js +1 -1
- package/build/start-tickets.js +19 -7
- package/build/version.generated.js +3 -3
- package/package.json +1 -1
- package/pipelines/implement-ticket.json +2 -2
- package/pipelines/review-ticket.json +1 -1
package/README.md
CHANGED
|
@@ -242,13 +242,16 @@ npx -y @bridge_gpt/mcp-server doctor
|
|
|
242
242
|
`doctor` is strictly read-only. It reports what it found — configs, registrations,
|
|
243
243
|
credential availability, prerequisites — and changes nothing.
|
|
244
244
|
|
|
245
|
-
**Codex approval profile.** When selecting Codex during `install`,
|
|
246
|
-
|
|
245
|
+
**Codex approval profile.** When selecting Codex during interactive `install`,
|
|
246
|
+
press Enter to accept the default Yes at the profile prompt, or answer `n`/`no`
|
|
247
|
+
to decline. Pass `--tools=codex --codex-profile=on` in a scripted install. Bridge
|
|
247
248
|
creates `$CODEX_HOME/bridge.config.toml` (default `~/.codex/bridge.config.toml`)
|
|
248
249
|
with approval settings for the tools used by its review and implementation
|
|
249
250
|
workflows. Bridge-spawned Codex workers then select it automatically, including
|
|
250
251
|
the fresh implementation session after review. Pass `--codex-profile=off` to
|
|
251
|
-
decline; the installer leaves any existing profile content intact.
|
|
252
|
+
decline; the installer leaves any existing profile content intact. On package
|
|
253
|
+
upgrade, the next Bridge-spawned worker refreshes an older, unmodified managed
|
|
254
|
+
profile before launch. If a profile
|
|
252
255
|
already contains user-authored or conflicting content, the installer leaves it
|
|
253
256
|
untouched and reports that workers cannot use it. Run `doctor --agent codex` to
|
|
254
257
|
inspect the current status. To use the profile in a Codex session you open
|
|
@@ -365,7 +368,7 @@ later boot.
|
|
|
365
368
|
"mcpServers": {
|
|
366
369
|
"bridge": {
|
|
367
370
|
"command": "npx",
|
|
368
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
371
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.58", "serve"],
|
|
369
372
|
"env": {
|
|
370
373
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
371
374
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -387,7 +390,7 @@ later boot.
|
|
|
387
390
|
"bridge": {
|
|
388
391
|
"type": "stdio",
|
|
389
392
|
"command": "npx",
|
|
390
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
393
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.58", "serve"],
|
|
391
394
|
"env": {
|
|
392
395
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
393
396
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -409,7 +412,7 @@ later boot.
|
|
|
409
412
|
"bridge": {
|
|
410
413
|
"type": "stdio",
|
|
411
414
|
"command": "npx",
|
|
412
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
415
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.58", "serve"],
|
|
413
416
|
"env": {
|
|
414
417
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
415
418
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -432,7 +435,7 @@ Windsurf only supports global MCP configuration.
|
|
|
432
435
|
"mcpServers": {
|
|
433
436
|
"bridge": {
|
|
434
437
|
"command": "npx",
|
|
435
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
438
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.58", "serve"],
|
|
436
439
|
"env": {
|
|
437
440
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
438
441
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -451,7 +454,7 @@ Windsurf only supports global MCP configuration.
|
|
|
451
454
|
```toml
|
|
452
455
|
[mcp_servers.bridge]
|
|
453
456
|
command = "npx"
|
|
454
|
-
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
457
|
+
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.58", "serve"]
|
|
455
458
|
|
|
456
459
|
[mcp_servers.bridge.env]
|
|
457
460
|
BAPI_BASE_URL = "https://bridgegpt-api.com"
|
|
@@ -1569,7 +1572,7 @@ The authoritative tool catalog covers **75 tools** (enumerated below). What's ac
|
|
|
1569
1572
|
- **Jira tickets** — `get_tickets`, `get_ticket`, `create_ticket`, `update_ticket_description`, `add_comment`, `get_comments`
|
|
1570
1573
|
- **Attachments** — `attachment` (operations: `upload`, `download`, `list`)
|
|
1571
1574
|
- **AI generation (request/get)** — `request_plan_generation`/`get_plan`, `create_doc`/`get_doc` (design docs by `doc_type`: tdd/architecture/fsd/prd, where `architecture` is an alias of `tdd`), `request_ticket_review` (writes both `get_clarifying_questions` and `get_ticket_critique`), `request_reimplement_context`/`get_reimplement_context`, `request_council`/`get_council`, `request_deep_research`/`get_deep_research`
|
|
1572
|
-
- **Bounded waits** — `wait_for_ticket_review`, `wait_for_ci_checks`. Each
|
|
1575
|
+
- **Bounded waits** — `wait_for_ticket_review`, `wait_for_ci_checks`. Each returns `state: "ready" | "pending" | "error"`; review waits default to 20 s and CI waits default to 240 s (both accept up to 240 s explicitly). `pending` is a normal, resumable result you call again on, never a failure. They exist so an agent can wait without a foreground `sleep` and without binding a long server-side operation to the 900 s MCP client deadline. `wait_for_ci_checks` reports only that checks are **terminal** — deciding pass or fail stays with the caller.
|
|
1573
1576
|
- **Other AI** — `second_opinion`, `generate_image`, `generate_decision_page`, `visual_diff` (deterministic pixel diff of a rendered URL vs a design comp)
|
|
1574
1577
|
- **Ticket lifecycle** — `track_ticket`, `update_ticket_state`, `get_ticket_state`, `get_ticket_state_tree` (live repo-wide lifecycle + dependency tree; read-only, no mutation parameter)
|
|
1575
1578
|
- **Jira status** — `update_jira_status` (pass `status: "auto"` to resolve the configured post-PR status server-side)
|
|
@@ -13,6 +13,7 @@ export const BRIDGE_WORKFLOW_TOOLS = [
|
|
|
13
13
|
"ping", "get_ticket", "get_pipeline_recipe", "request_ticket_review",
|
|
14
14
|
"wait_for_ticket_review", "fresh_base", "generate_decision_page",
|
|
15
15
|
"capture_review_decisions", "request_plan_generation", "get_plan",
|
|
16
|
+
"attachment",
|
|
16
17
|
"get_phase_context", "record_phase_result", "create_pull_request",
|
|
17
18
|
"update_jira_status", "config_field", "resolve_ci_checks", "poll_ci_checks",
|
|
18
19
|
"wait_for_ci_checks",
|
|
@@ -76,8 +77,11 @@ export async function inspectBridgeCodexProfile(home, readFile) {
|
|
|
76
77
|
return { status: "declined", key };
|
|
77
78
|
if (profile === null || !("hash" in parsed) || typeof parsed.hash !== "string")
|
|
78
79
|
return { status: "conflict", key };
|
|
79
|
-
if (
|
|
80
|
+
if (fingerprint(profile) !== parsed.hash)
|
|
80
81
|
return { status: "conflict", key };
|
|
82
|
+
if (profile !== renderBridgeCodexProfile(key)) {
|
|
83
|
+
return { status: profile.startsWith(MARKER) ? "stale" : "conflict", key };
|
|
84
|
+
}
|
|
81
85
|
return { status: "active", key };
|
|
82
86
|
}
|
|
83
87
|
export async function configureBridgeCodexProfile(home, choice, deps) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { readBridgeConfig } from "./bridge-config.js";
|
|
3
3
|
import { codexBridgeTableNames } from "./mcp-host-config.js";
|
|
4
4
|
import { codexHome } from "./codex-home.js";
|
|
5
|
-
import { codexProfilePaths, inspectBridgeCodexProfile, BRIDGE_CODEX_PROFILE } from "./codex-bridge-profile.js";
|
|
5
|
+
import { codexProfilePaths, configureBridgeCodexProfile, inspectBridgeCodexProfile, BRIDGE_CODEX_PROFILE } from "./codex-bridge-profile.js";
|
|
6
6
|
import { buildMcpServerEntriesForManifest, normalizeWorktreePathForRegistration, } from "./mcp-provisioning.js";
|
|
7
7
|
import { MCP_SERVER_NAME } from "./mcp-identity.js";
|
|
8
8
|
/** A missing Bridge target is a launch failure, never a fallback to user-scoped config. */
|
|
@@ -39,7 +39,18 @@ export async function resolveCodexLaunchScope(root, deps, codexConfigPath = code
|
|
|
39
39
|
}
|
|
40
40
|
const bridgeKey = registeredNames[0] ?? MCP_SERVER_NAME;
|
|
41
41
|
const home = codexHome(deps.env ?? process.env, deps.homedir?.());
|
|
42
|
-
|
|
42
|
+
let profile = await inspectBridgeCodexProfile(home, deps.readFile);
|
|
43
|
+
if (profile.status === "stale") {
|
|
44
|
+
try {
|
|
45
|
+
profile = await configureBridgeCodexProfile(home, "enable", deps);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { ok: false, error: "Codex MCP scope unavailable: could not refresh the managed Bridge approval profile." };
|
|
49
|
+
}
|
|
50
|
+
if (profile.status !== "active") {
|
|
51
|
+
return { ok: false, error: "Codex MCP scope unavailable: managed Bridge approval profile refresh failed." };
|
|
52
|
+
}
|
|
53
|
+
}
|
|
43
54
|
const argv = ["-C", normalized.path];
|
|
44
55
|
if (profile.status === "active" && profile.key === bridgeKey)
|
|
45
56
|
argv.push("--profile", BRIDGE_CODEX_PROFILE);
|