too-many-cooks 0.12.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,12 +6,38 @@ Multi-agent coordination MCP server. Lets multiple AI agents safely edit the sam
6
6
 
7
7
  ## Quick Start
8
8
 
9
+ > ⚠️ The server must be **running** before any agent — or the VSCode extension — can connect.
10
+
11
+ ### 1. Start the server
12
+
13
+ Run it with `npx`, which always fetches the latest published version (no global install required):
14
+
9
15
  ```bash
10
- # Add to Claude Code over HTTP (Streamable HTTP transport)
16
+ npx -y too-many-cooks@latest
17
+ ```
18
+
19
+ It listens on `http://localhost:4040`. Override the port with `TMC_PORT=5050 npx -y too-many-cooks@latest`, and set `TMC_WORKSPACE` to target a specific workspace folder (defaults to `process.cwd()`).
20
+
21
+ **Or start it from the VSCode extension:** open the Command Palette and run **Too Many Cooks: Choose Connection Mode** → **Start Local Server**. The extension launches the same `npx` server for you.
22
+
23
+ ### 2. Connect your agent
24
+
25
+ With the server running, point your agent at it:
26
+
27
+ ```bash
28
+ # Claude Code (Streamable HTTP transport)
11
29
  claude mcp add --transport http too-many-cooks http://localhost:4040/mcp
12
30
  ```
13
31
 
14
- Set `TMC_WORKSPACE` to target a specific workspace folder (defaults to `process.cwd()`).
32
+ ## VSCode Extension
33
+
34
+ The companion extension shows a live dashboard of agents, locks, messages, and plans — and can start the server for you.
35
+
36
+ - **From the editor:** open the Extensions view, search **Too Many Cooks** (publisher `Nimblesite`), and install.
37
+ - **From the command line:** `code --install-extension Nimblesite.too-many-cooks`
38
+ - **From a `.vsix` file:** Extensions view → `⋯` menu → **Install from VSIX…**
39
+
40
+ Then run **Too Many Cooks: Choose Connection Mode** → **Start Local Server** to launch the server and connect in one step.
15
41
 
16
42
  ## Packages
17
43
 
@@ -1,10 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  /// Entry point for Too Many Cooks MCP server.
3
3
  ///
4
- /// Starts a single Express HTTP server on port 4040 with:
4
+ /// Starts ONE Express HTTP server per workspace folder (default port 4040) with:
5
5
  /// - `/mcp` — MCP Streamable HTTP for agent connections
6
6
  /// - `/admin/*` — REST + Streamable HTTP for the VSCode extension
7
7
  ///
8
+ /// Process isolation is by folder and the server NEVER kills another process:
9
+ /// - [SERVER-SINGLE-INSTANCE] refuse to start if TMC already runs in this folder
10
+ /// - [SERVER-PORT-CONFLICT] step aside cleanly on EADDRINUSE (never kill the owner)
11
+ /// - [SERVER-STATE-ISOLATION] all state lives in `${workspace}/.too_many_cooks/`
12
+ /// - [SERVER-EPIPE] a dead stdio pipe can never loop into the logger
13
+ ///
8
14
  /// Implements the deploy-toolkit `--version` contract before anything else.
9
15
  {
10
16
  const argv = process.argv.slice(2);
@@ -31,19 +37,28 @@
31
37
  }
32
38
  }
33
39
  import crypto from "node:crypto";
34
- import { execSync } from "node:child_process";
35
- import net from "node:net";
36
40
  import express from "express";
37
41
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
38
42
  import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
39
- import { createAdminEventHub, createAgentEventHub, createMcpServerForDb, defaultConfig, getServerPort, registerAdminRoutes, } from "too-many-cooks-core";
43
+ import { createAdminEventHub, createAgentEventHub, createMcpServerForDb, defaultConfig, getServerPort, getWorkspaceFolder, registerAdminRoutes, } from "too-many-cooks-core";
40
44
  import { createBackend } from "../src/backend.js";
41
45
  import { createLogger } from "./logger.js";
46
+ import { acquireServerLock, errorCode, releaseServerLock, resolveLockPath, } from "./server_lock.js";
42
47
  /** JSON-RPC bad request error response. */
43
48
  const BAD_REQUEST_JSON = '{"jsonrpc":"2.0","error":{"code":-32000,"message":"Bad Request"},"id":null}';
