@mneme-ai/core 2.11.0 → 2.13.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 (49) hide show
  1. package/dist/cosmic/aurelian.bench.d.ts +25 -0
  2. package/dist/cosmic/aurelian.bench.d.ts.map +1 -0
  3. package/dist/cosmic/aurelian.bench.js +127 -0
  4. package/dist/cosmic/aurelian.bench.js.map +1 -0
  5. package/dist/cosmic/aurelian_audit.d.ts +112 -0
  6. package/dist/cosmic/aurelian_audit.d.ts.map +1 -0
  7. package/dist/cosmic/aurelian_audit.js +236 -0
  8. package/dist/cosmic/aurelian_audit.js.map +1 -0
  9. package/dist/cosmic/aurelian_recheck.test.d.ts +25 -0
  10. package/dist/cosmic/aurelian_recheck.test.d.ts.map +1 -0
  11. package/dist/cosmic/aurelian_recheck.test.js +127 -0
  12. package/dist/cosmic/aurelian_recheck.test.js.map +1 -0
  13. package/dist/cosmic/benchmark.d.ts +47 -0
  14. package/dist/cosmic/benchmark.d.ts.map +1 -0
  15. package/dist/cosmic/benchmark.js +162 -0
  16. package/dist/cosmic/benchmark.js.map +1 -0
  17. package/dist/cosmic/choir.d.ts +93 -0
  18. package/dist/cosmic/choir.d.ts.map +1 -0
  19. package/dist/cosmic/choir.js +140 -0
  20. package/dist/cosmic/choir.js.map +1 -0
  21. package/dist/cosmic/cosmic.test.js +146 -7
  22. package/dist/cosmic/cosmic.test.js.map +1 -1
  23. package/dist/cosmic/diff.d.ts +41 -0
  24. package/dist/cosmic/diff.d.ts.map +1 -0
  25. package/dist/cosmic/diff.js +154 -0
  26. package/dist/cosmic/diff.js.map +1 -0
  27. package/dist/cosmic/echo_commit.d.ts +79 -0
  28. package/dist/cosmic/echo_commit.d.ts.map +1 -0
  29. package/dist/cosmic/echo_commit.js +108 -0
  30. package/dist/cosmic/echo_commit.js.map +1 -0
  31. package/dist/cosmic/echo_commit.test.d.ts +2 -0
  32. package/dist/cosmic/echo_commit.test.d.ts.map +1 -0
  33. package/dist/cosmic/echo_commit.test.js +81 -0
  34. package/dist/cosmic/echo_commit.test.js.map +1 -0
  35. package/dist/cosmic/index.d.ts +83 -0
  36. package/dist/cosmic/index.d.ts.map +1 -1
  37. package/dist/cosmic/index.js +180 -13
  38. package/dist/cosmic/index.js.map +1 -1
  39. package/dist/cosmic/v213.test.d.ts +2 -0
  40. package/dist/cosmic/v213.test.d.ts.map +1 -0
  41. package/dist/cosmic/v213.test.js +267 -0
  42. package/dist/cosmic/v213.test.js.map +1 -0
  43. package/dist/nexus_lock/nexus_lock.test.js +6 -4
  44. package/dist/nexus_lock/nexus_lock.test.js.map +1 -1
  45. package/dist/nexus_lock/soul_prompt_v2.d.ts +6 -1
  46. package/dist/nexus_lock/soul_prompt_v2.d.ts.map +1 -1
  47. package/dist/nexus_lock/soul_prompt_v2.js +5 -3
  48. package/dist/nexus_lock/soul_prompt_v2.js.map +1 -1
  49. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo_commit.js","sourceRoot":"","sources":["../../src/cosmic/echo_commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=echo_commit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo_commit.test.d.ts","sourceRoot":"","sources":["../../src/cosmic/echo_commit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { describe, it, expect, beforeEach } from "vitest";
