@izagood/avcs 0.1.1 → 0.2.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/dist/index.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  export { Repo } from "./api/repo.ts";
2
+ export { canonicalize, computeOid, sha256hex } from "./core/canonical.ts";
3
+ export { reduce, snapshotReduce, reduceIncremental, keysOf, conflictIdFor, detectFileConflicts } from "./reducer/reducer.ts";
4
+ export type { ReduceInput, ReductionResult, ReduceSnapshot, Conflict, AutoDecision } from "./reducer/reducer.ts";
5
+ export { defaultPolicy, evaluateOp, MATERIALIZER_VERSION } from "./reducer/policy.ts";
2
6
  export { ObjectStore, CorruptObjectError } from "./store/objectStore.ts";
3
7
  export type { FsckReport } from "./store/objectStore.ts";
4
8
  export { startHub, HUB_PROTOCOL_VERSION } from "./hub/hubServer.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1F,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAOrC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAG1E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC7H,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAKjH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACpE,YAAY,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1F,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -6,6 +6,18 @@
6
6
  // the published build (tsconfig.build.json → dist/) compiles this to JS + .d.ts.
7
7
  // Repository / materialization
8
8
  export { Repo } from "./api/repo.js";
9
+ // Content-addressing — the sacrosanct interop invariant. A consumer (e.g. avcshub)
10
+ // that stores objects MUST address them with THESE functions, not a re-implementation:
11
+ // any byte-level divergence in canonicalize/computeOid splits oids and treeHashes and
12
+ // silently breaks interop with avcs clients. Exposed so the canonical implementation is
13
+ // importable instead of copied. Also available as `@izagood/avcs/canonical`.
14
+ export { canonicalize, computeOid, sha256hex } from "./core/canonical.js";
15
+ // Deterministic reduce/materialize core (also `@izagood/avcs/reducer`)
16
+ export { reduce, snapshotReduce, reduceIncremental, keysOf, conflictIdFor, detectFileConflicts } from "./reducer/reducer.js";
17
+ // Policy engine + materializer algorithm identity (also `@izagood/avcs/policy`).
18
+ // MATERIALIZER_VERSION changes iff the merge algorithm changes — consumers can pin /
19
+ // detect determinism boundaries off it. See RELEASES.md.
20
+ export { defaultPolicy, evaluateOp, MATERIALIZER_VERSION } from "./reducer/policy.js";
9
21
  // Object storage + integrity
10
22
  export { ObjectStore, CorruptObjectError } from "./store/objectStore.js";
11
23
  // Hub (server + client) — the replication / trust boundary avcshub productionizes
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,EAAE;AACF,mFAAmF;AACnF,yFAAyF;AACzF,wFAAwF;AACxF,iFAAiF;AAEjF,+BAA+B;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGzE,kFAAkF;AAClF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE3E,8DAA8D;AAC9D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1F,uEAAuE;AACvE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,EAAE;AACF,mFAAmF;AACnF,yFAAyF;AACzF,wFAAwF;AACxF,iFAAiF;AAEjF,+BAA+B;AAC/B,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAErC,mFAAmF;AACnF,uFAAuF;AACvF,sFAAsF;AACtF,wFAAwF;AACxF,6EAA6E;AAC7E,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE1E,uEAAuE;AACvE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG7H,iFAAiF;AACjF,qFAAqF;AACrF,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGzE,kFAAkF;AAClF,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE3E,8DAA8D;AAC9D,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG1F,uEAAuE;AACvE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Evidence, Operation, Policy } from "../objects/types.ts";
2
- export declare const MATERIALIZER_VERSION = "avcs-text-mvp/0.0.1";
2
+ export declare const MATERIALIZER_VERSION = "avcs-text3/0.1.0";
3
3
  /** A sane built-in policy used when a repo has not authored its own. */
4
4
  export declare function defaultPolicy(): Policy;