44
49
  /** JSON-RPC session-not-found error response (404). */
45
50
  const SESSION_NOT_FOUND_JSON = '{"jsonrpc":"2.0","error":{"code":-32001,"message":"Session not found"},"id":null}';
51
+ /// [SERVER-EPIPE] A dead stdout/stderr pipe is unrecoverable, not fatal-loopable.
52
+ /// Without an 'error' listener an EPIPE surfaces as an uncaughtException, which
53
+ /// used to re-enter the logger and write the "fatal" line to the same broken
54
+ /// stream forever — the multi-gigabyte log loop in issue #33. Consume it here.
55
+ const installPipeGuards = () => {
56
+ const swallow = () => { };
57
+ process.stdout.on("error", swallow);
58
+ process.stderr.on("error", swallow);
59
+ };
46
60
  const installProcessHandlers = (log) => {
61
+ installPipeGuards();
47
62
  const shutdown = (signal) => {
48
63
  log.info("Server shutting down", { signal });
49
64
  process.exit(0);
@@ -51,6 +66,9 @@ const installProcessHandlers = (log) => {
51
66
  process.on("SIGTERM", () => { shutdown("SIGTERM"); });
52
67
  process.on("SIGINT", () => { shutdown("SIGINT"); });
53
68
  process.on("uncaughtException", (err) => {
69
+ if (errorCode(err) === "EPIPE") {
70
+ return;
71
+ } // [SERVER-EPIPE] never re-enter the logger on a dead pipe
54
72
  log.fatal("Uncaught exception", { error: String(err), stack: err.stack ?? "" });
55
73
  });
56
74
  process.on("unhandledRejection", (reason) => {
@@ -61,62 +79,46 @@ const main = async () => {
61
79
  const log = createLogger();
62
80
  installProcessHandlers(log);
63
81
  log.info("Server starting...");
82
+ const workspace = getWorkspaceFolder();
83
+ const port = getServerPort();
84
+ const lockPath = resolveLockPath(workspace);
85
+ guardSingleInstance(lockPath, workspace, port, log);
86
+ process.on("exit", () => { releaseServerLock(lockPath); });
64
87
  try {
65
- await startServer(log);
88
+ await startServer(log, port);
66
89
  }
67
90
  catch (e) {
68
91
  log.fatal("Fatal error", { error: String(e) });
69
92
  throw e;
70
93
  }
71
94
  };
72
- /** Maximum time to wait for port to become free after killing a process. */
73
- const PORT_FREE_TIMEOUT_MS = 5000;
74
- /** Timeout for port check connection attempt (ms). */
75
- const PORT_CHECK_TIMEOUT_MS = 500;
76
- /** Delay between port-free polls in milliseconds. */
77
- const PORT_POLL_DELAY_MS = 100;
78
- /** Perform a raw TCP probe and return a Promise<boolean> (non-async to avoid require-await). */
79
- // eslint-disable-next-line @typescript-eslint/promise-function-async
80
- const tcpProbe = (port) => new Promise((resolve) => {
81
- const socket = net.createConnection({ port, host: "127.0.0.1" });
82
- const timer = setTimeout(() => { socket.destroy(); resolve(false); }, PORT_CHECK_TIMEOUT_MS);
83
- socket.once("connect", () => { clearTimeout(timer); socket.destroy(); resolve(true); });
84
- socket.once("error", () => { clearTimeout(timer); resolve(false); });
85
- });
86
- /** Check whether a port is in use by attempting a TCP connection. */
87
- const isPortInUse = async (port) => await tcpProbe(port);
88
- /** Kill any existing process listening on the given port and wait for it to be freed. */
89
- const killExistingProcess = async (port, log) => {
90
- const inUse = await isPortInUse(port);
91
- if (!inUse) {
92
- return;
95
+ /// [SERVER-SINGLE-INSTANCE] Claim this workspace folder, or exit cleanly if another
96
+ /// LIVE Too Many Cooks already owns it. The other process is left completely
97
+ /// untouched we never kill it ([SERVER-NO-KILL]).
98
+ const guardSingleInstance = (lockPath, workspace, port, log) => {
99
+ const result = acquireServerLock(lockPath, port, Date.now());
100
+ if (!result.ok) {
101
+ log.fatal("Could not acquire single-instance lock", { workspace, error: result.error });
102
+ process.exit(1);
93
103
  }
94
- log.info("Port in use, killing existing process", { port });
95
- try {
96
- const output = execSync(`lsof -ti :${String(port)}`, { encoding: "utf8" }).trim();
97
- if (output.length === 0) {
98
- return;
99
- }
100
- const pids = output.split("\n").map((pid) => { return pid.trim(); }).filter((pid) => { return pid.length > 0; });
101
- for (const pid of pids) {
102
- log.info("Killing process", { port, pid });
103
- execSync(`kill -9 ${pid}`);
104
- }
105
- const start = Date.now();
106
- while (Date.now() - start < PORT_FREE_TIMEOUT_MS) {
107
- if (!(await isPortInUse(port))) {
108
- log.info("Port is now free", { port });
109
- return;
110
- }
111
- await new Promise((resolve) => { setTimeout(() => { resolve(undefined); }, PORT_POLL_DELAY_MS); });
112
- }
113
- log.warn("Port still in use after timeout — proceeding anyway", { port });
104
+ if (result.value.kind === "busy") {
105
+ log.error("Too Many Cooks is already running in this folder — refusing to start a second instance", { workspace, existingPid: result.value.existing.pid, existingPort: result.value.existing.port });
106
+ process.exit(1);
114
107
  }
115
- catch {
116
- // Lsof exits non-zero when no process found — that's fine
108
+ log.info("Acquired single-instance lock", { workspace, port });
109
+ };
110
+ /// [SERVER-PORT-CONFLICT] If the port is taken, step aside cleanly. Too Many Cooks
111
+ /// NEVER kills the process holding a port ([SERVER-NO-KILL]) — run a different
112
+ /// folder on a different TMC_PORT instead.
113
+ const handleListenError = (err, port, log) => {
114
+ if (errorCode(err) === "EADDRINUSE") {
115
+ log.error("Port already in use by another process — stepping aside (Too Many Cooks never kills the process holding a port). Set TMC_PORT to run on a different port.", { port });
116
+ process.exit(1);
117
117
  }
118
+ log.fatal("Server listen error", { port, error: String(err) });
119
+ process.exit(1);
118
120
  };
119
- const startServer = async (log) => {
121
+ const startServer = async (log, port) => {
120
122
  log.info("Creating server...");
121
123
  const cfg = defaultConfig;
122
124
  const dbResult = createBackend(cfg, log);
@@ -139,11 +141,11 @@ const startServer = async (log) => {
139
141
  app.post("/mcp", asyncHandler(mcpPostHandler(mcpCtx), log));
140
142
  app.get("/mcp", asyncHandler(mcpGetDeleteHandler(transports, agentHub), log));
141
143
  app.delete("/mcp", asyncHandler(mcpGetDeleteHandler(transports, agentHub), log));
142
- const port = getServerPort();
143
- await killExistingProcess(port, log);
144
- app.listen(port, () => {
144
+ const server = app.listen(port, () => {
145
145
  log.info("Server listening", { port });
146
146
  });
147
+ // [SERVER-PORT-CONFLICT] Never crash unhandled on a busy port — step aside.
148
+ server.on("error", (err) => { handleListenError(err, port, log); });
147
149
  // Keep event loop alive
148
150
  const KEEP_ALIVE_INTERVAL_MS = 60000;
149
151
  setInterval(() => { }, KEEP_ALIVE_INTERVAL_MS);
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../bin/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../bin/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type Result } from "too-many-cooks-core";
2
+ /** Shape of the persisted lock file. [SERVER-LOCKFILE] */
3
+ export type ServerLock = {
4
+ readonly pid: number;
5
+ readonly port: number;
6
+ readonly startedAt: number;
7
+ };
8
+ /** Outcome of trying to claim the folder. */
9
+ export type LockOutcome = {
10
+ readonly kind: "acquired";
11
+ readonly path: string;
12
+ } | {
13
+ readonly kind: "busy";
14
+ readonly path: string;
15
+ readonly existing: ServerLock;
16
+ };
17
+ /**
18
+ * Resolve the lock file path for a workspace folder. Reuses core's database-path
19
+ * logic so the lock always sits next to `data.db` in `.too_many_cooks/`.
20
+ * [SERVER-STATE-ISOLATION]
21
+ */
22
+ export declare const resolveLockPath: (workspaceFolder: string) => string;
23
+ /** Read the `code` field off an unknown thrown value without a type assertion. */
24
+ export declare const errorCode: (e: unknown) => string | undefined;
25
+ /**
26
+ * Try to claim this workspace folder for the current process. Returns `busy` if a
27
+ * LIVE Too Many Cooks process already holds the lock; otherwise overwrites any
28
+ * stale lock (left by a crash / `kill -9`) and returns `acquired`.
29
+ * [SERVER-SINGLE-INSTANCE]
30
+ */
31
+ export declare const acquireServerLock: (lockPath: string, port: number, startedAt: number) => Result<LockOutcome, string>;
32
+ /** Remove the lock on shutdown — but only if it still records OUR pid. [SERVER-LOCKFILE] */
33
+ export declare const releaseServerLock: (lockPath: string) => void;
34
+ //# sourceMappingURL=server_lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server_lock.d.ts","sourceRoot":"","sources":["../../bin/server_lock.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,KAAK,MAAM,EAAiC,MAAM,qBAAqB,CAAC;AAKjF,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,CAAC;AAEpF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,CAAC,eAAe,EAAE,MAAM,KAAK,MACuB,CAAC;AAEnF,kFAAkF;AAClF,eAAO,MAAM,SAAS,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,SAGlC,CAAC;AAkDhB;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAC9B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,KACd,MAAM,CAAC,WAAW,EAAE,MAAM,CAU9B,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,iBAAiB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IASrD,CAAC"}
@@ -0,0 +1,104 @@
1
+ /// Per-folder single-instance lock for the Too Many Cooks server.
2
+ ///
3
+ /// Spec: docs/spec.md [SERVER-SINGLE-INSTANCE], [SERVER-LOCKFILE], [SERVER-NO-KILL].
4
+ ///
5
+ /// This lives in the LOCAL server package (not shared core) on purpose: the lock
6
+ /// is process-local (it uses `process.pid`/`process.kill`) and only the local
7
+ /// SQLite server needs it — the cloud backend is remote and stateless. Shipping
8
+ /// it here also means the published bin never depends on a newer core release.
9
+ ///
10
+ /// The lock is a JSON file in the workspace's `.too_many_cooks/` directory — the
11
+ /// same directory the database lives in (derived via core's `resolveDbPath`). It
12
+ /// answers "is Too Many Cooks already running in THIS folder?" without depending
13
+ /// on the port, because two instances in one folder would share one database.
14
+ import fs from "node:fs";
15
+ import path from "node:path";
16
+ import { error, resolveDbPath, success } from "too-many-cooks-core";
17
+ /** Lock file name inside the `.too_many_cooks` state directory. [SERVER-LOCKFILE] */
18
+ const LOCK_FILE_NAME = "server.lock";
19
+ /**
20
+ * Resolve the lock file path for a workspace folder. Reuses core's database-path
21
+ * logic so the lock always sits next to `data.db` in `.too_many_cooks/`.
22
+ * [SERVER-STATE-ISOLATION]
23
+ */
24
+ export const resolveLockPath = (workspaceFolder) => { return path.join(path.dirname(resolveDbPath(workspaceFolder)), LOCK_FILE_NAME); };
25
+ /** Read the `code` field off an unknown thrown value without a type assertion. */
26
+ export const errorCode = (e) => typeof e === "object" && e !== null && "code" in e && typeof e.code === "string"
27
+ ? e.code
28
+ : undefined;
29
+ /**
30
+ * Is a process with this PID currently alive? `process.kill(pid, 0)` sends NO
31
+ * signal — it only probes existence ([SERVER-NO-KILL]: we never terminate anything).
32
+ * `EPERM` means the process exists but is owned by someone else → still alive.
33
+ */
34
+ const isPidAlive = (pid) => {
35
+ try {
36
+ process.kill(pid, 0);
37
+ return true;
38
+ }
39
+ catch (e) {
40
+ return errorCode(e) === "EPERM";
41
+ }
42
+ };
43
+ /** Narrow an unknown parsed value to a ServerLock, or undefined if it is not one. */
44
+ const toServerLock = (value) => {
45
+ if (typeof value !== "object" || value === null) {
46
+ return undefined;
47
+ }
48
+ const pid = "pid" in value ? value.pid : undefined;
49
+ const port = "port" in value ? value.port : undefined;
50
+ const startedAt = "startedAt" in value ? value.startedAt : undefined;
51
+ if (typeof pid !== "number" || typeof port !== "number" || typeof startedAt !== "number") {
52
+ return undefined;
53
+ }
54
+ return { pid, port, startedAt };
55
+ };
56
+ /** Read an existing lock file, or undefined if missing/corrupt. */
57
+ const readLock = (lockPath) => {
58
+ if (!fs.existsSync(lockPath)) {
59
+ return undefined;
60
+ }
61
+ try {
62
+ return toServerLock(JSON.parse(fs.readFileSync(lockPath, "utf8")));
63
+ }
64
+ catch {
65
+ return undefined;
66
+ }
67
+ };
68
+ /** Write our own lock, creating the state directory if needed. */
69
+ const writeLock = (lockPath, lock) => {
70
+ try {
71
+ fs.mkdirSync(path.dirname(lockPath), { recursive: true });
72
+ fs.writeFileSync(lockPath, JSON.stringify(lock));
73
+ return success({ kind: "acquired", path: lockPath });
74
+ }
75
+ catch (e) {
76
+ return error(`Failed to write lock file ${lockPath}: ${String(e)}`);
77
+ }
78
+ };
79
+ /**
80
+ * Try to claim this workspace folder for the current process. Returns `busy` if a
81
+ * LIVE Too Many Cooks process already holds the lock; otherwise overwrites any
82
+ * stale lock (left by a crash / `kill -9`) and returns `acquired`.
83
+ * [SERVER-SINGLE-INSTANCE]
84
+ */
85
+ export const acquireServerLock = (lockPath, port, startedAt) => {
86
+ const existing = readLock(lockPath);
87
+ if (existing !== undefined && isPidAlive(existing.pid)) {
88
+ return success({ kind: "busy", path: lockPath, existing });
89
+ }
90
+ return writeLock(lockPath, { pid: process.pid, port, startedAt });
91
+ };
92
+ /** Remove the lock on shutdown — but only if it still records OUR pid. [SERVER-LOCKFILE] */
93
+ export const releaseServerLock = (lockPath) => {
94
+ const existing = readLock(lockPath);
95
+ if (existing?.pid === process.pid) {
96
+ try {
97
+ fs.rmSync(lockPath, { force: true });
98
+ }
99
+ catch {
100
+ // Best-effort cleanup: a missing lock on the way out is not an error.
101
+ }
102
+ }
103
+ };
104
+ //# sourceMappingURL=server_lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server_lock.js","sourceRoot":"","sources":["../../bin/server_lock.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-cloud.d.ts","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,cAAc,EAOf,MAAM,qBAAqB,CAAC;AA+Q7B,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,KAChB,cAaJ,CAAC"}
1
+ {"version":3,"file":"db-cloud.d.ts","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,cAAc,EASf,MAAM,qBAAqB,CAAC;AAwS7B,yEAAyE;AACzE,eAAO,MAAM,aAAa,EAAE,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,KAChB,cAaJ,CAAC"}
@@ -32,6 +32,7 @@ const EP_LIST_LOCKS = "listLocks";
32
32
  const EP_RENEW_LOCK = "renewLock";
33
33
  const EP_SEND_MESSAGE = "sendMessage";
34
34
  const EP_GET_MESSAGES = "getMessages";
35
+ const EP_GET_MESSAGE_OVERVIEW = "getMessageOverview";
35
36
  const EP_MARK_READ = "markRead";
36
37
  const EP_UPDATE_PLAN = "updatePlan";
37
38
  const EP_GET_PLAN = "getPlan";
@@ -71,6 +72,22 @@ const mappedNullable = (mapper) => (val) => val === null || val === undefined ?
71
72
  const parseApiResponse = (body, extract) => body.ok
72
73
  ? { ok: true, value: extract(body.value) }
73
74
  : { ok: false, error: extractDbError(body) };
75
+ /// [STATUS-BOUNDED] Issues #41/#42: parse a message header (no body) from JSON.
76
+ const messageHeaderFromJson = (raw) => ({
77
+ id: typeof raw.id === "string" ? raw.id : "",
78
+ fromAgent: typeof raw.from_agent === "string" ? raw.from_agent : "",
79
+ toAgent: typeof raw.to_agent === "string" ? raw.to_agent : "",
80
+ createdAt: typeof raw.created_at === "number" ? raw.created_at : 0,
81
+ readAt: typeof raw.read_at === "number" ? raw.read_at : undefined,
82
+ });
83
+ /// [STATUS-BOUNDED] Issues #41/#42: parse a bounded message overview from JSON.
84
+ const messageOverviewFromJson = (raw) => ({
85
+ total: typeof raw.total === "number" ? raw.total : 0,
86
+ unread: typeof raw.unread === "number" ? raw.unread : 0,
87
+ recent: Array.isArray(raw.recent)
88
+ ? raw.recent.map((item) => messageHeaderFromJson(isRecord(item) ? item : {}))
89
+ : [],
90
+ });
74
91
  /** Create an HTTP API caller bound to a specific endpoint. */
75
92
  const createApiCaller = (apiUrl, apiKey, workspaceId) => async (method, args) => {
76
93
  const response = await fetch(`${apiUrl}/${method}`, {
@@ -111,6 +128,7 @@ const buildLockMethods = (call) => ({
111
128
  const buildMessageMethods = (call) => ({
112
129
  sendMessage: async (fromAgent, fromKey, toAgent, content) => parseApiResponse(await call(EP_SEND_MESSAGE, { fromAgent, fromKey, toAgent, content }), extractString),
113
130
  getMessages: async (agentName, agentKey, options) => parseApiResponse(await call(EP_GET_MESSAGES, { agentName, agentKey, unreadOnly: options?.unreadOnly }), mappedArray(messageFromJson)),
131
+ getMessageOverview: async (agentName, limit) => parseApiResponse(await call(EP_GET_MESSAGE_OVERVIEW, { agentName, limit }), mapped(messageOverviewFromJson)),
114
132
  markRead: async (messageId, agentName, agentKey) => parseApiResponse(await call(EP_MARK_READ, { messageId, agentName, agentKey }), extractVoid),
115
133
  listAllMessages: async () => parseApiResponse(await call(EP_LIST_ALL_MESSAGES, {}), mappedArray(messageFromJson)),
116
134
  });
@@ -1 +1 @@
1
- {"version":3,"file":"db-cloud.js","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-cloud.js","sourceRoot":"","sources":["../../src/db-cloud.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-sqlite.d.ts","sourceRoot":"","sources":["../../src/db-sqlite.ts"],"names":[],"mappings":"AAUA,OAAO,EAYL,KAAK,MAAM,EAEX,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAWpB,MAAM,qBAAqB,CAAC;AAyE7B,kDAAkD;AAClD,eAAO,MAAM,QAAQ,EAAE,CACrB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC,cAAc,EAAE,MAAM,CAkBjC,CAAC"}
1
+ {"version":3,"file":"db-sqlite.d.ts","sourceRoot":"","sources":["../../src/db-sqlite.ts"],"names":[],"mappings":"AAUA,OAAO,EAYL,KAAK,MAAM,EAIX,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EAWpB,MAAM,qBAAqB,CAAC;AAyE7B,kDAAkD;AAClD,eAAO,MAAM,QAAQ,EAAE,CACrB,MAAM,EAAE,sBAAsB,EAC9B,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,KACtB,MAAM,CAAC,cAAc,EAAE,MAAM,CAkBjC,CAAC"}
@@ -521,6 +521,56 @@ const listAllMessages = (db, log) => {
521
521
  return error({ code: ERR_DATABASE, message: String(e) });
522
522
  }
523
523
  };
524
+ /// [STATUS-BOUNDED] Issues #41/#42: columns for a message header — never `content`.
525
+ const MESSAGE_HEADER_COLUMNS = "id, from_agent, to_agent, created_at, read_at";
526
+ /// [STATUS-BOUNDED] Predicate: every message visible to a named caller (own
527
+ /// inbox, own sent, and broadcasts). Params: [agentName, agentName, '*'].
528
+ const VISIBLE_TO_AGENT_WHERE = "to_agent = ? OR from_agent = ? OR to_agent = ?";
529
+ /// [STATUS-BOUNDED] Predicate: a named caller's UNREAD inbox — mirrors the
530
+ /// getMessages unreadOnly query. Params: [agentName, '*', agentName].
531
+ const UNREAD_FOR_AGENT_WHERE = "(to_agent = ? AND read_at IS NULL) OR (to_agent = ? AND NOT EXISTS " +
532
+ "(SELECT 1 FROM message_reads mr WHERE mr.message_id = messages.id AND mr.agent_name = ?))";
533
+ /** Run a COUNT(*) query returning column `c` and narrow it to a number. */
534
+ const countRows = (db, sql, params) => {
535
+ const row = toRow(db.prepare(sql).get(...params));
536
+ return typeof row?.c === "number" ? row.c : 0;
537
+ };
538
+ /** Map a SQLite row to a MessageHeader (no body). */
539
+ const messageHeaderFromRow = (row) => ({
540
+ id: typeof row.id === "string" ? row.id : "",
541
+ fromAgent: typeof row.from_agent === "string" ? row.from_agent : "",
542
+ toAgent: typeof row.to_agent === "string" ? row.to_agent : "",
543
+ createdAt: typeof row.created_at === "number" ? row.created_at : 0,
544
+ readAt: typeof row.read_at === "number" ? row.read_at : undefined,
545
+ });
546
+ /// [STATUS-BOUNDED] Overview for a named caller: total visible, unread inbox
547
+ /// count, and a bounded slice of recent unread inbox headers.
548
+ const agentMessageOverview = (db, agentName, limit) => {
549
+ const total = countRows(db, `SELECT COUNT(*) AS c FROM messages WHERE ${VISIBLE_TO_AGENT_WHERE}`, [agentName, agentName, BROADCAST_RECIPIENT]);
550
+ const unread = countRows(db, `SELECT COUNT(*) AS c FROM messages WHERE ${UNREAD_FOR_AGENT_WHERE}`, [agentName, BROADCAST_RECIPIENT, agentName]);
551
+ const rows = toRows(db.prepare(`SELECT ${MESSAGE_HEADER_COLUMNS} FROM messages WHERE ${UNREAD_FOR_AGENT_WHERE} ORDER BY created_at DESC LIMIT ?`).all(agentName, BROADCAST_RECIPIENT, agentName, limit));
552
+ return { total, unread, recent: rows.map(messageHeaderFromRow) };
553
+ };
554
+ /// [STATUS-BOUNDED] Overview for an unresolved caller: broadcasts only. Reads
555
+ /// cannot be tracked without an identity, so every broadcast counts as unread.
556
+ const broadcastMessageOverview = (db, limit) => {
557
+ const total = countRows(db, "SELECT COUNT(*) AS c FROM messages WHERE to_agent = ?", [BROADCAST_RECIPIENT]);
558
+ const rows = toRows(db.prepare(`SELECT ${MESSAGE_HEADER_COLUMNS} FROM messages WHERE to_agent = ? ORDER BY created_at DESC LIMIT ?`).all(BROADCAST_RECIPIENT, limit));
559
+ return { total, unread: total, recent: rows.map(messageHeaderFromRow) };
560
+ };
561
+ /// [STATUS-BOUNDED] Issues #41/#42: bounded, SQL-filtered inbox overview. No
562
+ /// auto-mark-read side effect — `status` is a read-only overview.
563
+ const getMessageOverview = (db, log, agentName, limit) => {
564
+ log.trace(`Building message overview (caller: ${agentName ?? "anonymous"})`);
565
+ try {
566
+ return success(agentName === null
567
+ ? broadcastMessageOverview(db, limit)
568
+ : agentMessageOverview(db, agentName, limit));
569
+ }
570
+ catch (e) {
571
+ return error({ code: ERR_DATABASE, message: String(e) });
572
+ }
573
+ };
524
574
  /** Set agent active/inactive. */
525
575
  const setActive = (db, log, agentName, active) => {
526
576
  log.debug(`Setting agent ${agentName} active=${String(active)}`);
@@ -686,6 +736,7 @@ const createLockOps = (db, log) => ({
686
736
  /** Build message operations. */
687
737
  const createMessageOps = (db, log, config) => ({
688
738
  getMessages: async (name, key, options) => await Promise.resolve(getMessages(db, log, name, key, options?.unreadOnly ?? true)),
739
+ getMessageOverview: async (name, limit) => await Promise.resolve(getMessageOverview(db, log, name, limit)),
689
740
  listAllMessages: async () => await Promise.resolve(listAllMessages(db, log)),
690
741
  markRead: async (msgId, name, key) => await Promise.resolve(markRead(db, log, msgId, name, key)),
691
742
  sendMessage: async (from, key, to, content) => await Promise.resolve(sendMessage(db, log, from, key, to, content, config.maxMessageLength)),