@bridge_gpt/mcp-server 0.2.58 → 0.2.60
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 +231 -113
- package/build/agent-guidance.generated.js +1 -1
- package/build/agent-notes.js +7 -1
- package/build/agent-registry.js +15 -0
- package/build/agent-utils.js +16 -8
- package/build/claude-user-config-doctor.js +1 -35
- package/build/codex-bridge-profile.js +1 -1
- package/build/commands.generated.js +7 -8
- package/build/conductor/bridge-api-client.js +202 -2
- package/build/conductor/bring-up-facts.js +1 -1
- package/build/conductor/claude-hook.js +16 -16
- package/build/conductor/doctor.js +279 -72
- package/build/conductor/epic-implementer-cli.js +38 -5
- package/build/conductor/epic-reconcile.js +1 -1
- package/build/conductor/epic-runtime.js +21 -12
- package/build/conductor/errors.js +3 -3
- package/build/conductor/file-scope-guard.js +4 -4
- package/build/conductor/git-ci-types.js +1 -1
- package/build/conductor/git-inspection.js +2 -2
- package/build/conductor/install-doctor.js +28 -6
- package/build/conductor/local-merge.js +319 -26
- package/build/conductor/merge-execution-contract.js +61 -0
- package/build/conductor/merge-execution-eligibility.js +129 -0
- package/build/conductor/merge-ledger.js +2 -2
- package/build/conductor/pr-ci-producer.js +6 -6
- package/build/conductor/pr-review-producer.js +2 -2
- package/build/conductor/producer-ledger.js +2 -0
- package/build/conductor/readiness-sections.js +166 -9
- package/build/conductor/readiness.js +97 -16
- package/build/conductor/recovery-cli.js +243 -12
- package/build/conductor/recovery-operations.js +64 -6
- package/build/conductor/repair-contract.js +38 -4
- package/build/conductor/spec-review-producer.js +6 -6
- package/build/conductor/store.js +10 -10
- package/build/conductor/supervisor-config.js +14 -14
- package/build/conductor/supervisor-ledger.js +2 -2
- package/build/conductor/supervisor-message-relay.js +2 -2
- package/build/conductor/worker-ledger-cli.js +19 -19
- package/build/conductor-bundle-artifacts.js +2 -2
- package/build/connect-bitbucket-api.js +6 -1
- package/build/connect-bitbucket.js +398 -88
- package/build/credential-store.js +16 -0
- package/build/docs.generated.js +2 -2
- package/build/doctor.js +199 -303
- package/build/drive-epic.js +88 -71
- package/build/epic-implementer-bin.js +22 -17
- package/build/epic-implementer-claude-hook-bin.js +4 -2
- package/build/epic-implementer-env.js +184 -0
- package/build/epic-integration-pr.js +2 -2
- package/build/executor/ci-rerun-job.js +269 -0
- package/build/executor/cli.js +31 -0
- package/build/executor/credentials.js +11 -0
- package/build/executor/env.js +79 -8
- package/build/executor/heartbeat.js +1 -1
- package/build/executor/index.js +21 -4
- package/build/executor/job-errors.js +3 -3
- package/build/executor/job-runner.js +127 -1
- package/build/executor/job-types.js +12 -2
- package/build/executor/merge-job.js +46 -5
- package/build/executor/observation.js +1 -1
- package/build/executor/preflight.js +1 -1
- package/build/executor/prompt-spec.js +1 -1
- package/build/executor/reconcile-overlap-job.js +10 -130
- package/build/executor/reconcile-overlap-types.js +1 -1
- package/build/executor/runner.js +1 -1
- package/build/executor/service-lifecycle.js +136 -0
- package/build/executor/service-unit.js +427 -9
- package/build/executor/types.js +5 -0
- package/build/index.js +320 -342
- package/build/init.js +20 -28
- package/build/install-bridge-conductor.js +208 -15
- package/build/install-bridge.js +555 -37
- package/build/mcp-host-entry-adapter.js +6 -0
- package/build/mcp-host-targets.js +2 -0
- package/build/mcp-install-state.js +42 -4
- package/build/mcp-invoke.js +5 -5
- package/build/mcp-profile.js +2 -2
- package/build/mcp-provisioning.js +2 -2
- package/build/mcp-server-invocation.js +3 -3
- package/build/merge-pull-request.js +118 -10
- package/build/merge-workflow-codeowners.js +224 -0
- package/build/merge-workflow-config.js +133 -0
- package/build/merge-workflow-drift.js +66 -0
- package/build/merge-workflow-install.js +638 -0
- package/build/merge-workflow.js +572 -0
- package/build/model-routing-host.js +25 -0
- package/build/model-routing-preferences.js +99 -0
- package/build/pipelines.generated.js +10 -10
- package/build/{plan-epic-conductor-eligibility.js → plan-epic-implementer-eligibility.js} +18 -16
- package/build/plan-execution-ledger.js +8 -0
- package/build/plane/cli.js +24 -2
- package/build/plane/member-roster.js +5 -5
- package/build/plane/preflight.js +68 -0
- package/build/plane/supervisor.js +1 -1
- package/build/plane/types.js +5 -5
- package/build/readiness-check.js +1 -1
- package/build/readme.generated.js +1 -1
- package/build/review-tickets.js +4 -4
- package/build/run-unit-tests-launcher.js +5 -0
- package/build/setup-epic.js +171 -17
- package/build/start-tickets-conductor.js +32 -32
- package/build/start-tickets-prereqs.js +4 -9
- package/build/start-tickets.js +475 -91
- package/build/version.generated.js +3 -3
- package/docs/CONDUCTOR.md +69 -18
- package/docs/install/mcp-tool-integrations.md +2 -1
- package/package.json +4 -4
- package/pipelines/implement-ticket.json +1 -1
- package/pipelines/plan-epic.json +2 -2
- 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/checkpoint-store.js +0 -542
- package/build/implement-epic/cli.js +0 -3158
- 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/{implement-epic → epic-shared}/bridge-client.js +0 -0
- /package/build/{implement-epic → epic-shared}/cut-protocol.js +0 -0
package/build/agent-utils.js
CHANGED
|
@@ -115,10 +115,18 @@ export function translateAgentToCopilot(frontmatter, body) {
|
|
|
115
115
|
* command catalog.
|
|
116
116
|
*/
|
|
117
117
|
function commandDescription(source, commandName) {
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
const lines = source.split(/\r?\n/).map((candidate) => candidate.trim());
|
|
119
|
+
// Some commands open with host-parsed YAML frontmatter; its delimiters and
|
|
120
|
+
// keys are metadata, not a summary, so drop the block before scanning.
|
|
121
|
+
if (lines[0] === "---") {
|
|
122
|
+
const close = lines.indexOf("---", 1);
|
|
123
|
+
if (close > 0)
|
|
124
|
+
lines.splice(0, close + 1);
|
|
125
|
+
}
|
|
126
|
+
const line = lines.find((candidate) => candidate.length > 0 &&
|
|
127
|
+
candidate !== "$ARGUMENTS" &&
|
|
128
|
+
!candidate.startsWith("#") &&
|
|
129
|
+
!/^[-*_\s]+$/.test(candidate));
|
|
122
130
|
return line ?? `Run the Bridge ${commandName} workflow.`;
|
|
123
131
|
}
|
|
124
132
|
function commandBodyForPrompt(source) {
|
|
@@ -136,17 +144,17 @@ function commandBodyForSkill(source) {
|
|
|
136
144
|
export function translateCommandToCopilot(filename, source) {
|
|
137
145
|
const commandName = filename.replace(/\.md$/, "");
|
|
138
146
|
const description = commandDescription(source, commandName);
|
|
147
|
+
// No `tools:` frontmatter: Bridge MCP tools reach Copilot through the
|
|
148
|
+
// generated `.vscode/mcp.json` registration, not a prompt-level restriction.
|
|
139
149
|
const prompt = [
|
|
140
150
|
"---",
|
|
141
151
|
`description: ${quoteYamlValue(description)}`,
|
|
142
152
|
"argument-hint: \"[task or ticket key]\"",
|
|
143
|
-
"tools:",
|
|
144
|
-
" - bridge/*",
|
|
145
153
|
"---",
|
|
146
154
|
"",
|
|
147
155
|
`# Bridge ${commandName} workflow`,
|
|
148
156
|
"",
|
|
149
|
-
"The
|
|
157
|
+
"The workflow input is `${input:task}`. When text is supplied after the slash command, that text takes precedence; if neither contains input, ask the user for the task before continuing. Follow the canonical workflow below.",
|
|
150
158
|
"",
|
|
151
159
|
commandBodyForPrompt(source),
|
|
152
160
|
].join("\n");
|
|
@@ -160,7 +168,7 @@ export function translateCommandToCopilot(filename, source) {
|
|
|
160
168
|
"",
|
|
161
169
|
`# Bridge ${commandName} workflow`,
|
|
162
170
|
"",
|
|
163
|
-
"Use the text supplied after this slash command as the workflow input. Follow the canonical workflow below.",
|
|
171
|
+
"Use the text supplied after this slash command as the workflow input; if no text was supplied, ask the user for the task before continuing. Follow the canonical workflow below.",
|
|
164
172
|
"",
|
|
165
173
|
commandBodyForSkill(source),
|
|
166
174
|
].join("\n");
|
|
@@ -52,21 +52,6 @@ const CLAUDE_USER_CONFIG_FILENAME = ".claude.json";
|
|
|
52
52
|
export function resolveClaudeUserConfigPath(homeDirectory, platform) {
|
|
53
53
|
return pathApiForProvisioningPlatform(platform).join(homeDirectory, CLAUDE_USER_CONFIG_FILENAME);
|
|
54
54
|
}
|
|
55
|
-
/**
|
|
56
|
-
* RETIRED (BAPI-790) — this override is now behaviorally inert.
|
|
57
|
-
*
|
|
58
|
-
* It used to downgrade a confirmed shadowing collision from a refusal to a loud
|
|
59
|
-
* warning. There is no refusal left to downgrade: strict flag-scoped MCP loading
|
|
60
|
-
* means an operator registration cannot shadow a worker, so the finding is always
|
|
61
|
-
* advisory and setting this variable changes nothing.
|
|
62
|
-
*
|
|
63
|
-
* The constant is kept exported, and {@link isClaudeMcpShadowingOverrideEnabled}
|
|
64
|
-
* with it, so an operator who still has it set in a service unit or shell profile
|
|
65
|
-
* gets no error — and so the name stays greppable to whoever wonders why it stopped
|
|
66
|
-
* mattering. Nothing in the policy consults it. Do not reintroduce a branch on it
|
|
67
|
-
* without re-establishing that shadowing can affect a worker again.
|
|
68
|
-
*/
|
|
69
|
-
export const CONDUCTOR_ALLOW_CLAUDE_MCP_SHADOWING_ENV = "BAPI_CONDUCTOR_ALLOW_CLAUDE_MCP_SHADOWING";
|
|
70
55
|
/** A plain, non-array object. */
|
|
71
56
|
function asRecord(value) {
|
|
72
57
|
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
@@ -262,27 +247,8 @@ export async function inspectClaudeUserConfigForMcpShadowing(input, deps) {
|
|
|
262
247
|
return { findings, diagnostics };
|
|
263
248
|
}
|
|
264
249
|
// ---------------------------------------------------------------------------
|
|
265
|
-
//
|
|
250
|
+
// Shared policy
|
|
266
251
|
// ---------------------------------------------------------------------------
|
|
267
|
-
/** Documented truthy override values (trimmed, case-insensitive). */
|
|
268
|
-
const OVERRIDE_TRUTHY = new Set(["1", "true", "yes", "on"]);
|
|
269
|
-
/**
|
|
270
|
-
* True only for a trimmed, case-insensitive `1`, `true`, `yes`, or `on`. Absent,
|
|
271
|
-
* blank, `0`, `false`, `no`, `off`, and anything else are disabled.
|
|
272
|
-
*
|
|
273
|
-
* RETIRED (BAPI-790): no policy branches on this any more — see
|
|
274
|
-
* {@link CONDUCTOR_ALLOW_CLAUDE_MCP_SHADOWING_ENV}. Retained as a pure predicate
|
|
275
|
-
* so the parsing rule stays documented and testable rather than being deleted and
|
|
276
|
-
* re-guessed if the override is ever revived.
|
|
277
|
-
*/
|
|
278
|
-
export function isClaudeMcpShadowingOverrideEnabled(env) {
|
|
279
|
-
const raw = env?.[CONDUCTOR_ALLOW_CLAUDE_MCP_SHADOWING_ENV];
|
|
280
|
-
if (typeof raw !== "string")
|
|
281
|
-
return false;
|
|
282
|
-
return OVERRIDE_TRUTHY.has(raw.trim().toLowerCase());
|
|
283
|
-
}
|
|
284
|
-
/** The exact wording every override path emits, pinned by tests. */
|
|
285
|
-
export const CLAUDE_MCP_SHADOWING_OVERRIDE_WARNING = `Proceeding anyway because ${CONDUCTOR_ALLOW_CLAUDE_MCP_SHADOWING_ENV} is set`;
|
|
286
252
|
/** Human-readable scope labels (fixed strings, never derived from the config). */
|
|
287
253
|
const SCOPE_LABELS = {
|
|
288
254
|
user: "user scope (mcpServers)",
|
|
@@ -13,7 +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
|
+
"attachment", "publish_reviewed_attachment",
|
|
17
17
|
"get_phase_context", "record_phase_result", "create_pull_request",
|
|
18
18
|
"update_jira_status", "config_field", "resolve_ci_checks", "poll_ci_checks",
|
|
19
19
|
"wait_for_ci_checks",
|