aicodeman 1.24.6 → 1.24.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/types/update.d.ts +51 -3
- package/dist/types/update.d.ts.map +1 -1
- package/dist/types/update.js +4 -0
- package/dist/types/update.js.map +1 -1
- package/dist/web/public/admin-ui.js.gz +0 -0
- package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
- package/dist/web/public/app.a5d2fc08.js.gz +0 -0
- package/dist/web/public/approvals-ui.js.gz +0 -0
- package/dist/web/public/constants.7bd482dc.js.gz +0 -0
- package/dist/web/public/cron-ui.js.gz +0 -0
- package/dist/web/public/entrance-animations.js.gz +0 -0
- package/dist/web/public/home-sessions.js.gz +0 -0
- package/dist/web/public/i18n.9ae15b51.js.gz +0 -0
- package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
- package/dist/web/public/index.html +1 -1
- package/dist/web/public/index.html.br +0 -0
- package/dist/web/public/index.html.gz +0 -0
- package/dist/web/public/input-cjk.87f14251.js.gz +0 -0
- package/dist/web/public/keyboard-accessory.0454a3e9.js.gz +0 -0
- package/dist/web/public/mobile-handlers.0f83a608.js.gz +0 -0
- package/dist/web/public/mobile-overview.js.gz +0 -0
- package/dist/web/public/mobile.87674154.css.gz +0 -0
- package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
- package/dist/web/public/orchestrator-panel.js.gz +0 -0
- package/dist/web/public/panels-ui.e6e06034.js.gz +0 -0
- package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
- package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
- package/dist/web/public/readmymind-ui.js.gz +0 -0
- package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
- package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
- package/dist/web/public/session-lineage.js.gz +0 -0
- package/dist/web/public/session-ui.c558f981.js.gz +0 -0
- package/dist/web/public/{settings-ui.95b333c6.js → settings-ui.1ed208dd.js} +1 -1
- package/dist/web/public/settings-ui.1ed208dd.js.br +0 -0
- package/dist/web/public/settings-ui.1ed208dd.js.gz +0 -0
- package/dist/web/public/styles.421b36d4.css.gz +0 -0
- package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
- package/dist/web/public/sw.js.gz +0 -0
- package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
- package/dist/web/public/terminal-ui.70445f81.js.gz +0 -0
- package/dist/web/public/ultracode-panel.js.gz +0 -0
- package/dist/web/public/ultracode-windows.js.gz +0 -0
- package/dist/web/public/upload.html.gz +0 -0
- package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
- package/dist/web/public/vendor/marked.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
- package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
- package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
- package/dist/web/public/vendor/xterm.css.gz +0 -0
- package/dist/web/public/vendor/xterm.min.js.gz +0 -0
- package/dist/web/public/voice-input.4ec670b0.js.gz +0 -0
- package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
- package/dist/web/public/webview-tabs.js.gz +0 -0
- package/dist/web/routes/admin-routes.d.ts.map +1 -1
- package/dist/web/routes/admin-routes.js +6 -1
- package/dist/web/routes/admin-routes.js.map +1 -1
- package/dist/web/routes/session-routes.d.ts.map +1 -1
- package/dist/web/routes/session-routes.js +5 -0
- package/dist/web/routes/session-routes.js.map +1 -1
- package/dist/web/routes/system-routes.d.ts.map +1 -1
- package/dist/web/routes/system-routes.js +3 -0
- package/dist/web/routes/system-routes.js.map +1 -1
- package/dist/web/routes/webview-routes.d.ts.map +1 -1
- package/dist/web/routes/webview-routes.js +39 -6
- package/dist/web/routes/webview-routes.js.map +1 -1
- package/dist/web/schemas.d.ts.map +1 -1
- package/dist/web/schemas.js +7 -0
- package/dist/web/schemas.js.map +1 -1
- package/dist/web/self-update.d.ts +92 -2
- package/dist/web/self-update.d.ts.map +1 -1
- package/dist/web/self-update.js +275 -13
- package/dist/web/self-update.js.map +1 -1
- package/dist/web/webview-egress-policy.d.ts +35 -0
- package/dist/web/webview-egress-policy.d.ts.map +1 -0
- package/dist/web/webview-egress-policy.js +163 -0
- package/dist/web/webview-egress-policy.js.map +1 -0
- package/dist/web/webview-egress.d.ts +71 -0
- package/dist/web/webview-egress.d.ts.map +1 -0
- package/dist/web/webview-egress.js +127 -0
- package/dist/web/webview-egress.js.map +1 -0
- package/dist/web/webview-proxy.d.ts.map +1 -1
- package/dist/web/webview-proxy.js +12 -0
- package/dist/web/webview-proxy.js.map +1 -1
- package/dist/webview-capabilities.d.ts +19 -3
- package/dist/webview-capabilities.d.ts.map +1 -1
- package/dist/webview-capabilities.js +21 -2
- package/dist/webview-capabilities.js.map +1 -1
- package/package.json +2 -1
- package/dist/web/public/settings-ui.95b333c6.js.br +0 -0
- package/dist/web/public/settings-ui.95b333c6.js.gz +0 -0
package/dist/web/self-update.js
CHANGED
|
@@ -16,6 +16,15 @@
|
|
|
16
16
|
* tested, and IO wrappers (`getInstallInfo`, `checkForUpdate`, `startUpdate`,
|
|
17
17
|
* `reconcileUpdateOnBoot`) that touch git/network/fs.
|
|
18
18
|
*
|
|
19
|
+
* DOCKER COMPOSE installs update in place too, through the same script and the
|
|
20
|
+
* same status file. The repo is a host bind mount, so the pull/build land on the
|
|
21
|
+
* host filesystem and survive container recreation; the "restart" is the server
|
|
22
|
+
* EXITING so the container's restart policy relaunches it on the new `dist/`.
|
|
23
|
+
* That applies CODE only — a restart reuses the existing container's image and
|
|
24
|
+
* config — so `evaluateEnvironmentGate()` refuses a release that changes
|
|
25
|
+
* `server.Dockerfile`, `docker-compose.yaml` or `.env.example`, pointing at the
|
|
26
|
+
* host command instead. See `docs/docker-self-update.md`.
|
|
27
|
+
*
|
|
19
28
|
* Related: `src/types/update.ts`, `scripts/self-update.sh`, routes in
|
|
20
29
|
* `src/web/routes/system-routes.ts`.
|
|
21
30
|
*
|
|
@@ -25,8 +34,8 @@ import { spawn, execFileSync } from 'node:child_process';
|
|
|
25
34
|
import { existsSync, readFileSync, writeFileSync, renameSync, copyFileSync, chmodSync } from 'node:fs';
|
|
26
35
|
import { dirname, join } from 'node:path';
|
|
27
36
|
import { fileURLToPath } from 'node:url';
|
|
28
|
-
import { homedir, tmpdir } from 'node:os';
|
|
29
|
-
import { randomUUID } from 'node:crypto';
|
|
37
|
+
import { homedir, hostname, tmpdir } from 'node:os';
|
|
38
|
+
import { randomUUID, createHash } from 'node:crypto';
|
|
30
39
|
import { createRequire } from 'node:module';
|
|
31
40
|
import { dataPath } from '../config/instance.js';
|
|
32
41
|
import { LAUNCHD_LABEL, SYSTEMD_UNIT } from '../config/service-names.js';
|
|
@@ -191,6 +200,111 @@ export function reconcileStatusDecision(status, runningVersion, now) {
|
|
|
191
200
|
return null;
|
|
192
201
|
}
|
|
193
202
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
203
|
+
// PURE helpers — the container environment gate
|
|
204
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
205
|
+
/** Host command that resolves every environment blocker. */
|
|
206
|
+
export const DOCKER_HOST_UPDATE_COMMAND = 'docker/Start-Codeman.sh';
|
|
207
|
+
/**
|
|
208
|
+
* Parse the SET keys out of a dotenv file. Commented-out lines are deliberately
|
|
209
|
+
* NOT keys: `docker/.env.example` uses `# PUID=1000` to document an OPTIONAL
|
|
210
|
+
* override, so treating those as required would block every update on settings
|
|
211
|
+
* the user is meant to leave alone.
|
|
212
|
+
*/
|
|
213
|
+
export function parseEnvKeys(text) {
|
|
214
|
+
const keys = [];
|
|
215
|
+
for (const raw of text.split(/\r?\n/)) {
|
|
216
|
+
const line = raw.trim();
|
|
217
|
+
if (!line || line.startsWith('#'))
|
|
218
|
+
continue;
|
|
219
|
+
const m = line.replace(/^export\s+/, '').match(/^([A-Za-z_][A-Za-z0-9_]*)\s*=/);
|
|
220
|
+
if (m && !keys.includes(m[1]))
|
|
221
|
+
keys.push(m[1]);
|
|
222
|
+
}
|
|
223
|
+
return keys;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Keys the TARGET release's `.env.example` sets that the user's `.env` does not.
|
|
227
|
+
*
|
|
228
|
+
* This is the check that makes a new required setting visible: Compose resolves
|
|
229
|
+
* an unset `${VAR}` to the empty string and starts anyway, so a missing key is
|
|
230
|
+
* otherwise silent until something misbehaves at runtime.
|
|
231
|
+
*/
|
|
232
|
+
export function diffRequiredEnvKeys(targetExample, userEnv) {
|
|
233
|
+
const have = new Set(parseEnvKeys(userEnv));
|
|
234
|
+
return parseEnvKeys(targetExample).filter((k) => !have.has(k));
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* True when the container's restart policy relaunches it after the server exits.
|
|
238
|
+
* `no` and an empty policy mean an in-place update would take Codeman DOWN
|
|
239
|
+
* rather than restart it, so the update is refused instead.
|
|
240
|
+
*/
|
|
241
|
+
export function isAutoRestartPolicy(name) {
|
|
242
|
+
return name === 'always' || name === 'unless-stopped' || name === 'on-failure';
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* PURE: may the container updater restart the server by exiting? Yes when the
|
|
246
|
+
* Compose file declared it (`CODEMAN_RESTART_BY_EXIT=1`, set only there, since
|
|
247
|
+
* that file is what sets `restart: unless-stopped`) or when the daemon reports an
|
|
248
|
+
* auto-restart policy. Otherwise the answer is NO, and the updater stages the
|
|
249
|
+
* build and asks for a manual restart instead of exiting: an unknown policy is
|
|
250
|
+
* fine to fail open in the GATE (refusing would block installs with no socket),
|
|
251
|
+
* but the kill itself must not fail open, or a container the daemon would not
|
|
252
|
+
* bring back goes down with no UI left to recover it from.
|
|
253
|
+
*/
|
|
254
|
+
export function shouldRestartByExit(declared, restartPolicy) {
|
|
255
|
+
return declared || isAutoRestartPolicy(restartPolicy);
|
|
256
|
+
}
|
|
257
|
+
/** The Compose file's declaration that exiting relaunches this container. */
|
|
258
|
+
export function restartByExitDeclared() {
|
|
259
|
+
return process.env.CODEMAN_RESTART_BY_EXIT === '1';
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* PURE gate decision. An in-place container update applies CODE only: the server
|
|
263
|
+
* exits and the container's restart policy relaunches it on the new `dist/`. A
|
|
264
|
+
* restart reuses the existing container's image and config, so anything that
|
|
265
|
+
* changes the ENVIRONMENT cannot take effect that way and is refused here with
|
|
266
|
+
* the host command that can apply it.
|
|
267
|
+
*
|
|
268
|
+
* ⚠️ An unknown hash (null) is NOT treated as "changed": a first update from a
|
|
269
|
+
* container created before the fingerprint file existed has no baseline, and
|
|
270
|
+
* failing closed there would block every such install from ever updating. The
|
|
271
|
+
* baseline is written by `Start-Codeman.sh`, so it exists from the first
|
|
272
|
+
* host-side start onward. An unknown restart policy is likewise not a blocker —
|
|
273
|
+
* the shipped Compose file sets `unless-stopped`, and the probe needs the Docker
|
|
274
|
+
* socket, which a user may not have mounted.
|
|
275
|
+
*/
|
|
276
|
+
export function computeEnvironmentBlockers(input) {
|
|
277
|
+
const blockers = [];
|
|
278
|
+
if (input.appliedDockerfileHash &&
|
|
279
|
+
input.targetDockerfileHash &&
|
|
280
|
+
input.appliedDockerfileHash !== input.targetDockerfileHash) {
|
|
281
|
+
blockers.push({
|
|
282
|
+
kind: 'dockerfile-changed',
|
|
283
|
+
message: 'This release changes docker/server.Dockerfile, so the image must be rebuilt.',
|
|
284
|
+
});
|
|
285
|
+
}
|
|
286
|
+
if (input.appliedComposeHash && input.targetComposeHash && input.appliedComposeHash !== input.targetComposeHash) {
|
|
287
|
+
blockers.push({
|
|
288
|
+
kind: 'compose-changed',
|
|
289
|
+
message: 'This release changes docker/docker-compose.yaml, so the container must be recreated.',
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
if (input.missingEnvKeys.length > 0) {
|
|
293
|
+
blockers.push({
|
|
294
|
+
kind: 'env-keys-missing',
|
|
295
|
+
message: `This release adds ${input.missingEnvKeys.length} setting(s) your docker/.env has no value for.`,
|
|
296
|
+
details: input.missingEnvKeys,
|
|
297
|
+
});
|
|
298
|
+
}
|
|
299
|
+
if (input.restartPolicy !== null && !isAutoRestartPolicy(input.restartPolicy)) {
|
|
300
|
+
blockers.push({
|
|
301
|
+
kind: 'no-auto-restart',
|
|
302
|
+
message: `This container's restart policy is "${input.restartPolicy}", so it would not come back after the update.`,
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return blockers;
|
|
306
|
+
}
|
|
307
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
194
308
|
// Status file IO
|
|
195
309
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
196
310
|
/** Read the persisted status; tolerant of a missing/torn file (returns null). */
|
|
@@ -245,20 +359,135 @@ export function resolveInstallDir() {
|
|
|
245
359
|
return root;
|
|
246
360
|
return process.cwd();
|
|
247
361
|
}
|
|
362
|
+
/**
|
|
363
|
+
* True when this process runs inside a container. `/.dockerenv` is created by the
|
|
364
|
+
* Docker daemon itself; the env var is set by our own Compose file so the check
|
|
365
|
+
* also holds under runtimes that omit that file.
|
|
366
|
+
*/
|
|
367
|
+
export function isRunningInContainer() {
|
|
368
|
+
return process.env.CODEMAN_IN_CONTAINER === '1' || existsSync('/.dockerenv');
|
|
369
|
+
}
|
|
248
370
|
function detectInstallKind(dir) {
|
|
371
|
+
// A container whose code is a bind-mounted checkout updates in place (the pull
|
|
372
|
+
// and build land on the host filesystem and survive container recreation). A
|
|
373
|
+
// container WITHOUT that mount runs a baked image copy — a pull there would go
|
|
374
|
+
// to the writable layer and vanish on the next `up`, so it is not updatable.
|
|
249
375
|
if (existsSync(join(dir, '.git')))
|
|
250
|
-
return 'git';
|
|
376
|
+
return isRunningInContainer() ? 'docker-compose' : 'git';
|
|
251
377
|
// Global npm install ships only dist/ (no src/, no .git).
|
|
252
378
|
if (!existsSync(join(dir, 'src')))
|
|
253
379
|
return 'npm';
|
|
254
380
|
return 'unknown';
|
|
255
381
|
}
|
|
382
|
+
/** Install kinds whose update is applied in place by `scripts/self-update.sh`. */
|
|
383
|
+
export function canSelfUpdateInPlace(kind) {
|
|
384
|
+
return kind === 'git' || kind === 'docker-compose';
|
|
385
|
+
}
|
|
386
|
+
/** Path of the fingerprint baseline written by `docker/Start-Codeman.sh`. */
|
|
387
|
+
const DOCKER_ENV_APPLIED_FILE = dataPath('docker-env-applied.json');
|
|
388
|
+
/** Files whose content defines the container ENVIRONMENT (vs. the app's code). */
|
|
389
|
+
const DOCKERFILE_REL = 'docker/server.Dockerfile';
|
|
390
|
+
const COMPOSE_REL = 'docker/docker-compose.yaml';
|
|
391
|
+
const ENV_EXAMPLE_REL = 'docker/.env.example';
|
|
392
|
+
const ENV_REL = 'docker/.env';
|
|
393
|
+
function sha256(text) {
|
|
394
|
+
return createHash('sha256').update(text, 'utf-8').digest('hex');
|
|
395
|
+
}
|
|
396
|
+
/** Read a file at a git TAG without checking it out (`git show tag:path`). */
|
|
397
|
+
function gitShowAtTag(repo, tag, relPath) {
|
|
398
|
+
return tryExec('git', ['show', `${tag}:${relPath}`], repo);
|
|
399
|
+
}
|
|
400
|
+
function readFileOrNull(path) {
|
|
401
|
+
try {
|
|
402
|
+
return readFileSync(path, 'utf-8');
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* The fingerprints the RUNNING container was created from, recorded on the host
|
|
410
|
+
* by `Start-Codeman.sh` at each build/recreate. Returns nulls when absent (a
|
|
411
|
+
* container started before this file existed) — `computeEnvironmentBlockers()`
|
|
412
|
+
* deliberately treats an unknown baseline as "not a blocker".
|
|
413
|
+
*/
|
|
414
|
+
function readAppliedEnvironmentFingerprints() {
|
|
415
|
+
const raw = readFileOrNull(DOCKER_ENV_APPLIED_FILE);
|
|
416
|
+
if (!raw)
|
|
417
|
+
return { dockerfile: null, compose: null };
|
|
418
|
+
try {
|
|
419
|
+
const parsed = JSON.parse(raw);
|
|
420
|
+
return { dockerfile: parsed.dockerfileSha256 ?? null, compose: parsed.composeSha256 ?? null };
|
|
421
|
+
}
|
|
422
|
+
catch {
|
|
423
|
+
return { dockerfile: null, compose: null };
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Restart policy of the container we're running in, via the mounted Docker
|
|
428
|
+
* socket. Returns null when the socket or CLI is unavailable — an unknown policy
|
|
429
|
+
* is not a blocker (see `computeEnvironmentBlockers`).
|
|
430
|
+
*/
|
|
431
|
+
function detectOwnRestartPolicy() {
|
|
432
|
+
// Docker sets HOSTNAME to the short container id; os.hostname() is the same
|
|
433
|
+
// value when the env var is absent. A custom `hostname:` in the compose file
|
|
434
|
+
// makes both unresolvable to the daemon, which fails open (unknown is not a
|
|
435
|
+
// blocker) rather than refusing an update over a cosmetic setting.
|
|
436
|
+
const id = process.env.HOSTNAME || hostname();
|
|
437
|
+
if (!id)
|
|
438
|
+
return null;
|
|
439
|
+
const out = tryExec('docker', ['inspect', '--format', '{{.HostConfig.RestartPolicy.Name}}', id]);
|
|
440
|
+
return out && out.length > 0 ? out : null;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Evaluate the environment gate for a candidate release tag. Reads the TARGET
|
|
444
|
+
* tag's files straight out of git (`git show`), so nothing is checked out and the
|
|
445
|
+
* answer is available at CHECK time — the UI can refuse before the user commits
|
|
446
|
+
* to an update.
|
|
447
|
+
*/
|
|
448
|
+
export function evaluateEnvironmentGate(installDir, tag) {
|
|
449
|
+
// `git show <tag>:<path>` needs the tag's objects locally, and neither the
|
|
450
|
+
// GitHub API nor `ls-remote` fetches anything — so a check that has never seen
|
|
451
|
+
// this tag would read nothing and report a falsely clean gate. Fetch the one
|
|
452
|
+
// ref first (cheap: it deltas against what the clone already has) and only
|
|
453
|
+
// then read. The updater fetches the same ref again; both are idempotent.
|
|
454
|
+
if (tryExec('git', ['rev-parse', '--verify', '--quiet', `${tag}^{commit}`], installDir) === null) {
|
|
455
|
+
tryExec('git', ['fetch', '--tags', '--force', 'origin', `refs/tags/${tag}:refs/tags/${tag}`], installDir, CHECK_TIMEOUT_MS);
|
|
456
|
+
}
|
|
457
|
+
const targetDockerfile = gitShowAtTag(installDir, tag, DOCKERFILE_REL);
|
|
458
|
+
const targetCompose = gitShowAtTag(installDir, tag, COMPOSE_REL);
|
|
459
|
+
const targetExample = gitShowAtTag(installDir, tag, ENV_EXAMPLE_REL);
|
|
460
|
+
// No environment files at the target tag at all: we cannot judge, so say so
|
|
461
|
+
// rather than reporting a clean gate the caller would trust.
|
|
462
|
+
if (targetDockerfile === null && targetCompose === null && targetExample === null) {
|
|
463
|
+
return { checked: false, blockers: [], hostCommand: DOCKER_HOST_UPDATE_COMMAND };
|
|
464
|
+
}
|
|
465
|
+
const applied = readAppliedEnvironmentFingerprints();
|
|
466
|
+
const userEnv = readFileOrNull(join(installDir, ENV_REL));
|
|
467
|
+
const blockers = computeEnvironmentBlockers({
|
|
468
|
+
appliedDockerfileHash: applied.dockerfile,
|
|
469
|
+
targetDockerfileHash: targetDockerfile === null ? null : sha256(targetDockerfile),
|
|
470
|
+
appliedComposeHash: applied.compose,
|
|
471
|
+
targetComposeHash: targetCompose === null ? null : sha256(targetCompose),
|
|
472
|
+
// A missing/unreadable .env cannot be diffed — report no missing keys rather
|
|
473
|
+
// than every key, which would block on an install using a non-standard path.
|
|
474
|
+
missingEnvKeys: targetExample !== null && userEnv !== null ? diffRequiredEnvKeys(targetExample, userEnv) : [],
|
|
475
|
+
restartPolicy: detectOwnRestartPolicy(),
|
|
476
|
+
});
|
|
477
|
+
return { checked: true, blockers, hostCommand: DOCKER_HOST_UPDATE_COMMAND };
|
|
478
|
+
}
|
|
256
479
|
/**
|
|
257
480
|
* Detect which init system supervises us. Detection happens HERE (in the running
|
|
258
481
|
* server, which has a rich env) and the result is passed to the updater script —
|
|
259
482
|
* the detached child must not re-probe with a stripped-down environment.
|
|
260
483
|
*/
|
|
261
484
|
export function detectSupervisor() {
|
|
485
|
+
// Checked FIRST: a container has no init system of its own, and its "restart"
|
|
486
|
+
// is the server exiting so the Docker restart policy relaunches it. Probing
|
|
487
|
+
// systemd here would find nothing and report `none`, which stages the update
|
|
488
|
+
// and then asks the user to restart by hand for no reason.
|
|
489
|
+
if (isRunningInContainer())
|
|
490
|
+
return 'docker-compose';
|
|
262
491
|
if (process.platform === 'darwin') {
|
|
263
492
|
if (existsSync(join(homedir(), 'Library', 'LaunchAgents', `${LAUNCHD_LABEL}.plist`)))
|
|
264
493
|
return 'launchd';
|
|
@@ -362,15 +591,26 @@ export async function checkForUpdate() {
|
|
|
362
591
|
checkedAt,
|
|
363
592
|
source: 'none',
|
|
364
593
|
};
|
|
365
|
-
if (info.installKind
|
|
366
|
-
return {
|
|
594
|
+
if (!canSelfUpdateInPlace(info.installKind)) {
|
|
595
|
+
return {
|
|
596
|
+
...base,
|
|
597
|
+
error: info.installKind === 'unknown' && isRunningInContainer()
|
|
598
|
+
? 'This container runs a baked image copy with no repository mounted — self-update is unavailable. See docs/docker-self-update.md.'
|
|
599
|
+
: 'Not a git install — self-update is unavailable.',
|
|
600
|
+
};
|
|
367
601
|
}
|
|
602
|
+
/** Attach the container environment gate to a finished check result. */
|
|
603
|
+
const withGate = (result) => {
|
|
604
|
+
if (info.installKind !== 'docker-compose' || !result.latestTag || !result.updateAvailable)
|
|
605
|
+
return result;
|
|
606
|
+
return { ...result, environment: evaluateEnvironmentGate(info.installDir, result.latestTag) };
|
|
607
|
+
};
|
|
368
608
|
const remote = tryExec('git', ['remote', 'get-url', 'origin'], info.installDir);
|
|
369
609
|
const gh = remote ? parseGitHubRepo(remote) : null;
|
|
370
610
|
if (gh) {
|
|
371
611
|
const rel = await fetchLatestReleaseFromGitHub(gh.owner, gh.repo);
|
|
372
612
|
if (rel) {
|
|
373
|
-
return {
|
|
613
|
+
return withGate({
|
|
374
614
|
...base,
|
|
375
615
|
latestVersion: rel.version,
|
|
376
616
|
latestTag: rel.tag,
|
|
@@ -378,19 +618,19 @@ export async function checkForUpdate() {
|
|
|
378
618
|
htmlUrl: rel.htmlUrl,
|
|
379
619
|
updateAvailable: isNewerStableVersion(info.currentVersion, rel.version),
|
|
380
620
|
source: 'github-api',
|
|
381
|
-
};
|
|
621
|
+
});
|
|
382
622
|
}
|
|
383
623
|
}
|
|
384
624
|
// Fallback: enumerate remote tags directly (works for non-GitHub remotes too).
|
|
385
625
|
const viaGit = fetchLatestTagViaGit(info.installDir);
|
|
386
626
|
if (viaGit) {
|
|
387
|
-
return {
|
|
627
|
+
return withGate({
|
|
388
628
|
...base,
|
|
389
629
|
latestVersion: viaGit.version,
|
|
390
630
|
latestTag: viaGit.tag,
|
|
391
631
|
updateAvailable: isNewerStableVersion(info.currentVersion, viaGit.version),
|
|
392
632
|
source: 'git-ls-remote',
|
|
393
|
-
};
|
|
633
|
+
});
|
|
394
634
|
}
|
|
395
635
|
return { ...base, error: 'Could not reach the update server (GitHub API + git ls-remote both failed).' };
|
|
396
636
|
}
|
|
@@ -458,11 +698,13 @@ export async function startUpdate() {
|
|
|
458
698
|
if (!info.selfUpdateEnabled) {
|
|
459
699
|
return { ok: false, code: 'disabled', message: 'Self-update is disabled (CODEMAN_DISABLE_SELF_UPDATE=1).' };
|
|
460
700
|
}
|
|
461
|
-
if (info.installKind
|
|
701
|
+
if (!canSelfUpdateInPlace(info.installKind)) {
|
|
462
702
|
return {
|
|
463
703
|
ok: false,
|
|
464
704
|
code: 'not-git',
|
|
465
|
-
message:
|
|
705
|
+
message: isRunningInContainer()
|
|
706
|
+
? 'This container has no repository mounted. Update from the host with docker/Start-Codeman.sh.'
|
|
707
|
+
: 'This is not a git install. Update with: npm i -g aicodeman@latest',
|
|
466
708
|
};
|
|
467
709
|
}
|
|
468
710
|
const existing = readUpdateStatus();
|
|
@@ -476,6 +718,19 @@ export async function startUpdate() {
|
|
|
476
718
|
if (!isValidReleaseTag(check.latestTag)) {
|
|
477
719
|
return { ok: false, code: 'bad-tag', message: `Refusing to update to an unrecognized tag: ${check.latestTag}` };
|
|
478
720
|
}
|
|
721
|
+
// Re-evaluate rather than trusting the check the browser saw: the UI hides the
|
|
722
|
+
// button when the gate blocks, but the endpoint is reachable directly and the
|
|
723
|
+
// release could have moved between the check and the click.
|
|
724
|
+
if (info.installKind === 'docker-compose') {
|
|
725
|
+
const gate = evaluateEnvironmentGate(info.installDir, check.latestTag);
|
|
726
|
+
if (gate.blockers.length > 0) {
|
|
727
|
+
return {
|
|
728
|
+
ok: false,
|
|
729
|
+
code: 'env-blocked',
|
|
730
|
+
message: `${gate.blockers.map((b) => b.message).join(' ')} Run ${gate.hostCommand} on the Docker host to apply this release.`,
|
|
731
|
+
};
|
|
732
|
+
}
|
|
733
|
+
}
|
|
479
734
|
const prevSha = tryExec('git', ['rev-parse', 'HEAD'], info.installDir);
|
|
480
735
|
const runner = stageRunner(info.installDir);
|
|
481
736
|
if (!runner) {
|
|
@@ -515,11 +770,18 @@ export async function startUpdate() {
|
|
|
515
770
|
process.execPath,
|
|
516
771
|
'--log',
|
|
517
772
|
logFile,
|
|
518
|
-
// For the launchd-daemon restart
|
|
519
|
-
//
|
|
773
|
+
// For the launchd-daemon and docker-compose restart paths: the updater kills
|
|
774
|
+
// this PID and the supervisor (KeepAlive daemon / Docker restart policy)
|
|
775
|
+
// respawns the server on the freshly built dist/.
|
|
520
776
|
'--server-pid',
|
|
521
777
|
String(process.pid),
|
|
522
778
|
];
|
|
779
|
+
if (info.supervisor === 'docker-compose') {
|
|
780
|
+
// Decided HERE, where the Docker socket and the Compose env are reachable;
|
|
781
|
+
// the updater only reads the answer. Without a yes it never exits the server.
|
|
782
|
+
const byExit = shouldRestartByExit(restartByExitDeclared(), detectOwnRestartPolicy());
|
|
783
|
+
args.push('--restart-by-exit', byExit ? '1' : '0');
|
|
784
|
+
}
|
|
523
785
|
if (prevSha)
|
|
524
786
|
args.push('--prev-sha', prevSha);
|
|
525
787
|
if (info.dirty)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/web/self-update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"self-update.js","sourceRoot":"","sources":["../../src/web/self-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Egress policy for the web-tab proxy: which upstream ADDRESSES
|
|
3
|
+
* a saved dashboard URL may never resolve to.
|
|
4
|
+
*
|
|
5
|
+
* Pure (no IO), so the same predicate serves three call sites that see the target
|
|
6
|
+
* at different stages: the Zod schema (a URL being saved), the sync check on a
|
|
7
|
+
* hostname that is already an IP literal (Node's `net.connect` skips DNS for
|
|
8
|
+
* those, so a lookup hook never sees them), and the DNS lookup hook that judges
|
|
9
|
+
* the RESOLVED addresses of a name (`webview-egress.ts`), which is what closes
|
|
10
|
+
* the rebinding hole a hostname-string check alone leaves open.
|
|
11
|
+
*
|
|
12
|
+
* What is blocked, and only this: link-local ranges and the fixed cloud-metadata
|
|
13
|
+
* addresses that live there or beside them. Loopback and RFC1918 are deliberately
|
|
14
|
+
* ALLOWED: a `localhost` Grafana or a LAN Home Assistant is the documented use
|
|
15
|
+
* case for web tabs (`docs/web-tabs.md`), and the proxy's reach into the server's
|
|
16
|
+
* own network is a documented property, not a bug. Nothing a person would
|
|
17
|
+
* embed as a dashboard lives at 169.254.169.254, while an IAM credential does.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* True when `address` (an IP literal, bracket-free) is one the proxy must never
|
|
21
|
+
* connect to. Non-IP input is never blocked here: names are judged by
|
|
22
|
+
* `isBlockedWebviewHostname()` at save time and by their resolved addresses at
|
|
23
|
+
* connect time.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isBlockedEgressAddress(address: string): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Judge a URL hostname as `URL.hostname` hands it over: IPv6 literals arrive in
|
|
28
|
+
* brackets, names may carry a trailing dot, and case is irrelevant.
|
|
29
|
+
*
|
|
30
|
+
* @returns a short human-readable reason when blocked, null when allowed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function blockedWebviewHostReason(hostname: string): string | null;
|
|
33
|
+
/** Schema-friendly boolean form of `blockedWebviewHostReason()` over a raw URL string. */
|
|
34
|
+
export declare function isBlockedWebviewUrl(raw: string): boolean;
|
|
35
|
+
//# sourceMappingURL=webview-egress-policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webview-egress-policy.d.ts","sourceRoot":"","sources":["../../src/web/webview-egress-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA0GH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAK/D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQxE;AAED,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQxD"}
|