@tt-a1i/hive 0.6.0-alpha.3 → 0.6.0-alpha.5
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 +57 -0
- package/README.md +15 -4
- package/README.zh-CN.md +6 -1
- package/dist/src/cli/hive.d.ts +5 -1
- package/dist/src/cli/hive.js +14 -16
- package/dist/src/cli/hive.js.map +1 -1
- 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-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/app.d.ts +3 -1
- package/dist/src/server/app.js +3 -1
- package/dist/src/server/app.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 +7 -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/package-version.d.ts +2 -0
- package/dist/src/server/package-version.js +18 -0
- package/dist/src/server/package-version.js.map +1 -0
- 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-version.d.ts +2 -0
- package/dist/src/server/routes-version.js +7 -0
- package/dist/src/server/routes-version.js.map +1 -0
- package/dist/src/server/routes-workspaces.js +7 -7
- package/dist/src/server/routes-workspaces.js.map +1 -1
- package/dist/src/server/routes.js +2 -0
- package/dist/src/server/routes.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-serializer.d.ts +1 -1
- package/dist/src/server/team-list-serializer.js +2 -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/version-service.d.ts +16 -0
- package/dist/src/server/version-service.js +70 -0
- package/dist/src/server/version-service.js.map +1 -0
- 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 +6 -3
- package/package.json +5 -1
- 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-CMHbdGhT.css +1 -0
- package/web/dist/assets/index-CkY03NZW.js +76 -0
- package/web/dist/index.html +2 -2
- package/web/dist/assets/index-CIlOwuEZ.js +0 -70
- package/web/dist/assets/index-eyw1Uar8.css +0 -1
|
@@ -1,20 +1,16 @@
|
|
|
1
1
|
export const createAgentSessionStore = (db) => {
|
|
2
2
|
const lastSessionIds = new Map();
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
lastSessionIds.set(`${row.workspace_id}:${row.agent_id}`, row.last_session_id);
|
|
8
|
-
}
|
|
3
|
+
for (const row of db
|
|
4
|
+
.prepare('SELECT agent_id, workspace_id, last_session_id FROM agent_sessions ORDER BY updated_at ASC')
|
|
5
|
+
.all()) {
|
|
6
|
+
lastSessionIds.set(`${row.workspace_id}:${row.agent_id}`, row.last_session_id);
|
|
9
7
|
}
|
|
10
8
|
return {
|
|
11
9
|
clearLastSessionId(workspaceId, agentId) {
|
|
12
|
-
|
|
13
|
-
db.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
})();
|
|
17
|
-
}
|
|
10
|
+
db.transaction(() => {
|
|
11
|
+
db.prepare('DELETE FROM agent_sessions WHERE workspace_id = ? AND agent_id = ?').run(workspaceId, agentId);
|
|
12
|
+
db.prepare('UPDATE workers SET last_session_id = NULL WHERE id = ? AND workspace_id = ?').run(agentId, workspaceId);
|
|
13
|
+
})();
|
|
18
14
|
lastSessionIds.delete(`${workspaceId}:${agentId}`);
|
|
19
15
|
},
|
|
20
16
|
getLastSessionId(workspaceId, agentId) {
|
|
@@ -22,29 +18,27 @@ export const createAgentSessionStore = (db) => {
|
|
|
22
18
|
},
|
|
23
19
|
setLastSessionId(workspaceId, agentId, sessionId) {
|
|
24
20
|
const updatedAt = Date.now();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
db.transaction(() => {
|
|
37
|
-
db.prepare(`INSERT INTO agent_sessions (agent_id, workspace_id, last_session_id, updated_at)
|
|
38
|
-
VALUES (?, ?, ?, ?)
|
|
39
|
-
ON CONFLICT(workspace_id, agent_id) DO UPDATE SET
|
|
40
|
-
workspace_id = excluded.workspace_id,
|
|
41
|
-
last_session_id = excluded.last_session_id,
|
|
42
|
-
updated_at = excluded.updated_at`).run(agentId, workspaceId, sessionId, updatedAt);
|
|
43
|
-
if (workerExists) {
|
|
44
|
-
db.prepare('UPDATE workers SET last_session_id = ? WHERE id = ? AND workspace_id = ?').run(sessionId, agentId, workspaceId);
|
|
45
|
-
}
|
|
46
|
-
})();
|
|
21
|
+
const workerExists = Boolean(db
|
|
22
|
+
.prepare('SELECT 1 FROM workers WHERE workspace_id = ? AND id = ?')
|
|
23
|
+
.get(workspaceId, agentId));
|
|
24
|
+
const isOrchestrator = agentId === `${workspaceId}:orchestrator`;
|
|
25
|
+
const workspaceExists = isOrchestrator &&
|
|
26
|
+
Boolean(db.prepare('SELECT 1 FROM workspaces WHERE id = ?').get(workspaceId));
|
|
27
|
+
if (!workerExists && !workspaceExists) {
|
|
28
|
+
lastSessionIds.delete(`${workspaceId}:${agentId}`);
|
|
29
|
+
return;
|
|
47
30
|
}
|
|
31
|
+
db.transaction(() => {
|
|
32
|
+
db.prepare(`INSERT INTO agent_sessions (agent_id, workspace_id, last_session_id, updated_at)
|
|
33
|
+
VALUES (?, ?, ?, ?)
|
|
34
|
+
ON CONFLICT(workspace_id, agent_id) DO UPDATE SET
|
|
35
|
+
workspace_id = excluded.workspace_id,
|
|
36
|
+
last_session_id = excluded.last_session_id,
|
|
37
|
+
updated_at = excluded.updated_at`).run(agentId, workspaceId, sessionId, updatedAt);
|
|
38
|
+
if (workerExists) {
|
|
39
|
+
db.prepare('UPDATE workers SET last_session_id = ? WHERE id = ? AND workspace_id = ?').run(sessionId, agentId, workspaceId);
|
|
40
|
+
}
|
|
41
|
+
})();
|
|
48
42
|
lastSessionIds.set(`${workspaceId}:${agentId}`, sessionId);
|
|
49
43
|
},
|
|
50
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session-store.js","sourceRoot":"","sources":["../../../src/server/agent-session-store.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-session-store.js","sourceRoot":"","sources":["../../../src/server/agent-session-store.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAY,EAAqB,EAAE;IACzE,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAA;IAEhD,KAAK,MAAM,GAAG,IAAI,EAAE;SACjB,OAAO,CACN,4FAA4F,CAC7F;SACA,GAAG,EAAuB,EAAE,CAAC;QAC9B,cAAc,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,eAAe,CAAC,CAAA;IAChF,CAAC;IAED,OAAO;QACL,kBAAkB,CAAC,WAAW,EAAE,OAAO;YACrC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClB,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,CAClF,WAAW,EACX,OAAO,CACR,CAAA;gBACD,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;YAC7B,CAAC,CAAC,EAAE,CAAA;YACJ,cAAc,CAAC,MAAM,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,CAAA;QACpD,CAAC;QACD,gBAAgB,CAAC,WAAW,EAAE,OAAO;YACnC,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,CAAA;QACxD,CAAC;QACD,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,MAAM,YAAY,GAAG,OAAO,CAC1B,EAAE;iBACC,OAAO,CAAC,yDAAyD,CAAC;iBAClE,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAC7B,CAAA;YACD,MAAM,cAAc,GAAG,OAAO,KAAK,GAAG,WAAW,eAAe,CAAA;YAChE,MAAM,eAAe,GACnB,cAAc;gBACd,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAA;YAC/E,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE,CAAC;gBACtC,cAAc,CAAC,MAAM,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC,CAAA;gBAClD,OAAM;YACR,CAAC;YACD,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClB,EAAE,CAAC,OAAO,CACR;;;;;8CAKoC,CACrC,CAAC,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC,CAAA;gBACjD,IAAI,YAAY,EAAE,CAAC;oBACjB,EAAE,CAAC,OAAO,CACR,0EAA0E,CAC3E,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC,CAAC,EAAE,CAAA;YACJ,cAAc,CAAC,GAAG,CAAC,GAAG,WAAW,IAAI,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC5D,CAAC;KACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -18,7 +18,7 @@ export const buildAgentStartupInstructions = ({ agent, workspace, }) => {
|
|
|
18
18
|
lines.push('你的职责:', '- 直接响应 user,澄清需求并拆解任务', `- 维护 ${TASKS_RELATIVE_PATH}`, '- 按 worker 名称派单,并根据汇报推进下一步', '', '可用 team 命令:', '- team list', '- team send <worker-name> "<task>"', '', '派单时必须使用 worker name,不要使用 worker id。', '', 'Hive worker 派单规则:', ...getHiveTeamRules(agent));
|
|
19
19
|
}
|
|
20
20
|
else {
|
|
21
|
-
lines.push('可用 team 命令:', '- team report "<完整汇报>"', '- team status "<当前状态>"', '', '完成任务后必须执行 `team report "<结论>"`。', '失败、阻塞或部分完成也用 `team report "<当前状态与原因>"` 汇报。', '没有进行中的任务时,用 `team status "<当前状态>"` 汇报接入、待命或阻塞状态。', '不要调用 team send;worker 之间不能直接派单。', '', 'Hive worker 边界:', ...getHiveTeamRules(agent));
|
|
21
|
+
lines.push('可用 team 命令:', '- team report "<完整汇报>" [--dispatch <id>] [--artifact <path>] 完成/失败/阻塞汇报', '- team report --stdin [--dispatch <id>] [--artifact <path>] 同上,从 stdin 读正文(适合多行/含引号/特殊字符)', '- team status "<当前状态>" [--artifact <path>] 中段进度/待命/接入状态', '- team status --stdin [--artifact <path>] 同上,从 stdin 读正文', '- team list 查看 workspace 内的 worker(含状态)', '- team --help 仅查命令用法;**不是**汇报手段', '', '语法要点:', '- 正文是第一个 positional argument,flag 顺序任意:`team report "结论" --dispatch X` 和 `team report --dispatch X "结论"` 都成立。', "- 长正文(多行 / 含引号 / shell 特殊字符 / heredoc)一律走 `--stdin`,并用 *quoted* heredoc(`<<'EOF'`)防止 shell 展开 $vars / 反引号 / 命令替换:", " 例:`team report --stdin --dispatch <id> <<'EOF'`", ' `... 长报告(含 $VAR、`backtick`、"引号" 都按字面量保留)...`', ' `EOF`', '- CLI 报错会同时打印 USAGE,可直接对照修正参数。', '', '完成任务后必须执行 `team report "<结论>"`。', '失败、阻塞或部分完成也用 `team report "<当前状态与原因>"` 汇报。', '没有进行中的任务时,用 `team status "<当前状态>"` 汇报接入、待命或阻塞状态。', '不要调用 team send;worker 之间不能直接派单。', '', 'Hive worker 边界:', ...getHiveTeamRules(agent));
|
|
22
22
|
}
|
|
23
23
|
lines.push('');
|
|
24
24
|
return lines.join('\n');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-startup-instructions.js","sourceRoot":"","sources":["../../../src/server/agent-startup-instructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE,CAAC,sCAAsC,SAAS,CAAC,EAAE,cAAc,KAAK,CAAC,EAAE,EAAE,CAAA;AAEhF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAA;AAE5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE;IACH,MAAM,KAAK,GAAG;QACZ,kBAAkB;QAClB,EAAE;QACF,8BAA8B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpD,iBAAiB,SAAS,CAAC,IAAI,EAAE;QACjC,SAAS,SAAS,CAAC,IAAI,EAAE;QACzB,8BAA8B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpD,EAAE;QACF,QAAQ,KAAK,CAAC,WAAW,EAAE;QAC3B,EAAE;KACH,CAAA;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,OAAO,EACP,uBAAuB,EACvB,QAAQ,mBAAmB,EAAE,EAC7B,4BAA4B,EAC5B,EAAE,EACF,aAAa,EACb,aAAa,EACb,oCAAoC,EACpC,EAAE,EACF,qCAAqC,EACrC,EAAE,EACF,mBAAmB,EACnB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAC3B,CAAA;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"agent-startup-instructions.js","sourceRoot":"","sources":["../../../src/server/agent-startup-instructions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE,CAAC,sCAAsC,SAAS,CAAC,EAAE,cAAc,KAAK,CAAC,EAAE,EAAE,CAAA;AAEhF,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,EAC7C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,CAAA;AAE5D,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,EAC5C,KAAK,EACL,SAAS,GAIV,EAAE,EAAE;IACH,MAAM,KAAK,GAAG;QACZ,kBAAkB;QAClB,EAAE;QACF,8BAA8B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpD,iBAAiB,SAAS,CAAC,IAAI,EAAE;QACjC,SAAS,SAAS,CAAC,IAAI,EAAE;QACzB,8BAA8B,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACpD,EAAE;QACF,QAAQ,KAAK,CAAC,WAAW,EAAE;QAC3B,EAAE;KACH,CAAA;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,OAAO,EACP,uBAAuB,EACvB,QAAQ,mBAAmB,EAAE,EAC7B,4BAA4B,EAC5B,EAAE,EACF,aAAa,EACb,aAAa,EACb,oCAAoC,EACpC,EAAE,EACF,qCAAqC,EACrC,EAAE,EACF,mBAAmB,EACnB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAC3B,CAAA;IACH,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CACR,aAAa,EACb,4EAA4E,EAC5E,mGAAmG,EACnG,+EAA+E,EAC/E,mFAAmF,EACnF,gGAAgG,EAChG,sFAAsF,EACtF,EAAE,EACF,OAAO,EACP,+GAA+G,EAC/G,mHAAmH,EACnH,mDAAmD,EACnD,qDAAqD,EACrD,cAAc,EACd,gCAAgC,EAChC,EAAE,EACF,iCAAiC,EACjC,4CAA4C,EAC5C,kDAAkD,EAClD,iCAAiC,EACjC,EAAE,EACF,iBAAiB,EACjB,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC,CAAA"}
|
|
@@ -4,7 +4,7 @@ export interface AppStateRecord {
|
|
|
4
4
|
key: string;
|
|
5
5
|
value: AppStateValue;
|
|
6
6
|
}
|
|
7
|
-
export declare const createAppStateStore: (db: Database
|
|
7
|
+
export declare const createAppStateStore: (db: Database) => {
|
|
8
8
|
get: (key: string) => AppStateRecord | undefined;
|
|
9
9
|
set: (key: string, value: AppStateValue) => void;
|
|
10
10
|
};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
export const createAppStateStore = (db) => {
|
|
2
2
|
const get = (key) => {
|
|
3
|
-
if (!db)
|
|
4
|
-
return undefined;
|
|
5
3
|
const row = db.prepare('SELECT key, value FROM app_state WHERE key = ?').get(key);
|
|
6
4
|
return row ? { key: row.key, value: row.value } : undefined;
|
|
7
5
|
};
|
|
8
6
|
const set = (key, value) => {
|
|
9
|
-
db
|
|
7
|
+
db.prepare(`INSERT INTO app_state (key, value, updated_at)
|
|
10
8
|
VALUES (?, ?, ?)
|
|
11
9
|
ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = excluded.updated_at`).run(key, value, Date.now());
|
|
12
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-state-store.js","sourceRoot":"","sources":["../../../src/server/app-state-store.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"app-state-store.js","sourceRoot":"","sources":["../../../src/server/app-state-store.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAY,EAAE,EAAE;IAClD,MAAM,GAAG,GAAG,CAAC,GAAW,EAA8B,EAAE;QACtD,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,GAAG,CAEnE,CAAA;QACb,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAA;IAC7D,CAAC,CAAA;IAED,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,KAAoB,EAAE,EAAE;QAChD,EAAE,CAAC,OAAO,CACR;;+FAEyF,CAC1F,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;IAC/B,CAAC,CAAA;IAED,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAA;AACrB,CAAC,CAAA"}
|
package/dist/src/server/app.d.ts
CHANGED
|
@@ -2,12 +2,14 @@ import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
|
2
2
|
import { type PickFolderResponse } from './fs-pick-folder.js';
|
|
3
3
|
import type { RuntimeStore } from './runtime-store.js';
|
|
4
4
|
import { type TasksFileService } from './tasks-file.js';
|
|
5
|
+
import { type VersionService } from './version-service.js';
|
|
5
6
|
interface CreateAppOptions {
|
|
6
7
|
store: RuntimeStore;
|
|
7
8
|
pickFolderService?: () => Promise<PickFolderResponse>;
|
|
8
9
|
tasksFileService?: TasksFileService;
|
|
10
|
+
versionService?: VersionService;
|
|
9
11
|
}
|
|
10
|
-
export declare const createApp: ({ store, pickFolderService, tasksFileService, }: CreateAppOptions) => {
|
|
12
|
+
export declare const createApp: ({ store, pickFolderService, tasksFileService, versionService, }: CreateAppOptions) => {
|
|
11
13
|
server: import("http").Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
12
14
|
store: RuntimeStore;
|
|
13
15
|
};
|
package/dist/src/server/app.js
CHANGED
|
@@ -9,6 +9,7 @@ import { assertLocalRequest } from './local-request-guard.js';
|
|
|
9
9
|
import { matchRoute } from './routes.js';
|
|
10
10
|
import { createTasksFileService } from './tasks-file.js';
|
|
11
11
|
import { createTerminalWebSocketServer } from './terminal-ws-server.js';
|
|
12
|
+
import { createVersionService } from './version-service.js';
|
|
12
13
|
const getDefaultStaticDir = () => {
|
|
13
14
|
const moduleDir = dirname(fileURLToPath(import.meta.url));
|
|
14
15
|
if (moduleDir.includes(`${sep}dist${sep}src${sep}`)) {
|
|
@@ -74,7 +75,7 @@ const sendJson = (response, statusCode, body) => {
|
|
|
74
75
|
response.setHeader('content-type', 'application/json; charset=utf-8');
|
|
75
76
|
response.end(JSON.stringify(body));
|
|
76
77
|
};
|
|
77
|
-
export const createApp = ({ store, pickFolderService = pickFolder, tasksFileService = createTasksFileService(), }) => {
|
|
78
|
+
export const createApp = ({ store, pickFolderService = pickFolder, tasksFileService = createTasksFileService(), versionService = createVersionService(), }) => {
|
|
78
79
|
const staticDir = process.env.HIVE_STATIC_DIR ?? getDefaultStaticDir();
|
|
79
80
|
const staticAvailablePromise = canServeStatic(staticDir);
|
|
80
81
|
const server = createServer(async (request, response) => {
|
|
@@ -90,6 +91,7 @@ export const createApp = ({ store, pickFolderService = pickFolder, tasksFileServ
|
|
|
90
91
|
store,
|
|
91
92
|
tasksFileService,
|
|
92
93
|
pickFolderService,
|
|
94
|
+
versionService,
|
|
93
95
|
params: match.params,
|
|
94
96
|
});
|
|
95
97
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAA;AACnF,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAExC,OAAO,EAA2B,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,OAAO,EAAE,sBAAsB,EAAyB,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,7 +20,7 @@ export interface CommandPresetInput {
|
|
|
20
20
|
sessionIdCapture: SessionIdCaptureConfig | null;
|
|
21
21
|
yoloArgsTemplate: string[] | null;
|
|
22
22
|
}
|
|
23
|
-
export declare const createCommandPresetStore: (db: Database
|
|
23
|
+
export declare const createCommandPresetStore: (db: Database) => {
|
|
24
24
|
create: (input: CommandPresetInput) => {
|
|
25
25
|
isBuiltin: boolean;
|
|
26
26
|
displayName: string;
|
|
@@ -37,8 +37,6 @@ const toRecord = (row) => ({
|
|
|
37
37
|
});
|
|
38
38
|
export const createCommandPresetStore = (db) => {
|
|
39
39
|
const get = (id) => {
|
|
40
|
-
if (!db)
|
|
41
|
-
return undefined;
|
|
42
40
|
const row = db
|
|
43
41
|
.prepare(`SELECT id, display_name, command, args, env, resume_args_template, session_id_capture, yolo_args_template, is_builtin
|
|
44
42
|
FROM command_presets WHERE id = ?`)
|
|
@@ -46,8 +44,6 @@ export const createCommandPresetStore = (db) => {
|
|
|
46
44
|
return row ? toRecord(row) : undefined;
|
|
47
45
|
};
|
|
48
46
|
const list = () => {
|
|
49
|
-
if (!db)
|
|
50
|
-
return [];
|
|
51
47
|
return db
|
|
52
48
|
.prepare(`SELECT id, display_name, command, args, env, resume_args_template, session_id_capture, yolo_args_template, is_builtin
|
|
53
49
|
FROM command_presets ORDER BY is_builtin DESC, created_at ASC`)
|
|
@@ -56,8 +52,6 @@ export const createCommandPresetStore = (db) => {
|
|
|
56
52
|
};
|
|
57
53
|
const create = (input) => {
|
|
58
54
|
const record = { id: randomUUID(), ...input, isBuiltin: false };
|
|
59
|
-
if (!db)
|
|
60
|
-
return record;
|
|
61
55
|
const now = Date.now();
|
|
62
56
|
db.prepare(`INSERT INTO command_presets (
|
|
63
57
|
id, display_name, command, args, env, resume_args_template, session_id_capture,
|
|
@@ -71,7 +65,7 @@ export const createCommandPresetStore = (db) => {
|
|
|
71
65
|
throw new Error(`Command preset not found: ${id}`);
|
|
72
66
|
if (current.isBuiltin)
|
|
73
67
|
throw new ConflictError(`Builtin command preset is read-only: ${id}`);
|
|
74
|
-
db
|
|
68
|
+
db.prepare(`UPDATE command_presets
|
|
75
69
|
SET display_name = ?, command = ?, args = ?, env = ?, resume_args_template = ?,
|
|
76
70
|
session_id_capture = ?, yolo_args_template = ?, updated_at = ?
|
|
77
71
|
WHERE id = ?`).run(input.displayName, input.command, serializeArgs(input.args), serializeEnv(input.env), input.resumeArgsTemplate, serializeBlob(input.sessionIdCapture), serializeYolo(input.yoloArgsTemplate), Date.now(), id);
|
|
@@ -83,7 +77,7 @@ export const createCommandPresetStore = (db) => {
|
|
|
83
77
|
throw new Error(`Command preset not found: ${id}`);
|
|
84
78
|
if (current.isBuiltin)
|
|
85
79
|
throw new ConflictError(`Builtin command preset is read-only: ${id}`);
|
|
86
|
-
db
|
|
80
|
+
db.prepare('DELETE FROM command_presets WHERE id = ?').run(id);
|
|
87
81
|
};
|
|
88
82
|
return { create, get, list, remove, update };
|
|
89
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-preset-store.js","sourceRoot":"","sources":["../../../src/server/command-preset-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAIxC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,qBAAqB,EAA+B,MAAM,sBAAsB,CAAA;AAwBzF,MAAM,gBAAgB,GAAG,CAAC,KAAoB,EAAE,EAAE;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAA;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAChG,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,KAAoB,EAAE,EAAE;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAA;IAC3C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACnE,CAAC,CAAC,MAAM,CAAC,WAAW,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC3B,CAAC,KAAK,EAA6B,EAAE,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,QAAQ,CACnE,CACF;QACH,CAAC,CAAC,EAAE,CAAA;AACR,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC7C,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAA;IACvB,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;AAC9D,MAAM,YAAY,GAAG,CAAC,GAA2B,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AACzE,MAAM,aAAa,GAAG,CAAC,KAAoC,EAAE,EAAE,CAC7D,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACtC,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;AAExF,MAAM,QAAQ,GAAG,CAAC,GAUjB,EAAuB,EAAE,CAAC,CAAC;IAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;IACV,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7B,OAAO,EAAE,GAAG,CAAC,OAAO;IACpB,IAAI,EAAE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;IAChC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;IACtB,kBAAkB,EAAE,GAAG,CAAC,oBAAoB;IAC5C,gBAAgB,EAAE,aAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACvD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAC1D,SAAS,EAAE,GAAG,CAAC,UAAU,KAAK,CAAC;CAChC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"command-preset-store.js","sourceRoot":"","sources":["../../../src/server/command-preset-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,19 +33,33 @@ export interface ListDispatchesOptions {
|
|
|
33
33
|
offset?: number;
|
|
34
34
|
status?: DispatchStatus;
|
|
35
35
|
}
|
|
36
|
-
export declare const createDispatchLedgerStore: (db: Database
|
|
36
|
+
export declare const createDispatchLedgerStore: (db: Database) => {
|
|
37
37
|
createDispatch: (input: CreateDispatchInput) => DispatchRecord;
|
|
38
38
|
deleteDispatch: (dispatchId: string) => void;
|
|
39
39
|
deleteWorkerDispatches: (workspaceId: string, workerId: string) => void;
|
|
40
40
|
deleteWorkspaceDispatches: (workspaceId: string) => void;
|
|
41
41
|
findOpenDispatch: (workspaceId: string, toAgentId: string, dispatchId?: string) => DispatchRecord | undefined;
|
|
42
|
-
listOpenDispatchKinds: () => {
|
|
42
|
+
listOpenDispatchKinds: () => Array<{
|
|
43
43
|
type: "send";
|
|
44
44
|
worker_id: string;
|
|
45
45
|
workspace_id: string;
|
|
46
|
-
}
|
|
46
|
+
}>;
|
|
47
47
|
listWorkspaceDispatches: (workspaceId: string, options?: ListDispatchesOptions) => DispatchRecord[];
|
|
48
|
-
markReportedByWorker: (input: ReportDispatchInput) =>
|
|
48
|
+
markReportedByWorker: (input: ReportDispatchInput) => {
|
|
49
|
+
artifacts: string[];
|
|
50
|
+
reportedAt: number;
|
|
51
|
+
reportText: string;
|
|
52
|
+
status: "reported";
|
|
53
|
+
createdAt: number;
|
|
54
|
+
deliveredAt: number | null;
|
|
55
|
+
fromAgentId: string | null;
|
|
56
|
+
id: string;
|
|
57
|
+
sequence: number | null;
|
|
58
|
+
submittedAt: number | null;
|
|
59
|
+
text: string;
|
|
60
|
+
toAgentId: string;
|
|
61
|
+
workspaceId: string;
|
|
62
|
+
} | undefined;
|
|
49
63
|
markSubmitted: (dispatchId: string) => void;
|
|
50
64
|
};
|
|
51
65
|
export {};
|
|
@@ -28,7 +28,6 @@ const toRecord = (row) => ({
|
|
|
28
28
|
workspaceId: row.workspace_id,
|
|
29
29
|
});
|
|
30
30
|
export const createDispatchLedgerStore = (db) => {
|
|
31
|
-
const memoryDispatches = new Map();
|
|
32
31
|
const createDispatch = (input) => {
|
|
33
32
|
const record = {
|
|
34
33
|
artifacts: [],
|
|
@@ -45,11 +44,6 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
45
44
|
toAgentId: input.toAgentId,
|
|
46
45
|
workspaceId: input.workspaceId,
|
|
47
46
|
};
|
|
48
|
-
if (!db) {
|
|
49
|
-
record.sequence = memoryDispatches.size + 1;
|
|
50
|
-
memoryDispatches.set(record.id, record);
|
|
51
|
-
return record;
|
|
52
|
-
}
|
|
53
47
|
db.prepare(`INSERT INTO dispatches (
|
|
54
48
|
id,
|
|
55
49
|
workspace_id,
|
|
@@ -67,36 +61,15 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
67
61
|
return record;
|
|
68
62
|
};
|
|
69
63
|
const deleteDispatch = (dispatchId) => {
|
|
70
|
-
if (!db) {
|
|
71
|
-
memoryDispatches.delete(dispatchId);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
64
|
db.prepare('DELETE FROM dispatches WHERE id = ?').run(dispatchId);
|
|
75
65
|
};
|
|
76
66
|
const markSubmitted = (dispatchId) => {
|
|
77
67
|
const submittedAt = Date.now();
|
|
78
|
-
if (!db) {
|
|
79
|
-
const record = memoryDispatches.get(dispatchId);
|
|
80
|
-
if (record) {
|
|
81
|
-
record.status = 'submitted';
|
|
82
|
-
record.submittedAt = submittedAt;
|
|
83
|
-
}
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
68
|
db.prepare(`UPDATE dispatches
|
|
87
69
|
SET status = ?, submitted_at = ?
|
|
88
70
|
WHERE id = ?`).run('submitted', submittedAt, dispatchId);
|
|
89
71
|
};
|
|
90
72
|
const findOpenDispatch = (workspaceId, toAgentId, dispatchId) => {
|
|
91
|
-
if (!db) {
|
|
92
|
-
const openDispatches = Array.from(memoryDispatches.values()).filter((record) => record.workspaceId === workspaceId &&
|
|
93
|
-
record.toAgentId === toAgentId &&
|
|
94
|
-
record.status !== 'reported');
|
|
95
|
-
if (dispatchId) {
|
|
96
|
-
return openDispatches.find((record) => record.id === dispatchId);
|
|
97
|
-
}
|
|
98
|
-
return openDispatches.sort((a, b) => (a.sequence ?? a.createdAt) - (b.sequence ?? b.createdAt))[0];
|
|
99
|
-
}
|
|
100
73
|
if (dispatchId) {
|
|
101
74
|
const row = db
|
|
102
75
|
.prepare(`SELECT *
|
|
@@ -126,13 +99,6 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
126
99
|
return undefined;
|
|
127
100
|
}
|
|
128
101
|
const reportedAt = Date.now();
|
|
129
|
-
if (!db) {
|
|
130
|
-
dispatch.status = 'reported';
|
|
131
|
-
dispatch.reportedAt = reportedAt;
|
|
132
|
-
dispatch.reportText = input.reportText;
|
|
133
|
-
dispatch.artifacts = input.artifacts;
|
|
134
|
-
return dispatch;
|
|
135
|
-
}
|
|
136
102
|
db.prepare(`UPDATE dispatches
|
|
137
103
|
SET status = ?,
|
|
138
104
|
reported_at = ?,
|
|
@@ -150,13 +116,6 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
150
116
|
const listWorkspaceDispatches = (workspaceId, options = {}) => {
|
|
151
117
|
const offset = options.offset ?? 0;
|
|
152
118
|
const limit = options.limit ?? 100;
|
|
153
|
-
if (!db) {
|
|
154
|
-
return Array.from(memoryDispatches.values())
|
|
155
|
-
.filter((record) => record.workspaceId === workspaceId &&
|
|
156
|
-
(options.status === undefined || record.status === options.status))
|
|
157
|
-
.sort((a, b) => (a.sequence ?? a.createdAt) - (b.sequence ?? b.createdAt))
|
|
158
|
-
.slice(offset, offset + limit);
|
|
159
|
-
}
|
|
160
119
|
if (options.status) {
|
|
161
120
|
return db
|
|
162
121
|
.prepare(`SELECT *
|
|
@@ -176,16 +135,6 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
176
135
|
.all(workspaceId, limit, offset).map(toRecord);
|
|
177
136
|
};
|
|
178
137
|
const listOpenDispatchKinds = () => {
|
|
179
|
-
if (!db) {
|
|
180
|
-
return Array.from(memoryDispatches.values())
|
|
181
|
-
.filter((record) => record.status !== 'reported')
|
|
182
|
-
.sort((a, b) => (a.sequence ?? a.createdAt) - (b.sequence ?? b.createdAt))
|
|
183
|
-
.map((record) => ({
|
|
184
|
-
type: 'send',
|
|
185
|
-
worker_id: record.toAgentId,
|
|
186
|
-
workspace_id: record.workspaceId,
|
|
187
|
-
}));
|
|
188
|
-
}
|
|
189
138
|
return db
|
|
190
139
|
.prepare(`SELECT workspace_id, to_agent_id AS worker_id, 'send' AS type
|
|
191
140
|
FROM dispatches
|
|
@@ -194,24 +143,9 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
194
143
|
.all();
|
|
195
144
|
};
|
|
196
145
|
const deleteWorkspaceDispatches = (workspaceId) => {
|
|
197
|
-
if (!db) {
|
|
198
|
-
for (const [id, record] of memoryDispatches) {
|
|
199
|
-
if (record.workspaceId === workspaceId)
|
|
200
|
-
memoryDispatches.delete(id);
|
|
201
|
-
}
|
|
202
|
-
return;
|
|
203
|
-
}
|
|
204
146
|
db.prepare('DELETE FROM dispatches WHERE workspace_id = ?').run(workspaceId);
|
|
205
147
|
};
|
|
206
148
|
const deleteWorkerDispatches = (workspaceId, workerId) => {
|
|
207
|
-
if (!db) {
|
|
208
|
-
for (const [id, record] of memoryDispatches) {
|
|
209
|
-
if (record.workspaceId === workspaceId && record.toAgentId === workerId) {
|
|
210
|
-
memoryDispatches.delete(id);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
149
|
db.prepare('DELETE FROM dispatches WHERE workspace_id = ? AND to_agent_id = ?').run(workspaceId, workerId);
|
|
216
150
|
};
|
|
217
151
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dispatch-ledger-store.js","sourceRoot":"","sources":["../../../src/server/dispatch-ledger-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AA2DxC,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC9C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAA;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAY,CAAA;QAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAsB,EAAE,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC;YAC/E,CAAC,CAAC,EAAE,CAAA;IACR,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,CAAC,GAAgB,EAAkB,EAAE,CAAC,CAAC;IACtD,SAAS,EAAE,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;IACxC,SAAS,EAAE,GAAG,CAAC,UAAU;IACzB,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7B,WAAW,EAAE,GAAG,CAAC,aAAa;IAC9B,EAAE,EAAE,GAAG,CAAC,EAAE;IACV,UAAU,EAAE,GAAG,CAAC,WAAW;IAC3B,UAAU,EAAE,GAAG,CAAC,WAAW;IAC3B,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,MAAM,EAAE,GAAG,CAAC,MAAM;IAClB,WAAW,EAAE,GAAG,CAAC,YAAY;IAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,SAAS,EAAE,GAAG,CAAC,WAAW;IAC1B,WAAW,EAAE,GAAG,CAAC,YAAY;CAC9B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"dispatch-ledger-store.js","sourceRoot":"","sources":["../../../src/server/dispatch-ledger-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
const ORCHESTRATOR_RULES = [
|
|
2
|
-
'Hive worker 是右侧卡片里的真实 CLI agent
|
|
2
|
+
'Hive worker 是右侧卡片里的真实 CLI agent,不是你所在 CLI 的内置 subagent / 子代理工具。',
|
|
3
3
|
'当 user 要你“让 worker ... / 给 worker 找活 / 让成员处理”时,先执行 `team list` 确认真实 Hive worker。',
|
|
4
4
|
'如果只有一个可用 worker,直接用 `team send <worker-name> "<task>"` 派给它;不要把选择题丢回给 user。',
|
|
5
5
|
'当 user 要你“让 worker ...”时,必须用 `team send <worker-name> "<task>"` 派给 Hive worker。',
|
|
6
|
-
'
|
|
6
|
+
'不要使用你所在 CLI 的内置 subagent / 子代理工具(如 Task / Explore 等)来代替 Hive worker;它们不会出现在 Hive UI,也不会更新 Hive 调度状态。',
|
|
7
|
+
'`team list` 返回的 `last_pty_line` 是该 worker PTY 终端的最后一行原始输出(含任意 stdout / help / 控制序列噪声),**不是** worker 的正式汇报。正式汇报只来自 stdin 注入的 `[Hive 系统消息:来自 @<name> 的汇报]` 或 `[Hive 系统消息:来自 @<name> 的状态更新]`——只把这两种来源当作 reply。',
|
|
7
8
|
];
|
|
8
9
|
const WORKER_RULES = [
|
|
9
|
-
'你是 Hive 右侧卡片里的真实 CLI worker
|
|
10
|
-
'不要调用 team send
|
|
10
|
+
'你是 Hive 右侧卡片里的真实 CLI worker,不是你所在 CLI 的内置 subagent。',
|
|
11
|
+
'不要调用 team send,也不要再启动你所在 CLI 的内置 subagent / 子代理工具(如 Task / Explore 等)来替你完成派单。',
|
|
11
12
|
'完成或阻塞已派发任务时必须用 `team report` 汇报给 Orchestrator。',
|
|
12
13
|
'如果当前没有明确派发任务,只是汇报待命、环境或状态,使用 `team status "<当前状态>"`。',
|
|
14
|
+
'`team --help` 只用于查命令语法,**绝不是** 汇报手段;其输出不会进入 Orchestrator 视野,跑完后仍需正式调用 `team report` / `team status`。',
|
|
15
|
+
'`team report` / `team status` 报错时会同时打印 USAGE,按 USAGE 修正参数后重试;不要把 `team --help` 当成"自我探查"的替身。',
|
|
13
16
|
];
|
|
14
17
|
export const getHiveTeamRules = (agent) => agent.role === 'orchestrator' ? ORCHESTRATOR_RULES : WORKER_RULES;
|
|
15
18
|
//# sourceMappingURL=hive-team-guidance.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hive-team-guidance.js","sourceRoot":"","sources":["../../../src/server/hive-team-guidance.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG;IACzB
|
|
1
|
+
{"version":3,"file":"hive-team-guidance.js","sourceRoot":"","sources":["../../../src/server/hive-team-guidance.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG;IACzB,iEAAiE;IACjE,kFAAkF;IAClF,4EAA4E;IAC5E,iFAAiF;IACjF,sGAAsG;IACtG,6MAA6M;CAC9M,CAAA;AAED,MAAM,YAAY,GAAG;IACnB,qDAAqD;IACrD,+EAA+E;IAC/E,gDAAgD;IAChD,sDAAsD;IACtD,sGAAsG;IACtG,6FAA6F;CAC9F,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAiC,EAAE,EAAE,CACpE,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,YAAY,CAAA"}
|
|
@@ -11,7 +11,6 @@ export interface MessageLogRecord {
|
|
|
11
11
|
workspaceId: string;
|
|
12
12
|
}
|
|
13
13
|
export interface MessageLogHandle {
|
|
14
|
-
kind: 'db' | 'memory';
|
|
15
14
|
sequence: number;
|
|
16
15
|
}
|
|
17
16
|
interface RecoveryMessageBase {
|
|
@@ -43,9 +42,8 @@ interface MessageKindRow {
|
|
|
43
42
|
worker_id: string;
|
|
44
43
|
workspace_id: string;
|
|
45
44
|
}
|
|
46
|
-
export declare const createMessageLogStore: (db: Database
|
|
45
|
+
export declare const createMessageLogStore: (db: Database) => {
|
|
47
46
|
deleteMessage: (handle: MessageLogHandle) => void;
|
|
48
|
-
initialize: () => void;
|
|
49
47
|
insertMessage: (input: MessageLogRecord) => MessageLogHandle;
|
|
50
48
|
listMessageKinds: () => MessageKindRow[];
|
|
51
49
|
listMessagesForRecovery: (workspaceId: string, sinceMs: number) => RecoveryMessage[];
|