borgmcp 2.1.1 → 2.3.0
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 +33 -0
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +4 -0
- package/dist/claude.js.map +1 -1
- package/dist/cli-help.d.ts +2 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +18 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/regen-format.d.ts +1 -6
- package/dist/regen-format.d.ts.map +1 -1
- package/dist/regen-format.js +9 -8
- package/dist/regen-format.js.map +1 -1
- package/dist/server-facade.d.ts +2 -1
- package/dist/server-facade.d.ts.map +1 -1
- package/dist/server-facade.js +16 -10
- package/dist/server-facade.js.map +1 -1
- package/dist/unknown-subcommand.d.ts +1 -1
- package/dist/unknown-subcommand.d.ts.map +1 -1
- package/dist/unknown-subcommand.js +1 -0
- package/dist/unknown-subcommand.js.map +1 -1
- package/dist/update-cmd.d.ts +58 -0
- package/dist/update-cmd.d.ts.map +1 -0
- package/dist/update-cmd.js +837 -0
- package/dist/update-cmd.js.map +1 -0
- package/docs/EXTRACTION_PROVENANCE.md +4 -4
- package/docs/LOCAL_SERVER.md +39 -0
- package/docs/RELEASING.md +130 -1
- package/package.json +6 -3
- package/src/claude.ts +4 -0
- package/src/cli-help.ts +21 -0
- package/src/index.ts +5 -1
- package/src/regen-format.ts +11 -9
- package/src/server-facade.ts +16 -10
- package/src/unknown-subcommand.ts +1 -0
- package/src/update-cmd.ts +1040 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cmd.js","sourceRoot":"","sources":["../src/update-cmd.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,8 @@ The extraction copied the monorepo's `client/src/` production boundary and top-l
|
|
|
21
21
|
lightweight release tag failed before packaging. The reviewed `2.0.1`
|
|
22
22
|
recovery, `2.0.2`, `2.0.3`, `2.0.4`, `2.0.5`, and `2.0.6` successors were
|
|
23
23
|
published and registry-verified. The immutable `2.0.7` workflow failed before
|
|
24
|
-
package creation or npm publication. The `2.0.8`, `2.0.9`, `2.0.10`, `2.0.11`,
|
|
25
|
-
`2.1.0` successors were published, so the next candidate identity is `2.
|
|
24
|
+
package creation or npm publication. The `2.0.8`, `2.0.9`, `2.0.10`, `2.0.11`,
|
|
25
|
+
`2.1.0`, and `2.1.1` successors were published, and `2.2.0` was subsequently published, so the next candidate identity is `2.3.0`. Extraction and
|
|
26
26
|
versioning do not authorize publication.
|
|
27
27
|
|
|
28
28
|
## Review Holds
|
|
@@ -42,7 +42,7 @@ resolves to the audited registry `borgmcp-shared@0.6.4` with integrity
|
|
|
42
42
|
`sha512-Wm4b0uoOAw9JCz5OTHD0Q2uXKkeWYdkVksdeZvRG8l62XGMY+G8GkNEsZT9L533LbVbQ29GhgF0htjDenQThDg==`.
|
|
43
43
|
The matching `borgmcp-server@0.1.21` release is published with integrity
|
|
44
44
|
`sha512-g0QH4cKcsKuDyZs1MvBmvCoCLaZ4wVI04yHCGSvcAeWghWxSBH0IIF8Q5OFi1pLB7TZXOVP6D3QAabUQ2eJTFg==`
|
|
45
|
-
and pins the same `borgmcp-shared@0.6.4` contract. Client `borgmcp@2.
|
|
45
|
+
and pins the same `borgmcp-shared@0.6.4` contract. Client `borgmcp@2.2.0` is published. The immutable `v2.0.7`
|
|
46
46
|
attempt failed before publication and remains preserved. Publication of the next
|
|
47
|
-
candidate remains gated by reviewed `v2.
|
|
47
|
+
candidate remains gated by reviewed `v2.3.0` source, a fresh annotated tag, and
|
|
48
48
|
the exact-artifact and protected-publication gates.
|
package/docs/LOCAL_SERVER.md
CHANGED
|
@@ -129,6 +129,45 @@ create distinct bounded cubes. An ordinary enrolled client is denied before a
|
|
|
129
129
|
create request is sent. Cloud-only capabilities fail explicitly rather than
|
|
130
130
|
being redirected.
|
|
131
131
|
|
|
132
|
+
## Updating Borg
|
|
133
|
+
|
|
134
|
+
For an npm-global installation, use the whole-product command:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
borg update
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The command performs a zero-mutation registry preflight for the exact proposed
|
|
141
|
+
`borgmcp` and `borgmcp-server` versions, their SHA-512 integrity values, and an
|
|
142
|
+
identical exact `borgmcp-shared` dependency pin. Lookup and installation are
|
|
143
|
+
bound to the canonical `https://registry.npmjs.org/` authority and one proven npm
|
|
144
|
+
executable, global prefix, and global root. An alternate configured registry,
|
|
145
|
+
changed npm context, registry failure, malformed manifest, mismatched or ranged
|
|
146
|
+
shared pin, unsupported package manager, or ambiguous binary fails before
|
|
147
|
+
confirmation and mutation with manual-update guidance.
|
|
148
|
+
|
|
149
|
+
The client is installed first. Borg then verifies and re-enters through the new
|
|
150
|
+
client binary before any server mutation. If that install, verification, or
|
|
151
|
+
re-entry fails, the server controller and runtime are untouched. When a server
|
|
152
|
+
was already installed, the new client installs the target controller before
|
|
153
|
+
invoking `borg-mcp-server update --json`; this ensures the runtime phase uses the
|
|
154
|
+
current structured contract rather than the stale controller being replaced.
|
|
155
|
+
The client strictly decodes server update and status JSON and never executes a
|
|
156
|
+
rendered `next_action` string.
|
|
157
|
+
|
|
158
|
+
Final verification requires the installed client and server manifests, their
|
|
159
|
+
installed shared packages, controller identity, prepared artifact and integrity,
|
|
160
|
+
and any running artifact and pinned-TLS protocol identity to agree. A previously
|
|
161
|
+
stopped server remains stopped; matching controller and prepared runtime are
|
|
162
|
+
reported as `prepared; still stopped` without inventing a live protocol check.
|
|
163
|
+
An absent server is skipped rather than installed. Partial completion prints the
|
|
164
|
+
safe retry command `borg update --yes`. Borg never starts a stopped server,
|
|
165
|
+
daemonizes, or restarts agent processes.
|
|
166
|
+
|
|
167
|
+
`borg server update` remains the server-runtime-only command. It verifies and
|
|
168
|
+
activates the server artifact but deliberately does not rewrite the global
|
|
169
|
+
controller executable that is running it.
|
|
170
|
+
|
|
132
171
|
After the first attach, the launched agent should run `borg_whoami` and
|
|
133
172
|
`borg_roster` to verify its seat and begin coordinating. To create a second seat,
|
|
134
173
|
the operator runs the explicit local assimilation command from the intended
|
package/docs/RELEASING.md
CHANGED
|
@@ -111,8 +111,20 @@ The annotated `v2.1.0` tag object
|
|
|
111
111
|
`10f18e4010c9c518c0ea2184d42ed5388642a53f`. Workflow run `30166498938`, attempt 1,
|
|
112
112
|
successfully published that exact source as `borgmcp@2.1.0`; the same-run artifact report records integrity
|
|
113
113
|
`sha512-Gm9n69y3C0feNDYRPEOnShLCscQJ/BoylcRMH+sDDQJmdcbjY8+U6dDTcFv3w+uH5P/IVwJydB8TGRHPXL0FQA==`.
|
|
114
|
+
Never move, replace, reuse, or rerun that tag or workflow.
|
|
115
|
+
|
|
116
|
+
The annotated `v2.1.1` tag object
|
|
117
|
+
`aa8d772c4791b2da16d702d5d78e5b3c365796c4` peels to protected-main commit
|
|
118
|
+
`db0a6a76744928e0067eb03b8a236076c56ae758`. Workflow run `30174878044`, attempt 1,
|
|
119
|
+
successfully published that exact source as `borgmcp@2.1.1`; the same-run artifact report records integrity
|
|
120
|
+
`sha512-nZJ3i6LBIj/4743mqVRJTUH3YGmC8HfC/NuQb7eOv+/K/dyBogDnwZ3opiZiZSe4LE5CXuG72Sip7cPRoCoZrA==`.
|
|
121
|
+
Never move, replace, reuse, or rerun that tag or workflow. The annotated `v2.2.0` tag object
|
|
122
|
+
`edf12fcd4c56eb0ad59917269aaeee223b36bd53` peels to protected-main commit
|
|
123
|
+
`db4f374e88c24dadee47d5400537890cad1e5f40`. Workflow run `30195666955`, attempt 1,
|
|
124
|
+
successfully published that exact source as `borgmcp@2.2.0`; the same-run artifact report records integrity
|
|
125
|
+
`sha512-Pi3rpQH6f+V67OPoRIwyKjOFrCJ5y/39knCayExBmnMC5Urb8m+m9UQVNV7cWMuhd3S3WMM6JOkgcIYOVhWnxg==`.
|
|
114
126
|
Never move, replace, reuse, or rerun that tag or workflow. The next candidate
|
|
115
|
-
uses the unused `v2.
|
|
127
|
+
uses the unused `v2.3.0` identity from a fresh reviewed protected-main commit
|
|
116
128
|
and requires the complete release gate again.
|
|
117
129
|
|
|
118
130
|
## Release Prerequisites
|
|
@@ -142,6 +154,55 @@ Before creating the release tag, independently verify all of these conditions:
|
|
|
142
154
|
machine-checkable. A release tag created before they are resolved fails before
|
|
143
155
|
dependency installation or publication.
|
|
144
156
|
|
|
157
|
+
### Release identity preparation
|
|
158
|
+
|
|
159
|
+
Prepare the next stable identity only from a clean protected-main checkout. The
|
|
160
|
+
command requires evidence for the version being superseded because a workflow
|
|
161
|
+
run and artifact integrity cannot be derived from the repository tree:
|
|
162
|
+
|
|
163
|
+
```sh
|
|
164
|
+
npm run release:prepare -- 2.3.0 \
|
|
165
|
+
--workflow-run-id 30195666955 \
|
|
166
|
+
--workflow-run-attempt 1 \
|
|
167
|
+
--artifact-integrity 'sha512-...'
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The command independently verifies the annotated tag, its peeled commit, the
|
|
171
|
+
exact successful tag-workflow attempt, and npm artifact integrity before writing
|
|
172
|
+
anything. It then deterministically updates only the manifest version, the two
|
|
173
|
+
root lockfile version fields, the extraction ledger, this document's immutable
|
|
174
|
+
release record, and the release-lane current-version/evidence assertions.
|
|
175
|
+
|
|
176
|
+
Release branches use the `release/` prefix and enter protected `main` through a
|
|
177
|
+
pull request. A direct push only updates the staging branch; it does
|
|
178
|
+
not produce a release-identity verdict and grants no review skip, merge
|
|
179
|
+
authority, or release authority.
|
|
180
|
+
|
|
181
|
+
For a pull request from a same-repository `release/` branch, the dedicated
|
|
182
|
+
release-identity workflow is loaded from the exact protected base commit. It
|
|
183
|
+
checks out that base, fetches the exact candidate commit into the Git object
|
|
184
|
+
database without checking it out, and invokes the base commit's verifier with
|
|
185
|
+
explicit base and candidate SHAs. It does not install or execute candidate
|
|
186
|
+
dependencies, package scripts, workflow code, actions, or verifier code. The
|
|
187
|
+
candidate is treated only as Git tree and blob data.
|
|
188
|
+
|
|
189
|
+
To reproduce the classification locally, resolve and pass exact commit SHAs:
|
|
190
|
+
|
|
191
|
+
```sh
|
|
192
|
+
base_sha=$(git rev-parse origin/main)
|
|
193
|
+
candidate_sha=$(git rev-parse HEAD)
|
|
194
|
+
npm run verify:release-identity -- --base "$base_sha" --candidate "$candidate_sha"
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The verifier rechecks the recorded provenance against GitHub, npm, and Git. It
|
|
198
|
+
reconstructs the expected tree in a temporary Git index and requires exact tree
|
|
199
|
+
equality, exact changed paths, and exact per-file shapes. The release-identity
|
|
200
|
+
allowlist must remain byte-identical. The generated no-cloud occurrence allowlist
|
|
201
|
+
must also remain byte-identical; any source-line renumbering makes the commit a
|
|
202
|
+
code change rather than a release-identity change. A commit the classifier
|
|
203
|
+
rejects follows the full code review chain and must never be manually declared
|
|
204
|
+
identity-only.
|
|
205
|
+
|
|
145
206
|
## Repository Controls
|
|
146
207
|
|
|
147
208
|
Repository settings are operator-owned and are not changed by this workflow.
|
|
@@ -165,6 +226,74 @@ Before preparing a candidate, independently verify:
|
|
|
165
226
|
|
|
166
227
|
## Release Workflow
|
|
167
228
|
|
|
229
|
+
### Pre-tag composed exercise
|
|
230
|
+
|
|
231
|
+
Before creating a release tag, exercise the packed client against the selected
|
|
232
|
+
server artifact:
|
|
233
|
+
|
|
234
|
+
```sh
|
|
235
|
+
npm run release:exercise -- \
|
|
236
|
+
--server /absolute/path/to/borgmcp-server.tgz \
|
|
237
|
+
--server-integrity 'sha512-...'
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
The server integrity must come from the reviewed producer of that artifact. Run
|
|
241
|
+
the command once with the published counterpart. When the client and server are
|
|
242
|
+
being released together, run it again with the co-releasing server candidate.
|
|
243
|
+
The default path builds and packs the current client; `--client-tarball` exists
|
|
244
|
+
only for reproducing a reviewed packed client or running a negative control.
|
|
245
|
+
|
|
246
|
+
This harness exercises reviewed release candidates and their published
|
|
247
|
+
counterparts. It is not a containment sandbox for hostile or otherwise untrusted
|
|
248
|
+
packages and must not be used as one. The temporary install and data directories
|
|
249
|
+
isolate the reviewed exercise from normal product state; they are not an
|
|
250
|
+
operating-system security boundary.
|
|
251
|
+
|
|
252
|
+
The harness requires Node.js 22, npm 11.18.0, Python 3, and macOS or Linux. It
|
|
253
|
+
installs both tarballs into a private temporary project, bootstraps isolated
|
|
254
|
+
server data, and starts the installed server directly. It never uses
|
|
255
|
+
`borg server setup`, because registry-backed activation would select the
|
|
256
|
+
previously published server instead of a candidate.
|
|
257
|
+
|
|
258
|
+
Both composed terminal journeys run under a real PTY:
|
|
259
|
+
|
|
260
|
+
- `borg server dashboard` must render the attached-viewer footer, exit cleanly
|
|
261
|
+
on Ctrl-C, restore the cursor and alternate screen, and leave the server's
|
|
262
|
+
pinned-TLS process healthy at `GET /healthz` (204, empty body).
|
|
263
|
+
- `borg server start` must render the foreground-server footer, exit cleanly on
|
|
264
|
+
Ctrl-C, restore the terminal, stop the server, and release its health endpoint.
|
|
265
|
+
|
|
266
|
+
The client facade resolves `borg-mcp-server` by bare name. The harness therefore
|
|
267
|
+
uses a controlled shim only to arrange resolution, then verifies the outcome:
|
|
268
|
+
before trusting a frame, it reads the live process command and requires the
|
|
269
|
+
absolute installed server entry. Every client or server executable must resolve
|
|
270
|
+
inside the installed package root covered by the SRI cited for that role. Its
|
|
271
|
+
JSON report records the absolute path, version, and independently supplied
|
|
272
|
+
integrity for the client, dashboard listener, dashboard viewer, and foreground
|
|
273
|
+
listener/viewer roles. PATH ordering alone is never accepted as identity evidence.
|
|
274
|
+
|
|
275
|
+
The harness is a fail-closed release gate. A missing frame, non-PTY execution,
|
|
276
|
+
wrong journey footer, substituted artifact, nonzero exit, absent terminal
|
|
277
|
+
restore sequence, failed post-exit health assertion, timeout, or oversized
|
|
278
|
+
transcript fails the command. Its controls must remain demonstrably bidirectional:
|
|
279
|
+
the current client/server pairing passes; and a deliberately wrong server
|
|
280
|
+
integrity fails before either journey starts.
|
|
281
|
+
|
|
282
|
+
The terminal-restore negative control is specifically the packed pre-#146 client
|
|
283
|
+
from commit `81da7b970ffb4e76a35c7bc551c419fec702a3b6` composed with published
|
|
284
|
+
`borgmcp-server@0.2.0`, registry integrity
|
|
285
|
+
`sha512-squb0+vdy0q7l/4FeV7OTvSm7OiFWGsAjGhcVEXYrQc9K/8jJYduqPS90VBwaJRT6z221Gxf3xQ5SeZe/Qoncw==`.
|
|
286
|
+
That composition must fail on the missing cursor-restore sequence. A newer server
|
|
287
|
+
candidate can mask the old client's defect and is not a valid counterpart for
|
|
288
|
+
this negative control.
|
|
289
|
+
|
|
290
|
+
```sh
|
|
291
|
+
npm run release:exercise -- \
|
|
292
|
+
--server borgmcp-server@0.2.0 \
|
|
293
|
+
--server-integrity 'sha512-squb0+vdy0q7l/4FeV7OTvSm7OiFWGsAjGhcVEXYrQc9K/8jJYduqPS90VBwaJRT6z221Gxf3xQ5SeZe/Qoncw==' \
|
|
294
|
+
--client-tarball /absolute/path/to/pre-146-borgmcp-2.1.1.tgz
|
|
295
|
+
```
|
|
296
|
+
|
|
168
297
|
The only trigger is a protected annotated `v<package version>` tag. Manual
|
|
169
298
|
dispatch is intentionally absent so a second run cannot rebuild or publish an
|
|
170
299
|
existing tag. The workflow rejects reruns, root `.npmrc`
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "borgmcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Coordinate AI coding agents in shared cubes. Works with Claude Code, Codex, and OpenCode.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -29,14 +29,17 @@
|
|
|
29
29
|
"start": "node dist/index.js",
|
|
30
30
|
"test": "npm run test:unit && npm run test:release",
|
|
31
31
|
"test:unit": "vitest run --config vitest.config.ts",
|
|
32
|
-
"test:release": "node --test test/release-lane.test.mjs",
|
|
32
|
+
"test:release": "node --test test/release-lane.test.mjs test/release-identity.test.mjs",
|
|
33
33
|
"onboarding:smoke": "node scripts/onboarding-smoke.mjs",
|
|
34
|
+
"release:prepare": "node scripts/release-identity.mjs prepare",
|
|
35
|
+
"release:exercise": "npm run build && node scripts/release-exercise.mjs",
|
|
34
36
|
"release:check": "npm run verify:public-source && npm run verify:release && npm run verify:lock && npm run check && npm test && npm run build && npm run onboarding:smoke && npm run verify:package",
|
|
35
37
|
"verify:artifact": "node scripts/verify-packed-artifact.mjs",
|
|
36
38
|
"verify:public-source": "node scripts/verify-public-source.mjs",
|
|
37
39
|
"verify:package": "node scripts/verify-local-package.mjs",
|
|
38
40
|
"verify:release": "node scripts/verify-release-readiness.mjs",
|
|
39
|
-
"verify:lock": "node scripts/verify-lock-registry.mjs"
|
|
41
|
+
"verify:lock": "node scripts/verify-lock-registry.mjs",
|
|
42
|
+
"verify:release-identity": "node scripts/release-identity.mjs verify"
|
|
40
43
|
},
|
|
41
44
|
"files": [
|
|
42
45
|
"dist",
|
package/src/claude.ts
CHANGED
|
@@ -82,6 +82,7 @@ import { installBorgPlugin } from './opencode-plugin.js';
|
|
|
82
82
|
import { connectOpenCodeDrone, computeOpenCodePort, createOpenCodeLaunchKickoff, injectInitialKickoff } from './opencode-drone.js';
|
|
83
83
|
import { buildOpenCodeLaunchArgs, defaultApprovalIo, resolveLaunchBorgApprovals } from './cli-tool-approval.js';
|
|
84
84
|
import { runEarlyServerFacade } from './server-facade.js';
|
|
85
|
+
import { runEarlyUpdate } from './update-cmd.js';
|
|
85
86
|
|
|
86
87
|
export type AssimilateDepsBuilder = typeof buildDefaultAssimilateDeps;
|
|
87
88
|
|
|
@@ -101,6 +102,9 @@ export async function runAssimilateEntry(
|
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
async function main() {
|
|
105
|
+
const updateExitCode = await runEarlyUpdate(process.argv);
|
|
106
|
+
if (updateExitCode !== null) process.exit(updateExitCode);
|
|
107
|
+
|
|
104
108
|
const serverExitCode = await runEarlyServerFacade(process.argv);
|
|
105
109
|
if (serverExitCode !== null) process.exit(serverExitCode);
|
|
106
110
|
|
package/src/cli-help.ts
CHANGED
|
@@ -27,6 +27,7 @@ export function topLevelHelpText(version: string): string {
|
|
|
27
27
|
`Usage:\n` +
|
|
28
28
|
` borg Launch your agent CLI; in a TTY, bare borg may show the launch menu\n` +
|
|
29
29
|
` borg setup Set up borg MCP server + agent CLI integration\n` +
|
|
30
|
+
` borg update Update the client and installed local server together\n` +
|
|
30
31
|
` borg assimilate [role] Join or create a cube\n` +
|
|
31
32
|
` borg assimilate --host <host> Join or create on an explicit server\n` +
|
|
32
33
|
` borg assimilate --worktree <name> Spawn a worktree drone (in ~/.borg/worktrees/<repo>/<name>)\n` +
|
|
@@ -44,6 +45,25 @@ export function topLevelHelpText(version: string): string {
|
|
|
44
45
|
);
|
|
45
46
|
}
|
|
46
47
|
|
|
48
|
+
/** Help for the whole-product, npm-owned update journey. */
|
|
49
|
+
export function updateHelpText(version: string): string {
|
|
50
|
+
return (
|
|
51
|
+
`borg update${version ? ` (borgmcp ${version})` : ''} — update Borg's client and local server together\n\n` +
|
|
52
|
+
`Usage:\n` +
|
|
53
|
+
` borg update Confirm interactively, then update\n` +
|
|
54
|
+
` borg update --yes Update without prompting (required outside a TTY)\n` +
|
|
55
|
+
` borg update --help Show this help\n\n` +
|
|
56
|
+
`Before changing anything, Borg reads the exact published client and server manifests,\n` +
|
|
57
|
+
`requires matching exact borgmcp-shared pins, and verifies canonical npm ownership. The client is\n` +
|
|
58
|
+
`installed first and the update continues under that new client before the server controller\n` +
|
|
59
|
+
`and runtime are updated. Alternate registries and unsupported or ambiguous package-manager\n` +
|
|
60
|
+
`provenance fail closed with manual-update guidance.\n\n` +
|
|
61
|
+
`If no local server is installed, the server phase is skipped. A failure after the client\n` +
|
|
62
|
+
`succeeds is reported as partial completion with the safe retry command. Borg never starts a\n` +
|
|
63
|
+
`stopped server and never restarts agent processes; restart active agent sessions yourself.\n`
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
47
67
|
/** Product Design-approved client-owned copy for `borg server --help`. */
|
|
48
68
|
export function serverHelpText(): string {
|
|
49
69
|
return (
|
|
@@ -55,6 +75,7 @@ export function serverHelpText(): string {
|
|
|
55
75
|
` status Report verified runtime evidence.\n` +
|
|
56
76
|
` update Verify and activate a local server artifact.\n` +
|
|
57
77
|
` invite Create a single-use invitation in an interactive terminal.\n` +
|
|
78
|
+
` dashboard View the running local server dashboard.\n` +
|
|
58
79
|
` cube init Initialize this Git repository's cube; does not create a drone.\n\n` +
|
|
59
80
|
`Run borg server <command> --help for server command options.\n`
|
|
60
81
|
);
|
package/src/index.ts
CHANGED
|
@@ -76,6 +76,7 @@ import {
|
|
|
76
76
|
formatRegenMarkdown,
|
|
77
77
|
getDronePlaybook,
|
|
78
78
|
getDronePlaybookChapter,
|
|
79
|
+
markArrivalAnnouncedThisProcess,
|
|
79
80
|
nullTaxonomyTip,
|
|
80
81
|
regenWakePathDroneLabel,
|
|
81
82
|
} from './regen-format.js';
|
|
@@ -728,10 +729,12 @@ export async function main() {
|
|
|
728
729
|
if (!message || typeof message !== 'string') throw new Error('message is required');
|
|
729
730
|
const active = await getActiveCube();
|
|
730
731
|
if (!active) throw new Error('Not assimilated to a cube. Use borg_assimilate <cube-name> first.');
|
|
731
|
-
|
|
732
|
+
const lifecycleSignal = lifecycleSignalForMessage(message);
|
|
733
|
+
if (lifecycleSignal) {
|
|
732
734
|
const decision = await shouldSuppressLifecycleLog(active, message);
|
|
733
735
|
if (decision.suppress) {
|
|
734
736
|
await recordLifecycleLog(active, message);
|
|
737
|
+
if (lifecycleSignal === 'arrival') markArrivalAnnouncedThisProcess();
|
|
735
738
|
return {
|
|
736
739
|
content: [
|
|
737
740
|
{
|
|
@@ -760,6 +763,7 @@ export async function main() {
|
|
|
760
763
|
};
|
|
761
764
|
const result = await appendLog(active.sessionToken, active.apiUrl, message, appendOpts);
|
|
762
765
|
await recordLifecycleLog(active, message);
|
|
766
|
+
if (lifecycleSignal === 'arrival') markArrivalAnnouncedThisProcess();
|
|
763
767
|
const echo = result.routing?.message ? `\n${result.routing.message}` : '';
|
|
764
768
|
// gh#534: surface to the SENDER which directed recipients are
|
|
765
769
|
// currently unreachable via the wake path. The message is delivered
|
package/src/regen-format.ts
CHANGED
|
@@ -191,6 +191,12 @@ export function formatLeanOrientation(args: {
|
|
|
191
191
|
// formatLeanOrientation({ ..., source: 'clear' }), so the per-surface
|
|
192
192
|
// /clear block is gone (one place, not three).
|
|
193
193
|
|
|
194
|
+
let arrivalAnnouncedThisProcess = false;
|
|
195
|
+
|
|
196
|
+
export function markArrivalAnnouncedThisProcess(): void {
|
|
197
|
+
arrivalAnnouncedThisProcess = true;
|
|
198
|
+
}
|
|
199
|
+
|
|
194
200
|
/**
|
|
195
201
|
* Build the universal drone playbook.
|
|
196
202
|
*
|
|
@@ -215,6 +221,9 @@ export function formatLeanOrientation(args: {
|
|
|
215
221
|
// about how Borg MCP works; this marker pins the param so the #490/#529 guard
|
|
216
222
|
// verifies borg_docs exposes `topic`.
|
|
217
223
|
export function getDronePlaybook(): string {
|
|
224
|
+
const arrivalInstruction = arrivalAnnouncedThisProcess
|
|
225
|
+
? ''
|
|
226
|
+
: '\n**When this MCP session first starts:** post one `ARRIVAL: <your-label> (<your-role>) online on <hostname> at <project-path>` (run `hostname`; use cwd for the path). After the post succeeds, the client suppresses this instruction until the MCP process restarts; an explicit `/mcp` reconnect may show it again.\n';
|
|
218
227
|
return `## How to operate as a Drone
|
|
219
228
|
|
|
220
229
|
You're a Drone in a Cube. Coordinate with other drones through the activity log.
|
|
@@ -242,8 +251,7 @@ You're a Drone in a Cube. Coordinate with other drones through the activity log.
|
|
|
242
251
|
5. Nothing actionable + no prompt → done; wait for next wake.
|
|
243
252
|
|
|
244
253
|
**On a \`<task-notification>\` wake:** the payload is a truncatable preview; the full entry is in the DB. Drain: \`borg_read-log unread_only=true limit=20\`, repeat until \`behind_by=0\`. Do NOT triage with \`since=<notification timestamp>\` (strict-after — skips the boundary entry) or a bare window (skips older-unread during bursts).
|
|
245
|
-
|
|
246
|
-
**On first wake this session:** post one \`ARRIVAL: <your-label> (<your-role>) online on <hostname> at <project-path>\` (run \`hostname\`; use cwd for the path). One-time per session — don't repeat on later wakes; skip if already posted this session (e.g. after a \`/mcp\` reconnect).
|
|
254
|
+
${arrivalInstruction}
|
|
247
255
|
|
|
248
256
|
**When a log entry routes work to you** (a routing/assignment-class entry per your cube's conventions that names your label + asks for action, or a direct \`<your-label>:\` mention): call \`borg_ack entry_id=<id>\` within ~60s. Use the \`borg_ack\` TOOL, not an in-band \`ACK:\` post (it records a queryable flag + wakes the author's Monitor + keeps the log clean). Ack = receipt, not completion (\`STARTING\` / \`DONE\` still apply). Ack only routing-class signals — not every mention.
|
|
249
257
|
|
|
@@ -269,13 +277,6 @@ You're a Drone in a Cube. Coordinate with other drones through the activity log.
|
|
|
269
277
|
Any drone that commits code: run \`git diff --staged --stat\` before \`git commit\` to verify file count + LOC direction + paths match your intent. Catches deleted files / anomalous -LOC / wrong paths pre-push. Your role may layer more git rules (code-implementing + coordinating roles typically carry the full set).`;
|
|
270
278
|
}
|
|
271
279
|
|
|
272
|
-
/**
|
|
273
|
-
* Eager export of the playbook text. Cheap to compute (string concat);
|
|
274
|
-
* exporting as a constant lets callers splice it directly without a
|
|
275
|
-
* function call site.
|
|
276
|
-
*/
|
|
277
|
-
export const DRONE_PLAYBOOK = getDronePlaybook();
|
|
278
|
-
|
|
279
280
|
/**
|
|
280
281
|
* gh#912: the verbose operating-discipline DETAIL externalized out of the
|
|
281
282
|
* bootstrap regen into an on-demand chapter (fetched via the borg_playbook
|
|
@@ -387,6 +388,7 @@ let cachedRoleTextHash: string | null = null;
|
|
|
387
388
|
export function __resetRegenSessionState(): void {
|
|
388
389
|
boilerplateEmittedThisSession = false;
|
|
389
390
|
cachedRoleTextHash = null;
|
|
391
|
+
arrivalAnnouncedThisProcess = false;
|
|
390
392
|
}
|
|
391
393
|
|
|
392
394
|
function safetyDisciplinesForRole(detailedDescription: string | null | undefined): string[] {
|
package/src/server-facade.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { spawn as spawnChild, type SpawnOptions } from 'node:child_process';
|
|
|
2
2
|
import { constants } from 'node:os';
|
|
3
3
|
import { cubeInitHelpText, isHelpFlag, serverHelpText } from './cli-help.js';
|
|
4
4
|
|
|
5
|
-
export const SERVER_LIFECYCLE_COMMANDS = ['setup', 'start', 'stop', 'status', 'update', 'invite'] as const;
|
|
5
|
+
export const SERVER_LIFECYCLE_COMMANDS = ['setup', 'start', 'stop', 'status', 'update', 'invite', 'dashboard'] as const;
|
|
6
6
|
export type ServerLifecycleCommand = typeof SERVER_LIFECYCLE_COMMANDS[number];
|
|
7
7
|
|
|
8
8
|
export type ParsedServerFacadeArgs =
|
|
@@ -48,6 +48,7 @@ export interface ServerFacadeProcessDeps {
|
|
|
48
48
|
args: readonly string[],
|
|
49
49
|
options: Pick<SpawnOptions, 'shell' | 'stdio'>,
|
|
50
50
|
): ServerFacadeChild;
|
|
51
|
+
isInteractiveTerminal(): boolean;
|
|
51
52
|
addSignalListener(signal: NodeJS.Signals, listener: () => void): void;
|
|
52
53
|
removeSignalListener(signal: NodeJS.Signals, listener: () => void): void;
|
|
53
54
|
}
|
|
@@ -70,6 +71,7 @@ export type ServerFacadeProcessResult =
|
|
|
70
71
|
|
|
71
72
|
const defaultProcessDeps: ServerFacadeProcessDeps = {
|
|
72
73
|
spawn: (command, args, options) => spawnChild(command, [...args], options),
|
|
74
|
+
isInteractiveTerminal: () => process.stdin.isTTY === true && process.stdout.isTTY === true,
|
|
73
75
|
addSignalListener: (signal, listener) => process.on(signal, listener),
|
|
74
76
|
removeSignalListener: (signal, listener) => process.off(signal, listener),
|
|
75
77
|
};
|
|
@@ -125,7 +127,7 @@ function inertCommand(command: string): string {
|
|
|
125
127
|
export function unknownServerCommandText(command: string): string {
|
|
126
128
|
return (
|
|
127
129
|
`Unknown server command: ${inertCommand(command)}.\n` +
|
|
128
|
-
`Available commands: setup, start, stop, status, update, invite, cube init.\n` +
|
|
130
|
+
`Available commands: setup, start, stop, status, update, invite, dashboard, cube init.\n` +
|
|
129
131
|
`Next: run borg server --help.\n`
|
|
130
132
|
);
|
|
131
133
|
}
|
|
@@ -159,7 +161,6 @@ export function runServerFacadeProcess(
|
|
|
159
161
|
[input.command, ...input.args],
|
|
160
162
|
{ shell: false, stdio: 'inherit' },
|
|
161
163
|
);
|
|
162
|
-
const signals = ['SIGINT', 'SIGTERM'] as const;
|
|
163
164
|
|
|
164
165
|
return new Promise((resolve) => {
|
|
165
166
|
let settled = false;
|
|
@@ -177,13 +178,18 @@ export function runServerFacadeProcess(
|
|
|
177
178
|
resolve(result);
|
|
178
179
|
};
|
|
179
180
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
deps.
|
|
186
|
-
}
|
|
181
|
+
const forwardSigint = () => {
|
|
182
|
+
// An interactive terminal has already sent SIGINT to this foreground
|
|
183
|
+
// group, including the server. Forwarding again kills its cleanup path.
|
|
184
|
+
// Node exposes no signal origin, so parent-only SIGINT while attached to
|
|
185
|
+
// a TTY is intentionally treated as terminal delivery and is not forwarded.
|
|
186
|
+
if (!deps.isInteractiveTerminal()) child.kill('SIGINT');
|
|
187
|
+
};
|
|
188
|
+
const forwardSigterm = () => child.kill('SIGTERM');
|
|
189
|
+
forwarders.set('SIGINT', forwardSigint);
|
|
190
|
+
forwarders.set('SIGTERM', forwardSigterm);
|
|
191
|
+
deps.addSignalListener('SIGINT', forwardSigint);
|
|
192
|
+
deps.addSignalListener('SIGTERM', forwardSigterm);
|
|
187
193
|
|
|
188
194
|
child.once('error', (error) => settle({ kind: 'spawn-error', error }));
|
|
189
195
|
child.once('exit', (code, signal) => {
|