2
+ import { mkdtempSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { spawnSync } from "node:child_process";
6
+ import { writeEchoToCommit, readEchoFromCommit } from "./echo_commit.js";
7
+ function git(repo, args) {
8
+ const r = spawnSync("git", args, { cwd: repo, encoding: "utf8" });
9
+ return { ok: r.status === 0, stdout: r.stdout?.trim() ?? "", stderr: r.stderr?.trim() ?? "" };
10
+ }
11
+ function makeRepo() {
12
+ const dir = mkdtempSync(join(tmpdir(), "cosmic-echo-"));
13
+ git(dir, ["init", "-q"]);
14
+ git(dir, ["config", "user.email", "test@cosmic.local"]);
15
+ git(dir, ["config", "user.name", "Cosmic Test"]);
16
+ // Disable signing so the test runs in CI without GPG.
17
+ git(dir, ["config", "commit.gpgsign", "false"]);
18
+ writeFileSync(join(dir, "README.md"), "test repo for cosmic echo\n");
19
+ git(dir, ["add", "README.md"]);
20
+ const ci = git(dir, ["commit", "-q", "-m", "init"]);
21
+ if (!ci.ok)
22
+ throw new Error(`git commit failed: ${ci.stderr}`);
23
+ return dir;
24
+ }
25
+ describe("v2.13 · ECHO-FROM-COMMITS (HMAC-signed git note)", () => {
26
+ let repo;
27
+ beforeEach(() => {
28
+ repo = makeRepo();
29
+ });
30
+ it("writes a signed envelope and reads it back verified", () => {
31
+ const w = writeEchoToCommit({
32
+ repoDir: repo,
33
+ state: { v: "2.13.0", note: "echo test" },
34
+ cosmicUrl: "https://cosmic.example.com/sessions/abc",
35
+ secret: "echo-test-secret",
36
+ });
37
+ if (!w.ok) {
38
+ console.error("write failed:", w.error);
39
+ }
40
+ expect(w.ok).toBe(true);
41
+ expect(w.commitSha).toMatch(/^[0-9a-f]{40}$/);
42
+ const r = readEchoFromCommit(repo, w.commitSha, "echo-test-secret");
43
+ expect(r.ok).toBe(true);
44
+ expect(r.verified).toBe(true);
45
+ expect(r.envelope?.state).toEqual({ v: "2.13.0", note: "echo test" });
46
+ expect(r.envelope?.cosmicUrl).toBe("https://cosmic.example.com/sessions/abc");
47
+ });
48
+ it("verify=false when wrong secret presented (tamper-evident)", () => {
49
+ writeEchoToCommit({
50
+ repoDir: repo,
51
+ state: { v: "2.13.0" },
52
+ secret: "right-secret",
53
+ });
54
+ const r = readEchoFromCommit(repo, undefined, "wrong-secret");
55
+ expect(r.ok).toBe(true);
56
+ expect(r.verified).toBe(false);
57
+ expect(r.reason).toContain("HMAC mismatch");
58
+ });
59
+ it("survives state with nested objects + arrays", () => {
60
+ const state = { v: "2.13.0", commits: [{ sha: "abc", subject: "feat" }, { sha: "def", subject: "fix" }], meta: { live: true } };
61
+ const w = writeEchoToCommit({ repoDir: repo, state, secret: "s" });
62
+ expect(w.ok).toBe(true);
63
+ const r = readEchoFromCommit(repo, w.commitSha, "s");
64
+ expect(r.envelope?.state).toEqual(state);
65
+ expect(r.verified).toBe(true);
66
+ });
67
+ it("write -f overwrites a prior echo on the same commit", () => {
68
+ const w1 = writeEchoToCommit({ repoDir: repo, state: { v: "first" }, secret: "s" });
69
+ expect(w1.ok).toBe(true);
70
+ const w2 = writeEchoToCommit({ repoDir: repo, state: { v: "second" }, secret: "s" });
71
+ expect(w2.ok).toBe(true);
72
+ const r = readEchoFromCommit(repo, w1.commitSha, "s");
73
+ expect((r.envelope?.state).v).toBe("second");
74
+ });
75
+ it("read returns ok=false when no echo exists", () => {
76
+ const r = readEchoFromCommit(repo, undefined, "s");
77
+ expect(r.ok).toBe(false);
78
+ expect(r.reason).toContain("no echo");
79
+ });
80
+ });
81
+ //# sourceMappingURL=echo_commit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"echo_commit.test.js","sourceRoot":"","sources":["../../src/cosmic/echo_commit.test.ts"],"names":[],"mappings":"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"}
@@ -84,4 +84,87 @@ export declare function readCosmic(jsonUrl: string, fetchOverride?: typeof fetch
84
84
  }>;
85
85
  /** One-line summary of a session — useful in pulse / wisdom fields. */
86
86
  export declare function formatCosmicPulseLine(session: CosmicSession, lastResult?: PublishResult): string;
87
+ /** Send a heartbeat so receivers know the parent is still alive. If the
88
+ * server has not seen a heartbeat OR a publish within ~3 minutes, the
89
+ * session is marked ZOMBIE in JSON read + the HTML banner. Receivers
90
+ * treat zombies as untrustworthy. */
91
+ export declare function heartbeatCosmic(session: CosmicSession, fetchOverride?: typeof fetch): Promise<{
92
+ ok: boolean;
93
+ ts?: number;
94
+ zombie?: boolean;
95
+ error?: string;
96
+ }>;
97
+ export interface InboxEntry {
98
+ receivedAt: string;
99
+ vendor: string;
100
+ body: string;
101
+ }
102
+ /** Receivers (any AI) POST a free-form HOMUNCULUS RETURN block back to
103
+ * the parent's inbox. Open endpoint — no auth — so any vendor can
104
+ * participate. Server caps to 16KB / entry, 256 entries / session. */
105
+ export declare function pushHomunculusReturn(jsonUrl: string, body: string, fetchOverride?: typeof fetch): Promise<{
106
+ ok: boolean;
107
+ count?: number;
108
+ error?: string;
109
+ }>;
110
+ /** Parent reads + optionally drains its inbox. HMAC-auth. */
111
+ export declare function readInbox(session: CosmicSession, opts?: {
112
+ drain?: boolean;
113
+ fetchOverride?: typeof fetch;
114
+ }): Promise<{
115
+ ok: boolean;
116
+ items?: InboxEntry[];
117
+ count?: number;
118
+ drained?: boolean;
119
+ error?: string;
120
+ }>;
121
+ export interface PresenceWatcher {
122
+ fp: string;
123
+ vendor: string;
124
+ secondsAgo: number;
125
+ }
126
+ /** Publish an incremental JSON Patch instead of full state. The caller
127
+ * supplies prevState (what they last successfully published) and the
128
+ * basedOnSig the server returned. The server applies the patch on top
129
+ * of its current state and returns 409 if basedOnSig is stale.
130
+ *
131
+ * Falls back to a full publish automatically if the patch is no smaller
132
+ * than the full body (see patchIsWorthIt). */
133
+ export declare function publishIncrementalToCosmic(input: {
134
+ session: CosmicSession;
135
+ prevState: Record<string, unknown>;
136
+ nextState: Record<string, unknown>;
137
+ basedOnSig: string;
138
+ fetchOverride?: typeof fetch;
139
+ }): Promise<PublishResult & {
140
+ mode?: "patch" | "full";
141
+ }>;
142
+ /** Conditional read using ETag: server returns 304 (not_modified) when
143
+ * state hasn't changed. Saves ~99% bandwidth on poll cycles. */
144
+ export declare function readCosmicWithEtag(jsonUrl: string, prevEtag: string | null, fetchOverride?: typeof fetch): Promise<{
145
+ ok: boolean;
146
+ notModified?: boolean;
147
+ state?: Record<string, unknown>;
148
+ etag?: string;
149
+ rescueUrl?: string | null;
150
+ zombie?: boolean;
151
+ error?: string;
152
+ }>;
153
+ /** Open Google-Docs-style watcher list. Anyone with the token can see
154
+ * who else is reading + what vendor they appear to be. Useful for the
155
+ * parent AI to know if the receiver actually opened the URL. */
156
+ export declare function getCosmicPresence(jsonUrl: string, fetchOverride?: typeof fetch): Promise<{
157
+ ok: boolean;
158
+ watchers?: PresenceWatcher[];
159
+ zombie?: boolean;
160
+ publishCount?: number;
161
+ lastPublishTs?: number;
162
+ lastHeartbeatTs?: number | null;
163
+ error?: string;
164
+ }>;
165
+ export * as diff from "./diff.js";
166
+ export * as choir from "./choir.js";
167
+ export * as echoCommit from "./echo_commit.js";
168
+ export * as audit from "./aurelian_audit.js";
169
+ export * as benchmark from "./benchmark.js";
87
170
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cosmic/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAIH,MAAM,WAAW,SAAS;IACxB,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf;wEACoE;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;4CAC4C;AAC5C,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,aAAa,CAc3D;AASD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,2BAA2B;IAC3B,aAAa,CAAC,EAAE,OAAO,KAAK,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;uCAEuC;AACvC,wBAAsB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAsBjF;AAED,wDAAwD;AACxD,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBjI;AAED;4CAC4C;AAC5C,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,KAAK,GAAG,OAAO,CAAC;IACvF,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAcD;AAED,uEAAuE;AACvE,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,aAAa,GAAG,MAAM,CAGhG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cosmic/index.ts"],"names":[],"mappings":"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"}
@@ -43,12 +43,24 @@ export function mintSession(input) {
43
43
  serverUrl: base,
44
44
  };
45
45
  }
