@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.
Files changed (111) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +221 -0
  3. package/dist/api/repo.d.ts +616 -0
  4. package/dist/api/repo.d.ts.map +1 -0
  5. package/dist/api/repo.js +1772 -0
  6. package/dist/api/repo.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +660 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/concurrency/lease.d.ts +27 -0
  12. package/dist/concurrency/lease.d.ts.map +1 -0
  13. package/dist/concurrency/lease.js +63 -0
  14. package/dist/concurrency/lease.js.map +1 -0
  15. package/dist/core/canonical.d.ts +16 -0
  16. package/dist/core/canonical.d.ts.map +1 -0
  17. package/dist/core/canonical.js +66 -0
  18. package/dist/core/canonical.js.map +1 -0
  19. package/dist/core/cbor.d.ts +9 -0
  20. package/dist/core/cbor.d.ts.map +1 -0
  21. package/dist/core/cbor.js +213 -0
  22. package/dist/core/cbor.js.map +1 -0
  23. package/dist/core/clock.d.ts +18 -0
  24. package/dist/core/clock.d.ts.map +1 -0
  25. package/dist/core/clock.js +32 -0
  26. package/dist/core/clock.js.map +1 -0
  27. package/dist/core/identity.d.ts +34 -0
  28. package/dist/core/identity.d.ts.map +1 -0
  29. package/dist/core/identity.js +62 -0
  30. package/dist/core/identity.js.map +1 -0
  31. package/dist/hub/hubClient.d.ts +38 -0
  32. package/dist/hub/hubClient.d.ts.map +1 -0
  33. package/dist/hub/hubClient.js +157 -0
  34. package/dist/hub/hubClient.js.map +1 -0
  35. package/dist/hub/hubServer.d.ts +28 -0
  36. package/dist/hub/hubServer.d.ts.map +1 -0
  37. package/dist/hub/hubServer.js +365 -0
  38. package/dist/hub/hubServer.js.map +1 -0
  39. package/dist/index.d.ts +13 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +19 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/objects/types.d.ts +352 -0
  44. package/dist/objects/types.d.ts.map +1 -0
  45. package/dist/objects/types.js +17 -0
  46. package/dist/objects/types.js.map +1 -0
  47. package/dist/observe/logger.d.ts +27 -0
  48. package/dist/observe/logger.d.ts.map +1 -0
  49. package/dist/observe/logger.js +37 -0
  50. package/dist/observe/logger.js.map +1 -0
  51. package/dist/observe/metrics.d.ts +20 -0
  52. package/dist/observe/metrics.d.ts.map +1 -0
  53. package/dist/observe/metrics.js +42 -0
  54. package/dist/observe/metrics.js.map +1 -0
  55. package/dist/policy/owners.d.ts +5 -0
  56. package/dist/policy/owners.d.ts.map +1 -0
  57. package/dist/policy/owners.js +38 -0
  58. package/dist/policy/owners.js.map +1 -0
  59. package/dist/policy/reliability.d.ts +7 -0
  60. package/dist/policy/reliability.d.ts.map +1 -0
  61. package/dist/policy/reliability.js +41 -0
  62. package/dist/policy/reliability.js.map +1 -0
  63. package/dist/query/diff.d.ts +16 -0
  64. package/dist/query/diff.d.ts.map +1 -0
  65. package/dist/query/diff.js +32 -0
  66. package/dist/query/diff.js.map +1 -0
  67. package/dist/reducer/incremental.d.ts +2 -0
  68. package/dist/reducer/incremental.d.ts.map +1 -0
  69. package/dist/reducer/incremental.js +14 -0
  70. package/dist/reducer/incremental.js.map +1 -0
  71. package/dist/reducer/policy.d.ts +17 -0
  72. package/dist/reducer/policy.d.ts.map +1 -0
  73. package/dist/reducer/policy.js +143 -0
  74. package/dist/reducer/policy.js.map +1 -0
  75. package/dist/reducer/reducer.d.ts +155 -0
  76. package/dist/reducer/reducer.d.ts.map +1 -0
  77. package/dist/reducer/reducer.js +849 -0
  78. package/dist/reducer/reducer.js.map +1 -0
  79. package/dist/release/sbom.d.ts +7 -0
  80. package/dist/release/sbom.d.ts.map +1 -0
  81. package/dist/release/sbom.js +26 -0
  82. package/dist/release/sbom.js.map +1 -0
  83. package/dist/semantic/contract.d.ts +32 -0
  84. package/dist/semantic/contract.d.ts.map +1 -0
  85. package/dist/semantic/contract.js +150 -0
  86. package/dist/semantic/contract.js.map +1 -0
  87. package/dist/semantic/symbols.d.ts +45 -0
  88. package/dist/semantic/symbols.d.ts.map +1 -0
  89. package/dist/semantic/symbols.js +323 -0
  90. package/dist/semantic/symbols.js.map +1 -0
  91. package/dist/store/applyRedactions.d.ts +16 -0
  92. package/dist/store/applyRedactions.d.ts.map +1 -0
  93. package/dist/store/applyRedactions.js +60 -0
  94. package/dist/store/applyRedactions.js.map +1 -0
  95. package/dist/store/lock.d.ts +12 -0
  96. package/dist/store/lock.d.ts.map +1 -0
  97. package/dist/store/lock.js +63 -0
  98. package/dist/store/lock.js.map +1 -0
  99. package/dist/store/objectStore.d.ts +127 -0
  100. package/dist/store/objectStore.d.ts.map +1 -0
  101. package/dist/store/objectStore.js +549 -0
  102. package/dist/store/objectStore.js.map +1 -0
  103. package/dist/validation/repair.d.ts +31 -0
  104. package/dist/validation/repair.d.ts.map +1 -0
  105. package/dist/validation/repair.js +37 -0
  106. package/dist/validation/repair.js.map +1 -0
  107. package/dist/validation/runner.d.ts +20 -0
  108. package/dist/validation/runner.d.ts.map +1 -0
  109. package/dist/validation/runner.js +90 -0
  110. package/dist/validation/runner.js.map +1 -0
  111. package/package.json +83 -0
