@bridge_gpt/mcp-server 0.2.59 → 0.2.62
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 +181 -51
- package/build/agent-guidance.generated.js +1 -1
- package/build/agent-notes.js +7 -1
- package/build/commands.generated.js +6 -6
- package/build/conductor/bridge-api-client.js +406 -4
- package/build/conductor/doctor.js +255 -53
- package/build/conductor/epic-runtime.js +11 -2
- package/build/conductor/install-doctor.js +24 -2
- package/build/conductor/local-merge.js +319 -26
- package/build/conductor/merge-execution-contract.js +86 -0
- package/build/conductor/merge-execution-eligibility.js +130 -0
- package/build/conductor/readiness-sections.js +256 -16
- package/build/conductor/readiness.js +203 -29
- package/build/conductor/recovery-operations.js +8 -2
- package/build/connect-bitbucket-api.js +6 -1
- package/build/connect-bitbucket.js +398 -88
- package/build/credential-store.js +172 -0
- package/build/docs.generated.js +2 -2
- package/build/doctor.js +277 -15
- package/build/drive-epic.js +147 -12
- package/build/epic-implementer-bin.js +15 -15
- package/build/epic-implementer-claude-hook-bin.js +1 -1
- package/build/epic-implementer-env.js +43 -14
- package/build/epic-integration-pr.js +61 -15
- package/build/epic-launch-profile.js +455 -0
- package/build/executor/ci-rerun-job.js +269 -0
- package/build/executor/cli.js +40 -0
- package/build/executor/credentials.js +28 -1
- package/build/executor/env.js +60 -0
- package/build/executor/http-client.js +45 -1
- package/build/executor/index.js +21 -4
- package/build/executor/integration-job.js +759 -0
- package/build/executor/job-runner.js +218 -9
- package/build/executor/job-types.js +12 -2
- package/build/executor/merge-job.js +11 -2
- package/build/executor/observation.js +114 -7
- package/build/executor/runner.js +101 -1
- package/build/executor/service-lifecycle.js +136 -0
- package/build/executor/service-unit.js +427 -9
- package/build/executor/types.js +48 -0
- package/build/index.js +479 -240
- package/build/install-bridge-conductor.js +599 -14
- package/build/install-bridge.js +448 -46
- package/build/mcp-install-state.js +42 -4
- package/build/merge-pull-request.js +103 -10
- package/build/merge-workflow-codeowners.js +224 -0
- package/build/merge-workflow-config.js +187 -0
- package/build/merge-workflow-drift.js +97 -0
- package/build/merge-workflow-install.js +638 -0
- package/build/merge-workflow.js +956 -0
- package/build/pipelines.generated.js +3 -3
- package/build/plane/cli.js +24 -2
- package/build/plane/preflight.js +68 -0
- package/build/plane/supervisor.js +6 -0
- package/build/readme.generated.js +1 -1
- package/build/run-unit-tests-launcher.js +5 -0
- package/build/setup-epic.js +263 -38
- package/build/version.generated.js +3 -3
- package/package.json +3 -3
- package/build/conduct-epic/bridge-client.js +0 -773
- package/build/conduct-epic/checkpoint-store.js +0 -542
- package/build/conduct-epic/cli.js +0 -3145
- package/build/conduct-epic/cut-protocol.js +0 -392
- package/build/conduct-epic/lock.js +0 -302
- package/build/conduct-epic/pr-state.js +0 -286
- package/build/conduct-epic/spawn.js +0 -113
- package/build/conductor/cli.js +0 -1278
- package/build/conductor-bundle-cli.js +0 -256
- package/build/direct-ticket-tools.js +0 -70
- package/build/executor/reconcile-overlap-governance.js +0 -129
- package/build/implement-epic/bridge-client.js +0 -773
- package/build/implement-epic/checkpoint-store.js +0 -542
- package/build/implement-epic/cli.js +0 -3158
- package/build/implement-epic/cut-protocol.js +0 -392
- package/build/implement-epic/lock.js +0 -302
- package/build/implement-epic/pr-state.js +0 -286
- package/build/implement-epic/spawn.js +0 -113
- package/build/plan-epic-conductor-eligibility.js +0 -213
package/README.md
CHANGED
|
@@ -2,44 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
The Bridge MCP is an end-to-end accelerator for shipping code within SFCC, powered by [Bridge API](https://bridgegpt-api.com). Works with Claude Code, Github Copilot, Cursor, Windsurf, and OpenAI Codex.
|
|
4
4
|
|
|
5
|
-
## Personal model routing preferences
|
|
6
|
-
|
|
7
|
-
Create `~/.config/bridge/model-routing.json` to choose ordered providers for
|
|
8
|
-
ticket review, Second Opinion, and Council without changing shared project
|
|
9
|
-
configuration. The file is personal and uncommitted, contains no credentials,
|
|
10
|
-
and is reread for every request. The repository key must exactly match Bridge's
|
|
11
|
-
`repo_name`:
|
|
12
|
-
|
|
13
|
-
```json
|
|
14
|
-
{
|
|
15
|
-
"version": 1,
|
|
16
|
-
"defaults": {
|
|
17
|
-
"review_ticket": ["gemini", "anthropic"],
|
|
18
|
-
"second_opinion": ["anthropic", "gemini"],
|
|
19
|
-
"council": ["anthropic", "gemini"]
|
|
20
|
-
},
|
|
21
|
-
"repositories": {
|
|
22
|
-
"my-repo": { "council": ["gemini"] }
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
A repository entry replaces the machine entry only for a feature key it
|
|
28
|
-
contains. Remove a key or set it to `[]` to restore automatic selection for
|
|
29
|
-
that feature; an empty repository entry suppresses the machine entry. Delete
|
|
30
|
-
the file to clear every preference. Malformed, unreadable, or unsafe files are
|
|
31
|
-
ignored with a bounded local warning. Keep the file owned by your user and not
|
|
32
|
-
writable by your group or others.
|
|
33
|
-
|
|
34
|
-
Only the exact initialized MCP client names `codex` and `claude-code`, or their
|
|
35
|
-
installer markers, identify the Codex and Claude Code families. Cursor, GitHub
|
|
36
|
-
Copilot, and unlisted clients remain neutral. Automatic Codex requests prefer
|
|
37
|
-
eligible Anthropic then Gemini; Claude Code requests prefer eligible OpenAI
|
|
38
|
-
then Gemini. Explicit per-call choices override this personal order but must
|
|
39
|
-
still pass model support, project restrictions, and feature entitlement. A
|
|
40
|
-
populated project Allowed Providers list can reduce an automatic request or
|
|
41
|
-
refuse an incompatible explicit request.
|
|
42
|
-
|
|
43
5
|
## Install
|
|
44
6
|
|
|
45
7
|
From your **project root**, run:
|
|
@@ -102,6 +64,7 @@ account — it will ask.
|
|
|
102
64
|
- [Custom Pipelines](#custom-pipelines)
|
|
103
65
|
- [Environment Variables](#environment-variables)
|
|
104
66
|
- [Worktree credentials and the `mcp-invoke` shim](#worktree-credentials-and-the-mcp-invoke-shim)
|
|
67
|
+
- [Personal model routing preferences](#personal-model-routing-preferences)
|
|
105
68
|
- [Reference](#reference)
|
|
106
69
|
|
|
107
70
|
For advanced epic/multi-agent orchestration, see [CONDUCTOR.md](./docs/CONDUCTOR.md).
|
|
@@ -406,7 +369,7 @@ later boot.
|
|
|
406
369
|
"mcpServers": {
|
|
407
370
|
"bridge": {
|
|
408
371
|
"command": "npx",
|
|
409
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
372
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.62", "serve"],
|
|
410
373
|
"env": {
|
|
411
374
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
412
375
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -428,7 +391,7 @@ later boot.
|
|
|
428
391
|
"bridge": {
|
|
429
392
|
"type": "stdio",
|
|
430
393
|
"command": "npx",
|
|
431
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
394
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.62", "serve"],
|
|
432
395
|
"env": {
|
|
433
396
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
434
397
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -450,7 +413,7 @@ later boot.
|
|
|
450
413
|
"bridge": {
|
|
451
414
|
"type": "stdio",
|
|
452
415
|
"command": "npx",
|
|
453
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
416
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.62", "serve"],
|
|
454
417
|
"env": {
|
|
455
418
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
456
419
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -473,7 +436,7 @@ Windsurf only supports global MCP configuration.
|
|
|
473
436
|
"mcpServers": {
|
|
474
437
|
"bridge": {
|
|
475
438
|
"command": "npx",
|
|
476
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
439
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.62", "serve"],
|
|
477
440
|
"env": {
|
|
478
441
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
479
442
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -492,7 +455,7 @@ Windsurf only supports global MCP configuration.
|
|
|
492
455
|
```toml
|
|
493
456
|
[mcp_servers.bridge]
|
|
494
457
|
command = "npx"
|
|
495
|
-
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
458
|
+
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.62", "serve"]
|
|
496
459
|
|
|
497
460
|
[mcp_servers.bridge.env]
|
|
498
461
|
BAPI_BASE_URL = "https://bridgegpt-api.com"
|
|
@@ -613,16 +576,16 @@ The tools worth knowing for most tickets.
|
|
|
613
576
|
- **How to use it:** `/review-and-start BAPI-248 BAPI-250` (single or multiple keys flow through the identical code path).
|
|
614
577
|
- **Flags:** `--auto` auto-approves both the review and the implementation phase of every spawned session · `--rounds=1|2` forwarded to the review phase · `--agent`, `--base-branch`, `--max-parallel`, `--dry-run` mirror `/start-tickets`.
|
|
615
578
|
|
|
616
|
-
**4.
|
|
617
|
-
- **What it does:**
|
|
579
|
+
**4. Define Tickets**
|
|
580
|
+
- **What it does:** Analyzes a single task or feature specification to define, refine, and structure one or more actionable Jira tickets. It maps the code paths, dependencies, and project conventions the task would touch, settles acceptance criteria with you on a decision page, then compares the viable implementation approaches and their trade-offs so the ticket work is grounded in the real codebase. Along the way it surfaces the ambiguities that still need deciding and can pull in optional web or deep research where the answer is not in the code.
|
|
618
581
|
- **When it's useful:** (Architecture | Refinement) Before writing a ticket or a plan, when you're unsure how a change would fit the existing code and want the open questions and the realistic options laid out first.
|
|
619
|
-
- **How to use it:** `/
|
|
582
|
+
- **How to use it:** `/define-tickets <task>` — *"Define the tickets we'd need to add a Mistral LLM provider."*
|
|
620
583
|
- **Flags:** None.
|
|
621
584
|
|
|
622
|
-
**5. Council**
|
|
585
|
+
**5. AI Council**
|
|
623
586
|
- **What it does:** Fans your problem out to two different models and returns their approaches, in technical, design, discovery, or general mode.
|
|
624
587
|
- **When it's useful:** (Architecture | Refinement) Early, when you want a spread of approaches — technical for how to build it, design for how it should look, discovery for what still needs figuring out before a real ticket exists, general for a quick brief-driven pass before the repository is indexed.
|
|
625
|
-
- **How to use it:** `/council <question>`
|
|
588
|
+
- **How to use it:** `/ai-council <question>`
|
|
626
589
|
- **Flags:** `--mode` selects one of four modes, passed to the underlying `request_council` tool as e.g. `mode: "discovery"`: `technical` (the default — implementation/architecture approaches), `design` (UI/UX and visual direction), `discovery` (stakeholder discovery questions, grouped into `Technical Discovery Questions` and `Business / Stakeholder Discovery Questions` and tagged `[HUMAN]`/`[CODE]`/`[TICKET]`), and `general` (brief-driven ideation from your task description alone). `technical` and `discovery` are codebase-grounded and need an indexed repository; `general` needs no code index at all, so it works immediately after install. The legacy boolean `design=true` still works and maps to `mode: "design"`.
|
|
627
590
|
|
|
628
591
|
**6. Deep Research**
|
|
@@ -756,7 +719,7 @@ Useful once in a while.
|
|
|
756
719
|
|
|
757
720
|
### Workflow commands
|
|
758
721
|
|
|
759
|
-
Slash commands that drive several tools at once. Start Tickets, Review and Start, and
|
|
722
|
+
Slash commands that drive several tools at once. Start Tickets, Review and Start, and Define Tickets are documented above under [Regularly useful](#regularly-useful); Create Decision Page is documented above under [Occasionally useful](#occasionally-useful); Regression Check and Scan Test Coverage are documented above under [Now and then](#now-and-then) — the rest live here.
|
|
760
723
|
|
|
761
724
|
**1. Implement Ticket**
|
|
762
725
|
- **What it does:** Full build for one ticket: generate a plan, write the code, commit, open a PR, and monitor CI.
|
|
@@ -784,7 +747,7 @@ Slash commands that drive several tools at once. Start Tickets, Review and Start
|
|
|
784
747
|
|
|
785
748
|
#### Ticket-authoring posture
|
|
786
749
|
|
|
787
|
-
`/
|
|
750
|
+
`/define-tickets`, `/idea-to-ticket`, and `/plan-epic` all decide ticket shape
|
|
788
751
|
the same way, as does the `jira-ticket-writer` agent they draft through. A fresh install inherits this with no configuration
|
|
789
752
|
step and no server call; the full rationale and the closed exception list ship as
|
|
790
753
|
`docs/bridge-ticket-authoring.md`.
|
|
@@ -843,7 +806,7 @@ Repository and ticket housekeeping commands, beyond the tiers above. Implementat
|
|
|
843
806
|
>
|
|
844
807
|
> | Copilot mode | Artifact Bridge writes | How you invoke it |
|
|
845
808
|
> |---|---|---|
|
|
846
|
-
> | VS Code Local agent | `.github/prompts/<command>.prompt.md` | `/<command>`, for example `/
|
|
809
|
+
> | VS Code Local agent | `.github/prompts/<command>.prompt.md` | `/<command>`, for example `/define-tickets` |
|
|
847
810
|
> | VS Code Agent Host | `.github/skills/<command>/SKILL.md` (a separately verified project skill; prompt files are not loaded in this mode) | `/<command>` |
|
|
848
811
|
> | Copilot CLI, Copilot cloud coding agent | None | Out of scope |
|
|
849
812
|
>
|
|
@@ -1276,6 +1239,135 @@ Conductor is an **opt-in, off-by-default** layer for epic supervision, inter-age
|
|
|
1276
1239
|
|
|
1277
1240
|
> The v1 `epic-implementer epic-tick` command is **frozen** — it throws on every invocation. There is nothing to schedule locally, and `epic-implementer doctor` flags any epic-tick schedule left over from an earlier release so you can cancel it.
|
|
1278
1241
|
|
|
1242
|
+
<!-- BEGIN GENERATED: merge-workflow-install (managed by mcp_server/scripts/sync-readme-merge-workflow.js — DO NOT EDIT BY HAND) -->
|
|
1243
|
+
### `install-bridge conductor --merge-workflow`
|
|
1244
|
+
|
|
1245
|
+
Generates the Epic Implementer **merge workflow** plus its CODEOWNERS fragment
|
|
1246
|
+
and repository-rule guidance, commits them on a managed branch, pushes with
|
|
1247
|
+
**your own git identity**, and opens a pull request with **your own `gh`**.
|
|
1248
|
+
|
|
1249
|
+
```
|
|
1250
|
+
npx -y @bridge_gpt/mcp-server install-bridge conductor --merge-workflow --codeowner <@org/team|@user>
|
|
1251
|
+
```
|
|
1252
|
+
|
|
1253
|
+
`--codeowner` is **required** and takes exactly one `@user` or `@org/team`. It is
|
|
1254
|
+
never inferred from repository metadata, and a documentation placeholder is
|
|
1255
|
+
rejected. `--dry-run` prints the plan and performs **no** write: no branch, no
|
|
1256
|
+
file, no install-state write, no commit, no push, and no pull request.
|
|
1257
|
+
|
|
1258
|
+
**Bridge performs no repository write, and the pull request is never merged for
|
|
1259
|
+
you.** Reviewing the workflow before it lands is the security control — it is the
|
|
1260
|
+
one file in your repository that can perform a privileged merge.
|
|
1261
|
+
|
|
1262
|
+
#### Files it generates
|
|
1263
|
+
|
|
1264
|
+
| Path | What it is |
|
|
1265
|
+
|---|---|
|
|
1266
|
+
| `.github/workflows/epic-implementer-merge.yml` | The merge workflow, contract version 2. |
|
|
1267
|
+
| `.bridge/merge-workflow/CODEOWNERS.fragment` | A CODEOWNERS rule for that path. Not in force until you merge it into your active CODEOWNERS file. |
|
|
1268
|
+
| `.bridge/merge-workflow/REPOSITORY-RULES.md` | The setup steps, including the repository rule that actually enforces review. |
|
|
1269
|
+
|
|
1270
|
+
#### The four content outcomes
|
|
1271
|
+
|
|
1272
|
+
Re-running is safe and reports exactly one of these:
|
|
1273
|
+
|
|
1274
|
+
| Outcome | What happens |
|
|
1275
|
+
|---|---|
|
|
1276
|
+
| **not installed** | The workflow and companions are written on a managed branch and a pull request is opened. |
|
|
1277
|
+
| **managed version is older** | The same, labelled explicitly as an *upgrade* in the branch, commit, pull request title, and terminal summary. |
|
|
1278
|
+
| **identical** | A clean no-op. Nothing is written and no pull request is opened. |
|
|
1279
|
+
| **modified/unrecognized** | Fail-closed. Your file is preserved untouched and never overwritten — including a file that merely *claims* an older version in its marker. |
|
|
1280
|
+
|
|
1281
|
+
An already-open installation or upgrade pull request is **reported, not
|
|
1282
|
+
duplicated**: the command verifies its branch, base, and file set and prints its
|
|
1283
|
+
URL instead of creating a second branch, commit, push, or pull request.
|
|
1284
|
+
|
|
1285
|
+
#### What you must do after merging
|
|
1286
|
+
|
|
1287
|
+
1. Create a repository Actions **secret** named `BAPI_API_KEY` holding a Bridge API key for the repository. Its value must **never** be passed to the installer, committed, printed, or placed in `--dry-run` output — the CLI has no flag, prompt, or file field that accepts one.
|
|
1288
|
+
2. Merge the generated CODEOWNERS rule into your active CODEOWNERS file. The fragment enforces nothing by itself.
|
|
1289
|
+
3. Add a default-branch repository rule requiring a pull request and code-owner review. **Until this rule exists, the workflow path is not protected.**
|
|
1290
|
+
|
|
1291
|
+
Optionally set a repository Actions **variable** named `BAPI_BASE_URL` to point the workflow at a non-default Bridge deployment (default `https://bridgegpt-api.com`). A variable, not a workflow input: the base URL decides which server authorizes a merge.
|
|
1292
|
+
|
|
1293
|
+
#### Merge credentials (`local` and `machine_token` modes)
|
|
1294
|
+
|
|
1295
|
+
No merge path reads an ambient `gh` login. Each mode reads exactly one
|
|
1296
|
+
process-launch configuration key, with **no fallback** between them and none to
|
|
1297
|
+
an inherited `GH_TOKEN`, `GITHUB_TOKEN`, a `gh auth` session, or the Bridge
|
|
1298
|
+
credential store. Bridge never stores either value.
|
|
1299
|
+
|
|
1300
|
+
| Mode | Key | Provenance |
|
|
1301
|
+
|---|---|---|
|
|
1302
|
+
| `local` | `BAPI_LOCAL_MERGE_TOKEN` | A configured local scoped credential. |
|
|
1303
|
+
| `machine_token` | `BAPI_MACHINE_MERGE_TOKEN` | Your machine user's credential. |
|
|
1304
|
+
|
|
1305
|
+
Supply them at process launch, or from an approved external secret manager.
|
|
1306
|
+
|
|
1307
|
+
| Preflight outcome | Remediation |
|
|
1308
|
+
|---|---|
|
|
1309
|
+
| `*_credential_missing` | Set the mode's key in the environment this MCP server is launched with. |
|
|
1310
|
+
| `*_credential_invalid` | GitHub rejected the configured credential. Rotate it and relaunch. |
|
|
1311
|
+
| `*_credential_unpermitted` | It authenticates but cannot write to this repository. Grant it merge permission. |
|
|
1312
|
+
| `local_gh_unavailable` | Install the GitHub CLI (`gh`) on the machine running this MCP server. |
|
|
1313
|
+
|
|
1314
|
+
#### What the workflow does and does not do
|
|
1315
|
+
|
|
1316
|
+
- It **never checks out** the repository and never runs pull-request content.
|
|
1317
|
+
- It uses **no third-party action** and no `uses:` step — only runner-provided bash, curl, jq, and `gh`.
|
|
1318
|
+
- It merges only under an **expected-head-SHA precondition**.
|
|
1319
|
+
- It **refuses a fork-origin** or otherwise unverifiable head.
|
|
1320
|
+
- It **refuses any base that is the repository default branch**, without retrying.
|
|
1321
|
+
- It **reports** the result to Bridge after the merge and read-back; the report decides nothing.
|
|
1322
|
+
|
|
1323
|
+
`workflow_dispatch` always runs the workflow definition on the **trusted default
|
|
1324
|
+
branch**, so a pull request that edits the file cannot change the version that runs
|
|
1325
|
+
against it.
|
|
1326
|
+
|
|
1327
|
+
#### Canonical template
|
|
1328
|
+
|
|
1329
|
+
Git blob SHA of the rendered workflow: `83089be700759e2e4d423ecedb7373829676ef39`
|
|
1330
|
+
|
|
1331
|
+
```yaml
|
|
1332
|
+
name: Epic Implementer merge
|
|
1333
|
+
|
|
1334
|
+
env:
|
|
1335
|
+
x-bridge-merge-contract-version: 2
|
|
1336
|
+
|
|
1337
|
+
on:
|
|
1338
|
+
workflow_dispatch:
|
|
1339
|
+
inputs:
|
|
1340
|
+
action_key:
|
|
1341
|
+
description: >-
|
|
1342
|
+
Durable merge-action key naming the approved attempt. A wake-up and a
|
|
1343
|
+
correlator only; it authorizes nothing by itself.
|
|
1344
|
+
required: true
|
|
1345
|
+
type: string
|
|
1346
|
+
lease_owner:
|
|
1347
|
+
description: >-
|
|
1348
|
+
Per-attempt lease secret proving this run is the live attempt. Never
|
|
1349
|
+
printed, never echoed, never written to an output.
|
|
1350
|
+
required: true
|
|
1351
|
+
type: string
|
|
1352
|
+
operation:
|
|
1353
|
+
description: >-
|
|
1354
|
+
Which job runs. `child_merge` (the default) merges an approved
|
|
1355
|
+
child pull request; `integration_action` performs one integration
|
|
1356
|
+
action. Selects a job only; the work itself is fetched from Bridge.
|
|
1357
|
+
required: false
|
|
1358
|
+
default: child_merge
|
|
1359
|
+
type: string
|
|
1360
|
+
|
|
1361
|
+
permissions:
|
|
1362
|
+
contents: write
|
|
1363
|
+
pull-requests: write
|
|
1364
|
+
|
|
1365
|
+
concurrency:
|
|
1366
|
+
group: epic-implementer-merge-${{ inputs.action_key }}
|
|
1367
|
+
cancel-in-progress: false
|
|
1368
|
+
```
|
|
1369
|
+
<!-- END GENERATED: merge-workflow-install -->
|
|
1370
|
+
|
|
1279
1371
|
## Custom Pipelines
|
|
1280
1372
|
|
|
1281
1373
|
You can create your own pipelines by adding JSON files to `.bridge/pipelines/`. Running `--init` scaffolds this directory with a `README.md` and an example pipeline to get you started.
|
|
@@ -1555,6 +1647,44 @@ there is no fallback path for it.
|
|
|
1555
1647
|
informational only: it cannot confirm the next worker spawn will authenticate,
|
|
1556
1648
|
and it never blocks the doctor run or changes its exit code.
|
|
1557
1649
|
|
|
1650
|
+
## Personal model routing preferences
|
|
1651
|
+
|
|
1652
|
+
Create `~/.config/bridge/model-routing.json` to choose ordered providers for
|
|
1653
|
+
ticket review, Second Opinion, and AI Council without changing shared project
|
|
1654
|
+
configuration. The file is personal and uncommitted, contains no credentials,
|
|
1655
|
+
and is reread for every request. The repository key must exactly match Bridge's
|
|
1656
|
+
`repo_name`:
|
|
1657
|
+
|
|
1658
|
+
```json
|
|
1659
|
+
{
|
|
1660
|
+
"version": 1,
|
|
1661
|
+
"defaults": {
|
|
1662
|
+
"review_ticket": ["gemini", "anthropic"],
|
|
1663
|
+
"second_opinion": ["anthropic", "gemini"],
|
|
1664
|
+
"council": ["anthropic", "gemini"]
|
|
1665
|
+
},
|
|
1666
|
+
"repositories": {
|
|
1667
|
+
"my-repo": { "council": ["gemini"] }
|
|
1668
|
+
}
|
|
1669
|
+
}
|
|
1670
|
+
```
|
|
1671
|
+
|
|
1672
|
+
A repository entry replaces the machine entry only for a feature key it
|
|
1673
|
+
contains. Remove a key or set it to `[]` to restore automatic selection for
|
|
1674
|
+
that feature; an empty repository entry suppresses the machine entry. Delete
|
|
1675
|
+
the file to clear every preference. Malformed, unreadable, or unsafe files are
|
|
1676
|
+
ignored with a bounded local warning. Keep the file owned by your user and not
|
|
1677
|
+
writable by your group or others.
|
|
1678
|
+
|
|
1679
|
+
Only the exact initialized MCP client names `codex` and `claude-code`, or their
|
|
1680
|
+
installer markers, identify the Codex and Claude Code families. Cursor, GitHub
|
|
1681
|
+
Copilot, and unlisted clients remain neutral. Automatic Codex requests prefer
|
|
1682
|
+
eligible Anthropic then Gemini; Claude Code requests prefer eligible OpenAI
|
|
1683
|
+
then Gemini. Explicit per-call choices override this personal order but must
|
|
1684
|
+
still pass model support, project restrictions, and feature entitlement. A
|
|
1685
|
+
populated project Allowed Providers list can reduce an automatic request or
|
|
1686
|
+
refuse an incompatible explicit request.
|
|
1687
|
+
|
|
1558
1688
|
## Reference
|
|
1559
1689
|
|
|
1560
1690
|
The full surface, for when you need the complete enumeration. Day-to-day, use [Usage Documentation](#usage-documentation) instead — you don't call MCP tools directly; you ask your AI assistant to perform a task, or compose tools into a pipeline.
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
// AUTO-GENERATED — do not edit manually. Regenerate with: npm run build
|
|
2
2
|
// This file is produced by scripts/bundle-agent-guidance.js from mcp_server/agent-guidance.md
|
|
3
|
-
export const AGENT_GUIDANCE = "### Get Project Standards (`get_project_standards`)\n\n**When to use it:** (Implementation | Refinement) Before writing or reviewing code, so the agent applies this project's recorded coding standards instead of generic defaults.\n\n**How to use it:** Call the `get_project_standards` MCP tool directly — it takes no required input and returns the project's recorded standards text.\n\n### Second Opinion (`second_opinion`)\n\n**When to use it:** (Architecture | Refinement | Implementation) Any time you want a quick sanity check on a plan, draft, or decision from a fresh perspective.\n\n**How to use it:** Ask your agent — \"Get a second opinion from Gemini on whether the BAPI-123 plan's migration step is safe to run against production.\"\n\n### Council (`request_council`)\n\n**When to use it:** (Architecture | Refinement) Early, when you want a spread of approaches — technical for how to build it, design for how it should look, discovery for what still needs figuring out before a real ticket exists, general for a quick brief-driven pass before the repository is indexed.\n\n**How to use it:** `/council <question>`\n\n### Review Ticket (`request_ticket_review`)\n\n**When to use it:** (Refinement) Right after a ticket is drafted, before anyone starts building — to surface gaps and tighten it.\n\n**How to use it:** `/review-tickets BAPI-123` (command only — \"review\" as free text is easily mistaken for a freehand agent review). A single key reviews inline in the current session — no terminal tab, no worktree. For several tickets at once, `/review-tickets BAPI-123 BAPI-456` opens one terminal tab per ticket and reviews them in parallel with no worktrees; every review flag applies, and `--review KEY=auto,rounds=N` sets per-ticket overrides.";
|
|
3
|
+
export const AGENT_GUIDANCE = "### Get Project Standards (`get_project_standards`)\n\n**When to use it:** (Implementation | Refinement) Before writing or reviewing code, so the agent applies this project's recorded coding standards instead of generic defaults.\n\n**How to use it:** Call the `get_project_standards` MCP tool directly — it takes no required input and returns the project's recorded standards text.\n\n### Second Opinion (`second_opinion`)\n\n**When to use it:** (Architecture | Refinement | Implementation) Any time you want a quick sanity check on a plan, draft, or decision from a fresh perspective.\n\n**How to use it:** Ask your agent — \"Get a second opinion from Gemini on whether the BAPI-123 plan's migration step is safe to run against production.\"\n\n### AI Council (`request_council`)\n\n**When to use it:** (Architecture | Refinement) Early, when you want a spread of approaches — technical for how to build it, design for how it should look, discovery for what still needs figuring out before a real ticket exists, general for a quick brief-driven pass before the repository is indexed.\n\n**How to use it:** `/ai-council <question>`\n\n### Review Ticket (`request_ticket_review`)\n\n**When to use it:** (Refinement) Right after a ticket is drafted, before anyone starts building — to surface gaps and tighten it.\n\n**How to use it:** `/review-tickets BAPI-123` (command only — \"review\" as free text is easily mistaken for a freehand agent review). A single key reviews inline in the current session — no terminal tab, no worktree. For several tickets at once, `/review-tickets BAPI-123 BAPI-456` opens one terminal tab per ticket and reviews them in parallel with no worktrees; every review flag applies, and `--review KEY=auto,rounds=N` sets per-ticket overrides.";
|
package/build/agent-notes.js
CHANGED
|
@@ -33,6 +33,7 @@ const AGENTS_MD_PLATFORMS = new Set([
|
|
|
33
33
|
export function resolveAgentNotesTargets(selectedPlatforms) {
|
|
34
34
|
const targets = new Set();
|
|
35
35
|
const unsupported = new Set();
|
|
36
|
+
const supported = new Set();
|
|
36
37
|
for (const platform of selectedPlatforms) {
|
|
37
38
|
if (platform === "windsurf") {
|
|
38
39
|
unsupported.add(platform);
|
|
@@ -40,6 +41,7 @@ export function resolveAgentNotesTargets(selectedPlatforms) {
|
|
|
40
41
|
}
|
|
41
42
|
if (AGENTS_MD_PLATFORMS.has(platform)) {
|
|
42
43
|
targets.add("AGENTS.md");
|
|
44
|
+
supported.add(platform);
|
|
43
45
|
}
|
|
44
46
|
// Claude Code additionally gets a CLAUDE.md pointer — never a substitute
|
|
45
47
|
// for AGENTS.md, since @AGENTS.md would otherwise dangle.
|
|
@@ -52,7 +54,11 @@ export function resolveAgentNotesTargets(selectedPlatforms) {
|
|
|
52
54
|
ordered.push("AGENTS.md");
|
|
53
55
|
if (targets.has("CLAUDE.md"))
|
|
54
56
|
ordered.push("CLAUDE.md");
|
|
55
|
-
return {
|
|
57
|
+
return {
|
|
58
|
+
targets: ordered,
|
|
59
|
+
unsupportedPlatforms: [...unsupported],
|
|
60
|
+
supportedPlatforms: [...supported],
|
|
61
|
+
};
|
|
56
62
|
}
|
|
57
63
|
/** The one-line pointer note CLAUDE.md's owned region carries (BAPI-1207). */
|
|
58
64
|
const CLAUDE_NOTES_POINTER_NOTE = "Bridge MCP usage guidance is maintained in AGENTS.md — see the section above.";
|