@bridge_gpt/mcp-server 0.2.53 → 0.2.55
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 +116 -56
- package/build/agent-guidance.generated.js +3 -0
- package/build/agent-launchers/claude-executor-adapter.js +3 -0
- package/build/agent-launchers/claude.js +3 -3
- package/build/agent-launchers/prompt.js +8 -11
- package/build/agent-notes.js +178 -0
- package/build/agent-registry.js +5 -2
- package/build/agent-utils.js +58 -0
- package/build/agents.generated.js +1 -1
- package/build/base-ref.js +33 -9
- package/build/bounded-wait.js +174 -0
- package/build/codex-skill-adapter.js +55 -0
- package/build/commands.generated.js +6 -5
- package/build/conductor/bridge-api-client.js +235 -14
- package/build/conductor/bring-up-facts.js +187 -0
- package/build/conductor/claude-hook.js +7 -5
- package/build/conductor/cli.js +28 -0
- package/build/conductor/doctor.js +80 -9
- package/build/conductor/epic-implementer-cli.js +1298 -0
- package/build/conductor/epic-runtime.js +134 -98
- package/build/conductor/errors.js +2 -2
- package/build/conductor/git-ci-types.js +1 -1
- package/build/conductor/git-hooks.js +28 -14
- package/build/conductor/install-doctor.js +11 -5
- package/build/conductor/readiness-cli.js +10 -10
- package/build/conductor/readiness-sections.js +58 -9
- package/build/conductor/readiness.js +120 -4
- package/build/conductor/recovery-cli.js +289 -10
- package/build/conductor/recovery-operations.js +125 -2
- package/build/conductor/repair-contract.js +58 -0
- package/build/conductor/run-branch.js +137 -0
- package/build/conductor/store.js +2 -2
- package/build/conductor/supervisor-runtime.js +1 -1
- package/build/conductor/test-run-branch-vectors.js +165 -0
- package/build/conductor-bin.js +2 -139
- package/build/conductor-claude-hook-bin.js +2 -2
- package/build/conductor-claude-hook-removed-stub-bin.js +31 -0
- package/build/conductor-removed-stub-bin.js +30 -0
- package/build/docs.generated.js +1 -1
- package/build/doctor.js +145 -18
- package/build/drive-epic.js +752 -90
- package/build/epic-implementer-bin.js +145 -0
- package/build/epic-implementer-bundle-cli.js +264 -0
- package/build/epic-implementer-claude-hook-bin.js +3 -0
- package/build/epic-integration-pr.js +5 -3
- package/build/executor/claim-scope.js +104 -0
- package/build/executor/cli.js +14 -25
- package/build/executor/env-file-guard.js +82 -3
- package/build/executor/env.js +6 -0
- package/build/executor/interrupted-worktree.js +60 -0
- package/build/executor/job-errors.js +45 -0
- package/build/executor/job-runner.js +334 -9
- package/build/executor/job-types.js +25 -9
- package/build/executor/merge-tree-classifier.js +171 -0
- package/build/executor/reconcile-overlap-governance.js +129 -0
- package/build/executor/reconcile-overlap-job.js +989 -0
- package/build/executor/reconcile-overlap-types.js +14 -0
- package/build/executor/spawn-job-driver.js +1 -0
- package/build/executor/types.js +2 -0
- package/build/executor/worker-finalization.js +25 -2
- package/build/executor/worker-guard-hook.js +15 -7
- package/build/implement-epic/bridge-client.js +773 -0
- package/build/implement-epic/checkpoint-store.js +542 -0
- package/build/implement-epic/cli.js +3158 -0
- package/build/implement-epic/cut-protocol.js +392 -0
- package/build/implement-epic/lock.js +302 -0
- package/build/implement-epic/pr-state.js +286 -0
- package/build/implement-epic/spawn.js +113 -0
- package/build/index.js +657 -481
- package/build/init.js +72 -8
- package/build/install-bridge-conductor.js +5 -5
- package/build/install-bridge.js +403 -70
- package/build/local-artifact-storage.js +130 -0
- package/build/mcp-host-config.js +22 -60
- package/build/mcp-host-entry-adapter.js +18 -0
- package/build/mcp-host-targets.js +1 -21
- package/build/merge-pull-request.js +1 -1
- package/build/pipelines.generated.js +23 -16
- package/build/plan-epic-conductor-eligibility.js +1 -1
- package/build/plane/cli.js +321 -41
- package/build/plane/manifest.js +209 -1
- package/build/plane/member-roster.js +70 -0
- package/build/plane/preflight.js +128 -12
- package/build/plane/shutdown.js +18 -5
- package/build/plane/status.js +35 -1
- package/build/plane/supervisor.js +546 -164
- package/build/plane/types.js +25 -2
- package/build/polling-policy.js +72 -0
- package/build/readiness-check.js +3 -3
- package/build/readme.generated.js +1 -1
- package/build/review-generation.js +219 -0
- package/build/run-unit-tests-launcher.js +6 -1
- package/build/setup-epic.js +567 -38
- package/build/start-tickets-conductor.js +8 -7
- package/build/ticket-key-utils.js +4 -3
- package/build/ticket-review-artifact-gate.js +461 -0
- package/build/upgrade-cli.js +5 -26
- package/build/version.generated.js +3 -3
- package/build/worker-guard-hook-bin.js +1 -1
- package/docs/CONDUCTOR.md +8 -6
- package/docs/install/mcp-tool-integrations.md +23 -1
- package/package.json +5 -3
- package/pipelines/review-ticket.json +17 -4
package/build/plane/types.js
CHANGED
|
@@ -43,8 +43,17 @@
|
|
|
43
43
|
* but it makes the failure legible ("schema version is not supported" instead
|
|
44
44
|
* of what reads like a corrupt file), and it pairs with the member-scoped
|
|
45
45
|
* rejection in `manifest.ts` so the next member added never reproduces it.
|
|
46
|
+
*
|
|
47
|
+
* Bumped to 3 by BAPI-1102, which added the two-phase `lifecycle` field and the
|
|
48
|
+
* `laneScope` a phase-two request carries. Same reasoning, now for the RECORD
|
|
49
|
+
* shape rather than the member set: `parsePlaneManifest` rejects an unsupported
|
|
50
|
+
* top-level key outright, so a v3 manifest read by a v2 binary would be rejected
|
|
51
|
+
* as "unsupported field 'lifecycle'" — a message about a field, for what is
|
|
52
|
+
* really a version gap. Reading v1 and v2 stays supported and a manifest without
|
|
53
|
+
* `lifecycle` is interpreted as a fully-up single-phase plane, which is exactly
|
|
54
|
+
* what an older build wrote.
|
|
46
55
|
*/
|
|
47
|
-
export const PLANE_MANIFEST_SCHEMA_VERSION =
|
|
56
|
+
export const PLANE_MANIFEST_SCHEMA_VERSION = 3;
|
|
48
57
|
/**
|
|
49
58
|
* Every schema version this build can READ.
|
|
50
59
|
*
|
|
@@ -54,7 +63,7 @@ export const PLANE_MANIFEST_SCHEMA_VERSION = 2;
|
|
|
54
63
|
* legible, inflicted from the other side. Accepting 1 costs nothing: the two
|
|
55
64
|
* versions differ only in whether `observer` may appear among the members.
|
|
56
65
|
*/
|
|
57
|
-
export const PLANE_MANIFEST_SUPPORTED_SCHEMA_VERSIONS = [1, 2];
|
|
66
|
+
export const PLANE_MANIFEST_SUPPORTED_SCHEMA_VERSIONS = [1, 2, 3];
|
|
58
67
|
/** Runtime artifact directory, relative to the repository root. */
|
|
59
68
|
export const PLANE_RUNTIME_DIR = ".bridge/plane";
|
|
60
69
|
/** Manifest filename inside {@link PLANE_RUNTIME_DIR}. */
|
|
@@ -200,3 +209,17 @@ export const PLANE_HEARTBEAT_HEALTH_STATES = [
|
|
|
200
209
|
"never_seen",
|
|
201
210
|
"unknown",
|
|
202
211
|
];
|
|
212
|
+
/**
|
|
213
|
+
* Every lifecycle phase, in occurrence order, with the one terminal failure
|
|
214
|
+
* phase last. Order carries no meaning to the transition guard — which is
|
|
215
|
+
* expected/next, never "forward only" — so `lanes-failed` sitting after `ready`
|
|
216
|
+
* says it is not part of the progression, not that it follows readiness.
|
|
217
|
+
*/
|
|
218
|
+
export const PLANE_LIFECYCLE_PHASES = [
|
|
219
|
+
"control-plane-starting",
|
|
220
|
+
"control-plane-ready",
|
|
221
|
+
"lanes-starting",
|
|
222
|
+
"lanes-ready",
|
|
223
|
+
"ready",
|
|
224
|
+
"lanes-failed",
|
|
225
|
+
];
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ONE polling policy shared by every wait in this process (BAPI-1104, R77).
|
|
3
|
+
*
|
|
4
|
+
* `pollForResult` in `index.ts` has carried these numbers since BAPI-659, and the
|
|
5
|
+
* bounded-wait primitive added by this ticket needs the same tolerance for the
|
|
6
|
+
* same reasons. Two independent copies would drift the moment either is tuned,
|
|
7
|
+
* and the drift would be invisible: one wait would give up on a transient outage
|
|
8
|
+
* the other rode out, and nothing would report the disagreement. So the values
|
|
9
|
+
* live here once and both callers import them.
|
|
10
|
+
*
|
|
11
|
+
* Nothing in this module holds mutable state. A policy that could be reconfigured
|
|
12
|
+
* at runtime is a policy two callers can observe differently, which is precisely
|
|
13
|
+
* the property this extraction exists to remove.
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Bound on CONSECUTIVE transport (fetch/header) failures before a poll loop
|
|
17
|
+
* gives up recoverably. Independent of the deadline and of the polling
|
|
18
|
+
* intervals — a single resolved response resets the counter to zero.
|
|
19
|
+
*
|
|
20
|
+
* Moved here verbatim from `index.ts` (BAPI-659). The value is unchanged.
|
|
21
|
+
*/
|
|
22
|
+
export const MAX_CONSECUTIVE_POLL_FAILURES = 3;
|
|
23
|
+
/**
|
|
24
|
+
* The default first-poll delay used when a caller supplies no schedule.
|
|
25
|
+
*
|
|
26
|
+
* `pollForResult` waits before its FIRST request, not after it — an artifact is
|
|
27
|
+
* never ready the instant a generation is submitted, and an immediate probe only
|
|
28
|
+
* spends a request to learn that.
|
|
29
|
+
*/
|
|
30
|
+
export const DEFAULT_INITIAL_POLL_DELAY_MS = 15_000;
|
|
31
|
+
/**
|
|
32
|
+
* The steady-state delay `pollForResult` backs off to once a poll has been
|
|
33
|
+
* running for longer than {@link POLL_BACKOFF_AFTER_MS}.
|
|
34
|
+
*/
|
|
35
|
+
export const DEFAULT_STEADY_POLL_DELAY_MS = 30_000;
|
|
36
|
+
/**
|
|
37
|
+
* Elapsed time after which the default (schedule-free) cadence backs off from
|
|
38
|
+
* {@link DEFAULT_INITIAL_POLL_DELAY_MS} to {@link DEFAULT_STEADY_POLL_DELAY_MS}.
|
|
39
|
+
*/
|
|
40
|
+
export const POLL_BACKOFF_AFTER_MS = 60_000;
|
|
41
|
+
/**
|
|
42
|
+
* The delay before the next poll under the DEFAULT (schedule-free) cadence.
|
|
43
|
+
*
|
|
44
|
+
* This is the exact rule `pollForResult` applied inline before this module
|
|
45
|
+
* existed: 15s until a minute has elapsed, 30s thereafter. Expressed as a pure
|
|
46
|
+
* function of elapsed time so the bounded-wait primitive can apply the identical
|
|
47
|
+
* curve without re-deriving it, and so a test can assert the curve directly.
|
|
48
|
+
*/
|
|
49
|
+
export function defaultPollDelayMs(elapsedMs) {
|
|
50
|
+
return elapsedMs > POLL_BACKOFF_AFTER_MS
|
|
51
|
+
? DEFAULT_STEADY_POLL_DELAY_MS
|
|
52
|
+
: DEFAULT_INITIAL_POLL_DELAY_MS;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Ceiling on a SINGLE probe request, before it is treated as a transport failure.
|
|
56
|
+
*
|
|
57
|
+
* Deliberately far shorter than the 240-second bounded window (see
|
|
58
|
+
* `bounded-wait.ts`): a probe that hangs must not eat the whole window, because a
|
|
59
|
+
* window that produced no observation at all is indistinguishable to the caller
|
|
60
|
+
* from one that observed "still pending" — and the second is a fact while the
|
|
61
|
+
* first is a stall. Each call additionally clamps this to the time actually
|
|
62
|
+
* remaining, so the ceiling can never overshoot the deadline.
|
|
63
|
+
*/
|
|
64
|
+
export const MAX_PROBE_TIMEOUT_MS = 30_000;
|
|
65
|
+
/**
|
|
66
|
+
* Bounded jitter applied on top of the backoff delay, in milliseconds.
|
|
67
|
+
*
|
|
68
|
+
* Exists so several waiting workers do not synchronize onto the same probe
|
|
69
|
+
* instants after a shared upstream blip. Small relative to the delays above: the
|
|
70
|
+
* point is to break lockstep, not to reshape the cadence.
|
|
71
|
+
*/
|
|
72
|
+
export const MAX_POLL_JITTER_MS = 1_000;
|
package/build/readiness-check.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The canonical shared readiness-check contract (BAPI-1055, AC-6).
|
|
3
3
|
*
|
|
4
4
|
* Conductor prerequisite probing is spread across five loci — `bridge doctor`
|
|
5
|
-
* ({@link file:./install-doctor.ts}), `
|
|
5
|
+
* ({@link file:./install-doctor.ts}), `epic-implementer doctor`
|
|
6
6
|
* ({@link file:./conductor/doctor.ts}), `plane` preflight
|
|
7
7
|
* ({@link file:./plane/preflight.ts}), the server `conductor-readiness`
|
|
8
8
|
* collector, and the unified install doctor
|
|
@@ -277,7 +277,7 @@ export function createReadinessCheck(input) {
|
|
|
277
277
|
/** Fixed prose for a check that had to be replaced because it was malformed. */
|
|
278
278
|
export const READINESS_MALFORMED_CHECK_DETAIL = "this prerequisite reported a result that failed the readiness contract, so its real state is unknown";
|
|
279
279
|
/** Fixed remediation for a replaced malformed check. */
|
|
280
|
-
export const READINESS_MALFORMED_CHECK_REMEDIATION = "re-run `
|
|
280
|
+
export const READINESS_MALFORMED_CHECK_REMEDIATION = "re-run `epic-implementer readiness`; if it persists, run `epic-implementer doctor` and `install conductor` to re-collect this locus.";
|
|
281
281
|
/** Fixed label for a replaced malformed check. */
|
|
282
282
|
export const READINESS_MALFORMED_CHECK_LABEL = "Unreadable prerequisite";
|
|
283
283
|
/**
|
|
@@ -330,7 +330,7 @@ export function summarizeReadinessChecks(checks) {
|
|
|
330
330
|
/** Fixed stand-in for a source detail that failed the secret-safety contract. */
|
|
331
331
|
export const READINESS_UNSAFE_DETAIL_REPLACEMENT = "detail withheld — the source reported it in a form this report may not carry";
|
|
332
332
|
/** Fixed stand-in for a source remediation that failed the secret-safety contract. */
|
|
333
|
-
export const READINESS_UNSAFE_REMEDIATION_REPLACEMENT = "re-run `
|
|
333
|
+
export const READINESS_UNSAFE_REMEDIATION_REPLACEMENT = "re-run `epic-implementer readiness`; this prerequisite's own fix text could not be carried into this report safely.";
|
|
334
334
|
/**
|
|
335
335
|
* Build a check, degrading REJECTED prose rather than losing the finding — and
|
|
336
336
|
* never throwing.
|