@bridge_gpt/mcp-server 0.2.67 → 0.2.68
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 +178 -15
- package/build/agent-launchers/claude-executor-adapter.js +27 -0
- package/build/agents.generated.js +22 -2
- package/build/bitbucket-workspace-remote.js +136 -0
- package/build/bootstrap-project-identity.js +24 -0
- package/build/bridge-permissions.js +829 -0
- package/build/claude-settings.js +18 -0
- package/build/cli-help.js +21 -0
- package/build/command-assets-doctor.js +24 -70
- package/build/command-provisioning.js +29 -5
- package/build/commands.generated.js +8 -8
- package/build/conductor/bridge-api-client.js +714 -0
- package/build/conductor/command-drift-production.js +92 -0
- package/build/conductor/command-drift.js +89 -0
- package/build/conductor/doctor.js +69 -26
- package/build/conductor/epic-branch-ci-inspection.js +1375 -0
- package/build/conductor/epic-implementer-cli.js +76 -22
- package/build/conductor/gate-discovery.js +890 -0
- package/build/conductor/install-doctor.js +15 -3
- package/build/conductor/json-output.js +63 -0
- package/build/conductor/readiness-cli.js +95 -10
- package/build/conductor/readiness-sections.js +369 -3
- package/build/conductor/readiness.js +211 -8
- package/build/conductor/recovery-cli.js +110 -4
- package/build/conductor/recovery-operations.js +99 -1
- package/build/connect-bitbucket-api.js +41 -6
- package/build/connect-bitbucket.js +106 -33
- package/build/credential-store.js +207 -47
- package/build/docs.generated.js +57 -3
- package/build/doctor.js +92 -1
- package/build/drive-epic.js +45 -8
- package/build/epic-coherence-input.test-fixtures.js +4 -3
- package/build/epic-implementer-bin.js +1374 -25
- package/build/epic-workarounds-path.js +39 -0
- package/build/executor/cli.js +30 -0
- package/build/executor/completion-contract.js +18 -5
- package/build/executor/deps.js +4 -1
- package/build/executor/gate-qualification-job.js +499 -0
- package/build/executor/guarded-fast-forward-push.js +129 -0
- package/build/executor/integration-job.js +122 -8
- package/build/executor/job-errors.js +8 -1
- package/build/executor/job-runner.js +589 -47
- package/build/executor/likely-tests.js +290 -0
- package/build/executor/live-worker-registry.js +1 -1
- package/build/executor/observation.js +31 -2
- package/build/executor/packaged-recipe.js +106 -0
- package/build/executor/permissions.js +115 -28
- package/build/executor/platform.js +1 -1
- package/build/executor/preflight.js +61 -12
- package/build/executor/process-containment.js +36 -12
- package/build/executor/process.js +15 -7
- package/build/executor/prompt-spec.js +33 -1
- package/build/executor/recently-failed-tests-file.js +71 -0
- package/build/executor/reconcile-overlap-job.js +41 -23
- package/build/executor/required-verification.js +1 -1
- package/build/executor/required-work-ledger.js +105 -17
- package/build/executor/retirement.js +69 -0
- package/build/executor/runner.js +114 -11
- package/build/executor/test-clock.js +15 -0
- package/build/executor/types.js +32 -0
- package/build/executor/viewer-tabs.js +58 -8
- package/build/executor/worker-command.js +23 -7
- package/build/executor/worker-diagnostics.js +37 -0
- package/build/executor/worker-finalization.js +31 -5
- package/build/executor/worker-guard-hook.js +179 -25
- package/build/executor/worker-log.js +4 -3
- package/build/executor/worker-verification-guidance.js +37 -0
- package/build/executor/worktree.js +88 -11
- package/build/first-build-advisory.js +97 -0
- package/build/generated-assets-advisory.js +14 -0
- package/build/generated-assets-catalog.js +66 -0
- package/build/generated-assets-context.js +46 -0
- package/build/generated-assets-dependencies.js +26 -0
- package/build/generated-assets-doctor.js +50 -0
- package/build/generated-assets-health.js +65 -0
- package/build/generated-assets-host.js +17 -0
- package/build/generated-assets-inventory.js +17 -0
- package/build/generated-assets-paths.js +60 -0
- package/build/generated-assets-publisher.js +133 -0
- package/build/generated-assets-remedy.js +25 -0
- package/build/generated-assets-repair.js +72 -0
- package/build/generated-assets-session.js +71 -0
- package/build/generated-assets-test-support.js +35 -0
- package/build/index.js +964 -768
- package/build/init.js +54 -177
- package/build/install-bridge-conductor-gate.js +1372 -0
- package/build/install-bridge-conductor.js +289 -36
- package/build/install-bridge.js +544 -37
- package/build/mcp-install-state.js +50 -4
- package/build/merge-workflow-install.js +3 -4
- package/build/pipeline-utils.js +6 -2
- package/build/pipelines.generated.js +22 -142
- package/build/plan-execution-ledger.js +2 -32
- package/build/plane/manifest.js +16 -1
- package/build/plane/preflight.js +54 -1
- package/build/printed-remedy-commands.js +16 -1
- package/build/readme.generated.js +1 -1
- package/build/repair-assets.js +93 -0
- package/build/run-unit-tests-launcher.js +130 -49
- package/build/secret-redaction.js +33 -0
- package/build/setup-epic.js +108 -3
- package/build/start-tickets-prereqs.js +70 -16
- package/build/start-tickets.js +29 -5
- package/build/tool-surface-gating.js +36 -0
- package/build/upgrade-cli.js +55 -1
- package/build/version.generated.js +3 -3
- package/build/worker-guard-hook-bin.js +3 -2
- package/build/worker-guard-hook-main.js +1 -1
- package/build/worktree-core.js +15 -2
- package/docs/EPIC-IMPLEMENTER-INSTALL.md +30 -12
- package/docs/EPIC-IMPLEMENTER.md +68 -2
- package/package.json +3 -3
- package/pipelines/greenfield-setup.json +4 -128
- package/pipelines/implement-ticket.json +3 -2
package/README.md
CHANGED
|
@@ -10,16 +10,35 @@ From your **project root**, run:
|
|
|
10
10
|
npx -y @bridge_gpt/mcp-server install
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
That
|
|
14
|
-
account — it will ask.
|
|
13
|
+
That command starts guided setup. It works whether or not you already have a Bridge
|
|
14
|
+
account — it will ask; follow the remaining onboarding instructions afterward.
|
|
15
|
+
|
|
16
|
+
### Already ran `npm i @bridge_gpt/mcp-server`?
|
|
17
|
+
|
|
18
|
+
> The package and its executable aliases are installed, but your intended project
|
|
19
|
+
> and MCP host still need setup. From your intended project root, run:
|
|
20
|
+
>
|
|
21
|
+
> ```bash
|
|
22
|
+
> npx -y @bridge_gpt/mcp-server install
|
|
23
|
+
> ```
|
|
24
|
+
>
|
|
25
|
+
> You do not need to uninstall the package first. [Continue with the step-by-step
|
|
26
|
+
> setup instructions](#installing-step-by-step) for sign-in, host selection,
|
|
27
|
+
> reload/trust, and agent handoff.
|
|
28
|
+
|
|
29
|
+
> Package installation is passive: Bridge cannot detect or notify someone who only
|
|
30
|
+
> installs the package and does nothing else. Successful lifecycle output is not a
|
|
31
|
+
> reliable default-install notification because `foreground-scripts` normally
|
|
32
|
+
> defaults to false, and `ignore-scripts` can disable hooks entirely.
|
|
15
33
|
|
|
16
34
|
> We recommend **the command above** instead of the `npm i @bridge_gpt/mcp-server`
|
|
17
35
|
> one in npm's sidebar, because it **will make set up much easier**.
|
|
18
36
|
|
|
19
37
|
**What it will do**
|
|
20
38
|
|
|
21
|
-
- **
|
|
22
|
-
use Bridge's tools and slash commands on
|
|
39
|
+
- **Starts guided Bridge MCP setup** — after completing the remaining onboarding
|
|
40
|
+
instructions, your editor's agent can use Bridge's tools and slash commands on
|
|
41
|
+
this project.
|
|
23
42
|
- Registers a `bridge` MCP server in your editor's MCP config, leaving any
|
|
24
43
|
other servers you have configured untouched.
|
|
25
44
|
- Creates and updates the files it needs inside your project root: slash commands
|
|
@@ -217,8 +236,8 @@ re-run the command from the right directory — if you already had a `.vscode/`,
|
|
|
217
236
|
(`npx -y @bridge_gpt/mcp-server`) with no subcommand, you started the MCP *server*,
|
|
218
237
|
not the installer. It is waiting for an editor to connect over stdio, which is
|
|
219
238
|
exactly what it should do when your editor launches it — but from a terminal it
|
|
220
|
-
looks like a hang. It prints a
|
|
221
|
-
`npx -y @bridge_gpt/mcp-server install` instead. The explicit spelling
|
|
239
|
+
looks like a hang. It prints a stderr guidance block explaining this. Press Ctrl-C
|
|
240
|
+
and run `npx -y @bridge_gpt/mcp-server install` instead. The explicit spelling
|
|
222
241
|
`npx -y @bridge_gpt/mcp-server serve` starts the server on purpose.
|
|
223
242
|
|
|
224
243
|
**"It can't reach Bridge" or "my key was rejected."** The installer checks
|
|
@@ -374,7 +393,7 @@ later boot.
|
|
|
374
393
|
"mcpServers": {
|
|
375
394
|
"bridge": {
|
|
376
395
|
"command": "npx",
|
|
377
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
396
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.68", "serve"],
|
|
378
397
|
"env": {
|
|
379
398
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
380
399
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -396,7 +415,7 @@ later boot.
|
|
|
396
415
|
"bridge": {
|
|
397
416
|
"type": "stdio",
|
|
398
417
|
"command": "npx",
|
|
399
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
418
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.68", "serve"],
|
|
400
419
|
"env": {
|
|
401
420
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
402
421
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -418,7 +437,7 @@ later boot.
|
|
|
418
437
|
"bridge": {
|
|
419
438
|
"type": "stdio",
|
|
420
439
|
"command": "npx",
|
|
421
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
440
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.68", "serve"],
|
|
422
441
|
"env": {
|
|
423
442
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
424
443
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -441,7 +460,7 @@ Windsurf only supports global MCP configuration.
|
|
|
441
460
|
"mcpServers": {
|
|
442
461
|
"bridge": {
|
|
443
462
|
"command": "npx",
|
|
444
|
-
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
463
|
+
"args": ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.68", "serve"],
|
|
445
464
|
"env": {
|
|
446
465
|
"BAPI_BASE_URL": "https://bridgegpt-api.com",
|
|
447
466
|
"BAPI_REPO_NAME": "your-repo",
|
|
@@ -460,7 +479,7 @@ Windsurf only supports global MCP configuration.
|
|
|
460
479
|
```toml
|
|
461
480
|
[mcp_servers.bridge]
|
|
462
481
|
command = "npx"
|
|
463
|
-
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.
|
|
482
|
+
args = ["-y", "--prefer-offline", "@bridge_gpt/mcp-server@0.2.68", "serve"]
|
|
464
483
|
|
|
465
484
|
[mcp_servers.bridge.env]
|
|
466
485
|
BAPI_BASE_URL = "https://bridgegpt-api.com"
|
|
@@ -1071,14 +1090,15 @@ By hand, the outline is:
|
|
|
1071
1090
|
npx -y @bridge_gpt/mcp-server install # if Bridge is not installed yet
|
|
1072
1091
|
npx -y @bridge_gpt/mcp-server connect-github --repo <repo_name> # connect the GitHub App
|
|
1073
1092
|
npx -y @bridge_gpt/mcp-server install conductor --required-check "epic-implementer-ci / gate" \
|
|
1074
|
-
--
|
|
1093
|
+
--review-policy verdict_protocol \
|
|
1094
|
+
--allowed-bot "<bot>" --secret-name <SECRET_NAME> --branches "<default branch>,epic/**" # AI review is opt-in; omit all four to skip the claude-review workflow
|
|
1075
1095
|
export BAPI_LOCAL_MERGE_TOKEN="$(gh auth token)" # in the shell that runs drive-epic
|
|
1076
1096
|
npx -y @bridge_gpt/mcp-server epic-implementer readiness --json # read-only check of every prerequisite
|
|
1077
1097
|
```
|
|
1078
1098
|
|
|
1079
1099
|
After `install conductor`, restart your MCP client so the Epic Implementer tools
|
|
1080
1100
|
appear. Add `epic-implementer-ci.yml` (the guide has a template) and the
|
|
1081
|
-
`claude-review.yml` that `install conductor` wrote, through a pull request into
|
|
1101
|
+
`claude-review.yml` that `install conductor` wrote (only when you opted in to AI review with `--review-policy verdict_protocol`), through a pull request into
|
|
1082
1102
|
your default branch. Once it merges, index the repository with
|
|
1083
1103
|
`/parse-repository`.
|
|
1084
1104
|
|
|
@@ -1151,6 +1171,55 @@ For Codex, `GET /jira/codex-model-catalog?repo_name=...` is the sole tier-to-mod
|
|
|
1151
1171
|
|
|
1152
1172
|
Per-OS prerequisites: macOS `wt`, `git`, `osascript`; Windows `git-wt`, Git for Windows / Git Bash, Windows Terminal or PowerShell; Linux `wt`, `git`, `tmux`. Set `BAPI_WORKTRUNK_BIN` to override the Worktrunk executable name/path for nonstandard installs (`doctor` honors it too). The read-only `doctor` subcommand (below) additionally surfaces a missing `uv` — Worktrunk's `pre-start` hook runs `uv`, but live preflight does not check it — and the selected agent's command; run `doctor --agent cursor-agent` to also check `cursor-agent` (it prints `cursor-agent login` as an informational auth reminder).
|
|
1153
1173
|
|
|
1174
|
+
### Missing packaged workflow files
|
|
1175
|
+
|
|
1176
|
+
Run read-only `doctor` to distinguish absent, unreadable, unsafe, and uncertain
|
|
1177
|
+
workflow files. Healthy discovery adds no recovery prose. Confirmed loss in a
|
|
1178
|
+
root-bound initialized installation adds bounded recovery metadata and guidance;
|
|
1179
|
+
unknown hosts, fallback roots, legacy inventories, and newer bundle additions do
|
|
1180
|
+
not establish historical loss. Readable customized or uncommitted files count as
|
|
1181
|
+
present; committing generated files is unnecessary.
|
|
1182
|
+
|
|
1183
|
+
```sh
|
|
1184
|
+
npx -y '@bridge_gpt/mcp-server@<running-version>' repair-assets --project-root '/path/to/project' --host claude
|
|
1185
|
+
```
|
|
1186
|
+
|
|
1187
|
+
Replace `<running-version>` with the running package version. Both explicit root and host
|
|
1188
|
+
options authorize fill-only provisioning without inventory. Otherwise repair
|
|
1189
|
+
requires a matching inventory at the exact selected root; callers in a project
|
|
1190
|
+
subdirectory must supply `--project-root`. The canonical selected root is printed
|
|
1191
|
+
before writes. Unpinned `npx -y @bridge_gpt/mcp-server repair-assets` intentionally
|
|
1192
|
+
selects the latest package, which may introduce new assets.
|
|
1193
|
+
|
|
1194
|
+
| Host | Packaged destinations |
|
|
1195
|
+
| --- | --- |
|
|
1196
|
+
| `claude` | `.claude/commands/`, `.claude/agents/`, shipped documentation |
|
|
1197
|
+
| `cursor` | `.cursor/commands/`, shipped documentation; no native agent definitions |
|
|
1198
|
+
| `codex` | `.agents/skills/bridge-*/SKILL.md`, shipped documentation |
|
|
1199
|
+
| `copilot` | Independent `.github/prompts/`, `.github/skills/`, `.github/agents/`, shipped documentation |
|
|
1200
|
+
|
|
1201
|
+
Repair preserves existing bytes and concurrent creation winners. It prepares
|
|
1202
|
+
complete temporary files, flushes/closes them, and publishes with exclusive hard
|
|
1203
|
+
links. A confined Linux procfs adapter supports writes; macOS/Windows currently
|
|
1204
|
+
refuse missing-file writes because a qualified descriptor-relative adapter is
|
|
1205
|
+
unavailable. Non-files, permissions, unsafe ancestry, unsupported publication, or
|
|
1206
|
+
cleanup failures produce a nonzero exit and distinct diagnostics. Repair does not
|
|
1207
|
+
refresh or upgrade existing content.
|
|
1208
|
+
|
|
1209
|
+
When a missing host command prevents Bridge invocation, run the terminal command
|
|
1210
|
+
from the established root, then refresh/reconnect and run doctor. Hosts may cache
|
|
1211
|
+
lists or ignore notifications; healthy files do not guarantee host presentation.
|
|
1212
|
+
If the mismatch persists, consult host support.
|
|
1213
|
+
|
|
1214
|
+
Plans/reviews/research reports are generated outputs: retrieve identified existing
|
|
1215
|
+
results using `get_plan`, `wait_for_ticket_review` for eligible canonical legs,
|
|
1216
|
+
`get_deep_research(task_id)`, or `get_council(council_id)`. Never silently rerun paid
|
|
1217
|
+
generation. Agent-reviewed rewrites must be recreated and reviewed before
|
|
1218
|
+
publication; neither retrieval nor installer repair reconstructs them.
|
|
1219
|
+
|
|
1220
|
+
Custom pipelines/instructions, MCP registration/configuration, credentials,
|
|
1221
|
+
onboarding/API setup, and Windsurf are outside packaged repair.
|
|
1222
|
+
|
|
1154
1223
|
### `doctor`
|
|
1155
1224
|
|
|
1156
1225
|
The package also ships a strictly **read-only** `doctor` subcommand — titled **`bridge doctor — read-only diagnostics`** — that diagnoses your whole Bridge install without changing anything:
|
|
@@ -1210,7 +1279,7 @@ The path from an epic to a finished run:
|
|
|
1210
1279
|
`npx -y @bridge_gpt/mcp-server install conductor --required-check <check>`
|
|
1211
1280
|
(also spelled `install-bridge conductor`; the name predates the rename). It runs
|
|
1212
1281
|
a read-only doctor and writes the done gate from your required CI check(s). It
|
|
1213
|
-
can also scaffold the `claude-review` workflow, write an executor service unit,
|
|
1282
|
+
can also scaffold the `claude-review` workflow (only with the explicit AI-review opt-in, `--review-policy verdict_protocol`; omitting the flag persists no repository review choice and scaffolds none), write an executor service unit,
|
|
1214
1283
|
and save a launch profile. With its own consent, it adds `epic_implementer` to
|
|
1215
1284
|
`BRIDGE_MCP_PROFILE` in your host MCP configs. Run `install conductor --help`
|
|
1216
1285
|
for every option.
|
|
@@ -1264,7 +1333,10 @@ including every error path, ever offers you two paths.
|
|
|
1264
1333
|
the strategy and the posture (see below). With none of them, a multi-ticket epic
|
|
1265
1334
|
runs on `epic/<KEY>`, unattended. It also forwards `--repo` and the policy flags:
|
|
1266
1335
|
`--policy-file <path>` (the complete run policy), `--review-policy <src>` (a
|
|
1267
|
-
per-run review policy
|
|
1336
|
+
per-run review policy: `repository_policy`, `verdict_protocol`,
|
|
1337
|
+
`native_review_decision`, or `none`; omitted, the server stamps `repository_policy`
|
|
1338
|
+
at first approval for a new feature-branch run, and `verdict_protocol` is the
|
|
1339
|
+
explicit AI-review opt-in), and `--replace-policy` (allow replacing a live run's
|
|
1268
1340
|
stored policy).
|
|
1269
1341
|
|
|
1270
1342
|
**Every run gets an executor (BAPI-1279).** Once `drive-epic` creates a run, it
|
|
@@ -1953,3 +2025,94 @@ plus `total_steps`, `auto_approve`, and `execution_mode`. Each step is either an
|
|
|
1953
2025
|
text). `execution_mode` is `inline` — the calling agent executes every step
|
|
1954
2026
|
itself and keeps its own durable record through `record_phase_result` /
|
|
1955
2027
|
`record_checkpoint`. There is no server-side orchestrator and no run to resume.
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
## Start Tickets troubleshooting
|
|
2031
|
+
|
|
2032
|
+
`start-tickets` reports actual worktree paths and branches in its stable summary,
|
|
2033
|
+
then explains successfully spawned sessions. Work from each reported folder: its
|
|
2034
|
+
branch is already checked out there and normally cannot also be checked out in
|
|
2035
|
+
the original folder. Folder names and locations come from Worktrunk configuration;
|
|
2036
|
+
do not infer them from the original checkout.
|
|
2037
|
+
|
|
2038
|
+
Monitor the selected agent in the reported Terminal/iTerm tab, Windows Terminal
|
|
2039
|
+
tab, PowerShell fallback window, or detached tmux session. Linux output prints
|
|
2040
|
+
the exact `tmux attach -t ...` commands. When a destination is not reported, treat
|
|
2041
|
+
it as unknown. A spawned session has started; it has not completed implementation
|
|
2042
|
+
or review. Review workflows review independently before opening a fresh
|
|
2043
|
+
implementation session. Coordinate ownership across multiple independent
|
|
2044
|
+
sessions and pause affected work when overlapping changes cause conflicts.
|
|
2045
|
+
|
|
2046
|
+
For mixed failures, only `spawned` rows describe running sessions. Retain failed
|
|
2047
|
+
row warnings and the CLI exit status. Dry-run and all-failed results open no
|
|
2048
|
+
successful sessions. After a failure, read-only diagnostics are allowed:
|
|
2049
|
+
|
|
2050
|
+
```bash
|
|
2051
|
+
npx -y @bridge_gpt/mcp-server doctor --agent codex
|
|
2052
|
+
```
|
|
2053
|
+
|
|
2054
|
+
The interactive installer separates **Required for launcher** tools from
|
|
2055
|
+
**Recommended diagnostics** (`uv`, selected agent, ast-grep, ripgrep, lizard).
|
|
2056
|
+
Missing recommendations and the **Git compatibility advisory** add no install or
|
|
2057
|
+
launcher admission gate. Doctor performs no automatic repair, installation, PATH
|
|
2058
|
+
mutation, authentication, or terminal launch. The existing launcher still checks
|
|
2059
|
+
Git presence and repository work-tree context at launch.
|
|
2060
|
+
|
|
2061
|
+
### Worktrunk and Git compatibility evidence
|
|
2062
|
+
|
|
2063
|
+
The documented comparison baseline is **Worktrunk v0.80.0**, whose
|
|
2064
|
+
[tagged Git-version source](https://github.com/max-sixty/worktrunk/blob/v0.80.0/src/git/version.rs)
|
|
2065
|
+
sets the minimum to **Git 2.43.0**. This is the release-specific baseline Bridge
|
|
2066
|
+
recommends for this advisory, not a universal rule for every Worktrunk release or
|
|
2067
|
+
a requirement to install the latest Git. The onboarding report observed Git
|
|
2068
|
+
**2.39.5** being rejected with a **2.43.0** minimum; it did not identify the
|
|
2069
|
+
Worktrunk release, so that observation alone is not release verification.
|
|
2070
|
+
|
|
2071
|
+
Doctor and the installer report the resolved Git executable and numeric version
|
|
2072
|
+
when available, with compatible, incompatible, and unknown advisory states.
|
|
2073
|
+
An arbitrary nonempty `BAPI_WORKTRUNK_BIN` override has an unconfirmed release
|
|
2074
|
+
requirement and is not assumed compatible with this baseline. On macOS,
|
|
2075
|
+
installing another Git does not ensure the launcher resolves it. Verify the
|
|
2076
|
+
executable and version selected on PATH before changing your installation:
|
|
2077
|
+
|
|
2078
|
+
```bash
|
|
2079
|
+
which git
|
|
2080
|
+
git --version
|
|
2081
|
+
```
|
|
2082
|
+
|
|
2083
|
+
### Saved planning work and launch readiness
|
|
2084
|
+
|
|
2085
|
+
Successful ticket/plan creation does not establish executor, policy, VCS, or
|
|
2086
|
+
indexing readiness. A finalized epic completion may show one bounded read-only
|
|
2087
|
+
`drive-epic '<EPIC>' --dry-run --json` preview. Ready means **ready at preview
|
|
2088
|
+
time**; a conditional cold start still needs guarded startup/live validation.
|
|
2089
|
+
Returned target, refusal reasons, remedies, and `availability_text` remain
|
|
2090
|
+
authoritative. An unavailable preview leaves readiness unconfirmed while saved
|
|
2091
|
+
work remains successful. Free-form plans or unresolved child keys must be
|
|
2092
|
+
finalized first. Actual launch retains its consent and admission checks.
|
|
2093
|
+
|
|
2094
|
+
## Backend-owned bootstrap identity (BAPI-1438)
|
|
2095
|
+
|
|
2096
|
+
Ordinary new creation uses a friendly display label. Labels may repeat and never
|
|
2097
|
+
select credentials. For a scripted operator invite use `install --invite --display-name "My project"`
|
|
2098
|
+
and supply the invitation through the existing private input mechanism. In an
|
|
2099
|
+
interactive terminal the folder basename is a suggested label. Self-serve signup
|
|
2100
|
+
still requires emailed-code verification in an interactive terminal.
|
|
2101
|
+
|
|
2102
|
+
Use `--repo <canonical-name>` or `BAPI_REPO_NAME` for existing-key registration
|
|
2103
|
+
or explicit legacy creation. Existing keys cannot use `--display-name`; creation
|
|
2104
|
+
cannot combine that flag with a canonical selector.
|
|
2105
|
+
|
|
2106
|
+
Rerun from the original folder with the same invitation or signup method after
|
|
2107
|
+
an interrupted install. The original proof and label are reused; another entered
|
|
2108
|
+
label does not rename the recovered project. Preserve recovery storage when an
|
|
2109
|
+
outcome is unknown, a challenge cannot be recovered, or installation asks for support.
|
|
2110
|
+
Never delete possibly redeemed proof to restart. Ordinary invite tokens and
|
|
2111
|
+
verification codes are not stored.
|
|
2112
|
+
|
|
2113
|
+
Credential storage uses bounded exclusive locking without timeout-based stealing.
|
|
2114
|
+
An abandoned lock needs installation support. POSIX systems sync the containing
|
|
2115
|
+
directory; Windows uses file sync plus atomic replacement because portable Node
|
|
2116
|
+
directory handles are unavailable. A failure after rename is an uncertain durability
|
|
2117
|
+
outcome: the new bytes may already exist. Rerun reloads the actual store under lock;
|
|
2118
|
+
there is no guarantee that old pending bytes survive every failure.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { evaluateClaudeMcpShadowingPolicy, inspectClaudeUserConfigForMcpShadowing, resolveClaudeUserConfigPath, } from "../claude-user-config-doctor.js";
|
|
2
2
|
import { createDefaultAgentCapabilitiesDeps } from "../agent-capabilities/default-deps.js";
|
|
3
3
|
import { runDenyEnforcementPreflight, } from "../conductor/deny-enforcement-preflight.js";
|
|
4
|
+
import { CLAUDE_DISABLE_AUTO_MEMORY_ENV } from "../claude-settings.js";
|
|
4
5
|
import { buildExecutorBaseWorkerEnv } from "../executor/env.js";
|
|
5
6
|
import { ExecutorNamedError } from "../executor/job-errors.js";
|
|
6
7
|
import { provisionExecutorDenyLayer } from "../executor/permissions.js";
|
|
@@ -267,6 +268,24 @@ export function buildClaudeWatcherNudgeMessage(liveTaskIds) {
|
|
|
267
268
|
"background log tail), you may stop that watcher. Do not cancel, kill, or abandon any " +
|
|
268
269
|
"required work in order to finish sooner.");
|
|
269
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* BAPI-1395 — the nudge sent when the post-result completion window opens and
|
|
273
|
+
* only the worker's own background Bash is live. The executor cannot tell a
|
|
274
|
+
* task that merely waits (a polling loop, a `sleep`) from a genuine background
|
|
275
|
+
* operation, so it must not ask for blanket cancellation: only tasks that are
|
|
276
|
+
* merely waiting are to be stopped.
|
|
277
|
+
*/
|
|
278
|
+
export function buildClaudeCompletionWindowNudgeMessage(liveTaskIds) {
|
|
279
|
+
const ids = liveTaskIds
|
|
280
|
+
.map((id) => boundedIdentifier(id))
|
|
281
|
+
.filter((id) => id !== null)
|
|
282
|
+
.slice(0, NUDGE_MAX_TASK_IDS);
|
|
283
|
+
const named = ids.length > 0 ? ` (task ids: ${ids.join(", ")})` : "";
|
|
284
|
+
return claudeStdinUserLine(`Your result was received, but background shell tasks you started are still running${named}. ` +
|
|
285
|
+
"Stop only the tasks of your own that are merely waiting (for example a sleep or a polling " +
|
|
286
|
+
"loop). Leave any background operation that is doing real work running so it can finish and " +
|
|
287
|
+
"report its outcome. Do not cancel, kill, or abandon required work in order to finish sooner.");
|
|
288
|
+
}
|
|
270
289
|
// ---------------------------------------------------------------------------
|
|
271
290
|
// Runtime identity probe (BAPI-1301, D4a)
|
|
272
291
|
// ---------------------------------------------------------------------------
|
|
@@ -372,6 +391,13 @@ export function buildClaudeWorkerEnv(parentEnv, options = {}) {
|
|
|
372
391
|
if (typeof token === "string") {
|
|
373
392
|
env[CLAUDE_OAUTH_TOKEN_ENV] = token;
|
|
374
393
|
}
|
|
394
|
+
// BAPI-1397 (F6) — a worker must never write the OWNER's Claude auto-memory.
|
|
395
|
+
// The deny-layer provisioning also writes `autoMemoryEnabled: false` into the
|
|
396
|
+
// worktree's settings; the environment form is set here as well because it
|
|
397
|
+
// wins over settings and does not depend on that file write succeeding. Set
|
|
398
|
+
// after the parent environment is filtered, so nothing inherited can turn it
|
|
399
|
+
// back on.
|
|
400
|
+
env[CLAUDE_DISABLE_AUTO_MEMORY_ENV] = "1";
|
|
375
401
|
return env;
|
|
376
402
|
}
|
|
377
403
|
/**
|
|
@@ -620,6 +646,7 @@ export function createClaudeExecutorAdapter(spec, deps = {}) {
|
|
|
620
646
|
transport: COMPLETION_EVIDENCE_TRANSPORT,
|
|
621
647
|
probeRuntime: (probeDeps) => probeClaudeCompletionRuntime(spec.command, probeDeps),
|
|
622
648
|
buildWatcherNudge: buildClaudeWatcherNudgeMessage,
|
|
649
|
+
buildCompletionWindowNudge: buildClaudeCompletionWindowNudgeMessage,
|
|
623
650
|
};
|
|
624
651
|
return {
|
|
625
652
|
identity: {
|