borgmcp-shared 1.0.0 → 1.1.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/CONTRIBUTING.md +4 -1
- package/README.md +28 -5
- package/RELEASES.md +2 -3
- package/dist/conformance/adapter.d.ts +6 -101
- package/dist/conformance/adapter.d.ts.map +1 -1
- package/dist/conformance/adapter.js +528 -267
- package/dist/conformance/adapter.js.map +1 -1
- package/dist/conformance/index.d.ts +2 -39
- package/dist/conformance/index.d.ts.map +1 -1
- package/dist/conformance/index.js +13 -42
- package/dist/conformance/index.js.map +1 -1
- package/dist/protocol/contract.d.ts +2 -2
- package/dist/protocol/contract.d.ts.map +1 -1
- package/dist/protocol/contract.js +3 -3
- package/dist/protocol/contract.js.map +1 -1
- package/dist/protocol/errors.d.ts +0 -14
- package/dist/protocol/errors.d.ts.map +1 -1
- package/dist/protocol/errors.js +0 -8
- package/dist/protocol/errors.js.map +1 -1
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/templates.d.ts +0 -1
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +1 -2
- package/dist/templates.js.map +1 -1
- package/docs/compatibility.md +11 -0
- package/docs/enrollment.md +6 -9
- package/docs/releases/1.0.1.md +5 -0
- package/docs/releases/1.1.0.md +19 -0
- package/docs/releasing.md +13 -23
- package/package.json +1 -2
- package/src/conformance/adapter.ts +779 -614
- package/src/conformance/index.ts +19 -62
- package/src/protocol/contract.ts +3 -3
- package/src/protocol/errors.ts +0 -17
- package/src/protocol/version.ts +2 -2
- package/src/templates.ts +1 -3
- package/docs/release-records.json +0 -247
package/CONTRIBUTING.md
CHANGED
|
@@ -15,7 +15,10 @@ Runtime dependency changes require explicit justification and a security review.
|
|
|
15
15
|
|
|
16
16
|
## Development Workflow
|
|
17
17
|
|
|
18
|
-
Use Node.js
|
|
18
|
+
Use Node.js 22.12.0 or newer. The repository's default development and release
|
|
19
|
+
runtime is Node.js 24.19.0, as pinned in `.nvmrc`.
|
|
20
|
+
|
|
21
|
+
Then run:
|
|
19
22
|
|
|
20
23
|
```sh
|
|
21
24
|
npm install
|
package/README.md
CHANGED
|
@@ -146,18 +146,25 @@ data, and the runner is test-runner-independent code, so they work with any test
|
|
|
146
146
|
runner supported by the implementation. Cases cover HTTP and canonical errors,
|
|
147
147
|
credential misuse, isolation and revocation, SSE framing/replay/cursor ordering,
|
|
148
148
|
executable enrollment authority/retry/mismatch/redaction and cube-create
|
|
149
|
-
idempotency, explicit repository resolution/adoption and conflict
|
|
149
|
+
idempotency, explicit repository resolution/adoption and conflict outcomes,
|
|
150
150
|
acks, claims, decisions, cube-scoped drone reassignment, role-class
|
|
151
151
|
and single-seat invariants, eviction exclusion, and terminal bearer signaling.
|
|
152
152
|
The same runner covers complete attach reports, own-seat metadata self-healing,
|
|
153
153
|
canonical repository identity, invalid-patch atomicity, cross-cube isolation,
|
|
154
|
-
secret non-echo, and
|
|
154
|
+
secret non-echo, and protocol-visible metadata non-interference.
|
|
155
155
|
The document lifecycle fixture covers immutable put/get, metadata-only listing,
|
|
156
156
|
removal delisting, and retained exact-id forensic resolution.
|
|
157
157
|
Manage-scoped cube, role, taxonomy, decision, and drone operations also share an
|
|
158
158
|
authority matrix: managing parents may mutate; known same-cube read/write
|
|
159
159
|
parents receive `403 ACCESS_DENIED`; drone sessions remain non-managing; and
|
|
160
160
|
no-grant, foreign, or unknown cubes remain hidden behind `404 NOT_FOUND`.
|
|
161
|
+
Denied role, decision, reassignment, and eviction operations have portable
|
|
162
|
+
protocol readback controls. Cube-directive and taxonomy writes currently have
|
|
163
|
+
no shared read route, so mutation-negative coverage for those two operations
|
|
164
|
+
remains implementation-owned.
|
|
165
|
+
The credential-free protocol preflight likewise has no portable before/after
|
|
166
|
+
state-enumeration route; shared conformance pins its exact response while
|
|
167
|
+
implementations retain mutation-negative coverage for their local state.
|
|
161
168
|
|
|
162
169
|
Decision write requests cap each `decision` and optional `rationale` field at
|
|
163
170
|
512 UTF-8 bytes independently. Response decoders continue to read longer
|
|
@@ -166,9 +173,25 @@ historical values so existing registry entries remain compatible.
|
|
|
166
173
|
Implement `ConformanceEnvironment` with raw responses from the target adapter,
|
|
167
174
|
then call `runAdapterConformance`. The runner creates and decodes envelopes,
|
|
168
175
|
drives state transitions, and decides pass/fail; adapters do not submit expected
|
|
169
|
-
results.
|
|
170
|
-
|
|
171
|
-
|
|
176
|
+
results. Adapters provide fixture creation plus narrowly scoped deterministic
|
|
177
|
+
cursor, replay-transition, and entry-ID controls. Shared fixtures assert only
|
|
178
|
+
protocol responses, streams, and subsequent protocol queries; persistence
|
|
179
|
+
layout, internal counters, and authority restart are implementation-owned test
|
|
180
|
+
concerns. A failed setup prerequisite is reported as skipped with its cause;
|
|
181
|
+
assertion failures do not change prerequisite availability, and unrelated
|
|
182
|
+
fixtures continue. A server or client adapter can run the portable
|
|
183
|
+
suite against its local/self-hosted implementation. The package does not define
|
|
184
|
+
a second authority, migration target, or fallback implementation.
|
|
185
|
+
|
|
186
|
+
`ConformanceAdmin` classifies its complete boundary as follows. Fixture setup is
|
|
187
|
+
`reset`, `createPrincipal`, `createCube`, `grantCube`, `revokeCubeGrant`,
|
|
188
|
+
`createRole`, `createDrone`, `issueManagedDroneSession`,
|
|
189
|
+
`revokeManagedDroneSession`, `grantCreateCubeCapability`, `issueDroneSession`,
|
|
190
|
+
`issueSingleUseInvitation`, `prepareRepositoryCube`, and `revokePrincipal`.
|
|
191
|
+
`seedEntryQueryIds` and `expireCursor` are deterministic synthetic controls for
|
|
192
|
+
states that random protocol IDs and wall-clock retention cannot reliably create.
|
|
193
|
+
`armReplayTransition` is the sole synchronization control. The shared boundary
|
|
194
|
+
contains no persistence inspection, internal counters, or process restart.
|
|
172
195
|
|
|
173
196
|
The package's own suite covers built-in templates, role-section patching,
|
|
174
197
|
broadcast high-water-mark ordering, drone-address formatting, runtime metadata
|
package/RELEASES.md
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
# Release History
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
prose below remains their record instead of reconstructed structured entries.
|
|
3
|
+
Historical incident prose below records releases that predate the current
|
|
4
|
+
tag-triggered publication workflow.
|
|
6
5
|
|
|
7
6
|
`borgmcp-shared@0.4.0` is the published clean-slate v2 baseline and is
|
|
8
7
|
immutable, but its artifact predates the local/self-hosted package cleanup. The
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type CubeTemplate, type LogCursor } from '../protocol/index.js';
|
|
2
2
|
export interface ConformanceHttpResponse {
|
|
3
3
|
status: number;
|
|
4
4
|
body: unknown;
|
|
@@ -15,89 +15,7 @@ export interface ConformanceRole {
|
|
|
15
15
|
export interface ConformanceDrone {
|
|
16
16
|
readonly id: string;
|
|
17
17
|
}
|
|
18
|
-
export interface ConformanceDroneRuntimeState {
|
|
19
|
-
readonly metadata: DroneRuntimeMetadata;
|
|
20
|
-
readonly metadata_reported: boolean;
|
|
21
|
-
readonly metadata_revision: number;
|
|
22
|
-
readonly cube_id: string;
|
|
23
|
-
readonly role_id: string;
|
|
24
|
-
readonly session_state: 'active' | 'revoked';
|
|
25
|
-
readonly evicted: boolean;
|
|
26
|
-
readonly last_seen: string;
|
|
27
|
-
readonly heartbeat_count: number;
|
|
28
|
-
readonly wake_count: number;
|
|
29
|
-
readonly log_count: number;
|
|
30
|
-
readonly model_turn_count: number;
|
|
31
|
-
readonly grant_access: ConformanceCubeAccess | null;
|
|
32
|
-
readonly server_capabilities: readonly string[];
|
|
33
|
-
readonly principal_revoked: boolean;
|
|
34
|
-
readonly session_bound: boolean;
|
|
35
|
-
readonly last_log_post: string | null;
|
|
36
|
-
readonly last_regen_at: string | null;
|
|
37
|
-
readonly last_read_log_at: string | null;
|
|
38
|
-
readonly last_event_received_at: string | null;
|
|
39
|
-
readonly wake_path: 'live';
|
|
40
|
-
readonly wake_alert: null;
|
|
41
|
-
readonly monitor_armed: boolean;
|
|
42
|
-
readonly sse_connected: boolean;
|
|
43
|
-
readonly claim_count: number;
|
|
44
|
-
readonly decision_count: number;
|
|
45
|
-
readonly routing_eligible: boolean;
|
|
46
|
-
}
|
|
47
18
|
export type ConformanceCubeAccess = 'read' | 'write' | 'manage';
|
|
48
|
-
export interface ConformanceCubeManagementState {
|
|
49
|
-
readonly directive: string;
|
|
50
|
-
readonly taxonomy_marker: string | null;
|
|
51
|
-
readonly role_ids: readonly string[];
|
|
52
|
-
readonly active_decision_ids: readonly string[];
|
|
53
|
-
readonly drones: ReadonlyArray<{
|
|
54
|
-
readonly id: string;
|
|
55
|
-
readonly role_id: string;
|
|
56
|
-
readonly evicted: boolean;
|
|
57
|
-
readonly session_revoked: boolean;
|
|
58
|
-
}>;
|
|
59
|
-
}
|
|
60
|
-
export interface ConformanceAuthorityState {
|
|
61
|
-
enrolled_clients: number;
|
|
62
|
-
enrollment_claims: number;
|
|
63
|
-
activity_acknowledgements: number;
|
|
64
|
-
activity_claims: number;
|
|
65
|
-
activity_log_entries: number;
|
|
66
|
-
cubes: number;
|
|
67
|
-
roles: number;
|
|
68
|
-
grants: number;
|
|
69
|
-
server_capabilities: number;
|
|
70
|
-
cube_create_bindings: number;
|
|
71
|
-
repository_associations: number;
|
|
72
|
-
}
|
|
73
|
-
export interface ConformanceCreatedCubeState {
|
|
74
|
-
cube_exists: boolean;
|
|
75
|
-
creator_has_grant: boolean;
|
|
76
|
-
creator_access: 'manage' | null;
|
|
77
|
-
grant_count: number;
|
|
78
|
-
role_count: number;
|
|
79
|
-
name: string;
|
|
80
|
-
working_repo_name: string;
|
|
81
|
-
repository: CreateCubeRepository;
|
|
82
|
-
template: CubeTemplate;
|
|
83
|
-
human_seat_role_id: string;
|
|
84
|
-
default_worker_role_id: string;
|
|
85
|
-
human_seat_role_matches: boolean;
|
|
86
|
-
default_worker_role_matches: boolean;
|
|
87
|
-
}
|
|
88
|
-
export interface ConformanceDeletedCubeState {
|
|
89
|
-
readonly cube_exists: boolean;
|
|
90
|
-
readonly role_count: number;
|
|
91
|
-
readonly drone_count: number;
|
|
92
|
-
readonly log_count: number;
|
|
93
|
-
readonly claim_count: number;
|
|
94
|
-
readonly decision_count: number;
|
|
95
|
-
readonly grant_count: number;
|
|
96
|
-
readonly cube_create_binding_count: number;
|
|
97
|
-
readonly repository_association_count: number;
|
|
98
|
-
readonly active_stream_count: number;
|
|
99
|
-
readonly terminal_credential_count: number;
|
|
100
|
-
}
|
|
101
19
|
export interface ConformanceRepositoryCubeFixture {
|
|
102
20
|
cube_id: string;
|
|
103
21
|
name: string;
|
|
@@ -106,11 +24,6 @@ export interface ConformanceRepositoryCubeFixture {
|
|
|
106
24
|
default_worker_role_id: string;
|
|
107
25
|
access: 'manage';
|
|
108
26
|
}
|
|
109
|
-
export interface ConformanceEnrollmentPrincipalState {
|
|
110
|
-
response_client_matches: boolean;
|
|
111
|
-
active_credential_bindings: number;
|
|
112
|
-
bound_credential_matches_enrollment: boolean;
|
|
113
|
-
}
|
|
114
27
|
export interface ConformanceReplayBarrier {
|
|
115
28
|
readonly reached: Promise<void>;
|
|
116
29
|
release(): void;
|
|
@@ -120,7 +33,6 @@ export interface ConformanceStreamResponse extends ConformanceHttpResponse {
|
|
|
120
33
|
}
|
|
121
34
|
export interface ConformanceAdmin {
|
|
122
35
|
reset(): Promise<void>;
|
|
123
|
-
restartAuthority(): Promise<void>;
|
|
124
36
|
createPrincipal(name: string): Promise<ConformancePrincipal>;
|
|
125
37
|
createCube(name: string): Promise<ConformanceCube>;
|
|
126
38
|
grantCube(principal: ConformancePrincipal, cube: ConformanceCube, access?: ConformanceCubeAccess): Promise<void>;
|
|
@@ -133,28 +45,20 @@ export interface ConformanceAdmin {
|
|
|
133
45
|
readonly isDefault?: boolean;
|
|
134
46
|
readonly isMandatory?: boolean;
|
|
135
47
|
}): Promise<ConformanceRole>;
|
|
136
|
-
|
|
48
|
+
seedEntryQueryIds(cube: ConformanceCube, entries: readonly {
|
|
49
|
+
current_id: string;
|
|
50
|
+
query_id: string;
|
|
51
|
+
}[]): Promise<void>;
|
|
137
52
|
createDrone(principal: ConformancePrincipal, cube: ConformanceCube, role: ConformanceRole): Promise<ConformanceDrone>;
|
|
138
53
|
issueManagedDroneSession(drone: ConformanceDrone): Promise<string>;
|
|
139
54
|
revokeManagedDroneSession(drone: ConformanceDrone): Promise<void>;
|
|
140
|
-
inspectManagedDrone(drone: ConformanceDrone): Promise<{
|
|
141
|
-
readonly role_id: string;
|
|
142
|
-
readonly evicted: boolean;
|
|
143
|
-
readonly session_revoked: boolean;
|
|
144
|
-
}>;
|
|
145
|
-
inspectDroneRuntimeState(drone: ConformanceDrone): Promise<ConformanceDroneRuntimeState>;
|
|
146
|
-
inspectCubeManagementState(cube: ConformanceCube): Promise<ConformanceCubeManagementState>;
|
|
147
55
|
grantCreateCubeCapability(principal: ConformancePrincipal): Promise<void>;
|
|
148
56
|
issueDroneSession(principal: ConformancePrincipal): Promise<string>;
|
|
149
57
|
issueSingleUseInvitation(principal: ConformancePrincipal, purpose: 'owner' | 'client'): Promise<string>;
|
|
150
|
-
observeAuthorityState(): Promise<ConformanceAuthorityState>;
|
|
151
|
-
inspectCreatedCube(creator: ConformancePrincipal, response: CreateCubeResponse): Promise<ConformanceCreatedCubeState>;
|
|
152
|
-
inspectDeletedCube(cube: ConformanceCube): Promise<ConformanceDeletedCubeState>;
|
|
153
58
|
prepareRepositoryCube(cube: ConformanceCube, input: {
|
|
154
59
|
name: string;
|
|
155
60
|
template: CubeTemplate;
|
|
156
61
|
}): Promise<ConformanceRepositoryCubeFixture>;
|
|
157
|
-
inspectEnrollmentPrincipal(principal: ConformancePrincipal, responseClientId: string): Promise<ConformanceEnrollmentPrincipalState>;
|
|
158
62
|
revokePrincipal(principal: ConformancePrincipal): Promise<void>;
|
|
159
63
|
expireCursor(cube: ConformanceCube, cursor: LogCursor): Promise<void>;
|
|
160
64
|
armReplayTransition(): ConformanceReplayBarrier;
|
|
@@ -305,6 +209,7 @@ export type AdapterConformanceFixtureId = (typeof ADAPTER_CONFORMANCE_FIXTURES)[
|
|
|
305
209
|
export interface AdapterConformanceResult {
|
|
306
210
|
id: AdapterConformanceFixtureId;
|
|
307
211
|
ok: boolean;
|
|
212
|
+
skipped?: boolean;
|
|
308
213
|
observations: Record<string, unknown>;
|
|
309
214
|
error?: string;
|
|
310
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAoCL,KAAK,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/conformance/adapter.ts"],"names":[],"mappings":"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"}
|