New:Socket for Asana Is Now Available.Learn more
Get Started

@komnet/core

Package Overview
Dependencies
Maintainers
1
Versions
22
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@komnet/core - npm Package Compare versions

Comparing version
0.7.2
to
0.7.3
+9
dist/fs.d.ts
/**
* Does this path exist?
*
* Lives here rather than in `network.ts` because every extracted network domain
* needs it, and a copy per module is how two of them end up disagreeing about
* what a missing worktree means.
*/
export declare function exists(path: string): Promise<boolean>;
//# sourceMappingURL=fs.d.ts.map
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D"}
import { access } from "node:fs/promises";
/**
* Does this path exist?
*
* Lives here rather than in `network.ts` because every extracted network domain
* needs it, and a copy per module is how two of them end up disagreeing about
* what a missing worktree means.
*/
export async function exists(path) {
try {
await access(path);
return true;
}
catch {
return false;
}
}
//# sourceMappingURL=fs.js.map
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../src/fs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
/**
* Which identity this machine commits and signs with.
*
* Grouped under "sealing" in `network.ts` purely by position: these four are
* read by `publishAgentCard`, by `send` when the network signs, and by the sync
* verification path — sealing never touches them.
*
* The verification itself is pure and lives in `../authenticity.ts`; this is the
* part that has to ask git and the filesystem.
*/
import { type AuthenticityMode, type NetManifest } from "../net.ts";
import type { GitRunner } from "../git/runner.ts";
/** What identity resolution needs from the network, and nothing more. */
export interface AuthenticityContext {
readonly runner: GitRunner;
/** The `main` checkout, which is where git config and the manifest are read from. */
readonly recordWorktree: string;
}
/**
* The git identity this machine commits with.
*
* Published on the agent card so `authenticity: git` has something to check
* `from` against — otherwise the mode can only ever report "no binding".
*/
export declare function gitIdentity(ctx: AuthenticityContext): Promise<{
name: string;
email: string;
} | null>;
/** SSH key used for `authenticity: signed`, or null when none is configured. */
export declare function signingKeyPath(ctx: AuthenticityContext): Promise<string | null>;
/** The network manifest from `main`, which carries the authenticity mode. */
export declare function readManifest(ctx: AuthenticityContext): Promise<NetManifest | null>;
export declare function authenticityMode(ctx: AuthenticityContext): Promise<AuthenticityMode>;
//# sourceMappingURL=authenticity.d.ts.map
{"version":3,"file":"authenticity.d.ts","sourceRoot":"","sources":["../../src/network/authenticity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,EAAoB,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,yEAAyE;AACzE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,qFAAqF;IACrF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,mBAAmB,GACvB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAYjD;AAED,gFAAgF;AAChF,wBAAsB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAWrF;AAED,6EAA6E;AAC7E,wBAAsB,YAAY,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAQxF;AAED,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAG1F"}
/**
* Which identity this machine commits and signs with.
*
* Grouped under "sealing" in `network.ts` purely by position: these four are
* read by `publishAgentCard`, by `send` when the network signs, and by the sync
* verification path — sealing never touches them.
*
* The verification itself is pure and lives in `../authenticity.ts`; this is the
* part that has to ask git and the filesystem.
*/
import { readFile } from "node:fs/promises";
import { join } from "node:path";
import { exists } from "../fs.js";
import { parseNetManifest } from "../net.js";
/**
* The git identity this machine commits with.
*
* Published on the agent card so `authenticity: git` has something to check
* `from` against — otherwise the mode can only ever report "no binding".
*/
export async function gitIdentity(ctx) {
// `git var GIT_AUTHOR_IDENT`, not `git config user.email`: the environment
// (GIT_AUTHOR_EMAIL) overrides config when git actually authors a commit.
// Recording the config value would publish one identity while committing
// under another, and every legitimate message would fail verification.
const ident = await ctx.runner.tryText(["var", "GIT_AUTHOR_IDENT"], {
cwd: ctx.recordWorktree,
});
if (ident === null)
return null;
const match = /^(.*?)\s*<([^>]+)>/.exec(ident);
if (match === null)
return null;
return { name: match[1] ?? "", email: match[2] ?? "" };
}
/** SSH key used for `authenticity: signed`, or null when none is configured. */
export async function signingKeyPath(ctx) {
const configured = await ctx.runner.tryText(["config", "user.signingkey"], {
cwd: ctx.recordWorktree,
});
if (configured !== null && configured !== "" && (await exists(configured)))
return configured;
const { homedir } = await import("node:os");
for (const name of ["id_ed25519", "id_ecdsa", "id_rsa"]) {
const candidate = join(homedir(), ".ssh", name);
if (await exists(candidate))
return candidate;
}
return null;
}
/** The network manifest from `main`, which carries the authenticity mode. */
export async function readManifest(ctx) {
const path = join(ctx.recordWorktree, ".komnet/net.yaml");
if (!(await exists(path)))
return null;
try {
return parseNetManifest(await readFile(path, "utf8"));
}
catch {
return null;
}
}
export async function authenticityMode(ctx) {
// Absent or unreadable manifest → the documented default, not "none".
return (await readManifest(ctx))?.authenticity ?? "git";
}
//# sourceMappingURL=authenticity.js.map
{"version":3,"file":"authenticity.js","sourceRoot":"","sources":["../../src/network/authenticity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAA2C,MAAM,WAAW,CAAC;AAUtF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,GAAwB;IAExB,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,uEAAuE;IACvE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,EAAE;QAClE,GAAG,EAAE,GAAG,CAAC,cAAc;KACxB,CAAC,CAAC;IACH,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;AACzD,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAwB;IAC3D,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,iBAAiB,CAAC,EAAE;QACzE,GAAG,EAAE,GAAG,CAAC,cAAc;KACxB,CAAC,CAAC;IACH,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9F,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAChD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAwB;IACzD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC1D,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,CAAC;QACH,OAAO,gBAAgB,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAwB;IAC7D,sEAAsE;IACtE,OAAO,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,IAAI,KAAK,CAAC;AAC1D,CAAC"}
/**
* Advisory resource leases, as the network performs them.
*
* The reduction lives in `../room/claims.ts` and is pure; this is the half that
* has to touch the transport — look before writing, write, then look again.
*/
import { type Message } from "@komnet/protocol";
import { type ClaimStatus } from "../room/claims.ts";
import type { SendInput } from "../network.ts";
/**
* What claiming needs from the network, and nothing more.
*
* Spelled out rather than taking `Network` whole: this is the list a reader has
* to hold in their head to follow the code below, and keeping it explicit means
* a new dependency has to be added on purpose instead of appearing through
* `this`.
*/
export interface ClaimsContext {
readonly agentId: string;
assertSubscribed(roomId: string, verb: string): void;
sync(): Promise<unknown>;
send(roomId: string, input: SendInput): Promise<Message>;
read(roomId: string): Promise<Message[]>;
}
/**
* Current holder of every claimed resource in a room, expiry included.
*
* Syncs first, unlike every other read. The others tolerate a stale cache and
* now say so; a lock cannot, because the dangerous direction is reporting a
* resource FREE while a peer holds it — which is exactly how two agents end up
* running the same build. Correctness is worth the round trip here.
*/
export declare function listClaims(ctx: ClaimsContext, roomId: string, options?: {
sync?: boolean;
}): Promise<ClaimStatus[]>;
export declare function claimResource(ctx: ClaimsContext, roomId: string, resource: string, options?: {
ttlSeconds?: number;
note?: string;
}): Promise<{
granted: boolean;
status: ClaimStatus | null;
}>;
/** Release a resource this agent holds. Releasing something you do not hold is a no-op. */
export declare function releaseResource(ctx: ClaimsContext, roomId: string, resource: string, note?: string): Promise<boolean>;
//# sourceMappingURL=claims.d.ts.map
{"version":3,"file":"claims.d.ts","sourceRoot":"","sources":["../../src/network/claims.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAA+B,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CAC1C;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/B,OAAO,CAAC,WAAW,EAAE,CAAC,CAIxB;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;CAAE,CAAC,CAiC3D;AAED,2FAA2F;AAC3F,wBAAsB,eAAe,CACnC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
/**
* Advisory resource leases, as the network performs them.
*
* The reduction lives in `../room/claims.ts` and is pure; this is the half that
* has to touch the transport — look before writing, write, then look again.
*/
import { createClaim, isResourceName, ulid } from "@komnet/protocol";
import { currentHolder, reduceClaims } from "../room/claims.js";
/**
* Current holder of every claimed resource in a room, expiry included.
*
* Syncs first, unlike every other read. The others tolerate a stale cache and
* now say so; a lock cannot, because the dangerous direction is reporting a
* resource FREE while a peer holds it — which is exactly how two agents end up
* running the same build. Correctness is worth the round trip here.
*/
export async function listClaims(ctx, roomId, options = {}) {
ctx.assertSubscribed(roomId, "list claims in");
if (options.sync !== false)
await ctx.sync().catch(() => undefined);
return reduceClaims(await ctx.read(roomId));
}
export async function claimResource(ctx, roomId, resource, options = {}) {
ctx.assertSubscribed(roomId, "claim a resource in");
if (!isResourceName(resource)) {
throw new TypeError(`not a usable resource name: ${JSON.stringify(resource)} — use [a-z0-9._:/-], e.g. core/social/graph`);
}
// Look before leaping: if someone already holds it, do not write at all.
await ctx.sync().catch(() => undefined);
const before = currentHolder(await listClaims(ctx, roomId, { sync: false }), resource);
if (before !== null && before.holder !== ctx.agentId) {
return { granted: false, status: before };
}
const claim = createClaim({
id: ulid(),
resource,
holder: ctx.agentId,
...(options.ttlSeconds === undefined ? {} : { ttlSeconds: options.ttlSeconds }),
});
await ctx.send(roomId, {
body: options.note ?? `holding ${resource}`,
kind: "status",
needs: "none",
tags: ["claim", `claim:${resource}`],
claim,
});
// Re-read AFTER writing: a peer may have claimed in the same window.
await ctx.sync().catch(() => undefined);
const after = currentHolder(await listClaims(ctx, roomId, { sync: false }), resource);
return { granted: after !== null && after.holder === ctx.agentId, status: after };
}
/** Release a resource this agent holds. Releasing something you do not hold is a no-op. */
export async function releaseResource(ctx, roomId, resource, note) {
ctx.assertSubscribed(roomId, "release a resource in");
const held = currentHolder(await listClaims(ctx, roomId, { sync: false }), resource);
if (held === null || held.holder !== ctx.agentId)
return false;
await ctx.send(roomId, {
body: note ?? `released ${resource}`,
kind: "status",
needs: "none",
tags: ["claim", `claim:${resource}`],
// A release carries the default TTL because the field is required on the
// wire; the reducer ignores it for `released` events.
claim: createClaim({
id: ulid(),
resource,
holder: ctx.agentId,
action: "released",
}),
});
return true;
}
//# sourceMappingURL=claims.js.map
{"version":3,"file":"claims.js","sourceRoot":"","sources":["../../src/network/claims.ts"],"names":[],"mappings":"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"}
/**
* The local inbox: what was addressed to this agent, and what it has looked at.
*
* Shares a section with the outbox in `network.ts` and shares nothing else with
* it — this touches the state database and no git at all.
*/
import type { InboxItem, InboxQuery, StateDb } from "../state.ts";
/** What the inbox needs from the network, and nothing more. */
export interface InboxContext {
readonly state: StateDb;
assertSubscribed(roomId: string, verb: string): void;
}
/**
* Remember what this agent has actually looked at, per room.
*
* Read receipts used to be derived from *drained* items, which made "read" mean
* "processed and finished with" — so a peer asking "did they see it?" got "no"
* about a message the agent had read and was still working on. Being returned
* from the inbox is the moment it was read; completing it is a different fact,
* and `processedAt` still carries that one.
*
* A high-water mark in `meta` rather than a column: ULIDs sort, so one string
* per room answers it, and no schema bump discards anyone's history.
*/
export declare function recordSeen(ctx: InboxContext, items: readonly InboxItem[]): void;
export declare function inbox(ctx: InboxContext, query?: InboxQuery): InboxItem[];
/**
* Mark items processed. `needs: human` items are refused — only an answer
* recorded through the human-relay path clears those.
*/
export declare function drainInbox(ctx: InboxContext, ids: readonly string[]): {
drained: number;
refused: string[];
};
//# sourceMappingURL=inbox.d.ts.map
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../src/network/inbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAElE,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAW/E;AAED,wBAAgB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,KAAK,GAAE,UAAe,GAAG,SAAS,EAAE,CAK5E;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,GAAG,EAAE,YAAY,EACjB,GAAG,EAAE,SAAS,MAAM,EAAE,GACrB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAMxC"}
/**
* The local inbox: what was addressed to this agent, and what it has looked at.
*
* Shares a section with the outbox in `network.ts` and shares nothing else with
* it — this touches the state database and no git at all.
*/
/**
* Remember what this agent has actually looked at, per room.
*
* Read receipts used to be derived from *drained* items, which made "read" mean
* "processed and finished with" — so a peer asking "did they see it?" got "no"
* about a message the agent had read and was still working on. Being returned
* from the inbox is the moment it was read; completing it is a different fact,
* and `processedAt` still carries that one.
*
* A high-water mark in `meta` rather than a column: ULIDs sort, so one string
* per room answers it, and no schema bump discards anyone's history.
*/
export function recordSeen(ctx, items) {
const highest = new Map();
for (const item of items) {
const current = highest.get(item.room);
if (current === undefined || item.id > current)
highest.set(item.room, item.id);
}
for (const [room, id] of highest) {
const key = `seenThrough:${room}`;
const previous = ctx.state.getMeta(key);
if (previous === null || id > previous)
ctx.state.setMeta(key, id);
}
}
export function inbox(ctx, query = {}) {
if (query.room !== undefined)
ctx.assertSubscribed(query.room, "read the inbox for");
const items = ctx.state.listInbox(query);
recordSeen(ctx, items);
return items;
}
/**
* Mark items processed. `needs: human` items are refused — only an answer
* recorded through the human-relay path clears those.
*/
export function drainInbox(ctx, ids) {
const items = ctx.state.listInbox({ includeProcessed: true });
const byId = new Map(items.map((i) => [i.id, i]));
const refused = ids.filter((id) => byId.get(id)?.needs === "human");
const drained = ctx.state.markProcessed(ids.filter((id) => !refused.includes(id)));
return { drained, refused };
}
//# sourceMappingURL=inbox.js.map
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/network/inbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,GAAiB,EAAE,KAA2B;IACvE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,GAAG,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,IAAI,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,QAAQ;YAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAiB,EAAE,KAAK,GAAe,EAAE;IAC7D,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACzC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU,CACxB,GAAiB,EACjB,GAAsB;IAEtB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACnF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
/**
* What this machine has committed but not yet pushed.
*
* Derived from git rather than a queue file: a committed message is already
* durable, so git IS the outbox and cannot drift out of sync with itself.
*
* Notably this context calls nothing back into the network — it is git, the
* layout and the state database, which is why it extracts cleanly.
*/
import type { Layout } from "../layout.ts";
import type { OutboxEntry } from "../network.ts";
import type { Repo } from "../git/repo.ts";
import type { StateDb } from "../state.ts";
/** What the outbox needs from the network, and nothing more. */
export interface OutboxContext {
readonly networkId: string;
readonly layout: Layout;
readonly repo: Repo;
readonly state: StateDb;
/** Read live: a long-lived process picks up joins and leaves. */
readonly subscriptions: readonly string[];
readonly remote: string;
readonly recordWorktree: string;
}
/** Rooms holding local commits the remote has not seen. */
export declare function outbox(ctx: OutboxContext): Promise<OutboxEntry[]>;
/**
* Push anything queued while offline. Ordering is preserved automatically —
* they are consecutive commits on the room branch.
*/
export declare function drainOutbox(ctx: OutboxContext): Promise<{
roomId: string;
pushed: number;
}[]>;
/**
* Agent-card, profile, and room-policy commits can also be left local by an
* outage or a contended `main` push. Keep that record branch convergent just
* like room outboxes, without pretending an advisory presence write is a
* message.
*/
export declare function drainRecordOutbox(ctx: OutboxContext): Promise<void>;
//# sourceMappingURL=outbox.d.ts.map
{"version":3,"file":"outbox.d.ts","sourceRoot":"","sources":["../../src/network/outbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI3C,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,2DAA2D;AAC3D,wBAAsB,MAAM,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsBvE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAsB/C;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBzE"}
/**
* What this machine has committed but not yet pushed.
*
* Derived from git rather than a queue file: a committed message is already
* durable, so git IS the outbox and cannot drift out of sync with itself.
*
* Notably this context calls nothing back into the network — it is git, the
* layout and the state database, which is why it extracts cleanly.
*/
import { MAIN_REF, roomRef } from "@komnet/protocol";
import { exists } from "../fs.js";
const REMOTE = "origin";
/** Rooms holding local commits the remote has not seen. */
export async function outbox(ctx) {
const pending = [];
const meta = (key) => {
const value = ctx.state.getMeta(key);
return value === null || value === "" ? null : value;
};
for (const roomId of ctx.subscriptions) {
const worktree = ctx.layout.roomWorktree(ctx.networkId, roomId);
if (!(await exists(worktree)))
continue;
const ahead = await ctx.repo.aheadCount(worktree, `refs/remotes/${REMOTE}/${roomRef(roomId)}`);
if (ahead > 0) {
pending.push({
roomId,
ahead,
since: meta(`queuedSince:${roomId}`),
// Why it is still here, in the terms the user's own git printed —
// without the flag soup komnet passed to get there.
reason: meta(`queuedReason:${roomId}`),
});
}
}
return pending;
}
/**
* Push anything queued while offline. Ordering is preserved automatically —
* they are consecutive commits on the room branch.
*/
export async function drainOutbox(ctx) {
const drained = [];
for (const { roomId, ahead } of await outbox(ctx)) {
const worktree = ctx.layout.roomWorktree(ctx.networkId, roomId);
try {
await ctx.repo.pushWithRetry(worktree, roomRef(roomId), { remote: REMOTE });
// Refresh the remote-tracking ref. `ahead` is measured against it, and an
// explicit `push <branch>:<branch>` does not reliably move it — so
// without this the same commits look queued forever and get re-pushed on
// every sync.
await ctx.repo
.fetch(ctx.remote, [
`+refs/heads/${roomRef(roomId)}:refs/remotes/${REMOTE}/${roomRef(roomId)}`,
])
.catch(() => undefined);
ctx.state.setMeta(`queuedSince:${roomId}`, "");
drained.push({ roomId, pushed: ahead });
}
catch {
// Still unreachable. Leave it queued; the next sync tries again.
}
}
return drained;
}
/**
* Agent-card, profile, and room-policy commits can also be left local by an
* outage or a contended `main` push. Keep that record branch convergent just
* like room outboxes, without pretending an advisory presence write is a
* message.
*/
export async function drainRecordOutbox(ctx) {
const trackedMain = `refs/remotes/${REMOTE}/${MAIN_REF}`;
const ahead = await ctx.repo.aheadCount(ctx.recordWorktree, trackedMain);
if (ahead === 0)
return;
try {
await ctx.repo.pushWithRetry(ctx.recordWorktree, MAIN_REF, {
remote: REMOTE,
maxAttempts: 3,
backoffBaseMs: 100,
backoffCapMs: 1_000,
});
await ctx.repo.fetch(ctx.remote, [`+refs/heads/${MAIN_REF}:${trackedMain}`]);
}
catch {
// Still unreachable or contended. The commits remain durable and the next
// adaptive sync retries; room delivery can continue independently.
}
}
//# sourceMappingURL=outbox.js.map
{"version":3,"file":"outbox.js","sourceRoot":"","sources":["../../src/network/outbox.ts"],"names":[],"mappings":"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"}
/**
* Reading a room: the live window, the history behind it, and search across both.
*
* The three differ in what they are allowed to cost. `read` touches a
* materialised worktree, `history` walks git, and `search` deliberately refuses
* to walk git at all — the reasoning is on each function.
*/
import { type Message } from "@komnet/protocol";
import type { Layout } from "../layout.ts";
import type { Repo } from "../git/repo.ts";
/** What reading needs from the network, and nothing more. */
export interface ReadingContext {
readonly networkId: string;
readonly layout: Layout;
readonly repo: Repo;
/** Read live, not snapshotted: a long-lived process picks up joins and leaves. */
readonly subscriptions: readonly string[];
assertSubscribed(roomId: string, verb: string): void;
ensureRoomWorktree(roomId: string): Promise<string>;
}
export declare function read(ctx: ReadingContext, roomId: string, options?: {
limit?: number;
thread?: string;
}): Promise<Message[]>;
/**
* Read past the live window, via git history.
*
* Sealing removes old messages from the tree but never from history, so this is
* what makes "pruning is not data loss" true in practice rather than only in
* principle (docs/design/06-retention-and-sealing.md §1).
*/
export declare function history(ctx: ReadingContext, roomId: string, options?: {
since?: string;
limit?: number;
}): Promise<Message[]>;
/**
* Substring search across the live window of subscribed rooms.
*
* Deliberately scoped to the tree, not history: an all-time search means
* fetching every blob, which under a partial clone is exactly the expensive
* operation the design avoids. `history` is the explicit way to go deeper.
*/
export declare function search(ctx: ReadingContext, query: string, options?: {
room?: string;
limit?: number;
}): Promise<{
room: string;
message: Message;
}[]>;
//# sourceMappingURL=reading.d.ts.map
{"version":3,"file":"reading.d.ts","sourceRoot":"","sources":["../../src/network/reading.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAqD,KAAK,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAInG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,kFAAkF;IAClF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACrD;AAED,wBAAsB,IAAI,CACxB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,OAAO,EAAE,CAAC,CAapB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,OAAO,CAAC,OAAO,EAAE,CAAC,CAyBpB;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,CAgB/C"}
/**
* Reading a room: the live window, the history behind it, and search across both.
*
* The three differ in what they are allowed to cost. `read` touches a
* materialised worktree, `history` walks git, and `search` deliberately refuses
* to walk git at all — the reasoning is on each function.
*/
import { isMessagePath, parseMessage, roomRef, threadOrder } from "@komnet/protocol";
import { exists } from "../fs.js";
import { RoomStore } from "../room/store.js";
export async function read(ctx, roomId, options = {}) {
ctx.assertSubscribed(roomId, "read");
const worktree = await ctx.ensureRoomWorktree(roomId);
const store = new RoomStore(worktree, roomId);
let messages = await store.readAll(() => undefined);
if (options.thread !== undefined) {
messages = messages.filter((m) => m.header.thread === options.thread);
}
messages = threadOrder(messages);
if (options.limit !== undefined && messages.length > options.limit) {
messages = messages.slice(-options.limit);
}
return messages;
}
/**
* Read past the live window, via git history.
*
* Sealing removes old messages from the tree but never from history, so this is
* what makes "pruning is not data loss" true in practice rather than only in
* principle (docs/design/06-retention-and-sealing.md §1).
*/
export async function history(ctx, roomId, options = {}) {
ctx.assertSubscribed(roomId, "read the history of");
await ctx.ensureRoomWorktree(roomId);
const ref = `refs/heads/${roomRef(roomId)}`;
const entries = await ctx.repo.logAddedPaths(ref, `rooms/${roomId}/msg/`, options.since === undefined ? {} : { since: options.since });
const messages = [];
const seen = new Set();
for (const { commit, path } of entries) {
if (!isMessagePath(path) || seen.has(path))
continue;
seen.add(path);
const raw = await ctx.repo.readFile(commit, path);
if (raw === null)
continue;
try {
messages.push(parseMessage(raw, path));
}
catch {
// One unreadable historical message must not sink the whole query.
}
}
const ordered = threadOrder(messages);
return options.limit === undefined ? ordered : ordered.slice(-options.limit);
}
/**
* Substring search across the live window of subscribed rooms.
*
* Deliberately scoped to the tree, not history: an all-time search means
* fetching every blob, which under a partial clone is exactly the expensive
* operation the design avoids. `history` is the explicit way to go deeper.
*/
export async function search(ctx, query, options = {}) {
if (options.room !== undefined)
ctx.assertSubscribed(options.room, "search");
const needle = query.toLowerCase();
const rooms = options.room === undefined ? ctx.subscriptions : [options.room];
const hits = [];
for (const roomId of rooms) {
const worktree = ctx.layout.roomWorktree(ctx.networkId, roomId);
if (!(await exists(worktree)))
continue;
const messages = await new RoomStore(worktree, roomId).readAll(() => undefined);
for (const message of messages) {
if (message.body.toLowerCase().includes(needle))
hits.push({ room: roomId, message });
}
}
hits.sort((a, b) => (a.message.header.id < b.message.header.id ? 1 : -1));
return options.limit === undefined ? hits : hits.slice(0, options.limit);
}
//# sourceMappingURL=reading.js.map
{"version":3,"file":"reading.js","sourceRoot":"","sources":["../../src/network/reading.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAgB,MAAM,kBAAkB,CAAC;AAEnG,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAe7C,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,GAAmB,EACnB,MAAc,EACd,OAAO,GAAwC,EAAE;IAEjD,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;IACD,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QACnE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAmB,EACnB,MAAc,EACd,OAAO,GAAuC,EAAE;IAEhD,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACpD,MAAM,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,cAAc,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAC1C,GAAG,EACH,SAAS,MAAM,OAAO,EACtB,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAC5D,CAAC;IAEF,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,IAAI;YAAE,SAAS;QAC3B,IAAI,CAAC;YACH,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,CAAC;QAAC,MAAM,CAAC;YACP,mEAAmE;QACrE,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,GAAmB,EACnB,KAAa,EACb,OAAO,GAAsC,EAAE;IAE/C,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS;QAAE,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7E,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,IAAI,GAAyC,EAAE,CAAC;IAEtD,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;YAAE,SAAS;QACxC,MAAM,QAAQ,GAAG,MAAM,IAAI,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC"}
/**
* Delegated repository reviews, as the network performs them.
*
* The lifecycle rules are in `@komnet/protocol` and the reduction in
* `../review/tasks.ts`; this is the part that reads a room, decides who to
* address, and writes the transition.
*/
import { type Message } from "@komnet/protocol";
import { type ReviewTaskStatus } from "../review/tasks.ts";
import type { ApprovalKind } from "../approvals.ts";
import type { ReviewRequestInput, ReviewUpdateInput, SendInput } from "../network.ts";
/** What review orchestration needs from the network, and nothing more. */
export interface ReviewsContext {
readonly agentId: string;
send(roomId: string, input: SendInput): Promise<Message>;
read(roomId: string): Promise<Message[]>;
requireApproval(kind: ApprovalKind, roomId: string, id: string, requester: string): Promise<void>;
}
/** Create a targeted agent-to-agent repository review task. */
export declare function requestReview(ctx: ReviewsContext, roomId: string, input: ReviewRequestInput): Promise<Message>;
/** Current valid state of every review task in a room. */
export declare function listReviewTasks(ctx: ReviewsContext, roomId: string): Promise<ReviewTaskStatus[]>;
/** Append one guarded state transition to an existing review task. */
export declare function updateReview(ctx: ReviewsContext, roomId: string, reviewId: string, input: ReviewUpdateInput): Promise<Message>;
//# sourceMappingURL=reviews.d.ts.map
{"version":3,"file":"reviews.d.ts","sourceRoot":"","sources":["../../src/network/reviews.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAIL,KAAK,OAAO,EAIb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtF,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACzC,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnG;AAqCD,+DAA+D;AAC/D,wBAAsB,aAAa,CACjC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,OAAO,CAAC,CAmBlB;AAED,0DAA0D;AAC1D,wBAAsB,eAAe,CACnC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAE7B;AAED,sEAAsE;AACtE,wBAAsB,YAAY,CAChC,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
/**
* Delegated repository reviews, as the network performs them.
*
* The lifecycle rules are in `@komnet/protocol` and the reduction in
* `../review/tasks.ts`; this is the part that reads a room, decides who to
* address, and writes the transition.
*/
import { assertReviewTransition, createReviewTask, ulid, } from "@komnet/protocol";
import { reduceReviewTasks } from "../review/tasks.js";
/** Who must act next, derived from the state rather than declared by the author. */
function reviewNeeds(state) {
if (state === "needs_human")
return "human";
if (state === "requested" ||
state === "reported" ||
state === "discussing" ||
state === "blocked")
return "agent";
return "none";
}
/** Who a transition should address, given who wrote it. */
function reviewMentions(review, author) {
switch (review.state) {
case "requested":
return [review.reviewer];
case "discussing":
return [author === review.requester ? review.reviewer : review.requester];
case "reported":
case "blocked":
case "needs_human":
return [review.requester];
case "cancelled":
case "expired":
return [review.reviewer];
case "claimed":
case "reviewing":
return [];
case "completed":
return [review.reviewer];
}
}
/** Create a targeted agent-to-agent repository review task. */
export async function requestReview(ctx, roomId, input) {
const review = createReviewTask({
id: ulid(),
requester: ctx.agentId,
reviewer: input.reviewer,
repo: input.repo,
baseRev: input.baseRev,
headRev: input.headRev,
...(input.scope === undefined ? {} : { scope: input.scope }),
...(input.deadline === undefined ? {} : { deadline: input.deadline }),
});
return await ctx.send(roomId, {
body: input.summary,
kind: "question",
needs: "agent",
mentions: [input.reviewer],
tags: ["review-task"],
review,
});
}
/** Current valid state of every review task in a room. */
export async function listReviewTasks(ctx, roomId) {
return reduceReviewTasks(await ctx.read(roomId));
}
/** Append one guarded state transition to an existing review task. */
export async function updateReview(ctx, roomId, reviewId, input) {
const status = (await listReviewTasks(ctx, roomId)).find((candidate) => candidate.review.id === reviewId);
if (status === undefined)
throw new Error(`no review task ${reviewId} in room ${roomId}`);
if (input.state === "claimed") {
await ctx.requireApproval("review", roomId, reviewId, status.review.requester);
}
const review = { ...status.review, state: input.state };
assertReviewTransition(status.review, review, ctx.agentId);
const mentions = reviewMentions(review, ctx.agentId);
return await ctx.send(roomId, {
body: input.body,
...(input.refs === undefined ? {} : { refs: input.refs }),
kind: "status",
needs: reviewNeeds(review.state),
...(mentions.length === 0 ? {} : { mentions }),
tags: ["review-task", `review-state:${review.state}`],
inReplyTo: status.currentMessageId,
thread: status.thread,
review,
});
}
//# sourceMappingURL=reviews.js.map
{"version":3,"file":"reviews.js","sourceRoot":"","sources":["../../src/network/reviews.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,IAAI,GAKL,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,iBAAiB,EAAyB,MAAM,oBAAoB,CAAC;AAY9E,oFAAoF;AACpF,SAAS,WAAW,CAAC,KAAsB;IACzC,IAAI,KAAK,KAAK,aAAa;QAAE,OAAO,OAAO,CAAC;IAC5C,IACE,KAAK,KAAK,WAAW;QACrB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,YAAY;QACtB,KAAK,KAAK,SAAS;QAEnB,OAAO,OAAO,CAAC;IACjB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2DAA2D;AAC3D,SAAS,cAAc,CAAC,MAAkB,EAAE,MAAc;IACxD,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,WAAW;YACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,KAAK,YAAY;YACf,OAAO,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5E,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5B,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3B,KAAK,SAAS,CAAC;QACf,KAAK,WAAW;YACd,OAAO,EAAE,CAAC;QACZ,KAAK,WAAW;YACd,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,GAAmB,EACnB,MAAc,EACd,KAAyB;IAEzB,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAC9B,EAAE,EAAE,IAAI,EAAE;QACV,SAAS,EAAE,GAAG,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;KACtE,CAAC,CAAC;IACH,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,OAAO;QACnB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,OAAO;QACd,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1B,IAAI,EAAE,CAAC,aAAa,CAAC;QACrB,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAmB,EACnB,MAAc;IAEd,OAAO,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,sEAAsE;AACtE,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAmB,EACnB,MAAc,EACd,QAAgB,EAChB,KAAwB;IAExB,MAAM,MAAM,GAAG,CAAC,MAAM,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CACtD,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,CAChD,CAAC;IACF,IAAI,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,YAAY,MAAM,EAAE,CAAC,CAAC;IAE1F,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,MAAM,GAAe,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IACpE,sBAAsB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrD,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACzD,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;QAChC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC9C,IAAI,EAAE,CAAC,aAAa,EAAE,gBAAgB,MAAM,CAAC,KAAK,EAAE,CAAC;QACrD,SAAS,EAAE,MAAM,CAAC,gBAAgB;QAClC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM;KACP,CAAC,CAAC;AACL,CAAC"}
/**
* Compaction, as the network performs it.
*
* The transaction itself is `../seal/sealer.ts`; this decides whether a room is
* due, holds the lock while it runs, and repairs the local cursor afterwards.
*/
import { type SealDecision, type SealResult } from "../seal/sealer.ts";
import type { Layout } from "../layout.ts";
import type { Repo } from "../git/repo.ts";
import type { RoomConfig } from "../room/config.ts";
import type { StateDb } from "../state.ts";
/**
* What sealing needs from the network.
*
* Wider than the domains extracted before it, but almost all of it is data the
* `Sealer` is constructed from. The number worth watching is the behavioural
* dependency — here exactly one, `readRoomConfig` — because that is what
* couples a domain to the rest of the object rather than to its own inputs.
*/
export interface SealingContext {
readonly networkId: string;
readonly agentId: string;
readonly remote: string;
/** Read live: a long-lived process picks up joins and leaves. */
readonly subscriptions: readonly string[];
readonly layout: Layout;
readonly repo: Repo;
readonly state: StateDb;
readonly lockPath: string;
readRoomConfig(roomId: string): Promise<RoomConfig | null>;
}
/** What sealing this room would do, without touching anything. */
export declare function sealDecision(ctx: SealingContext, roomId: string): Promise<SealDecision>;
/**
* Compact a room: merge its live branch into `main`, write a digest, promote
* decisions, then prune the sealed messages out of both trees.
*/
export declare function seal(ctx: SealingContext, roomId: string): Promise<SealResult>;
/** Rooms whose live window has outgrown their retention policy. */
export declare function roomsNeedingSeal(ctx: SealingContext): Promise<SealDecision[]>;
//# sourceMappingURL=sealing.d.ts.map
{"version":3,"file":"sealing.d.ts","sourceRoot":"","sources":["../../src/network/sealing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAGL,KAAK,YAAY,EAEjB,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,iEAAiE;IACjE,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CAC5D;AAwBD,kEAAkE;AAClE,wBAAsB,YAAY,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAE7F;AAED;;;GAGG;AACH,wBAAsB,IAAI,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAkBnF;AAED,mEAAmE;AACnE,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAkBnF"}
/**
* Compaction, as the network performs it.
*
* The transaction itself is `../seal/sealer.ts`; this decides whether a room is
* due, holds the lock while it runs, and repairs the local cursor afterwards.
*/
import { roomRef } from "@komnet/protocol";
import { FileLock } from "../lock.js";
import { DEFAULT_SEAL_POLICY, Sealer, } from "../seal/sealer.js";
function sealer(ctx) {
return new Sealer({
repo: ctx.repo,
layout: ctx.layout,
networkId: ctx.networkId,
agentId: ctx.agentId,
remote: ctx.remote,
});
}
/** Retention policy for a room, from its config, falling back to the default. */
async function sealPolicy(ctx, roomId) {
const room = await ctx.readRoomConfig(roomId);
if (room === null)
return DEFAULT_SEAL_POLICY;
return {
...DEFAULT_SEAL_POLICY,
windowDays: room.retention.windowDays,
windowMessages: room.retention.windowMessages,
minIntervalHours: room.retention.sealMinIntervalHours,
};
}
/** What sealing this room would do, without touching anything. */
export async function sealDecision(ctx, roomId) {
return await sealer(ctx).decide(roomId, await sealPolicy(ctx, roomId));
}
/**
* Compact a room: merge its live branch into `main`, write a digest, promote
* decisions, then prune the sealed messages out of both trees.
*/
export async function seal(ctx, roomId) {
const policy = await sealPolicy(ctx, roomId);
return await FileLock.withLock(ctx.lockPath, async () => {
const result = await sealer(ctx).seal(roomId, policy);
if (result.sealed > 0) {
// The room worktree just lost files; the local cursor must not claim to
// have processed a head that no longer exists.
const head = await ctx.repo.resolveRef(`refs/heads/${roomRef(roomId)}`);
if (head !== null)
ctx.state.setHead(roomId, head);
ctx.state.setMeta(`lastSealAt:${roomId}`, new Date().toISOString());
}
return result;
},
// Sealing pushes several times; the default lock timeout is too short.
{ timeoutMs: 10 * 60_000 });
}
/** Rooms whose live window has outgrown their retention policy. */
export async function roomsNeedingSeal(ctx) {
const due = [];
for (const roomId of ctx.subscriptions) {
const policy = await sealPolicy(ctx, roomId);
const pending = await sealer(ctx).hasPendingTransaction(roomId);
const last = ctx.state.getMeta(`lastSealAt:${roomId}`);
if (!pending &&
last !== null &&
Date.now() - Date.parse(last) < policy.minIntervalHours * 3_600_000) {
continue;
}
const decision = await sealer(ctx).decide(roomId, policy);
if (decision.shouldSeal)
due.push(decision);
}
return due;
}
//# sourceMappingURL=sealing.js.map
{"version":3,"file":"sealing.js","sourceRoot":"","sources":["../../src/network/sealing.ts"],"names":[],"mappings":"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"}
+25
-62

@@ -13,3 +13,3 @@ import { type AuthorKind, type Claim, type Message, type MessageKind, type Needs, type Priority, type ReviewTask, type ReviewTaskState, type Task, type TaskUpdateAction } from "@komnet/protocol";

import { type RoomConfig } from "./room/config.ts";
import { type ReviewTaskStatus } from "./review/tasks.ts";
import type { ReviewTaskStatus } from "./review/tasks.ts";
import { type Agenda, type AgendaCounts, type AgendaOptions } from "./task/agenda.ts";

@@ -19,4 +19,4 @@ import { type TaskDetail, type TaskHealth, type TaskStatus } from "./task/tasks.ts";

import { type SecretRule } from "./scanner/secrets.ts";
import { type AuthenticityMode, type NetManifest } from "./net.ts";
import { type SealDecision, type SealResult } from "./seal/sealer.ts";
import type { AuthenticityMode, NetManifest } from "./net.ts";
import type { SealDecision, SealResult } from "./seal/sealer.ts";
import { StateDb, type InboxItem, type InboxQuery } from "./state.ts";

@@ -564,2 +564,3 @@ import { type Anomaly, type RoomChange } from "./sync/detector.ts";

forecastDelivery(roomId: string, agents: readonly string[]): Promise<DeliveryForecast[]>;
private get reviewsContext();
/** Create a targeted agent-to-agent repository review task. */

@@ -584,2 +585,10 @@ requestReview(roomId: string, input: ReviewRequestInput): Promise<Message>;

*/
/**
* Everything resource claiming is allowed to reach.
*
* Built here rather than handing over `this`, so the domain's dependencies
* are a list you can read instead of whatever it happens to call through
* `this` — and so the private guards stay private.
*/
private get claimsContext();
claimResource(roomId: string, resource: string, options?: {

@@ -595,10 +604,2 @@ ttlSeconds?: number;

/** Current holder of every claimed resource in a room, expiry included. */
/**
* Current holder of every claimed resource in a room, expiry included.
*
* Syncs first, unlike every other read. The others tolerate a stale cache and
* now say so; a lock cannot, because the dangerous direction is reporting a
* resource FREE while a peer holds it — which is exactly how two agents end
* up running the same build. Correctness is worth the round trip here.
*/
listClaims(roomId: string, options?: {

@@ -802,2 +803,3 @@ sync?: boolean;

waitForInbox(options?: WaitForInboxOptions): Promise<WaitForInboxResult>;
private get readingContext();
read(roomId: string, options?: {

@@ -807,9 +809,3 @@ limit?: number;

}): Promise<Message[]>;
/**
* Read past the live window, via git history.
*
* Sealing removes old messages from the tree but never from history, so this
* is what makes "pruning is not data loss" true in practice rather than only
* in principle (docs/design/06-retention-and-sealing.md §1).
*/
/** Read past the live window, via git history. */
history(roomId: string, options?: {

@@ -819,9 +815,3 @@ since?: string;

}): Promise<Message[]>;
/**
* Substring search across the live window of subscribed rooms.
*
* Deliberately scoped to the tree, not history: an all-time search means
* fetching every blob, which under a partial clone is exactly the expensive
* operation the design avoids. `history` is the explicit way to go deeper.
*/
/** Substring search across the live window of subscribed rooms. */
search(query: string, options?: {

@@ -834,9 +824,6 @@ room?: string;

}[]>;
private sealer;
/**
* The git identity this machine commits with.
*
* Published on the agent card so `authenticity: git` has something to check
* `from` against — otherwise the mode can only ever report "no binding".
*/
private get sealingContext();
/** Only git config and the manifest — deliberately not the sealing context. */
private get authenticityContext();
/** The git identity this machine commits with. */
gitIdentity(): Promise<{

@@ -851,4 +838,2 @@ name: string;

authenticityMode(): Promise<AuthenticityMode>;
/** Retention policy for a room, from its config, falling back to the default. */
private sealPolicy;
/** What sealing this room would do, without touching anything. */

@@ -863,17 +848,7 @@ sealDecision(roomId: string): Promise<SealDecision>;

roomsNeedingSeal(): Promise<SealDecision[]>;
private get inboxContext();
/** Nothing in common with the inbox but a section heading: git, not the state db. */
private get outboxContext();
inbox(query?: InboxQuery): InboxItem[];
/**
* Remember what this agent has actually looked at, per room.
*
* Read receipts used to be derived from *drained* items, which made "read"
* mean "processed and finished with" — so a peer asking "did they see it?"
* got "no" about a message the agent had read and was still working on. Being
* returned from the inbox is the moment it was read; completing it is a
* different fact, and `processedAt` still carries that one.
*
* A high-water mark in `meta` rather than a column: ULIDs sort, so one string
* per room answers it, and no schema bump discards anyone's history.
*/
private recordSeen;
/**
* Mark items processed. `needs: human` items are refused — only an answer

@@ -886,13 +861,5 @@ * recorded through the human-relay path clears those.

};
/**
* Rooms holding local commits the remote has not seen.
*
* Derived from git rather than a queue file: a committed message is already
* durable, so git IS the outbox and cannot drift out of sync with itself.
*/
/** Rooms holding local commits the remote has not seen. */
outbox(): Promise<OutboxEntry[]>;
/**
* Push anything queued while offline. Ordering is preserved automatically —
* they are consecutive commits on the room branch.
*/
/** Push anything queued while offline. */
drainOutbox(): Promise<{

@@ -902,7 +869,3 @@ roomId: string;

}[]>;
/**
* Agent-card, profile, and room-policy commits can also be left local by an outage or
* a contended `main` push. Keep that record branch convergent just like room
* outboxes, without pretending an advisory presence write is a message.
*/
/** Keep the record branch convergent, like the room outboxes. */
private drainRecordOutbox;

@@ -909,0 +872,0 @@ /**

@@ -1,1 +0,1 @@

{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
{
"name": "@komnet/core",
"version": "0.7.2",
"version": "0.7.3",
"description": "komnet engine: git transport, room store, collaborative tasks, change detection, outbox, and the secret scanner.",

@@ -23,3 +23,3 @@ "license": "MIT",

"yaml": "^2.9.0",
"@komnet/protocol": "0.7.2"
"@komnet/protocol": "0.7.3"
},

@@ -26,0 +26,0 @@ "author": "Andrey Tabakov",

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display