borgmcp 5.4.1 → 5.6.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 +15 -0
- package/dist/assimilate-cmd.d.ts +8 -1
- package/dist/assimilate-cmd.d.ts.map +1 -1
- package/dist/assimilate-cmd.js +54 -21
- package/dist/assimilate-cmd.js.map +1 -1
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +30 -0
- package/dist/claude.js.map +1 -1
- package/dist/cli-help.d.ts +1 -0
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +45 -0
- package/dist/cli-help.js.map +1 -1
- package/dist/docs-sections.d.ts.map +1 -1
- package/dist/docs-sections.js +8 -0
- package/dist/docs-sections.js.map +1 -1
- package/dist/local-server-cursor.d.ts +10 -1
- package/dist/local-server-cursor.d.ts.map +1 -1
- package/dist/local-server-cursor.js +64 -5
- package/dist/local-server-cursor.js.map +1 -1
- package/dist/log-stream.d.ts +13 -0
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +45 -13
- package/dist/log-stream.js.map +1 -1
- package/dist/remote-client.d.ts +17 -0
- package/dist/remote-client.d.ts.map +1 -1
- package/dist/remote-client.js +37 -15
- package/dist/remote-client.js.map +1 -1
- package/dist/representative-cmd.d.ts +94 -0
- package/dist/representative-cmd.d.ts.map +1 -0
- package/dist/representative-cmd.js +290 -0
- package/dist/representative-cmd.js.map +1 -0
- package/dist/representative-core.d.ts +243 -0
- package/dist/representative-core.d.ts.map +1 -0
- package/dist/representative-core.js +679 -0
- package/dist/representative-core.js.map +1 -0
- package/dist/representative-delivery-store.d.ts +79 -0
- package/dist/representative-delivery-store.d.ts.map +1 -0
- package/dist/representative-delivery-store.js +233 -0
- package/dist/representative-delivery-store.js.map +1 -0
- package/dist/representative-listener-store.d.ts +46 -0
- package/dist/representative-listener-store.d.ts.map +1 -0
- package/dist/representative-listener-store.js +119 -0
- package/dist/representative-listener-store.js.map +1 -0
- package/dist/representative-listener.d.ts +32 -0
- package/dist/representative-listener.d.ts.map +1 -0
- package/dist/representative-listener.js +293 -0
- package/dist/representative-listener.js.map +1 -0
- package/dist/representative-mcp.d.ts +37 -0
- package/dist/representative-mcp.d.ts.map +1 -0
- package/dist/representative-mcp.js +211 -0
- package/dist/representative-mcp.js.map +1 -0
- package/dist/representative-owner.d.ts +10 -0
- package/dist/representative-owner.d.ts.map +1 -0
- package/dist/representative-owner.js +107 -0
- package/dist/representative-owner.js.map +1 -0
- package/dist/representative-store.d.ts +68 -0
- package/dist/representative-store.d.ts.map +1 -0
- package/dist/representative-store.js +173 -0
- package/dist/representative-store.js.map +1 -0
- package/dist/seat-probe.d.ts +1 -0
- package/dist/seat-probe.d.ts.map +1 -1
- package/dist/seat-probe.js +1 -1
- package/dist/seat-probe.js.map +1 -1
- package/dist/seat-store.d.ts +13 -0
- package/dist/seat-store.d.ts.map +1 -1
- package/dist/seat-store.js +55 -10
- package/dist/seat-store.js.map +1 -1
- package/dist/server-trust.d.ts +10 -0
- package/dist/server-trust.d.ts.map +1 -1
- package/dist/server-trust.js +23 -6
- package/dist/server-trust.js.map +1 -1
- package/dist/stream-owner.d.ts +10 -0
- package/dist/stream-owner.d.ts.map +1 -1
- package/dist/stream-owner.js +129 -21
- package/dist/stream-owner.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/docs/HUMAN_REPRESENTATIVE.md +434 -0
- package/package.json +1 -1
- package/src/assimilate-cmd.ts +73 -22
- package/src/claude.ts +30 -0
- package/src/cli-help.ts +48 -0
- package/src/docs-sections.ts +8 -0
- package/src/local-server-cursor.ts +56 -4
- package/src/log-stream.ts +47 -14
- package/src/remote-client.ts +54 -13
- package/src/representative-cmd.ts +369 -0
- package/src/representative-core.ts +908 -0
- package/src/representative-delivery-store.ts +235 -0
- package/src/representative-listener-store.ts +115 -0
- package/src/representative-listener.ts +215 -0
- package/src/representative-mcp.ts +250 -0
- package/src/representative-owner.ts +105 -0
- package/src/representative-store.ts +224 -0
- package/src/seat-probe.ts +1 -1
- package/src/seat-store.ts +61 -10
- package/src/server-trust.ts +25 -6
- package/src/stream-owner.ts +129 -20
- package/src/unknown-subcommand.ts +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-core.js","sourceRoot":"","sources":["../src/representative-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { LocalServerCursor } from './local-server-cursor.js';
|
|
2
|
+
import { type RepresentativeBinding } from './representative-store.js';
|
|
3
|
+
/**
|
|
4
|
+
* `checkpoint`: the host's durable delivery point; only `deliver` moves it.
|
|
5
|
+
* `readThrough`: the highest entry any `read` returned; `deliver` may not pass it.
|
|
6
|
+
*/
|
|
7
|
+
export interface DeliveryState {
|
|
8
|
+
checkpoint: LocalServerCursor | null;
|
|
9
|
+
readThrough: LocalServerCursor | null;
|
|
10
|
+
/**
|
|
11
|
+
* Entries a read returned since the checkpoint last moved: `deliver` checks
|
|
12
|
+
* membership here, not just the range. Every window starts at the
|
|
13
|
+
* checkpoint, so this stays within the largest window (two, with and without
|
|
14
|
+
* broadcasts), and deliver prunes it.
|
|
15
|
+
*/
|
|
16
|
+
returned: LocalServerCursor[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* This binding's own checkpoint file exists but cannot be trusted. It is never
|
|
20
|
+
* used and never silently reset: every tool except status refuses until the
|
|
21
|
+
* operator inspects and removes it.
|
|
22
|
+
*/
|
|
23
|
+
export declare class DeliveryCheckpointError extends Error {
|
|
24
|
+
readonly code = "REPRESENTATIVE_CHECKPOINT_INVALID";
|
|
25
|
+
constructor(file: string, reason: string);
|
|
26
|
+
}
|
|
27
|
+
export declare function deliveryPaths(binding: RepresentativeBinding): {
|
|
28
|
+
directory: string;
|
|
29
|
+
file: string;
|
|
30
|
+
};
|
|
31
|
+
/** (created_at, id) order, the server log order. */
|
|
32
|
+
export declare function comparePoints(a: LocalServerCursor, b: LocalServerCursor | null): number;
|
|
33
|
+
/**
|
|
34
|
+
* The one-time upgrade tombstone for a seat. Its existence alone means the
|
|
35
|
+
* legacy import was attempted; nothing in it is ever read back as a position.
|
|
36
|
+
* Its directory name is not 64 hex characters, so the generation scan never
|
|
37
|
+
* mistakes it for a checkpoint.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createDeliveryStore(binding: RepresentativeBinding): {
|
|
40
|
+
/** Null when this binding generation has no checkpoint yet. A corrupt file fails closed. */
|
|
41
|
+
load: () => Promise<DeliveryState | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Whether the seat's upgrade tombstone exists. Any object at that path,
|
|
44
|
+
* readable or not, counts, so a planted or damaged marker can only cause a
|
|
45
|
+
* replay (duplicates), never an import or a skip.
|
|
46
|
+
*/
|
|
47
|
+
migrated(): Promise<boolean>;
|
|
48
|
+
/**
|
|
49
|
+
* Create the tombstone exclusively (O_EXCL, no-follow, 0600, fsynced).
|
|
50
|
+
* False when it already exists: another initializer got there first.
|
|
51
|
+
* `guard` runs just before the create.
|
|
52
|
+
*/
|
|
53
|
+
markMigrated(guard?: () => Promise<void>): Promise<boolean>;
|
|
54
|
+
/**
|
|
55
|
+
* Run a first-call initialization alone for this seat within the process:
|
|
56
|
+
* overlapping first reads see each other's result instead of both
|
|
57
|
+
* importing. Other processes are excluded by the tools lease, and the
|
|
58
|
+
* exclusive tombstone create backs that up.
|
|
59
|
+
*/
|
|
60
|
+
initialize<T>(operation: () => Promise<T>): Promise<T>;
|
|
61
|
+
/**
|
|
62
|
+
* Whether any other generation of this seat already has a checkpoint, which
|
|
63
|
+
* means the one-time upgrade from the unread cursor already happened. An
|
|
64
|
+
* unreadable or unsafe sibling counts as one: the new generation then
|
|
65
|
+
* replays its history (duplicates, never loss) instead of trusting it.
|
|
66
|
+
*/
|
|
67
|
+
otherGenerationExists(): Promise<boolean>;
|
|
68
|
+
/**
|
|
69
|
+
* Move either field forward only, from the state on disk at write time, in
|
|
70
|
+
* one atomic durable 0600 write. Always writes when no file exists yet, so a
|
|
71
|
+
* completed migration is never repeated. `guard` runs just before the write.
|
|
72
|
+
* Returns the states before and after, so callers report the real transition.
|
|
73
|
+
*/
|
|
74
|
+
advance(update: Partial<DeliveryState>, guard?: () => Promise<void>): Promise<{
|
|
75
|
+
before: DeliveryState | null;
|
|
76
|
+
after: DeliveryState;
|
|
77
|
+
}>;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=representative-delivery-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-delivery-store.d.ts","sourceRoot":"","sources":["../src/representative-delivery-store.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAA4C,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGjH;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAOD;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,uCAAuC;gBACxC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKzC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,qBAAqB;;;EAG3D;AAsBD,oDAAoD;AACpD,wBAAgB,aAAa,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAAG,MAAM,CAIvF;AAwBD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB;IAwB9D,4FAA4F;gBAnBvE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAqBlD;;;;OAIG;gBACe,OAAO,CAAC,OAAO,CAAC;IASlC;;;;OAIG;yBACwB,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBjE;;;;;OAKG;eACQ,CAAC,aAAa,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAMtD;;;;;OAKG;6BAC4B,OAAO,CAAC,OAAO,CAAC;IAc/C;;;;;OAKG;oBACa,OAAO,CAAC,aAAa,CAAC,UAAU,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,aAAa,CAAA;KAAE,CAAC;EA2BxI"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
/** Private per-binding DELIVERED checkpoint and read fence for the representative. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { constants } from 'node:fs';
|
|
4
|
+
import { lstat, open, readdir } from 'node:fs/promises';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { borgConfigRoot } from './private-root.js';
|
|
7
|
+
import { atomicWrite0600, readStoreFile } from './seat-store.js';
|
|
8
|
+
import { bindingFingerprint, isRepresentativeUuid } from './representative-store.js';
|
|
9
|
+
import { validatePrivateDirectory } from './representative-listener-store.js';
|
|
10
|
+
/** Two windows of at most 50 replies (with and without broadcasts). */
|
|
11
|
+
const RETURNED_CAP = 100;
|
|
12
|
+
const deliveryRoot = () => join(borgConfigRoot(), 'representative-delivery');
|
|
13
|
+
/**
|
|
14
|
+
* This binding's own checkpoint file exists but cannot be trusted. It is never
|
|
15
|
+
* used and never silently reset: every tool except status refuses until the
|
|
16
|
+
* operator inspects and removes it.
|
|
17
|
+
*/
|
|
18
|
+
export class DeliveryCheckpointError extends Error {
|
|
19
|
+
code = 'REPRESENTATIVE_CHECKPOINT_INVALID';
|
|
20
|
+
constructor(file, reason) {
|
|
21
|
+
super(`The representative delivery checkpoint ${file} is invalid (${reason}). Nothing was read or delivered. ` +
|
|
22
|
+
'Inspect the file and remove it; the next read then replays every addressed reply from the start.');
|
|
23
|
+
this.name = 'DeliveryCheckpointError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export function deliveryPaths(binding) {
|
|
27
|
+
const directory = join(deliveryRoot(), bindingFingerprint(binding));
|
|
28
|
+
return { directory, file: join(directory, 'checkpoint.json') };
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* The seat every generation of a binding shares: the same fields as the
|
|
32
|
+
* client unread-cursor key, without Coordinator or boundAt.
|
|
33
|
+
*/
|
|
34
|
+
function seatKey(binding) {
|
|
35
|
+
return createHash('sha256').update(JSON.stringify([
|
|
36
|
+
binding.origin, binding.trustIdentity, binding.cubeId, binding.representativeDroneId,
|
|
37
|
+
])).digest('hex');
|
|
38
|
+
}
|
|
39
|
+
function point(value) {
|
|
40
|
+
if (value === null)
|
|
41
|
+
return null;
|
|
42
|
+
const candidate = value;
|
|
43
|
+
if (!isRepresentativeUuid(candidate?.id) || typeof candidate?.created_at !== 'string' ||
|
|
44
|
+
!Number.isFinite(Date.parse(candidate.created_at))) {
|
|
45
|
+
throw new Error('Representative delivery checkpoint is invalid');
|
|
46
|
+
}
|
|
47
|
+
return { id: candidate.id, created_at: candidate.created_at };
|
|
48
|
+
}
|
|
49
|
+
/** (created_at, id) order, the server log order. */
|
|
50
|
+
export function comparePoints(a, b) {
|
|
51
|
+
if (b === null)
|
|
52
|
+
return 1;
|
|
53
|
+
if (a.created_at !== b.created_at)
|
|
54
|
+
return a.created_at < b.created_at ? -1 : 1;
|
|
55
|
+
return a.id === b.id ? 0 : a.id < b.id ? -1 : 1;
|
|
56
|
+
}
|
|
57
|
+
async function readFile(directory, file) {
|
|
58
|
+
if (!await validatePrivateDirectory(directory, false))
|
|
59
|
+
return null;
|
|
60
|
+
const raw = await readStoreFile(file, { secureRoot: directory, verifyLeafIdentity: true, createRoot: false });
|
|
61
|
+
if (raw === null)
|
|
62
|
+
return null;
|
|
63
|
+
let parsed;
|
|
64
|
+
try {
|
|
65
|
+
parsed = JSON.parse(raw);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
throw new Error('Representative delivery checkpoint is invalid');
|
|
69
|
+
}
|
|
70
|
+
if (parsed?.version !== 1 || typeof parsed.seat !== 'string')
|
|
71
|
+
throw new Error('Representative delivery checkpoint is invalid');
|
|
72
|
+
const returned = parsed.returned ?? [];
|
|
73
|
+
if (!Array.isArray(returned) || returned.length > RETURNED_CAP)
|
|
74
|
+
throw new Error('Representative delivery checkpoint is invalid');
|
|
75
|
+
return { seat: parsed.seat, state: {
|
|
76
|
+
checkpoint: point(parsed.checkpoint), readThrough: point(parsed.readThrough),
|
|
77
|
+
returned: returned.map((value) => point(value)).map((value) => { if (!value)
|
|
78
|
+
throw new Error('Representative delivery checkpoint is invalid'); return value; }),
|
|
79
|
+
} };
|
|
80
|
+
}
|
|
81
|
+
// One queue per state file: overlapping tool calls in one process never write
|
|
82
|
+
// from a stale load. Other processes are excluded by the tools lease.
|
|
83
|
+
const queues = new Map();
|
|
84
|
+
const later = (a, b) => a === null ? b : b === null ? a : comparePoints(a, b) >= 0 ? a : b;
|
|
85
|
+
/**
|
|
86
|
+
* The one-time upgrade tombstone for a seat. Its existence alone means the
|
|
87
|
+
* legacy import was attempted; nothing in it is ever read back as a position.
|
|
88
|
+
* Its directory name is not 64 hex characters, so the generation scan never
|
|
89
|
+
* mistakes it for a checkpoint.
|
|
90
|
+
*/
|
|
91
|
+
export function createDeliveryStore(binding) {
|
|
92
|
+
const paths = deliveryPaths(binding);
|
|
93
|
+
const seat = seatKey(binding);
|
|
94
|
+
const marker = { directory: join(deliveryRoot(), `seat-${seat}`), file: join(deliveryRoot(), `seat-${seat}`, 'migration.json') };
|
|
95
|
+
const options = { secureRoot: paths.directory, verifyLeafIdentity: true, createRoot: false };
|
|
96
|
+
const load = async () => {
|
|
97
|
+
let saved;
|
|
98
|
+
try {
|
|
99
|
+
saved = await readFile(paths.directory, paths.file);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
throw new DeliveryCheckpointError(paths.file, error instanceof Error ? error.message : 'unreadable');
|
|
103
|
+
}
|
|
104
|
+
if (!saved)
|
|
105
|
+
return null;
|
|
106
|
+
if (saved.seat !== seat)
|
|
107
|
+
throw new DeliveryCheckpointError(paths.file, 'it belongs to another representative seat');
|
|
108
|
+
const { checkpoint, readThrough } = saved.state;
|
|
109
|
+
if (checkpoint && (readThrough === null || comparePoints(checkpoint, readThrough) > 0)) {
|
|
110
|
+
throw new DeliveryCheckpointError(paths.file, 'its checkpoint is beyond its read fence');
|
|
111
|
+
}
|
|
112
|
+
if (saved.state.returned.some((entry) => comparePoints(entry, checkpoint) <= 0 || comparePoints(entry, readThrough) > 0)) {
|
|
113
|
+
throw new DeliveryCheckpointError(paths.file, 'a returned entry lies outside its window');
|
|
114
|
+
}
|
|
115
|
+
return saved.state;
|
|
116
|
+
};
|
|
117
|
+
return {
|
|
118
|
+
/** Null when this binding generation has no checkpoint yet. A corrupt file fails closed. */
|
|
119
|
+
load,
|
|
120
|
+
/**
|
|
121
|
+
* Whether the seat's upgrade tombstone exists. Any object at that path,
|
|
122
|
+
* readable or not, counts, so a planted or damaged marker can only cause a
|
|
123
|
+
* replay (duplicates), never an import or a skip.
|
|
124
|
+
*/
|
|
125
|
+
async migrated() {
|
|
126
|
+
try {
|
|
127
|
+
if (!await validatePrivateDirectory(marker.directory, false))
|
|
128
|
+
return false;
|
|
129
|
+
await lstat(marker.file);
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
return error.code !== 'ENOENT';
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
/**
|
|
137
|
+
* Create the tombstone exclusively (O_EXCL, no-follow, 0600, fsynced).
|
|
138
|
+
* False when it already exists: another initializer got there first.
|
|
139
|
+
* `guard` runs just before the create.
|
|
140
|
+
*/
|
|
141
|
+
async markMigrated(guard) {
|
|
142
|
+
await guard?.();
|
|
143
|
+
await validatePrivateDirectory(marker.directory, true);
|
|
144
|
+
let handle;
|
|
145
|
+
try {
|
|
146
|
+
handle = await open(marker.file, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
if (error.code === 'EEXIST')
|
|
150
|
+
return false;
|
|
151
|
+
throw error;
|
|
152
|
+
}
|
|
153
|
+
try {
|
|
154
|
+
await handle.writeFile(JSON.stringify({ version: 1, seat }) + '\n');
|
|
155
|
+
await handle.sync();
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
await handle.close();
|
|
159
|
+
}
|
|
160
|
+
return true;
|
|
161
|
+
},
|
|
162
|
+
/**
|
|
163
|
+
* Run a first-call initialization alone for this seat within the process:
|
|
164
|
+
* overlapping first reads see each other's result instead of both
|
|
165
|
+
* importing. Other processes are excluded by the tools lease, and the
|
|
166
|
+
* exclusive tombstone create backs that up.
|
|
167
|
+
*/
|
|
168
|
+
initialize(operation) {
|
|
169
|
+
const key = `seat:${seat}`;
|
|
170
|
+
const result = (queues.get(key) ?? Promise.resolve()).then(operation, operation);
|
|
171
|
+
queues.set(key, result.catch(() => { }));
|
|
172
|
+
return result;
|
|
173
|
+
},
|
|
174
|
+
/**
|
|
175
|
+
* Whether any other generation of this seat already has a checkpoint, which
|
|
176
|
+
* means the one-time upgrade from the unread cursor already happened. An
|
|
177
|
+
* unreadable or unsafe sibling counts as one: the new generation then
|
|
178
|
+
* replays its history (duplicates, never loss) instead of trusting it.
|
|
179
|
+
*/
|
|
180
|
+
async otherGenerationExists() {
|
|
181
|
+
if (!await validatePrivateDirectory(deliveryRoot(), false))
|
|
182
|
+
return false;
|
|
183
|
+
const own = bindingFingerprint(binding);
|
|
184
|
+
for (const name of await readdir(deliveryRoot())) {
|
|
185
|
+
if (name === own || !/^[0-9a-f]{64}$/.test(name))
|
|
186
|
+
continue;
|
|
187
|
+
const directory = join(deliveryRoot(), name);
|
|
188
|
+
try {
|
|
189
|
+
if ((await readFile(directory, join(directory, 'checkpoint.json')))?.seat === seat)
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return false;
|
|
197
|
+
},
|
|
198
|
+
/**
|
|
199
|
+
* Move either field forward only, from the state on disk at write time, in
|
|
200
|
+
* one atomic durable 0600 write. Always writes when no file exists yet, so a
|
|
201
|
+
* completed migration is never repeated. `guard` runs just before the write.
|
|
202
|
+
* Returns the states before and after, so callers report the real transition.
|
|
203
|
+
*/
|
|
204
|
+
advance(update, guard) {
|
|
205
|
+
const run = async () => {
|
|
206
|
+
const before = await load();
|
|
207
|
+
const checkpoint = later(before?.checkpoint ?? null, update.checkpoint ?? null);
|
|
208
|
+
const readThrough = later(before?.readThrough ?? null, update.readThrough ?? null);
|
|
209
|
+
// Union of returned windows, pruned to entries still after the checkpoint.
|
|
210
|
+
const returned = [...(before?.returned ?? []), ...(update.returned ?? [])]
|
|
211
|
+
.filter((entry, index, all) => all.findIndex((other) => other.id === entry.id) === index)
|
|
212
|
+
.filter((entry) => comparePoints(entry, checkpoint) > 0)
|
|
213
|
+
.sort((a, b) => comparePoints(a, b))
|
|
214
|
+
.slice(-RETURNED_CAP);
|
|
215
|
+
const after = { checkpoint, readThrough, returned };
|
|
216
|
+
// Invariant on every write: the delivered checkpoint never passes the read fence.
|
|
217
|
+
if (checkpoint && (readThrough === null || comparePoints(checkpoint, readThrough) > 0)) {
|
|
218
|
+
throw new DeliveryCheckpointError(paths.file, 'a write would move the checkpoint beyond the read fence');
|
|
219
|
+
}
|
|
220
|
+
if (before && JSON.stringify(before) === JSON.stringify(after))
|
|
221
|
+
return { before, after: before };
|
|
222
|
+
await guard?.();
|
|
223
|
+
await validatePrivateDirectory(paths.directory, true);
|
|
224
|
+
await atomicWrite0600(paths.file, JSON.stringify({ version: 1, seat, ...after }) + '\n', options);
|
|
225
|
+
return { before, after };
|
|
226
|
+
};
|
|
227
|
+
const result = (queues.get(paths.file) ?? Promise.resolve()).then(run, run);
|
|
228
|
+
queues.set(paths.file, result.catch(() => { }));
|
|
229
|
+
return result;
|
|
230
|
+
},
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=representative-delivery-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-delivery-store.js","sourceRoot":"","sources":["../src/representative-delivery-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type EnrichedEntry } from './log-stream.js';
|
|
2
|
+
import type { LocalServerCursor } from './local-server-cursor.js';
|
|
3
|
+
import type { RepresentativeBinding } from './representative-store.js';
|
|
4
|
+
export interface ListenerHint {
|
|
5
|
+
event: 'entry';
|
|
6
|
+
entry_id: string;
|
|
7
|
+
created_at: string;
|
|
8
|
+
from_label: string;
|
|
9
|
+
from_role: string;
|
|
10
|
+
visibility: 'direct' | 'broadcast' | null;
|
|
11
|
+
request_id: string | null;
|
|
12
|
+
documents: number | null;
|
|
13
|
+
replay: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare function listenerPaths(binding: RepresentativeBinding): {
|
|
16
|
+
directory: string;
|
|
17
|
+
inbox: string;
|
|
18
|
+
state: string;
|
|
19
|
+
};
|
|
20
|
+
/** Validate a private directory under the Borg config root and every ancestor
|
|
21
|
+
* with the store's policy; never repairs unsafe state. False when absent. */
|
|
22
|
+
export declare function validatePrivateDirectory(directory: string, create: boolean): Promise<boolean>;
|
|
23
|
+
export declare function createListenerInbox(binding: RepresentativeBinding, guard?: () => Promise<void>): {
|
|
24
|
+
paths: {
|
|
25
|
+
directory: string;
|
|
26
|
+
inbox: string;
|
|
27
|
+
state: string;
|
|
28
|
+
};
|
|
29
|
+
snapshot: () => Promise<{
|
|
30
|
+
watermark: string | null;
|
|
31
|
+
inbox: string;
|
|
32
|
+
}>;
|
|
33
|
+
dedupeCursor: () => Promise<LocalServerCursor | null>;
|
|
34
|
+
cursor: () => Promise<LocalServerCursor | null>;
|
|
35
|
+
clearCursor: () => Promise<void>;
|
|
36
|
+
replay: (after: string) => Promise<{
|
|
37
|
+
missing: boolean;
|
|
38
|
+
hints: ListenerHint[];
|
|
39
|
+
}>;
|
|
40
|
+
append: (entry: EnrichedEntry & {
|
|
41
|
+
id: string;
|
|
42
|
+
created_at: string;
|
|
43
|
+
visibility: "direct" | "broadcast";
|
|
44
|
+
}, catchupCursor?: LocalServerCursor | null) => Promise<ListenerHint | null>;
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=representative-listener-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-listener-store.d.ts","sourceRoot":"","sources":["../src/representative-listener-store.ts"],"names":[],"mappings":"AAKA,OAAO,EAA4F,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/I,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAC5F,UAAU,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;CACjH;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,qBAAqB;;;;EAK3D;AAaD;6EAC6E;AAC7E,wBAAsB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAOnG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,GAAE,MAAM,OAAO,CAAC,IAAI,CAAkB;;;;;;;;;;;;;oBA0CrF,MAAM;;;;oBAIN,aAAa,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,QAAQ,GAAG,WAAW,CAAA;KAAE,kBAAiB,iBAAiB,GAAG,IAAI;EAsBxJ"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/** Bounded private listener tail and crash-recoverable hint metadata. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
3
|
+
import { join, relative, sep } from 'node:path';
|
|
4
|
+
import { borgConfigRoot, borgHomeRoot } from './private-root.js';
|
|
5
|
+
import { assertSecureRoot, atomicWrite0600, readStoreFile } from './seat-store.js';
|
|
6
|
+
import { formatInboxLine, inboxRawHasEntry, INBOX_TAIL_LINES_CAP, INBOX_TAIL_TRIM_THRESHOLD_LINES } from './log-stream.js';
|
|
7
|
+
import { isRepresentativeUuid } from './representative-store.js';
|
|
8
|
+
const empty = () => ({ version: 1, watermark: null, resumeReset: false, hints: {} });
|
|
9
|
+
export function listenerPaths(binding) {
|
|
10
|
+
const key = createHash('sha256').update(JSON.stringify([binding.worktree, binding.origin, binding.trustIdentity,
|
|
11
|
+
binding.cubeId, binding.representativeDroneId, binding.coordinatorDroneId, binding.boundAt])).digest('hex');
|
|
12
|
+
const directory = join(borgConfigRoot(), 'representative-inboxes', key);
|
|
13
|
+
return { directory, inbox: join(directory, 'inbox.log'), state: join(directory, 'stream.json') };
|
|
14
|
+
}
|
|
15
|
+
function requestId(message) {
|
|
16
|
+
return /\brequest_id:\s*([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})(?![0-9a-f-])/i.exec(message)?.[1] ?? null;
|
|
17
|
+
}
|
|
18
|
+
function parseLine(line) {
|
|
19
|
+
const match = /^(\S+) (.*?) \((.*?)\): \[entry_id: ([0-9a-f-]+)\] (.*)$/i.exec(line);
|
|
20
|
+
if (!match || !isRepresentativeUuid(match[4]) || !Number.isFinite(Date.parse(match[1])))
|
|
21
|
+
throw new Error('Invalid representative inbox line');
|
|
22
|
+
return { id: match[4], created_at: match[1], label: match[2], role: match[3], message: match[5] };
|
|
23
|
+
}
|
|
24
|
+
function newer(a, b) {
|
|
25
|
+
return b === null || a.created_at > b.created_at || (a.created_at === b.created_at && a.id > b.id);
|
|
26
|
+
}
|
|
27
|
+
/** Validate a private directory under the Borg config root and every ancestor
|
|
28
|
+
* with the store's policy; never repairs unsafe state. False when absent. */
|
|
29
|
+
export async function validatePrivateDirectory(directory, create) {
|
|
30
|
+
let current = borgHomeRoot();
|
|
31
|
+
for (const component of relative(current, directory).split(sep)) {
|
|
32
|
+
if (!await assertSecureRoot(current, current === borgConfigRoot() || current.startsWith(borgConfigRoot() + sep) ? 'private' : 'owner-controlled', create))
|
|
33
|
+
return false;
|
|
34
|
+
current = join(current, component);
|
|
35
|
+
}
|
|
36
|
+
return assertSecureRoot(current, 'private', create);
|
|
37
|
+
}
|
|
38
|
+
export function createListenerInbox(binding, guard = async () => { }) {
|
|
39
|
+
const paths = listenerPaths(binding);
|
|
40
|
+
const options = { secureRoot: paths.directory, verifyLeafIdentity: true, createRoot: false };
|
|
41
|
+
const validate = (create) => validatePrivateDirectory(paths.directory, create);
|
|
42
|
+
const load = async () => {
|
|
43
|
+
if (!await validate(false))
|
|
44
|
+
return { state: empty(), lines: [] };
|
|
45
|
+
const raw = await readStoreFile(paths.inbox, options) ?? '';
|
|
46
|
+
const saved = await readStoreFile(paths.state, options);
|
|
47
|
+
let state = empty();
|
|
48
|
+
if (saved !== null) {
|
|
49
|
+
// Lost/corrupt metadata cannot suppress surviving inbox lines on replay.
|
|
50
|
+
// The secure read itself still fails closed on ownership/path/identity drift.
|
|
51
|
+
try {
|
|
52
|
+
const parsed = JSON.parse(saved);
|
|
53
|
+
if (parsed.version === 1 && typeof parsed.resumeReset === 'boolean' && parsed.hints && typeof parsed.hints === 'object' &&
|
|
54
|
+
(parsed.watermark === null || (isRepresentativeUuid(parsed.watermark?.id) && Number.isFinite(Date.parse(parsed.watermark?.created_at)))))
|
|
55
|
+
state = parsed;
|
|
56
|
+
}
|
|
57
|
+
catch { /* recover the watermark and nullable replay metadata from the tail */ }
|
|
58
|
+
}
|
|
59
|
+
const lines = raw.split('\n').filter(Boolean);
|
|
60
|
+
for (const line of lines) {
|
|
61
|
+
const point = parseLine(line);
|
|
62
|
+
if (newer(point, state.watermark)) {
|
|
63
|
+
state.watermark = { id: point.id, created_at: point.created_at };
|
|
64
|
+
state.resumeReset = false;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { state, lines };
|
|
68
|
+
};
|
|
69
|
+
const write = async (file, raw) => {
|
|
70
|
+
await guard();
|
|
71
|
+
await validate(true);
|
|
72
|
+
await atomicWrite0600(file, raw, options);
|
|
73
|
+
};
|
|
74
|
+
const hint = (line, state, replay) => {
|
|
75
|
+
const parsed = parseLine(line), metadata = state.hints[parsed.id];
|
|
76
|
+
return { event: 'entry', entry_id: parsed.id, created_at: parsed.created_at,
|
|
77
|
+
from_label: parsed.label, from_role: parsed.role, request_id: requestId(parsed.message), replay,
|
|
78
|
+
visibility: metadata?.visibility === 'direct' || metadata?.visibility === 'broadcast' ? metadata.visibility : null,
|
|
79
|
+
documents: Number.isInteger(metadata?.documents) && metadata.documents >= 0 ? metadata.documents : null };
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
paths,
|
|
83
|
+
snapshot: async () => { const { state } = await load(); return { watermark: state.watermark?.id ?? null, inbox: paths.inbox }; },
|
|
84
|
+
dedupeCursor: async () => (await load()).state.watermark,
|
|
85
|
+
cursor: async () => { const { state } = await load(); return state.resumeReset ? null : state.watermark; },
|
|
86
|
+
clearCursor: async () => { const { state } = await load(); state.resumeReset = true; await write(paths.state, JSON.stringify(state)); },
|
|
87
|
+
replay: async (after) => {
|
|
88
|
+
const { state, lines } = await load();
|
|
89
|
+
const index = lines.findIndex(line => parseLine(line).id === after);
|
|
90
|
+
return { missing: index < 0, hints: lines.slice(index + 1).map(line => hint(line, state, true)) };
|
|
91
|
+
},
|
|
92
|
+
append: async (entry, catchupCursor = null) => {
|
|
93
|
+
if (!isRepresentativeUuid(entry.id) || !Number.isFinite(Date.parse(entry.created_at)) ||
|
|
94
|
+
!['direct', 'broadcast'].includes(entry.visibility))
|
|
95
|
+
throw new Error('Invalid representative stream entry');
|
|
96
|
+
const { state, lines } = await load();
|
|
97
|
+
const line = formatInboxLine(entry);
|
|
98
|
+
if (lines.some(value => parseLine(value).id === entry.id && inboxRawHasEntry(value, entry.id, line)) ||
|
|
99
|
+
(catchupCursor !== null && !newer(entry, catchupCursor)))
|
|
100
|
+
return null;
|
|
101
|
+
state.hints[entry.id] = { visibility: entry.visibility, documents: entry.documents?.length ?? 0 };
|
|
102
|
+
// Metadata first, then atomic inbox publication, then watermark/metadata trim.
|
|
103
|
+
// A crash after publication recovers its watermark from the surviving tail.
|
|
104
|
+
await write(paths.state, JSON.stringify(state));
|
|
105
|
+
lines.push(line);
|
|
106
|
+
const kept = lines.length > INBOX_TAIL_TRIM_THRESHOLD_LINES ? lines.slice(-INBOX_TAIL_LINES_CAP) : lines;
|
|
107
|
+
await write(paths.inbox, kept.join('\n') + '\n');
|
|
108
|
+
if (newer(entry, state.watermark))
|
|
109
|
+
state.watermark = { id: entry.id, created_at: entry.created_at };
|
|
110
|
+
state.resumeReset = false;
|
|
111
|
+
state.hints = Object.fromEntries(kept.map(value => parseLine(value).id).filter(id => state.hints[id]).map(id => [id, state.hints[id]]));
|
|
112
|
+
await write(paths.state, JSON.stringify(state));
|
|
113
|
+
// Linear scans/rewrites are deliberately bounded to 1025 lines; a larger
|
|
114
|
+
// retention policy would need an indexed journal instead of this tail.
|
|
115
|
+
return hint(line, state, false);
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=representative-listener-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-listener-store.js","sourceRoot":"","sources":["../src/representative-listener-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type StreamDeps } from './log-stream.js';
|
|
2
|
+
import { type RepresentativeCmdDeps } from './representative-cmd.js';
|
|
3
|
+
import { type RepresentativeBinding } from './representative-store.js';
|
|
4
|
+
export interface ListenerOptions {
|
|
5
|
+
/** Controlled transport/timing seams; the CLI supplies no overrides. */
|
|
6
|
+
streamDeps?: StreamDeps;
|
|
7
|
+
heartbeatIntervalMs?: number;
|
|
8
|
+
reconnectDelay?: (attempt: number) => number;
|
|
9
|
+
}
|
|
10
|
+
export declare function representativeListenerStatus(binding: RepresentativeBinding): Promise<{
|
|
11
|
+
watermark: string | null;
|
|
12
|
+
inbox: string;
|
|
13
|
+
running: boolean;
|
|
14
|
+
state: "owner" | "owned-by-other-process" | "initializing" | "orphaned-initialization" | "unowned";
|
|
15
|
+
pid?: number;
|
|
16
|
+
processNonce?: string;
|
|
17
|
+
cwd?: string;
|
|
18
|
+
startedAt?: string;
|
|
19
|
+
heartbeatAt?: string;
|
|
20
|
+
worktree?: string;
|
|
21
|
+
droneLabel?: string;
|
|
22
|
+
cubeName?: string;
|
|
23
|
+
ageMs?: number;
|
|
24
|
+
lockPath?: string;
|
|
25
|
+
lockDev?: number;
|
|
26
|
+
lockIno?: number;
|
|
27
|
+
}>;
|
|
28
|
+
export declare function runListener(command: {
|
|
29
|
+
worktree?: string;
|
|
30
|
+
replayAfter?: string;
|
|
31
|
+
}, deps: RepresentativeCmdDeps, options?: ListenerOptions): Promise<number>;
|
|
32
|
+
//# sourceMappingURL=representative-listener.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"representative-listener.d.ts","sourceRoot":"","sources":["../src/representative-listener.ts"],"names":[],"mappings":"AAQA,OAAO,EAAoC,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAgC,KAAK,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAMnG,OAAO,EAAsB,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAI3F,MAAM,WAAW,eAAe;IAC9B,wEAAwE;IACxE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC;CAC9C;AAKD,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,qBAAqB;;;;;;;;;;;;;;;;;GAShF;AAgBD,wBAAsB,WAAW,CAC/B,OAAO,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,GAAE,eAAoB,GAC/G,OAAO,CAAC,MAAM,CAAC,CA8JjB"}
|