Back to Body Journal
SOURCE / PINNED RELEASE

Made of little things.

Body Journal

Release
e8049f8da4e2…
Author-recorded commit
61c04bf0e8aa…
License
LICENSE
Author’s source reference
nostr://npub182jczunncwe0jn6frpqwq3e0qjws7yqqnc3auccqv9nte2dnd63scjm4rf/wss%3A%2F%2Fgit.napplet.soy%2F/n-6c4554844c7

Archive hash verified: 4369d778da046a8b…. The source-to-build association is the author’s claim; it has not been independently rebuilt.

src/connection-record.ts
import { parseSettings, type ConnectionSettings } from './ai-client.js';
import { boundedText, object } from './ai-contract.js';

export interface SavedConnections {
  version: 2;
  settings: ConnectionSettings;
  remembered: string[];
  keys: { id: string; provider: string; value: string }[];
  trustedBridge: string;
}
export const bridgeIdentity = (settings: ConnectionSettings): string => JSON.stringify(settings.bridge);
export function parseConnections(raw: string): SavedConnections {
  if (new TextEncoder().encode(raw).byteLength > 24_000) throw new Error('Saved connections are too large.');
  const data = object(JSON.parse(raw));
  if (data.version === 1) {
    const settings = parseSettings(raw);
    return { version: 2, settings, remembered: settings.connections.map(c => c.id), keys: [], trustedBridge: '' };
  }
  if (data.version !== 2 || !Array.isArray(data.remembered) || data.remembered.length > 8 || !Array.isArray(data.keys) || data.keys.length > 8) throw new Error('Invalid saved connections.');
  const settings = parseSettings(JSON.stringify(data.settings));
  const selected = data.remembered;
  const remembered = settings.connections.filter(c => selected.includes(c.id)).map(c => c.id);
  const seen = new Set<string>();
  const keys = data.keys.map(value => {
    const k = object(value), id = boundedText(k.id, 80), key = boundedText(k.value, 512);
    if (seen.has(id) || !remembered.includes(id) || !settings.connections.some(c => c.id === id && c.provider === k.provider) || !/^[\x21-\x7e]{8,512}$/.test(key)) throw new Error('Invalid saved key.');
    seen.add(id);
    return { id, provider: String(k.provider), value: key };
  });
  return { version: 2, settings, remembered, keys, trustedBridge: data.trustedBridge === bridgeIdentity(settings) ? String(data.trustedBridge) : '' };
}
export function connectionRecord(settings: ConnectionSettings, keys: Map<string, string>, remembered: Set<string>, trusted: boolean): string {
  const safe = parseSettings(JSON.stringify(settings));
  const record = { version: 2, settings: safe, remembered: safe.connections.filter(c => remembered.has(c.id)).map(c => c.id),
    keys: safe.connections.flatMap(c => remembered.has(c.id) && keys.get(c.id) ? [{ id: c.id, provider: c.provider, value: keys.get(c.id) }] : []),
    trustedBridge: trusted ? bridgeIdentity(safe) : '' };
  return JSON.stringify(parseConnections(JSON.stringify(record)));
}