@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.
Files changed (103) hide show
  1. package/README.md +116 -56
  2. package/build/agent-guidance.generated.js +3 -0
  3. package/build/agent-launchers/claude-executor-adapter.js +3 -0
  4. package/build/agent-launchers/claude.js +3 -3
  5. package/build/agent-launchers/prompt.js +8 -11
  6. package/build/agent-notes.js +178 -0
  7. package/build/agent-registry.js +5 -2
  8. package/build/agent-utils.js +58 -0
  9. package/build/agents.generated.js +1 -1
  10. package/build/base-ref.js +33 -9
  11. package/build/bounded-wait.js +174 -0
  12. package/build/codex-skill-adapter.js +55 -0
  13. package/build/commands.generated.js +6 -5
  14. package/build/conductor/bridge-api-client.js +235 -14
  15. package/build/conductor/bring-up-facts.js +187 -0
  16. package/build/conductor/claude-hook.js +7 -5
  17. package/build/conductor/cli.js +28 -0
  18. package/build/conductor/doctor.js +80 -9
  19. package/build/conductor/epic-implementer-cli.js +1298 -0
  20. package/build/conductor/epic-runtime.js +134 -98
  21. package/build/conductor/errors.js +2 -2
  22. package/build/conductor/git-ci-types.js +1 -1
  23. package/build/conductor/git-hooks.js +28 -14
  24. package/build/conductor/install-doctor.js +11 -5
  25. package/build/conductor/readiness-cli.js +10 -10
  26. package/build/conductor/readiness-sections.js +58 -9
  27. package/build/conductor/readiness.js +120 -4
  28. package/build/conductor/recovery-cli.js +289 -10
  29. package/build/conductor/recovery-operations.js +125 -2
  30. package/build/conductor/repair-contract.js +58 -0
  31. package/build/conductor/run-branch.js +137 -0
  32. package/build/conductor/store.js +2 -2
  33. package/build/conductor/supervisor-runtime.js +1 -1
  34. package/build/conductor/test-run-branch-vectors.js +165 -0
  35. package/build/conductor-bin.js +2 -139
  36. package/build/conductor-claude-hook-bin.js +2 -2
  37. package/build/conductor-claude-hook-removed-stub-bin.js +31 -0
  38. package/build/conductor-removed-stub-bin.js +30 -0
  39. package/build/docs.generated.js +1 -1
  40. package/build/doctor.js +145 -18
  41. package/build/drive-epic.js +752 -90
  42. package/build/epic-implementer-bin.js +145 -0
  43. package/build/epic-implementer-bundle-cli.js +264 -0
  44. package/build/epic-implementer-claude-hook-bin.js +3 -0
  45. package/build/epic-integration-pr.js +5 -3
  46. package/build/executor/claim-scope.js +104 -0
  47. package/build/executor/cli.js +14 -25
  48. package/build/executor/env-file-guard.js +82 -3
  49. package/build/executor/env.js +6 -0
  50. package/build/executor/interrupted-worktree.js +60 -0
  51. package/build/executor/job-errors.js +45 -0
  52. package/build/executor/job-runner.js +334 -9
  53. package/build/executor/job-types.js +25 -9
  54. package/build/executor/merge-tree-classifier.js +171 -0
  55. package/build/executor/reconcile-overlap-governance.js +129 -0
  56. package/build/executor/reconcile-overlap-job.js +989 -0
  57. package/build/executor/reconcile-overlap-types.js +14 -0
  58. package/build/executor/spawn-job-driver.js +1 -0
  59. package/build/executor/types.js +2 -0
  60. package/build/executor/worker-finalization.js +25 -2
  61. package/build/executor/worker-guard-hook.js +15 -7
  62. package/build/implement-epic/bridge-client.js +773 -0
  63. package/build/implement-epic/checkpoint-store.js +542 -0
  64. package/build/implement-epic/cli.js +3158 -0
  65. package/build/implement-epic/cut-protocol.js +392 -0
  66. package/build/implement-epic/lock.js +302 -0
  67. package/build/implement-epic/pr-state.js +286 -0
  68. package/build/implement-epic/spawn.js +113 -0
  69. package/build/index.js +657 -481
  70. package/build/init.js +72 -8
  71. package/build/install-bridge-conductor.js +5 -5
  72. package/build/install-bridge.js +403 -70
  73. package/build/local-artifact-storage.js +130 -0
  74. package/build/mcp-host-config.js +22 -60
  75. package/build/mcp-host-entry-adapter.js +18 -0
  76. package/build/mcp-host-targets.js +1 -21
  77. package/build/merge-pull-request.js +1 -1
  78. package/build/pipelines.generated.js +23 -16
  79. package/build/plan-epic-conductor-eligibility.js +1 -1
  80. package/build/plane/cli.js +321 -41
  81. package/build/plane/manifest.js +209 -1
  82. package/build/plane/member-roster.js +70 -0
  83. package/build/plane/preflight.js +128 -12
  84. package/build/plane/shutdown.js +18 -5
  85. package/build/plane/status.js +35 -1
  86. package/build/plane/supervisor.js +546 -164
  87. package/build/plane/types.js +25 -2
  88. package/build/polling-policy.js +72 -0
  89. package/build/readiness-check.js +3 -3
  90. package/build/readme.generated.js +1 -1
  91. package/build/review-generation.js +219 -0
  92. package/build/run-unit-tests-launcher.js +6 -1
  93. package/build/setup-epic.js +567 -38
  94. package/build/start-tickets-conductor.js +8 -7
  95. package/build/ticket-key-utils.js +4 -3
  96. package/build/ticket-review-artifact-gate.js +461 -0
  97. package/build/upgrade-cli.js +5 -26
  98. package/build/version.generated.js +3 -3
  99. package/build/worker-guard-hook-bin.js +1 -1
  100. package/docs/CONDUCTOR.md +8 -6
  101. package/docs/install/mcp-tool-integrations.md +23 -1
  102. package/package.json +5 -3
  103. package/pipelines/review-ticket.json +17 -4
@@ -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 = 2;
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;
@@ -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}), `conductor doctor`
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 `conductor readiness`; if it persists, run `conductor doctor` and `install conductor` to re-collect this locus.";
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 `conductor readiness`; this prerequisite's own fix text could not be carried into this report safely.";
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.