46
- /** Sign an HMAC bearer for a request body. Used by publish + revoke. */
47
- function signBearer(method, path, body, secret) {
46
+ /** Sign an HMAC bearer for a request body. v2.13: include the timestamp
47
+ * in the canonical string so the server can enforce a NONCE-WINDOW (~120s)
48
+ * and reject replays. The ts is sent as an X-Cosmic-Ts header so the
49
+ * server reproduces the same canonical. ts=undefined falls back to the
50
+ * v2.11/v2.12 legacy canonical for backwards compatibility. */
51
+ function signBearer(method, path, body, secret, ts) {
48
52
  const bodyHash = createHash("sha256").update(body).digest("hex");
49
- const canon = `${method} ${path} ${bodyHash}`;
53
+ const canon = ts === undefined ? `${method} ${path} ${bodyHash}` : `${method} ${path} ${bodyHash} ${ts}`;
50
54
  return createHmac("sha256", secret).update(canon).digest("hex");
51
55
  }
56
+ /** Helper that builds standard signed headers including the v2.13 nonce. */
57
+ function signedHeaders(method, path, body, secret) {
58
+ const ts = Date.now();
59
+ return {
60
+ "authorization": `Bearer ${signBearer(method, path, body, secret, ts)}`,
61
+ "x-cosmic-ts": String(ts),
62
+ };
63
+ }
52
64
  /** Publish state to COSMIC. First call uploads adminSecretHash; later
53
65
  * calls auth via HMAC-SHA256 bearer. Returns the chain signatures so
54
66
  * the caller can verify integrity. */
@@ -58,14 +70,13 @@ export async function publishToCosmic(input) {
58
70
  return { ok: false, error: "no fetch" };
59
71
  const path = `/api/v1/sessions/${input.session.token}`;
60
72
  const url = `${input.session.serverUrl}${path}`;
61
- // First publish: include adminSecretHash so the server can store it
62
- // and verify subsequent requests. Subsequent publishes auth via HMAC
63
- // over the body hash.
64
73
  const body = JSON.stringify({ state: input.state, adminSecretHash: input.session.adminSecretHash });
65
- const headers = { "content-type": "application/json" };
66
- // Always sign first request the server treats as adminSecretHash bootstrap;
67
- // later ones the server verifies the signature.
68
- headers["authorization"] = `Bearer ${signBearer("POST", path, body, input.session.adminSecretHash)}`;
74
+ // v2.13: NONCE-WINDOW HMAC. signedHeaders() adds X-Cosmic-Ts so the
75
+ // server can reject replays (>120s old).
76
+ const headers = {
77
+ "content-type": "application/json",
78
+ ...signedHeaders("POST", path, body, input.session.adminSecretHash),
79
+ };
69
80
  try {
70
81
  const r = await fetchFn(url, { method: "POST", headers, body });
71
82
  const json = await r.json().catch(() => ({}));
@@ -85,9 +96,7 @@ export async function revokeCosmic(session, fetchOverride) {
85
96
  return { ok: false, error: "no fetch" };
86
97
  const path = `/api/v1/sessions/${session.token}/revoke`;
87
98
  const body = "";
88
- const headers = {
89
- "authorization": `Bearer ${signBearer("POST", path, body, session.adminSecretHash)}`,
90
- };
99
+ const headers = signedHeaders("POST", path, body, session.adminSecretHash);
91
100
  try {
92
101
  const r = await fetchFn(`${session.serverUrl}${path}`, { method: "POST", headers, body });
93
102
  if (!r.ok) {
@@ -125,4 +134,162 @@ export function formatCosmicPulseLine(session, lastResult) {
125
134
  const tag = lastResult?.ok ? `count=${lastResult.count} sig=${lastResult.newSig?.slice(0, 8)}` : `idle`;
126
135
  return `COSMIC · ${session.token.slice(0, 8)} · ${tag} · ${session.publicUrl}`;
127
136
  }
137
+ // ====================================================================
138
+ // v2.12 NOBEL-tier helpers — proof-of-liveness, reverse-delivery, presence.
139
+ // ====================================================================
140
+ /** Send a heartbeat so receivers know the parent is still alive. If the
141
+ * server has not seen a heartbeat OR a publish within ~3 minutes, the
142
+ * session is marked ZOMBIE in JSON read + the HTML banner. Receivers
143
+ * treat zombies as untrustworthy. */
144
+ export async function heartbeatCosmic(session, fetchOverride) {
145
+ const fetchFn = fetchOverride ?? globalThis.fetch;
146
+ if (typeof fetchFn !== "function")
147
+ return { ok: false, error: "no fetch" };
148
+ const path = `/api/v1/sessions/${session.token}/heartbeat`;
149
+ const body = "";
150
+ const headers = signedHeaders("POST", path, body, session.adminSecretHash);
151
+ try {
152
+ const r = await fetchFn(`${session.serverUrl}${path}`, { method: "POST", headers, body });
153
+ const j = await r.json().catch(() => ({}));
154
+ if (!r.ok)
155
+ return { ok: false, error: j.error ?? `HTTP ${r.status}` };
156
+ return { ok: true, ts: j.ts, zombie: j.zombie };
157
+ }
158
+ catch (e) {
159
+ return { ok: false, error: e.message.slice(0, 200) };
160
+ }
161
+ }
162
+ /** Receivers (any AI) POST a free-form HOMUNCULUS RETURN block back to
163
+ * the parent's inbox. Open endpoint — no auth — so any vendor can
164
+ * participate. Server caps to 16KB / entry, 256 entries / session. */
165
+ export async function pushHomunculusReturn(jsonUrl, body, fetchOverride) {
166
+ const fetchFn = fetchOverride ?? globalThis.fetch;
167
+ if (typeof fetchFn !== "function")
168
+ return { ok: false, error: "no fetch" };
169
+ // jsonUrl is `${base}/api/v1/sessions/${token}.json` — derive inbox URL.
170
+ const inboxUrl = jsonUrl.replace(/\.json$/, "/inbox");
171
+ try {
172
+ const r = await fetchFn(inboxUrl, {
173
+ method: "POST",
174
+ headers: { "content-type": "text/plain" },
175
+ body,
176
+ });
177
+ const j = await r.json().catch(() => ({}));
178
+ if (!r.ok)
179
+ return { ok: false, error: j.error ?? `HTTP ${r.status}` };
180
+ return { ok: true, count: j.count };
181
+ }
182
+ catch (e) {
183
+ return { ok: false, error: e.message.slice(0, 200) };
184
+ }
185
+ }
186
+ /** Parent reads + optionally drains its inbox. HMAC-auth. */
187
+ export async function readInbox(session, opts = {}) {
188
+ const fetchFn = opts.fetchOverride ?? globalThis.fetch;
189
+ if (typeof fetchFn !== "function")
190
+ return { ok: false, error: "no fetch" };
191
+ const path = `/api/v1/sessions/${session.token}/inbox`;
192
+ const headers = signedHeaders("GET", path, "", session.adminSecretHash);
193
+ if (opts.drain)
194
+ headers["x-drain"] = "1";
195
+ try {
196
+ const r = await fetchFn(`${session.serverUrl}${path}`, { headers });
197
+ const j = await r.json().catch(() => ({}));
198
+ if (!r.ok)
199
+ return { ok: false, error: j.error ?? `HTTP ${r.status}` };
200
+ return { ok: true, items: j.items, count: j.count, drained: j.drained };
201
+ }
202
+ catch (e) {
203
+ return { ok: false, error: e.message.slice(0, 200) };
204
+ }
205
+ }
206
+ // ====================================================================
207
+ // v2.13.0 NOBEL-tier helpers — incremental publish + ETag + DEAD MAN'S HAND.
208
+ // ====================================================================
209
+ /** Publish an incremental JSON Patch instead of full state. The caller
210
+ * supplies prevState (what they last successfully published) and the
211
+ * basedOnSig the server returned. The server applies the patch on top
212
+ * of its current state and returns 409 if basedOnSig is stale.
213
+ *
214
+ * Falls back to a full publish automatically if the patch is no smaller
215
+ * than the full body (see patchIsWorthIt). */
216
+ export async function publishIncrementalToCosmic(input) {
217
+ const { makePatch, patchIsWorthIt } = await import("./diff.js");
218
+ const fetchFn = input.fetchOverride ?? globalThis.fetch;
219
+ if (typeof fetchFn !== "function")
220
+ return { ok: false, error: "no fetch" };
221
+ const patch = makePatch(input.prevState, input.nextState);
222
+ const fullBody = JSON.stringify({ state: input.nextState, adminSecretHash: input.session.adminSecretHash });
223
+ const patchBody = JSON.stringify({ patch, basedOnSig: input.basedOnSig, adminSecretHash: input.session.adminSecretHash });
224
+ const useFullForm = patch.length === 0 || !patchIsWorthIt(Buffer.byteLength(fullBody, "utf8"), Buffer.byteLength(patchBody, "utf8"));
225
+ const body = useFullForm ? fullBody : patchBody;
226
+ const path = `/api/v1/sessions/${input.session.token}`;
227
+ const headers = {
228
+ "content-type": "application/json",
229
+ ...signedHeaders("POST", path, body, input.session.adminSecretHash),
230
+ };
231
+ try {
232
+ const r = await fetchFn(`${input.session.serverUrl}${path}`, { method: "POST", headers, body });
233
+ const json = await r.json().catch(() => ({}));
234
+ if (!r.ok)
235
+ return { ok: false, error: json.error ?? `HTTP ${r.status}`, mode: useFullForm ? "full" : "patch" };
236
+ const j = json;
237
+ return { ok: true, count: j.count, prevSig: j.prevSig ?? null, newSig: j.newSig, mode: useFullForm ? "full" : "patch" };
238
+ }
239
+ catch (e) {
240
+ return { ok: false, error: e.message.slice(0, 200), mode: useFullForm ? "full" : "patch" };
241
+ }
242
+ }
243
+ /** Conditional read using ETag: server returns 304 (not_modified) when
244
+ * state hasn't changed. Saves ~99% bandwidth on poll cycles. */
245
+ export async function readCosmicWithEtag(jsonUrl, prevEtag, fetchOverride) {
246
+ const fetchFn = fetchOverride ?? globalThis.fetch;
247
+ if (typeof fetchFn !== "function")
248
+ return { ok: false, error: "no fetch" };
249
+ const headers = {};
250
+ if (prevEtag)
251
+ headers["if-none-match"] = prevEtag;
252
+ try {
253
+ const r = await fetchFn(jsonUrl, { headers });
254
+ if (r.status === 304)
255
+ return { ok: true, notModified: true, etag: prevEtag ?? undefined };
256
+ if (!r.ok) {
257
+ if (r.status === 404)
258
+ return { ok: false, error: "session not found (revoked / evicted)" };
259
+ return { ok: false, error: `HTTP ${r.status}` };
260
+ }
261
+ const j = await r.json();
262
+ return { ok: true, notModified: false, state: j.state, etag: r.headers.get("etag") ?? undefined, rescueUrl: j.rescueUrl ?? null, zombie: j.zombie };
263
+ }
264
+ catch (e) {
265
+ return { ok: false, error: e.message.slice(0, 200) };
266
+ }
267
+ }
268
+ /** Open Google-Docs-style watcher list. Anyone with the token can see
269
+ * who else is reading + what vendor they appear to be. Useful for the
270
+ * parent AI to know if the receiver actually opened the URL. */
271
+ export async function getCosmicPresence(jsonUrl, fetchOverride) {
272
+ const fetchFn = fetchOverride ?? globalThis.fetch;
273
+ if (typeof fetchFn !== "function")
274
+ return { ok: false, error: "no fetch" };
275
+ const presenceUrl = jsonUrl.replace(/\.json$/, "/presence");
276
+ try {
277
+ const r = await fetchFn(presenceUrl);
278
+ const j = await r.json().catch(() => ({}));
279
+ if (!r.ok)
280
+ return { ok: false, error: j.error ?? `HTTP ${r.status}` };
281
+ return { ok: true, watchers: j.watchers, zombie: j.zombie, publishCount: j.publishCount, lastPublishTs: j.lastPublishTs, lastHeartbeatTs: j.lastHeartbeatTs };
282
+ }
283
+ catch (e) {
284
+ return { ok: false, error: e.message.slice(0, 200) };
285
+ }
286
+ }
287
+ // ====================================================================
288
+ // v2.13.0 module re-exports — composed cosmic surface.
289
+ // ====================================================================
290
+ export * as diff from "./diff.js";
291
+ export * as choir from "./choir.js";
292
+ export * as echoCommit from "./echo_commit.js";
293
+ export * as audit from "./aurelian_audit.js";
294
+ export * as benchmark from "./benchmark.js";
128
295
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cosmic/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cosmic/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=v213.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"v213.test.d.ts","sourceRoot":"","sources":["../../src/cosmic/v213.test.ts"],"names":[],"mappings":""}