borgmcp-server 0.1.1 → 0.1.4
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 +69 -22
- package/dist/cli.js +62 -11
- package/dist/cli.js.map +1 -1
- package/dist/coordination-api.d.ts +2 -1
- package/dist/coordination-api.js +232 -18
- package/dist/coordination-api.js.map +1 -1
- package/dist/credentials.d.ts +10 -2
- package/dist/credentials.js +44 -6
- package/dist/credentials.js.map +1 -1
- package/dist/debug-log.d.ts +77 -0
- package/dist/debug-log.js +125 -0
- package/dist/debug-log.js.map +1 -0
- package/dist/https-server.d.ts +3 -0
- package/dist/https-server.js +80 -4
- package/dist/https-server.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/migrations.d.ts +4 -0
- package/dist/migrations.js +71 -0
- package/dist/migrations.js.map +1 -1
- package/dist/operator-error.d.ts +2 -1
- package/dist/operator-error.js +23 -5
- package/dist/operator-error.js.map +1 -1
- package/dist/role-section.d.ts +14 -0
- package/dist/role-section.js +87 -0
- package/dist/role-section.js.map +1 -0
- package/dist/service.d.ts +10 -3
- package/dist/service.js +218 -15
- package/dist/service.js.map +1 -1
- package/dist/start-options.d.ts +5 -1
- package/dist/start-options.js +17 -3
- package/dist/start-options.js.map +1 -1
- package/dist/store.d.ts +65 -1
- package/dist/store.js +398 -26
- package/dist/store.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/src/cli.ts +61 -11
- package/src/coordination-api.ts +236 -14
- package/src/credentials.ts +71 -5
- package/src/debug-log.ts +165 -0
- package/src/https-server.ts +75 -2
- package/src/index.ts +1 -1
- package/src/migrations.ts +74 -0
- package/src/operator-error.ts +40 -6
- package/src/role-section.ts +108 -0
- package/src/service.ts +239 -18
- package/src/start-options.ts +21 -4
- package/src/store.ts +462 -28
package/README.md
CHANGED
|
@@ -6,16 +6,22 @@ HTTPS.
|
|
|
6
6
|
|
|
7
7
|
## Release status
|
|
8
8
|
|
|
9
|
-
The current
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
9
|
+
The current public preview remains `borgmcp-server@0.1.1`, published on npm.
|
|
10
|
+
Versions `0.1.2` and `0.1.3` were not published; their immutable tags are
|
|
11
|
+
internal failed-release evidence and are not installation or dogfood targets.
|
|
12
|
+
The current source is the unpublished `0.1.4` release candidate. It retains the
|
|
13
|
+
reviewed owner-enrollment, idempotent multi-cube creation, and stable prior-seat
|
|
14
|
+
reattachment baseline, and adds managed role creation and updates, fail-closed
|
|
15
|
+
setup reinitialization, opt-in redacted debug logging, live-safe invitation
|
|
16
|
+
minting, and atomic cube-scoped invitations with enforced observer posture.
|
|
17
|
+
The candidate consumes the audited exact `borgmcp-shared@0.3.0` registry
|
|
18
|
+
release.
|
|
14
19
|
|
|
15
20
|
Setup prepares local identity and storage and prints one-time recovery and
|
|
16
|
-
owner-enrollment secrets; it creates no cube.
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
owner-enrollment secrets; it creates no cube. Version `0.1.1` completed the
|
|
22
|
+
documented exact-source, tagged-artifact, and protected-publication gates.
|
|
23
|
+
Version `0.1.4` has no tag or publication authorization until its exact merged
|
|
24
|
+
source and tagged artifact complete the gates in `docs/releasing.md`.
|
|
19
25
|
|
|
20
26
|
## Requirements
|
|
21
27
|
|
|
@@ -23,12 +29,9 @@ review, authorization, and protected-publication gates.
|
|
|
23
29
|
- npm 10 or later
|
|
24
30
|
- A private local data directory with sufficient disk space
|
|
25
31
|
|
|
26
|
-
## Install
|
|
32
|
+
## Install
|
|
27
33
|
|
|
28
|
-
|
|
29
|
-
completes. Until then, source and preview reviewers should follow the release
|
|
30
|
-
status above and the [release runbook](docs/releasing.md), not expect this
|
|
31
|
-
registry install to succeed.
|
|
34
|
+
Install the current public preview from npm:
|
|
32
35
|
|
|
33
36
|
```sh
|
|
34
37
|
npm install --global borgmcp-server
|
|
@@ -38,15 +41,20 @@ npm install --global borgmcp-server
|
|
|
38
41
|
|
|
39
42
|
The default data directory is `~/.borg/server`. Setup creates the local
|
|
40
43
|
database, credential-digest key, local certificate authority, server
|
|
41
|
-
certificate, one recovery credential, and one enrollment invitation. It
|
|
42
|
-
no cube. Run it in a private terminal because both secrets are
|
|
43
|
-
once.
|
|
44
|
+
certificate, one recovery credential, and one owner enrollment invitation. It
|
|
45
|
+
creates no cube. Run it in a private terminal because both secrets are shown
|
|
46
|
+
once; the owner enrollment invitation is single-use and enrolls the owner client.
|
|
44
47
|
|
|
45
48
|
```sh
|
|
46
49
|
borg-mcp-server setup
|
|
47
50
|
borg-mcp-server start
|
|
48
51
|
```
|
|
49
52
|
|
|
53
|
+
Running `setup` again refuses to change an existing installation. After stopping
|
|
54
|
+
the server, `borg-mcp-server setup --reinitialize` explicitly destroys and
|
|
55
|
+
recreates the server identity and database; use it only when prior state may be
|
|
56
|
+
discarded.
|
|
57
|
+
|
|
50
58
|
The server listens on `https://127.0.0.1:7091` by default. Use
|
|
51
59
|
`BORG_SERVER_DATA_DIR` to select another data directory.
|
|
52
60
|
|
|
@@ -68,23 +76,62 @@ TLS files may instead be supplied explicitly with
|
|
|
68
76
|
`BORG_SERVER_TLS_CA_FILE`. Run `borg-mcp-server help` for the complete command
|
|
69
77
|
summary.
|
|
70
78
|
|
|
71
|
-
##
|
|
79
|
+
## Debugging
|
|
80
|
+
|
|
81
|
+
Debug diagnostics are off by default. A local operator can enable centrally
|
|
82
|
+
redacted, one-line JSON records on stderr for one server run:
|
|
83
|
+
|
|
84
|
+
```sh
|
|
85
|
+
borg-mcp-server start --log-level debug
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Records include normalized routes, principal and coordination IDs, authorization
|
|
89
|
+
outcomes, recipient fan-out, cursor replay, SSE lifecycle, and credential-session
|
|
90
|
+
events. They never include authorization headers, credentials, invitations,
|
|
91
|
+
recovery material, request or message bodies, decision text, tokens, raw paths, or
|
|
92
|
+
exceptions. Operational IDs are still private data; capture stderr only in a
|
|
93
|
+
private local sink. The log level cannot be changed through the network API.
|
|
94
|
+
|
|
95
|
+
## Local credential administration
|
|
72
96
|
|
|
73
|
-
|
|
97
|
+
Invitation minting is an additive local operation and may run while the server is
|
|
98
|
+
live. Rotation, revocation, and grant changes remain exclusive: stop the server
|
|
99
|
+
before running those commands.
|
|
74
100
|
|
|
75
101
|
```sh
|
|
76
102
|
borg-mcp-server client-rotate <client-id>
|
|
77
103
|
borg-mcp-server client-revoke <client-id>
|
|
78
104
|
borg-mcp-server client-invite
|
|
105
|
+
borg-mcp-server client-invite <cube-name-or-id> [--access <read|write|manage>]
|
|
79
106
|
borg-mcp-server owner-invite
|
|
80
107
|
borg-mcp-server client-grant <client-id> <cube-id> <read|write|manage>
|
|
81
108
|
borg-mcp-server client-ungrant <client-id> <cube-id>
|
|
82
109
|
```
|
|
83
110
|
|
|
84
|
-
Invitation commands
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
111
|
+
Invitation commands visibly prompt with `Recovery credential (hidden input):`
|
|
112
|
+
before reading the recovery credential from a private hidden terminal, never argv
|
|
113
|
+
or environment. `owner-invite` prints an owner enrollment invitation. A plain
|
|
114
|
+
`client-invite` remains an enroll-only invitation with no cube grant. Supplying a
|
|
115
|
+
cube selector atomically binds one grant to the invitation. `read` attaches an
|
|
116
|
+
observer that can discover the cube and read shared activity, but cannot post,
|
|
117
|
+
acknowledge, claim, administer, be selected as a direct recipient, or receive
|
|
118
|
+
directed stream events. `write` attaches a participant that can coordinate and is
|
|
119
|
+
the default; explicit `manage` adds cube administration. Attach responses and
|
|
120
|
+
drone listings identify the effective `observer` or `participant` posture. The
|
|
121
|
+
command prints the resolved display name, full cube ID,
|
|
122
|
+
effective access, and capability summary before the single-use invitation.
|
|
123
|
+
|
|
124
|
+
For automation and duplicate-name environments, use the full lowercase canonical
|
|
125
|
+
cube UUID. A display name must match exactly and case-sensitively. Unknown names,
|
|
126
|
+
UUID-like malformed selectors, and duplicate names fail without creating or
|
|
127
|
+
printing an invitation; duplicate-name errors list the candidate IDs so the
|
|
128
|
+
operator can rerun unambiguously. Claiming a scoped invitation atomically creates
|
|
129
|
+
the client credential binding and exactly that cube grant. It grants no server
|
|
130
|
+
capability and no access to any other cube.
|
|
131
|
+
|
|
132
|
+
Both invitation forms are single-use and shown once. Treat setup, enrollment,
|
|
133
|
+
invitation, and rotation output as secrets; do not paste it into issues, logs, or
|
|
134
|
+
chat.
|
|
88
135
|
|
|
89
136
|
## Capacity controls
|
|
90
137
|
|
package/dist/cli.js
CHANGED
|
@@ -1,38 +1,50 @@
|
|
|
1
1
|
const usage = `Usage: borg-mcp-server <command> [options]
|
|
2
2
|
|
|
3
3
|
Commands:
|
|
4
|
-
setup
|
|
4
|
+
setup [--reinitialize] Prepare an offline server installation
|
|
5
5
|
start Start the server process
|
|
6
6
|
client-rotate <client-id> Rotate one client credential offline
|
|
7
7
|
client-revoke <client-id> Revoke one client and its credentials offline
|
|
8
8
|
client-grant <client-id> <cube-id> <read|write|manage> Set one offline cube grant
|
|
9
9
|
client-ungrant <client-id> <cube-id> Remove one offline cube grant
|
|
10
|
-
client-invite
|
|
11
|
-
|
|
10
|
+
client-invite [<cube-name-or-id>] [--access <read|write|manage>]
|
|
11
|
+
Create a client invitation; scoped invitations default to write
|
|
12
|
+
owner-invite Replace the unclaimed owner enrollment invitation using a hidden recovery prompt
|
|
12
13
|
help Show this help
|
|
13
14
|
|
|
14
15
|
Start options:
|
|
15
16
|
--host <ip> Explicit bind address (default: 127.0.0.1)
|
|
16
17
|
--port <number> Listen port (default: 7091)
|
|
17
18
|
--lan Consent to this start on a private LAN address
|
|
19
|
+
--log-level debug Emit centrally redacted structured diagnostics to stderr
|
|
20
|
+
|
|
21
|
+
Setup options:
|
|
22
|
+
--reinitialize Destroy and recreate the existing server identity and database
|
|
18
23
|
|
|
19
24
|
TLS files:
|
|
20
25
|
BORG_SERVER_DATA_DIR (default: ~/.borg/server), or explicit
|
|
21
26
|
BORG_SERVER_TLS_KEY_FILE, BORG_SERVER_TLS_CERT_FILE, and BORG_SERVER_TLS_CA_FILE
|
|
22
27
|
|
|
23
|
-
|
|
28
|
+
Invitation commands may run alongside a live server. Stop the server before
|
|
29
|
+
setup, rotation, revocation, grant changes, or reinitialization.
|
|
30
|
+
|
|
31
|
+
Invitation access:
|
|
32
|
+
read observe: discover, attach as observer, and read
|
|
33
|
+
write coordinate: attach, read, post, acknowledge, and receive directed wakes (default)
|
|
34
|
+
manage administer: coordinate plus cube administration; explicit only`;
|
|
24
35
|
export async function runCli(args, service, io) {
|
|
25
36
|
const [command, ...extraArgs] = args;
|
|
26
37
|
switch (command) {
|
|
27
38
|
case "setup":
|
|
28
|
-
if (extraArgs.length !==
|
|
39
|
+
if (extraArgs.length > 1 || (extraArgs.length === 1 && extraArgs[0] !== "--reinitialize")) {
|
|
29
40
|
return invalidArguments(io);
|
|
41
|
+
}
|
|
30
42
|
if (service.setup === undefined) {
|
|
31
43
|
io.stderr("Server setup is unavailable.");
|
|
32
44
|
return 1;
|
|
33
45
|
}
|
|
34
|
-
const result = await service.setup();
|
|
35
|
-
io.stdout(`Server setup complete.\nRecovery credential (shown once): ${result.recoveryCredential}\
|
|
46
|
+
const result = await service.setup({ reinitialize: extraArgs[0] === "--reinitialize" });
|
|
47
|
+
io.stdout(`Server setup complete.\nRecovery credential (shown once; keep offline): ${result.recoveryCredential}\nOwner enrollment invitation (single-use, shown once; enroll the owner client): ${result.initialInvitation}\nSetup created no cube.\nNext: start the server with \`borg-mcp-server start\`.`);
|
|
36
48
|
return 0;
|
|
37
49
|
case "start":
|
|
38
50
|
await service.start(extraArgs);
|
|
@@ -66,16 +78,33 @@ export async function runCli(args, service, io) {
|
|
|
66
78
|
return 0;
|
|
67
79
|
case "client-invite":
|
|
68
80
|
case "owner-invite": {
|
|
69
|
-
if (
|
|
81
|
+
if (io.readSecret === undefined)
|
|
70
82
|
return invalidArguments(io);
|
|
83
|
+
const scoped = command === "client-invite" ? parseClientInviteArguments(extraArgs) : null;
|
|
84
|
+
if ((command === "owner-invite" && extraArgs.length !== 0) || scoped === undefined) {
|
|
85
|
+
return invalidArguments(io);
|
|
86
|
+
}
|
|
71
87
|
const operation = command === "client-invite"
|
|
72
88
|
? service.createClientInvitation
|
|
73
89
|
: service.replaceOwnerInvitation;
|
|
74
90
|
if (operation === undefined)
|
|
75
91
|
return invalidArguments(io);
|
|
76
|
-
const recovery = await io.readSecret("Recovery credential: ");
|
|
77
|
-
const
|
|
78
|
-
|
|
92
|
+
const recovery = await io.readSecret("Recovery credential (hidden input): ");
|
|
93
|
+
const result = command === "client-invite"
|
|
94
|
+
? scoped?.cubeSelector === undefined
|
|
95
|
+
? await operation(recovery)
|
|
96
|
+
: await operation(recovery, scoped.cubeSelector, scoped.access)
|
|
97
|
+
: await operation(recovery);
|
|
98
|
+
if (typeof result === "string") {
|
|
99
|
+
io.stdout(command === "client-invite"
|
|
100
|
+
? `Client enrollment invitation (single-use, shown once): ${result}`
|
|
101
|
+
: `Owner enrollment invitation (single-use, shown once): ${result}`);
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
io.stdout(`Cube: ${JSON.stringify(result.cubeName)} (${result.cubeId})\n` +
|
|
105
|
+
`Grant: ${grantSummary(result.access)}\n` +
|
|
106
|
+
`Client enrollment invitation (single-use, shown once): ${result.invitation}`);
|
|
107
|
+
}
|
|
79
108
|
return 0;
|
|
80
109
|
}
|
|
81
110
|
case "help":
|
|
@@ -89,6 +118,28 @@ export async function runCli(args, service, io) {
|
|
|
89
118
|
return 1;
|
|
90
119
|
}
|
|
91
120
|
}
|
|
121
|
+
function parseClientInviteArguments(args) {
|
|
122
|
+
if (args.length === 0)
|
|
123
|
+
return {};
|
|
124
|
+
const cubeSelector = args[0];
|
|
125
|
+
if (cubeSelector === undefined || cubeSelector.startsWith("--"))
|
|
126
|
+
return undefined;
|
|
127
|
+
if (args.length === 1)
|
|
128
|
+
return { cubeSelector };
|
|
129
|
+
if (args.length !== 3 || args[1] !== "--access")
|
|
130
|
+
return undefined;
|
|
131
|
+
const access = args[2];
|
|
132
|
+
if (access !== "read" && access !== "write" && access !== "manage")
|
|
133
|
+
return undefined;
|
|
134
|
+
return { cubeSelector, access };
|
|
135
|
+
}
|
|
136
|
+
function grantSummary(access) {
|
|
137
|
+
if (access === "read")
|
|
138
|
+
return "read (observe - discover, attach as observer, and read)";
|
|
139
|
+
if (access === "manage")
|
|
140
|
+
return "manage (administer - coordinate plus cube administration)";
|
|
141
|
+
return "write (coordinate - attach, read, post, acknowledge, and receive directed wakes)";
|
|
142
|
+
}
|
|
92
143
|
function invalidArguments(io) {
|
|
93
144
|
io.stderr("Invalid command arguments.");
|
|
94
145
|
return 1;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAQA,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Principal } from "./principal.js";
|
|
2
|
+
import { type DebugLogger } from "./debug-log.js";
|
|
2
3
|
import type { CredentialAuthority } from "./credentials.js";
|
|
3
4
|
import { type StoreRuntime } from "./store.js";
|
|
4
5
|
export interface CoordinationRequest {
|
|
@@ -16,7 +17,7 @@ export interface CoordinationResponse {
|
|
|
16
17
|
}
|
|
17
18
|
export declare class CoordinationApi {
|
|
18
19
|
#private;
|
|
19
|
-
constructor(runtime: StoreRuntime, authority: CredentialAuthority);
|
|
20
|
+
constructor(runtime: StoreRuntime, authority: CredentialAuthority, debugLogger?: DebugLogger);
|
|
20
21
|
armReplayTransition(): {
|
|
21
22
|
readonly reached: Promise<void>;
|
|
22
23
|
readonly release: () => void;
|