@amalgm/shell 0.1.54 → 0.1.56
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/PURPOSE.md +47 -3
- package/dist/detection/runtime.js +98 -31
- package/dist/detection/runtime.js.map +1 -1
- package/dist/entity-apply-host.d.ts +28 -0
- package/dist/entity-apply-host.js +661 -0
- package/dist/entity-apply-host.js.map +1 -0
- package/dist/entity-apply-store.d.ts +42 -0
- package/dist/entity-apply-store.js +367 -0
- package/dist/entity-apply-store.js.map +1 -0
- package/dist/git-registration-host.d.ts +8 -1
- package/dist/git-registration-host.js +21 -0
- package/dist/git-registration-host.js.map +1 -1
- package/dist/git-repository-host.js +16 -4
- package/dist/git-repository-host.js.map +1 -1
- package/dist/materialized-graph.js +27 -4
- package/dist/materialized-graph.js.map +1 -1
- package/dist/user-ground-host.d.ts +6 -0
- package/dist/user-ground-host.js +249 -84
- package/dist/user-ground-host.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-apply-host.js","sourceRoot":"","sources":["../src/entity-apply-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/** Persistent SQLite effects for Live's Inbox -> Apply -> Verify rail. */
|
|
2
|
+
import { type ApplyCompletion, type CloudEntityRecord, type EntityApplyIntent, type EntityApplyStorePort, type EntityApplyWorkPage } from "@amalgm/live";
|
|
3
|
+
import Database from "better-sqlite3";
|
|
4
|
+
export interface ApplyGroundRow {
|
|
5
|
+
readonly resourceId: string;
|
|
6
|
+
readonly rootUUID: string;
|
|
7
|
+
readonly record: CloudEntityRecord;
|
|
8
|
+
readonly relativePath: string;
|
|
9
|
+
readonly absolutePath: string;
|
|
10
|
+
readonly deviceNumber: number;
|
|
11
|
+
readonly inode: number;
|
|
12
|
+
readonly byteSize: number | null;
|
|
13
|
+
readonly modifiedTimeMs: number | null;
|
|
14
|
+
readonly changedTimeMs: number | null;
|
|
15
|
+
readonly filesystemMode: number | null;
|
|
16
|
+
readonly contentVerifiedAtMs: number | null;
|
|
17
|
+
}
|
|
18
|
+
export interface EntityApplySqliteStoreOptions {
|
|
19
|
+
readonly now?: () => number;
|
|
20
|
+
readonly onIntentFinished?: (intent: EntityApplyIntent) => void;
|
|
21
|
+
/** Machine materialization policy is an effect boundary, not a portable
|
|
22
|
+
* Apply decision. A retained Inbox row may remain cloud-only until policy
|
|
23
|
+
* makes its accepted entity locally relevant. */
|
|
24
|
+
readonly isLocallyEligible?: (target: CloudEntityRecord) => boolean;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Apply has one persistent database owner. Verify hands this owner the exact
|
|
28
|
+
* rows it just proved; completion writes those rows, cursors, Inbox resolution,
|
|
29
|
+
* and intent removal in one SQLite transaction.
|
|
30
|
+
*/
|
|
31
|
+
export declare class EntityApplySqliteStore implements EntityApplyStorePort {
|
|
32
|
+
#private;
|
|
33
|
+
constructor(database: Database.Database, options?: EntityApplySqliteStoreOptions);
|
|
34
|
+
readApplyWork(limit: number, afterCursor: string | null): EntityApplyWorkPage;
|
|
35
|
+
hasLocalWorkAfter(authorityId: string, entityId: string, targetSequence: number): boolean;
|
|
36
|
+
beginIntent(intent: EntityApplyIntent): void;
|
|
37
|
+
setIntentPhase(intent: EntityApplyIntent): void;
|
|
38
|
+
cancelIntent(intent: EntityApplyIntent): void;
|
|
39
|
+
stageVerification(intent: EntityApplyIntent, rows: readonly ApplyGroundRow[], removals?: readonly string[]): void;
|
|
40
|
+
completeIntent(intent: EntityApplyIntent, completion: ApplyCompletion): void;
|
|
41
|
+
close(): void;
|
|
42
|
+
}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
/** Persistent SQLite effects for Live's Inbox -> Apply -> Verify rail. */
|
|
2
|
+
import { assertApplyIntent, assertRecord, decodeAcceptedEntityRecord, } from "@amalgm/live";
|
|
3
|
+
const GROUND_COLUMNS = [
|
|
4
|
+
"uuid", "resource_id", "root_uuid", "type", "parent_uuid", "name", "status", "version",
|
|
5
|
+
"payload_version", "transport_version", "relative_path", "absolute_path", "device_number",
|
|
6
|
+
"inode", "byte_size", "modified_time_ms", "changed_time_ms", "filesystem_mode",
|
|
7
|
+
"content_verified_at_ms",
|
|
8
|
+
].join(", ");
|
|
9
|
+
const rowValues = (row) => [
|
|
10
|
+
row.record.uuid,
|
|
11
|
+
row.resourceId,
|
|
12
|
+
row.rootUUID,
|
|
13
|
+
row.record.type,
|
|
14
|
+
row.record.parentUUID,
|
|
15
|
+
row.record.name,
|
|
16
|
+
row.record.status,
|
|
17
|
+
row.record.version,
|
|
18
|
+
row.record.payloadVersion,
|
|
19
|
+
row.record.transportVersion,
|
|
20
|
+
row.relativePath,
|
|
21
|
+
row.absolutePath,
|
|
22
|
+
row.deviceNumber,
|
|
23
|
+
row.inode,
|
|
24
|
+
row.byteSize,
|
|
25
|
+
row.modifiedTimeMs,
|
|
26
|
+
row.changedTimeMs,
|
|
27
|
+
row.filesystemMode,
|
|
28
|
+
row.contentVerifiedAtMs,
|
|
29
|
+
];
|
|
30
|
+
const sameIntent = (left, right) => left.authorityId === right.authorityId
|
|
31
|
+
&& left.entityId === right.entityId
|
|
32
|
+
&& left.fromSequence === right.fromSequence
|
|
33
|
+
&& left.throughSequence === right.throughSequence
|
|
34
|
+
&& left.targetMutationId === right.targetMutationId
|
|
35
|
+
&& left.targetState === right.targetState
|
|
36
|
+
&& left.targetType === right.targetType;
|
|
37
|
+
/**
|
|
38
|
+
* Apply has one persistent database owner. Verify hands this owner the exact
|
|
39
|
+
* rows it just proved; completion writes those rows, cursors, Inbox resolution,
|
|
40
|
+
* and intent removal in one SQLite transaction.
|
|
41
|
+
*/
|
|
42
|
+
export class EntityApplySqliteStore {
|
|
43
|
+
#database;
|
|
44
|
+
#now;
|
|
45
|
+
#onIntentFinished;
|
|
46
|
+
#isLocallyEligible;
|
|
47
|
+
#verified = new Map();
|
|
48
|
+
#candidateEntities;
|
|
49
|
+
#state;
|
|
50
|
+
#inboxAfter;
|
|
51
|
+
#intent;
|
|
52
|
+
#intentByEntity;
|
|
53
|
+
#authorityForEntity;
|
|
54
|
+
#targetRecord;
|
|
55
|
+
#localRelevance;
|
|
56
|
+
#localWork;
|
|
57
|
+
#insertIntent;
|
|
58
|
+
#updateIntent;
|
|
59
|
+
#deleteIntent;
|
|
60
|
+
#resolveInbox;
|
|
61
|
+
#upsertState;
|
|
62
|
+
#upsertEntity;
|
|
63
|
+
#upsertNotebook;
|
|
64
|
+
#deleteEntity;
|
|
65
|
+
#deleteNotebook;
|
|
66
|
+
#entitySlot;
|
|
67
|
+
constructor(database, options = {}) {
|
|
68
|
+
this.#database = database;
|
|
69
|
+
this.#now = options.now ?? Date.now;
|
|
70
|
+
this.#onIntentFinished = options.onIntentFinished ?? (() => undefined);
|
|
71
|
+
this.#isLocallyEligible = options.isLocallyEligible ?? (() => true);
|
|
72
|
+
database.pragma("busy_timeout = 5000");
|
|
73
|
+
database.pragma("journal_mode = WAL");
|
|
74
|
+
database.pragma("synchronous = FULL");
|
|
75
|
+
database.exec(`
|
|
76
|
+
CREATE TABLE IF NOT EXISTS entity_apply_state (
|
|
77
|
+
entity_id TEXT PRIMARY KEY,
|
|
78
|
+
authority_id TEXT NOT NULL,
|
|
79
|
+
resolved_through INTEGER NOT NULL CHECK(resolved_through >= 0),
|
|
80
|
+
materialized_sequence INTEGER,
|
|
81
|
+
materialized_record_json TEXT,
|
|
82
|
+
CHECK((materialized_sequence IS NULL AND materialized_record_json IS NULL)
|
|
83
|
+
OR (materialized_sequence > 0 AND materialized_record_json IS NOT NULL))
|
|
84
|
+
);
|
|
85
|
+
CREATE TABLE IF NOT EXISTS entity_apply_intents (
|
|
86
|
+
entity_id TEXT PRIMARY KEY,
|
|
87
|
+
authority_id TEXT NOT NULL,
|
|
88
|
+
intent_json TEXT NOT NULL
|
|
89
|
+
);
|
|
90
|
+
CREATE INDEX IF NOT EXISTS record_inbox_apply
|
|
91
|
+
ON record_inbox(authority_id, entity_id, global_sequence);
|
|
92
|
+
`);
|
|
93
|
+
const inboxColumns = new Set(database.prepare("PRAGMA table_info(record_inbox)").all().map(({ name }) => name));
|
|
94
|
+
if (!inboxColumns.has("resolved_at")) {
|
|
95
|
+
database.exec("ALTER TABLE record_inbox ADD COLUMN resolved_at INTEGER");
|
|
96
|
+
}
|
|
97
|
+
this.#candidateEntities = database.prepare(`
|
|
98
|
+
SELECT entity_id AS entityId FROM entity_apply_intents
|
|
99
|
+
UNION
|
|
100
|
+
SELECT inbox.entity_id AS entityId
|
|
101
|
+
FROM record_inbox inbox
|
|
102
|
+
LEFT JOIN entity_apply_state state ON state.entity_id = inbox.entity_id
|
|
103
|
+
WHERE inbox.global_sequence > COALESCE(state.resolved_through, 0)
|
|
104
|
+
ORDER BY entityId
|
|
105
|
+
`);
|
|
106
|
+
this.#state = database.prepare(`
|
|
107
|
+
SELECT resolved_through AS resolvedThrough,
|
|
108
|
+
materialized_sequence AS materializedSequence,
|
|
109
|
+
materialized_record_json AS materializedRecordJson
|
|
110
|
+
FROM entity_apply_state WHERE authority_id = ? AND entity_id = ?
|
|
111
|
+
`);
|
|
112
|
+
this.#inboxAfter = database.prepare(`
|
|
113
|
+
SELECT record_json AS recordJson FROM record_inbox
|
|
114
|
+
WHERE authority_id = ? AND entity_id = ? AND global_sequence > ?
|
|
115
|
+
ORDER BY global_sequence
|
|
116
|
+
`);
|
|
117
|
+
this.#intent = database.prepare(`
|
|
118
|
+
SELECT intent_json AS intentJson FROM entity_apply_intents
|
|
119
|
+
WHERE authority_id = ? AND entity_id = ?
|
|
120
|
+
`);
|
|
121
|
+
this.#intentByEntity = database.prepare(`
|
|
122
|
+
SELECT intent_json AS intentJson FROM entity_apply_intents WHERE entity_id = ?
|
|
123
|
+
`);
|
|
124
|
+
this.#authorityForEntity = database.prepare(`
|
|
125
|
+
SELECT authority_id AS authorityId FROM record_inbox
|
|
126
|
+
WHERE entity_id = ? ORDER BY global_sequence DESC LIMIT 1
|
|
127
|
+
`);
|
|
128
|
+
this.#targetRecord = database.prepare(`
|
|
129
|
+
SELECT record_json AS recordJson FROM record_inbox
|
|
130
|
+
WHERE authority_id = ? AND entity_id = ? AND global_sequence = ?
|
|
131
|
+
`);
|
|
132
|
+
this.#localRelevance = database.prepare(`
|
|
133
|
+
SELECT 1 AS present FROM entities WHERE uuid = ?
|
|
134
|
+
UNION ALL
|
|
135
|
+
SELECT 1 AS present FROM detection_notebook WHERE uuid = ?
|
|
136
|
+
LIMIT 1
|
|
137
|
+
`);
|
|
138
|
+
this.#localWork = database.prepare(`
|
|
139
|
+
SELECT 1 AS present FROM record_outbox
|
|
140
|
+
WHERE authority_id = ? AND entity_id = ?
|
|
141
|
+
AND (status = 'pending' OR global_sequence > ?)
|
|
142
|
+
LIMIT 1
|
|
143
|
+
`);
|
|
144
|
+
this.#insertIntent = database.prepare(`
|
|
145
|
+
INSERT INTO entity_apply_intents(entity_id, authority_id, intent_json)
|
|
146
|
+
VALUES (?, ?, ?)
|
|
147
|
+
`);
|
|
148
|
+
this.#updateIntent = database.prepare(`
|
|
149
|
+
UPDATE entity_apply_intents SET intent_json = ?
|
|
150
|
+
WHERE authority_id = ? AND entity_id = ?
|
|
151
|
+
`);
|
|
152
|
+
this.#deleteIntent = database.prepare(`
|
|
153
|
+
DELETE FROM entity_apply_intents WHERE authority_id = ? AND entity_id = ?
|
|
154
|
+
`);
|
|
155
|
+
this.#resolveInbox = database.prepare(`
|
|
156
|
+
UPDATE record_inbox SET resolved_at = ?
|
|
157
|
+
WHERE authority_id = ? AND entity_id = ?
|
|
158
|
+
AND global_sequence > ? AND global_sequence <= ?
|
|
159
|
+
`);
|
|
160
|
+
this.#upsertState = database.prepare(`
|
|
161
|
+
INSERT INTO entity_apply_state(
|
|
162
|
+
entity_id, authority_id, resolved_through,
|
|
163
|
+
materialized_sequence, materialized_record_json
|
|
164
|
+
) VALUES (?, ?, ?, ?, ?)
|
|
165
|
+
ON CONFLICT(entity_id) DO UPDATE SET
|
|
166
|
+
authority_id = excluded.authority_id,
|
|
167
|
+
resolved_through = excluded.resolved_through,
|
|
168
|
+
materialized_sequence = excluded.materialized_sequence,
|
|
169
|
+
materialized_record_json = excluded.materialized_record_json
|
|
170
|
+
`);
|
|
171
|
+
const upsert = (table) => database.prepare(`
|
|
172
|
+
INSERT INTO ${table}(${GROUND_COLUMNS})
|
|
173
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
174
|
+
ON CONFLICT(uuid) DO UPDATE SET
|
|
175
|
+
resource_id = excluded.resource_id,
|
|
176
|
+
root_uuid = excluded.root_uuid,
|
|
177
|
+
type = excluded.type,
|
|
178
|
+
parent_uuid = excluded.parent_uuid,
|
|
179
|
+
name = excluded.name,
|
|
180
|
+
status = excluded.status,
|
|
181
|
+
version = excluded.version,
|
|
182
|
+
payload_version = excluded.payload_version,
|
|
183
|
+
transport_version = excluded.transport_version,
|
|
184
|
+
relative_path = excluded.relative_path,
|
|
185
|
+
absolute_path = excluded.absolute_path,
|
|
186
|
+
device_number = excluded.device_number,
|
|
187
|
+
inode = excluded.inode,
|
|
188
|
+
byte_size = excluded.byte_size,
|
|
189
|
+
modified_time_ms = excluded.modified_time_ms,
|
|
190
|
+
changed_time_ms = excluded.changed_time_ms,
|
|
191
|
+
filesystem_mode = excluded.filesystem_mode,
|
|
192
|
+
content_verified_at_ms = excluded.content_verified_at_ms
|
|
193
|
+
`);
|
|
194
|
+
this.#upsertEntity = upsert("entities");
|
|
195
|
+
this.#upsertNotebook = upsert("detection_notebook");
|
|
196
|
+
this.#deleteEntity = database.prepare("DELETE FROM entities WHERE uuid = ?");
|
|
197
|
+
this.#deleteNotebook = database.prepare("DELETE FROM detection_notebook WHERE uuid = ?");
|
|
198
|
+
this.#entitySlot = database.prepare(`
|
|
199
|
+
SELECT uuid, type, payload_version AS payloadVersion,
|
|
200
|
+
absolute_path AS absolutePath FROM entities
|
|
201
|
+
WHERE resource_id = ? AND root_uuid = ? AND relative_path = ?
|
|
202
|
+
`);
|
|
203
|
+
}
|
|
204
|
+
readApplyWork(limit, afterCursor) {
|
|
205
|
+
const all = this.#candidateEntities.all()
|
|
206
|
+
.map(({ entityId }) => entityId)
|
|
207
|
+
.filter((entityId) => afterCursor === null || entityId > afterCursor);
|
|
208
|
+
const materializable = [];
|
|
209
|
+
for (const entityId of all) {
|
|
210
|
+
const intent = this.#readIntent(entityId);
|
|
211
|
+
const authorityId = intent?.authorityId ?? this.#authorityFor(entityId);
|
|
212
|
+
const state = this.#state.get(authorityId, entityId);
|
|
213
|
+
const resolvedThrough = state?.resolvedThrough ?? 0;
|
|
214
|
+
const records = this.#inboxAfter.all(authorityId, entityId, resolvedThrough).map(({ recordJson }) => decodeAcceptedEntityRecord(recordJson));
|
|
215
|
+
if (records.length === 0)
|
|
216
|
+
continue;
|
|
217
|
+
const target = records.at(-1);
|
|
218
|
+
const local = this.#localRelevance.get(entityId, entityId) !== undefined
|
|
219
|
+
|| (target.change.result.parentUUID !== null
|
|
220
|
+
&& this.#localRelevance.get(target.change.result.parentUUID, target.change.result.parentUUID) !== undefined);
|
|
221
|
+
if (!local || !this.#isLocallyEligible(target.change.result))
|
|
222
|
+
continue;
|
|
223
|
+
materializable.push({
|
|
224
|
+
authorityId,
|
|
225
|
+
entityId,
|
|
226
|
+
resolvedThrough,
|
|
227
|
+
materialized: state?.materializedSequence && state.materializedRecordJson
|
|
228
|
+
? {
|
|
229
|
+
globalSequence: state.materializedSequence,
|
|
230
|
+
record: assertRecord(JSON.parse(state.materializedRecordJson)),
|
|
231
|
+
}
|
|
232
|
+
: null,
|
|
233
|
+
records,
|
|
234
|
+
intent,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
const work = materializable.slice(0, limit);
|
|
238
|
+
return {
|
|
239
|
+
work,
|
|
240
|
+
nextCursor: materializable.length > work.length ? work.at(-1).entityId : null,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
hasLocalWorkAfter(authorityId, entityId, targetSequence) {
|
|
244
|
+
return this.#localWork.get(authorityId, entityId, targetSequence) !== undefined;
|
|
245
|
+
}
|
|
246
|
+
beginIntent(intent) {
|
|
247
|
+
assertApplyIntent(intent);
|
|
248
|
+
const existing = this.#readIntent(intent.entityId, intent.authorityId);
|
|
249
|
+
if (existing) {
|
|
250
|
+
if (!sameIntent(existing, intent) || existing.phase !== intent.phase) {
|
|
251
|
+
throw new Error(`entity ${intent.entityId} already has a different Apply intent`);
|
|
252
|
+
}
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
this.#insertIntent.run(intent.entityId, intent.authorityId, JSON.stringify(intent));
|
|
256
|
+
}
|
|
257
|
+
setIntentPhase(intent) {
|
|
258
|
+
assertApplyIntent(intent);
|
|
259
|
+
const existing = this.#requireIntent(intent);
|
|
260
|
+
if (!sameIntent(existing, intent))
|
|
261
|
+
throw new Error("Apply phase update changed intent identity");
|
|
262
|
+
const updated = this.#updateIntent.run(JSON.stringify(intent), intent.authorityId, intent.entityId);
|
|
263
|
+
if (updated.changes !== 1)
|
|
264
|
+
throw new Error("Apply intent phase was not durable");
|
|
265
|
+
}
|
|
266
|
+
cancelIntent(intent) {
|
|
267
|
+
const existing = this.#requireIntent(intent);
|
|
268
|
+
if (!sameIntent(existing, intent))
|
|
269
|
+
throw new Error("Apply cancel changed intent identity");
|
|
270
|
+
this.#verified.delete(intent.entityId);
|
|
271
|
+
this.#deleteIntent.run(intent.authorityId, intent.entityId);
|
|
272
|
+
this.#onIntentFinished(intent);
|
|
273
|
+
}
|
|
274
|
+
stageVerification(intent, rows, removals = []) {
|
|
275
|
+
this.#requireIntent(intent);
|
|
276
|
+
this.#verified.set(intent.entityId, Object.freeze({
|
|
277
|
+
rows: Object.freeze([...rows]),
|
|
278
|
+
removals: Object.freeze([...new Set(removals)]),
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
completeIntent(intent, completion) {
|
|
282
|
+
try {
|
|
283
|
+
const existing = this.#requireIntent(intent);
|
|
284
|
+
if (!sameIntent(existing, intent) || existing.phase !== "revealed") {
|
|
285
|
+
throw new Error("Apply completion does not match its revealed intent");
|
|
286
|
+
}
|
|
287
|
+
const prior = this.#state.get(intent.authorityId, intent.entityId);
|
|
288
|
+
const verified = this.#verified.get(intent.entityId);
|
|
289
|
+
if (completion.kind === "materialized" && !verified) {
|
|
290
|
+
throw new Error("Apply completion has no exact Verify evidence");
|
|
291
|
+
}
|
|
292
|
+
const targetRow = this.#targetRecord.get(intent.authorityId, intent.entityId, intent.throughSequence);
|
|
293
|
+
if (!targetRow)
|
|
294
|
+
throw new Error("Apply target disappeared from its retained Inbox");
|
|
295
|
+
const target = decodeAcceptedEntityRecord(targetRow.recordJson);
|
|
296
|
+
this.#database.transaction(() => {
|
|
297
|
+
if (completion.kind === "materialized") {
|
|
298
|
+
for (const uuid of verified.removals) {
|
|
299
|
+
this.#deleteEntity.run(uuid);
|
|
300
|
+
this.#deleteNotebook.run(uuid);
|
|
301
|
+
}
|
|
302
|
+
for (const row of verified.rows) {
|
|
303
|
+
this.#deleteEntity.run(row.record.uuid);
|
|
304
|
+
}
|
|
305
|
+
for (const row of verified.rows) {
|
|
306
|
+
if (row.record.status === "active") {
|
|
307
|
+
try {
|
|
308
|
+
this.#upsertEntity.run(...rowValues(row));
|
|
309
|
+
}
|
|
310
|
+
catch (error) {
|
|
311
|
+
const occupant = this.#entitySlot.get(row.resourceId, row.rootUUID, row.relativePath);
|
|
312
|
+
throw new Error(`Apply projection could not place ${row.record.uuid} at `
|
|
313
|
+
+ `${row.rootUUID}:${row.relativePath}; occupied by `
|
|
314
|
+
+ `${occupant?.uuid ?? "no retained row"} (${occupant?.absolutePath ?? "unknown"}); `
|
|
315
|
+
+ `incoming=${row.record.type}:${row.record.payloadVersion ?? "none"}; `
|
|
316
|
+
+ `occupant=${occupant?.type ?? "none"}:${occupant?.payloadVersion ?? "none"}`, { cause: error });
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
this.#deleteEntity.run(row.record.uuid);
|
|
321
|
+
}
|
|
322
|
+
this.#upsertNotebook.run(...rowValues(row));
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
this.#resolveInbox.run(this.#now(), intent.authorityId, intent.entityId, intent.fromSequence, intent.throughSequence);
|
|
326
|
+
this.#upsertState.run(intent.entityId, intent.authorityId, intent.throughSequence, completion.kind === "materialized"
|
|
327
|
+
? intent.throughSequence
|
|
328
|
+
: prior?.materializedSequence ?? null, completion.kind === "materialized"
|
|
329
|
+
? JSON.stringify(target.change.result)
|
|
330
|
+
: prior?.materializedRecordJson ?? null);
|
|
331
|
+
const removed = this.#deleteIntent.run(intent.authorityId, intent.entityId);
|
|
332
|
+
if (removed.changes !== 1)
|
|
333
|
+
throw new Error("Apply intent disappeared before completion");
|
|
334
|
+
})();
|
|
335
|
+
this.#verified.delete(intent.entityId);
|
|
336
|
+
}
|
|
337
|
+
finally {
|
|
338
|
+
this.#onIntentFinished(intent);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
close() {
|
|
342
|
+
this.#database.close();
|
|
343
|
+
}
|
|
344
|
+
#authorityFor(entityId) {
|
|
345
|
+
const row = this.#authorityForEntity.get(entityId);
|
|
346
|
+
if (!row)
|
|
347
|
+
throw new Error(`entity ${entityId} has no accepted Inbox authority`);
|
|
348
|
+
return row.authorityId;
|
|
349
|
+
}
|
|
350
|
+
#readIntent(entityId, authorityId) {
|
|
351
|
+
const row = authorityId
|
|
352
|
+
? this.#intent.get(authorityId, entityId)
|
|
353
|
+
: this.#intentByEntity.get(entityId);
|
|
354
|
+
if (!row)
|
|
355
|
+
return null;
|
|
356
|
+
const intent = JSON.parse(row.intentJson);
|
|
357
|
+
assertApplyIntent(intent);
|
|
358
|
+
return intent;
|
|
359
|
+
}
|
|
360
|
+
#requireIntent(intent) {
|
|
361
|
+
const existing = this.#readIntent(intent.entityId, intent.authorityId);
|
|
362
|
+
if (!existing)
|
|
363
|
+
throw new Error(`entity ${intent.entityId} has no durable Apply intent`);
|
|
364
|
+
return existing;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=entity-apply-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-apply-store.js","sourceRoot":"","sources":["../src/entity-apply-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type EntityType } from "@amalgm/live";
|
|
1
|
+
import { type EntityType, type RepoIdentityEntry } from "@amalgm/live";
|
|
2
2
|
export interface GitRegisteredLeaf {
|
|
3
3
|
readonly type: Extract<EntityType, "file.text" | "file.binary" | "link">;
|
|
4
4
|
/** Git's indexed blob is the content witness; Shell does not hash it again. */
|
|
@@ -8,6 +8,13 @@ export interface GitRegistrationEvidence {
|
|
|
8
8
|
/** Present only while the worktree path still agrees with the indexed blob. */
|
|
9
9
|
readonly cleanLeaves: ReadonlyMap<string, GitRegisteredLeaf>;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Replace worktree hashes with Git object identities only where Git proves
|
|
13
|
+
* the indexed leaf is clean. Dirty and untracked entries remain unchanged so
|
|
14
|
+
* their exact Checkpoint bytes continue to own their payload identity.
|
|
15
|
+
*/
|
|
16
|
+
export declare function canonicalizeGitIdentity(identity: readonly RepoIdentityEntry[], evidence: GitRegistrationEvidence): RepoIdentityEntry[];
|
|
17
|
+
export declare function sameGitIdentity(left: readonly RepoIdentityEntry[], right: readonly RepoIdentityEntry[]): boolean;
|
|
11
18
|
/**
|
|
12
19
|
* Obtain registration evidence from Git's index and object database.
|
|
13
20
|
*
|
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
import { classifyFile } from "@amalgm/live";
|
|
2
2
|
import { gitText, runGit, runGitSearch, tryGitText } from "./git-command.js";
|
|
3
|
+
/**
|
|
4
|
+
* Replace worktree hashes with Git object identities only where Git proves
|
|
5
|
+
* the indexed leaf is clean. Dirty and untracked entries remain unchanged so
|
|
6
|
+
* their exact Checkpoint bytes continue to own their payload identity.
|
|
7
|
+
*/
|
|
8
|
+
export function canonicalizeGitIdentity(identity, evidence) {
|
|
9
|
+
return identity.map((entry) => {
|
|
10
|
+
const clean = evidence.cleanLeaves.get(entry.path);
|
|
11
|
+
return clean ? { ...entry, type: clean.type, payloadVersion: clean.payloadVersion } : entry;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export function sameGitIdentity(left, right) {
|
|
15
|
+
return left.length === right.length && left.every((entry, index) => {
|
|
16
|
+
const candidate = right[index];
|
|
17
|
+
return candidate !== undefined
|
|
18
|
+
&& entry.path === candidate.path
|
|
19
|
+
&& entry.uuid === candidate.uuid
|
|
20
|
+
&& entry.type === candidate.type
|
|
21
|
+
&& (entry.payloadVersion ?? null) === (candidate.payloadVersion ?? null);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
3
24
|
const zeroFields = (bytes) => Buffer.from(bytes).toString("utf8").split("\0").filter((field) => field.length > 0);
|
|
4
25
|
const literalPathspecs = (paths) => paths.map((path) => {
|
|
5
26
|
const segments = path.split("/");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-registration-host.js","sourceRoot":"","sources":["../src/git-registration-host.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"git-registration-host.js","sourceRoot":"","sources":["../src/git-registration-host.ts"],"names":[],"mappings":"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"}
|
|
@@ -303,6 +303,20 @@ function initializeMaterializedRepository(repository) {
|
|
|
303
303
|
// cannot rewrite those bytes during materialization.
|
|
304
304
|
runGit(repository, ["config", "core.autocrlf", "false"]);
|
|
305
305
|
}
|
|
306
|
+
function forceRemotes(repository, remotes) {
|
|
307
|
+
const existing = (tryGitText(repository, ["remote"]) ?? "").split("\n").filter(Boolean);
|
|
308
|
+
const wanted = new Map(remotes.map((remote) => [remote.name, remote.url]));
|
|
309
|
+
for (const name of existing) {
|
|
310
|
+
if (!wanted.has(name))
|
|
311
|
+
runGit(repository, ["remote", "remove", name]);
|
|
312
|
+
}
|
|
313
|
+
for (const [name, url] of wanted) {
|
|
314
|
+
if (existing.includes(name))
|
|
315
|
+
runGit(repository, ["remote", "set-url", name, url]);
|
|
316
|
+
else
|
|
317
|
+
runGit(repository, ["remote", "add", name, url]);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
306
320
|
/** Materialize a complete transport chain and then re-derive its semantic
|
|
307
321
|
* state. The oldest node must be self-contained; every later node must name
|
|
308
322
|
* the exact predecessor whose Git objects and identity map it extends. */
|
|
@@ -324,8 +338,7 @@ export function applyRepository(repository, chain) {
|
|
|
324
338
|
const state = transports.at(-1);
|
|
325
339
|
mkdirSync(repository, { recursive: true });
|
|
326
340
|
initializeMaterializedRepository(repository);
|
|
327
|
-
|
|
328
|
-
runGit(repository, ["remote", "add", remote.name, remote.url]);
|
|
341
|
+
forceRemotes(repository, state.card.remotes);
|
|
329
342
|
for (const transport of transports)
|
|
330
343
|
importPack(repository, transport);
|
|
331
344
|
installShallowBoundary(repository, state.card.shallow ?? []);
|
|
@@ -459,8 +472,7 @@ export async function applyRepositoryFiles(repository, chain) {
|
|
|
459
472
|
const state = latest.layout;
|
|
460
473
|
mkdirSync(repository, { recursive: true });
|
|
461
474
|
initializeMaterializedRepository(repository);
|
|
462
|
-
|
|
463
|
-
runGit(repository, ["remote", "add", remote.name, remote.url]);
|
|
475
|
+
forceRemotes(repository, state.card.remotes);
|
|
464
476
|
for (const transport of transports) {
|
|
465
477
|
if (transport.layout.pack) {
|
|
466
478
|
await importPackFile(repository, transport.file, transport.layout.pack);
|