@amalgm/live 0.2.81-main.41740705397 → 0.2.81-main.41784750721
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/dist/apply/contracts.d.ts +4 -2
- package/dist/apply/contracts.d.ts.map +1 -1
- package/dist/apply/contracts.js.map +1 -1
- package/dist/apply/index.d.ts +0 -3
- package/dist/apply/index.d.ts.map +1 -1
- package/dist/apply/index.js +0 -3
- package/dist/apply/index.js.map +1 -1
- package/dist/apply/plans.d.ts +3 -4
- package/dist/apply/plans.d.ts.map +1 -1
- package/dist/apply/plans.js +2 -6
- package/dist/apply/plans.js.map +1 -1
- package/dist/apply/settling.d.ts +1 -1
- package/dist/apply/settling.d.ts.map +1 -1
- package/dist/apply/window.d.ts +0 -2
- package/dist/apply/window.d.ts.map +1 -1
- package/dist/apply/window.js +0 -2
- package/dist/apply/window.js.map +1 -1
- package/dist/contracts/validate.d.ts +0 -2
- package/dist/contracts/validate.d.ts.map +1 -1
- package/dist/contracts/validate.js +0 -2
- package/dist/contracts/validate.js.map +1 -1
- package/dist/detection/batch.d.ts +0 -1
- package/dist/detection/batch.d.ts.map +1 -1
- package/dist/detection/batch.js +1 -4
- package/dist/detection/batch.js.map +1 -1
- package/dist/detection/content.d.ts +29 -12
- package/dist/detection/content.d.ts.map +1 -1
- package/dist/detection/content.js +58 -75
- package/dist/detection/content.js.map +1 -1
- package/dist/detection/echo.d.ts +3 -15
- package/dist/detection/echo.d.ts.map +1 -1
- package/dist/detection/echo.js +3 -18
- package/dist/detection/echo.js.map +1 -1
- package/dist/detection/enrollment.d.ts +3 -5
- package/dist/detection/enrollment.d.ts.map +1 -1
- package/dist/detection/enrollment.js.map +1 -1
- package/dist/detection/index.d.ts +2 -0
- package/dist/detection/index.d.ts.map +1 -1
- package/dist/detection/index.js +2 -0
- package/dist/detection/index.js.map +1 -1
- package/dist/detection/record-order.d.ts +37 -0
- package/dist/detection/record-order.d.ts.map +1 -0
- package/dist/detection/record-order.js +311 -0
- package/dist/detection/record-order.js.map +1 -0
- package/dist/detection/record-proposal.d.ts +3 -0
- package/dist/detection/record-proposal.d.ts.map +1 -1
- package/dist/detection/record-proposal.js +6 -3
- package/dist/detection/record-proposal.js.map +1 -1
- package/dist/detection/removals.d.ts +0 -1
- package/dist/detection/removals.d.ts.map +1 -1
- package/dist/detection/removals.js +1 -4
- package/dist/detection/removals.js.map +1 -1
- package/dist/entities/graph-head.d.ts +0 -7
- package/dist/entities/graph-head.d.ts.map +1 -1
- package/dist/entities/graph-head.js +0 -13
- package/dist/entities/graph-head.js.map +1 -1
- package/dist/entities/index.d.ts +0 -8
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +0 -8
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/rules.d.ts +7 -69
- package/dist/entities/rules.d.ts.map +1 -1
- package/dist/entities/rules.js +1 -148
- package/dist/entities/rules.js.map +1 -1
- package/dist/entities/types.d.ts +3 -24
- package/dist/entities/types.d.ts.map +1 -1
- package/dist/files/cloud-files.d.ts.map +1 -1
- package/dist/files/cloud-files.js +2 -1
- package/dist/files/cloud-files.js.map +1 -1
- package/dist/git/merge.d.ts +1 -1
- package/dist/git/merge.js +1 -1
- package/dist/records/contracts.d.ts +0 -1
- package/dist/records/contracts.d.ts.map +1 -1
- package/dist/records/contracts.js +0 -1
- package/dist/records/contracts.js.map +1 -1
- package/dist/registration/user-ground.d.ts +9 -0
- package/dist/registration/user-ground.d.ts.map +1 -1
- package/dist/registration/user-ground.js +29 -10
- package/dist/registration/user-ground.js.map +1 -1
- package/dist/steps.d.ts +0 -2
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +0 -2
- package/dist/steps.js.map +1 -1
- package/dist/transfer/cargo.d.ts +0 -2
- package/dist/transfer/cargo.d.ts.map +1 -1
- package/dist/transfer/cargo.js +0 -20
- package/dist/transfer/cargo.js.map +1 -1
- package/dist/transfer/index.d.ts +1 -1
- package/dist/transfer/index.d.ts.map +1 -1
- package/dist/transfer/index.js +1 -1
- package/dist/transfer/index.js.map +1 -1
- package/dist/transfer/parallel.d.ts +4 -1
- package/dist/transfer/parallel.d.ts.map +1 -1
- package/dist/transfer/parallel.js +13 -10
- package/dist/transfer/parallel.js.map +1 -1
- package/dist/watching/coverage.d.ts +0 -2
- package/dist/watching/coverage.d.ts.map +1 -1
- package/dist/watching/coverage.js +0 -5
- package/dist/watching/coverage.js.map +1 -1
- package/dist/workspace/index.d.ts +0 -1
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +0 -1
- package/dist/workspace/index.js.map +1 -1
- package/dist-cjs/apply/contracts.js.map +1 -1
- package/dist-cjs/apply/index.js +0 -5
- package/dist-cjs/apply/index.js.map +1 -1
- package/dist-cjs/apply/plans.js +2 -7
- package/dist-cjs/apply/plans.js.map +1 -1
- package/dist-cjs/apply/window.js +1 -4
- package/dist-cjs/apply/window.js.map +1 -1
- package/dist-cjs/contracts/validate.js +1 -4
- package/dist-cjs/contracts/validate.js.map +1 -1
- package/dist-cjs/detection/batch.js +0 -4
- package/dist-cjs/detection/batch.js.map +1 -1
- package/dist-cjs/detection/content.js +61 -78
- package/dist-cjs/detection/content.js.map +1 -1
- package/dist-cjs/detection/echo.js +3 -19
- package/dist-cjs/detection/echo.js.map +1 -1
- package/dist-cjs/detection/enrollment.js.map +1 -1
- package/dist-cjs/detection/index.js +2 -0
- package/dist-cjs/detection/index.js.map +1 -1
- package/dist-cjs/detection/record-order.js +314 -0
- package/dist-cjs/detection/record-order.js.map +1 -0
- package/dist-cjs/detection/record-proposal.js +7 -3
- package/dist-cjs/detection/record-proposal.js.map +1 -1
- package/dist-cjs/detection/removals.js +0 -4
- package/dist-cjs/detection/removals.js.map +1 -1
- package/dist-cjs/entities/graph-head.js +0 -14
- package/dist-cjs/entities/graph-head.js.map +1 -1
- package/dist-cjs/entities/index.js +0 -8
- package/dist-cjs/entities/index.js.map +1 -1
- package/dist-cjs/entities/rules.js +1 -157
- package/dist-cjs/entities/rules.js.map +1 -1
- package/dist-cjs/files/cloud-files.js +2 -1
- package/dist-cjs/files/cloud-files.js.map +1 -1
- package/dist-cjs/git/merge.js +1 -1
- package/dist-cjs/records/contracts.js +1 -3
- package/dist-cjs/records/contracts.js.map +1 -1
- package/dist-cjs/registration/user-ground.js +32 -10
- package/dist-cjs/registration/user-ground.js.map +1 -1
- package/dist-cjs/steps.js +1 -3
- package/dist-cjs/steps.js.map +1 -1
- package/dist-cjs/transfer/cargo.js +0 -21
- package/dist-cjs/transfer/cargo.js.map +1 -1
- package/dist-cjs/transfer/index.js +2 -1
- package/dist-cjs/transfer/index.js.map +1 -1
- package/dist-cjs/transfer/parallel.js +13 -10
- package/dist-cjs/transfer/parallel.js.map +1 -1
- package/dist-cjs/watching/coverage.js +0 -6
- package/dist-cjs/watching/coverage.js.map +1 -1
- package/dist-cjs/workspace/index.js +1 -3
- package/dist-cjs/workspace/index.js.map +1 -1
- package/package.json +4 -4
- package/dist/apply/content-results.d.ts +0 -27
- package/dist/apply/content-results.d.ts.map +0 -1
- package/dist/apply/content-results.js +0 -53
- package/dist/apply/content-results.js.map +0 -1
- package/dist/apply/local-work.d.ts +0 -34
- package/dist/apply/local-work.d.ts.map +0 -1
- package/dist/apply/local-work.js +0 -31
- package/dist/apply/local-work.js.map +0 -1
- package/dist/entities/digest-steps.d.ts +0 -14
- package/dist/entities/digest-steps.d.ts.map +0 -1
- package/dist/entities/digest-steps.js +0 -26
- package/dist/entities/digest-steps.js.map +0 -1
- package/dist/entities/json-steps.d.ts +0 -21
- package/dist/entities/json-steps.d.ts.map +0 -1
- package/dist/entities/json-steps.js +0 -130
- package/dist/entities/json-steps.js.map +0 -1
- package/dist/entities/moves.d.ts +0 -42
- package/dist/entities/moves.d.ts.map +0 -1
- package/dist/entities/moves.js +0 -82
- package/dist/entities/moves.js.map +0 -1
- package/dist/entities/trash.d.ts +0 -7
- package/dist/entities/trash.d.ts.map +0 -1
- package/dist/entities/trash.js +0 -10
- package/dist/entities/trash.js.map +0 -1
- package/dist/workspace/memory-store.d.ts +0 -7
- package/dist/workspace/memory-store.d.ts.map +0 -1
- package/dist/workspace/memory-store.js +0 -16
- package/dist/workspace/memory-store.js.map +0 -1
- package/dist-cjs/apply/content-results.js +0 -58
- package/dist-cjs/apply/content-results.js.map +0 -1
- package/dist-cjs/apply/local-work.js +0 -34
- package/dist-cjs/apply/local-work.js.map +0 -1
- package/dist-cjs/entities/digest-steps.js +0 -30
- package/dist-cjs/entities/digest-steps.js.map +0 -1
- package/dist-cjs/entities/json-steps.js +0 -135
- package/dist-cjs/entities/json-steps.js.map +0 -1
- package/dist-cjs/entities/moves.js +0 -85
- package/dist-cjs/entities/moves.js.map +0 -1
- package/dist-cjs/entities/trash.js +0 -14
- package/dist-cjs/entities/trash.js.map +0 -1
- package/dist-cjs/workspace/memory-store.js +0 -20
- package/dist-cjs/workspace/memory-store.js.map +0 -1
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
import { utf8Encode } from '../entities/bytes.js';
|
|
1
|
+
/** Text replay: the one rule choosing a byte splice or the whole-result
|
|
2
|
+
* snapshot, and the one splice every host runs on an exact base. */
|
|
4
3
|
import { deriveUploadManifest } from '../transfer/upload.js';
|
|
5
|
-
|
|
4
|
+
import { textReplayBase } from './record-proposal.js';
|
|
5
|
+
const capturedText = (entityId, input, sha256Hex) => {
|
|
6
6
|
const bytes = input.slice();
|
|
7
|
-
const artifact = {
|
|
8
|
-
entityId,
|
|
9
|
-
entityType,
|
|
10
|
-
kind,
|
|
11
|
-
contentHash: sha256Hex(bytes),
|
|
12
|
-
};
|
|
7
|
+
const artifact = { entityId, entityType: 'file.text', kind: 'file', contentHash: sha256Hex(bytes) };
|
|
13
8
|
return Object.freeze({
|
|
14
9
|
artifact: Object.freeze(artifact),
|
|
15
10
|
bytes,
|
|
@@ -30,86 +25,74 @@ export function textSplice(base, result) {
|
|
|
30
25
|
return Object.freeze({
|
|
31
26
|
offset: prefix,
|
|
32
27
|
deleteBytes: base.byteLength - prefix - suffix,
|
|
33
|
-
|
|
28
|
+
// A copy, so a splice never holds the whole result alive (a Buffer's
|
|
29
|
+
// slice is a view).
|
|
30
|
+
insert: new Uint8Array(result.subarray(prefix, result.byteLength - suffix)),
|
|
34
31
|
});
|
|
35
32
|
}
|
|
36
33
|
/**
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
34
|
+
* The text replay from a base to a result: one byte splice when the held base
|
|
35
|
+
* bytes are the named base and the splice is smaller than the result,
|
|
36
|
+
* otherwise the whole-result snapshot. Either way the record keeps the base
|
|
37
|
+
* it names, so missing base bytes never rewrite history.
|
|
40
38
|
*/
|
|
41
|
-
export function
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const
|
|
39
|
+
export function textReplay(input, sha256Hex) {
|
|
40
|
+
const { baseBytes, resultBytes, resultPayloadVersion } = input;
|
|
41
|
+
if (sha256Hex(resultBytes) !== resultPayloadVersion) {
|
|
42
|
+
throw new Error('text result bytes do not match their content head');
|
|
43
|
+
}
|
|
44
|
+
const basePayloadVersion = textReplayBase(input.basePayloadVersion);
|
|
45
|
+
const delta = basePayloadVersion !== null && basePayloadVersion !== resultPayloadVersion
|
|
46
|
+
&& baseBytes !== null && sha256Hex(baseBytes) === basePayloadVersion
|
|
47
|
+
? textSplice(baseBytes, resultBytes)
|
|
48
|
+
: null;
|
|
47
49
|
// Two numeric fields are fixed overhead on the wire. This conservative
|
|
48
50
|
// estimate keeps a replace-all operation on the snapshot path.
|
|
49
|
-
|
|
51
|
+
if (delta === null || delta.insert.byteLength + 16 >= resultBytes.byteLength) {
|
|
52
|
+
return textSnapshot(basePayloadVersion, resultPayloadVersion);
|
|
53
|
+
}
|
|
50
54
|
return Object.freeze({
|
|
51
|
-
|
|
52
|
-
kind: 'file.text',
|
|
53
|
-
mode: useDelta ? 'delta' : 'snapshot',
|
|
54
|
-
basePayloadVersion,
|
|
55
|
-
resultPayloadVersion: cargo.artifact.contentHash,
|
|
56
|
-
delta: useDelta ? delta : null,
|
|
57
|
-
}),
|
|
58
|
-
cargo,
|
|
55
|
+
kind: 'file.text', mode: 'delta', basePayloadVersion, resultPayloadVersion, delta,
|
|
59
56
|
});
|
|
60
57
|
}
|
|
61
|
-
/**
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
58
|
+
/** A whole-result text replay. It carries no bytes: Send moves the result by
|
|
59
|
+
* its content head, so a snapshot needs no read of it. */
|
|
60
|
+
export function textSnapshot(basePayloadVersion, resultPayloadVersion) {
|
|
61
|
+
return Object.freeze({
|
|
62
|
+
kind: 'file.text',
|
|
63
|
+
mode: 'snapshot',
|
|
64
|
+
basePayloadVersion: textReplayBase(basePayloadVersion),
|
|
65
|
+
resultPayloadVersion,
|
|
66
|
+
delta: null,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** Text capture with its sealed snapshot cargo: null when the bytes did not
|
|
70
|
+
* change. */
|
|
71
|
+
export function captureTextChange(entityId, base, result, sha256Hex) {
|
|
72
|
+
const cargo = capturedText(entityId, result, sha256Hex);
|
|
73
|
+
const basePayloadVersion = base === null ? null : sha256Hex(base);
|
|
74
|
+
if (basePayloadVersion === cargo.artifact.contentHash)
|
|
75
|
+
return null;
|
|
76
|
+
const replay = textReplay({
|
|
77
|
+
basePayloadVersion, baseBytes: base, resultPayloadVersion: cargo.artifact.contentHash, resultBytes: result,
|
|
78
|
+
}, sha256Hex);
|
|
79
|
+
return Object.freeze({ replay, cargo });
|
|
80
|
+
}
|
|
81
|
+
/** Replay one text splice on its exact base: the result bytes, or null when
|
|
82
|
+
* the base or the result is not the one the record names. Null sends the
|
|
83
|
+
* caller to the record's snapshot; a splice is a shortcut, never truth. */
|
|
84
|
+
export function spliceText(base, strategy, resultPayloadVersion, sha256Hex) {
|
|
85
|
+
if (sha256Hex(base) !== strategy.basePayloadVersion)
|
|
86
|
+
return null;
|
|
87
|
+
const { offset, deleteBytes, insert } = strategy.delta;
|
|
74
88
|
if (!Number.isSafeInteger(offset) || !Number.isSafeInteger(deleteBytes)
|
|
75
89
|
|| offset < 0 || deleteBytes < 0 || offset + deleteBytes > base.byteLength) {
|
|
76
|
-
return
|
|
90
|
+
return null;
|
|
77
91
|
}
|
|
78
92
|
const result = new Uint8Array(base.byteLength - deleteBytes + insert.byteLength);
|
|
79
93
|
result.set(base.subarray(0, offset), 0);
|
|
80
94
|
result.set(insert, offset);
|
|
81
95
|
result.set(base.subarray(offset + deleteBytes), offset + insert.byteLength);
|
|
82
|
-
return sha256Hex(result) ===
|
|
83
|
-
}
|
|
84
|
-
/** Binary replay is the existing exact content manifest; Transfer moves gaps. */
|
|
85
|
-
export function captureBinaryChange(entityId, previous, result, sha256Hex) {
|
|
86
|
-
if (previous !== null && !checkContentManifest(previous).ok) {
|
|
87
|
-
throw new Error('previous binary content manifest is invalid');
|
|
88
|
-
}
|
|
89
|
-
const cargo = capturedArtifact(entityId, 'file.binary', 'file', result, sha256Hex);
|
|
90
|
-
if (previous?.contentHash === cargo.artifact.contentHash)
|
|
91
|
-
return null;
|
|
92
|
-
return Object.freeze({
|
|
93
|
-
replay: Object.freeze({
|
|
94
|
-
kind: 'file.binary',
|
|
95
|
-
resultPayloadVersion: cargo.artifact.contentHash,
|
|
96
|
-
manifest: cargo.manifest,
|
|
97
|
-
}),
|
|
98
|
-
cargo,
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
/** A symlink's portable content is the literal target text, never its target. */
|
|
102
|
-
export function captureLinkChange(entityId, previousTarget, target, sha256Hex) {
|
|
103
|
-
if (previousTarget === target)
|
|
104
|
-
return null;
|
|
105
|
-
const cargo = capturedArtifact(entityId, 'link', 'link', utf8Encode(target), sha256Hex);
|
|
106
|
-
return Object.freeze({
|
|
107
|
-
replay: Object.freeze({
|
|
108
|
-
kind: 'link',
|
|
109
|
-
resultPayloadVersion: cargo.artifact.contentHash,
|
|
110
|
-
target,
|
|
111
|
-
}),
|
|
112
|
-
cargo,
|
|
113
|
-
});
|
|
96
|
+
return sha256Hex(result) === resultPayloadVersion ? result : null;
|
|
114
97
|
}
|
|
115
98
|
//# sourceMappingURL=content.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/detection/content.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../src/detection/content.ts"],"names":[],"mappings":"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"}
|
package/dist/detection/echo.d.ts
CHANGED
|
@@ -1,24 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* No echo across crossed rails.
|
|
3
3
|
*
|
|
4
4
|
* Apply never suppresses watcher rings. It verifies the incoming result and
|
|
5
|
-
* advances the notebook
|
|
6
|
-
*
|
|
7
|
-
* real local change; unreadable truth is retried.
|
|
5
|
+
* advances the notebook, so its own write later reads as equal and records
|
|
6
|
+
* nothing. The one crossing that equality alone cannot settle is below.
|
|
8
7
|
*/
|
|
9
|
-
import type { TruthReading } from './adapter-contract.js';
|
|
10
|
-
import type { CloudEntityRecord } from '../entities/cloud.js';
|
|
11
8
|
import type { DetectedChangeProposal } from './record-proposal.js';
|
|
12
9
|
import type { AcceptedEntityRecord } from '../records/contracts.js';
|
|
13
|
-
export type EchoDecision = {
|
|
14
|
-
readonly kind: 'silence';
|
|
15
|
-
} | {
|
|
16
|
-
readonly kind: 'detect';
|
|
17
|
-
} | {
|
|
18
|
-
readonly kind: 'retry';
|
|
19
|
-
readonly reason?: string | undefined;
|
|
20
|
-
};
|
|
21
|
-
export declare function echoDecision(notebook: Pick<CloudEntityRecord, 'status' | 'version'>, observed: TruthReading): EchoDecision;
|
|
22
10
|
/**
|
|
23
11
|
* Detect may observe an authority result before Apply has advanced the local
|
|
24
12
|
* notebook through that accepted Inbox row. The observation is already
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/detection/echo.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../src/detection/echo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,UAAU,GAAG,QAAQ,CAAC,GAC5D,OAAO,CAST"}
|
package/dist/detection/echo.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* No echo across crossed rails.
|
|
3
3
|
*
|
|
4
4
|
* Apply never suppresses watcher rings. It verifies the incoming result and
|
|
5
|
-
* advances the notebook
|
|
6
|
-
*
|
|
7
|
-
* real local change; unreadable truth is retried.
|
|
5
|
+
* advances the notebook, so its own write later reads as equal and records
|
|
6
|
+
* nothing. The one crossing that equality alone cannot settle is below.
|
|
8
7
|
*/
|
|
9
|
-
export function echoDecision(notebook, observed) {
|
|
10
|
-
if (observed.truth === 'unsettled') {
|
|
11
|
-
return observed.reason === undefined
|
|
12
|
-
? { kind: 'retry' }
|
|
13
|
-
: { kind: 'retry', reason: observed.reason };
|
|
14
|
-
}
|
|
15
|
-
if (notebook.status === 'active') {
|
|
16
|
-
return observed.truth === 'present'
|
|
17
|
-
&& observed.version === notebook.version
|
|
18
|
-
? { kind: 'silence' }
|
|
19
|
-
: { kind: 'detect' };
|
|
20
|
-
}
|
|
21
|
-
return observed.truth === 'absent' ? { kind: 'silence' } : { kind: 'detect' };
|
|
22
|
-
}
|
|
23
8
|
/**
|
|
24
9
|
* Detect may observe an authority result before Apply has advanced the local
|
|
25
10
|
* notebook through that accepted Inbox row. The observation is already
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/detection/echo.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"echo.js","sourceRoot":"","sources":["../../src/detection/echo.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAA8B,EAC9B,QAA6D;IAE7D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;IAC9B,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;WACzC,QAAQ,CAAC,WAAW,KAAK,QAAQ,CAAC,MAAM,CAAC,OAAO;WAChD,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WACpD,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;WAChE,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;WAC9D,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CAAC;AACxF,CAAC"}
|
|
@@ -15,11 +15,9 @@
|
|
|
15
15
|
* strings-in/verdict-out and never inspects disk itself: the caller says
|
|
16
16
|
* whether a path names a folder, as Git asks the filesystem.
|
|
17
17
|
*/
|
|
18
|
-
/**
|
|
19
|
-
* (a workspace, folder or repository; never a link) in, verdict out.
|
|
20
|
-
|
|
21
|
-
/** A root's compiled `.amalgmignore`, which can also answer for a whole
|
|
22
|
-
* subtree without visiting its paths. */
|
|
18
|
+
/** A root's compiled `.amalgmignore`: a relative path and whether it names a
|
|
19
|
+
* folder (a workspace, folder or repository; never a link) in, verdict out.
|
|
20
|
+
* It can also answer for a whole subtree without visiting its paths. */
|
|
23
21
|
export interface UserGroundEnrollmentPolicy {
|
|
24
22
|
(relPath: string, directory: boolean): boolean;
|
|
25
23
|
/** No path strictly beneath this directory can be excluded by a user rule.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;
|
|
1
|
+
{"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;wEAEwE;AACxE,MAAM,WAAW,0BAA0B;IACzC,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/C;gEAC4D;IAC5D,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;CAChD;AAED;;sCAEsC;AACtC,eAAO,MAAM,qBAAqB,iPAcjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK9D;AAkKD;;;;;;;GAOG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,SAAK,GAAG,0BAA0B,CA0C5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* - `watch-boundary` generation-safe Watch input and coverage output
|
|
20
20
|
* - `record-proposal` the exact Detect-to-Record contract
|
|
21
21
|
* - `batch` net-difference planning and Watch settlement
|
|
22
|
+
* - `record-order` one capture's records in cause-before-effect order
|
|
22
23
|
* - `content` text/binary/link replay from one captured read
|
|
23
24
|
* - `echo` incoming Apply equality without suppression
|
|
24
25
|
* - `dispositions` the diagnostic vocabulary for what became of each
|
|
@@ -34,6 +35,7 @@ export * from './identity.js';
|
|
|
34
35
|
export * from './scoped-identity.js';
|
|
35
36
|
export * from './echo.js';
|
|
36
37
|
export * from './enrollment.js';
|
|
38
|
+
export * from './record-order.js';
|
|
37
39
|
export * from './record-proposal.js';
|
|
38
40
|
export * from './refusal.js';
|
|
39
41
|
export * from './watch-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
package/dist/detection/index.js
CHANGED
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* - `watch-boundary` generation-safe Watch input and coverage output
|
|
20
20
|
* - `record-proposal` the exact Detect-to-Record contract
|
|
21
21
|
* - `batch` net-difference planning and Watch settlement
|
|
22
|
+
* - `record-order` one capture's records in cause-before-effect order
|
|
22
23
|
* - `content` text/binary/link replay from one captured read
|
|
23
24
|
* - `echo` incoming Apply equality without suppression
|
|
24
25
|
* - `dispositions` the diagnostic vocabulary for what became of each
|
|
@@ -34,6 +35,7 @@ export * from './identity.js';
|
|
|
34
35
|
export * from './scoped-identity.js';
|
|
35
36
|
export * from './echo.js';
|
|
36
37
|
export * from './enrollment.js';
|
|
38
|
+
export * from './record-order.js';
|
|
37
39
|
export * from './record-proposal.js';
|
|
38
40
|
export * from './refusal.js';
|
|
39
41
|
export * from './watch-boundary.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/detection/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One capture's records in cause-before-effect order.
|
|
3
|
+
*
|
|
4
|
+
* The host hands over the settled before and after graphs of one Watch
|
|
5
|
+
* observation; this seam names every entity whose result changed, orders
|
|
6
|
+
* those transitions so each accepted prefix is materializable from its own
|
|
7
|
+
* records, and plans the batch (`docs/detection.md`).
|
|
8
|
+
*/
|
|
9
|
+
import type { CloudEntityRecord } from '../entities/cloud.js';
|
|
10
|
+
import { type Steps } from '../steps.js';
|
|
11
|
+
import type { SuspicionSnapshot } from '../watching/suspicion.js';
|
|
12
|
+
import { type DetectionBatchPlan } from './batch.js';
|
|
13
|
+
import type { ReplayInstruction } from './record-proposal.js';
|
|
14
|
+
export interface DetectedGroundRow {
|
|
15
|
+
readonly record: CloudEntityRecord;
|
|
16
|
+
readonly relativePath: string;
|
|
17
|
+
readonly replay?: ReplayInstruction;
|
|
18
|
+
readonly lifecycleAuthorization?: 'trash' | 'restore';
|
|
19
|
+
/** For a changed repository, the repositories whose records this one's
|
|
20
|
+
* follows: the one holding its Git directory, since a worktree's pack is
|
|
21
|
+
* thin against its main checkout's state and every Git directory is placed
|
|
22
|
+
* inside its holder's, and each lending it objects, since its pack leaves
|
|
23
|
+
* out what it borrows (`git/alternates.ts`). */
|
|
24
|
+
readonly gitFollows?: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Turn one real Watch observation and its settled before/after graph into the
|
|
28
|
+
* portable Detect plan: every entity whose result changed states it on its
|
|
29
|
+
* own channel, in cause-before-effect order.
|
|
30
|
+
*/
|
|
31
|
+
export declare function planGroundDetectionSteps(input: {
|
|
32
|
+
readonly rootId: string;
|
|
33
|
+
readonly suspicion: SuspicionSnapshot;
|
|
34
|
+
readonly before: readonly CloudEntityRecord[];
|
|
35
|
+
readonly after: readonly DetectedGroundRow[];
|
|
36
|
+
}): Steps<DetectionBatchPlan>;
|
|
37
|
+
//# sourceMappingURL=record-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"record-order.d.ts","sourceRoot":"","sources":["../../src/detection/record-order.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAgC,KAAK,KAAK,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAGL,KAAK,kBAAkB,EAExB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtD;;;;oDAIgD;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAwOD;;;;GAIG;AACH,wBAAiB,wBAAwB,CAAC,KAAK,EAAE;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC9C,GAAG,KAAK,CAAC,kBAAkB,CAAC,CAoC5B"}
|