kitty-hive 0.2.0 → 0.3.1
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 +101 -12
- package/README.zh.md +101 -12
- package/channel.ts +1 -1
- package/dist/db.d.ts +28 -2
- package/dist/db.js +95 -14
- package/dist/db.js.map +1 -1
- package/dist/federation-heartbeat.d.ts +7 -0
- package/dist/federation-heartbeat.js +45 -0
- package/dist/federation-heartbeat.js.map +1 -0
- package/dist/federation-http.d.ts +5 -0
- package/dist/federation-http.js +129 -37
- package/dist/federation-http.js.map +1 -1
- package/dist/index.js +445 -65
- package/dist/index.js.map +1 -1
- package/dist/mcp/federation-tools.js +27 -13
- package/dist/mcp/federation-tools.js.map +1 -1
- package/dist/mcp/task-tools.js +6 -6
- package/dist/mcp/task-tools.js.map +1 -1
- package/dist/models.d.ts +6 -0
- package/dist/models.js.map +1 -1
- package/dist/server.js +19 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/dm.js +24 -6
- package/dist/tools/dm.js.map +1 -1
- package/dist/tools/task.d.ts +6 -1
- package/dist/tools/task.js +109 -12
- package/dist/tools/task.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -36,8 +36,8 @@ Set `HIVE_AGENT_NAME=<name>` (or `HIVE_AGENT_ID=<id>`) in the env to skip this a
|
|
|
36
36
|
# 1. Start server
|
|
37
37
|
npx kitty-hive serve
|
|
38
38
|
|
|
39
|
-
# 2.
|
|
40
|
-
npx kitty-hive init
|
|
39
|
+
# 2. Write MCP config for your IDE (pick one: cursor | vscode | antigravity)
|
|
40
|
+
npx kitty-hive init cursor
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## How It Works
|
|
@@ -182,38 +182,127 @@ created ──→ proposing ──→ approved ──→ in_progress ──→ c
|
|
|
182
182
|
|
|
183
183
|
## Federation
|
|
184
184
|
|
|
185
|
-
Connect
|
|
185
|
+
Connect two (or more) hive servers across machines so agents can DM and delegate tasks across them.
|
|
186
186
|
|
|
187
|
+
### Two-machine walkthrough (invite/accept — recommended)
|
|
188
|
+
|
|
189
|
+
Suppose you have **mac** (locally) and **win** (a second machine). Both have `kitty-hive serve` running and at least one registered agent.
|
|
190
|
+
|
|
191
|
+
**1. Name each node**
|
|
187
192
|
```bash
|
|
188
|
-
#
|
|
193
|
+
# mac
|
|
189
194
|
kitty-hive config set name marvin
|
|
195
|
+
# win
|
|
196
|
+
kitty-hive config set name win-laptop
|
|
197
|
+
```
|
|
190
198
|
|
|
191
|
-
|
|
199
|
+
**2. Make each side reachable.** Easiest with no public IP — Cloudflare Tunnel:
|
|
200
|
+
```bash
|
|
192
201
|
cloudflared tunnel --url http://localhost:4123
|
|
202
|
+
# → https://xxx-yyy-zzz.trycloudflare.com
|
|
203
|
+
```
|
|
204
|
+
On a LAN/VPN you can skip this and just use `http://<host>:4123/mcp`.
|
|
205
|
+
|
|
206
|
+
**3. Generate an invite on mac**
|
|
207
|
+
```bash
|
|
208
|
+
kitty-hive peer invite \
|
|
209
|
+
--as <mac-agent-id-to-expose> \
|
|
210
|
+
--url https://mac-tunnel.trycloudflare.com/mcp
|
|
211
|
+
# → prints a single token like:
|
|
212
|
+
# hive://eyJ2IjoxLCJuIjoibWFydmluIi...
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**4. Accept on win**
|
|
216
|
+
```bash
|
|
217
|
+
kitty-hive peer accept 'hive://eyJ2IjoxLCJuIjoibWFydmluIi...' \
|
|
218
|
+
--as <win-agent-id-to-expose> \
|
|
219
|
+
--url https://win-tunnel.trycloudflare.com/mcp
|
|
220
|
+
# Output:
|
|
221
|
+
# ✓ Decoded invite from "marvin"
|
|
222
|
+
# ✓ Added marvin as local peer
|
|
223
|
+
# ✓ Calling handshake on https://mac-tunnel.../mcp… ok (they added you as "win-laptop")
|
|
224
|
+
# ✓ Pinging marvin… ok (node="marvin")
|
|
225
|
+
# 🎉 Peer "marvin" connected.
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
That's it — both sides are peered. No manual secret copying, no second `peer add`.
|
|
193
229
|
|
|
194
|
-
|
|
195
|
-
|
|
230
|
+
**5. Verify**
|
|
231
|
+
```bash
|
|
232
|
+
kitty-hive status
|
|
233
|
+
# 🤝 Peers table should show STATUS=active and NODE=<remote-node-name>
|
|
234
|
+
```
|
|
196
235
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
236
|
+
<details>
|
|
237
|
+
<summary>Manual two-step alternative (if invite/accept can't reach back)</summary>
|
|
238
|
+
|
|
239
|
+
If the invitee can't HTTP back to the inviter (firewalled tunnel, etc.), use plain `peer add` on both sides with the same `--secret`:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# mac
|
|
243
|
+
kitty-hive peer add win https://win-tunnel.trycloudflare.com/mcp \
|
|
244
|
+
--secret <shared-secret> --expose <mac-agent-id>
|
|
245
|
+
|
|
246
|
+
# win
|
|
247
|
+
kitty-hive peer add marvin https://mac-tunnel.trycloudflare.com/mcp \
|
|
248
|
+
--secret <shared-secret> --expose <win-agent-id>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
The first `add` may print `failed: HTTP 401` because the other side hasn't added you yet — that's fine; the next 60s heartbeat will flip both to `active`.
|
|
252
|
+
|
|
253
|
+
</details>
|
|
254
|
+
|
|
255
|
+
### Using it from your agent
|
|
256
|
+
|
|
257
|
+
```js
|
|
258
|
+
hive-remote-agents({ peer: "win" })
|
|
259
|
+
// → list of agents win has exposed (cached 5 min; pass fresh:true to bypass)
|
|
260
|
+
|
|
261
|
+
hive-dm({ to: "<alice-id>@win", content: "hello from mac" })
|
|
262
|
+
hive-task({ to: "<alice-id>@win", title: "Review my PR" })
|
|
263
|
+
hive-check({ task_id: "<shadow-task-id>" }) // live progress synced from win
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Replying to an incoming federated DM **does not** need `@peer` — your local placeholder for the remote sender remembers its origin, so plain `hive-dm({ to: "<placeholder-id>", ... })` routes back automatically.
|
|
267
|
+
|
|
268
|
+
### Pitfalls
|
|
269
|
+
|
|
270
|
+
- `--expose` lists **the agent the *peer* should be allowed to reach** (i.e. agents on YOUR side). Anything not listed is invisible to that peer.
|
|
271
|
+
- Both sides must use the exact same `--secret`.
|
|
272
|
+
- `--expose` accepts agent ids or unambiguous display names; ids are safer.
|
|
273
|
+
- Peer status only flips to `active` on a successful round-trip ping. If it stays `inactive`, check the URL is reachable from the other side and the secret matches.
|
|
274
|
+
|
|
275
|
+
### How it works
|
|
276
|
+
|
|
277
|
+
- **Identity:** every remote agent gets a local placeholder keyed by `(peer_name, remote_agent_id)`. Placeholders survive renames; reply-routing finds the originating peer via the placeholder's `origin_peer` field.
|
|
278
|
+
- **Tasks:** delegating to `<id>@peer` creates a local *shadow task* on the originator and a real task on the replica. Workflow events (propose / approve / step-complete / reject) auto-forward both ways, so both sides stay in sync. The originator can `hive-check` to see live progress.
|
|
279
|
+
- **Heartbeat:** `peer add` immediately pings; the server then pings every 60s to keep `peers.status` accurate. `kitty-hive status` shows it.
|
|
280
|
+
- **Files:** transferred files live under `~/.kitty-hive/files/<id>/` and auto-expire after 7 days. `kitty-hive files clean [--days N]` runs the sweeper manually.
|
|
281
|
+
|
|
282
|
+
**Verify locally** with the included e2e test (boots two hives in temp dirs, runs the full flow):
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
npm run test:federation
|
|
200
286
|
```
|
|
201
287
|
|
|
202
288
|
## CLI
|
|
203
289
|
|
|
204
290
|
```
|
|
205
291
|
kitty-hive serve [--port 4123] [--db path] [-v|-q] Start the server
|
|
206
|
-
kitty-hive init [--port 4123]
|
|
292
|
+
kitty-hive init <tool> [--port 4123] Write MCP config (claude|cursor|vscode|antigravity|all)
|
|
207
293
|
kitty-hive status [--port 4123] Server, agent & team status
|
|
208
294
|
kitty-hive agent list List agents
|
|
209
295
|
kitty-hive agent rename <old> <new> Rename an agent
|
|
210
296
|
kitty-hive agent remove <name-or-id> Remove an agent
|
|
211
|
-
kitty-hive peer
|
|
297
|
+
kitty-hive peer invite --as <agent> [--url url] Create an invite token (recommended)
|
|
298
|
+
kitty-hive peer accept <token> --as <agent> [--url url] Accept an invite token (auto-handshakes)
|
|
299
|
+
kitty-hive peer add <name> <url> [--expose a,b] [--secret s] Add a peer manually
|
|
212
300
|
kitty-hive peer list List peers
|
|
213
301
|
kitty-hive peer remove <name> Remove a peer
|
|
214
302
|
kitty-hive peer expose <name> --add/--remove <agent> Manage exposed agents
|
|
215
303
|
kitty-hive config set <key> <value> Set config (e.g. name)
|
|
216
304
|
kitty-hive db clear [--db path] Clear the database
|
|
305
|
+
kitty-hive files clean [--days 7] Remove old federation transfer files
|
|
217
306
|
```
|
|
218
307
|
|
|
219
308
|
## Environment
|
package/README.zh.md
CHANGED
|
@@ -36,8 +36,8 @@ claude --dangerously-load-development-channels plugin:kitty-hive@seangx
|
|
|
36
36
|
# 1. 启动 server
|
|
37
37
|
npx kitty-hive serve
|
|
38
38
|
|
|
39
|
-
# 2.
|
|
40
|
-
npx kitty-hive init
|
|
39
|
+
# 2. 写入 IDE 的 MCP 配置(任选:cursor | vscode | antigravity)
|
|
40
|
+
npx kitty-hive init cursor
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## 工作原理
|
|
@@ -182,38 +182,127 @@ created ──→ proposing ──→ approved ──→ in_progress ──→ c
|
|
|
182
182
|
|
|
183
183
|
## 联邦
|
|
184
184
|
|
|
185
|
-
|
|
185
|
+
让两台(或多台)机器上的 hive 互通,agent 可跨机器 DM、委派任务。
|
|
186
186
|
|
|
187
|
+
### 两台机器配置 walkthrough(invite/accept —— 推荐)
|
|
188
|
+
|
|
189
|
+
假设有 **mac**(本地)和 **win**(另一台),两边都跑了 `kitty-hive serve` 并已注册 agent。
|
|
190
|
+
|
|
191
|
+
**1. 各自起节点名**
|
|
187
192
|
```bash
|
|
188
|
-
#
|
|
193
|
+
# mac
|
|
189
194
|
kitty-hive config set name marvin
|
|
195
|
+
# win
|
|
196
|
+
kitty-hive config set name win-laptop
|
|
197
|
+
```
|
|
190
198
|
|
|
191
|
-
|
|
199
|
+
**2. 让对方能访问到你**。最简单:cloudflared,无需公网 IP:
|
|
200
|
+
```bash
|
|
192
201
|
cloudflared tunnel --url http://localhost:4123
|
|
202
|
+
# → 拿到 https://xxx-yyy-zzz.trycloudflare.com
|
|
203
|
+
```
|
|
204
|
+
内网/VPN 直接 `http://<host>:4123/mcp` 即可。
|
|
205
|
+
|
|
206
|
+
**3. 在 mac 生成 invite**
|
|
207
|
+
```bash
|
|
208
|
+
kitty-hive peer invite \
|
|
209
|
+
--as <mac-上要暴露的-agent-id> \
|
|
210
|
+
--url https://mac-tunnel.trycloudflare.com/mcp
|
|
211
|
+
# → 输出一个 token:
|
|
212
|
+
# hive://eyJ2IjoxLCJuIjoibWFydmluIi...
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**4. 在 win 上 accept**
|
|
216
|
+
```bash
|
|
217
|
+
kitty-hive peer accept 'hive://eyJ2IjoxLCJuIjoibWFydmluIi...' \
|
|
218
|
+
--as <win-上要暴露的-agent-id> \
|
|
219
|
+
--url https://win-tunnel.trycloudflare.com/mcp
|
|
220
|
+
# 输出:
|
|
221
|
+
# ✓ Decoded invite from "marvin"
|
|
222
|
+
# ✓ Added marvin as local peer
|
|
223
|
+
# ✓ Calling handshake on https://mac-tunnel.../mcp… ok (they added you as "win-laptop")
|
|
224
|
+
# ✓ Pinging marvin… ok (node="marvin")
|
|
225
|
+
# 🎉 Peer "marvin" connected.
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
完事 —— 双向 peer 已建立。不用手动复制密钥,不用第二次 `peer add`。
|
|
193
229
|
|
|
194
|
-
|
|
195
|
-
|
|
230
|
+
**5. 验证**
|
|
231
|
+
```bash
|
|
232
|
+
kitty-hive status
|
|
233
|
+
# 🤝 Peers 表里 STATUS=active、NODE=<对方节点名> 即成功
|
|
234
|
+
```
|
|
196
235
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
236
|
+
<details>
|
|
237
|
+
<summary>手动两步法(invite/accept 回不到对面时备选)</summary>
|
|
238
|
+
|
|
239
|
+
如果接收方没法 HTTP 回连发起方(特殊防火墙等),用 `peer add` + 共享密钥手动加:
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
# mac
|
|
243
|
+
kitty-hive peer add win https://win-tunnel.trycloudflare.com/mcp \
|
|
244
|
+
--secret <共享密钥> --expose <mac-agent-id>
|
|
245
|
+
|
|
246
|
+
# win
|
|
247
|
+
kitty-hive peer add marvin https://mac-tunnel.trycloudflare.com/mcp \
|
|
248
|
+
--secret <共享密钥> --expose <win-agent-id>
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
第一次 add 时另一边还没加你的 peer 记录,会显示 `failed: HTTP 401` —— 没事,下一次 60s 心跳两边都会转 `active`。
|
|
252
|
+
|
|
253
|
+
</details>
|
|
254
|
+
|
|
255
|
+
### 在 agent 里用
|
|
256
|
+
|
|
257
|
+
```js
|
|
258
|
+
hive-remote-agents({ peer: "win" })
|
|
259
|
+
// → win 暴露的 agent 列表(缓存 5 分钟;传 fresh:true 强制刷新)
|
|
260
|
+
|
|
261
|
+
hive-dm({ to: "<alice-id>@win", content: "hello from mac" })
|
|
262
|
+
hive-task({ to: "<alice-id>@win", title: "Review my PR" })
|
|
263
|
+
hive-check({ task_id: "<影子任务-id>" }) // 实时同步对面进度
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
回复对方发来的 DM **不需要再带 `@peer`**——本地 placeholder 记得自己来自哪个 peer,直接 `hive-dm({ to: "<placeholder-id>", ... })` 自动反向路由。
|
|
267
|
+
|
|
268
|
+
### 避坑
|
|
269
|
+
|
|
270
|
+
- `--expose` 填的是**你这边、允许被对方联系的 agent**;不在列表里的对方完全看不到。
|
|
271
|
+
- 两边的 `--secret` 必须一字不差。
|
|
272
|
+
- `--expose` 接受 agent id 或唯一的 display_name;id 更稳。
|
|
273
|
+
- peer status 只有 ping 成功才转 `active`;一直 `inactive`,检查对方 URL 可达 + 密钥一致。
|
|
274
|
+
|
|
275
|
+
### 工作机制
|
|
276
|
+
|
|
277
|
+
- **身份:** 每个远端 agent 在本地生成一个 placeholder,按 `(peer_name, remote_agent_id)` 唯一定位。对方 rename 不会断关联;回复路径靠 placeholder 上的 `origin_peer` 字段反向路由。
|
|
278
|
+
- **任务:** 委派给 `<id>@peer` 时,发起方建一个**影子任务**,replica 端建真任务。propose / approve / step-complete / reject 等事件双向自动转发,两边状态同步。发起方用 `hive-check` 实时看进度。
|
|
279
|
+
- **心跳:** `peer add` 当场 ping;server 每 60s 周期 ping 维护 `peers.status`。`kitty-hive status` 直接显示。
|
|
280
|
+
- **文件:** 传输文件落在 `~/.kitty-hive/files/<id>/`,7 天后自动清理。`kitty-hive files clean [--days N]` 可手动跑。
|
|
281
|
+
|
|
282
|
+
**本地端到端测试**(启两个临时 hive,跑完整联邦流程):
|
|
283
|
+
|
|
284
|
+
```bash
|
|
285
|
+
npm run test:federation
|
|
200
286
|
```
|
|
201
287
|
|
|
202
288
|
## 命令行
|
|
203
289
|
|
|
204
290
|
```
|
|
205
291
|
kitty-hive serve [--port 4123] [--db path] [-v|-q] 启动服务
|
|
206
|
-
kitty-hive init [--port 4123]
|
|
292
|
+
kitty-hive init <tool> [--port 4123] 写入 MCP 配置(claude|cursor|vscode|antigravity|all)
|
|
207
293
|
kitty-hive status [--port 4123] 服务/agent/team 状态
|
|
208
294
|
kitty-hive agent list 列出 agent
|
|
209
295
|
kitty-hive agent rename <old> <new> 重命名 agent
|
|
210
296
|
kitty-hive agent remove <name-or-id> 删除 agent
|
|
211
|
-
kitty-hive peer
|
|
297
|
+
kitty-hive peer invite --as <agent> [--url url] 生成 invite token(推荐)
|
|
298
|
+
kitty-hive peer accept <token> --as <agent> [--url url] 接受 invite,自动握手
|
|
299
|
+
kitty-hive peer add <name> <url> [--expose a,b] [--secret s] 手动加 peer
|
|
212
300
|
kitty-hive peer list 列出 peer
|
|
213
301
|
kitty-hive peer remove <name> 删除 peer
|
|
214
302
|
kitty-hive peer expose <name> --add/--remove <agent> 管理 peer 暴露的 agent
|
|
215
303
|
kitty-hive config set <key> <value> 设置配置(如 name)
|
|
216
304
|
kitty-hive db clear [--db path] 清空数据库
|
|
305
|
+
kitty-hive files clean [--days 7] 清理过期联邦传输文件
|
|
217
306
|
```
|
|
218
307
|
|
|
219
308
|
## 环境变量
|
package/channel.ts
CHANGED
|
@@ -105,7 +105,7 @@ async function registerAgent(opts: { id?: string; name?: string }) {
|
|
|
105
105
|
// --- MCP server (stdio, plugin-side) ---
|
|
106
106
|
|
|
107
107
|
const mcp = new Server(
|
|
108
|
-
{ name: 'hive-channel', version: '0.
|
|
108
|
+
{ name: 'hive-channel', version: '0.3.1' },
|
|
109
109
|
{
|
|
110
110
|
capabilities: { experimental: { 'claude/channel': {} }, tools: {} },
|
|
111
111
|
instructions: [
|
package/dist/db.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ import Database from 'better-sqlite3';
|
|
|
2
2
|
import type { Agent, Team, TeamMember, TeamEvent, TeamEventType, DMMessage, Task, TaskEvent, TaskEventType } from './models.js';
|
|
3
3
|
export declare function initDB(dbPath?: string): Database.Database;
|
|
4
4
|
export declare function getDB(): Database.Database;
|
|
5
|
-
export declare function createAgent(displayName: string, tool: string, roles: string, expertise: string): Agent;
|
|
5
|
+
export declare function createAgent(displayName: string, tool: string, roles: string, expertise: string, originPeer?: string, remoteId?: string): Agent;
|
|
6
|
+
export declare function ensureRemoteAgentByRemoteId(remoteId: string, peerName: string, displayName: string): Agent;
|
|
6
7
|
export declare function getAgentByToken(token: string): Agent | undefined;
|
|
7
8
|
export declare function getAgentById(id: string): Agent | undefined;
|
|
8
9
|
export declare function getAgentsByName(name: string): Agent[];
|
|
@@ -36,7 +37,17 @@ export declare function getLatestTeamEvents(teamId: string, limit?: number): Tea
|
|
|
36
37
|
export declare function appendDM(fromAgentId: string, toAgentId: string, content: string): DMMessage;
|
|
37
38
|
export declare function getMaxIncomingDMId(toAgentId: string, fromAgentId: string): number;
|
|
38
39
|
export declare function getDMConversation(agentA: string, agentB: string, since?: number, limit?: number): DMMessage[];
|
|
39
|
-
export
|
|
40
|
+
export interface CreateTaskOptions {
|
|
41
|
+
assigneeId?: string;
|
|
42
|
+
sourceTeamId?: string;
|
|
43
|
+
input?: object;
|
|
44
|
+
originatorPeer?: string;
|
|
45
|
+
originatorTaskId?: string;
|
|
46
|
+
delegatedPeer?: string;
|
|
47
|
+
delegatedTaskId?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare function createTask(title: string, creatorId: string, opts?: CreateTaskOptions): Task;
|
|
50
|
+
export declare function setTaskDelegation(taskId: string, delegatedPeer: string, delegatedTaskId: string): void;
|
|
40
51
|
export declare function getTaskById(id: string): Task | undefined;
|
|
41
52
|
export declare function updateTaskStatus(id: string, status: string, extras?: Record<string, any>): void;
|
|
42
53
|
export declare function getAgentTasks(agentId: string, status?: string): Task[];
|
|
@@ -67,6 +78,7 @@ export interface Peer {
|
|
|
67
78
|
status: string;
|
|
68
79
|
created_at: string;
|
|
69
80
|
last_seen: string | null;
|
|
81
|
+
node_name: string;
|
|
70
82
|
}
|
|
71
83
|
export declare function addPeer(name: string, url: string, secret: string, exposed?: string): Peer;
|
|
72
84
|
export declare function getPeerByName(name: string): Peer | undefined;
|
|
@@ -75,5 +87,19 @@ export declare function listPeers(): Peer[];
|
|
|
75
87
|
export declare function removePeer(name: string): boolean;
|
|
76
88
|
export declare function updatePeerExposed(name: string, exposed: string): void;
|
|
77
89
|
export declare function touchPeer(name: string): void;
|
|
90
|
+
export declare function setPeerStatus(name: string, status: 'active' | 'inactive'): void;
|
|
91
|
+
export declare function setPeerNodeName(name: string, nodeName: string): void;
|
|
92
|
+
export interface PendingInvite {
|
|
93
|
+
token_id: string;
|
|
94
|
+
secret: string;
|
|
95
|
+
exposed_agent_id: string;
|
|
96
|
+
url: string;
|
|
97
|
+
created_at: string;
|
|
98
|
+
expires_at: string;
|
|
99
|
+
}
|
|
100
|
+
export declare function createPendingInvite(secret: string, exposedAgentId: string, url: string, ttlMs?: number): PendingInvite;
|
|
101
|
+
export declare function getPendingInvite(tokenId: string): PendingInvite | undefined;
|
|
102
|
+
export declare function deletePendingInvite(tokenId: string): void;
|
|
103
|
+
export declare function cleanupExpiredInvites(): number;
|
|
78
104
|
export declare function isPeerExposed(peerName: string, agentName: string): boolean;
|
|
79
105
|
export declare function cleanupStaleTasks(maxAgeDays?: number): number;
|
package/dist/db.js
CHANGED
|
@@ -115,6 +115,33 @@ export function initDB(dbPath) {
|
|
|
115
115
|
created_at TEXT NOT NULL,
|
|
116
116
|
last_seen TEXT
|
|
117
117
|
);
|
|
118
|
+
|
|
119
|
+
CREATE TABLE IF NOT EXISTS pending_invites (
|
|
120
|
+
token_id TEXT PRIMARY KEY,
|
|
121
|
+
secret TEXT NOT NULL,
|
|
122
|
+
exposed_agent_id TEXT NOT NULL,
|
|
123
|
+
url TEXT NOT NULL,
|
|
124
|
+
created_at TEXT NOT NULL,
|
|
125
|
+
expires_at TEXT NOT NULL
|
|
126
|
+
);
|
|
127
|
+
`);
|
|
128
|
+
// Idempotent column migrations for federation fields
|
|
129
|
+
function addColumnIfMissing(table, column, decl) {
|
|
130
|
+
const cols = db.prepare(`PRAGMA table_info(${table})`).all().map(c => c.name);
|
|
131
|
+
if (!cols.includes(column))
|
|
132
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${decl}`);
|
|
133
|
+
}
|
|
134
|
+
addColumnIfMissing('agents', 'origin_peer', "TEXT NOT NULL DEFAULT ''");
|
|
135
|
+
addColumnIfMissing('agents', 'remote_id', "TEXT NOT NULL DEFAULT ''");
|
|
136
|
+
addColumnIfMissing('tasks', 'originator_peer', "TEXT NOT NULL DEFAULT ''");
|
|
137
|
+
addColumnIfMissing('tasks', 'originator_task_id', "TEXT NOT NULL DEFAULT ''");
|
|
138
|
+
addColumnIfMissing('tasks', 'delegated_peer', "TEXT NOT NULL DEFAULT ''");
|
|
139
|
+
addColumnIfMissing('tasks', 'delegated_task_id', "TEXT NOT NULL DEFAULT ''");
|
|
140
|
+
addColumnIfMissing('peers', 'node_name', "TEXT NOT NULL DEFAULT ''");
|
|
141
|
+
db.exec(`
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_agents_remote ON agents(origin_peer, remote_id);
|
|
143
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_delegated ON tasks(delegated_peer, delegated_task_id);
|
|
144
|
+
CREATE INDEX IF NOT EXISTS idx_tasks_originator ON tasks(originator_peer, originator_task_id);
|
|
118
145
|
`);
|
|
119
146
|
return db;
|
|
120
147
|
}
|
|
@@ -124,18 +151,35 @@ export function getDB() {
|
|
|
124
151
|
return db;
|
|
125
152
|
}
|
|
126
153
|
// --- Agent queries ---
|
|
127
|
-
export function createAgent(displayName, tool, roles, expertise) {
|
|
154
|
+
export function createAgent(displayName, tool, roles, expertise, originPeer = '', remoteId = '') {
|
|
128
155
|
const agent = {
|
|
129
156
|
id: ulid(), display_name: displayName, token: generateToken(),
|
|
130
157
|
tool, roles, expertise, status: 'active',
|
|
131
158
|
created_at: nowISO(), last_seen: nowISO(),
|
|
159
|
+
origin_peer: originPeer, remote_id: remoteId,
|
|
132
160
|
};
|
|
133
161
|
getDB().prepare(`
|
|
134
|
-
INSERT INTO agents (id, display_name, token, tool, roles, expertise, status, created_at, last_seen)
|
|
135
|
-
VALUES (@id, @display_name, @token, @tool, @roles, @expertise, @status, @created_at, @last_seen)
|
|
162
|
+
INSERT INTO agents (id, display_name, token, tool, roles, expertise, status, created_at, last_seen, origin_peer, remote_id)
|
|
163
|
+
VALUES (@id, @display_name, @token, @tool, @roles, @expertise, @status, @created_at, @last_seen, @origin_peer, @remote_id)
|
|
136
164
|
`).run(agent);
|
|
137
165
|
return agent;
|
|
138
166
|
}
|
|
167
|
+
// Find or create a placeholder agent representing a remote peer's agent.
|
|
168
|
+
// Looked up by (origin_peer, remote_id) — stable across rename/restart.
|
|
169
|
+
export function ensureRemoteAgentByRemoteId(remoteId, peerName, displayName) {
|
|
170
|
+
const existing = getDB().prepare('SELECT * FROM agents WHERE origin_peer = ? AND remote_id = ?').get(peerName, remoteId);
|
|
171
|
+
if (existing) {
|
|
172
|
+
if (existing.display_name !== displayName) {
|
|
173
|
+
getDB().prepare('UPDATE agents SET display_name = ?, last_seen = ? WHERE id = ?').run(displayName, nowISO(), existing.id);
|
|
174
|
+
existing.display_name = displayName;
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
touchAgent(existing.id);
|
|
178
|
+
}
|
|
179
|
+
return existing;
|
|
180
|
+
}
|
|
181
|
+
return createAgent(displayName, 'remote', `peer:${peerName}`, '', peerName, remoteId);
|
|
182
|
+
}
|
|
139
183
|
export function getAgentByToken(token) {
|
|
140
184
|
return getDB().prepare('SELECT * FROM agents WHERE token = ?').get(token);
|
|
141
185
|
}
|
|
@@ -297,22 +341,28 @@ export function getDMConversation(agentA, agentB, since = 0, limit = 50) {
|
|
|
297
341
|
ORDER BY id ASC LIMIT ?
|
|
298
342
|
`).all(agentA, agentB, agentB, agentA, since, limit);
|
|
299
343
|
}
|
|
300
|
-
|
|
301
|
-
export function createTask(title, creatorId, assigneeId, sourceTeamId, input) {
|
|
344
|
+
export function createTask(title, creatorId, opts = {}) {
|
|
302
345
|
const task = {
|
|
303
346
|
id: ulid(), title, creator_agent_id: creatorId,
|
|
304
|
-
assignee_agent_id: assigneeId ?? null,
|
|
347
|
+
assignee_agent_id: opts.assigneeId ?? null,
|
|
305
348
|
status: 'created', workflow_json: null, current_step: 0,
|
|
306
|
-
source_team_id: sourceTeamId ?? null,
|
|
307
|
-
input_json: JSON.stringify(input ?? {}),
|
|
349
|
+
source_team_id: opts.sourceTeamId ?? null,
|
|
350
|
+
input_json: JSON.stringify(opts.input ?? {}),
|
|
308
351
|
created_at: nowISO(), completed_at: null,
|
|
352
|
+
originator_peer: opts.originatorPeer ?? '',
|
|
353
|
+
originator_task_id: opts.originatorTaskId ?? '',
|
|
354
|
+
delegated_peer: opts.delegatedPeer ?? '',
|
|
355
|
+
delegated_task_id: opts.delegatedTaskId ?? '',
|
|
309
356
|
};
|
|
310
357
|
getDB().prepare(`
|
|
311
|
-
INSERT INTO tasks (id, title, creator_agent_id, assignee_agent_id, status, workflow_json, current_step, source_team_id, input_json, created_at, completed_at)
|
|
312
|
-
VALUES (@id, @title, @creator_agent_id, @assignee_agent_id, @status, @workflow_json, @current_step, @source_team_id, @input_json, @created_at, @completed_at)
|
|
358
|
+
INSERT INTO tasks (id, title, creator_agent_id, assignee_agent_id, status, workflow_json, current_step, source_team_id, input_json, created_at, completed_at, originator_peer, originator_task_id, delegated_peer, delegated_task_id)
|
|
359
|
+
VALUES (@id, @title, @creator_agent_id, @assignee_agent_id, @status, @workflow_json, @current_step, @source_team_id, @input_json, @created_at, @completed_at, @originator_peer, @originator_task_id, @delegated_peer, @delegated_task_id)
|
|
313
360
|
`).run(task);
|
|
314
361
|
return task;
|
|
315
362
|
}
|
|
363
|
+
export function setTaskDelegation(taskId, delegatedPeer, delegatedTaskId) {
|
|
364
|
+
getDB().prepare('UPDATE tasks SET delegated_peer = ?, delegated_task_id = ? WHERE id = ?').run(delegatedPeer, delegatedTaskId, taskId);
|
|
365
|
+
}
|
|
316
366
|
export function getTaskById(id) {
|
|
317
367
|
return getDB().prepare('SELECT * FROM tasks WHERE id = ?').get(id);
|
|
318
368
|
}
|
|
@@ -443,11 +493,11 @@ function previewFromPayload(payloadJson) {
|
|
|
443
493
|
export function addPeer(name, url, secret, exposed = '') {
|
|
444
494
|
const peer = {
|
|
445
495
|
id: ulid(), name, url, secret, exposed, status: 'active',
|
|
446
|
-
created_at: nowISO(), last_seen: null,
|
|
496
|
+
created_at: nowISO(), last_seen: null, node_name: '',
|
|
447
497
|
};
|
|
448
498
|
getDB().prepare(`
|
|
449
|
-
INSERT INTO peers (id, name, url, secret, exposed, status, created_at, last_seen)
|
|
450
|
-
VALUES (@id, @name, @url, @secret, @exposed, @status, @created_at, @last_seen)
|
|
499
|
+
INSERT INTO peers (id, name, url, secret, exposed, status, created_at, last_seen, node_name)
|
|
500
|
+
VALUES (@id, @name, @url, @secret, @exposed, @status, @created_at, @last_seen, @node_name)
|
|
451
501
|
`).run(peer);
|
|
452
502
|
return peer;
|
|
453
503
|
}
|
|
@@ -455,7 +505,8 @@ export function getPeerByName(name) {
|
|
|
455
505
|
return getDB().prepare('SELECT * FROM peers WHERE name = ?').get(name);
|
|
456
506
|
}
|
|
457
507
|
export function getPeerBySecret(secret) {
|
|
458
|
-
|
|
508
|
+
// Status is informational (reachability); auth is by secret match only.
|
|
509
|
+
return getDB().prepare('SELECT * FROM peers WHERE secret = ?').get(secret);
|
|
459
510
|
}
|
|
460
511
|
export function listPeers() {
|
|
461
512
|
return getDB().prepare('SELECT * FROM peers ORDER BY created_at DESC').all();
|
|
@@ -470,6 +521,36 @@ export function updatePeerExposed(name, exposed) {
|
|
|
470
521
|
export function touchPeer(name) {
|
|
471
522
|
getDB().prepare('UPDATE peers SET last_seen = ? WHERE name = ?').run(nowISO(), name);
|
|
472
523
|
}
|
|
524
|
+
export function setPeerStatus(name, status) {
|
|
525
|
+
getDB().prepare('UPDATE peers SET status = ? WHERE name = ?').run(status, name);
|
|
526
|
+
}
|
|
527
|
+
export function setPeerNodeName(name, nodeName) {
|
|
528
|
+
getDB().prepare('UPDATE peers SET node_name = ? WHERE name = ?').run(nodeName, name);
|
|
529
|
+
}
|
|
530
|
+
export function createPendingInvite(secret, exposedAgentId, url, ttlMs = 24 * 60 * 60 * 1000) {
|
|
531
|
+
const tokenId = 't_' + ulid().slice(-12);
|
|
532
|
+
const now = new Date();
|
|
533
|
+
const invite = {
|
|
534
|
+
token_id: tokenId, secret, exposed_agent_id: exposedAgentId, url,
|
|
535
|
+
created_at: now.toISOString(),
|
|
536
|
+
expires_at: new Date(now.getTime() + ttlMs).toISOString(),
|
|
537
|
+
};
|
|
538
|
+
getDB().prepare(`
|
|
539
|
+
INSERT INTO pending_invites (token_id, secret, exposed_agent_id, url, created_at, expires_at)
|
|
540
|
+
VALUES (@token_id, @secret, @exposed_agent_id, @url, @created_at, @expires_at)
|
|
541
|
+
`).run(invite);
|
|
542
|
+
return invite;
|
|
543
|
+
}
|
|
544
|
+
export function getPendingInvite(tokenId) {
|
|
545
|
+
return getDB().prepare('SELECT * FROM pending_invites WHERE token_id = ?').get(tokenId);
|
|
546
|
+
}
|
|
547
|
+
export function deletePendingInvite(tokenId) {
|
|
548
|
+
getDB().prepare('DELETE FROM pending_invites WHERE token_id = ?').run(tokenId);
|
|
549
|
+
}
|
|
550
|
+
export function cleanupExpiredInvites() {
|
|
551
|
+
const result = getDB().prepare('DELETE FROM pending_invites WHERE expires_at < ?').run(nowISO());
|
|
552
|
+
return result.changes;
|
|
553
|
+
}
|
|
473
554
|
export function isPeerExposed(peerName, agentName) {
|
|
474
555
|
const peer = getPeerByName(peerName);
|
|
475
556
|
if (!peer || !peer.exposed)
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function pingPeer(name: string, url: string, secret: string, timeoutMs?: number): Promise<{
|
|
2
|
+
ok: boolean;
|
|
3
|
+
node?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
}>;
|
|
6
|
+
export declare function pingAllPeers(): Promise<void>;
|
|
7
|
+
export declare function startHeartbeat(intervalMs?: number): NodeJS.Timeout;
|