agent-inbox 0.1.9 → 0.2.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/dist/cli.d.ts ADDED
@@ -0,0 +1,20 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point for agent-inbox.
4
+ *
5
+ * Usage:
6
+ * agent-inbox # IPC server mode (default)
7
+ * agent-inbox mcp # MCP stdio server (standalone or proxy if INBOX_SOCKET_PATH set)
8
+ * agent-inbox mcp-proxy # MCP proxy to existing IPC socket
9
+ *
10
+ * Environment variables:
11
+ * INBOX_SOCKET_PATH — IPC socket path (also triggers proxy mode for `mcp`)
12
+ * INBOX_SQLITE_PATH — SQLite DB path (default: in-memory)
13
+ * INBOX_SCOPE — Message scope (default: "default")
14
+ * INBOX_AGENT_ID — Agent ID for proxy mode (default: "anonymous")
15
+ * INBOX_HTTP_PORT — HTTP port for JSON-RPC (0 = disabled)
16
+ * INBOX_MAP_ENABLED — Enable MAP transport ("true")
17
+ * INBOX_MAP_SERVER — MAP server URL
18
+ */
19
+ export {};
20
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;GAgBG"}
package/dist/cli.js ADDED
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI entry point for agent-inbox.
4
+ *
5
+ * Usage:
6
+ * agent-inbox # IPC server mode (default)
7
+ * agent-inbox mcp # MCP stdio server (standalone or proxy if INBOX_SOCKET_PATH set)
8
+ * agent-inbox mcp-proxy # MCP proxy to existing IPC socket
9
+ *
10
+ * Environment variables:
11
+ * INBOX_SOCKET_PATH — IPC socket path (also triggers proxy mode for `mcp`)
12
+ * INBOX_SQLITE_PATH — SQLite DB path (default: in-memory)
13
+ * INBOX_SCOPE — Message scope (default: "default")
14
+ * INBOX_AGENT_ID — Agent ID for proxy mode (default: "anonymous")
15
+ * INBOX_HTTP_PORT — HTTP port for JSON-RPC (0 = disabled)
16
+ * INBOX_MAP_ENABLED — Enable MAP transport ("true")
17
+ * INBOX_MAP_SERVER — MAP server URL
18
+ */
19
+ import { EventEmitter } from "node:events";
20
+ import * as path from "node:path";
21
+ import * as os from "node:os";
22
+ import { InMemoryStorage } from "./storage/memory.js";
23
+ import { SqliteStorage } from "./storage/sqlite.js";
24
+ import { MessageRouter } from "./router/message-router.js";
25
+ import { TraceabilityLayer } from "./traceability/traceability.js";
26
+ import { InboxMcpServer } from "./mcp/mcp-server.js";
27
+ function defaultSocketPath() {
28
+ return path.join(os.homedir(), ".claude", "agent-inbox", "inbox.sock");
29
+ }
30
+ const mode = process.argv[2] ?? "mcp";
31
+ if (mode === "mcp-proxy" || (mode === "mcp" && process.env.INBOX_SOCKET_PATH)) {
32
+ // MCP proxy mode — forward tool calls to an existing inbox IPC socket
33
+ const { InboxMcpProxy } = await import("./mcp/mcp-proxy.js");
34
+ const socketPath = process.env.INBOX_SOCKET_PATH ?? defaultSocketPath();
35
+ const agentId = process.env.INBOX_AGENT_ID ?? "anonymous";
36
+ const scope = process.env.INBOX_SCOPE ?? "default";
37
+ console.error(`[agent-inbox] MCP proxy mode → ${socketPath} (agent: ${agentId})`);
38
+ const proxy = new InboxMcpProxy(socketPath, agentId, scope);
39
+ proxy.start().catch((err) => {
40
+ console.error("MCP proxy failed:", err);
41
+ process.exit(1);
42
+ });
43
+ }
44
+ else if (mode === "mcp") {
45
+ // MCP standalone mode — stdio transport, own storage
46
+ const scope = process.env.INBOX_SCOPE ?? "default";
47
+ const sqlitePath = process.env.INBOX_SQLITE_PATH;
48
+ const storage = sqlitePath
49
+ ? new SqliteStorage({ path: sqlitePath })
50
+ : new InMemoryStorage();
51
+ const events = new EventEmitter();
52
+ const router = new MessageRouter(storage, events, scope);
53
+ const _traceability = new TraceabilityLayer(storage, events);
54
+ const mcpServer = new InboxMcpServer(router, storage, scope);
55
+ console.error("[agent-inbox] MCP standalone mode (stdio)");
56
+ mcpServer.start().catch((err) => {
57
+ console.error("MCP server failed:", err);
58
+ process.exit(1);
59
+ });
60
+ }
61
+ else if (mode === "ipc") {
62
+ const { createAgentInbox } = await import("./index.js");
63
+ const httpPort = process.env.INBOX_HTTP_PORT
64
+ ? parseInt(process.env.INBOX_HTTP_PORT, 10)
65
+ : 0;
66
+ const sqlitePath = process.env.INBOX_SQLITE_PATH;
67
+ createAgentInbox({ httpPort, sqlitePath })
68
+ .then((inbox) => {
69
+ console.error(`[agent-inbox] IPC server listening on ${process.env.INBOX_SOCKET_PATH ?? defaultSocketPath()}`);
70
+ process.on("SIGINT", async () => {
71
+ await inbox.stop();
72
+ process.exit(0);
73
+ });
74
+ process.on("SIGTERM", async () => {
75
+ await inbox.stop();
76
+ process.exit(0);
77
+ });
78
+ })
79
+ .catch((err) => {
80
+ console.error("Failed to start Agent Inbox:", err);
81
+ process.exit(1);
82
+ });
83
+ }
84
+ else {
85
+ console.error(`Unknown mode: ${mode}`);
86
+ console.error("Usage: agent-inbox [mcp|mcp-proxy|ipc]");
87
+ process.exit(1);
88
+ }
89
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "agent-inbox",
3
- "version": "0.1.9",
3
+ "version": "0.2.0",
4
4
  "description": "Agent Inbox — message routing, traceability, and MCP tools for multi-agent systems",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "agent-inbox": "dist/cli.js"
