baxian 1.2.24 → 1.2.26
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/dist/agent/bootstrap-poller.d.ts.map +1 -1
- package/dist/agent/bootstrap-poller.js +0 -11
- package/dist/agent/bootstrap-poller.js.map +1 -1
- package/dist/agent/bootstrap.d.ts.map +1 -1
- package/dist/agent/bootstrap.js +0 -42
- package/dist/agent/bootstrap.js.map +1 -1
- package/dist/agent/diff-split.d.ts.map +1 -1
- package/dist/agent/diff-split.js +0 -4
- package/dist/agent/diff-split.js.map +1 -1
- package/dist/agent/image-input.d.ts.map +1 -1
- package/dist/agent/image-input.js +0 -3
- package/dist/agent/image-input.js.map +1 -1
- package/dist/agent/liveness.d.ts.map +1 -1
- package/dist/agent/liveness.js +0 -3
- package/dist/agent/liveness.js.map +1 -1
- package/dist/agent/manager.d.ts +0 -4
- package/dist/agent/manager.d.ts.map +1 -1
- package/dist/agent/manager.js +9 -951
- package/dist/agent/manager.js.map +1 -1
- package/dist/agent/pane-streamer-manager.d.ts.map +1 -1
- package/dist/agent/pane-streamer-manager.js +0 -9
- package/dist/agent/pane-streamer-manager.js.map +1 -1
- package/dist/agent/pane-streamer.d.ts.map +1 -1
- package/dist/agent/pane-streamer.js +2 -27
- package/dist/agent/pane-streamer.js.map +1 -1
- package/dist/agent/pet-input.d.ts.map +1 -1
- package/dist/agent/pet-input.js +0 -3
- package/dist/agent/pet-input.js.map +1 -1
- package/dist/agent/phase-signal-watcher.d.ts +0 -6
- package/dist/agent/phase-signal-watcher.d.ts.map +1 -1
- package/dist/agent/phase-signal-watcher.js +0 -41
- package/dist/agent/phase-signal-watcher.js.map +1 -1
- package/dist/agent/phase-signal.d.ts.map +1 -1
- package/dist/agent/phase-signal.js +1 -18
- package/dist/agent/phase-signal.js.map +1 -1
- package/dist/agent/preflight.d.ts.map +1 -1
- package/dist/agent/preflight.js +0 -12
- package/dist/agent/preflight.js.map +1 -1
- package/dist/agent/prompt.d.ts +0 -4
- package/dist/agent/prompt.d.ts.map +1 -1
- package/dist/agent/prompt.js +0 -66
- package/dist/agent/prompt.js.map +1 -1
- package/dist/agent/repo-store.d.ts.map +1 -1
- package/dist/agent/repo-store.js +0 -21
- package/dist/agent/repo-store.js.map +1 -1
- package/dist/agent/review-transport.d.ts +0 -1
- package/dist/agent/review-transport.d.ts.map +1 -1
- package/dist/agent/review-transport.js +0 -16
- package/dist/agent/review-transport.js.map +1 -1
- package/dist/agent/runner.d.ts +0 -3
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +0 -40
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
- package/dist/agent/tmux-probe-poller.js +1 -20
- package/dist/agent/tmux-probe-poller.js.map +1 -1
- package/dist/agent/tmux.d.ts +0 -1
- package/dist/agent/tmux.d.ts.map +1 -1
- package/dist/agent/tmux.js +6 -45
- package/dist/agent/tmux.js.map +1 -1
- package/dist/agent/worktree.d.ts.map +1 -1
- package/dist/agent/worktree.js +0 -9
- package/dist/agent/worktree.js.map +1 -1
- package/dist/api/agents.d.ts.map +1 -1
- package/dist/api/agents.js +0 -5
- package/dist/api/agents.js.map +1 -1
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +0 -16
- package/dist/api/config.js.map +1 -1
- package/dist/api/hosts.d.ts.map +1 -1
- package/dist/api/hosts.js +0 -37
- package/dist/api/hosts.js.map +1 -1
- package/dist/api/pets.d.ts.map +1 -1
- package/dist/api/pets.js +0 -5
- package/dist/api/pets.js.map +1 -1
- package/dist/api/probe.d.ts.map +1 -1
- package/dist/api/probe.js +0 -5
- package/dist/api/probe.js.map +1 -1
- package/dist/api/projects.d.ts.map +1 -1
- package/dist/api/projects.js +0 -40
- package/dist/api/projects.js.map +1 -1
- package/dist/api/tasks.d.ts.map +1 -1
- package/dist/api/tasks.js +0 -14
- package/dist/api/tasks.js.map +1 -1
- package/dist/app.d.ts +0 -3
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +0 -14
- package/dist/app.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +0 -13
- package/dist/cli.js.map +1 -1
- package/dist/config/hot-reload.d.ts.map +1 -1
- package/dist/config/hot-reload.js +0 -3
- package/dist/config/hot-reload.js.map +1 -1
- package/dist/config/loader.d.ts +0 -27
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +0 -56
- package/dist/config/loader.js.map +1 -1
- package/dist/config/normalizer.js +0 -1
- package/dist/config/normalizer.js.map +1 -1
- package/dist/config/validator.d.ts.map +1 -1
- package/dist/config/validator.js +0 -16
- package/dist/config/validator.js.map +1 -1
- package/dist/event/broker.d.ts.map +1 -1
- package/dist/event/broker.js +0 -2
- package/dist/event/broker.js.map +1 -1
- package/dist/event/bus.d.ts.map +1 -1
- package/dist/event/bus.js +0 -2
- package/dist/event/bus.js.map +1 -1
- package/dist/event/handlers.d.ts.map +1 -1
- package/dist/event/handlers.js +2 -150
- package/dist/event/handlers.js.map +1 -1
- package/dist/event/publish.d.ts.map +1 -1
- package/dist/event/publish.js +0 -8
- package/dist/event/publish.js.map +1 -1
- package/dist/event/server-handlers.d.ts.map +1 -1
- package/dist/event/server-handlers.js +0 -80
- package/dist/event/server-handlers.js.map +1 -1
- package/dist/event/ws.d.ts.map +1 -1
- package/dist/event/ws.js +0 -5
- package/dist/event/ws.js.map +1 -1
- package/dist/github/mapper.d.ts.map +1 -1
- package/dist/github/mapper.js +0 -13
- package/dist/github/mapper.js.map +1 -1
- package/dist/github/poller.d.ts.map +1 -1
- package/dist/github/poller.js +0 -15
- package/dist/github/poller.js.map +1 -1
- package/dist/github/resolver.d.ts.map +1 -1
- package/dist/github/resolver.js +0 -1
- package/dist/github/resolver.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -26
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/restart-sentinel.d.ts.map +1 -1
- package/dist/lifecycle/restart-sentinel.js +0 -1
- package/dist/lifecycle/restart-sentinel.js.map +1 -1
- package/dist/lifecycle/restart.d.ts +0 -1
- package/dist/lifecycle/restart.d.ts.map +1 -1
- package/dist/lifecycle/restart.js +0 -3
- package/dist/lifecycle/restart.js.map +1 -1
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +0 -19
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/git-url.d.ts +0 -2
- package/dist/shared/git-url.d.ts.map +1 -1
- package/dist/shared/git-url.js +0 -21
- package/dist/shared/git-url.js.map +1 -1
- package/dist/shared/types.d.ts +0 -54
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js.map +1 -1
- package/dist/skill/registry.d.ts.map +1 -1
- package/dist/skill/registry.js +3 -25
- package/dist/skill/registry.js.map +1 -1
- package/dist/state/agent-store.d.ts +0 -1
- package/dist/state/agent-store.d.ts.map +1 -1
- package/dist/state/agent-store.js +0 -5
- package/dist/state/agent-store.js.map +1 -1
- package/dist/state/error-record-store.d.ts.map +1 -1
- package/dist/state/error-record-store.js +1 -27
- package/dist/state/error-record-store.js.map +1 -1
- package/dist/state/lock.d.ts.map +1 -1
- package/dist/state/lock.js +1 -6
- package/dist/state/lock.js.map +1 -1
- package/dist/state/pet-store.d.ts.map +1 -1
- package/dist/state/pet-store.js +0 -10
- package/dist/state/pet-store.js.map +1 -1
- package/dist/state/post-approve-store.d.ts.map +1 -1
- package/dist/state/post-approve-store.js +0 -1
- package/dist/state/post-approve-store.js.map +1 -1
- package/dist/state/process-lock.d.ts +0 -2
- package/dist/state/process-lock.d.ts.map +1 -1
- package/dist/state/process-lock.js +0 -5
- package/dist/state/process-lock.js.map +1 -1
- package/dist/state/review-store.d.ts.map +1 -1
- package/dist/state/review-store.js +0 -3
- package/dist/state/review-store.js.map +1 -1
- package/dist/state/snapshot.d.ts.map +1 -1
- package/dist/state/snapshot.js +0 -19
- package/dist/state/snapshot.js.map +1 -1
- package/dist/state/task-store.d.ts.map +1 -1
- package/dist/state/task-store.js +0 -4
- package/dist/state/task-store.js.map +1 -1
- package/dist/terminal/attach.d.ts.map +1 -1
- package/dist/terminal/attach.js +0 -12
- package/dist/terminal/attach.js.map +1 -1
- package/dist/terminal/key-sanitizer.d.ts.map +1 -1
- package/dist/terminal/key-sanitizer.js +0 -2
- package/dist/terminal/key-sanitizer.js.map +1 -1
- package/dist/terminal/stream-ws.d.ts.map +1 -1
- package/dist/terminal/stream-ws.js +0 -5
- package/dist/terminal/stream-ws.js.map +1 -1
- package/dist/timing/backoff.d.ts.map +1 -1
- package/dist/timing/backoff.js.map +1 -1
- package/dist/web/assets/index-BFsxrk2C.js +7 -0
- package/dist/web/assets/{index-CHAb8Mrm.css → index-DvVOHfHm.css} +1 -1
- package/dist/web/assets/{router-D24GsdXZ.js → router-BgSDZqI0.js} +1 -1
- package/dist/web/index.html +3 -3
- package/package.json +2 -2
- package/dist/web/assets/index-B3nBJsTG.js +0 -4
package/dist/api/hosts.js
CHANGED
|
@@ -6,8 +6,6 @@ import { applyConfigHotReload } from '../config/hot-reload.js';
|
|
|
6
6
|
import { redactHosts } from './config.js';
|
|
7
7
|
const REDACTED = '***';
|
|
8
8
|
const CHECK_TIMEOUT_MS = 5000;
|
|
9
|
-
// SSH reachability, forced through a FRESH authenticated connection (noMux) so a lingering mux
|
|
10
|
-
// can't make a wrong updated password pass — the bad password would then be saved.
|
|
11
9
|
async function checkHostConnectivity(host, makeLocal) {
|
|
12
10
|
await ensureMuxDir();
|
|
13
11
|
const target = sshTarget(host);
|
|
@@ -40,29 +38,22 @@ function generateHostId(base, existing) {
|
|
|
40
38
|
}
|
|
41
39
|
return `host-${existing.size + 1}`;
|
|
42
40
|
}
|
|
43
|
-
// REDACTED / missing password both mean "keep the stored one" (mirrors server.token handling).
|
|
44
41
|
function resolvePassword(incoming, current) {
|
|
45
42
|
if (incoming === REDACTED || incoming === undefined)
|
|
46
43
|
return current;
|
|
47
44
|
return incoming;
|
|
48
45
|
}
|
|
49
|
-
// A missing port (honors ~/.ssh/config's Port) and an explicit 22 are DIFFERENT endpoints — collapsing
|
|
50
|
-
// them with `?? 22` would let a port:22 edit slip past the password-exfiltration / live-agent guards.
|
|
51
46
|
function structuralChange(prev, next) {
|
|
52
47
|
return prev.hostname !== next.hostname
|
|
53
48
|
|| (prev.user ?? '') !== (next.user ?? '')
|
|
54
49
|
|| prev.port !== next.port;
|
|
55
50
|
}
|
|
56
|
-
// Whether two hosts would dial the same SSH connection (so a re-probe is unnecessary).
|
|
57
51
|
function sameConnection(a, b) {
|
|
58
52
|
return a.hostname === b.hostname
|
|
59
53
|
&& a.port === b.port
|
|
60
54
|
&& (a.user ?? '') === (b.user ?? '')
|
|
61
55
|
&& (a.password ?? '') === (b.password ?? '');
|
|
62
56
|
}
|
|
63
|
-
// Agents whose host reference resolves to this id AND that currently occupy the machine: bound to an
|
|
64
|
-
// active task / mid-bootstrap (creationToken) / awaiting_human, or with a live pane / present tmux
|
|
65
|
-
// session. Moving the host's endpoint under them would orphan those sessions.
|
|
66
57
|
async function liveAgentsReferencingHost(app, hostId) {
|
|
67
58
|
const live = [];
|
|
68
59
|
for (const project of app.ctx.config.project) {
|
|
@@ -78,9 +69,6 @@ async function liveAgentsReferencingHost(app, hostId) {
|
|
|
78
69
|
}
|
|
79
70
|
return live;
|
|
80
71
|
}
|
|
81
|
-
// These routes have no Fastify schema, so raw JSON reaches the handlers untyped: a truthy non-string
|
|
82
|
-
// hostname (e.g. 123) would throw on .trim(), and a string/array port would inject into the ssh command.
|
|
83
|
-
// Validate types here so malformed host-management requests return 400, never a 500.
|
|
84
72
|
function hostBodyError(body, hostnameRequired) {
|
|
85
73
|
if (hostnameRequired || body.hostname !== undefined) {
|
|
86
74
|
if (typeof body.hostname !== 'string' || !body.hostname.trim())
|
|
@@ -97,9 +85,6 @@ function hostBodyError(body, hostnameRequired) {
|
|
|
97
85
|
}
|
|
98
86
|
return null;
|
|
99
87
|
}
|
|
100
|
-
// Apply a PATCH body onto a base host: provided fields win, omitted fields inherit base, an explicit
|
|
101
|
-
// empty alias/user/password (or port: null) clears. Re-applied against the FRESH host inside the lock
|
|
102
|
-
// so concurrent edits to other fields aren't clobbered by a stale full-host replacement.
|
|
103
88
|
function applyHostPatch(base, body) {
|
|
104
89
|
const password = resolvePassword(body.password, base.password);
|
|
105
90
|
const alias = body.alias?.trim() ?? base.alias;
|
|
@@ -114,11 +99,6 @@ function applyHostPatch(base, body) {
|
|
|
114
99
|
...(password ? { password } : {}),
|
|
115
100
|
};
|
|
116
101
|
}
|
|
117
|
-
// Tear down live web terminal streamers of agents referencing this host so their cached host-derived
|
|
118
|
-
// runner/tmux (attach PTY, resize, session probe) are rebuilt with the new credential on reconnect.
|
|
119
|
-
// NOT silent: a silent destroy would skip onSessionGone, leaving open /api/stream sockets believing
|
|
120
|
-
// they're still subscribed to a now-deleted streamer (input silently dropped). The normal teardown
|
|
121
|
-
// fires session_gone so clients release and reconnect, which rebuilds the streamer with the new host.
|
|
122
102
|
function invalidateStreamersForHost(app, hostId) {
|
|
123
103
|
const mgr = app.ctx.paneStreamerManager;
|
|
124
104
|
if (!mgr)
|
|
@@ -199,9 +179,6 @@ export async function hostRoutes(app, options = {}) {
|
|
|
199
179
|
if (bodyError) {
|
|
200
180
|
return reply.status(400).send({ error: bodyError });
|
|
201
181
|
}
|
|
202
|
-
// SECURITY: changing the endpoint (hostname/user/port) of a password host requires an explicit
|
|
203
|
-
// password (a new one, or '' to clear). Otherwise the stored secret — which the caller can't read,
|
|
204
|
-
// it's redacted — would be sent to the newly supplied SSH target during the probe (exfiltration).
|
|
205
182
|
const endpointChanged = structuralChange(current, applyHostPatch(current, { ...body, password: undefined }));
|
|
206
183
|
if (endpointChanged && current.password !== undefined
|
|
207
184
|
&& (body.password === undefined || body.password === REDACTED)) {
|
|
@@ -209,7 +186,6 @@ export async function hostRoutes(app, options = {}) {
|
|
|
209
186
|
error: '修改 host 地址 / 端口 / 用户名时必须重新填写密码(或清空密码改用 key 登录)',
|
|
210
187
|
});
|
|
211
188
|
}
|
|
212
|
-
// Probe the host the request describes (submitted fields over the current snapshot).
|
|
213
189
|
const probeHost = applyHostPatch(current, body);
|
|
214
190
|
if (structuralChange(current, probeHost)) {
|
|
215
191
|
const live = await liveAgentsReferencingHost(app, id);
|
|
@@ -224,19 +200,14 @@ export async function hostRoutes(app, options = {}) {
|
|
|
224
200
|
if (!conn.ok) {
|
|
225
201
|
return reply.status(400).send({ error: conn.message });
|
|
226
202
|
}
|
|
227
|
-
// A request that sets or clears the password invalidates live streamers (below) so they rebuild
|
|
228
|
-
// with the new credential; '***' / omitted means "keep", so no invalidation.
|
|
229
203
|
const passwordChanged = body.password !== undefined && body.password !== REDACTED;
|
|
230
204
|
return withConfigLock(async () => {
|
|
231
205
|
const idx = app.ctx.config.host.findIndex(h => h.id === id);
|
|
232
206
|
if (idx === -1) {
|
|
233
207
|
return reply.status(404).send({ error: `Host "${id}" not found` });
|
|
234
208
|
}
|
|
235
|
-
// Rebase the patch onto the FRESH host inside the lock so a concurrent edit to other fields
|
|
236
|
-
// (saved during our connectivity probe) isn't clobbered by a stale full-host replacement.
|
|
237
209
|
const lockedCurrent = app.ctx.config.host[idx];
|
|
238
210
|
const next = applyHostPatch(lockedCurrent, body);
|
|
239
|
-
// Re-check liveness: an agent may have gone live during the (lock-free) probe.
|
|
240
211
|
if (structuralChange(lockedCurrent, next)) {
|
|
241
212
|
const live = await liveAgentsReferencingHost(app, id);
|
|
242
213
|
if (live.length > 0) {
|
|
@@ -246,8 +217,6 @@ export async function hostRoutes(app, options = {}) {
|
|
|
246
217
|
});
|
|
247
218
|
}
|
|
248
219
|
}
|
|
249
|
-
// If a concurrent edit changed the connection fields, the rebased combination was never probed
|
|
250
|
-
// (e.g. A's new hostname + B's new password). Never save an unverified host — re-check it here.
|
|
251
220
|
if (!sameConnection(next, probeHost)) {
|
|
252
221
|
const reConn = await checkHostConnectivity(next, makeLocal);
|
|
253
222
|
if (!reConn.ok) {
|
|
@@ -258,8 +227,6 @@ export async function hostRoutes(app, options = {}) {
|
|
|
258
227
|
hosts[idx] = next;
|
|
259
228
|
try {
|
|
260
229
|
const validated = await persistHosts(app, hosts);
|
|
261
|
-
// A live web terminal streamer caches its host-derived runner/tmux; tear down referencing
|
|
262
|
-
// streamers on a credential change so the next reconnect rebuilds with the new password.
|
|
263
230
|
if (passwordChanged)
|
|
264
231
|
invalidateStreamersForHost(app, id);
|
|
265
232
|
const stored = validated.host.find(h => h.id === id);
|
|
@@ -309,10 +276,6 @@ export async function hostRoutes(app, options = {}) {
|
|
|
309
276
|
}
|
|
310
277
|
const stored = body.id ? app.ctx.config.host.find(h => h.id === body.id) : undefined;
|
|
311
278
|
const submitted = buildHostFromBody(body, body.id ?? 'check', undefined);
|
|
312
|
-
// SECURITY: the stored password may only be reused to probe the SAME endpoint it belongs to.
|
|
313
|
-
// Reusing it for a caller-chosen hostname/user/port would let an editor who can't read the
|
|
314
|
-
// redacted secret exfiltrate it to a controlled SSH server. A changed endpoint must carry an
|
|
315
|
-
// explicit password (else we probe key-auth only).
|
|
316
279
|
const reuseStored = !!stored && !structuralChange(stored, submitted);
|
|
317
280
|
const password = (body.password === undefined || body.password === REDACTED)
|
|
318
281
|
? (reuseStored ? stored.password : undefined)
|
package/dist/api/hosts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/api/hosts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hosts.js","sourceRoot":"","sources":["../../src/api/hosts.ts"],"names":[],"mappings":"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"}
|
package/dist/api/pets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pets.d.ts","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"pets.d.ts","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAK/C,wBAAsB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2EnE"}
|
package/dist/api/pets.js
CHANGED
|
@@ -47,8 +47,6 @@ export async function petRoutes(app) {
|
|
|
47
47
|
if (!sprite)
|
|
48
48
|
return reply.status(404).send({ error: 'pet not found' });
|
|
49
49
|
reply.header('Content-Type', sprite.ext === 'png' ? 'image/png' : 'image/webp');
|
|
50
|
-
// private (not public): the response is fetched with a bearer token, so a shared/proxy
|
|
51
|
-
// cache must not store and replay it. UUID-keyed + immutable → safe in the browser cache only.
|
|
52
50
|
reply.header('Cache-Control', 'private, max-age=31536000, immutable');
|
|
53
51
|
return reply.send(sprite.bytes);
|
|
54
52
|
});
|
|
@@ -64,9 +62,6 @@ export async function petRoutes(app) {
|
|
|
64
62
|
if (typeof petId === 'string' && !(await store.getMeta(petId))) {
|
|
65
63
|
return reply.status(404).send({ error: 'pet not found' });
|
|
66
64
|
}
|
|
67
|
-
// Serialize with DELETE /agents (same config lock + deletion claim): otherwise a PUT that
|
|
68
|
-
// passes the agent check during DELETE's lock-free phase2 can write AFTER phase3 cleared
|
|
69
|
-
// this agent's assignment, leaving a stale assignment a recreated id would inherit.
|
|
70
65
|
return withConfigLock(async () => {
|
|
71
66
|
if (app.ctx.agentManager.isDeletionInFlight(agentId)) {
|
|
72
67
|
return reply.status(409).send({ error: `Agent "${agentId}" is being deleted; cannot set pet.` });
|
package/dist/api/pets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pets.js","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAoB;IAClD,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhF,GAAG,CAAC,IAAI,CACN,OAAO,EACP,EAAE,SAAS,EAAE,2BAA2B,EAAE,EAC1C,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC9E,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAC1D,IAAI,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5E,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,QAAgD,CAAC;QACrD,IAAI,MAA+C,CAAC;QACpD,IAAI,CAAC;YACH,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,kBAAkB;gBAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;YAC9B,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,WAAW,EAAE,MAAM;SACpB,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CACF,CAAC;IAEF,GAAG,CAAC,MAAM,CAA6B,WAAW,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC9E,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAA6B,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACpF,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC9E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACvE,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAChF,
|
|
1
|
+
{"version":3,"file":"pets.js","sourceRoot":"","sources":["../../src/api/pets.ts"],"names":[],"mappings":"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"}
|
package/dist/api/probe.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"probe.d.ts","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAa,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,oBAAoB,CAAC;AAmEzE,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,EAAE,MAAM,aAAa,CAAC;IACzC,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,aAAa,CAAC;CAC3D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,eAAe,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+EvG"}
|
package/dist/api/probe.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { createRunner, LocalRunner, buildSshOptions, ensureMuxDir, shellQuote, sshTarget, sshEnv } from '../agent/runner.js';
|
|
2
2
|
const PROBE_TIMEOUT_MS = 5000;
|
|
3
|
-
// Interactive shells may print banners before `which`; the path is the last line.
|
|
4
3
|
function lastNonEmptyLine(s) {
|
|
5
4
|
const lines = s.split(/\r?\n/);
|
|
6
5
|
for (let i = lines.length - 1; i >= 0; i--) {
|
|
@@ -41,14 +40,12 @@ export async function probeRoutes(app, options = {}) {
|
|
|
41
40
|
let host;
|
|
42
41
|
if (mode === 'remote') {
|
|
43
42
|
if (hostId) {
|
|
44
|
-
// Resolve the registry entry server-side so the real password never crosses the wire.
|
|
45
43
|
host = app.ctx.config.host.find(h => h.id === hostId);
|
|
46
44
|
if (!host) {
|
|
47
45
|
return reply.status(400).send({ error: `unknown host id "${hostId}"` });
|
|
48
46
|
}
|
|
49
47
|
}
|
|
50
48
|
else if (typeof inlineHost?.hostname === 'string' && inlineHost.hostname.trim()) {
|
|
51
|
-
// Carry the (validated) inline port through so non-default-port hosts are probed correctly.
|
|
52
49
|
const port = inlineHost.port;
|
|
53
50
|
if (port !== undefined && (!Number.isInteger(port) || port <= 0 || port > 65535)) {
|
|
54
51
|
return reply.status(400).send({ error: 'host.port must be a positive integer ≤ 65535' });
|
|
@@ -73,7 +70,6 @@ export async function probeRoutes(app, options = {}) {
|
|
|
73
70
|
if (mode === 'remote') {
|
|
74
71
|
const target = sshTarget(host);
|
|
75
72
|
await ensureMuxDir();
|
|
76
|
-
// noMux: force a fresh authenticated connection so a stale mux can't mask a wrong password.
|
|
77
73
|
const sshCmd = `ssh ${buildSshOptions(host, { connectTimeoutSec: 5, noMux: true })} -- ${shellQuote(target)} echo ok`;
|
|
78
74
|
const env = await sshEnv(host);
|
|
79
75
|
const sshResult = await makeLocal()
|
|
@@ -96,7 +92,6 @@ export async function probeRoutes(app, options = {}) {
|
|
|
96
92
|
}
|
|
97
93
|
}
|
|
98
94
|
const runner = mode === 'remote' ? makeRemote(host) : makeLocal();
|
|
99
|
-
// Match each binary's runtime shell mode to avoid false-positive probes.
|
|
100
95
|
const [tmux, claude, codex] = await Promise.all([
|
|
101
96
|
probeWhich(runner, 'tmux', '请安装 tmux'),
|
|
102
97
|
probeWhich(runner, 'claude', '请先安装 Claude Code CLI', 'login-interactive'),
|
package/dist/api/probe.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"probe.js","sourceRoot":"","sources":["../../src/api/probe.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAuB7H,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAS9B,SAAS,gBAAgB,CAAC,CAAS;IACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAAmB,EACnB,MAAc,EACd,WAAmB,EACnB,OAAwB,OAAO;IAE/B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,MAAM,EAAE,EAAE;YAClD,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAClC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,OAAO;YACL,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,eAAe;SACzF,CAAC;IACJ,CAAC;AACH,CAAC;AAOD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAoB,EAAE,UAA8B,EAAE;IACtF,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjG,GAAG,CAAC,IAAI,CAAyB,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACzE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAiB,CAAC;QAEhF,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC1C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,IAA4B,CAAC;QACjC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;gBACtD,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,oBAAoB,MAAM,GAAG,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,UAAU,EAAE,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClF,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;gBAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;oBACjF,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,CAAC;gBAC3F,CAAC;gBACD,IAAI,GAAG;oBACL,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACxC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAkB;YAC5B,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;YAChC,QAAQ,EAAE;gBACR,aAAa,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;gBACzC,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;aAClC;SACF,CAAC;QAEF,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,SAAS,CAAC,IAAK,CAAC,CAAC;YAChC,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,OAAO,eAAe,CAAC,IAAK,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC;YACvH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAK,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,MAAM,SAAS,EAAE;iBAChC,IAAI,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;iBACxF,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBACf,MAAM,EAAE,EAAE;gBACV,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxD,QAAQ,EAAE,CAAC;aACZ,CAAC,CAAC,CAAC;YACN,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1E,MAAM,CAAC,GAAG,GAAG;gBACX,EAAE,EAAE,KAAK;gBACT,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,gCAAgC;aAC7D,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACpD,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACvE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;gBACjE,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QAChF,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC;YACtC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,sBAAsB,EAAE,mBAAmB,CAAC;YACzE,UAAU,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;SACnE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAEjC,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/api/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA8C/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/api/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AA8C/C,wBAAsB,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAulBvE"}
|
package/dist/api/projects.js
CHANGED
|
@@ -42,9 +42,6 @@ export async function projectRoutes(app) {
|
|
|
42
42
|
if (!app.ctx.bootstrapPoller) {
|
|
43
43
|
return reply.status(503).send({ error: 'bootstrap poller not initialised' });
|
|
44
44
|
}
|
|
45
|
-
// Use the poller's view of config (not app.ctx.config) as the source of truth — PATCH /config
|
|
46
|
-
// updates ctx.config but only DELETE /agents currently hot-replaces the poller, so during the
|
|
47
|
-
// PATCH-then-restart window ctx.config can list projects the poller doesn't know yet.
|
|
48
45
|
const result = await app.ctx.bootstrapPoller.pollProject(request.params.id);
|
|
49
46
|
if (!result.knownProject) {
|
|
50
47
|
return reply.status(404).send({
|
|
@@ -52,7 +49,6 @@ export async function projectRoutes(app) {
|
|
|
52
49
|
});
|
|
53
50
|
}
|
|
54
51
|
if (result.ran === 0) {
|
|
55
|
-
// Project exists but has no auto-mode agents (all have explicit workdir) → success no-op.
|
|
56
52
|
return reply.send({ ok: true, ran: 0, message: 'no bootstrap targets for this project' });
|
|
57
53
|
}
|
|
58
54
|
return reply.send({ ok: result.ok, ran: result.ran });
|
|
@@ -158,7 +154,6 @@ export async function projectRoutes(app) {
|
|
|
158
154
|
return reply.status(201).send({ project: stored, restartRequired: false });
|
|
159
155
|
});
|
|
160
156
|
});
|
|
161
|
-
// Config commit precedes bootstrap; failures emit events instead of rolling back config.
|
|
162
157
|
app.post('/projects/:projectId/agents', async (request, reply) => {
|
|
163
158
|
if (!app.ctx.configPath) {
|
|
164
159
|
return reply.status(500).send({ error: 'No config path configured' });
|
|
@@ -284,16 +279,12 @@ export async function projectRoutes(app) {
|
|
|
284
279
|
for (const id of targets) {
|
|
285
280
|
const state = await app.ctx.agentStore.get(id);
|
|
286
281
|
const task = state?.taskId ? await app.ctx.taskStore.get(state.taskId) : null;
|
|
287
|
-
// active task 始终拒——即使 awaiting_human 也不行,否则会留 orphan task 指向已删 agent。
|
|
288
|
-
// operator 必须先 cancelTask 让 task 进 cancelled,再 DELETE。
|
|
289
|
-
// active 含 max_rounds:其 dev 是 reserved 态(持锁+worktree),删它同样会留 orphan。
|
|
290
282
|
if (task && TASK_ACTIVE_STATUS_SET.has(task.status)) {
|
|
291
283
|
return reply.status(409).send({
|
|
292
284
|
error: `Agent "${id}" is still active on task ${task.id}; cancel the task before deleting ` +
|
|
293
285
|
`(prevents orphan task / tmux session / lock / worktree).`,
|
|
294
286
|
});
|
|
295
287
|
}
|
|
296
|
-
// awaiting_human + 无活跃 task = 合法回收出口。
|
|
297
288
|
if (state?.status === 'awaiting_human')
|
|
298
289
|
continue;
|
|
299
290
|
if (state?.creationToken) {
|
|
@@ -302,11 +293,6 @@ export async function projectRoutes(app) {
|
|
|
302
293
|
});
|
|
303
294
|
}
|
|
304
295
|
}
|
|
305
|
-
// An active task can reference a target it no longer has BOUND — e.g. a spec-phase
|
|
306
|
-
// max_rounds task whose dev/QA were released (agentId/qaAgentId cleared) but whose
|
|
307
|
-
// preferredAgentId is kept for Retry. The binding-based checks above miss that; deleting
|
|
308
|
-
// the agent would dangle the reference and break Retry. Refuse if any active task names a
|
|
309
|
-
// target via preferredAgentId / agentId / qaAgentId.
|
|
310
296
|
const targetSet = new Set(targets);
|
|
311
297
|
const referencing = (await app.ctx.taskStore.list({})).find(t => TASK_ACTIVE_STATUS_SET.has(t.status)
|
|
312
298
|
&& ((t.preferredAgentId !== '' && targetSet.has(t.preferredAgentId))
|
|
@@ -318,8 +304,6 @@ export async function projectRoutes(app) {
|
|
|
318
304
|
`cancel or finish that task before deleting (would dangle its dev/QA/retry reference).`,
|
|
319
305
|
});
|
|
320
306
|
}
|
|
321
|
-
// claim deletion 占位:挡住第二个 DELETE 在 awaiting_human stale-lock takeover 路径下
|
|
322
|
-
// 撞同一 agent → 否则 phase2 (cleanupRemovedAgentRuntime) 会并发 kill 同一 tmux/worktree。
|
|
323
307
|
const conflict = app.ctx.agentManager.tryClaimDeletion(targets);
|
|
324
308
|
if (conflict) {
|
|
325
309
|
return reply.status(409).send({
|
|
@@ -330,9 +314,6 @@ export async function projectRoutes(app) {
|
|
|
330
314
|
for (const id of targets) {
|
|
331
315
|
const ok = await app.ctx.lockManager.acquire(id);
|
|
332
316
|
if (!ok) {
|
|
333
|
-
// awaiting_human 状态下 lock 是前任 op 留下的 stale lock(markAwaitingHuman 不释放
|
|
334
|
-
// lock),DELETE 是显式回收入口,直接接管——不计入 acquiredLocks,cleanupRemovedAgentRuntime
|
|
335
|
-
// 会一并删除 stale lock 文件。deletionInFlight claim 已挡住并发 DELETE。
|
|
336
317
|
const state = await app.ctx.agentStore.get(id);
|
|
337
318
|
if (state?.status === 'awaiting_human')
|
|
338
319
|
continue;
|
|
@@ -429,9 +410,6 @@ export async function projectRoutes(app) {
|
|
|
429
410
|
catch (delErr) {
|
|
430
411
|
app.log.warn({ err: delErr, agentId: id }, 'DELETE /agents Phase 3 agentStore.delete failed');
|
|
431
412
|
}
|
|
432
|
-
// Clear stale error records so reusing the same agent id (delete + recreate) doesn't
|
|
433
|
-
// inherit the previous incarnation's bootstrap failures in the new snapshot.
|
|
434
|
-
// Best-effort; failure is logged but doesn't block deletion.
|
|
435
413
|
if (app.ctx.errorRecordStore) {
|
|
436
414
|
try {
|
|
437
415
|
await app.ctx.errorRecordStore.purgeAgent(id);
|
|
@@ -440,8 +418,6 @@ export async function projectRoutes(app) {
|
|
|
440
418
|
app.log.warn({ err: purgeErr, agentId: id }, 'DELETE /agents errorRecordStore.purgeAgent failed');
|
|
441
419
|
}
|
|
442
420
|
}
|
|
443
|
-
// Same reason as the error-record purge: drop the pet assignment so reusing the
|
|
444
|
-
// agent id (delete + recreate) doesn't inherit the previous incarnation's pet.
|
|
445
421
|
if (app.ctx.petStore) {
|
|
446
422
|
try {
|
|
447
423
|
await app.ctx.petStore.setAssignment(id, null);
|
|
@@ -468,12 +444,7 @@ export async function projectRoutes(app) {
|
|
|
468
444
|
if (!cfg || cfg.projectId !== projectId) {
|
|
469
445
|
return reply.status(404).send({ error: `Agent "${agentId}" not found in project "${projectId}"` });
|
|
470
446
|
}
|
|
471
|
-
// withConfigLock 与 DELETE / create-agent 同一把锁串行化——避免 operator 同时
|
|
472
|
-
// 发起 DELETE 和 Resume 时,Resume 把 state 改回 ok,而 DELETE 的
|
|
473
|
-
// cleanupRemovedAgentRuntime 还在杀 tmux/删 worktree。
|
|
474
447
|
return withConfigLock(async () => {
|
|
475
|
-
// DELETE phase2 (cleanupRemovedAgentRuntime) 在 phase1 释放 withConfigLock 后无锁运行;
|
|
476
|
-
// 期间 Resume 拿到 withConfigLock 仍可能撞——deletionInFlight claim 跨 phase 持有,拒绝 Resume。
|
|
477
448
|
if (app.ctx.agentManager.isDeletionInFlight(agentId)) {
|
|
478
449
|
return reply.status(409).send({
|
|
479
450
|
error: `Agent "${agentId}" is being deleted; Resume not allowed.`,
|
|
@@ -566,7 +537,6 @@ export async function projectRoutes(app) {
|
|
|
566
537
|
});
|
|
567
538
|
}
|
|
568
539
|
catch (err) {
|
|
569
|
-
// dialogPending check must precede createdSession-kill (kill strips dismiss handle).
|
|
570
540
|
if (await app.ctx.agentManager.handleDialogPendingFromRuntime(agentId, err)) {
|
|
571
541
|
if (!owner.takeover)
|
|
572
542
|
await app.ctx.lockManager.release(agentId);
|
|
@@ -596,7 +566,6 @@ export async function projectRoutes(app) {
|
|
|
596
566
|
return reply.send({ ok: true, agentId });
|
|
597
567
|
});
|
|
598
568
|
}
|
|
599
|
-
/** dev keeps its lock across the fix loop — restart/retry must reuse it. */
|
|
600
569
|
async function resolveLockOwnership(app, agentId) {
|
|
601
570
|
const cfg = app.ctx.agentManager.getAgentConfig(agentId);
|
|
602
571
|
if (!cfg || cfg.role !== 'dev')
|
|
@@ -607,7 +576,6 @@ async function resolveLockOwnership(app, agentId) {
|
|
|
607
576
|
const task = await app.ctx.taskStore.get(state.taskId);
|
|
608
577
|
if (!task)
|
|
609
578
|
return { takeover: false };
|
|
610
|
-
// max_rounds 含在内:reserved dev 持锁,restart/retry 应保留锁(takeover),勿误 release。
|
|
611
579
|
if (!TASK_ACTIVE_STATUS_SET.has(task.status))
|
|
612
580
|
return { takeover: false };
|
|
613
581
|
const locked = await app.ctx.lockManager.isLocked(agentId);
|
|
@@ -615,7 +583,6 @@ async function resolveLockOwnership(app, agentId) {
|
|
|
615
583
|
return { takeover: false };
|
|
616
584
|
return { takeover: true };
|
|
617
585
|
}
|
|
618
|
-
/** Returns null when the agent is open for ops. */
|
|
619
586
|
async function rejectIfOpInProgress(app, agentId) {
|
|
620
587
|
const state = await app.ctx.agentStore.get(agentId);
|
|
621
588
|
if (state?.creationToken) {
|
|
@@ -623,13 +590,10 @@ async function rejectIfOpInProgress(app, agentId) {
|
|
|
623
590
|
}
|
|
624
591
|
return null;
|
|
625
592
|
}
|
|
626
|
-
/** Terminal task → idle release; active task → mark waiting (keeps lock). */
|
|
627
593
|
async function pendingCleanupAfterReplReady(app, agentId, takeover) {
|
|
628
594
|
const state = await app.ctx.agentStore.get(agentId);
|
|
629
595
|
const taskId = state?.taskId;
|
|
630
596
|
if (!taskId) {
|
|
631
|
-
// A greeting_failed hold must re-prove signal capability, not be silently cleared:
|
|
632
|
-
// re-run the handshake on the restarted REPL; only a pass clears the hold.
|
|
633
597
|
if (state?.awaitingPhase === 'greeting_failed') {
|
|
634
598
|
await app.ctx.agentManager.regreetHeldAgent(agentId);
|
|
635
599
|
}
|
|
@@ -641,10 +605,6 @@ async function pendingCleanupAfterReplReady(app, agentId, takeover) {
|
|
|
641
605
|
return;
|
|
642
606
|
}
|
|
643
607
|
const task = await app.ctx.taskStore.get(taskId);
|
|
644
|
-
// restart-repl / retry 是显式 operator 操作,已确认 REPL 重启;前面的 ack_unknown/dev-wait-gate-failed/
|
|
645
|
-
// dialog_pending Held 状态都因新 REPL 而不再成立 → 用 allowAwaitingHuman + clearAwaitingHuman 清掉。
|
|
646
|
-
// 否则 endpoint 返回 200 但 agent 仍 Held + Resume 也拒,operator 卡死。
|
|
647
|
-
// max_rounds 非终态:reserved dev restart 后走 markWaiting 保锁+worktree,不被误 idle-release 删 worktree。
|
|
648
608
|
if (!task || TASK_TERMINAL_STATUS_SET.has(task.status)) {
|
|
649
609
|
await app.ctx.agentManager.releaseAgentForTask(agentId, taskId, 'idle', { allowAwaitingHuman: true })
|
|
650
610
|
.catch(err => app.log.warn({ err, agentId, taskId }, 'restart/retry idle-release failed'));
|