5
5
  export interface OpEvaluation {
@@ -1 +1 @@
1
- {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,QAAQ,EACR,SAAS,EACT,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,oBAAoB,wBAAwB,CAAC;AAE1D,wEAAwE;AACxE,wBAAgB,aAAa,IAAI,MAAM,CAiCtC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAkBD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,QAAQ,EAAE,EACzB,UAAU,EAAE,OAAO,EACnB,0BAA0B,EAAE,OAAO,EACnC,gBAAgB,SAAI,GACnB,YAAY,CAqEd"}
1
+ {"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAEV,QAAQ,EACR,SAAS,EACT,MAAM,EAEP,MAAM,qBAAqB,CAAC;AAY7B,eAAO,MAAM,oBAAoB,qBAA2B,CAAC;AAE7D,wEAAwE;AACxE,wBAAgB,aAAa,IAAI,MAAM,CAiCtC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAkBD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,SAAS,EACb,aAAa,EAAE,QAAQ,EAAE,EACzB,UAAU,EAAE,OAAO,EACnB,0BAA0B,EAAE,OAAO,EACnC,gBAAgB,SAAI,GACnB,YAAY,CAqEd"}
@@ -19,7 +19,17 @@
19
19
  // gates and the passing-test bonus only count evidence produced by a non-authoring
20
20
  // trusted actor (ci_bot / human). Self-reported ai_agent evidence is ignored until
21
21
  // signing lands (Phase 3). See docs/04-policy.md.
22
- export const MATERIALIZER_VERSION = "avcs-text-mvp/0.0.1";
22
+ import { MERGE3_VERSION } from "../merge/merge3.js";
23
+ // The materialize result is content-addressed: same ops ⇒ same treeHash, but only if
24
+ // every replica runs the same merge algorithm. This version string is the algorithm's
25
+ // identity, stamped into every materialize result (`materializerVersion`) and surfaced
26
+ // by the hub. It is COMPOSED from MERGE3_VERSION so that any change to the merge
27
+ // substrate flows through automatically — the symbol-aware → text-3way rewrite (0.1.1)
28
+ // failed to bump it, so symbol-era and text-era results shared one string and a
29
+ // consumer could not tell they were produced by incompatible algorithms. Composing it
30
+ // makes the merge3.ts promise ("the algorithm version is pinned into MATERIALIZER_VERSION")
31
+ // self-maintaining. Bumped to a distinct value for the 0.2.0 text-merge core.
32
+ export const MATERIALIZER_VERSION = `avcs-${MERGE3_VERSION}`;
23
33
  /** A sane built-in policy used when a repo has not authored its own. */
24
34
  export function defaultPolicy() {
25
35
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/reducer/policy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/store/lock.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,CAAC,CAAC,CAyCZ"}
1
+ {"version":3,"file":"lock.d.ts","sourceRoot":"","sources":["../../src/store/lock.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,CAAC,CAAC,CAmDZ"}
@@ -5,7 +5,7 @@
5
5
  // Implemented with mkdir, which is atomic create-if-not-exists on POSIX and Windows:
6
6
  // exactly one caller wins the directory creation. A stale lock (holder crashed) is
7
7
  // reclaimed after `staleMs`. Always released in a finally.
8
- import { mkdir, writeFile, readFile, rm } from "node:fs/promises";
8
+ import { mkdir, writeFile, readFile, rm, rename } from "node:fs/promises";
9
9
  import { join } from "node:path";
10
10
  function sleep(ms) {
11
11
  return new Promise((r) => setTimeout(r, ms));
@@ -23,7 +23,14 @@ export async function withLock(locksDir, name, fn, opts = {}) {
23
23
  for (;;) {
24
24
  try {
25
25
  await mkdir(lockPath); // atomic; EEXIST if already held
26
- await writeFile(ownerFile, `${process.pid}:${Date.now()}`, "utf8");
26
+ // Publish the owner stamp atomically: a waiter must never read a half-written
27
+ // owner file. A torn read (e.g. "pid:" with the timestamp truncated) parses to
28
+ // a tiny number that looks ancient, which would wrongly reclaim a *live* lock
29
+ // and double-grant. writeFile is not atomic, so write-then-rename instead:
30
+ // a reader sees either no owner file (ENOENT → fresh) or the full stamp.
31
+ const tmpOwner = join(lockPath, `owner.${process.pid}.tmp`);
32
+ await writeFile(tmpOwner, `${process.pid}:${Date.now()}`, "utf8");
33
+ await rename(tmpOwner, ownerFile);
27
34
  break;
28
35
  }
29
36
  catch (e) {
@@ -37,8 +44,11 @@ export async function withLock(locksDir, name, fn, opts = {}) {
37
44
  // Held by someone — reclaim if stale, else back off.
38
45
  let stale = false;
39
46
  try {
40
- const ts = Number((await readFile(ownerFile, "utf8")).split(":")[1] ?? "0");
41
- if (Date.now() - ts > staleMs)
47
+ const ts = Number((await readFile(ownerFile, "utf8")).split(":")[1]);
48
+ // Only a valid, genuinely-old stamp counts as stale. A missing/garbled stamp
49
+ // (NaN, ≤0, or a future time from a skewed clock) means acquire-in-progress
50
+ // or just-written → treat as fresh, never reclaim.
51
+ if (Number.isFinite(ts) && ts > 0 && Date.now() - ts > staleMs)
42
52
  stale = true;
43
53
  }
44
54
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/store/lock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lock.js","sourceRoot":"","sources":["../../src/store/lock.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,iFAAiF;AACjF,kFAAkF;AAClF,EAAE;AACF,qFAAqF;AACrF,mFAAmF;AACnF,2DAA2D;AAE3D,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AASD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,IAAY,EACZ,EAAoB,EACpB,OAAoB,EAAE;IAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,SAAS,CAAC;QACR,IAAI,CAAC;YACH,MAAM,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,iCAAiC;YACxD,8EAA8E;YAC9E,+EAA+E;YAC/E,8EAA8E;YAC9E,2EAA2E;YAC3E,yEAAyE;YACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC;YAC5D,MAAM,SAAS,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClC,MAAM;QACR,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;YAC/C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,0BAA0B;gBACtE,SAAS;YACX,CAAC;YACD,IAAI,IAAI,KAAK,QAAQ;gBAAE,MAAM,CAAC,CAAC;YAC/B,qDAAqD;YACrD,IAAI,KAAK,GAAG,KAAK,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrE,6EAA6E;gBAC7E,4EAA4E;gBAC5E,mDAAmD;gBACnD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO;oBAAE,KAAK,GAAG,IAAI,CAAC;YAC/E,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;YACD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrD,SAAS;YACX,CAAC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,IAAI,GAAG,CAAC,CAAC;YACxF,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,mBAAmB;QACtE,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,EAAE,EAAE,CAAC;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@izagood/avcs",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "description": "Agentic Version Control System — an AI-native VCS where intent, session, operation, evidence and decision are first-class objects and code is a materialized projection of an operation graph.",
6
6
  "license": "Apache-2.0",
@@ -46,6 +46,18 @@
46
46
  "types": "./dist/core/identity.d.ts",
47
47
  "default": "./dist/core/identity.js"
48
48
  },
49
+ "./canonical": {
50
+ "types": "./dist/core/canonical.d.ts",
51
+ "default": "./dist/core/canonical.js"
52
+ },
53
+ "./reducer": {
54
+ "types": "./dist/reducer/reducer.d.ts",
55
+ "default": "./dist/reducer/reducer.js"
56
+ },
57
+ "./policy": {
58
+ "types": "./dist/reducer/policy.d.ts",
59
+ "default": "./dist/reducer/policy.js"
60
+ },
49
61
  "./types": {
50
62
  "types": "./dist/objects/types.d.ts",
51
63
  "default": "./dist/objects/types.js"