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.
Files changed (93) hide show
  1. package/dist/types/update.d.ts +51 -3
  2. package/dist/types/update.d.ts.map +1 -1
  3. package/dist/types/update.js +4 -0
  4. package/dist/types/update.js.map +1 -1
  5. package/dist/web/public/admin-ui.js.gz +0 -0
  6. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  7. package/dist/web/public/app.a5d2fc08.js.gz +0 -0
  8. package/dist/web/public/approvals-ui.js.gz +0 -0
  9. package/dist/web/public/constants.7bd482dc.js.gz +0 -0
  10. package/dist/web/public/cron-ui.js.gz +0 -0
  11. package/dist/web/public/entrance-animations.js.gz +0 -0
  12. package/dist/web/public/home-sessions.js.gz +0 -0
  13. package/dist/web/public/i18n.9ae15b51.js.gz +0 -0
  14. package/dist/web/public/image-input.ee16ad88.js.gz +0 -0
  15. package/dist/web/public/index.html +1 -1
  16. package/dist/web/public/index.html.br +0 -0
  17. package/dist/web/public/index.html.gz +0 -0
  18. package/dist/web/public/input-cjk.87f14251.js.gz +0 -0
  19. package/dist/web/public/keyboard-accessory.0454a3e9.js.gz +0 -0
  20. package/dist/web/public/mobile-handlers.0f83a608.js.gz +0 -0
  21. package/dist/web/public/mobile-overview.js.gz +0 -0
  22. package/dist/web/public/mobile.87674154.css.gz +0 -0
  23. package/dist/web/public/notification-manager.5d229063.js.gz +0 -0
  24. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  25. package/dist/web/public/panels-ui.e6e06034.js.gz +0 -0
  26. package/dist/web/public/ralph-panel.6de2d0f8.js.gz +0 -0
  27. package/dist/web/public/ralph-wizard.13a1831e.js.gz +0 -0
  28. package/dist/web/public/readmymind-ui.js.gz +0 -0
  29. package/dist/web/public/respawn-ui.ff0dae4c.js.gz +0 -0
  30. package/dist/web/public/sanitize-html.bc7078d6.js.gz +0 -0
  31. package/dist/web/public/session-lineage.js.gz +0 -0
  32. package/dist/web/public/session-ui.c558f981.js.gz +0 -0
  33. package/dist/web/public/{settings-ui.95b333c6.js → settings-ui.1ed208dd.js} +1 -1
  34. package/dist/web/public/settings-ui.1ed208dd.js.br +0 -0
  35. package/dist/web/public/settings-ui.1ed208dd.js.gz +0 -0
  36. package/dist/web/public/styles.421b36d4.css.gz +0 -0
  37. package/dist/web/public/subagent-windows.e6ca799f.js.gz +0 -0
  38. package/dist/web/public/sw.js.gz +0 -0
  39. package/dist/web/public/tab-rail-resize.42c24949.js.gz +0 -0
  40. package/dist/web/public/terminal-ui.70445f81.js.gz +0 -0
  41. package/dist/web/public/ultracode-panel.js.gz +0 -0
  42. package/dist/web/public/ultracode-windows.js.gz +0 -0
  43. package/dist/web/public/upload.html.gz +0 -0
  44. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  45. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  46. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  47. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  48. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  49. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  50. package/dist/web/public/vendor/xterm-predictive-echo.bd6882b8.js.gz +0 -0
  51. package/dist/web/public/vendor/xterm-zerolag-input.6fee72f2.js.gz +0 -0
  52. package/dist/web/public/vendor/xterm.css.gz +0 -0
  53. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  54. package/dist/web/public/voice-input.4ec670b0.js.gz +0 -0
  55. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  56. package/dist/web/public/webview-tabs.js.gz +0 -0
  57. package/dist/web/routes/admin-routes.d.ts.map +1 -1
  58. package/dist/web/routes/admin-routes.js +6 -1
  59. package/dist/web/routes/admin-routes.js.map +1 -1
  60. package/dist/web/routes/session-routes.d.ts.map +1 -1
  61. package/dist/web/routes/session-routes.js +5 -0
  62. package/dist/web/routes/session-routes.js.map +1 -1
  63. package/dist/web/routes/system-routes.d.ts.map +1 -1
  64. package/dist/web/routes/system-routes.js +3 -0
  65. package/dist/web/routes/system-routes.js.map +1 -1
  66. package/dist/web/routes/webview-routes.d.ts.map +1 -1
  67. package/dist/web/routes/webview-routes.js +39 -6
  68. package/dist/web/routes/webview-routes.js.map +1 -1
  69. package/dist/web/schemas.d.ts.map +1 -1
  70. package/dist/web/schemas.js +7 -0
  71. package/dist/web/schemas.js.map +1 -1
  72. package/dist/web/self-update.d.ts +92 -2
  73. package/dist/web/self-update.d.ts.map +1 -1
  74. package/dist/web/self-update.js +275 -13
  75. package/dist/web/self-update.js.map +1 -1
  76. package/dist/web/webview-egress-policy.d.ts +35 -0
  77. package/dist/web/webview-egress-policy.d.ts.map +1 -0
  78. package/dist/web/webview-egress-policy.js +163 -0
  79. package/dist/web/webview-egress-policy.js.map +1 -0
  80. package/dist/web/webview-egress.d.ts +71 -0
  81. package/dist/web/webview-egress.d.ts.map +1 -0
  82. package/dist/web/webview-egress.js +127 -0
  83. package/dist/web/webview-egress.js.map +1 -0
  84. package/dist/web/webview-proxy.d.ts.map +1 -1
  85. package/dist/web/webview-proxy.js +12 -0
  86. package/dist/web/webview-proxy.js.map +1 -1
  87. package/dist/webview-capabilities.d.ts +19 -3
  88. package/dist/webview-capabilities.d.ts.map +1 -1
  89. package/dist/webview-capabilities.js +21 -2
  90. package/dist/webview-capabilities.js.map +1 -1
  91. package/package.json +2 -1
  92. package/dist/web/public/settings-ui.95b333c6.js.br +0 -0
  93. package/dist/web/public/settings-ui.95b333c6.js.gz +0 -0
@@ -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 !== 'git') {
366
- return { ...base, error: 'Not a git install — self-update is unavailable.' };
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 !== 'git') {
701
+ if (!canSelfUpdateInPlace(info.installKind)) {
462
702
  return {
463
703
  ok: false,
464
704
  code: 'not-git',
465
- message: 'This is not a git install. Update with: npm i -g aicodeman@latest',
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 path: the updater kills this PID and the
519
- // KeepAlive daemon respawns the server on the freshly built dist/.
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"}