Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ R256 校准:旧 doc 用 `send_task(hub, result)` 回复任务结果 —— 这

## 10. Web Dashboard

> **R220 校准(2026-05-13)**:本节的「内置轻量 UI」+「`http://YOUR_IP:9200/dashboard`」是 V2 早期设计草稿,**v0.8 实际未实现** —— commhub-server `server/src/index.ts` 没有 `/dashboard` 路由([全 source grep `/dashboard` 0 hit](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts))。当前**唯一 Dashboard 是独立的 Next.js 包 `@sleep2agi/agent-network-dashboard`**,通过 `anet hub dashboard` 子命令拉起([`cli.ts`](https://github.com/sleep2agi/agent-network/blob/main/agent-network/bin/cli.ts) `sub === "dashboard"` 分支,默认端口 3000;版本不再 hardcode pin —— [`cli.ts`](https://github.com/sleep2agi/agent-network/blob/main/agent-network/bin/cli.ts) —— 搜 `function dashboardReleaseTag(` 默认拉 `@preview` tag,可用 `ANET_DASHBOARD_VERSION` env 覆盖,跟 anet release channel 对齐 — 见 #61)。最新部署方式见 [anet.sh/guide/dashboard](https://anet.sh/guide/dashboard)。下面的「两种 Dashboard」/「内置 UI 设计原则」/「实现方案」/「HTML 结构」全是 V2 设计草稿,仅保留历史背景,**当前不适用**。
> **R220 校准(2026-05-13)**:本节的「内置轻量 UI」+「`http://YOUR_IP:9200/dashboard`」是 V2 早期设计草稿,**v0.8 实际未实现** —— commhub-server `server/src/index.ts` 没有 `/dashboard` 路由([全 source grep `/dashboard` 0 hit](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts))。当前**唯一 Dashboard 是独立的 Next.js 包 `@sleep2agi/agent-network-dashboard`**,通过 `anet hub dashboard` 子命令拉起([`agent-network/bin/cli.ts:2386`](https://github.com/sleep2agi/agent-network/blob/main/agent-network/bin/cli.ts#L2386) `sub === "dashboard"` 分支,默认端口 3000;版本不再 hardcode pin —— [`dashboardReleaseTag()` cli.ts:347](https://github.com/sleep2agi/agent-network/blob/main/agent-network/bin/cli.ts#L1569) 默认拉 `@preview` tag,可用 `ANET_DASHBOARD_VERSION` env 覆盖,跟 anet release channel 对齐 — 见 #61)。最新部署方式见 [anet.sh/guide/dashboard](https://anet.sh/guide/dashboard)。下面的「两种 Dashboard」/「内置 UI 设计原则」/「实现方案」/「HTML 结构」全是 V2 设计草稿,仅保留历史背景,**当前不适用**。

### 当前 Dashboard

Expand Down
2 changes: 1 addition & 1 deletion docs/node-lifecycle.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,7 @@ register() → callCommHub("report_status", {
- config.json: 不变(session 已写回)
- 进程退出

**CommHub 超时检测**: 心跳 3 分钟间隔([`agent-node/src/cli.ts:1159`](https://github.com/sleep2agi/agent-network/blob/main/agent-node/src/cli.ts#L1159) `setInterval(() => reportStatus("idle"), 3 * 60 * 1000)`),超过 **10 分钟**无心跳 → 自动标记 offline([`server/src/index.ts:816-821`](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts#L816) `Date.now() - 10 * 60 * 1000` cutoff,惰性触发于 `/api/status` 调用时)。R219 校准:原 doc 5 分钟错。
**CommHub 超时检测**: 心跳 3 分钟间隔([`agent-node/src/cli.ts:1159`](https://github.com/sleep2agi/agent-network/blob/main/agent-node/src/cli.ts#L1159) `setInterval(() => reportStatus("idle"), 3 * 60 * 1000)`),超过 **10 分钟**无心跳 → 自动标记 offline([`server/src/server.ts`](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts) `Date.now() - 10 * 60 * 1000` cutoff,惰性触发于 `/api/status` 调用时)。R219 校准:原 doc 5 分钟错。

### 9. 删除 (deleted) — R219 校准

Expand Down
2 changes: 1 addition & 1 deletion docs/open-source-quality-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ try { db.exec("ALTER TABLE ...") } catch {}

`server/src/index.ts:234-243` 在 `COMMHUB_CORS_ORIGINS` 之外还硬编码允许:

- 一个作者私有域名(具体见 [`server/src/index.ts`](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts) `additionalAllow` 列表)
- 一个作者私有域名(具体见 [`server/src/server.ts`](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts) `additionalAllow` 列表)
- 一个 Vercel 部署域名(dashboard staging)

如果用户显式设置了自己的 CORS origins,一般预期是覆盖默认值,而不是仍然允许官方域名。对开源/自托管项目来说,这种"隐藏默认允许"会降低可审计性。**v0.8 后 OSS 转向不做 SaaS 托管**,建议把作者私有域名从硬编码列表里移除(root cause 在 server 代码,本 doc fix 不彻底)。
Expand Down
4 changes: 2 additions & 2 deletions tests/qa-dash-07-auth-boundary/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ sg docker -c 'docker run --rm anet-qa-dash-07'

#### 1. `requireAuth` 中央门卫

[index.ts L98-122](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts#L98):
[server.ts 鉴权入口](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts):
- 没 token → 401 "unauthorized"
- token 但 resolveToken 找不到 → 401 "invalid token"
- 老的 master token + dev_open 模式仍 fallback(legacy)
Expand All @@ -48,7 +48,7 @@ sg docker -c 'docker run --rm anet-qa-dash-07'

#### 2. admin-only 端点单独二审 (`requireAdminAuth`)

[index.ts L138-143](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts#L138):先校 token,再查 `user.role === "admin"`。
[server.ts admin 角色校验](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts):先校 token,再查 `user.role === "admin"`。
non-admin → 403。例:`/api/server-logs`(含用户名 + task 内容,admin-only)。

#### 3. SSE + MCP 同样 401
Expand Down
2 changes: 1 addition & 1 deletion tests/qa-dash-08-cross-account-views/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ sg docker -c 'docker run --rm anet-qa-dash-08'

## 锁住的契约

`addNetworkScope` 应用于**所有**列表查询([index.ts](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts) 各端点 SQL inject):
`addNetworkScope` 应用于**所有**列表查询([server.ts](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts) 各端点 SQL inject):

```sql
WHERE network_id IN (SELECT network_id FROM network_members WHERE user_id = ?)
Expand Down
4 changes: 2 additions & 2 deletions tests/qa-hub-06b-cross-user-isolation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ sg docker -c 'docker run --rm anet-qa-hub-06b'

[auth.ts createNetwork](https://github.com/sleep2agi/agent-network/blob/main/server/src/auth.ts#L182):
建网络时在 `network_members` 表写一行 owner。
[index.ts /api/networks GET](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts) 通过 `getUserAllNetworks(user_id)` 过滤。
[server.ts /api/networks GET](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts) 通过 `getUserAllNetworks(user_id)` 过滤。
bob 不是 alice-private 的成员 → 看不到。

#### 2. /api/tasks 默认按 user 可见 network 过滤
Expand All @@ -49,7 +49,7 @@ bob 没参与 alice 的 network → 查询返空。

#### 3. 直接传 `network_id=<alice_net>` 也防住

[index.ts /api/task POST L788](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts#L788):
[server.ts /api/task POST](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts):
```ts
if (restAuth && !isAdmin && !getUserNetworkRole(restAuth.userId, body.network_id)) {
return Response.json({ ok: false, error: "access denied to requested network" }, { status: 403 });
Expand Down
2 changes: 1 addition & 1 deletion tests/qa-node-03b-task-events/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ sg docker -c 'docker run --rm anet-qa-node-03b'

**`/api/task` REST 端点不写 task_events,只有 MCP `send_task` 写。**

[index.ts /api/task 处理器](https://github.com/sleep2agi/agent-network/blob/main/server/src/index.ts#L771) 直接 INSERT inbox+tasks,但**不调 `logTaskEvent("delivered", ...)`**。
[server.ts /api/task 处理器](https://github.com/sleep2agi/agent-network/blob/main/server/src/server.ts) 直接 INSERT inbox+tasks,但**不调 `logTaskEvent("delivered", ...)`**。
而 [MCP send_task L517](https://github.com/sleep2agi/agent-network/blob/main/server/src/tools.ts#L517) 调用。

**含义**:通过 Dashboard 派单(走 REST `/api/task`)的任务在 task_events 表里**没有 delivered 事件**!
Expand Down
Loading