@tt-a1i/hive 0.6.0-alpha.4 → 0.6.0-alpha.7
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/CHANGELOG.md +81 -0
- package/README.en.md +272 -0
- package/README.md +103 -143
- package/dist/src/cli/team.d.ts +8 -0
- package/dist/src/cli/team.js +69 -26
- package/dist/src/cli/team.js.map +1 -1
- package/dist/src/server/agent-launch-cache.js +2 -2
- package/dist/src/server/agent-launch-cache.js.map +1 -1
- package/dist/src/server/agent-launch-resolver.d.ts +4 -0
- package/dist/src/server/agent-launch-resolver.js +33 -0
- package/dist/src/server/agent-launch-resolver.js.map +1 -0
- package/dist/src/server/agent-run-store.d.ts +1 -2
- package/dist/src/server/agent-run-store.js +5 -13
- package/dist/src/server/agent-run-store.js.map +1 -1
- package/dist/src/server/agent-runtime-ports.d.ts +1 -2
- package/dist/src/server/agent-session-store.d.ts +1 -1
- package/dist/src/server/agent-session-store.js +28 -34
- package/dist/src/server/agent-session-store.js.map +1 -1
- package/dist/src/server/agent-startup-instructions.js +1 -1
- package/dist/src/server/agent-startup-instructions.js.map +1 -1
- package/dist/src/server/app-state-store.d.ts +1 -1
- package/dist/src/server/app-state-store.js +1 -3
- package/dist/src/server/app-state-store.js.map +1 -1
- package/dist/src/server/command-preset-store.d.ts +1 -1
- package/dist/src/server/command-preset-store.js +2 -8
- package/dist/src/server/command-preset-store.js.map +1 -1
- package/dist/src/server/dispatch-ledger-store.d.ts +18 -4
- package/dist/src/server/dispatch-ledger-store.js +0 -66
- package/dist/src/server/dispatch-ledger-store.js.map +1 -1
- package/dist/src/server/hive-team-guidance.js +8 -4
- package/dist/src/server/hive-team-guidance.js.map +1 -1
- package/dist/src/server/message-log-store.d.ts +1 -3
- package/dist/src/server/message-log-store.js +2 -59
- package/dist/src/server/message-log-store.js.map +1 -1
- package/dist/src/server/orchestrator-autostart.js +12 -2
- package/dist/src/server/orchestrator-autostart.js.map +1 -1
- package/dist/src/server/orchestrator-launch.js +2 -27
- package/dist/src/server/orchestrator-launch.js.map +1 -1
- package/dist/src/server/recovery-summary.js +1 -1
- package/dist/src/server/recovery-summary.js.map +1 -1
- package/dist/src/server/role-template-store.d.ts +1 -1
- package/dist/src/server/role-template-store.js +2 -6
- package/dist/src/server/role-template-store.js.map +1 -1
- package/dist/src/server/route-types.d.ts +2 -0
- package/dist/src/server/routes-workspaces.js +26 -18
- package/dist/src/server/routes-workspaces.js.map +1 -1
- package/dist/src/server/runtime-database.d.ts +1 -1
- package/dist/src/server/runtime-database.js +8 -4
- package/dist/src/server/runtime-database.js.map +1 -1
- package/dist/src/server/runtime-store-helpers.js +2 -4
- package/dist/src/server/runtime-store-helpers.js.map +1 -1
- package/dist/src/server/runtime-store.d.ts +1 -1
- package/dist/src/server/runtime-store.js +1 -1
- package/dist/src/server/runtime-store.js.map +1 -1
- package/dist/src/server/settings-store.d.ts +1 -1
- package/dist/src/server/settings-store.js.map +1 -1
- package/dist/src/server/team-list-enrichment.d.ts +22 -0
- package/dist/src/server/team-list-enrichment.js +41 -0
- package/dist/src/server/team-list-enrichment.js.map +1 -0
- package/dist/src/server/team-list-serializer.d.ts +1 -1
- package/dist/src/server/team-list-serializer.js +3 -2
- package/dist/src/server/team-list-serializer.js.map +1 -1
- package/dist/src/server/terminal-state-mirror.d.ts +1 -1
- package/dist/src/server/terminal-state-mirror.js +1 -1
- package/dist/src/server/terminal-state-mirror.js.map +1 -1
- package/dist/src/server/worker-output-tracker.d.ts +1 -1
- package/dist/src/server/worker-output-tracker.js +2 -2
- package/dist/src/server/worker-output-tracker.js.map +1 -1
- package/dist/src/server/workspace-store-hydration.d.ts +2 -2
- package/dist/src/server/workspace-store-hydration.js +1 -4
- package/dist/src/server/workspace-store-hydration.js.map +1 -1
- package/dist/src/server/workspace-store.d.ts +1 -1
- package/dist/src/server/workspace-store.js +5 -5
- package/dist/src/server/workspace-store.js.map +1 -1
- package/dist/src/shared/types.d.ts +15 -3
- package/package.json +7 -3
- package/web/dist/assets/addon-clipboard-wHJhZAA4.js +1 -0
- package/web/dist/assets/addon-unicode11-Bt8F3D7-.js +7 -0
- package/web/dist/assets/addon-web-links-DIbG5aQx.js +1 -0
- package/web/dist/assets/addon-webgl-DCtw1yLn.js +64 -0
- package/web/dist/assets/index-B8F00qo4.css +1 -0
- package/web/dist/assets/index-CGvIlvht.js +80 -0
- package/web/dist/cli-icons/claude.png +0 -0
- package/web/dist/cli-icons/codex.png +0 -0
- package/web/dist/cli-icons/gemini.png +0 -0
- package/web/dist/cli-icons/opencode.svg +18 -0
- package/web/dist/index.html +2 -2
- package/README.zh-CN.md +0 -210
- package/web/dist/assets/index-CnUabdqK.js +0 -73
- package/web/dist/assets/index-DqkpIE12.css +0 -1
package/README.md
CHANGED
|
@@ -1,222 +1,186 @@
|
|
|
1
1
|
# Hive
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<img src="./assets/hive-hero.png" alt="Hive
|
|
4
|
+
<img src="./assets/hive-hero.png" alt="Hive 本机多 agent 协作工作台" />
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
|
-
Hive
|
|
8
|
-
Claude Code, Codex, OpenCode, Gemini, or any custom CLI agent as a visible team:
|
|
9
|
-
one Orchestrator coordinates the plan, worker agents run in their own PTYs, and
|
|
10
|
-
the web UI keeps tasks, terminals, and reports in one place.
|
|
7
|
+
**Hive 是面向 CLI Coding Agent 的浏览器版蜂巢(hive-mind)。** Orchestrator 本身就是一个真实的 `claude` / `codex` / `opencode` / `gemini` 进程——不是你、也不是脚本——它派单的 Worker 同样是真 CLI agent。所有 agent 都是你电脑上真实的 PTY 进程,通过 Hive 注入到 shell 里的小型 `team` 协议互相通信,共享 `<workspace>/.hive/tasks.md` 这份 markdown 任务图。
|
|
11
8
|
|
|
12
9
|
[](https://www.npmjs.com/package/@tt-a1i/hive)
|
|
10
|
+
[](https://github.com/tt-a1i/hive/actions/workflows/release.yml)
|
|
11
|
+
[](https://hive-site.pages.dev)
|
|
13
12
|
[](https://nodejs.org/)
|
|
14
13
|
[](./LICENSE)
|
|
15
|
-
[-lightgrey.svg)](
|
|
14
|
+
[-lightgrey.svg)](#平台支持)
|
|
16
15
|
|
|
17
|
-
|
|
16
|
+
🌐 **官网**:[hive-site.pages.dev](https://hive-site.pages.dev/)([English](https://hive-site.pages.dev/en/))
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
> for developers who already use CLI coding agents. The latest published
|
|
21
|
-
> version is on [npm](https://www.npmjs.com/package/@tt-a1i/hive) and the
|
|
22
|
-
> badge above resolves to it.
|
|
18
|
+
[English](./README.en.md) · 简体中文
|
|
23
19
|
|
|
24
|
-
|
|
20
|
+
> Public preview。Hive 是本机优先的工具,只监听 `127.0.0.1`,面向已经在用 CLI Coding Agent 的开发者。最新发布版本见 [npm](https://www.npmjs.com/package/@tt-a1i/hive),上面的 badge 会指向它。
|
|
25
21
|
|
|
26
|
-
|
|
27
|
-
awkward:
|
|
22
|
+
## 为什么需要 Hive
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
- It is hard to split a task into implementation, review, and testing without a
|
|
31
|
-
routing layer.
|
|
32
|
-
- Worker progress disappears into scrollback.
|
|
33
|
-
- Restart recovery depends on each CLI's native session behavior.
|
|
24
|
+
CLI Coding Agent 各自都很强,但同时管几个就有点别扭:
|
|
34
25
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
26
|
+
- 长任务的会话散在好几个终端里,注意力来回切。
|
|
27
|
+
- 想把"实现 / review / 测试"分给三个 agent,却没有一层把它们路由起来。
|
|
28
|
+
- Worker 的进度淹在 scrollback 里,回头看找不到。
|
|
29
|
+
- 想重启接着干,全看每个 CLI 自己的 session 恢复行为,散乱不可控。
|
|
38
30
|
|
|
39
|
-
|
|
31
|
+
Hive 加上这一层调度,**不替换**任何 CLI。Agent 还是真实跑在你电脑上的终端进程,Hive 只是它们外面的"团队 shell"。
|
|
40
32
|
|
|
41
|
-
|
|
33
|
+
## 先看看 demo
|
|
42
34
|
|
|
43
|
-
-
|
|
44
|
-
- At least one supported agent CLI installed, authenticated, and available on
|
|
45
|
-
`PATH`.
|
|
35
|
+
还没装任何 agent CLI?运行 `hive`、打开它打印出的本地地址、在 first-run 向导里点 **Try Demo**。你会看到一个完全跑在客户端的预览——假 orchestrator + 两个 worker、预录的终端 scrollback、一份预填的任务清单——既不会连服务器,也不需要任何真实 CLI agent。适合决定要不要继续装真 CLI。
|
|
46
36
|
|
|
47
|
-
|
|
37
|
+
## 快速开始
|
|
38
|
+
|
|
39
|
+
前置条件:
|
|
40
|
+
|
|
41
|
+
- Node.js 22 或更新版本
|
|
42
|
+
- 至少一个支持的 Agent CLI 已经安装好、登录过、在 `PATH` 上可调用
|
|
43
|
+
|
|
44
|
+
安装并启动 Hive:
|
|
48
45
|
|
|
49
46
|
```bash
|
|
50
47
|
npm install -g @tt-a1i/hive
|
|
51
48
|
hive
|
|
52
49
|
```
|
|
53
50
|
|
|
54
|
-
|
|
55
|
-
`hive --port 4010` when you need a specific local port.
|
|
51
|
+
打开终端打印出来的本机地址,通常是 `http://127.0.0.1:3000/`。如果你想指定端口,可以用 `hive --port 4010`。
|
|
56
52
|
|
|
57
|
-
|
|
53
|
+
首次使用流程:
|
|
58
54
|
|
|
59
|
-
1.
|
|
60
|
-
2.
|
|
61
|
-
3. Hive
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
5. Ask the Orchestrator to delegate work. It sends tasks with
|
|
65
|
-
`team send <worker-name> "<task>"`; workers report back with `team report`.
|
|
55
|
+
1. 选择一个项目目录作为 workspace。
|
|
56
|
+
2. 挑一个 Orchestrator 预设。
|
|
57
|
+
3. Hive 会创建 `<workspace>/.hive/tasks.md`,启动 Orchestrator 的 PTY,把内部的 `team` 命令注入这个 agent 会话。
|
|
58
|
+
4. 在 Team Members 面板里添加 Worker。
|
|
59
|
+
5. 跟 Orchestrator 说一声让它派活,它会用 `team send <worker-name> "<task>"` 发任务,Worker 完事后用 `team report` 回报。
|
|
66
60
|
|
|
67
|
-
##
|
|
61
|
+
## 工作方式
|
|
68
62
|
|
|
69
63
|
```text
|
|
70
|
-
|
|
71
|
-
|
|
64
|
+
浏览器 UI 跑在 127.0.0.1
|
|
65
|
+
任务 · 团队 · 终端 · 汇报
|
|
72
66
|
|
|
|
73
67
|
| HTTP + WebSocket
|
|
74
68
|
v
|
|
75
|
-
Hive
|
|
76
|
-
SQLite
|
|
69
|
+
Hive Runtime
|
|
70
|
+
SQLite 元数据 · PTY 生命周期 · 任务派单
|
|
77
71
|
|
|
|
78
72
|
+-- Orchestrator PTY
|
|
79
|
-
|
|
|
73
|
+
| 可调用:team send、team list、team report
|
|
80
74
|
|
|
|
81
75
|
+-- Worker PTY
|
|
82
|
-
|
|
|
76
|
+
| 可调用:team report
|
|
83
77
|
|
|
|
84
78
|
+-- Worker PTY
|
|
85
|
-
|
|
79
|
+
可调用:team report
|
|
86
80
|
|
|
87
|
-
Workspace
|
|
81
|
+
Workspace 任务图:
|
|
88
82
|
<workspace>/.hive/tasks.md
|
|
89
83
|
```
|
|
90
84
|
|
|
91
|
-
|
|
85
|
+
三个细节值得记住:
|
|
92
86
|
|
|
93
|
-
-
|
|
94
|
-
- `team`
|
|
95
|
-
|
|
96
|
-
command.
|
|
97
|
-
- The task graph is a markdown file in the workspace, so you can inspect or
|
|
98
|
-
edit it outside the app.
|
|
87
|
+
- Agent 是真正的 CLI 进程,不是模拟的 subagent。
|
|
88
|
+
- `team` 命令**只**在 Hive 管理的 agent 会话里可用——通过把包内 bin 目录 prepend 到 PATH 实现,不会装成全局命令。
|
|
89
|
+
- 任务图就是 workspace 里的一份 markdown 文件,你可以在编辑器里直接看或者改。
|
|
99
90
|
|
|
100
|
-
## Agent
|
|
91
|
+
## Agent 预设
|
|
101
92
|
|
|
102
|
-
|
|
|
93
|
+
| 预设 | `PATH` 上的命令 | 默认 bypass 模式 | 会话恢复 |
|
|
103
94
|
| --- | --- | --- | --- |
|
|
104
|
-
| Claude Code | `claude` | `--dangerously-skip-permissions
|
|
95
|
+
| Claude Code | `claude` | `--dangerously-skip-permissions`、`--permission-mode=bypassPermissions` | `--resume <session_id>` |
|
|
105
96
|
| Codex | `codex` | `--dangerously-bypass-approvals-and-sandbox` | `resume <session_id>` |
|
|
106
|
-
| OpenCode | `opencode` |
|
|
97
|
+
| OpenCode | `opencode` | 由 `~/.config/opencode/opencode.json` 配置 | `--session <session_id>` |
|
|
107
98
|
| Gemini | `gemini` | `--yolo` | `--resume <session_id>` |
|
|
108
|
-
|
|
|
109
|
-
|
|
110
|
-
Hive does not install these CLIs for you. Install and authenticate them in the
|
|
111
|
-
same shell environment you use to start Hive.
|
|
99
|
+
| 自定义 | 任意可执行文件 | 自己配 | 自己配 |
|
|
112
100
|
|
|
113
|
-
|
|
101
|
+
Hive 不替你安装这些 CLI。请在启动 Hive 的同一个 shell 环境里先装好、登录好。
|
|
114
102
|
|
|
115
|
-
|
|
116
|
-
- Orchestrator and worker terminals backed by real PTYs.
|
|
117
|
-
- Add Worker flow with role presets for coder, reviewer, tester, and custom
|
|
118
|
-
members.
|
|
119
|
-
- `.hive/tasks.md` editor with external-file conflict handling.
|
|
120
|
-
- Background PTY preservation and best-effort native session resume.
|
|
121
|
-
- Local SQLite metadata under `~/.config/hive` by default, or `$HIVE_DATA_DIR`
|
|
122
|
-
when set.
|
|
103
|
+
## Hive 提供什么
|
|
123
104
|
|
|
124
|
-
|
|
125
|
-
|
|
105
|
+
- Workspace 侧边栏,方便在多个本机项目之间切换。
|
|
106
|
+
- Orchestrator 和 Worker 终端都是真实 PTY 支撑的。
|
|
107
|
+
- Add Worker 流程预置了 coder / reviewer / tester 和自定义成员的角色模板。
|
|
108
|
+
- `.hive/tasks.md` 编辑器,带外部文件冲突处理。
|
|
109
|
+
- PTY 后台保留 + 尽力使用各 CLI 原生 session 恢复。
|
|
110
|
+
- 元数据存在本机 SQLite,默认在 `~/.config/hive`,或者通过 `$HIVE_DATA_DIR` 指定。
|
|
126
111
|
|
|
127
|
-
|
|
112
|
+
Hive **不**提供 sandbox 隔离、多用户认证、云端托管,也没有自带的编码模型。它只负责调度你已经在用的本机工具。
|
|
128
113
|
|
|
129
|
-
|
|
130
|
-
| --- | --- | --- |
|
|
131
|
-
| macOS | Tier 1 | Main development and release verification target. |
|
|
132
|
-
| Linux | Tier 1 | CI verified. Native folder picking expects `zenity`; manual path entry works without it. |
|
|
133
|
-
| Windows | Tier 2 | CI runs a Windows test subset and a packaged-install smoke. Folder picking uses Windows PowerShell and the package includes `team.cmd`. Treat as best-effort — full Windows verification before each release is manual. |
|
|
114
|
+
## 平台支持
|
|
134
115
|
|
|
135
|
-
|
|
136
|
-
(`node-pty` and `better-sqlite3`), so native install tooling may be required
|
|
137
|
-
when prebuilt binaries are unavailable.
|
|
116
|
+
所有平台都需要 Node.js 22+。Hive 依赖 `node-pty` 和 `better-sqlite3` 这类原生包,没有预编译二进制时需要你本机有原生构建工具链。
|
|
138
117
|
|
|
139
|
-
##
|
|
118
|
+
## 安全模型
|
|
140
119
|
|
|
141
|
-
Hive
|
|
120
|
+
Hive 是本机开发工具,**不是**托管服务。
|
|
142
121
|
|
|
143
|
-
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
-
|
|
149
|
-
shell account running Hive.
|
|
150
|
-
- Agent tokens are session scoped, generated by the local runtime, injected into
|
|
151
|
-
agent process environments, and not intended as internet-facing credentials.
|
|
152
|
-
- Hive has no multi-user authentication boundary. Treat same-machine processes
|
|
153
|
-
that can reach the local port as trusted local access.
|
|
154
|
-
- The browser UI token is a local session guard, not protection against other
|
|
155
|
-
processes already running as your OS user.
|
|
122
|
+
- Runtime 只监听 `127.0.0.1`。不要把 Hive 端口通过公网隧道、反向代理或任何共享网络接口暴露出去。
|
|
123
|
+
- 内置预设会主动传 CLI 的 non-interactive / bypass flag。Worker 在选中的 workspace 里有跟启动 shell **同等**的执行权限——把它当成"会自动跑命令的你自己"。
|
|
124
|
+
- 只打开你信任的 workspace。Worker 拥有跟你登录账户一样的文件系统访问权限。
|
|
125
|
+
- Agent token 是 session 级的,由本机 runtime 生成,注入到 agent 进程环境变量里,**不**用于跨网络通信。
|
|
126
|
+
- Hive 不做多用户认证。任何能从本机访问到端口的进程都视为可信本地访问。
|
|
127
|
+
- 浏览器 UI token 只是本机会话保护,不是用来防同一系统账户下其他进程的安全边界。
|
|
156
128
|
|
|
157
|
-
|
|
129
|
+
在敏感仓库里用 Hive 之前,请先读 [SECURITY.md](SECURITY.md)。
|
|
158
130
|
|
|
159
|
-
##
|
|
131
|
+
## 数据位置
|
|
160
132
|
|
|
161
|
-
|
|
|
133
|
+
| 数据 | 位置 |
|
|
162
134
|
| --- | --- |
|
|
163
|
-
| Runtime
|
|
164
|
-
| Workspace
|
|
165
|
-
|
|
|
166
|
-
| Web UI
|
|
135
|
+
| Runtime 元数据 | `~/.config/hive` 或 `$HIVE_DATA_DIR` |
|
|
136
|
+
| Workspace 任务图 | `<workspace>/.hive/tasks.md` |
|
|
137
|
+
| 内部 `team` 命令 | 包内 `dist/bin/`,通过 PATH 注入 PTY |
|
|
138
|
+
| Web UI 资源 | 由 runtime 从包内 `web/dist` 直接服务 |
|
|
167
139
|
|
|
168
|
-
##
|
|
140
|
+
## 故障排查
|
|
169
141
|
|
|
170
|
-
|
|
142
|
+
**找不到 Agent CLI**
|
|
171
143
|
|
|
172
|
-
|
|
173
|
-
same shell, and available on `PATH`.
|
|
144
|
+
确认选中的命令已经安装好、登录好、在启动 Hive 那个 shell 里能直接调用,且在 `PATH` 上。
|
|
174
145
|
|
|
175
|
-
|
|
146
|
+
**端口被占用**
|
|
176
147
|
|
|
177
|
-
|
|
148
|
+
换个本机端口启动:
|
|
178
149
|
|
|
179
150
|
```bash
|
|
180
151
|
hive --port 4020
|
|
181
152
|
```
|
|
182
153
|
|
|
183
|
-
|
|
154
|
+
**原生包构建失败**
|
|
184
155
|
|
|
185
|
-
Hive
|
|
186
|
-
Node.js 22+, keep your package manager cache clean, and verify your platform
|
|
187
|
-
build tools are available.
|
|
156
|
+
Hive 依赖 `node-pty` 和 `better-sqlite3`,它们用原生二进制。确认 Node.js 22+,清干净 package manager 缓存,并准备好你平台的构建工具(macOS Xcode CLI、Linux build-essential + python3、Windows VS Build Tools)。
|
|
188
157
|
|
|
189
|
-
**
|
|
158
|
+
**Linux 上目录选择器不弹**
|
|
190
159
|
|
|
191
|
-
|
|
160
|
+
装 `zenity`,或者直接在对话框里粘路径。
|
|
192
161
|
|
|
193
|
-
**
|
|
162
|
+
**Windows 上目录选择器不弹**
|
|
194
163
|
|
|
195
|
-
|
|
196
|
-
workspace path manually.
|
|
164
|
+
确认 `powershell.exe` 在 `PATH` 上,或者直接粘路径。
|
|
197
165
|
|
|
198
|
-
**Tasks
|
|
166
|
+
**Tasks 文件冲突 banner 出现**
|
|
199
167
|
|
|
200
|
-
Hive
|
|
201
|
-
from disk, or `Keep Local` to keep the editor contents and save again.
|
|
168
|
+
Hive 检测到磁盘上的 `.hive/tasks.md` 比 UI 里的新。`Reload` 接受磁盘版本,`Keep Local` 保留 UI 编辑并覆盖保存。
|
|
202
169
|
|
|
203
|
-
**Worker
|
|
170
|
+
**Worker 卡在 `working` 状态**
|
|
204
171
|
|
|
205
|
-
Hive
|
|
206
|
-
`idle` when they call `team report`. If a worker is blocked, stop or restart it
|
|
207
|
-
from the UI.
|
|
172
|
+
Hive 不通过进程活动猜测任务完成。Worker 只有在调 `team report` 时才会回到 `idle`。如果它确实卡了,从 UI 里 Stop 或 Restart。
|
|
208
173
|
|
|
209
|
-
##
|
|
174
|
+
## 开发
|
|
210
175
|
|
|
211
176
|
```bash
|
|
212
177
|
pnpm install
|
|
213
178
|
pnpm dev
|
|
214
179
|
```
|
|
215
180
|
|
|
216
|
-
|
|
217
|
-
`127.0.0.1:5180` and proxies API and WebSocket traffic to the runtime.
|
|
181
|
+
开发模式下 runtime 跑在 `127.0.0.1:4010`,Vite 跑在 `127.0.0.1:5180`,把 API 和 WebSocket 代理到 runtime。
|
|
218
182
|
|
|
219
|
-
|
|
183
|
+
常用命令:
|
|
220
184
|
|
|
221
185
|
```bash
|
|
222
186
|
pnpm check
|
|
@@ -224,35 +188,31 @@ pnpm build
|
|
|
224
188
|
pnpm test
|
|
225
189
|
```
|
|
226
190
|
|
|
227
|
-
|
|
191
|
+
预演 production 构建:
|
|
228
192
|
|
|
229
193
|
```bash
|
|
230
194
|
pnpm build
|
|
231
195
|
node dist/src/cli/hive.js --port 4010
|
|
232
196
|
```
|
|
233
197
|
|
|
234
|
-
|
|
235
|
-
needed after `pnpm build`.
|
|
198
|
+
Production 模式下 runtime 直接服务构建好的 web UI,不需要单独的 Vite。
|
|
236
199
|
|
|
237
|
-
##
|
|
200
|
+
## 发布
|
|
238
201
|
|
|
239
|
-
|
|
202
|
+
维护者本地预演:
|
|
240
203
|
|
|
241
204
|
```bash
|
|
242
205
|
pnpm release:dry
|
|
243
206
|
```
|
|
244
207
|
|
|
245
|
-
|
|
246
|
-
including manual Windows smoke steps.
|
|
208
|
+
完整 tag 发版清单见 [docs/release.md](docs/release.md),里面包含 Windows 手动 smoke 步骤。
|
|
247
209
|
|
|
248
|
-
|
|
249
|
-
verifies macOS, Ubuntu, and Windows, then publishes to npm with `NPM_TOKEN`.
|
|
210
|
+
带 `v*` 的 tag push 会触发 GitHub Actions release workflow。workflow 会在 macOS、Ubuntu、Windows 三平台验证,然后用 `NPM_TOKEN` 发布到 npm。
|
|
250
211
|
|
|
251
|
-
##
|
|
212
|
+
## 状态
|
|
252
213
|
|
|
253
|
-
Hive
|
|
254
|
-
while the core local orchestration model hardens.
|
|
214
|
+
Hive 正处于 alpha public preview 阶段。在本机调度模型稳定下来之前,UI 和协议细节还会继续调整。
|
|
255
215
|
|
|
256
216
|
## License
|
|
257
217
|
|
|
258
|
-
Apache-2.0
|
|
218
|
+
Apache-2.0。详见 [LICENSE](LICENSE)。
|
package/dist/src/cli/team.d.ts
CHANGED
|
@@ -1 +1,9 @@
|
|
|
1
|
+
export interface ParsedReportArgs {
|
|
2
|
+
artifacts: string[];
|
|
3
|
+
dispatchId: string | undefined;
|
|
4
|
+
result: string | null;
|
|
5
|
+
useStdin: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare const parseReportArgs: (args: string[], command?: string) => ParsedReportArgs;
|
|
8
|
+
export declare const readStdinToString: (command?: string) => Promise<string>;
|
|
1
9
|
export declare const runTeamCommand: (argv: string[]) => Promise<void>;
|
package/dist/src/cli/team.js
CHANGED
|
@@ -11,7 +11,15 @@ const TEAM_USAGE = [
|
|
|
11
11
|
' team list',
|
|
12
12
|
' team send <worker-name> "<task>"',
|
|
13
13
|
' team report "<result>" [--dispatch <dispatch-id>] [--artifact <path>]',
|
|
14
|
+
' team report --stdin [--dispatch <dispatch-id>] [--artifact <path>]',
|
|
14
15
|
' team status "<current status>" [--artifact <path>]',
|
|
16
|
+
' team status --stdin [--artifact <path>]',
|
|
17
|
+
'',
|
|
18
|
+
'Flags can appear in any order. Use --stdin to pipe long bodies and avoid shell-escaping issues.',
|
|
19
|
+
"Use a quoted heredoc (<<'EOF') so $vars, backticks, and command substitutions stay literal:",
|
|
20
|
+
" team report --stdin --dispatch <id> <<'EOF'",
|
|
21
|
+
' ... long report ...',
|
|
22
|
+
' EOF',
|
|
15
23
|
].join('\n');
|
|
16
24
|
const getHiveEnv = () => {
|
|
17
25
|
const values = Object.fromEntries(REQUIRED_ENV_KEYS.map((key) => [key, process.env[key]]));
|
|
@@ -68,47 +76,80 @@ const postJson = async (baseUrl, path, body) => {
|
|
|
68
76
|
}
|
|
69
77
|
return response;
|
|
70
78
|
};
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
79
|
+
const REPORT_USAGE = 'Usage: team report (<result> | --stdin) [--dispatch <dispatch-id>] [--artifact <path>]';
|
|
80
|
+
const STATUS_USAGE = 'Usage: team status (<current status> | --stdin) [--artifact <path>]';
|
|
81
|
+
const usageFor = (command) => (command === 'status' ? STATUS_USAGE : REPORT_USAGE);
|
|
82
|
+
const withUsage = (message, command) => `${message}\n\n${usageFor(command)}`;
|
|
83
|
+
export const parseReportArgs = (args, command = 'report') => {
|
|
84
|
+
const positionals = [];
|
|
78
85
|
const artifacts = [];
|
|
79
86
|
let dispatchId;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
87
|
+
let useStdin = false;
|
|
88
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
89
|
+
const arg = args[index];
|
|
90
|
+
if (arg === undefined)
|
|
91
|
+
continue;
|
|
92
|
+
// Backward-compatible no-op: reports are interpreted from their text.
|
|
93
|
+
if (arg === '--success' || arg === '--failed')
|
|
94
|
+
continue;
|
|
95
|
+
if (arg === '--stdin') {
|
|
96
|
+
useStdin = true;
|
|
84
97
|
continue;
|
|
85
98
|
}
|
|
86
99
|
if (arg === '--artifact') {
|
|
87
|
-
const
|
|
88
|
-
if (
|
|
89
|
-
throw new Error(
|
|
90
|
-
? 'Usage: team status <current status> [--artifact <path>]'
|
|
91
|
-
: 'Usage: team report <result> [--dispatch <dispatch-id>] [--artifact <path>]');
|
|
100
|
+
const next = args[index + 1];
|
|
101
|
+
if (next === undefined || next.startsWith('--')) {
|
|
102
|
+
throw new Error(withUsage('--artifact requires a value', command));
|
|
92
103
|
}
|
|
93
|
-
artifacts.push(
|
|
104
|
+
artifacts.push(next);
|
|
94
105
|
index += 1;
|
|
95
106
|
continue;
|
|
96
107
|
}
|
|
97
108
|
if (arg === '--dispatch') {
|
|
98
109
|
if (command === 'status') {
|
|
99
|
-
throw new Error('team status does not accept --dispatch; use team report for assigned work');
|
|
110
|
+
throw new Error(withUsage('team status does not accept --dispatch; use team report for assigned work', command));
|
|
100
111
|
}
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
103
|
-
throw new Error('
|
|
112
|
+
const next = args[index + 1];
|
|
113
|
+
if (next === undefined || next.startsWith('--')) {
|
|
114
|
+
throw new Error(withUsage('--dispatch requires a value', command));
|
|
104
115
|
}
|
|
105
|
-
dispatchId =
|
|
116
|
+
dispatchId = next;
|
|
106
117
|
index += 1;
|
|
107
118
|
continue;
|
|
108
119
|
}
|
|
109
|
-
|
|
120
|
+
if (arg.startsWith('--')) {
|
|
121
|
+
throw new Error(withUsage(`Unknown argument: ${arg}`, command));
|
|
122
|
+
}
|
|
123
|
+
positionals.push(arg);
|
|
124
|
+
}
|
|
125
|
+
if (useStdin && positionals.length > 0) {
|
|
126
|
+
throw new Error(withUsage('--stdin is mutually exclusive with a positional argument; pass the body on stdin or as an argument, not both', command));
|
|
127
|
+
}
|
|
128
|
+
if (!useStdin && positionals.length === 0) {
|
|
129
|
+
const label = command === 'status' ? '<current status>' : '<result>';
|
|
130
|
+
throw new Error(withUsage(`Missing ${label} (or pass --stdin to read it from stdin)`, command));
|
|
131
|
+
}
|
|
132
|
+
if (positionals.length > 1) {
|
|
133
|
+
const label = command === 'status' ? 'status' : 'result';
|
|
134
|
+
throw new Error(withUsage(`Expected exactly one ${label} positional, got ${positionals.length}: ${positionals
|
|
135
|
+
.map((value) => JSON.stringify(value))
|
|
136
|
+
.join(', ')}`, command));
|
|
137
|
+
}
|
|
138
|
+
return { result: useStdin ? null : (positionals[0] ?? null), artifacts, dispatchId, useStdin };
|
|
139
|
+
};
|
|
140
|
+
export const readStdinToString = async (command = 'report') => {
|
|
141
|
+
if (process.stdin.isTTY) {
|
|
142
|
+
throw new Error(withUsage('--stdin requires piped input, but stdin is a TTY. Did you forget to pipe content in?', command));
|
|
143
|
+
}
|
|
144
|
+
const chunks = [];
|
|
145
|
+
for await (const chunk of process.stdin) {
|
|
146
|
+
chunks.push(typeof chunk === 'string' ? Buffer.from(chunk) : chunk);
|
|
147
|
+
}
|
|
148
|
+
const content = Buffer.concat(chunks).toString('utf8');
|
|
149
|
+
if (!content.trim()) {
|
|
150
|
+
throw new Error(withUsage('--stdin received empty input', command));
|
|
110
151
|
}
|
|
111
|
-
return
|
|
152
|
+
return content;
|
|
112
153
|
};
|
|
113
154
|
export const runTeamCommand = async (argv) => {
|
|
114
155
|
const [command, ...args] = argv;
|
|
@@ -153,13 +194,14 @@ export const runTeamCommand = async (argv) => {
|
|
|
153
194
|
}
|
|
154
195
|
if (command === 'status') {
|
|
155
196
|
const report = parseReportArgs(args, 'status');
|
|
197
|
+
const body = report.useStdin ? await readStdinToString('status') : (report.result ?? '');
|
|
156
198
|
const env = getHiveEnv();
|
|
157
199
|
const baseUrl = getBaseUrl(env);
|
|
158
200
|
const response = await postJson(baseUrl, '/api/team/status', {
|
|
159
201
|
project_id: env.HIVE_PROJECT_ID,
|
|
160
202
|
from_agent_id: env.HIVE_AGENT_ID,
|
|
161
203
|
token: env.HIVE_AGENT_TOKEN,
|
|
162
|
-
result:
|
|
204
|
+
result: body,
|
|
163
205
|
artifacts: report.artifacts,
|
|
164
206
|
});
|
|
165
207
|
const payload = (await response.json());
|
|
@@ -170,6 +212,7 @@ export const runTeamCommand = async (argv) => {
|
|
|
170
212
|
}
|
|
171
213
|
if (command === 'report') {
|
|
172
214
|
const report = parseReportArgs(args);
|
|
215
|
+
const body = report.useStdin ? await readStdinToString('report') : (report.result ?? '');
|
|
173
216
|
const env = getHiveEnv();
|
|
174
217
|
const baseUrl = getBaseUrl(env);
|
|
175
218
|
const response = await postJson(baseUrl, '/api/team/report', {
|
|
@@ -177,7 +220,7 @@ export const runTeamCommand = async (argv) => {
|
|
|
177
220
|
project_id: env.HIVE_PROJECT_ID,
|
|
178
221
|
from_agent_id: env.HIVE_AGENT_ID,
|
|
179
222
|
token: env.HIVE_AGENT_TOKEN,
|
|
180
|
-
result:
|
|
223
|
+
result: body,
|
|
181
224
|
artifacts: report.artifacts,
|
|
182
225
|
});
|
|
183
226
|
const payload = (await response.json());
|
package/dist/src/cli/team.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../../src/cli/team.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,MAAM,iBAAiB,GAAG;IACxB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,kBAAkB;CACV,CAAA;AAWV,MAAM,UAAU,GAAG;IACjB,QAAQ;IACR,aAAa;IACb,oCAAoC;IACpC,yEAAyE;IACzE,sDAAsD;
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../../src/cli/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,14 +40,14 @@ export const createAgentLaunchCache = (store) => {
|
|
|
40
40
|
resumeArgsTemplate: input.resumeArgsTemplate ?? null,
|
|
41
41
|
sessionIdCapture: input.sessionIdCapture ?? null,
|
|
42
42
|
};
|
|
43
|
+
store.saveLaunchConfig(workspaceId, agentId, normalized);
|
|
43
44
|
launchConfigs.set(cacheKey(workspaceId, agentId), normalized);
|
|
44
45
|
workspaceByAgentId.set(agentId, workspaceId);
|
|
45
|
-
store.saveLaunchConfig(workspaceId, agentId, normalized);
|
|
46
46
|
},
|
|
47
47
|
remove(workspaceId, agentId) {
|
|
48
|
+
store.deleteLaunchConfig(workspaceId, agentId);
|
|
48
49
|
launchConfigs.delete(cacheKey(workspaceId, agentId));
|
|
49
50
|
workspaceByAgentId.delete(agentId);
|
|
50
|
-
store.deleteLaunchConfig(workspaceId, agentId);
|
|
51
51
|
},
|
|
52
52
|
setWorkspaceId(agentId, workspaceId) {
|
|
53
53
|
workspaceByAgentId.set(agentId, workspaceId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-launch-cache.js","sourceRoot":"","sources":["../../../src/server/agent-launch-cache.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAA4B,EAAE,EAAE;IACrE,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkC,CAAA;IAC/D,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACpD,MAAM,QAAQ,GAAG,CAAC,WAAmB,EAAE,OAAe,EAAE,EAAE,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAA;IACtF,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC5C,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;YACrE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;QACtD,CAAC;IACH,CAAC,CAAA;IAED,IAAI,EAAE,CAAA;IAEN,OAAO;QACL,GAAG,CAAC,WAAmB,EAAE,OAAe;YACtC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;YAChE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAA;YACzB,IAAI,EAAE,CAAA;YACN,MAAM,cAAc,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;YACxE,IAAI,cAAc;gBAAE,OAAO,cAAc,CAAA;YACzC,MAAM,IAAI,KAAK,CAAC,kCAAkC,OAAO,EAAE,CAAC,CAAA;QAC9D,CAAC;QACD,IAAI,CAAC,WAAmB,EAAE,OAAe;YACvC,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;YAChE,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAA;YACzB,IAAI,EAAE,CAAA;YACN,OAAO,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QAC1D,CAAC;QACD,cAAc,CAAC,OAAe;YAC5B,OAAO,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,CAAC,WAAmB,EAAE,OAAe,EAAE,KAA6B;YACtE,MAAM,UAAU,GAAG;gBACjB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;gBACtB,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;gBAC9C,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;gBACpD,0BAA0B,EAAE,KAAK,CAAC,0BAA0B,IAAI,KAAK;gBACrE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI;gBACpD,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;aACjD,CAAA;YACD,
|
|
1
|
+
{"version":3,"file":"agent-launch-cache.js","sourceRoot":"","sources":["../../../src/server/agent-launch-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { AgentLaunchConfigInput } from './agent-run-store.js';
|
|
2
|
+
import type { SettingsStore } from './settings-store.js';
|
|
3
|
+
export declare const resolveCommandPresetLaunchConfig: (settings: SettingsStore, commandPresetId: string) => AgentLaunchConfigInput | undefined;
|
|
4
|
+
export declare const resolveStartupCommandLaunchConfig: (settings: SettingsStore, startupCommand: string, commandPresetId?: string | null) => AgentLaunchConfigInput | undefined;
|