@tt-a1i/hive 0.6.0-alpha.2 → 0.6.0-alpha.3
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 +22 -0
- package/README.md +16 -9
- package/README.zh-CN.md +9 -12
- package/SECURITY.md +15 -3
- package/dist/src/cli/hive.d.ts +2 -0
- package/dist/src/cli/hive.js +49 -13
- package/dist/src/cli/hive.js.map +1 -1
- package/dist/src/cli/team.js +72 -9
- package/dist/src/cli/team.js.map +1 -1
- package/dist/src/server/agent-launch-cache.js +2 -0
- package/dist/src/server/agent-launch-cache.js.map +1 -1
- package/dist/src/server/agent-manager-support.js +88 -9
- package/dist/src/server/agent-manager-support.js.map +1 -1
- package/dist/src/server/agent-manager.js +0 -2
- package/dist/src/server/agent-manager.js.map +1 -1
- package/dist/src/server/agent-run-bootstrap.js +2 -0
- package/dist/src/server/agent-run-bootstrap.js.map +1 -1
- package/dist/src/server/agent-run-starter.js +2 -2
- package/dist/src/server/agent-run-starter.js.map +1 -1
- package/dist/src/server/agent-run-store.d.ts +5 -0
- package/dist/src/server/agent-run-store.js +18 -3
- package/dist/src/server/agent-run-store.js.map +1 -1
- package/dist/src/server/agent-runtime-close.js +3 -5
- package/dist/src/server/agent-runtime-close.js.map +1 -1
- package/dist/src/server/agent-runtime-contract.d.ts +4 -1
- package/dist/src/server/agent-runtime-ports.d.ts +1 -0
- package/dist/src/server/agent-runtime.js +22 -3
- package/dist/src/server/agent-runtime.js.map +1 -1
- package/dist/src/server/agent-startup-instructions.js +2 -2
- package/dist/src/server/agent-startup-instructions.js.map +1 -1
- package/dist/src/server/agent-stdin-dispatcher.d.ts +4 -1
- package/dist/src/server/agent-stdin-dispatcher.js +12 -3
- package/dist/src/server/agent-stdin-dispatcher.js.map +1 -1
- package/dist/src/server/app.js +2 -0
- package/dist/src/server/app.js.map +1 -1
- package/dist/src/server/command-preset-defaults.js +1 -1
- package/dist/src/server/command-preset-defaults.js.map +1 -1
- package/dist/src/server/dispatch-ledger-store.d.ts +7 -1
- package/dist/src/server/dispatch-ledger-store.js +39 -6
- package/dist/src/server/dispatch-ledger-store.js.map +1 -1
- package/dist/src/server/hive-team-guidance.js +3 -2
- package/dist/src/server/hive-team-guidance.js.map +1 -1
- package/dist/src/server/http-errors.d.ts +6 -0
- package/dist/src/server/http-errors.js +12 -0
- package/dist/src/server/http-errors.js.map +1 -1
- package/dist/src/server/local-request-guard.d.ts +3 -0
- package/dist/src/server/local-request-guard.js +42 -0
- package/dist/src/server/local-request-guard.js.map +1 -0
- package/dist/src/server/message-log-store.d.ts +7 -2
- package/dist/src/server/message-log-store.js +10 -6
- package/dist/src/server/message-log-store.js.map +1 -1
- package/dist/src/server/orchestrator-launch.d.ts +7 -5
- package/dist/src/server/orchestrator-launch.js +28 -6
- package/dist/src/server/orchestrator-launch.js.map +1 -1
- package/dist/src/server/post-start-input-writer.d.ts +1 -1
- package/dist/src/server/post-start-input-writer.js +15 -4
- package/dist/src/server/post-start-input-writer.js.map +1 -1
- package/dist/src/server/recovery-summary.js +4 -2
- package/dist/src/server/recovery-summary.js.map +1 -1
- package/dist/src/server/route-helpers.d.ts +3 -1
- package/dist/src/server/route-helpers.js +16 -2
- package/dist/src/server/route-helpers.js.map +1 -1
- package/dist/src/server/route-types.d.ts +3 -0
- package/dist/src/server/routes-settings.js +25 -11
- package/dist/src/server/routes-settings.js.map +1 -1
- package/dist/src/server/routes-team.js +64 -12
- package/dist/src/server/routes-team.js.map +1 -1
- package/dist/src/server/routes-workspaces.js +9 -3
- package/dist/src/server/routes-workspaces.js.map +1 -1
- package/dist/src/server/runtime-message-builders.d.ts +1 -0
- package/dist/src/server/runtime-message-builders.js +9 -0
- package/dist/src/server/runtime-message-builders.js.map +1 -1
- package/dist/src/server/runtime-store-helpers.js +2 -1
- package/dist/src/server/runtime-store-helpers.js.map +1 -1
- package/dist/src/server/runtime-store.d.ts +3 -2
- package/dist/src/server/runtime-store.js +1 -0
- package/dist/src/server/runtime-store.js.map +1 -1
- package/dist/src/server/sqlite-schema-v15.d.ts +2 -0
- package/dist/src/server/sqlite-schema-v15.js +74 -0
- package/dist/src/server/sqlite-schema-v15.js.map +1 -0
- package/dist/src/server/sqlite-schema-v16.d.ts +2 -0
- package/dist/src/server/sqlite-schema-v16.js +7 -0
- package/dist/src/server/sqlite-schema-v16.js.map +1 -0
- package/dist/src/server/sqlite-schema-v17.d.ts +2 -0
- package/dist/src/server/sqlite-schema-v17.js +16 -0
- package/dist/src/server/sqlite-schema-v17.js.map +1 -0
- package/dist/src/server/sqlite-schema-v18.d.ts +2 -0
- package/dist/src/server/sqlite-schema-v18.js +7 -0
- package/dist/src/server/sqlite-schema-v18.js.map +1 -0
- package/dist/src/server/sqlite-schema.d.ts +1 -1
- package/dist/src/server/sqlite-schema.js +23 -1
- package/dist/src/server/sqlite-schema.js.map +1 -1
- package/dist/src/server/startup-command-parser.d.ts +5 -0
- package/dist/src/server/startup-command-parser.js +38 -0
- package/dist/src/server/startup-command-parser.js.map +1 -0
- package/dist/src/server/tasks-websocket-server.js +5 -0
- package/dist/src/server/tasks-websocket-server.js.map +1 -1
- package/dist/src/server/team-authz.d.ts +1 -1
- package/dist/src/server/team-authz.js +2 -2
- package/dist/src/server/team-authz.js.map +1 -1
- package/dist/src/server/team-operations.d.ts +23 -2
- package/dist/src/server/team-operations.js +50 -9
- package/dist/src/server/team-operations.js.map +1 -1
- package/dist/src/server/terminal-ws-server.js +5 -0
- package/dist/src/server/terminal-ws-server.js.map +1 -1
- package/dist/src/server/workspace-path-validation.d.ts +1 -0
- package/dist/src/server/workspace-path-validation.js +27 -0
- package/dist/src/server/workspace-path-validation.js.map +1 -0
- package/dist/src/server/workspace-store-support.js +1 -1
- package/dist/src/server/workspace-store-support.js.map +1 -1
- package/dist/src/server/workspace-store.js +13 -8
- package/dist/src/server/workspace-store.js.map +1 -1
- package/package.json +2 -1
- package/web/dist/assets/index-CIlOwuEZ.js +70 -0
- package/web/dist/assets/index-eyw1Uar8.css +1 -0
- package/web/dist/index.html +4 -4
- package/web/dist/assets/index-BGhNuRRP.css +0 -1
- package/web/dist/assets/index-D8sy4JED.js +0 -75
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { CLAUDE_DEFAULT_YOLO_ARGS } from './claude-command-defaults.js';
|
|
2
2
|
const CODEX_DEFAULT_YOLO_ARGS = ['--dangerously-bypass-approvals-and-sandbox'];
|
|
3
|
-
const OPENCODE_DEFAULT_YOLO_ARGS = [
|
|
3
|
+
const OPENCODE_DEFAULT_YOLO_ARGS = [];
|
|
4
4
|
const GEMINI_DEFAULT_YOLO_ARGS = ['--yolo'];
|
|
5
5
|
export const BUILTIN_COMMAND_PRESETS = [
|
|
6
6
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-preset-defaults.js","sourceRoot":"","sources":["../../../src/server/command-preset-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAYvE,MAAM,uBAAuB,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAC9E,MAAM,0BAA0B,
|
|
1
|
+
{"version":3,"file":"command-preset-defaults.js","sourceRoot":"","sources":["../../../src/server/command-preset-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAYvE,MAAM,uBAAuB,GAAG,CAAC,4CAA4C,CAAC,CAAA;AAC9E,MAAM,0BAA0B,GAAa,EAAE,CAAA;AAC/C,MAAM,wBAAwB,GAAG,CAAC,QAAQ,CAAC,CAAA;AAE3C,MAAM,CAAC,MAAM,uBAAuB,GAAmC;IACrE;QACE,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,kBAAkB;QAC/B,EAAE,EAAE,QAAQ;QACZ,kBAAkB,EAAE,uBAAuB;QAC3C,gBAAgB,EAAE;YAChB,OAAO,EAAE,0CAA0C;YACnD,MAAM,EAAE,0BAA0B;SACnC;QACD,gBAAgB,EAAE,wBAAwB;KAC3C;IACD;QACE,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE,OAAO;QACpB,EAAE,EAAE,OAAO;QACX,kBAAkB,EAAE,qBAAqB;QACzC,gBAAgB,EAAE;YAChB,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,yBAAyB;SAClC;QACD,gBAAgB,EAAE,uBAAuB;KAC1C;IACD;QACE,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,UAAU;QACvB,EAAE,EAAE,UAAU;QACd,kBAAkB,EAAE,wBAAwB;QAC5C,gBAAgB,EAAE;YAChB,OAAO,EAAE,qCAAqC;YAC9C,MAAM,EAAE,qBAAqB;SAC9B;QACD,gBAAgB,EAAE,0BAA0B;KAC7C;IACD;QACE,OAAO,EAAE,QAAQ;QACjB,WAAW,EAAE,QAAQ;QACrB,EAAE,EAAE,QAAQ;QACZ,kBAAkB,EAAE,uBAAuB;QAC3C,gBAAgB,EAAE;YAChB,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,yBAAyB;SAClC;QACD,gBAAgB,EAAE,wBAAwB;KAC3C;CACF,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,EAAU,EAAE,EAAE,CACpD,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA"}
|
|
@@ -23,6 +23,7 @@ interface CreateDispatchInput {
|
|
|
23
23
|
}
|
|
24
24
|
interface ReportDispatchInput {
|
|
25
25
|
artifacts: string[];
|
|
26
|
+
dispatchId?: string;
|
|
26
27
|
reportText: string;
|
|
27
28
|
toAgentId: string;
|
|
28
29
|
workspaceId: string;
|
|
@@ -37,7 +38,12 @@ export declare const createDispatchLedgerStore: (db: Database | undefined) => {
|
|
|
37
38
|
deleteDispatch: (dispatchId: string) => void;
|
|
38
39
|
deleteWorkerDispatches: (workspaceId: string, workerId: string) => void;
|
|
39
40
|
deleteWorkspaceDispatches: (workspaceId: string) => void;
|
|
40
|
-
findOpenDispatch: (workspaceId: string, toAgentId: string) => DispatchRecord | undefined;
|
|
41
|
+
findOpenDispatch: (workspaceId: string, toAgentId: string, dispatchId?: string) => DispatchRecord | undefined;
|
|
42
|
+
listOpenDispatchKinds: () => {
|
|
43
|
+
type: "send";
|
|
44
|
+
worker_id: string;
|
|
45
|
+
workspace_id: string;
|
|
46
|
+
}[];
|
|
41
47
|
listWorkspaceDispatches: (workspaceId: string, options?: ListDispatchesOptions) => DispatchRecord[];
|
|
42
48
|
markReportedByWorker: (input: ReportDispatchInput) => DispatchRecord | undefined;
|
|
43
49
|
markSubmitted: (dispatchId: string) => void;
|
|
@@ -87,13 +87,27 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
87
87
|
SET status = ?, submitted_at = ?
|
|
88
88
|
WHERE id = ?`).run('submitted', submittedAt, dispatchId);
|
|
89
89
|
};
|
|
90
|
-
const findOpenDispatch = (workspaceId, toAgentId) => {
|
|
90
|
+
const findOpenDispatch = (workspaceId, toAgentId, dispatchId) => {
|
|
91
91
|
if (!db) {
|
|
92
|
-
|
|
93
|
-
.filter((record) => record.workspaceId === workspaceId &&
|
|
92
|
+
const openDispatches = Array.from(memoryDispatches.values()).filter((record) => record.workspaceId === workspaceId &&
|
|
94
93
|
record.toAgentId === toAgentId &&
|
|
95
|
-
record.status !== 'reported')
|
|
96
|
-
|
|
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
|
+
if (dispatchId) {
|
|
101
|
+
const row = db
|
|
102
|
+
.prepare(`SELECT *
|
|
103
|
+
FROM dispatches
|
|
104
|
+
WHERE id = ?
|
|
105
|
+
AND workspace_id = ?
|
|
106
|
+
AND to_agent_id = ?
|
|
107
|
+
AND status != 'reported'
|
|
108
|
+
LIMIT 1`)
|
|
109
|
+
.get(dispatchId, workspaceId, toAgentId);
|
|
110
|
+
return row ? toRecord(row) : undefined;
|
|
97
111
|
}
|
|
98
112
|
const row = db
|
|
99
113
|
.prepare(`SELECT *
|
|
@@ -107,7 +121,7 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
107
121
|
return row ? toRecord(row) : undefined;
|
|
108
122
|
};
|
|
109
123
|
const markReportedByWorker = (input) => {
|
|
110
|
-
const dispatch = findOpenDispatch(input.workspaceId, input.toAgentId);
|
|
124
|
+
const dispatch = findOpenDispatch(input.workspaceId, input.toAgentId, input.dispatchId);
|
|
111
125
|
if (!dispatch) {
|
|
112
126
|
return undefined;
|
|
113
127
|
}
|
|
@@ -161,6 +175,24 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
161
175
|
LIMIT ? OFFSET ?`)
|
|
162
176
|
.all(workspaceId, limit, offset).map(toRecord);
|
|
163
177
|
};
|
|
178
|
+
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
|
+
return db
|
|
190
|
+
.prepare(`SELECT workspace_id, to_agent_id AS worker_id, 'send' AS type
|
|
191
|
+
FROM dispatches
|
|
192
|
+
WHERE status != 'reported'
|
|
193
|
+
ORDER BY sequence ASC`)
|
|
194
|
+
.all();
|
|
195
|
+
};
|
|
164
196
|
const deleteWorkspaceDispatches = (workspaceId) => {
|
|
165
197
|
if (!db) {
|
|
166
198
|
for (const [id, record] of memoryDispatches) {
|
|
@@ -188,6 +220,7 @@ export const createDispatchLedgerStore = (db) => {
|
|
|
188
220
|
deleteWorkerDispatches,
|
|
189
221
|
deleteWorkspaceDispatches,
|
|
190
222
|
findOpenDispatch,
|
|
223
|
+
listOpenDispatchKinds,
|
|
191
224
|
listWorkspaceDispatches,
|
|
192
225
|
markReportedByWorker,
|
|
193
226
|
markSubmitted,
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"dispatch-ledger-store.js","sourceRoot":"","sources":["../../../src/server/dispatch-ledger-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,13 @@ const ORCHESTRATOR_RULES = [
|
|
|
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
|
-
'不要使用 Claude Code 内置的 Task / Explore / subagent 来代替 Hive worker;它们不会出现在 Hive UI
|
|
6
|
+
'不要使用 Claude Code 内置的 Task / Explore / subagent 来代替 Hive worker;它们不会出现在 Hive UI,也不会更新 Hive 调度状态。',
|
|
7
7
|
];
|
|
8
8
|
const WORKER_RULES = [
|
|
9
9
|
'你是 Hive 右侧卡片里的真实 CLI worker,不是 Claude Code 内置 subagent。',
|
|
10
10
|
'不要调用 team send,也不要再启动 Claude Code 内置的 Task / Explore / subagent 来替你完成派单。',
|
|
11
|
-
'
|
|
11
|
+
'完成或阻塞已派发任务时必须用 `team report` 汇报给 Orchestrator。',
|
|
12
|
+
'如果当前没有明确派发任务,只是汇报待命、环境或状态,使用 `team status "<当前状态>"`。',
|
|
12
13
|
];
|
|
13
14
|
export const getHiveTeamRules = (agent) => agent.role === 'orchestrator' ? ORCHESTRATOR_RULES : WORKER_RULES;
|
|
14
15
|
//# 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,+EAA+E;IAC/E,kFAAkF;IAClF,4EAA4E;IAC5E,iFAAiF;IACjF,
|
|
1
|
+
{"version":3,"file":"hive-team-guidance.js","sourceRoot":"","sources":["../../../src/server/hive-team-guidance.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAAG;IACzB,+EAA+E;IAC/E,kFAAkF;IAClF,4EAA4E;IAC5E,iFAAiF;IACjF,iGAAiG;CAClG,CAAA;AAED,MAAM,YAAY,GAAG;IACnB,yDAAyD;IACzD,0EAA0E;IAC1E,gDAAgD;IAChD,sDAAsD;CACvD,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,6 +11,12 @@ export declare class UnauthorizedError extends HttpError {
|
|
|
11
11
|
export declare class ForbiddenError extends HttpError {
|
|
12
12
|
constructor(message: string);
|
|
13
13
|
}
|
|
14
|
+
export declare class BadRequestError extends HttpError {
|
|
15
|
+
constructor(message: string);
|
|
16
|
+
}
|
|
17
|
+
export declare class PayloadTooLargeError extends HttpError {
|
|
18
|
+
constructor(message: string);
|
|
19
|
+
}
|
|
14
20
|
export declare class ConflictError extends HttpError {
|
|
15
21
|
constructor(message: string);
|
|
16
22
|
}
|
|
@@ -24,6 +24,18 @@ export class ForbiddenError extends HttpError {
|
|
|
24
24
|
this.name = 'ForbiddenError';
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
+
export class BadRequestError extends HttpError {
|
|
28
|
+
constructor(message) {
|
|
29
|
+
super(400, message);
|
|
30
|
+
this.name = 'BadRequestError';
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class PayloadTooLargeError extends HttpError {
|
|
34
|
+
constructor(message) {
|
|
35
|
+
super(413, message);
|
|
36
|
+
this.name = 'PayloadTooLargeError';
|
|
37
|
+
}
|
|
38
|
+
}
|
|
27
39
|
export class ConflictError extends HttpError {
|
|
28
40
|
constructor(message) {
|
|
29
41
|
super(409, message);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-errors.js","sourceRoot":"","sources":["../../../src/server/http-errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,UAAU,CAAQ;IAE3B,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"http-errors.js","sourceRoot":"","sources":["../../../src/server/http-errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,UAAU,CAAQ;IAE3B,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,IAAI,GAAG,WAAW,CAAA;QACvB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAC7C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAA;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAA;IACjC,CAAC;CACF;AAED,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAA;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,SAAS;IAC5C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IACjD,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAA;IACpC,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,SAAS;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { ForbiddenError } from './http-errors.js';
|
|
2
|
+
const LOCAL_HOSTNAMES = new Set(['localhost', '127.0.0.1', '::1']);
|
|
3
|
+
const LOCAL_REMOTE_ADDRESSES = new Set(['127.0.0.1', '::1']);
|
|
4
|
+
const firstHeader = (value) => Array.isArray(value) ? value[0] : value;
|
|
5
|
+
const normalizeHostname = (hostname) => hostname.replace(/^\[|\]$/g, '').toLowerCase();
|
|
6
|
+
const isLocalHostname = (hostname) => LOCAL_HOSTNAMES.has(normalizeHostname(hostname));
|
|
7
|
+
const normalizeRemoteAddress = (address) => normalizeHostname(address).replace(/^::ffff:/, '');
|
|
8
|
+
const isLocalRemoteAddress = (address) => LOCAL_REMOTE_ADDRESSES.has(normalizeRemoteAddress(address));
|
|
9
|
+
const isLocalAuthority = (authority) => {
|
|
10
|
+
try {
|
|
11
|
+
return isLocalHostname(new URL(`http://${authority}`).hostname);
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const isLocalOrigin = (origin) => {
|
|
18
|
+
try {
|
|
19
|
+
return isLocalHostname(new URL(origin).hostname);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
export const getLocalRequestRejection = (request) => {
|
|
26
|
+
const remoteAddress = request.socket.remoteAddress;
|
|
27
|
+
if (remoteAddress && !isLocalRemoteAddress(remoteAddress))
|
|
28
|
+
return 'non-local remote address';
|
|
29
|
+
const host = firstHeader(request.headers.host);
|
|
30
|
+
if (host && !isLocalAuthority(host))
|
|
31
|
+
return 'non-local Host header';
|
|
32
|
+
const origin = firstHeader(request.headers.origin);
|
|
33
|
+
if (origin && !isLocalOrigin(origin))
|
|
34
|
+
return 'non-local Origin header';
|
|
35
|
+
return null;
|
|
36
|
+
};
|
|
37
|
+
export const assertLocalRequest = (request) => {
|
|
38
|
+
const reason = getLocalRequestRejection(request);
|
|
39
|
+
if (reason)
|
|
40
|
+
throw new ForbiddenError(`Local runtime rejected ${reason}`);
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=local-request-guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-request-guard.js","sourceRoot":"","sources":["../../../src/server/local-request-guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;AAClE,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;AAE5D,MAAM,WAAW,GAAG,CAAC,KAAoC,EAAE,EAAE,CAC3D,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;AAEzC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;AAE9F,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAA;AAE9F,MAAM,sBAAsB,GAAG,CAAC,OAAe,EAAE,EAAE,CACjD,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAEpD,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,EAAE,CAC/C,sBAAsB,CAAC,GAAG,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAA;AAE7D,MAAM,gBAAgB,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC7C,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,UAAU,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAA;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,MAAc,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,OAAwB,EAAiB,EAAE;IAClF,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAA;IAClD,IAAI,aAAa,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC;QAAE,OAAO,0BAA0B,CAAA;IAE5F,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9C,IAAI,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,uBAAuB,CAAA;IAEnE,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD,IAAI,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,yBAAyB,CAAA;IAEtE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAwB,EAAE,EAAE;IAC7D,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IAChD,IAAI,MAAM;QAAE,MAAM,IAAI,cAAc,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAA;AAC1E,CAAC,CAAA"}
|
|
@@ -6,7 +6,7 @@ export interface MessageLogRecord {
|
|
|
6
6
|
status?: string;
|
|
7
7
|
text: string;
|
|
8
8
|
toAgentId?: string;
|
|
9
|
-
type: 'user_input' | 'send' | 'report' | 'system_env_sync' | 'system_recovery_summary';
|
|
9
|
+
type: 'user_input' | 'send' | 'report' | 'status' | 'system_env_sync' | 'system_recovery_summary';
|
|
10
10
|
workerId: string;
|
|
11
11
|
workspaceId: string;
|
|
12
12
|
}
|
|
@@ -32,7 +32,12 @@ interface ReportRecoveryMessage extends RecoveryMessageBase {
|
|
|
32
32
|
status?: string;
|
|
33
33
|
type: 'report';
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
interface StatusRecoveryMessage extends RecoveryMessageBase {
|
|
36
|
+
artifacts: string[];
|
|
37
|
+
from: string;
|
|
38
|
+
type: 'status';
|
|
39
|
+
}
|
|
40
|
+
export type RecoveryMessage = UserInputRecoveryMessage | SendRecoveryMessage | ReportRecoveryMessage | StatusRecoveryMessage;
|
|
36
41
|
interface MessageKindRow {
|
|
37
42
|
type: 'send' | 'report';
|
|
38
43
|
worker_id: string;
|
|
@@ -74,7 +74,7 @@ export const createMessageLogStore = (db) => {
|
|
|
74
74
|
}
|
|
75
75
|
return recoveryMessage;
|
|
76
76
|
}
|
|
77
|
-
if (message.type !== 'report') {
|
|
77
|
+
if (message.type !== 'report' && message.type !== 'status') {
|
|
78
78
|
return null;
|
|
79
79
|
}
|
|
80
80
|
const recoveryMessage = {
|
|
@@ -82,10 +82,12 @@ export const createMessageLogStore = (db) => {
|
|
|
82
82
|
createdAt: message.createdAt,
|
|
83
83
|
from: message.fromAgentId ?? message.workerId,
|
|
84
84
|
text: message.text,
|
|
85
|
-
type:
|
|
85
|
+
type: message.type,
|
|
86
86
|
};
|
|
87
|
-
if (message.status)
|
|
87
|
+
if (message.type === 'report' && message.status) {
|
|
88
|
+
;
|
|
88
89
|
recoveryMessage.status = message.status;
|
|
90
|
+
}
|
|
89
91
|
return recoveryMessage;
|
|
90
92
|
})
|
|
91
93
|
.filter((message) => message !== null);
|
|
@@ -117,7 +119,7 @@ export const createMessageLogStore = (db) => {
|
|
|
117
119
|
}
|
|
118
120
|
return message;
|
|
119
121
|
}
|
|
120
|
-
if (typedRow.type !== 'report') {
|
|
122
|
+
if (typedRow.type !== 'report' && typedRow.type !== 'status') {
|
|
121
123
|
return null;
|
|
122
124
|
}
|
|
123
125
|
const recoveryMessage = {
|
|
@@ -125,10 +127,12 @@ export const createMessageLogStore = (db) => {
|
|
|
125
127
|
createdAt: typedRow.created_at,
|
|
126
128
|
from: typedRow.from_agent_id ?? typedRow.worker_id,
|
|
127
129
|
text: typedRow.text ?? '',
|
|
128
|
-
type:
|
|
130
|
+
type: typedRow.type,
|
|
129
131
|
};
|
|
130
|
-
if (typedRow.status)
|
|
132
|
+
if (typedRow.type === 'report' && typedRow.status) {
|
|
133
|
+
;
|
|
131
134
|
recoveryMessage.status = typedRow.status;
|
|
135
|
+
}
|
|
132
136
|
return recoveryMessage;
|
|
133
137
|
})
|
|
134
138
|
.filter((message) => message !== null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-log-store.js","sourceRoot":"","sources":["../../../src/server/message-log-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message-log-store.js","sourceRoot":"","sources":["../../../src/server/message-log-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,17 +6,19 @@ interface ConfigurePort {
|
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* Resolve the orchestrator's launch config in priority order:
|
|
9
|
-
* 1. Explicit
|
|
10
|
-
*
|
|
9
|
+
* 1. Explicit startup command pasted by the user. It runs through their shell
|
|
10
|
+
* so aliases/functions like `ccs --resume ...` can expand.
|
|
11
|
+
* 2. Explicit workspace-create command preset chosen by the user.
|
|
12
|
+
* 3. `HIVE_ORCHESTRATOR_COMMAND` env var (with optional `HIVE_ORCHESTRATOR_ARGS_JSON`).
|
|
11
13
|
* Tests use this to inject a dummy CLI like `bash -c 'echo queen up; sleep 60'`
|
|
12
14
|
* so autostart can run end-to-end without depending on a real `claude` binary.
|
|
13
|
-
*
|
|
15
|
+
* 4. The seeded `orchestrator` role template (defaults to `claude`).
|
|
14
16
|
* Returns `undefined` when neither source has a usable command.
|
|
15
17
|
*/
|
|
16
|
-
export declare const resolveOrchestratorLaunchConfig: (settings: SettingsStore, commandPresetId?: string | null) => AgentLaunchConfigInput | undefined;
|
|
18
|
+
export declare const resolveOrchestratorLaunchConfig: (settings: SettingsStore, commandPresetId?: string | null, startupCommand?: string | null) => AgentLaunchConfigInput | undefined;
|
|
17
19
|
/**
|
|
18
20
|
* Idempotent: only seeds when no existing launch config is present for the
|
|
19
21
|
* orchestrator (prevents stomping on user-customized configs across restarts).
|
|
20
22
|
*/
|
|
21
|
-
export declare const seedOrchestratorLaunchConfig: (port: ConfigurePort, settings: SettingsStore, workspaceId: string, commandPresetId?: string | null) => void;
|
|
23
|
+
export declare const seedOrchestratorLaunchConfig: (port: ConfigurePort, settings: SettingsStore, workspaceId: string, commandPresetId?: string | null, startupCommand?: string | null) => void;
|
|
22
24
|
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createStartupCommandLaunch, getStartupCommandExecutable, } from './startup-command-parser.js';
|
|
1
2
|
import { getOrchestratorId } from './workspace-store-support.js';
|
|
2
3
|
const parseArgsEnv = (raw) => {
|
|
3
4
|
if (raw === undefined)
|
|
@@ -25,16 +26,37 @@ const resolveCommandPresetLaunchConfig = (settings, commandPresetId) => {
|
|
|
25
26
|
commandPresetId: preset.id,
|
|
26
27
|
};
|
|
27
28
|
};
|
|
29
|
+
const findPresetForStartupCommand = (settings, startupCommand, commandPresetId) => {
|
|
30
|
+
if (commandPresetId)
|
|
31
|
+
return settings.getCommandPreset(commandPresetId);
|
|
32
|
+
const executable = getStartupCommandExecutable(startupCommand);
|
|
33
|
+
return executable ? settings.getCommandPreset(executable) : undefined;
|
|
34
|
+
};
|
|
28
35
|
/**
|
|
29
36
|
* Resolve the orchestrator's launch config in priority order:
|
|
30
|
-
* 1. Explicit
|
|
31
|
-
*
|
|
37
|
+
* 1. Explicit startup command pasted by the user. It runs through their shell
|
|
38
|
+
* so aliases/functions like `ccs --resume ...` can expand.
|
|
39
|
+
* 2. Explicit workspace-create command preset chosen by the user.
|
|
40
|
+
* 3. `HIVE_ORCHESTRATOR_COMMAND` env var (with optional `HIVE_ORCHESTRATOR_ARGS_JSON`).
|
|
32
41
|
* Tests use this to inject a dummy CLI like `bash -c 'echo queen up; sleep 60'`
|
|
33
42
|
* so autostart can run end-to-end without depending on a real `claude` binary.
|
|
34
|
-
*
|
|
43
|
+
* 4. The seeded `orchestrator` role template (defaults to `claude`).
|
|
35
44
|
* Returns `undefined` when neither source has a usable command.
|
|
36
45
|
*/
|
|
37
|
-
export const resolveOrchestratorLaunchConfig = (settings, commandPresetId = null) => {
|
|
46
|
+
export const resolveOrchestratorLaunchConfig = (settings, commandPresetId = null, startupCommand = null) => {
|
|
47
|
+
const trimmedStartupCommand = startupCommand?.trim();
|
|
48
|
+
if (trimmedStartupCommand) {
|
|
49
|
+
const parsed = createStartupCommandLaunch(trimmedStartupCommand);
|
|
50
|
+
const preset = findPresetForStartupCommand(settings, trimmedStartupCommand, commandPresetId);
|
|
51
|
+
return {
|
|
52
|
+
command: parsed.command,
|
|
53
|
+
args: parsed.args,
|
|
54
|
+
commandPresetId: null,
|
|
55
|
+
interactiveCommand: preset?.command ?? getStartupCommandExecutable(trimmedStartupCommand),
|
|
56
|
+
presetAugmentationDisabled: true,
|
|
57
|
+
sessionIdCapture: preset?.sessionIdCapture ?? null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
38
60
|
if (commandPresetId) {
|
|
39
61
|
return resolveCommandPresetLaunchConfig(settings, commandPresetId);
|
|
40
62
|
}
|
|
@@ -63,11 +85,11 @@ export const resolveOrchestratorLaunchConfig = (settings, commandPresetId = null
|
|
|
63
85
|
* Idempotent: only seeds when no existing launch config is present for the
|
|
64
86
|
* orchestrator (prevents stomping on user-customized configs across restarts).
|
|
65
87
|
*/
|
|
66
|
-
export const seedOrchestratorLaunchConfig = (port, settings, workspaceId, commandPresetId = null) => {
|
|
88
|
+
export const seedOrchestratorLaunchConfig = (port, settings, workspaceId, commandPresetId = null, startupCommand = null) => {
|
|
67
89
|
const orchestratorId = getOrchestratorId(workspaceId);
|
|
68
90
|
if (port.peekAgentLaunchConfig(workspaceId, orchestratorId))
|
|
69
91
|
return;
|
|
70
|
-
const config = resolveOrchestratorLaunchConfig(settings, commandPresetId);
|
|
92
|
+
const config = resolveOrchestratorLaunchConfig(settings, commandPresetId, startupCommand);
|
|
71
93
|
if (!config)
|
|
72
94
|
return;
|
|
73
95
|
port.configureAgentLaunch(workspaceId, orchestratorId, config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator-launch.js","sourceRoot":"","sources":["../../../src/server/orchestrator-launch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAchE,MAAM,YAAY,GAAG,CAAC,GAAuB,EAAwB,EAAE;IACrE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACvC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAA;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAA;IAC9F,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,MAAM,gCAAgC,GAAG,CACvC,QAAuB,EACvB,eAAuB,EACa,EAAE;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe,EAAE,MAAM,CAAC,EAAE;KAC3B,CAAA;AACH,CAAC,CAAA;AAED
|
|
1
|
+
{"version":3,"file":"orchestrator-launch.js","sourceRoot":"","sources":["../../../src/server/orchestrator-launch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AgentManager } from './agent-manager.js';
|
|
2
2
|
export declare const toBracketedPasteSubmission: (text: string) => string;
|
|
3
3
|
export declare const isInteractiveAgentCommand: (command: string) => boolean;
|
|
4
|
-
export declare const hasInteractivePromptReady: (output: string) => boolean;
|
|
4
|
+
export declare const hasInteractivePromptReady: (output: string, command?: string) => boolean;
|
|
5
5
|
export declare const hasBracketedPasteAcknowledgement: (output: string, baselineLength: number) => boolean;
|
|
6
6
|
export declare const createPostStartInputWriter: (agentManager: AgentManager, command: string) => ((runId: string, text: string) => void);
|
|
@@ -8,12 +8,21 @@ const PASTE_CHARS_PER_DELAY_MS = 4;
|
|
|
8
8
|
const PASTE_ACK_CHECK_INTERVAL_MS = 50;
|
|
9
9
|
const PASTE_ACK_SETTLE_DELAY_MS = 100;
|
|
10
10
|
const PASTE_ACK_TIMEOUT_MS = 3000;
|
|
11
|
+
const COMMANDS_WITH_BRACKETED_PASTE = new Set(['claude', 'codex', 'opencode']);
|
|
11
12
|
export const toBracketedPasteSubmission = (text) => `\u001b[200~${text}\u001b[201~`;
|
|
12
13
|
const getSubmitAfterPasteDelayMs = (text) => Math.min(MAX_SUBMIT_AFTER_PASTE_DELAY_MS, Math.max(MIN_SUBMIT_AFTER_PASTE_DELAY_MS, Math.ceil(text.length / PASTE_CHARS_PER_DELAY_MS)));
|
|
13
14
|
export const isInteractiveAgentCommand = (command) => INTERACTIVE_COMMANDS.has(basename(command).toLowerCase());
|
|
14
|
-
|
|
15
|
+
const getCommandName = (command) => basename(command).toLowerCase();
|
|
16
|
+
const hasGeminiPromptReady = (output) => /\bType your message\b/u.test(output);
|
|
17
|
+
export const hasInteractivePromptReady = (output, command = '') => {
|
|
18
|
+
const commandName = getCommandName(command);
|
|
19
|
+
return (/(?:^|[\r\n])\s*[❯›]\s*/u.test(output) ||
|
|
20
|
+
(commandName === 'gemini' && hasGeminiPromptReady(output)));
|
|
21
|
+
};
|
|
15
22
|
export const hasBracketedPasteAcknowledgement = (output, baselineLength) => /\[Pasted text #\d+/u.test(output.slice(baselineLength));
|
|
16
|
-
const isClaudeCommand = (command) =>
|
|
23
|
+
const isClaudeCommand = (command) => getCommandName(command) === 'claude';
|
|
24
|
+
const usesBracketedPaste = (command) => COMMANDS_WITH_BRACKETED_PASTE.has(getCommandName(command));
|
|
25
|
+
const canTimeoutBeforePromptReady = (command) => getCommandName(command) !== 'gemini';
|
|
17
26
|
const isWritableRunStatus = (status) => status === undefined || status === 'starting' || status === 'running';
|
|
18
27
|
const writeIfRunWritable = (agentManager, runId, text) => {
|
|
19
28
|
let run;
|
|
@@ -91,10 +100,12 @@ export const createPostStartInputWriter = (agentManager, command) => {
|
|
|
91
100
|
}
|
|
92
101
|
if (output === null)
|
|
93
102
|
return;
|
|
94
|
-
if (hasInteractivePromptReady(output) ||
|
|
103
|
+
if (hasInteractivePromptReady(output, command) ||
|
|
104
|
+
(canTimeoutBeforePromptReady(command) && Date.now() - startedAt >= READY_TIMEOUT_MS)) {
|
|
95
105
|
const baselineLength = output.length;
|
|
106
|
+
const input = usesBracketedPaste(command) ? toBracketedPasteSubmission(text) : text;
|
|
96
107
|
try {
|
|
97
|
-
if (!writeIfRunWritable(agentManager, runId,
|
|
108
|
+
if (!writeIfRunWritable(agentManager, runId, input))
|
|
98
109
|
return;
|
|
99
110
|
}
|
|
100
111
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-start-input-writer.js","sourceRoot":"","sources":["../../../src/server/post-start-input-writer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAIpC,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;AAC/E,MAAM,uBAAuB,GAAG,EAAE,CAAA;AAClC,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAC7B,MAAM,+BAA+B,GAAG,GAAG,CAAA;AAC3C,MAAM,+BAA+B,GAAG,IAAI,CAAA;AAC5C,MAAM,wBAAwB,GAAG,CAAC,CAAA;AAClC,MAAM,2BAA2B,GAAG,EAAE,CAAA;AACtC,MAAM,yBAAyB,GAAG,GAAG,CAAA;AACrC,MAAM,oBAAoB,GAAG,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"post-start-input-writer.js","sourceRoot":"","sources":["../../../src/server/post-start-input-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,16 +13,18 @@ const formatTaskEvents = (messages, agent) => {
|
|
|
13
13
|
if (agent.role === 'orchestrator') {
|
|
14
14
|
if (message.type === 'send')
|
|
15
15
|
return message.from === agent.id;
|
|
16
|
-
return message.type === 'report';
|
|
16
|
+
return message.type === 'report' || message.type === 'status';
|
|
17
17
|
}
|
|
18
18
|
if (message.type === 'send')
|
|
19
19
|
return message.to === agent.id || message.from === agent.id;
|
|
20
|
-
return message.type === 'report' && message.from === agent.id;
|
|
20
|
+
return (message.type === 'report' || message.type === 'status') && message.from === agent.id;
|
|
21
21
|
});
|
|
22
22
|
return taskEvents.length > 0
|
|
23
23
|
? taskEvents.slice(-8).map((message) => {
|
|
24
24
|
if (message.type === 'send')
|
|
25
25
|
return `- send -> ${message.to}: ${message.text}`;
|
|
26
|
+
if (message.type === 'status')
|
|
27
|
+
return `- status <- ${message.from}: ${message.text}`;
|
|
26
28
|
const status = message.status ? ` [${message.status}]` : '';
|
|
27
29
|
return `- report <- ${message.from}${status}: ${message.text}`;
|
|
28
30
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery-summary.js","sourceRoot":"","sources":["../../../src/server/recovery-summary.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AAErD,MAAM,gBAAgB,GAAG,IAAI,CAAA;AAE7B,MAAM,gBAAgB,GAAG,CAAC,QAA2B,EAAE,EAAE;IACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,CAAC,CAAA;IAC9E,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,WAAW,OAAO,CAAC,IAAI,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,QAA2B,EAAE,KAAmB,EAAE,EAAE;IAC5E,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAChC,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"recovery-summary.js","sourceRoot":"","sources":["../../../src/server/recovery-summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
2
|
import type { RouteDefinition } from './route-types.js';
|
|
3
3
|
export declare const sendJson: (response: ServerResponse, statusCode: number, body: unknown) => void;
|
|
4
|
-
export declare const readJsonBody: <T>(request: IncomingMessage
|
|
4
|
+
export declare const readJsonBody: <T>(request: IncomingMessage, options?: {
|
|
5
|
+
limitBytes?: number;
|
|
6
|
+
}) => Promise<T>;
|
|
5
7
|
export declare const getRequiredParam: (response: ServerResponse, params: Record<string, string>, key: string, error: string) => string | null;
|
|
6
8
|
export declare const route: (method: string, path: string, handler: RouteDefinition["handler"]) => RouteDefinition;
|
|
7
9
|
export declare const matchPath: (pattern: string, pathname: string) => Record<string, string> | null;
|