10
+ },
8
11
  "scripts": {
9
12
  "build": "tsc",
10
13
  "dev": "tsc --watch",
package/src/cli.ts ADDED
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * CLI entry point for agent-inbox.
5
+ *
6
+ * Usage:
7
+ * agent-inbox # IPC server mode (default)
8
+ * agent-inbox mcp # MCP stdio server (standalone or proxy if INBOX_SOCKET_PATH set)
9
+ * agent-inbox mcp-proxy # MCP proxy to existing IPC socket
10
+ *
11
+ * Environment variables:
12
+ * INBOX_SOCKET_PATH — IPC socket path (also triggers proxy mode for `mcp`)
13
+ * INBOX_SQLITE_PATH — SQLite DB path (default: in-memory)
14
+ * INBOX_SCOPE — Message scope (default: "default")
15
+ * INBOX_AGENT_ID — Agent ID for proxy mode (default: "anonymous")
16
+ * INBOX_HTTP_PORT — HTTP port for JSON-RPC (0 = disabled)
17
+ * INBOX_MAP_ENABLED — Enable MAP transport ("true")
18
+ * INBOX_MAP_SERVER — MAP server URL
19
+ */
20
+
21
+ import { EventEmitter } from "node:events";
22
+ import * as path from "node:path";
23
+ import * as os from "node:os";
24
+ import { InMemoryStorage } from "./storage/memory.js";
25
+ import { SqliteStorage } from "./storage/sqlite.js";
26
+ import { MessageRouter } from "./router/message-router.js";
27
+ import { TraceabilityLayer } from "./traceability/traceability.js";
28
+ import { InboxMcpServer } from "./mcp/mcp-server.js";
29
+ import type { Storage } from "./storage/interface.js";
30
+
31
+ function defaultSocketPath(): string {
32
+ return path.join(os.homedir(), ".claude", "agent-inbox", "inbox.sock");
33
+ }
34
+
35
+ const mode = process.argv[2] ?? "mcp";
36
+
37
+ if (mode === "mcp-proxy" || (mode === "mcp" && process.env.INBOX_SOCKET_PATH)) {
38
+ // MCP proxy mode — forward tool calls to an existing inbox IPC socket
39
+ const { InboxMcpProxy } = await import("./mcp/mcp-proxy.js");
40
+ const socketPath = process.env.INBOX_SOCKET_PATH ?? defaultSocketPath();
41
+ const agentId = process.env.INBOX_AGENT_ID ?? "anonymous";
42
+ const scope = process.env.INBOX_SCOPE ?? "default";
43
+ console.error(`[agent-inbox] MCP proxy mode → ${socketPath} (agent: ${agentId})`);
44
+ const proxy = new InboxMcpProxy(socketPath, agentId, scope);
45
+ proxy.start().catch((err) => {
46
+ console.error("MCP proxy failed:", err);
47
+ process.exit(1);
48
+ });
49
+ } else if (mode === "mcp") {
50
+ // MCP standalone mode — stdio transport, own storage
51
+ const scope = process.env.INBOX_SCOPE ?? "default";
52
+ const sqlitePath = process.env.INBOX_SQLITE_PATH;
53
+ const storage: Storage = sqlitePath
54
+ ? new SqliteStorage({ path: sqlitePath })
55
+ : new InMemoryStorage();
56
+ const events = new EventEmitter();
57
+ const router = new MessageRouter(storage, events, scope);
58
+ const _traceability = new TraceabilityLayer(storage, events);
59
+ const mcpServer = new InboxMcpServer(router, storage, scope);
60
+ console.error("[agent-inbox] MCP standalone mode (stdio)");
61
+ mcpServer.start().catch((err) => {
62
+ console.error("MCP server failed:", err);
63
+ process.exit(1);
64
+ });
65
+ } else if (mode === "ipc") {
66
+ const { createAgentInbox } = await import("./index.js");
67
+ const httpPort = process.env.INBOX_HTTP_PORT
68
+ ? parseInt(process.env.INBOX_HTTP_PORT, 10)
69
+ : 0;
70
+ const sqlitePath = process.env.INBOX_SQLITE_PATH;
71
+
72
+ createAgentInbox({ httpPort, sqlitePath })
73
+ .then((inbox) => {
74
+ console.error(
75
+ `[agent-inbox] IPC server listening on ${process.env.INBOX_SOCKET_PATH ?? defaultSocketPath()}`
76
+ );
77
+ process.on("SIGINT", async () => {
78
+ await inbox.stop();
79
+ process.exit(0);
80
+ });
81
+ process.on("SIGTERM", async () => {
82
+ await inbox.stop();
83
+ process.exit(0);
84
+ });
85
+ })
86
+ .catch((err) => {
87
+ console.error("Failed to start Agent Inbox:", err);
88
+ process.exit(1);
89
+ });
90
+ } else {
91
+ console.error(`Unknown mode: ${mode}`);
92
+ console.error("Usage: agent-inbox [mcp|mcp-proxy|ipc]");
93
+ process.exit(1);
94
+ }