@@ -0,0 +1,365 @@
1
+ // A self-contained HTTP hub for object-gossip over the network (M2 / docs/10 WS-B).
2
+ //
3
+ // The hub is just an ObjectStore behind three minimal endpoints. Because objects are
4
+ // content-addressed and append-only, sync is a conflict-free union: clients diff their
5
+ // local oid set against the hub's "have" set and transfer only what's missing, in
6
+ // either direction. The hub never mutates an existing object (idempotent put).
7
+ //
8
+ // GET /have → JSON array of every oid the hub holds (the "have" set)
9
+ // GET /objects/:oid → the stored object JSON (404 if absent)
10
+ // POST /objects → store an object (body = object JSON), returns { oid }
11
+ //
12
+ // Node builtins only: node:http + the existing ObjectStore.
13
+ import { createServer } from "node:http";
14
+ import { ObjectStore } from "../store/objectStore.js";
15
+ import { verifyMessage } from "../core/identity.js";
16
+ import { computeOid } from "../core/canonical.js";
17
+ import { silentLogger } from "../observe/logger.js";
18
+ import { Metrics } from "../observe/metrics.js";
19
+ import { MATERIALIZER_VERSION } from "../reducer/policy.js";
20
+ /** Wire-protocol version the hub speaks (have/objects/refs gossip). Bumped on breaking changes. */
21
+ export const HUB_PROTOCOL_VERSION = 1;
22
+ const ROLE_WEIGHT = { reader: 0, proposer: 1, reviewer: 2, maintainer: 3, admin: 4 };
23
+ function authRequirement(obj) {
24
+ switch (obj.type) {
25
+ case "operation": return { signerId: obj.actor.id, minRole: "proposer" };
26
+ case "evidence": return { signerId: obj.producedBy.id, minRole: "proposer" };
27
+ case "decision": return { signerId: obj.decidedBy.id, minRole: "reviewer" };
28
+ case "approval": return { signerId: obj.by, minRole: "reviewer" };
29
+ case "promotion": return { signerId: obj.by, minRole: "reviewer" };
30
+ case "override": return { signerId: obj.by, minRole: "admin" };
31
+ case "redaction": return { signerId: obj.by, minRole: "admin" };
32
+ case "membership":
33
+ case "protection":
34
+ case "policy": return "reject";
35
+ default: return "allow";
36
+ }
37
+ }
38
+ /**
39
+ * Authorize a pushed object against the hub's membership. Verifies the signer is a
40
+ * non-revoked member with a sufficient role AND that the signature is valid over the
41
+ * RECOMPUTED content oid (E1) — never the client-claimed oid — so hub-accept ⟹
42
+ * replica-accept. Returns a reason string when denied (for the 403 body).
43
+ */
44
+ async function authorizePush(store, obj) {
45
+ const req = authRequirement(obj);
46
+ if (req === "allow")
47
+ return { ok: true };
48
+ if (req === "reject")
49
+ return { ok: false, reason: `${obj.type} is central-authoritative; pull it via /refs, do not push` };
50
+ const memRef = await store.getRef(`member:${req.signerId}`);
51
+ if (!memRef || !(await store.has(memRef)))
52
+ return { ok: false, reason: `signer ${req.signerId} is not a member` };
53
+ const m = await store.get(memRef);
54
+ if (m.revokedAt || m.actorId !== req.signerId)
55
+ return { ok: false, reason: "membership revoked or mismatched" };
56
+ if (ROLE_WEIGHT[m.role] < ROLE_WEIGHT[req.minRole])
57
+ return { ok: false, reason: `role ${m.role} below required ${req.minRole}` };
58
+ const sig = obj.sig;
59
+ if (!sig)
60
+ return { ok: false, reason: "object is unsigned" };
61
+ const oid = computeOid(obj.type, obj);
62
+ if (!verifyMessage(m.publicKey, oid, sig.sig))
63
+ return { ok: false, reason: "signature does not verify over the content oid" };
64
+ return { ok: true };
65
+ }
66
+ const MAX_BODY = 64 * 1024 * 1024; // 64 MiB guard against unbounded request bodies
67
+ /** Read a request body fully into a string, rejecting if it grows past MAX_BODY. */
68
+ function readBody(req) {
69
+ return new Promise((resolve, reject) => {
70
+ const chunks = [];
71
+ let size = 0;
72
+ req.on("data", (c) => {
73
+ size += c.length;
74
+ if (size > MAX_BODY) {
75
+ reject(new Error("request body too large"));
76
+ req.destroy();
77
+ return;
78
+ }
79
+ chunks.push(c);
80
+ });
81
+ req.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
82
+ req.on("error", reject);
83
+ });
84
+ }
85
+ function sendJson(res, status, body) {
86
+ const payload = JSON.stringify(body);
87
+ res.writeHead(status, { "content-type": "application/json" });
88
+ res.end(payload);
89
+ }
90
+ /**
91
+ * Start an HTTP hub backed by `new ObjectStore(opts.repoDir)`. The store is init()'d
92
+ * so an empty repo dir works. Pass `port: 0` (or omit) to get an OS-assigned port,
93
+ * read back from the returned handle.
94
+ */
95
+ export async function startHub(opts) {
96
+ const store = new ObjectStore(opts.repoDir);
97
+ await store.init(); // tolerate a fresh/empty repo dir
98
+ const gated = opts.gated ?? false;
99
+ const logger = opts.logger ?? silentLogger();
100
+ const metrics = opts.metrics ?? new Metrics();
101
+ // E7 operability: per-actor push quota (a rolling-window counter) + an append-only
102
+ // audit log of accepted mutations (provenance beyond the signed object itself).
103
+ const rl = opts.rateLimit;
104
+ const windowMs = rl?.windowMs ?? 60_000;
105
+ const hits = new Map();
106
+ const allow = (key) => {
107
+ if (!rl)
108
+ return true;
109
+ const now = Date.now();
110
+ const arr = (hits.get(key) ?? []).filter((t) => now - t < windowMs);
111
+ if (arr.length >= rl.maxPerWindow) {
112
+ hits.set(key, arr);
113
+ return false;
114
+ }
115
+ arr.push(now);
116
+ hits.set(key, arr);
117
+ return true;
118
+ };
119
+ const audit = async (rec) => {
120
+ try {
121
+ await store.appendAux("hub-audit.log", `${JSON.stringify({ ts: new Date().toISOString(), ...rec })}\n`);
122
+ }
123
+ catch (e) {
124
+ logger.warn("hub.audit.fail", { error: String(e.message) });
125
+ }
126
+ };
127
+ const ctx = { audit, allow };
128
+ const server = createServer((req, res) => {
129
+ const startedAt = process.hrtime.bigint();
130
+ const path = (req.url ?? "/").split("?")[0];
131
+ metrics.inc("hub.requests");
132
+ res.on("finish", () => {
133
+ const ms = Number(process.hrtime.bigint() - startedAt) / 1e6;
134
+ metrics.observe("hub.request.ms", ms);
135
+ metrics.inc(`hub.status.${Math.floor(res.statusCode / 100)}xx`);
136
+ logger.info("hub.request", { method: req.method, path, status: res.statusCode, ms: Math.round(ms * 100) / 100 });
137
+ });
138
+ handle(store, req, res, gated, metrics, opts.repoDir, ctx).catch((err) => {
139
+ // Last-resort guard: never let a handler rejection crash the server.
140
+ metrics.inc("hub.errors");
141
+ logger.error("hub.error", { method: req.method, path, error: String(err?.message ?? err) });
142
+ if (!res.headersSent)
143
+ sendJson(res, 500, { error: String(err?.message ?? err) });
144
+ else
145
+ res.end();
146
+ });
147
+ });
148
+ await new Promise((resolve) => server.listen(opts.port ?? 0, "127.0.0.1", resolve));
149
+ const addr = server.address();
150
+ if (addr === null || typeof addr === "string") {
151
+ await new Promise((r) => server.close(() => r()));
152
+ throw new Error("hub failed to bind a TCP port");
153
+ }
154
+ const port = addr.port;
155
+ const url = `http://127.0.0.1:${port}`;
156
+ return {
157
+ url,
158
+ port,
159
+ metrics,
160
+ close() {
161
+ return new Promise((resolve, reject) => {
162
+ server.close((err) => (err ? reject(err) : resolve()));
163
+ });
164
+ },
165
+ };
166
+ }
167
+ /** Authenticate a finalize request (E6): the signature must be by `by`'s registered
168
+ * membership key over the canonical finalize message. Role authorization is enforced
169
+ * separately by repo.finalize (finalizeRole). */
170
+ async function verifyFinalizeSig(store, by, view, newCheckpoint, parentHead, sig) {
171
+ const s = sig;
172
+ if (!s || typeof s.sig !== "string")
173
+ return false;
174
+ const memRef = await store.getRef(`member:${by}`);
175
+ if (!memRef || !(await store.has(memRef)))
176
+ return false;
177
+ const m = await store.get(memRef);
178
+ if (m.revokedAt || m.actorId !== by)
179
+ return false;
180
+ return verifyMessage(m.publicKey, `finalize:${view}:${newCheckpoint}:${parentHead ?? ""}`, s.sig);
181
+ }
182
+ /** The actor a push is attributed to (for the audit log + quota): the object's signer
183
+ * field when there is one, else null (the caller falls back to the remote address). */
184
+ function attributedActor(obj) {
185
+ const req = authRequirement(obj);
186
+ return typeof req === "object" ? req.signerId : null;
187
+ }
188
+ async function handle(store, req, res, gated, metrics, repoDir, ops) {
189
+ // Parse path only (ignore query); the host is irrelevant for routing.
190
+ const url = new URL(req.url ?? "/", "http://localhost");
191
+ const path = url.pathname;
192
+ const method = req.method ?? "GET";
193
+ // GET /healthz → liveness/readiness probe (O(1), no store scan) for LBs/orchestrators.
194
+ if (method === "GET" && (path === "/healthz" || path === "/health")) {
195
+ sendJson(res, 200, { status: "ok", gated });
196
+ return;
197
+ }
198
+ // GET /version → identify the hub and the gossip protocol/materializer it speaks, so a
199
+ // client can refuse to sync against an incompatible peer.
200
+ if (method === "GET" && path === "/version") {
201
+ sendJson(res, 200, { name: "avcs-hub", protocol: HUB_PROTOCOL_VERSION, materializer: MATERIALIZER_VERSION, gated });
202
+ return;
203
+ }
204
+ // GET /metrics → in-process counters/timings snapshot (request counts, status classes,
205
+ // latency). Production forwards this to Prometheus/OTel; here it's a scrapeable JSON.
206
+ if (method === "GET" && path === "/metrics") {
207
+ sendJson(res, 200, metrics.snapshot());
208
+ return;
209
+ }
210
+ // GET /have → all oids the hub holds (full set; initial clone / older clients).
211
+ if (method === "GET" && path === "/have") {
212
+ const oids = [];
213
+ for await (const obj of store.list())
214
+ oids.push(obj.oid);
215
+ sendJson(res, 200, oids);
216
+ return;
217
+ }
218
+ // GET /sync?since=N → incremental object discovery (E5). Returns the oids appended to
219
+ // the object-log after index N, plus the new cursor (log length). since=0 / out-of-range
220
+ // returns the full set (a first sync or a client whose cursor is stale). The object-log
221
+ // is append-only in normal operation, so the cursor is stable across syncs; the client
222
+ // always falls back to /have if this endpoint is absent, so correctness never depends
223
+ // on the cursor — it is a pure transfer optimization.
224
+ if (method === "GET" && path === "/sync") {
225
+ const sinceRaw = Number(url.searchParams.get("since") ?? "0");
226
+ const since = Number.isFinite(sinceRaw) && sinceRaw > 0 ? Math.floor(sinceRaw) : 0;
227
+ const all = await store.readObjLog();
228
+ const oids = since > 0 && since <= all.length ? all.slice(since) : all;
229
+ sendJson(res, 200, { oids, cursor: all.length });
230
+ return;
231
+ }
232
+ // GET /refs → governance refs the hub is authoritative for (policy/membership/
233
+ // protection/head). Clients pull these to adopt the org's canonical governance.
234
+ if (method === "GET" && path === "/refs") {
235
+ sendJson(res, 200, { refs: Object.fromEntries(await store.listRefs()) });
236
+ return;
237
+ }
238
+ // GET /objects/:oid → the object JSON (404 if absent).
239
+ if (method === "GET" && path.startsWith("/objects/")) {
240
+ const oid = decodeURIComponent(path.slice("/objects/".length));
241
+ if (!oid) {
242
+ sendJson(res, 400, { error: "missing oid" });
243
+ return;
244
+ }
245
+ if (!(await store.has(oid))) {
246
+ sendJson(res, 404, { error: "not found", oid });
247
+ return;
248
+ }
249
+ sendJson(res, 200, await store.get(oid));
250
+ return;
251
+ }
252
+ // POST /objects → store the object, return its oid.
253
+ if (method === "POST" && path === "/objects") {
254
+ let raw;
255
+ try {
256
+ raw = await readBody(req);
257
+ }
258
+ catch (err) {
259
+ sendJson(res, 413, { error: String(err.message) });
260
+ return;
261
+ }
262
+ let obj;
263
+ try {
264
+ obj = JSON.parse(raw);
265
+ }
266
+ catch {
267
+ sendJson(res, 400, { error: "invalid JSON" });
268
+ return;
269
+ }
270
+ if (typeof obj !== "object" || obj === null || typeof obj.type !== "string") {
271
+ sendJson(res, 400, { error: "object must have a string `type`" });
272
+ return;
273
+ }
274
+ // E7 per-actor push quota: key on the object's signer, else the remote address.
275
+ const actor = attributedActor(obj);
276
+ const rlKey = actor ? `actor:${actor}` : `addr:${req.socket.remoteAddress ?? "?"}`;
277
+ if (!ops.allow(rlKey)) {
278
+ metrics.inc("hub.ratelimited");
279
+ sendJson(res, 429, { error: "rate limit exceeded" });
280
+ return;
281
+ }
282
+ // Authorize the push (E2). On a gated hub EVERY mutating governance object is
283
+ // checked. A `redaction` is checked ALWAYS — even on an ungated hub (E3): it
284
+ // overwrites blob bytes irrecoverably, so an unauthenticated redaction is a
285
+ // data-destruction DoS. authorizePush requires an admin-signed redaction; an open
286
+ // hub with no admin membership therefore rejects all redactions (no DoS) rather
287
+ // than the old trust-all behavior.
288
+ const isRedaction = obj.type === "redaction";
289
+ if (gated || isRedaction) {
290
+ const auth = await authorizePush(store, obj);
291
+ if (!auth.ok) {
292
+ sendJson(res, 403, { error: auth.reason });
293
+ return;
294
+ }
295
+ }
296
+ // put() recomputes the oid from content, so a forged/incorrect inbound oid cannot
297
+ // poison the store — it lands at its true content address (or is a no-op if present).
298
+ const oid = await store.put(obj);
299
+ // A pushed (now admin-authorized) redaction evicts the hub's own copy of the blob.
300
+ // Serialize the read-modify-write under a cross-process lock (E3): the scan +
301
+ // overwriteAt over shared blob files must not interleave with a concurrent push or
302
+ // a puller's applyRedactions, or two redactions could race on the same blob.
303
+ if (isRedaction) {
304
+ await store.withLock("redactions", async () => {
305
+ const { applyRedactions } = await import("../store/applyRedactions.js");
306
+ await applyRedactions(store);
307
+ });
308
+ }
309
+ await ops.audit({ action: "put", type: obj.type, oid, actor }); // E7 provenance
310
+ sendJson(res, 200, { oid });
311
+ return;
312
+ }
313
+ // POST /finalize → advance a view's protected head via the authoritative compare-and-
314
+ // swap (E6). The hub had no finalize endpoint, so a remote client couldn't merge and
315
+ // setRef had no CAS — two finalizes could clobber. This runs repo.finalize, which does
316
+ // the CAS on parentHead under a cross-process lock plus the role/checks/approvals/
317
+ // causal-completeness gates. On a gated hub the request must be signed by `by`.
318
+ if (method === "POST" && path === "/finalize") {
319
+ let raw;
320
+ try {
321
+ raw = await readBody(req);
322
+ }
323
+ catch (err) {
324
+ sendJson(res, 413, { error: String(err.message) });
325
+ return;
326
+ }
327
+ let body;
328
+ try {
329
+ body = JSON.parse(raw);
330
+ }
331
+ catch {
332
+ sendJson(res, 400, { error: "invalid JSON" });
333
+ return;
334
+ }
335
+ const { view, newCheckpoint, by } = body;
336
+ if (typeof view !== "string" || typeof newCheckpoint !== "string" || typeof by !== "string") {
337
+ sendJson(res, 400, { error: "finalize requires string { view, newCheckpoint, by }" });
338
+ return;
339
+ }
340
+ const parentHead = typeof body.parentHead === "string" ? body.parentHead : null;
341
+ if (gated && !(await verifyFinalizeSig(store, by, view, newCheckpoint, parentHead, body.sig))) {
342
+ sendJson(res, 403, { error: "finalize not signed by the claimed member" });
343
+ return;
344
+ }
345
+ if (!ops.allow(`actor:${by}`)) {
346
+ metrics.inc("hub.ratelimited");
347
+ sendJson(res, 429, { error: "rate limit exceeded" });
348
+ return;
349
+ }
350
+ const { Repo } = await import("../api/repo.js");
351
+ const repo = await Repo.open(repoDir);
352
+ const result = await repo.finalize({ view, newCheckpoint, parentHead, by });
353
+ await ops.audit({ action: "finalize", view, newCheckpoint, by, finalized: result.finalized, reason: result.finalized ? undefined : result.reason }); // E7
354
+ if (result.finalized) {
355
+ sendJson(res, 200, result);
356
+ return;
357
+ }
358
+ // A stale parentHead (lost the CAS race) is a 409 conflict; everything else (role,
359
+ // checks, approvals, incomplete history) is a 422 unprocessable.
360
+ sendJson(res, /head moved/.test(result.reason) ? 409 : 422, result);
361
+ return;
362
+ }
363
+ sendJson(res, 404, { error: "no such route", method, path });
364
+ }
365
+ //# sourceMappingURL=hubServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hubServer.js","sourceRoot":"","sources":["../../src/hub/hubServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export { Repo } from "./api/repo.ts";
2
+ export { ObjectStore, CorruptObjectError } from "./store/objectStore.ts";
3
+ export type { FsckReport } from "./store/objectStore.ts";
4
+ export { startHub, HUB_PROTOCOL_VERSION } from "./hub/hubServer.ts";
5
+ export type { HubHandle } from "./hub/hubServer.ts";
6
+ export { pushToHub, pullFromHub, finalizeOnHub } from "./hub/hubClient.ts";
7
+ export { Keyring, generateKeypair, signMessage, verifyMessage } from "./core/identity.ts";
8
+ export type { Keypair, KeyRecord, Signature } from "./core/identity.ts";
9
+ export { Logger, consoleLogger, silentLogger } from "./observe/logger.ts";
10
+ export type { LogEntry, LogLevel } from "./observe/logger.ts";
11
+ export { Metrics } from "./observe/metrics.ts";
12
+ export type { Timing } from "./observe/metrics.ts";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ // Public API surface for `@izagood/avcs` consumers (e.g. the avcshub hosting server).
2
+ //
3
+ // This is the package root export. Subpath exports (`@izagood/avcs/hub`, `/store`,
4
+ // `/identity`, `/types`, …) are declared in package.json#exports for callers that want a
5
+ // single module. Development and tests still run the raw `.ts` via type-stripping; only
6
+ // the published build (tsconfig.build.json → dist/) compiles this to JS + .d.ts.
7
+ // Repository / materialization
8
+ export { Repo } from "./api/repo.js";
9
+ // Object storage + integrity
10
+ export { ObjectStore, CorruptObjectError } from "./store/objectStore.js";
11
+ // Hub (server + client) — the replication / trust boundary avcshub productionizes
12
+ export { startHub, HUB_PROTOCOL_VERSION } from "./hub/hubServer.js";
13
+ export { pushToHub, pullFromHub, finalizeOnHub } from "./hub/hubClient.js";
14
+ // Cryptographic actor identity (the app-layer authz backbone)
15
+ export { Keyring, generateKeypair, signMessage, verifyMessage } from "./core/identity.js";
16
+ // Observability seams (avcshub wires these to OTel / a real collector)
17
+ export { Logger, consoleLogger, silentLogger } from "./observe/logger.js";
18
+ export { Metrics } from "./observe/metrics.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}