@amalgm/live 0.2.53 → 0.2.55
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 +17 -0
- package/dist/contracts/binding.d.ts +3 -2
- package/dist/contracts/binding.d.ts.map +1 -1
- package/dist/contracts/deployments.d.ts +39 -0
- package/dist/contracts/deployments.d.ts.map +1 -0
- package/dist/contracts/deployments.js +75 -0
- package/dist/contracts/deployments.js.map +1 -0
- package/dist/contracts/index.d.ts +1 -0
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/contracts/index.js +1 -0
- package/dist/contracts/index.js.map +1 -1
- package/dist/detection/adapter-contract.d.ts +0 -33
- package/dist/detection/adapter-contract.d.ts.map +1 -1
- package/dist/detection/adapter-contract.js +0 -32
- package/dist/detection/adapter-contract.js.map +1 -1
- package/dist/detection/diff.d.ts +5 -87
- package/dist/detection/diff.d.ts.map +1 -1
- package/dist/detection/diff.js +5 -111
- package/dist/detection/diff.js.map +1 -1
- package/dist/detection/enrollment.d.ts +8 -17
- package/dist/detection/enrollment.d.ts.map +1 -1
- package/dist/detection/enrollment.js +8 -73
- package/dist/detection/enrollment.js.map +1 -1
- package/dist/detection/index.d.ts +5 -8
- package/dist/detection/index.d.ts.map +1 -1
- package/dist/detection/index.js +5 -8
- package/dist/detection/index.js.map +1 -1
- package/dist/detection/territory.d.ts +1 -27
- package/dist/detection/territory.d.ts.map +1 -1
- package/dist/detection/territory.js +1 -77
- package/dist/detection/territory.js.map +1 -1
- package/dist/entities/cloud.d.ts +31 -6
- package/dist/entities/cloud.d.ts.map +1 -1
- package/dist/entities/cloud.js +210 -47
- package/dist/entities/cloud.js.map +1 -1
- package/dist/entities/graph-head.d.ts +109 -0
- package/dist/entities/graph-head.d.ts.map +1 -0
- package/dist/entities/graph-head.js +267 -0
- package/dist/entities/graph-head.js.map +1 -0
- package/dist/entities/index.d.ts +3 -1
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +3 -1
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/rules.js +2 -2
- package/dist/entities/rules.js.map +1 -1
- package/dist/entities/types.d.ts +3 -0
- package/dist/entities/types.d.ts.map +1 -1
- package/dist/entities/types.js +3 -0
- package/dist/entities/types.js.map +1 -1
- package/dist/files/commands.d.ts.map +1 -1
- package/dist/files/commands.js +2 -13
- package/dist/files/commands.js.map +1 -1
- package/dist/registration/user-ground.d.ts +5 -1
- package/dist/registration/user-ground.d.ts.map +1 -1
- package/dist/registration/user-ground.js +9 -14
- package/dist/registration/user-ground.js.map +1 -1
- package/dist/transfer/cargo.d.ts +46 -12
- package/dist/transfer/cargo.d.ts.map +1 -1
- package/dist/transfer/cargo.js +52 -18
- package/dist/transfer/cargo.js.map +1 -1
- package/dist-cjs/contracts/deployments.js +81 -0
- package/dist-cjs/contracts/deployments.js.map +1 -0
- package/dist-cjs/contracts/index.js +1 -0
- package/dist-cjs/contracts/index.js.map +1 -1
- package/dist-cjs/detection/adapter-contract.js +1 -34
- package/dist-cjs/detection/adapter-contract.js.map +1 -1
- package/dist-cjs/detection/diff.js +5 -113
- package/dist-cjs/detection/diff.js.map +1 -1
- package/dist-cjs/detection/enrollment.js +9 -75
- package/dist-cjs/detection/enrollment.js.map +1 -1
- package/dist-cjs/detection/index.js +5 -8
- package/dist-cjs/detection/index.js.map +1 -1
- package/dist-cjs/detection/territory.js +1 -79
- package/dist-cjs/detection/territory.js.map +1 -1
- package/dist-cjs/entities/cloud.js +212 -49
- package/dist-cjs/entities/cloud.js.map +1 -1
- package/dist-cjs/entities/graph-head.js +280 -0
- package/dist-cjs/entities/graph-head.js.map +1 -0
- package/dist-cjs/entities/index.js +3 -1
- package/dist-cjs/entities/index.js.map +1 -1
- package/dist-cjs/entities/rules.js +1 -1
- package/dist-cjs/entities/rules.js.map +1 -1
- package/dist-cjs/entities/types.js +4 -1
- package/dist-cjs/entities/types.js.map +1 -1
- package/dist-cjs/files/commands.js +1 -12
- package/dist-cjs/files/commands.js.map +1 -1
- package/dist-cjs/registration/user-ground.js +8 -13
- package/dist-cjs/registration/user-ground.js.map +1 -1
- package/dist-cjs/transfer/cargo.js +55 -20
- package/dist-cjs/transfer/cargo.js.map +1 -1
- package/package.json +1 -1
- package/dist/detection/continuity.d.ts +0 -54
- package/dist/detection/continuity.d.ts.map +0 -1
- package/dist/detection/continuity.js +0 -85
- package/dist/detection/continuity.js.map +0 -1
- package/dist-cjs/detection/continuity.js +0 -88
- package/dist-cjs/detection/continuity.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Detection enrollment
|
|
2
|
+
* Detection enrollment policy.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
4
|
+
* User ground enrolls everything except structural local state and paths
|
|
5
|
+
* excluded by its tracked `.amalgmignore`; `.gitignore` never decides Amalgm
|
|
6
|
+
* enrollment, and there are no implicit dependency, dotfile, cache, or secret
|
|
7
|
+
* exclusions. Portable paths already use `/`; a host converts its native
|
|
8
|
+
* separator at the boundary. A literal `\\` is therefore preserved as part of
|
|
9
|
+
* a POSIX filename. The policy is pure strings-in/verdict-out and never
|
|
10
|
+
* inspects disk itself.
|
|
11
11
|
*/
|
|
12
12
|
/** The injected policy shape: relative path in, verdict out. */
|
|
13
13
|
export type EnrollmentPolicy = (relPath: string) => boolean;
|
|
@@ -17,15 +17,6 @@ export type EnrollmentPolicy = (relPath: string) => boolean;
|
|
|
17
17
|
export declare const AMALGM_CONTROL_DIRECTORY = ".amalgm";
|
|
18
18
|
export declare const AMALGM_IGNORE_FILE = ".amalgmignore";
|
|
19
19
|
export declare const DEFAULT_AMALGM_IGNORE = "/.amalgm/\n";
|
|
20
|
-
/**
|
|
21
|
-
* Legacy explicit-registration policy retained for additive API compatibility.
|
|
22
|
-
* Current user-ground Detect must use {@link createUserGroundEnrollmentPolicy};
|
|
23
|
-
* there are no implicit dependency, dotfile, cache, or secret exclusions.
|
|
24
|
-
* Both separators are path separators; '' never enrolls.
|
|
25
|
-
*
|
|
26
|
-
* @deprecated Use `createUserGroundEnrollmentPolicy` for current user ground.
|
|
27
|
-
*/
|
|
28
|
-
export declare const defaultShouldEnroll: EnrollmentPolicy;
|
|
29
20
|
/**
|
|
30
21
|
* One normalized spelling for portable enrollment and ignore matching.
|
|
31
22
|
* Portable relative paths use `/`. Do not reinterpret `\\`: it is a valid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5D;;qEAEqE;AACrE,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,qBAAqB,gBAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"enrollment.d.ts","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;AAE5D;;qEAEqE;AACrE,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,qBAAqB,gBAAoC,CAAC;AAEvE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;8EAC8E;AAC9E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGjE;AAsDD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,UAAU,SAAK,GAAG,gBAAgB,CAalF"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Detection enrollment
|
|
2
|
+
* Detection enrollment policy.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
4
|
+
* User ground enrolls everything except structural local state and paths
|
|
5
|
+
* excluded by its tracked `.amalgmignore`; `.gitignore` never decides Amalgm
|
|
6
|
+
* enrollment, and there are no implicit dependency, dotfile, cache, or secret
|
|
7
|
+
* exclusions. Portable paths already use `/`; a host converts its native
|
|
8
|
+
* separator at the boundary. A literal `\\` is therefore preserved as part of
|
|
9
|
+
* a POSIX filename. The policy is pure strings-in/verdict-out and never
|
|
10
|
+
* inspects disk itself.
|
|
11
11
|
*/
|
|
12
12
|
/** The Git-like names at the user-ground boundary. Structural coordination
|
|
13
13
|
* state is local and cannot be negated by user policy; the ignore file is
|
|
@@ -15,71 +15,6 @@
|
|
|
15
15
|
export const AMALGM_CONTROL_DIRECTORY = '.amalgm';
|
|
16
16
|
export const AMALGM_IGNORE_FILE = '.amalgmignore';
|
|
17
17
|
export const DEFAULT_AMALGM_IGNORE = `/${AMALGM_CONTROL_DIRECTORY}/\n`;
|
|
18
|
-
const EXCLUDED_DIRECTORIES = new Set([
|
|
19
|
-
'.amalgm',
|
|
20
|
-
'.aws',
|
|
21
|
-
'.cache',
|
|
22
|
-
'.docker',
|
|
23
|
-
'.git',
|
|
24
|
-
'.gnupg',
|
|
25
|
-
'.gradle',
|
|
26
|
-
'.hg',
|
|
27
|
-
'.kube',
|
|
28
|
-
'.mypy_cache',
|
|
29
|
-
'.next',
|
|
30
|
-
'.nyc_output',
|
|
31
|
-
'.parcel-cache',
|
|
32
|
-
'.pytest_cache',
|
|
33
|
-
'.ruff_cache',
|
|
34
|
-
'.ssh',
|
|
35
|
-
'.svn',
|
|
36
|
-
'.svelte-kit',
|
|
37
|
-
'.turbo',
|
|
38
|
-
'.venv',
|
|
39
|
-
'.vite',
|
|
40
|
-
'__pycache__',
|
|
41
|
-
'coverage',
|
|
42
|
-
'node_modules',
|
|
43
|
-
]);
|
|
44
|
-
const EXCLUDED_FILES = new Set([
|
|
45
|
-
'.DS_Store',
|
|
46
|
-
'Thumbs.db',
|
|
47
|
-
'desktop.ini',
|
|
48
|
-
'npm-debug.log',
|
|
49
|
-
'pnpm-debug.log',
|
|
50
|
-
'yarn-debug.log',
|
|
51
|
-
'yarn-error.log',
|
|
52
|
-
]);
|
|
53
|
-
function isPrivateFile(name) {
|
|
54
|
-
if (/^\.env(?:\..+)?$/i.test(name) && !/\.example$/i.test(name))
|
|
55
|
-
return true;
|
|
56
|
-
if (/^(?:credentials?|secrets?)\.(?:json|ya?ml|toml|ini|conf)$/i.test(name))
|
|
57
|
-
return true;
|
|
58
|
-
if (/^id_(?:dsa|ecdsa|ed25519|rsa)$/i.test(name))
|
|
59
|
-
return true;
|
|
60
|
-
if (/^(?:\.git-credentials|\.netrc|\.npmrc|\.pypirc|auth\.json|kubeconfig)$/i.test(name))
|
|
61
|
-
return true;
|
|
62
|
-
if (/^(?:service[-_]?account|firebase[-_]?adminsdk).*\.json$/i.test(name))
|
|
63
|
-
return true;
|
|
64
|
-
return /\.(?:key|keystore|kdbx|p12|pfx|pem|ppk|tfstate(?:\.backup)?)$/i.test(name);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Legacy explicit-registration policy retained for additive API compatibility.
|
|
68
|
-
* Current user-ground Detect must use {@link createUserGroundEnrollmentPolicy};
|
|
69
|
-
* there are no implicit dependency, dotfile, cache, or secret exclusions.
|
|
70
|
-
* Both separators are path separators; '' never enrolls.
|
|
71
|
-
*
|
|
72
|
-
* @deprecated Use `createUserGroundEnrollmentPolicy` for current user ground.
|
|
73
|
-
*/
|
|
74
|
-
export const defaultShouldEnroll = (relPath) => {
|
|
75
|
-
const parts = normalizedRelativePath(String(relPath || '').replace(/\\/g, '/')).split('/').filter(Boolean);
|
|
76
|
-
const name = parts.at(-1);
|
|
77
|
-
if (name === undefined || parts.some((part) => EXCLUDED_DIRECTORIES.has(part)))
|
|
78
|
-
return false;
|
|
79
|
-
if (EXCLUDED_FILES.has(name) || isPrivateFile(name))
|
|
80
|
-
return false;
|
|
81
|
-
return !name.startsWith('.#') && !name.endsWith('~') && !/\.(?:swp|swo)$/i.test(name);
|
|
82
|
-
};
|
|
83
18
|
/**
|
|
84
19
|
* One normalized spelling for portable enrollment and ignore matching.
|
|
85
20
|
* Portable relative paths use `/`. Do not reinterpret `\\`: it is a valid,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH;;qEAEqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,SAAS,CAAC;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAClD,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,wBAAwB,KAAK,CAAC;AAEvE
|
|
1
|
+
{"version":3,"file":"enrollment.js","sourceRoot":"","sources":["../../src/detection/enrollment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Detection — the pure cores that turn observed disk evidence into facts.
|
|
3
3
|
* Normative sources:
|
|
4
|
-
* entity-model.md (identity axioms, the two
|
|
4
|
+
* entity-model.md (identity axioms, the two identity witnesses) and
|
|
5
5
|
* entity-implementation.md (the ratified seams).
|
|
6
6
|
*
|
|
7
7
|
* Everything here is rows and entries in, verdicts out. Walking disk,
|
|
@@ -10,15 +10,13 @@
|
|
|
10
10
|
* policy) and this layer owns only the laws:
|
|
11
11
|
*
|
|
12
12
|
* - `adapter-contract` the seven rails, the ratified detect socket,
|
|
13
|
-
* descriptor conviction
|
|
14
|
-
* judgment, the reference adapter
|
|
13
|
+
* and descriptor conviction
|
|
15
14
|
* - `classify` text/binary from detect's own read evidence
|
|
16
15
|
* - `refusal` declined-vs-broken, named where it is raised
|
|
17
|
-
* - `enrollment` tracked user-ground policy
|
|
18
|
-
* - `diff`
|
|
19
|
-
* - `continuity` root rescue and the undecided address
|
|
16
|
+
* - `enrollment` the tracked user-ground policy
|
|
17
|
+
* - `diff` directory channel identity from inode and address
|
|
20
18
|
* - `watch-boundary` generation-safe Watch input and coverage output
|
|
21
|
-
* - `territory` nearest-repository
|
|
19
|
+
* - `territory` nearest-repository ownership, indexed per graph
|
|
22
20
|
* - `record-proposal` the exact Detect-to-Record contract
|
|
23
21
|
* - `batch` net-difference planning and Watch settlement
|
|
24
22
|
* - `content` text/binary/link replay from one captured read
|
|
@@ -28,7 +26,6 @@
|
|
|
28
26
|
export * from './adapter-contract.js';
|
|
29
27
|
export * from './batch.js';
|
|
30
28
|
export * from './classify.js';
|
|
31
|
-
export * from './continuity.js';
|
|
32
29
|
export * from './content.js';
|
|
33
30
|
export * from './diff.js';
|
|
34
31
|
export * from './echo.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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
package/dist/detection/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Detection — the pure cores that turn observed disk evidence into facts.
|
|
3
3
|
* Normative sources:
|
|
4
|
-
* entity-model.md (identity axioms, the two
|
|
4
|
+
* entity-model.md (identity axioms, the two identity witnesses) and
|
|
5
5
|
* entity-implementation.md (the ratified seams).
|
|
6
6
|
*
|
|
7
7
|
* Everything here is rows and entries in, verdicts out. Walking disk,
|
|
@@ -10,15 +10,13 @@
|
|
|
10
10
|
* policy) and this layer owns only the laws:
|
|
11
11
|
*
|
|
12
12
|
* - `adapter-contract` the seven rails, the ratified detect socket,
|
|
13
|
-
* descriptor conviction
|
|
14
|
-
* judgment, the reference adapter
|
|
13
|
+
* and descriptor conviction
|
|
15
14
|
* - `classify` text/binary from detect's own read evidence
|
|
16
15
|
* - `refusal` declined-vs-broken, named where it is raised
|
|
17
|
-
* - `enrollment` tracked user-ground policy
|
|
18
|
-
* - `diff`
|
|
19
|
-
* - `continuity` root rescue and the undecided address
|
|
16
|
+
* - `enrollment` the tracked user-ground policy
|
|
17
|
+
* - `diff` directory channel identity from inode and address
|
|
20
18
|
* - `watch-boundary` generation-safe Watch input and coverage output
|
|
21
|
-
* - `territory` nearest-repository
|
|
19
|
+
* - `territory` nearest-repository ownership, indexed per graph
|
|
22
20
|
* - `record-proposal` the exact Detect-to-Record contract
|
|
23
21
|
* - `batch` net-difference planning and Watch settlement
|
|
24
22
|
* - `content` text/binary/link replay from one captured read
|
|
@@ -28,7 +26,6 @@
|
|
|
28
26
|
export * from './adapter-contract.js';
|
|
29
27
|
export * from './batch.js';
|
|
30
28
|
export * from './classify.js';
|
|
31
|
-
export * from './continuity.js';
|
|
32
29
|
export * from './content.js';
|
|
33
30
|
export * from './diff.js';
|
|
34
31
|
export * from './echo.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;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
/** Nearest-repository ownership for
|
|
1
|
+
/** Nearest-repository ownership, indexed once for a whole graph. */
|
|
2
2
|
import type { CloudEntityRecord } from '../entities/cloud.js';
|
|
3
|
-
import type { EntityReadPort, EntityRow } from '../entities/types.js';
|
|
4
|
-
export interface EntityRecorderTarget {
|
|
5
|
-
readonly kind: 'entity';
|
|
6
|
-
readonly resourceId: string;
|
|
7
|
-
}
|
|
8
|
-
export interface RepositoryRecorderTarget {
|
|
9
|
-
readonly kind: 'repository';
|
|
10
|
-
readonly resourceId: string;
|
|
11
|
-
}
|
|
12
|
-
export type RecorderTarget = EntityRecorderTarget | RepositoryRecorderTarget;
|
|
13
3
|
export interface RepositoryTerritoryNode {
|
|
14
4
|
readonly uuid: string;
|
|
15
5
|
readonly type: CloudEntityRecord['type'];
|
|
@@ -29,20 +19,4 @@ export interface RepositoryTerritoryIndex<Node extends RepositoryTerritoryNode>
|
|
|
29
19
|
* owner in this index.
|
|
30
20
|
*/
|
|
31
21
|
export declare function indexRepositoryTerritory<Node extends RepositoryTerritoryNode>(nodes: readonly Node[]): RepositoryTerritoryIndex<Node>;
|
|
32
|
-
export interface RecorderTransition {
|
|
33
|
-
readonly base: Pick<CloudEntityRecord, 'uuid' | 'type' | 'parentUUID' | 'name' | 'status'> | null;
|
|
34
|
-
readonly result: Pick<CloudEntityRecord, 'uuid' | 'type' | 'parentUUID' | 'name' | 'status'>;
|
|
35
|
-
}
|
|
36
|
-
/** The nearest repo at or above `uuid`; nested repositories win. */
|
|
37
|
-
export declare function nearestRepository(uuid: string | null, byUuid: EntityReadPort['byUuid']): EntityRow | null;
|
|
38
|
-
/**
|
|
39
|
-
* Name every recorder whose state a transition can change.
|
|
40
|
-
*
|
|
41
|
-
* Ordinary changes outside repository territory publish on the entity UUID.
|
|
42
|
-
* A change wholly inside one repository publishes only the repository parcel.
|
|
43
|
-
* Crossing a repository boundary also publishes the entity graph transition,
|
|
44
|
-
* plus the source and/or destination repositories whose identity maps and
|
|
45
|
-
* Checkpoints changed.
|
|
46
|
-
*/
|
|
47
|
-
export declare function recorderTargets(transition: RecorderTransition, byUuid: EntityReadPort['byUuid']): readonly RecorderTarget[];
|
|
48
22
|
//# sourceMappingURL=territory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"territory.d.ts","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"territory.d.ts","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,wBAAwB,CAAC,IAAI,SAAS,uBAAuB;IAC5E,gFAAgF;IAChF,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,8DAA8D;IAC9D,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;CAChD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,SAAS,uBAAuB,EAC3E,KAAK,EAAE,SAAS,IAAI,EAAE,GACrB,wBAAwB,CAAC,IAAI,CAAC,CAuChC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Nearest-repository ownership for
|
|
1
|
+
/** Nearest-repository ownership, indexed once for a whole graph. */
|
|
2
2
|
/**
|
|
3
3
|
* Index nearest-repository territory once for a complete or boundary-trimmed
|
|
4
4
|
* graph. Hosts use this when one scan needs ownership for every row: repeated
|
|
@@ -49,80 +49,4 @@ export function indexRepositoryTerritory(nodes) {
|
|
|
49
49
|
ownedBy: (repositoryId) => Object.freeze([...(owned.get(repositoryId) ?? [])]),
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
/** The nearest repo at or above `uuid`; nested repositories win. */
|
|
53
|
-
export function nearestRepository(uuid, byUuid) {
|
|
54
|
-
const seen = new Set();
|
|
55
|
-
let cursor = uuid;
|
|
56
|
-
while (cursor !== null) {
|
|
57
|
-
if (seen.has(cursor))
|
|
58
|
-
throw new Error(`registry corrupt: parent cycle at ${cursor}`);
|
|
59
|
-
seen.add(cursor);
|
|
60
|
-
const row = byUuid(cursor);
|
|
61
|
-
if (!row)
|
|
62
|
-
throw new Error(`no entity ${cursor}`);
|
|
63
|
-
if (row.type === 'repo.git')
|
|
64
|
-
return row;
|
|
65
|
-
cursor = row.parentUuid;
|
|
66
|
-
}
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Name every recorder whose state a transition can change.
|
|
71
|
-
*
|
|
72
|
-
* Ordinary changes outside repository territory publish on the entity UUID.
|
|
73
|
-
* A change wholly inside one repository publishes only the repository parcel.
|
|
74
|
-
* Crossing a repository boundary also publishes the entity graph transition,
|
|
75
|
-
* plus the source and/or destination repositories whose identity maps and
|
|
76
|
-
* Checkpoints changed.
|
|
77
|
-
*/
|
|
78
|
-
export function recorderTargets(transition, byUuid) {
|
|
79
|
-
const { base, result } = transition;
|
|
80
|
-
if (base !== null && base.uuid !== result.uuid) {
|
|
81
|
-
throw new Error('a recorder transition cannot change entity UUID');
|
|
82
|
-
}
|
|
83
|
-
const before = nearestRepository(base?.parentUUID ?? null, byUuid);
|
|
84
|
-
const after = nearestRepository(result.parentUUID, byUuid);
|
|
85
|
-
const add = (targets, target) => {
|
|
86
|
-
if (!targets.some((candidate) => candidate.resourceId === target.resourceId))
|
|
87
|
-
targets.push(target);
|
|
88
|
-
};
|
|
89
|
-
// Every `.git` boundary starts its own repository rail, even when nested.
|
|
90
|
-
// Its enclosing repository changes only when the boundary's graph entry
|
|
91
|
-
// changes; ordinary Card/Checkpoint advancement remains on the inner rail.
|
|
92
|
-
if (base?.type === 'repo.git' || result.type === 'repo.git') {
|
|
93
|
-
const targets = [];
|
|
94
|
-
add(targets, {
|
|
95
|
-
kind: result.type === 'repo.git' ? 'repository' : 'entity',
|
|
96
|
-
resourceId: result.uuid,
|
|
97
|
-
});
|
|
98
|
-
const boundaryChanged = base === null
|
|
99
|
-
|| base.type !== result.type
|
|
100
|
-
|| base.parentUUID !== result.parentUUID
|
|
101
|
-
|| base.name !== result.name
|
|
102
|
-
|| base.status !== result.status;
|
|
103
|
-
if (boundaryChanged) {
|
|
104
|
-
if (before)
|
|
105
|
-
add(targets, { kind: 'repository', resourceId: before.uuid });
|
|
106
|
-
if (after)
|
|
107
|
-
add(targets, { kind: 'repository', resourceId: after.uuid });
|
|
108
|
-
}
|
|
109
|
-
return Object.freeze(targets);
|
|
110
|
-
}
|
|
111
|
-
if (base === null) {
|
|
112
|
-
return Object.freeze(after
|
|
113
|
-
? [{ kind: 'repository', resourceId: after.uuid }]
|
|
114
|
-
: [{ kind: 'entity', resourceId: result.uuid }]);
|
|
115
|
-
}
|
|
116
|
-
if (before?.uuid === after?.uuid) {
|
|
117
|
-
return Object.freeze(before
|
|
118
|
-
? [{ kind: 'repository', resourceId: before.uuid }]
|
|
119
|
-
: [{ kind: 'entity', resourceId: result.uuid }]);
|
|
120
|
-
}
|
|
121
|
-
const targets = [{ kind: 'entity', resourceId: result.uuid }];
|
|
122
|
-
for (const repository of [before, after]) {
|
|
123
|
-
if (repository)
|
|
124
|
-
add(targets, { kind: 'repository', resourceId: repository.uuid });
|
|
125
|
-
}
|
|
126
|
-
return Object.freeze(targets);
|
|
127
|
-
}
|
|
128
52
|
//# sourceMappingURL=territory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"territory.js","sourceRoot":"","sources":["../../src/detection/territory.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAiBpE;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,KAAsB;IAEtB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,OAAO,GAAG,CAAC,IAAU,EAAe,EAAE;QAC1C,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QAChE,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;QACrF,MAAM,KAAK,GAAG,MAAM,KAAK,IAAI;YAC3B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,CAAC,IAAU,EAAE,EAAE;YACtB,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,CAAC,YAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;KACvF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/entities/cloud.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The entity-cloud boundary's pure half (engine
|
|
3
3
|
* registration/entity-cloud.js): the snapshot codec, record assertions,
|
|
4
|
-
* equality, the private resource id, and the repo
|
|
5
|
-
* logical graph facts, never a path, inode, watcher, or
|
|
4
|
+
* equality, the private resource id, containment selection, and the repo
|
|
5
|
+
* travel law — only logical graph facts, never a path, inode, watcher, or
|
|
6
|
+
* database row.
|
|
6
7
|
*
|
|
7
8
|
* Wire parity is the contract here: `stableJson`, record key order, and
|
|
8
9
|
* snapshot sorting reproduce the engine's bytes exactly, so a snapshot
|
|
9
10
|
* packed on either side hashes and compares identically.
|
|
11
|
+
*
|
|
12
|
+
* Every ancestor question in this module is answered once per graph, not
|
|
13
|
+
* once per record. A workspace of ~19,000 entities 32 levels deep re-walks
|
|
14
|
+
* the same spine for every record it holds, and that is the difference
|
|
15
|
+
* between a linear pass and a quadratic one. `indexRepositoryTerritory`
|
|
16
|
+
* (src/detection/territory.ts) memoizes the same shape for the same reason.
|
|
10
17
|
*/
|
|
11
18
|
import { type EntityStatus, type EntityType, type Sha256Hex } from './types.js';
|
|
12
19
|
/** `@1` could project arbitrary pre-cloud registrations. `@2` omitted the
|
|
@@ -51,10 +58,16 @@ export declare function privateEntityResourceId(userId: string, sha256Hex: Sha25
|
|
|
51
58
|
/** The one JSON spelling every snapshot comparison and checksum uses. */
|
|
52
59
|
export declare const stableJson: (value: unknown) => string;
|
|
53
60
|
export declare const sameRecord: (left: unknown, right: unknown) => boolean;
|
|
54
|
-
/** Two record lists describe the same graph (normalized, sorted, compared
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
61
|
+
/** Two record lists describe the same graph (normalized, sorted, compared
|
|
62
|
+
* field by field).
|
|
63
|
+
*
|
|
64
|
+
* Comparing the canonical bytes would answer the same question, but it would
|
|
65
|
+
* spell out both whole graphs to answer one boolean — megabytes of JSON per
|
|
66
|
+
* call at register scale. `assertRecord` guarantees the equivalence: every
|
|
67
|
+
* normalized record carries exactly these eight keys in this order, and every
|
|
68
|
+
* value is `string | null`, never `undefined`. JSON's spelling of a string is
|
|
69
|
+
* injective, so field-wise equality and byte equality decide identically. */
|
|
70
|
+
export declare function sameRecords(left: readonly unknown[], right: readonly unknown[]): boolean;
|
|
58
71
|
/**
|
|
59
72
|
* Validate one snapshot record and normalize it (UUIDs lowercased,
|
|
60
73
|
* transportVersion defaulted to null). Refusals: an invalid shape; a
|
|
@@ -102,6 +115,18 @@ export declare function travelingRecords(records: readonly unknown[], sha256Hex:
|
|
|
102
115
|
/** Normalize records into the one canonical snapshot: asserted, sorted by
|
|
103
116
|
* uuid, duplicates refused. */
|
|
104
117
|
export declare function snapshotFromRecords(records: readonly unknown[]): CloudSnapshot;
|
|
118
|
+
/** One complete subtree of an already-normalized record list: `rootUuid` and
|
|
119
|
+
* everything that descends from it, in the order it arrived.
|
|
120
|
+
*
|
|
121
|
+
* Containment is reachability down child edges, so it is answered by one
|
|
122
|
+
* walk over one child index — not by sweeping the whole graph until a fixed
|
|
123
|
+
* point stops moving. Records sorted by UUID arrive in no useful tree order,
|
|
124
|
+
* so a sweep adds roughly one level per pass and pays the graph's full depth
|
|
125
|
+
* in whole-list scans. Reachability is the whole law, exactly as a sweep
|
|
126
|
+
* decided it: a record in a cycle the root cannot reach stays out, and a
|
|
127
|
+
* record whose named parent is the root itself stays in even when no record
|
|
128
|
+
* for that root is present. */
|
|
129
|
+
export declare function containedRecords(records: readonly CloudEntityRecord[], rootUuid: string): readonly CloudEntityRecord[];
|
|
105
130
|
/** Build the complete, self-contained root replacement carried by cold
|
|
106
131
|
* Register. Every declared root must be present, every record must descend
|
|
107
132
|
* from one of those roots inside this same operation, and active slots must
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/entities/cloud.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/entities/cloud.ts"],"names":[],"mappings":"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"}
|