@izagood/avcs 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +221 -0
- package/dist/api/repo.d.ts +616 -0
- package/dist/api/repo.d.ts.map +1 -0
- package/dist/api/repo.js +1772 -0
- package/dist/api/repo.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +660 -0
- package/dist/cli.js.map +1 -0
- package/dist/concurrency/lease.d.ts +27 -0
- package/dist/concurrency/lease.d.ts.map +1 -0
- package/dist/concurrency/lease.js +63 -0
- package/dist/concurrency/lease.js.map +1 -0
- package/dist/core/canonical.d.ts +16 -0
- package/dist/core/canonical.d.ts.map +1 -0
- package/dist/core/canonical.js +66 -0
- package/dist/core/canonical.js.map +1 -0
- package/dist/core/cbor.d.ts +9 -0
- package/dist/core/cbor.d.ts.map +1 -0
- package/dist/core/cbor.js +213 -0
- package/dist/core/cbor.js.map +1 -0
- package/dist/core/clock.d.ts +18 -0
- package/dist/core/clock.d.ts.map +1 -0
- package/dist/core/clock.js +32 -0
- package/dist/core/clock.js.map +1 -0
- package/dist/core/identity.d.ts +34 -0
- package/dist/core/identity.d.ts.map +1 -0
- package/dist/core/identity.js +62 -0
- package/dist/core/identity.js.map +1 -0
- package/dist/hub/hubClient.d.ts +38 -0
- package/dist/hub/hubClient.d.ts.map +1 -0
- package/dist/hub/hubClient.js +157 -0
- package/dist/hub/hubClient.js.map +1 -0
- package/dist/hub/hubServer.d.ts +28 -0
- package/dist/hub/hubServer.d.ts.map +1 -0
- package/dist/hub/hubServer.js +365 -0
- package/dist/hub/hubServer.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/objects/types.d.ts +352 -0
- package/dist/objects/types.d.ts.map +1 -0
- package/dist/objects/types.js +17 -0
- package/dist/objects/types.js.map +1 -0
- package/dist/observe/logger.d.ts +27 -0
- package/dist/observe/logger.d.ts.map +1 -0
- package/dist/observe/logger.js +37 -0
- package/dist/observe/logger.js.map +1 -0
- package/dist/observe/metrics.d.ts +20 -0
- package/dist/observe/metrics.d.ts.map +1 -0
- package/dist/observe/metrics.js +42 -0
- package/dist/observe/metrics.js.map +1 -0
- package/dist/policy/owners.d.ts +5 -0
- package/dist/policy/owners.d.ts.map +1 -0
- package/dist/policy/owners.js +38 -0
- package/dist/policy/owners.js.map +1 -0
- package/dist/policy/reliability.d.ts +7 -0
- package/dist/policy/reliability.d.ts.map +1 -0
- package/dist/policy/reliability.js +41 -0
- package/dist/policy/reliability.js.map +1 -0
- package/dist/query/diff.d.ts +16 -0
- package/dist/query/diff.d.ts.map +1 -0
- package/dist/query/diff.js +32 -0
- package/dist/query/diff.js.map +1 -0
- package/dist/reducer/incremental.d.ts +2 -0
- package/dist/reducer/incremental.d.ts.map +1 -0
- package/dist/reducer/incremental.js +14 -0
- package/dist/reducer/incremental.js.map +1 -0
- package/dist/reducer/policy.d.ts +17 -0
- package/dist/reducer/policy.d.ts.map +1 -0
- package/dist/reducer/policy.js +143 -0
- package/dist/reducer/policy.js.map +1 -0
- package/dist/reducer/reducer.d.ts +155 -0
- package/dist/reducer/reducer.d.ts.map +1 -0
- package/dist/reducer/reducer.js +849 -0
- package/dist/reducer/reducer.js.map +1 -0
- package/dist/release/sbom.d.ts +7 -0
- package/dist/release/sbom.d.ts.map +1 -0
- package/dist/release/sbom.js +26 -0
- package/dist/release/sbom.js.map +1 -0
- package/dist/semantic/contract.d.ts +32 -0
- package/dist/semantic/contract.d.ts.map +1 -0
- package/dist/semantic/contract.js +150 -0
- package/dist/semantic/contract.js.map +1 -0
- package/dist/semantic/symbols.d.ts +45 -0
- package/dist/semantic/symbols.d.ts.map +1 -0
- package/dist/semantic/symbols.js +323 -0
- package/dist/semantic/symbols.js.map +1 -0
- package/dist/store/applyRedactions.d.ts +16 -0
- package/dist/store/applyRedactions.d.ts.map +1 -0
- package/dist/store/applyRedactions.js +60 -0
- package/dist/store/applyRedactions.js.map +1 -0
- package/dist/store/lock.d.ts +12 -0
- package/dist/store/lock.d.ts.map +1 -0
- package/dist/store/lock.js +63 -0
- package/dist/store/lock.js.map +1 -0
- package/dist/store/objectStore.d.ts +127 -0
- package/dist/store/objectStore.d.ts.map +1 -0
- package/dist/store/objectStore.js +549 -0
- package/dist/store/objectStore.js.map +1 -0
- package/dist/validation/repair.d.ts +31 -0
- package/dist/validation/repair.d.ts.map +1 -0
- package/dist/validation/repair.js +37 -0
- package/dist/validation/repair.js.map +1 -0
- package/dist/validation/runner.d.ts +20 -0
- package/dist/validation/runner.d.ts.map +1 -0
- package/dist/validation/runner.js +90 -0
- package/dist/validation/runner.js.map +1 -0
- package/package.json +83 -0
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ScopeRef, WorkLease } from "../objects/types.ts";
|
|
2
|
+
export interface LeaseConflict {
|
|
3
|
+
scope: ScopeRef;
|
|
4
|
+
heldBy: string;
|
|
5
|
+
leaseOid: string;
|
|
6
|
+
}
|
|
7
|
+
/** Is the lease still in force at `nowIso`? */
|
|
8
|
+
export declare function isActive(lease: WorkLease, nowIso: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Two scopes overlap when one is a prefix of the other under the `kind:path`
|
|
11
|
+
* convention. "file:src/a.ts" overlaps "file:src/a.ts"; a glob-ish "file:src/*"
|
|
12
|
+
* (stored as "file:src/") overlaps anything beneath it. Symbol scopes nest under
|
|
13
|
+
* their file when the file scope is held.
|
|
14
|
+
*/
|
|
15
|
+
export declare function scopesOverlap(a: ScopeRef, b: ScopeRef): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Check a requested set of write scopes against the currently-active leases.
|
|
18
|
+
* Returns the conflicts (empty ⇒ grantable). `shared` leases never conflict with
|
|
19
|
+
* each other; an `exclusive` request conflicts with any overlapping active lease,
|
|
20
|
+
* and an `exclusive` holder conflicts with any new overlapping request.
|
|
21
|
+
*/
|
|
22
|
+
export declare function checkLease(request: {
|
|
23
|
+
writeScopes: ScopeRef[];
|
|
24
|
+
mode: "exclusive" | "shared";
|
|
25
|
+
actorId: string;
|
|
26
|
+
}, active: WorkLease[]): LeaseConflict[];
|
|
27
|
+
//# sourceMappingURL=lease.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../../src/concurrency/lease.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+CAA+C;AAC/C,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,OAAO,CAa/D;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE;IAAE,WAAW,EAAE,QAAQ,EAAE,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EACnF,MAAM,EAAE,SAAS,EAAE,GAClB,aAAa,EAAE,CAejB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// Phase 3: WorkLease — reduce conflicts at the START of work, not after.
|
|
2
|
+
//
|
|
3
|
+
// Before an agent edits a scope it can request a soft, optimistic lease. The lease
|
|
4
|
+
// is advisory (it expires; it is not a hard lock), but requesting an exclusive
|
|
5
|
+
// write-lease on a scope that another live exclusive lease already holds returns a
|
|
6
|
+
// conflict so the second agent can pick different work instead of duplicating
|
|
7
|
+
// effort and forcing a human decision later.
|
|
8
|
+
/** Is the lease still in force at `nowIso`? */
|
|
9
|
+
export function isActive(lease, nowIso) {
|
|
10
|
+
if (lease.releasedAt)
|
|
11
|
+
return false;
|
|
12
|
+
return lease.expiresAt > nowIso;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Two scopes overlap when one is a prefix of the other under the `kind:path`
|
|
16
|
+
* convention. "file:src/a.ts" overlaps "file:src/a.ts"; a glob-ish "file:src/*"
|
|
17
|
+
* (stored as "file:src/") overlaps anything beneath it. Symbol scopes nest under
|
|
18
|
+
* their file when the file scope is held.
|
|
19
|
+
*/
|
|
20
|
+
export function scopesOverlap(a, b) {
|
|
21
|
+
if (a === b)
|
|
22
|
+
return true;
|
|
23
|
+
const norm = (s) => s.replace(/\*+$/, "");
|
|
24
|
+
const [na, nb] = [norm(a), norm(b)];
|
|
25
|
+
if (na.endsWith("/") && b.startsWith(na))
|
|
26
|
+
return true;
|
|
27
|
+
if (nb.endsWith("/") && a.startsWith(nb))
|
|
28
|
+
return true;
|
|
29
|
+
// A held file scope covers symbol scopes within that file ("symbol:<file>#...").
|
|
30
|
+
const fileOf = (s) => (s.startsWith("symbol:") ? "file:" + s.slice("symbol:".length).split("#")[0] : null);
|
|
31
|
+
const fa = fileOf(a);
|
|
32
|
+
const fb = fileOf(b);
|
|
33
|
+
if (fa && fa === b)
|
|
34
|
+
return true;
|
|
35
|
+
if (fb && fb === a)
|
|
36
|
+
return true;
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check a requested set of write scopes against the currently-active leases.
|
|
41
|
+
* Returns the conflicts (empty ⇒ grantable). `shared` leases never conflict with
|
|
42
|
+
* each other; an `exclusive` request conflicts with any overlapping active lease,
|
|
43
|
+
* and an `exclusive` holder conflicts with any new overlapping request.
|
|
44
|
+
*/
|
|
45
|
+
export function checkLease(request, active) {
|
|
46
|
+
const conflicts = [];
|
|
47
|
+
for (const held of active) {
|
|
48
|
+
if (held.actor.id === request.actorId)
|
|
49
|
+
continue; // own leases never block self
|
|
50
|
+
for (const reqScope of request.writeScopes) {
|
|
51
|
+
for (const heldScope of held.writeScopes) {
|
|
52
|
+
if (!scopesOverlap(reqScope, heldScope))
|
|
53
|
+
continue;
|
|
54
|
+
const exclusiveInvolved = request.mode === "exclusive" || held.mode === "exclusive";
|
|
55
|
+
if (exclusiveInvolved) {
|
|
56
|
+
conflicts.push({ scope: reqScope, heldBy: held.actor.id, leaseOid: held.oid });
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return conflicts;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=lease.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lease.js","sourceRoot":"","sources":["../../src/concurrency/lease.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,EAAE;AACF,mFAAmF;AACnF,+EAA+E;AAC/E,mFAAmF;AACnF,8EAA8E;AAC9E,6CAA6C;AAU7C,+CAA+C;AAC/C,MAAM,UAAU,QAAQ,CAAC,KAAgB,EAAE,MAAc;IACvD,IAAI,KAAK,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,CAAW,EAAE,CAAW;IACpD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,iFAAiF;IACjF,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrH,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,OAAmF,EACnF,MAAmB;IAEnB,MAAM,SAAS,GAAoB,EAAE,CAAC;IACtC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,OAAO;YAAE,SAAS,CAAC,8BAA8B;QAC/E,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YAC3C,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,SAAS,CAAC;oBAAE,SAAS;gBAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC;gBACpF,IAAI,iBAAiB,EAAE,CAAC;oBACtB,SAAS,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAa,EAAE,CAAC,CAAC;gBAC3F,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministically serialize a JSON-compatible value:
|
|
3
|
+
* - object keys sorted lexicographically
|
|
4
|
+
* - no insignificant whitespace
|
|
5
|
+
* - `undefined` fields dropped (objects only)
|
|
6
|
+
* Throws on non-finite numbers and on values that cannot round-trip.
|
|
7
|
+
*/
|
|
8
|
+
export declare function canonicalize(value: unknown): string;
|
|
9
|
+
/** sha256 hex of arbitrary bytes/strings. */
|
|
10
|
+
export declare function sha256hex(data: string | Uint8Array): string;
|
|
11
|
+
/**
|
|
12
|
+
* Compute the object id of a typed payload. The `oid` field (if present) is never
|
|
13
|
+
* part of its own hash — content addressing must be a fixed point.
|
|
14
|
+
*/
|
|
15
|
+
export declare function computeOid(type: string, payload: Record<string, unknown>): string;
|
|
16
|
+
//# sourceMappingURL=canonical.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAUA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AA8BD,6CAA6C;AAC7C,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CASjF"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
// Canonical serialization + content addressing.
|
|
2
|
+
//
|
|
3
|
+
// AVCS objects are content-addressed: an object's identity is the hash of its
|
|
4
|
+
// canonical byte representation. The MVP uses canonical JSON (deterministic key
|
|
5
|
+
// ordering, no insignificant whitespace). The on-disk/wire format is intended to
|
|
6
|
+
// migrate to canonical CBOR later — `serialize` is the single choke point so that
|
|
7
|
+
// swap stays local.
|
|
8
|
+
import { createHash } from "node:crypto";
|
|
9
|
+
/**
|
|
10
|
+
* Deterministically serialize a JSON-compatible value:
|
|
11
|
+
* - object keys sorted lexicographically
|
|
12
|
+
* - no insignificant whitespace
|
|
13
|
+
* - `undefined` fields dropped (objects only)
|
|
14
|
+
* Throws on non-finite numbers and on values that cannot round-trip.
|
|
15
|
+
*/
|
|
16
|
+
export function canonicalize(value) {
|
|
17
|
+
return encode(value);
|
|
18
|
+
}
|
|
19
|
+
function encode(value) {
|
|
20
|
+
if (value === null)
|
|
21
|
+
return "null";
|
|
22
|
+
const t = typeof value;
|
|
23
|
+
if (t === "number") {
|
|
24
|
+
if (!Number.isFinite(value)) {
|
|
25
|
+
throw new Error(`non-finite number is not serializable: ${String(value)}`);
|
|
26
|
+
}
|
|
27
|
+
return JSON.stringify(value);
|
|
28
|
+
}
|
|
29
|
+
if (t === "boolean" || t === "string")
|
|
30
|
+
return JSON.stringify(value);
|
|
31
|
+
if (t === "bigint") {
|
|
32
|
+
// Refuse rather than encode as a string: `1n` and "1" must not collide.
|
|
33
|
+
throw new Error("bigint is not serializable in AVCS objects; pass a string explicitly");
|
|
34
|
+
}
|
|
35
|
+
if (Array.isArray(value)) {
|
|
36
|
+
return `[${value.map((v) => encode(v ?? null)).join(",")}]`;
|
|
37
|
+
}
|
|
38
|
+
if (t === "object") {
|
|
39
|
+
const obj = value;
|
|
40
|
+
const keys = Object.keys(obj)
|
|
41
|
+
.filter((k) => obj[k] !== undefined)
|
|
42
|
+
.sort();
|
|
43
|
+
const body = keys.map((k) => `${JSON.stringify(k)}:${encode(obj[k])}`).join(",");
|
|
44
|
+
return `{${body}}`;
|
|
45
|
+
}
|
|
46
|
+
throw new Error(`unserializable value of type ${t}`);
|
|
47
|
+
}
|
|
48
|
+
/** sha256 hex of arbitrary bytes/strings. */
|
|
49
|
+
export function sha256hex(data) {
|
|
50
|
+
return createHash("sha256").update(data).digest("hex");
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Compute the object id of a typed payload. The `oid` field (if present) is never
|
|
54
|
+
* part of its own hash — content addressing must be a fixed point.
|
|
55
|
+
*/
|
|
56
|
+
export function computeOid(type, payload) {
|
|
57
|
+
// oid and sig are excluded: oid is a fixed point of the content; a
|
|
58
|
+
// signature signs the oid, so it cannot be inside what it signs.
|
|
59
|
+
const { oid: _oid, sig: _sig, ...rest } = payload;
|
|
60
|
+
void _oid;
|
|
61
|
+
void _sig;
|
|
62
|
+
const digest = sha256hex(`${type} ${canonicalize(rest)}`);
|
|
63
|
+
// Short, human-greppable, collision-safe enough for an MVP: type prefix + 16 bytes.
|
|
64
|
+
return `${type}_${digest.slice(0, 32)}`;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=canonical.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,iFAAiF;AACjF,kFAAkF;AAClF,oBAAoB;AAEpB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAe,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,0CAA0C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,wEAAwE;QACxE,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC1F,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC;aACnC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjF,OAAO,IAAI,IAAI,GAAG,CAAC;IACrB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,6CAA6C;AAC7C,MAAM,UAAU,SAAS,CAAC,IAAyB;IACjD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY,EAAE,OAAgC;IACvE,mEAAmE;IACnE,iEAAiE;IACjE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,OAA2C,CAAC;IACtF,KAAK,IAAI,CAAC;IACV,KAAK,IAAI,CAAC;IACV,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1D,oFAAoF;IACpF,OAAO,GAAG,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Buffer } from "node:buffer";
|
|
2
|
+
/** Encode a JSON-compatible value to canonical CBOR bytes. */
|
|
3
|
+
export declare function encodeCbor(value: unknown): Buffer;
|
|
4
|
+
/** Decode canonical CBOR bytes back to a JSON-compatible value. */
|
|
5
|
+
export declare function decodeCbor(buf: Buffer): unknown;
|
|
6
|
+
/** True if `buf` looks like a CBOR object (map) rather than legacy JSON (`{`/whitespace).
|
|
7
|
+
* A CBOR map's initial byte has major type 5 (0xa0–0xbf); JSON starts with 0x7b/ws. */
|
|
8
|
+
export declare function looksLikeCbor(buf: Buffer): boolean;
|
|
9
|
+
//# sourceMappingURL=cbor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbor.d.ts","sourceRoot":"","sources":["../../src/core/cbor.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAgErC,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAIjD;AA8CD,mEAAmE;AACnE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAK/C;AAED;wFACwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIlD"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// Minimal canonical CBOR codec for AVCS objects (docs/11 Track B / B1). No dependencies.
|
|
2
|
+
//
|
|
3
|
+
// Scope: the JSON-compatible value space AVCS objects live in — null, boolean, finite
|
|
4
|
+
// number, string, array, and string-keyed object. That is exactly what `canonicalize`
|
|
5
|
+
// (JSON) accepts, so CBOR is a drop-in *storage/transport* encoding. Object identity is
|
|
6
|
+
// UNCHANGED: oids are still the sha256 of the canonical JSON form (see canonical.ts), so
|
|
7
|
+
// switching the on-disk bytes to CBOR is oid-neutral — content addressing, signatures,
|
|
8
|
+
// and treeHash are untouched.
|
|
9
|
+
//
|
|
10
|
+
// Canonical form (RFC 8949 §4.2 core rules we need): definite lengths, shortest-possible
|
|
11
|
+
// integer/length headers, map keys sorted by their UTF-8 bytes, `undefined` object
|
|
12
|
+
// fields dropped (mirrors canonicalize). Determinism isn't required for correctness (the
|
|
13
|
+
// oid is JSON-derived) but keeps byte output stable and idempotent writes a no-op.
|
|
14
|
+
import { Buffer } from "node:buffer";
|
|
15
|
+
// Major types (high 3 bits of the initial byte).
|
|
16
|
+
const MAJOR_UINT = 0;
|
|
17
|
+
const MAJOR_NEGINT = 1;
|
|
18
|
+
const MAJOR_TEXT = 3;
|
|
19
|
+
const MAJOR_ARRAY = 4;
|
|
20
|
+
const MAJOR_MAP = 5;
|
|
21
|
+
class Writer {
|
|
22
|
+
#chunks = [];
|
|
23
|
+
push(b) { this.#chunks.push(b); }
|
|
24
|
+
/** Initial byte (major<<5 | argument) with the shortest header for `n`. */
|
|
25
|
+
header(major, n) {
|
|
26
|
+
if (n < 0 || !Number.isInteger(n))
|
|
27
|
+
throw new Error(`bad header length ${n}`);
|
|
28
|
+
if (n < 24)
|
|
29
|
+
this.push(Buffer.from([(major << 5) | n]));
|
|
30
|
+
else if (n < 0x100)
|
|
31
|
+
this.push(Buffer.from([(major << 5) | 24, n]));
|
|
32
|
+
else if (n < 0x10000) {
|
|
33
|
+
const b = Buffer.alloc(3);
|
|
34
|
+
b[0] = (major << 5) | 25;
|
|
35
|
+
b.writeUInt16BE(n, 1);
|
|
36
|
+
this.push(b);
|
|
37
|
+
}
|
|
38
|
+
else if (n < 0x100000000) {
|
|
39
|
+
const b = Buffer.alloc(5);
|
|
40
|
+
b[0] = (major << 5) | 26;
|
|
41
|
+
b.writeUInt32BE(n, 1);
|
|
42
|
+
this.push(b);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const b = Buffer.alloc(9);
|
|
46
|
+
b[0] = (major << 5) | 27;
|
|
47
|
+
b.writeBigUInt64BE(BigInt(n), 1);
|
|
48
|
+
this.push(b);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
bytes() { return Buffer.concat(this.#chunks); }
|
|
52
|
+
}
|
|
53
|
+
function encodeValue(w, v) {
|
|
54
|
+
if (v === null || v === undefined) {
|
|
55
|
+
w.push(Buffer.from([0xf6]));
|
|
56
|
+
return;
|
|
57
|
+
} // null (undefined only reaches here at top level)
|
|
58
|
+
switch (typeof v) {
|
|
59
|
+
case "boolean":
|
|
60
|
+
w.push(Buffer.from([v ? 0xf5 : 0xf4]));
|
|
61
|
+
return;
|
|
62
|
+
case "number": {
|
|
63
|
+
if (!Number.isFinite(v))
|
|
64
|
+
throw new Error(`non-finite number is not serializable: ${v}`);
|
|
65
|
+
if (Number.isInteger(v) && Math.abs(v) <= Number.MAX_SAFE_INTEGER) {
|
|
66
|
+
if (v >= 0)
|
|
67
|
+
w.header(MAJOR_UINT, v);
|
|
68
|
+
else
|
|
69
|
+
w.header(MAJOR_NEGINT, -1 - v);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
const b = Buffer.alloc(9);
|
|
73
|
+
b[0] = 0xfb;
|
|
74
|
+
b.writeDoubleBE(v, 1);
|
|
75
|
+
w.push(b); // float64
|
|
76
|
+
}
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
case "string": {
|
|
80
|
+
const utf8 = Buffer.from(v, "utf8");
|
|
81
|
+
w.header(MAJOR_TEXT, utf8.length);
|
|
82
|
+
w.push(utf8);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
case "bigint": throw new Error("bigint is not serializable in AVCS objects; pass a string");
|
|
86
|
+
case "object": {
|
|
87
|
+
if (Array.isArray(v)) {
|
|
88
|
+
w.header(MAJOR_ARRAY, v.length);
|
|
89
|
+
for (const item of v)
|
|
90
|
+
encodeValue(w, item ?? null);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const obj = v;
|
|
94
|
+
const keys = Object.keys(obj).filter((k) => obj[k] !== undefined).sort((a, b) => {
|
|
95
|
+
const ba = Buffer.from(a, "utf8");
|
|
96
|
+
const bb = Buffer.from(b, "utf8");
|
|
97
|
+
return ba.compare(bb);
|
|
98
|
+
});
|
|
99
|
+
w.header(MAJOR_MAP, keys.length);
|
|
100
|
+
for (const k of keys) {
|
|
101
|
+
encodeValue(w, k);
|
|
102
|
+
encodeValue(w, obj[k]);
|
|
103
|
+
}
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
default: throw new Error(`unserializable value of type ${typeof v}`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/** Encode a JSON-compatible value to canonical CBOR bytes. */
|
|
110
|
+
export function encodeCbor(value) {
|
|
111
|
+
const w = new Writer();
|
|
112
|
+
encodeValue(w, value);
|
|
113
|
+
return w.bytes();
|
|
114
|
+
}
|
|
115
|
+
class Reader {
|
|
116
|
+
#buf;
|
|
117
|
+
#pos = 0;
|
|
118
|
+
constructor(buf) { this.#buf = buf; }
|
|
119
|
+
#u8() { if (this.#pos >= this.#buf.length)
|
|
120
|
+
throw new Error("CBOR: unexpected end"); return this.#buf[this.#pos++]; }
|
|
121
|
+
#take(n) { if (this.#pos + n > this.#buf.length)
|
|
122
|
+
throw new Error("CBOR: unexpected end"); const s = this.#buf.subarray(this.#pos, this.#pos + n); this.#pos += n; return s; }
|
|
123
|
+
/** Read the argument that follows an initial byte's low-5-bits `info`. */
|
|
124
|
+
#arg(info) {
|
|
125
|
+
if (info < 24)
|
|
126
|
+
return info;
|
|
127
|
+
if (info === 24)
|
|
128
|
+
return this.#u8();
|
|
129
|
+
if (info === 25) {
|
|
130
|
+
const b = this.#take(2);
|
|
131
|
+
return b.readUInt16BE(0);
|
|
132
|
+
}
|
|
133
|
+
if (info === 26) {
|
|
134
|
+
const b = this.#take(4);
|
|
135
|
+
return b.readUInt32BE(0);
|
|
136
|
+
}
|
|
137
|
+
if (info === 27) {
|
|
138
|
+
const b = this.#take(8);
|
|
139
|
+
const n = b.readBigUInt64BE(0);
|
|
140
|
+
if (n > BigInt(Number.MAX_SAFE_INTEGER))
|
|
141
|
+
throw new Error("CBOR: integer too large");
|
|
142
|
+
return Number(n);
|
|
143
|
+
}
|
|
144
|
+
throw new Error(`CBOR: bad additional info ${info}`);
|
|
145
|
+
}
|
|
146
|
+
value() {
|
|
147
|
+
const ib = this.#u8();
|
|
148
|
+
const major = ib >> 5;
|
|
149
|
+
const info = ib & 0x1f;
|
|
150
|
+
switch (major) {
|
|
151
|
+
case MAJOR_UINT: return this.#arg(info);
|
|
152
|
+
case MAJOR_NEGINT: return -1 - this.#arg(info);
|
|
153
|
+
case MAJOR_TEXT: {
|
|
154
|
+
const len = this.#arg(info);
|
|
155
|
+
return this.#take(len).toString("utf8");
|
|
156
|
+
}
|
|
157
|
+
case MAJOR_ARRAY: {
|
|
158
|
+
const len = this.#arg(info);
|
|
159
|
+
const out = [];
|
|
160
|
+
for (let i = 0; i < len; i++)
|
|
161
|
+
out.push(this.value());
|
|
162
|
+
return out;
|
|
163
|
+
}
|
|
164
|
+
case MAJOR_MAP: {
|
|
165
|
+
const len = this.#arg(info);
|
|
166
|
+
const out = {};
|
|
167
|
+
for (let i = 0; i < len; i++) {
|
|
168
|
+
const k = this.value();
|
|
169
|
+
if (typeof k !== "string")
|
|
170
|
+
throw new Error("CBOR: non-string map key");
|
|
171
|
+
out[k] = this.value();
|
|
172
|
+
}
|
|
173
|
+
return out;
|
|
174
|
+
}
|
|
175
|
+
case 7: { // simple/float
|
|
176
|
+
if (info === 20)
|
|
177
|
+
return false;
|
|
178
|
+
if (info === 21)
|
|
179
|
+
return true;
|
|
180
|
+
if (info === 22 || info === 23)
|
|
181
|
+
return null; // null / undefined → null
|
|
182
|
+
if (info === 27) {
|
|
183
|
+
const b = this.#take(8);
|
|
184
|
+
return b.readDoubleBE(0);
|
|
185
|
+
}
|
|
186
|
+
if (info === 26) {
|
|
187
|
+
const b = this.#take(4);
|
|
188
|
+
return b.readFloatBE(0);
|
|
189
|
+
}
|
|
190
|
+
throw new Error(`CBOR: unsupported simple value ${info}`);
|
|
191
|
+
}
|
|
192
|
+
default: throw new Error(`CBOR: unsupported major type ${major}`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
done() { return this.#pos === this.#buf.length; }
|
|
196
|
+
}
|
|
197
|
+
/** Decode canonical CBOR bytes back to a JSON-compatible value. */
|
|
198
|
+
export function decodeCbor(buf) {
|
|
199
|
+
const r = new Reader(buf);
|
|
200
|
+
const v = r.value();
|
|
201
|
+
if (!r.done())
|
|
202
|
+
throw new Error("CBOR: trailing bytes");
|
|
203
|
+
return v;
|
|
204
|
+
}
|
|
205
|
+
/** True if `buf` looks like a CBOR object (map) rather than legacy JSON (`{`/whitespace).
|
|
206
|
+
* A CBOR map's initial byte has major type 5 (0xa0–0xbf); JSON starts with 0x7b/ws. */
|
|
207
|
+
export function looksLikeCbor(buf) {
|
|
208
|
+
if (buf.length === 0)
|
|
209
|
+
return false;
|
|
210
|
+
const b0 = buf[0];
|
|
211
|
+
return b0 >= 0xa0 && b0 <= 0xbf; // major type 5 (map), definite or indefinite
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=cbor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cbor.js","sourceRoot":"","sources":["../../src/core/cbor.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,EAAE;AACF,sFAAsF;AACtF,sFAAsF;AACtF,wFAAwF;AACxF,yFAAyF;AACzF,uFAAuF;AACvF,8BAA8B;AAC9B,EAAE;AACF,yFAAyF;AACzF,mFAAmF;AACnF,yFAAyF;AACzF,mFAAmF;AACnF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,iDAAiD;AACjD,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,MAAM;IACV,OAAO,GAAa,EAAE,CAAC;IACvB,IAAI,CAAC,CAAS,IAAU,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/C,2EAA2E;IAC3E,MAAM,CAAC,KAAa,EAAE,CAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,GAAG,EAAE;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAClD,IAAI,CAAC,GAAG,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9D,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;aAC9G,IAAI,CAAC,GAAG,WAAW,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;aAClH,CAAC;YAAC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;IAC/G,CAAC;IACD,KAAK,KAAa,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;CACxD;AAED,SAAS,WAAW,CAAC,CAAS,EAAE,CAAU;IACxC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC,CAAC,kDAAkD;IAC9H,QAAQ,OAAO,CAAC,EAAE,CAAC;QACjB,KAAK,SAAS;YAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO;QAC/D,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,EAAE,CAAC,CAAC;YACxF,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBAClE,IAAI,CAAC,IAAI,CAAC;oBAAE,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;oBAC/B,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBAAC,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;YACtF,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACpC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC5F,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrB,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAChC,KAAK,MAAM,IAAI,IAAI,CAAC;oBAAE,WAAW,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,CAA4B,CAAC;YACzC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9E,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBACrE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;YACpE,OAAO;QACT,CAAC;QACD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtB,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,MAAM;IACV,IAAI,CAAS;IACb,IAAI,GAAG,CAAC,CAAC;IACT,YAAY,GAAW,IAAI,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAC7C,GAAG,KAAa,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAE,CAAC,CAAC,CAAC;IAC7H,KAAK,CAAC,CAAS,IAAY,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7L,0EAA0E;IAC1E,IAAI,CAAC,IAAY;QACf,IAAI,IAAI,GAAG,EAAE;YAAE,OAAO,IAAI,CAAC;QAC3B,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACvE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACvE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAC,MAAM,CAAC,GAAG,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAAC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACpL,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,KAAK;QACH,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,EAAE,IAAI,CAAC,CAAC;QACtB,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC;QACvB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxC,KAAK,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,KAAK,UAAU,CAAC,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAAC,CAAC;YAC1F,KAAK,WAAW,CAAC,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAAC,MAAM,GAAG,GAAc,EAAE,CAAC;gBAAC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAAC,OAAO,GAAG,CAAC;YAAC,CAAC;YAC/I,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,GAAG,GAA4B,EAAE,CAAC;gBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;wBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;oBAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBACxJ,OAAO,GAAG,CAAC;YACb,CAAC;YACD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;gBACvB,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,KAAK,CAAC;gBAC9B,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC;gBAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC,CAAC,0BAA0B;gBACvE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;oBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACvE,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;oBAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAAC,CAAC;gBACtE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IACD,IAAI,KAAc,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;CAC3D;AAED,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpB,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACvD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;wFACwF;AACxF,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;IACnB,OAAO,EAAE,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC,6CAA6C;AAChF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface Stamp {
|
|
2
|
+
/** Lamport logical time. */
|
|
3
|
+
lamport: number;
|
|
4
|
+
/** Wall clock, ISO-8601. Advisory only. */
|
|
5
|
+
wall: string;
|
|
6
|
+
}
|
|
7
|
+
/** Monotonic Lamport clock for a single actor/process. */
|
|
8
|
+
export declare class LamportClock {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(start?: number);
|
|
11
|
+
/** Local event: advance and return. */
|
|
12
|
+
tick(): number;
|
|
13
|
+
/** Receiving a remote stamp: merge then advance. */
|
|
14
|
+
observe(remote: number): number;
|
|
15
|
+
get value(): number;
|
|
16
|
+
}
|
|
17
|
+
export declare function nowStamp(clock: LamportClock): Stamp;
|
|
18
|
+
//# sourceMappingURL=clock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/core/clock.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,KAAK;IACpB,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,0DAA0D;AAC1D,qBAAa,YAAY;;gBAEX,KAAK,SAAI;IAGrB,uCAAuC;IACvC,IAAI,IAAI,MAAM;IAGd,oDAAoD;IACpD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAI/B,IAAI,KAAK,IAAI,MAAM,CAElB;CACF;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,KAAK,CAEnD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// Logical + wall clock.
|
|
2
|
+
//
|
|
3
|
+
// Causal ordering in AVCS is driven by `causal_deps` (a DAG), but the reducer needs
|
|
4
|
+
// a deterministic tie-break for genuinely concurrent operations. We use a Lamport
|
|
5
|
+
// timestamp carried on each operation, with the object id as the final tie-break so
|
|
6
|
+
// that ordering is total and replica-independent.
|
|
7
|
+
//
|
|
8
|
+
// Wall-clock time is recorded for humans/telemetry only; it is never used to decide
|
|
9
|
+
// who wins a conflict (last-write-wins is a Phase-N fallback, not a default).
|
|
10
|
+
/** Monotonic Lamport clock for a single actor/process. */
|
|
11
|
+
export class LamportClock {
|
|
12
|
+
#t;
|
|
13
|
+
constructor(start = 0) {
|
|
14
|
+
this.#t = start;
|
|
15
|
+
}
|
|
16
|
+
/** Local event: advance and return. */
|
|
17
|
+
tick() {
|
|
18
|
+
return ++this.#t;
|
|
19
|
+
}
|
|
20
|
+
/** Receiving a remote stamp: merge then advance. */
|
|
21
|
+
observe(remote) {
|
|
22
|
+
this.#t = Math.max(this.#t, remote) + 1;
|
|
23
|
+
return this.#t;
|
|
24
|
+
}
|
|
25
|
+
get value() {
|
|
26
|
+
return this.#t;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function nowStamp(clock) {
|
|
30
|
+
return { lamport: clock.tick(), wall: new Date().toISOString() };
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=clock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/core/clock.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,oFAAoF;AACpF,kFAAkF;AAClF,oFAAoF;AACpF,kDAAkD;AAClD,EAAE;AACF,oFAAoF;AACpF,8EAA8E;AAS9E,0DAA0D;AAC1D,MAAM,OAAO,YAAY;IACvB,EAAE,CAAS;IACX,YAAY,KAAK,GAAG,CAAC;QACnB,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;IAClB,CAAC;IACD,uCAAuC;IACvC,IAAI;QACF,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;IACnB,CAAC;IACD,oDAAoD;IACpD,OAAO,CAAC,MAAc;QACpB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;CACF;AAED,MAAM,UAAU,QAAQ,CAAC,KAAmB;IAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AACnE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface Signature {
|
|
2
|
+
keyId: string;
|
|
3
|
+
alg: "ed25519";
|
|
4
|
+
/** base64 signature over the signed message (the object oid). */
|
|
5
|
+
sig: string;
|
|
6
|
+
}
|
|
7
|
+
export interface Keypair {
|
|
8
|
+
publicKey: string;
|
|
9
|
+
privateKey: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function generateKeypair(): Keypair;
|
|
12
|
+
export declare function signMessage(privateKeyPem: string, message: string): string;
|
|
13
|
+
export declare function verifyMessage(publicKeyPem: string, message: string, sigB64: string): boolean;
|
|
14
|
+
export interface KeyRecord {
|
|
15
|
+
keyId: string;
|
|
16
|
+
publicKey: string;
|
|
17
|
+
actorId: string;
|
|
18
|
+
actorKind: "human" | "ai_agent" | "ci_bot";
|
|
19
|
+
}
|
|
20
|
+
/** A registry of trusted public keys, keyed by keyId. */
|
|
21
|
+
export declare class Keyring {
|
|
22
|
+
#private;
|
|
23
|
+
register(rec: KeyRecord): void;
|
|
24
|
+
get(keyId: string): KeyRecord | undefined;
|
|
25
|
+
has(keyId: string): boolean;
|
|
26
|
+
get size(): number;
|
|
27
|
+
/**
|
|
28
|
+
* Verify a signature over `oid`, claimed to come from `claimedActorId`.
|
|
29
|
+
* Returns true only if the signing key is registered AND its registered actor
|
|
30
|
+
* matches the claim — i.e. you cannot sign as ci_bot with ai_agent's key.
|
|
31
|
+
*/
|
|
32
|
+
verifyFor(claimedActorId: string, oid: string, sig: Signature | undefined): boolean;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/core/identity.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,SAAS,CAAC;IACf,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,IAAI,OAAO,CAMzC;AAED,wBAAgB,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1E;AAED,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM5F;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;CAC5C;AAED,yDAAyD;AACzD,qBAAa,OAAO;;IAGlB,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI;IAG9B,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS;IAGzC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAG3B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,SAAS,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO;CAOpF"}
|