@wjarka/cezarion 0.11.0 → 0.11.1-pr47.74

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.
@@ -28,6 +28,20 @@ export interface ManifestLike {
28
28
  * a package up is one line in ITS manifest and no change to the release code.
29
29
  */
30
30
  export declare function isPublishable(pkg: ManifestLike): boolean;
31
+ /**
32
+ * Relative dirs of every manifest a release stamps, keyed as `ReleaseManifests`.
33
+ *
34
+ * The completeness test walks the workspace root's `workspaces` array against these values, so a
35
+ * new workspace that is not listed here fails CI rather than shipping a bump `npm ci` cannot
36
+ * install. `alias` is not a workspace (it lives next to `packages/`) and is the one extra entry.
37
+ */
38
+ export declare const RELEASE_MANIFEST_DIRS: {
39
+ readonly contract: 'packages/contract';
40
+ readonly apiClient: 'packages/api-client';
41
+ readonly cezar: 'packages/cezar';
42
+ readonly web: 'packages/web';
43
+ readonly alias: 'alias-cezarion';
44
+ };
31
45
  /**
32
46
  * Every manifest a release stamps.
33
47
  *
@@ -35,7 +49,8 @@ export declare function isPublishable(pkg: ManifestLike): boolean;
35
49
  * the one before it: the alias is a bin-shim over the service, and the service (from the phase
36
50
  * where it stops merely testing against the client and starts importing it) depends on the
37
51
  * api-client. Publishing the dependent first would briefly advertise a version of its
38
- * dependency that does not exist on the registry yet.
52
+ * dependency that does not exist on the registry yet. Private members of the set are still
53
+ * stamped — they are simply skipped at publish time.
39
54
  */
40
55
  export interface ReleaseManifests {
41
56
  /**
@@ -51,6 +66,12 @@ export interface ReleaseManifests {
51
66
  apiClient: ManifestLike;
52
67
  /** The published service + CLI. */
53
68
  cezar: ManifestLike;
69
+ /**
70
+ * The cockpit SPA. `private`, so never published, but it consumes the api-client and the
71
+ * service, and a bump that leaves its ranges on the previous version makes `npm ci` on the
72
+ * version-bump branch fail the same way an unstamped contract does.
73
+ */
74
+ web: ManifestLike;
54
75
  /** The unscoped bin alias, so `npx cezarion` works. */
55
76
  alias: ManifestLike;
56
77
  }
@@ -68,10 +89,11 @@ export declare function pinDependency(pkg: ManifestLike, depName: string, range:
68
89
  /**
69
90
  * Stamp every manifest to `version` and re-pin the intra-release dependencies.
70
91
  *
71
- * Two pins, both derived from the manifests rather than hardcoded:
92
+ * Pins, all derived from the manifests rather than hardcoded:
72
93
  * - the alias → the service, so `npx <alias>@<v>` runs the matching CLI;
73
- * - the service → the api-client, so a published service can never resolve a client build it
74
- * was not released with.
94
+ * - the service → the api-client (and the contract), so a published service can never resolve
95
+ * a client build it was not released with;
96
+ * - the cockpit → the api-client and the service, so a bump branch stays `npm ci`-able.
75
97
  *
76
98
  * The alias also inherits `repository`/`homepage`/`bugs` from the service manifest: we publish
77
99
  * with `--provenance`, and npm rejects (E422) any manifest whose `repository.url` does not
@@ -20,6 +20,20 @@
20
20
  export function isPublishable(pkg) {
21
21
  return pkg.private !== true;
22
22
  }
23
+ /**
24
+ * Relative dirs of every manifest a release stamps, keyed as `ReleaseManifests`.
25
+ *
26
+ * The completeness test walks the workspace root's `workspaces` array against these values, so a
27
+ * new workspace that is not listed here fails CI rather than shipping a bump `npm ci` cannot
28
+ * install. `alias` is not a workspace (it lives next to `packages/`) and is the one extra entry.
29
+ */
30
+ export const RELEASE_MANIFEST_DIRS = {
31
+ contract: 'packages/contract',
32
+ apiClient: 'packages/api-client',
33
+ cezar: 'packages/cezar',
34
+ web: 'packages/web',
35
+ alias: 'alias-cezarion',
36
+ };
23
37
  /**
24
38
  * Rewrite `pkg`'s range for `depName`, in whichever dependency section already declares it.
25
39
  *
@@ -41,10 +55,11 @@ export function pinDependency(pkg, depName, range) {
41
55
  /**
42
56
  * Stamp every manifest to `version` and re-pin the intra-release dependencies.
43
57
  *
44
- * Two pins, both derived from the manifests rather than hardcoded:
58
+ * Pins, all derived from the manifests rather than hardcoded:
45
59
  * - the alias → the service, so `npx <alias>@<v>` runs the matching CLI;
46
- * - the service → the api-client, so a published service can never resolve a client build it
47
- * was not released with.
60
+ * - the service → the api-client (and the contract), so a published service can never resolve
61
+ * a client build it was not released with;
62
+ * - the cockpit → the api-client and the service, so a bump branch stays `npm ci`-able.
48
63
  *
49
64
  * The alias also inherits `repository`/`homepage`/`bugs` from the service manifest: we publish
50
65
  * with `--provenance`, and npm rejects (E422) any manifest whose `repository.url` does not
@@ -52,7 +67,7 @@ export function pinDependency(pkg, depName, range) {
52
67
  * service's — already correct, and being a git URL, unaffected by any npm-name rename.
53
68
  */
54
69
  export function stampManifestSet(manifests, version, pin) {
55
- const { contract, apiClient, cezar, alias } = manifests;
70
+ const { contract, apiClient, cezar, web, alias } = manifests;
56
71
  const range = pin(version);
57
72
  const inherited = {};
58
73
  for (const field of ['repository', 'homepage', 'bugs']) {
@@ -63,6 +78,7 @@ export function stampManifestSet(manifests, version, pin) {
63
78
  contract: { ...contract, version },
64
79
  apiClient: pinDependency({ ...apiClient, version }, contract.name, range),
65
80
  cezar: pinDependency(pinDependency({ ...cezar, version }, apiClient.name, range), contract.name, range),
81
+ web: pinDependency(pinDependency({ ...web, version }, apiClient.name, range), cezar.name, range),
66
82
  alias: {
67
83
  ...pinDependency({ ...alias, ...inherited, version }, cezar.name, range),
68
84
  // The alias exists only to depend on the service — an unpinned or missing entry would
@@ -1 +1 @@
1
- {"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/release/manifests.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,OAAO,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;AAC9B,CAAC;AAgCD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB,EAAE,OAAe,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;IAClF,MAAM,GAAG,GAAiB,EAAE,GAAG,GAAG,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAuC,CAAC;QAChE,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA2B,EAC3B,OAAe,EACf,GAAa;IAEb,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IACxD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAU,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;QAClC,SAAS,EAAE,aAAa,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACzE,KAAK,EAAE,aAAa,CAClB,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAC3D,QAAQ,CAAC,IAAI,EACb,KAAK,CACN;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YACxE,sFAAsF;YACtF,kFAAkF;YAClF,YAAY,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;SAC7D;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"manifests.js","sourceRoot":"","sources":["../../src/release/manifests.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB;IAC7C,OAAO,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,QAAQ,EAAE,mBAAmB;IAC7B,SAAS,EAAE,qBAAqB;IAChC,KAAK,EAAE,gBAAgB;IACvB,GAAG,EAAE,cAAc;IACnB,KAAK,EAAE,gBAAgB;CACf,CAAC;AAuCX;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAiB,EAAE,OAAe,EAAE,KAAa;IAC7E,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,iBAAiB,EAAE,kBAAkB,CAAU,CAAC;IAClF,MAAM,GAAG,GAAiB,EAAE,GAAG,GAAG,EAAE,CAAC;IACrC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAuC,CAAC;QAChE,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAA2B,EAC3B,OAAe,EACf,GAAa;IAEb,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;IAC7D,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IAE3B,MAAM,SAAS,GAA0B,EAAE,CAAC;IAC5C,KAAK,MAAM,KAAK,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,MAAM,CAAU,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,SAAS;YAAE,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE;QAClC,SAAS,EAAE,aAAa,CAAC,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;QACzE,KAAK,EAAE,aAAa,CAClB,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EAC3D,QAAQ,CAAC,IAAI,EACb,KAAK,CACN;QACD,GAAG,EAAE,aAAa,CAChB,aAAa,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,EACzD,KAAK,CAAC,IAAI,EACV,KAAK,CACN;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YACxE,sFAAsF;YACtF,kFAAkF;YAClF,YAAY,EAAE,EAAE,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE;SAC7D;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { InstallContext } from './types.ts';
2
+ /** True when a launch command launches cezar via npx (the unpinned
3
+ * `npx --yes cezarion` form) rather than a checkout (`<node> …/dist/index.js`)
4
+ * or a global bin. */
5
+ export declare function isNpxExecStart(execStart: string): boolean;
6
+ /** True when the unit is an npx launch of a package that is NOT ours — in practice a unit
7
+ * installed by upstream cezar as `npx --yes cezar-cli`, before this clone took its own npm
8
+ * identity (#23).
9
+ *
10
+ * Deliberately not treated as ours to refresh: clearing another package's npx cache would make
11
+ * the next restart fetch THAT package's `latest`, silently moving the box onto upstream's newest
12
+ * release — the shadowing the rename exists to prevent. But saying nothing is worse, because
13
+ * `server-deploy` then reports a green restart while the running version is unchanged. So the
14
+ * caller warns and names the remedy.
15
+ *
16
+ * A checkout unit (`<node> …/dist/index.js`) is not foreign, including one running out of an
17
+ * `_npx` directory: `\bnpx\b` needs a non-word character before `npx`, and `_` is a word
18
+ * character, so `_npx` never matches. A global-bin unit names no `npx` at all and is likewise
19
+ * excluded — its restart picks up whatever the global bin now points at. */
20
+ export declare function isForeignNpxExecStart(execStart: string): boolean;
21
+ /**
22
+ * The npx trap (#696 / #32): `npx --yes cezarion` caches the resolved package under
23
+ * `~/.npm/_npx/<hash>` and reuses it forever — a service restart re-execs the
24
+ * SAME cached build, so `server-deploy` would never actually update. Before
25
+ * restarting an npx-based unit we delete the cache entries that contain
26
+ * `cezarion`, so the next launch re-resolves `latest`. Surgical: other npx
27
+ * packages' caches are left untouched. A checkout / global-bin unit has no
28
+ * npx cache to clear and is skipped (its restart picks up the new build/global
29
+ * directly).
30
+ *
31
+ * `execStart` is the live launch command: systemd `ExecStart` on ubuntu-vps,
32
+ * launchd `ProgramArguments` joined on macosx-ngrok.
33
+ */
34
+ export declare function refreshNpxCacheForRedeploy(ctx: InstallContext, execStart: string, opts?: {
35
+ reconfigureHint?: string;
36
+ }): void;
@@ -0,0 +1,104 @@
1
+ import { readdirSync, rmSync, statSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ import { StepAborted } from './steps.js';
5
+ const OFFICIAL_CLI_PKG = 'cezarion';
6
+ const DEFAULT_RECONFIGURE_HINT = ` cez server-install --platform ubuntu-vps --reconfigure autostart`;
7
+ /** The npx package cache root for the user the service runs as (this is the
8
+ * same user that runs `server-deploy`). Honors an `npm_config_cache` override,
9
+ * else npm's default `~/.npm`. */
10
+ function npxCacheDir() {
11
+ const base = process.env.npm_config_cache?.trim() || join(homedir(), '.npm');
12
+ return join(base, '_npx');
13
+ }
14
+ /** True when a launch command launches cezar via npx (the unpinned
15
+ * `npx --yes cezarion` form) rather than a checkout (`<node> …/dist/index.js`)
16
+ * or a global bin. */
17
+ export function isNpxExecStart(execStart) {
18
+ return /\bnpx\b/.test(execStart) && execStart.includes(OFFICIAL_CLI_PKG);
19
+ }
20
+ /** True when the unit is an npx launch of a package that is NOT ours — in practice a unit
21
+ * installed by upstream cezar as `npx --yes cezar-cli`, before this clone took its own npm
22
+ * identity (#23).
23
+ *
24
+ * Deliberately not treated as ours to refresh: clearing another package's npx cache would make
25
+ * the next restart fetch THAT package's `latest`, silently moving the box onto upstream's newest
26
+ * release — the shadowing the rename exists to prevent. But saying nothing is worse, because
27
+ * `server-deploy` then reports a green restart while the running version is unchanged. So the
28
+ * caller warns and names the remedy.
29
+ *
30
+ * A checkout unit (`<node> …/dist/index.js`) is not foreign, including one running out of an
31
+ * `_npx` directory: `\bnpx\b` needs a non-word character before `npx`, and `_` is a word
32
+ * character, so `_npx` never matches. A global-bin unit names no `npx` at all and is likewise
33
+ * excluded — its restart picks up whatever the global bin now points at. */
34
+ export function isForeignNpxExecStart(execStart) {
35
+ return /\bnpx\b/.test(execStart) && !execStart.includes(OFFICIAL_CLI_PKG);
36
+ }
37
+ /**
38
+ * The npx trap (#696 / #32): `npx --yes cezarion` caches the resolved package under
39
+ * `~/.npm/_npx/<hash>` and reuses it forever — a service restart re-execs the
40
+ * SAME cached build, so `server-deploy` would never actually update. Before
41
+ * restarting an npx-based unit we delete the cache entries that contain
42
+ * `cezarion`, so the next launch re-resolves `latest`. Surgical: other npx
43
+ * packages' caches are left untouched. A checkout / global-bin unit has no
44
+ * npx cache to clear and is skipped (its restart picks up the new build/global
45
+ * directly).
46
+ *
47
+ * `execStart` is the live launch command: systemd `ExecStart` on ubuntu-vps,
48
+ * launchd `ProgramArguments` joined on macosx-ngrok.
49
+ */
50
+ export function refreshNpxCacheForRedeploy(ctx, execStart, opts = {}) {
51
+ if (!isNpxExecStart(execStart)) {
52
+ if (isForeignNpxExecStart(execStart)) {
53
+ ctx.ui.warn(`This service is launched by npx from a package other than ${OFFICIAL_CLI_PKG} — most likely a unit ` +
54
+ `installed by upstream cezar as \`npx --yes cezar-cli\`. Restarting it re-execs that package's cached ` +
55
+ `build, so this deploy will NOT change the running version, and clearing that cache would move the box ` +
56
+ `onto upstream's latest instead. Rewrite the unit for ${OFFICIAL_CLI_PKG} first:\n` +
57
+ (opts.reconfigureHint ?? DEFAULT_RECONFIGURE_HINT));
58
+ }
59
+ return;
60
+ }
61
+ const dir = npxCacheDir();
62
+ if (ctx.dryRun) {
63
+ ctx.ui.info(`DRY RUN — would clear cached ${OFFICIAL_CLI_PKG} builds under ${dir} so npx refetches the latest.`);
64
+ return;
65
+ }
66
+ let entries;
67
+ try {
68
+ entries = readdirSync(dir);
69
+ }
70
+ catch (error) {
71
+ if (error.code === 'ENOENT') {
72
+ ctx.ui.info(`No cached ${OFFICIAL_CLI_PKG} npx build found — the restart will fetch the latest published version.`);
73
+ return;
74
+ }
75
+ const message = error instanceof Error ? error.message : String(error);
76
+ throw new StepAborted(`cannot inspect the npx cache at ${dir}: ${message} — the service was not restarted`);
77
+ }
78
+ let cleared = 0;
79
+ for (const entry of entries) {
80
+ const pkgDir = join(dir, entry);
81
+ const packageDir = join(pkgDir, 'node_modules', OFFICIAL_CLI_PKG);
82
+ try {
83
+ statSync(packageDir);
84
+ }
85
+ catch (error) {
86
+ if (error.code === 'ENOENT')
87
+ continue;
88
+ const message = error instanceof Error ? error.message : String(error);
89
+ throw new StepAborted(`cannot inspect the npx cache entry at ${packageDir}: ${message} — the service was not restarted`);
90
+ }
91
+ try {
92
+ rmSync(pkgDir, { recursive: true, force: true });
93
+ }
94
+ catch (error) {
95
+ const message = error instanceof Error ? error.message : String(error);
96
+ throw new StepAborted(`cannot remove the cached ${OFFICIAL_CLI_PKG} build at ${pkgDir}: ${message} — the service was not restarted`);
97
+ }
98
+ cleared++;
99
+ }
100
+ ctx.ui.info(cleared > 0
101
+ ? `Cleared ${cleared} cached ${OFFICIAL_CLI_PKG} npx build(s) — the restart will fetch the latest published version.`
102
+ : `No cached ${OFFICIAL_CLI_PKG} npx build found — the restart will fetch the latest published version.`);
103
+ }
104
+ //# sourceMappingURL=npx-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"npx-cache.js","sourceRoot":"","sources":["../../src/server-install/npx-cache.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
- import { chmodSync, existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
2
  import { homedir } from 'node:os';
3
3
  import { dirname, join, resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { CANCEL, PreflightError } from '../types.js';
6
6
  import { brewInstallTool, brewRemoveHint, depCheckStep, HOSTNAME_RE, owned, shared, StepAborted, StepCancelled, verifyCommand } from '../steps.js';
7
+ import { refreshNpxCacheForRedeploy } from '../npx-cache.js';
7
8
  /**
8
9
  * The `macosx-ngrok` strategy: the app runs locally on a Mac and ngrok is the
9
10
  * public front, in place of nginx+certbot. ngrok's built-in `--basic-auth` is
@@ -184,6 +185,24 @@ const ngrokStep = {
184
185
  const CEZAR_PLIST_LABEL = 'ai.cezar.cockpit';
185
186
  const OFFICIAL_CLI_PKG = 'cezarion';
186
187
  const cezarPlistPath = () => join(homedir(), 'Library', 'LaunchAgents', `${CEZAR_PLIST_LABEL}.plist`);
188
+ /** Live launchd `ProgramArguments` joined into one string so the shared npx-cache
189
+ * helper can classify the launch form the same way ubuntu-vps classifies ExecStart.
190
+ * Empty string when the plist can't be read — callers then skip the cache refresh
191
+ * rather than guessing. */
192
+ function readCezarProgramArguments() {
193
+ try {
194
+ const xml = readFileSync(cezarPlistPath(), 'utf8');
195
+ const inner = xml.match(/<key>ProgramArguments<\/key>\s*<array>([\s\S]*?)<\/array>/)?.[1];
196
+ if (inner === undefined)
197
+ return '';
198
+ return [...inner.matchAll(/<string>([\s\S]*?)<\/string>/g)]
199
+ .map((m) => (m[1] ?? '').replaceAll('&amp;', '&').replaceAll('&lt;', '<').replaceAll('&gt;', '>'))
200
+ .join(' ');
201
+ }
202
+ catch {
203
+ return '';
204
+ }
205
+ }
187
206
  /** Resolve the argv array for the cezar launchd agent, mirroring how the CLI was launched. */
188
207
  async function resolveCezarArgv(ctx) {
189
208
  const node = process.execPath;
@@ -325,6 +344,13 @@ export const macosxNgrok = {
325
344
  ];
326
345
  },
327
346
  async redeploy(ctx) {
347
+ // #32: an npx-launched agent re-execs its cached build on kickstart, so a
348
+ // deploy that doesn't invalidate the npx cache never actually updates.
349
+ // Clear the cezarion cache first (read the live ProgramArguments to know the
350
+ // launch form); a checkout / global agent is left alone.
351
+ refreshNpxCacheForRedeploy(ctx, readCezarProgramArguments(), {
352
+ reconfigureHint: ` cez server-install --platform macosx-ngrok --reconfigure autostart`,
353
+ });
328
354
  // Restart both the cezar cockpit and the ngrok tunnel, then re-verify.
329
355
  if (ctx.dryRun) {
330
356
  ctx.ui.info('DRY RUN — would restart the cezar and ngrok launchd agents and re-verify.');
@@ -1 +1 @@
1
- {"version":3,"file":"macosx-ngrok.js","sourceRoot":"","sources":["../../../src/server-install/platforms/macosx-ngrok.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"macosx-ngrok.js","sourceRoot":"","sources":["../../../src/server-install/platforms/macosx-ngrok.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAChG,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAmF,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACnJ,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D;;;;;;GAMG;AAEH,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,WAAW,QAAQ,CAAC,CAAC;AAEnG;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAmB,EAAE,GAAW,EAAE,KAAa,EAAE,IAAY,EAAE,IAAY;IAC1G,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC;IACpG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,WAAW,CACnB,4BAA4B,IAAI,oBAAoB,IAAI,4CAA4C,GAAG,IAAI,KAAK,EAAE,CACnH,CAAC;IACJ,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,SAAS,SAAS,CAAC,CAAS;IAC1B,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,SAAiB,EAAE,MAAe,EAAE,QAAQ,GAAG,yBAAyB;IACjH,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;IAC/D,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC1C,0EAA0E;IAC1E,0EAA0E;IAC1E,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;SAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC;SACpD,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;;;;cAMK,WAAW;;;EAGvB,MAAM;;;;;;;;CAQP,CAAC;AACF,CAAC;AAED,MAAM,SAAS,GAAgB;IAC7B,EAAE,EAAE,OAAO;IACX,KAAK,EAAE,gDAAgD;IACvD,KAAK,CAAC,KAAK,CAAC,GAAG;QACb,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC7B,OAAO,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,oBAAoB;QACpB,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,GAAG,CAAC,MAAM;gBAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;;gBAC9E,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;QAC9E,CAAC;QAED,wFAAwF;QACxF,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;YAClC,OAAO,EAAE,mEAAmE;YAC5E,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC;SAClE,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,MAAM;YAAE,MAAM,IAAI,aAAa,EAAE,CAAC;QAChD,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,0CAA0C;QAC1C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,+CAA+C,CAAC,EAAE;gBACzG,GAAG,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,IAAI,WAAW,CAAC,iGAAiG,CAAC,CAAC;QAC3I,CAAC;QAED,gDAAgD;QAChD,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YACpC,OAAO,EAAE,kFAAkF;YAC3F,WAAW,EAAE,iBAAiB;YAC9B,2EAA2E;YAC3E,oDAAoD;YACpD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,yDAAyD,CAAC;SACnI,CAAC,CAAC;QACH,IAAI,WAAW,KAAK,MAAM;YAAE,MAAM,IAAI,aAAa,EAAE,CAAC;QACtD,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,MAAM,GAAG,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,yBAAyB;QACzB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC;YAC7B,OAAO,EAAE,oCAAoC;YAC7C,WAAW,EAAE,KAAK;YAClB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC;SACjE,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,MAAM;YAAE,MAAM,IAAI,aAAa,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC;YACrC,OAAO,EAAE,4BAA4B,IAAI,GAAG;YAC5C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAAC;SAC3E,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,MAAM;YAAE,MAAM,IAAI,aAAa,EAAE,CAAC;QACnD,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,IAAI,WAAW,CAAC,4FAA4F,CAAC,CAAC;QACtH,CAAC;QACD,MAAM,SAAS,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAExD,mFAAmF;QACnF,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;QACzB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,IAAI,8BAA8B,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,sEAAsE;YACtE,+DAA+D;YAC/D,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,yBAAyB,CAAC;YAE5H,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,0EAA0E;YAC1E,sEAAsE;YACtE,oEAAoE;YACpE,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACzH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAEvB,qEAAqE;YACrE,0CAA0C;YAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,2DAA2D;YAC3D,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAChF,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,MAAM,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;YAC3B,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,8GAA8G,EAAE,OAAO,CAAC,CAAC;QACvI,CAAC;QAED,OAAO;YACL,SAAS,EAAE;gBACT,MAAM,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,uFAAuF,EAAE,CAAC;gBAClJ,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;aAC9C;SACF,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO;QACrB,2EAA2E;QAC3E,4EAA4E;QAC5E,2DAA2D;QAC3D,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;QAC/F,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAChF,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAC9E,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,EAAE,CAAC,IAAI,CACT,iGAAiG,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,EACvH,OAAO,CACR,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,2EAA2E;AAE3E,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAC7C,MAAM,gBAAgB,GAAG,UAAU,CAAC;AACpC,MAAM,cAAc,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,GAAG,iBAAiB,QAAQ,CAAC,CAAC;AAE9G;;;4BAG4B;AAC5B,SAAS,yBAAyB;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,2DAA2D,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;aACxD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aACjG,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,8FAA8F;AAC9F,KAAK,UAAU,gBAAgB,CAAC,GAAmB;IACjD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,CAAC,UAAU,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAE3C,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAChF,IAAI,GAAG,CAAC,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAE1D,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,cAAc,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1H,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7E,IAAI,SAAS;QAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAExC,sEAAsE;IACtE,4EAA4E;IAC5E,MAAM,IAAI,WAAW,CACnB,sCAAsC,KAAK,uBAAuB,gBAAgB,MAAM;QACtF,wBAAwB,gBAAgB,mEAAmE,CAC9G,CAAC;AACJ,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAY,EAAE,IAAc;IAC9E,yEAAyE;IACzE,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,CAAC;SACvH,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxF,OAAO;;;;;;cAMK,iBAAiB;;;EAG7B,MAAM;;;cAGM,SAAS,CAAC,QAAQ,CAAC;;;;;;gBAMjB,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;;;;;;CAQ5C,CAAC;AACF,CAAC;AAED,MAAM,aAAa,GAAgB;IACjC,EAAE,EAAE,WAAW;IACf,KAAK,EAAE,yDAAyD;IAChE,KAAK,CAAC,KAAK,CAAC,GAAG;QACb,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAC7B,OAAO,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,IAAI,8BAA8B,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3E,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACrH,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO;QACrB,0DAA0D;QAC1D,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,cAAc,EAAE,CAAC;QACpG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAC/E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YAClD,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACtF,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;CACF,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,EAAE,EAAE,UAAU;IACd,KAAK,EAAE,0CAA0C;IACjD,KAAK,CAAC,KAAK;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,4EAA4E,CAAC,CAAC;YAC1F,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAC3B,CAAC;QACD,mEAAmE;QACnE,yDAAyD;QACzD,IAAI,EAAE,GAAG,KAAK,CAAC;QACf,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/D,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,mCAAmC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;QAC7H,CAAC;QACD,IAAI,EAAE;YAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,6DAA6D,CAAC,CAAC;;YACjF,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;QACrG,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3B,CAAC;IACD,KAAK,CAAC,IAAI;QACR,kBAAkB;IACpB,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAqB;IAC3C,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,eAAe;IACtB,KAAK,CAAC,SAAS,CAAC,GAAmB;QACjC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,cAAc,CAAC,wEAAwE,CAAC,CAAC;QACrG,CAAC;IACH,CAAC;IACD,KAAK;QACH,OAAO;YACL,YAAY,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC;YAC1E,aAAa;YACb,SAAS;YACT,YAAY;SACb,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,QAAQ,CAAC,GAAmB;QAChC,0EAA0E;QAC1E,uEAAuE;QACvE,6EAA6E;QAC7E,yDAAyD;QACzD,0BAA0B,CAAC,GAAG,EAAE,yBAAyB,EAAE,EAAE;YAC3D,eAAe,EAAE,sEAAsE;SACxF,CAAC,CAAC;QACH,uEAAuE;QACvE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YACzF,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAClD,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAC,CAAC,CAAC;QACpH,IAAI,SAAS,KAAK,CAAC;YAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uEAAuE,GAAG,IAAI,iBAAiB,KAAK,CAAC,CAAC;QACvI,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,IAAI,KAAK,CAAC;YAAE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,uEAAuE,GAAG,IAAI,WAAW,KAAK,CAAC,CAAC;QAC5H,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;CACF,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import { type InstallContext, type PlatformStrategy } from '../types.ts';
2
+ import { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy } from '../npx-cache.ts';
3
+ export { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy };
2
4
  /**
3
5
  * Name of the process listening on `port`, or null when nothing is. Best effort
4
6
  * (`ss` output varies, and without root the process name may be hidden) — used
@@ -45,34 +47,4 @@ export declare function serviceExecStart(opts: {
45
47
  npxPath: string;
46
48
  globalBin?: string;
47
49
  }): string;
48
- /** True when a systemd `ExecStart` string launches cezar via npx (the unpinned
49
- * `npx --yes cezar-cli` form) rather than a checkout (`<node> …/dist/index.js`)
50
- * or a global bin. */
51
- export declare function isNpxExecStart(execStart: string): boolean;
52
- /** True when the unit is an npx launch of a package that is NOT ours — in practice a unit
53
- * installed by upstream cezar as `npx --yes cezar-cli`, before this clone took its own npm
54
- * identity (#23).
55
- *
56
- * Deliberately not treated as ours to refresh: clearing another package's npx cache would make
57
- * the next restart fetch THAT package's `latest`, silently moving the box onto upstream's newest
58
- * release — the shadowing the rename exists to prevent. But saying nothing is worse, because
59
- * `server-deploy` then reports a green restart while the running version is unchanged. So the
60
- * caller warns and names the remedy.
61
- *
62
- * A checkout unit (`<node> …/dist/index.js`) is not foreign, including one running out of an
63
- * `_npx` directory: `\bnpx\b` needs a non-word character before `npx`, and `_` is a word
64
- * character, so `_npx` never matches. A global-bin unit names no `npx` at all and is likewise
65
- * excluded — its restart picks up whatever the global bin now points at. */
66
- export declare function isForeignNpxExecStart(execStart: string): boolean;
67
- /**
68
- * The npx trap (#696): `npx --yes cezarion` caches the resolved package under
69
- * `~/.npm/_npx/<hash>` and reuses it forever — a service restart re-execs the
70
- * SAME cached build, so `server-deploy` would never actually update. Before
71
- * restarting an npx-based unit we delete the cache entries that contain
72
- * `cezarion`, so the next launch re-resolves `latest`. Surgical: other npx
73
- * packages' caches are left untouched. A checkout / global-bin unit has no
74
- * npx cache to clear and is skipped (its restart picks up the new build/global
75
- * directly).
76
- */
77
- export declare function refreshNpxCacheForRedeploy(ctx: InstallContext, execStart: string): void;
78
50
  export declare const ubuntuVps: PlatformStrategy;
@@ -1,9 +1,11 @@
1
- import { existsSync, mkdirSync, readdirSync, rmSync, statSync, writeFileSync } from 'node:fs';
1
+ import { existsSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
2
2
  import { homedir, userInfo } from 'node:os';
3
3
  import { dirname, join, resolve } from 'node:path';
4
4
  import { fileURLToPath } from 'node:url';
5
5
  import { CANCEL, PreflightError } from '../types.js';
6
6
  import { depCheckStep, generatePassword, owned, shared, shquote, StepAborted, StepCancelled, StepSkipped, sudoStep, verifyCommand } from '../steps.js';
7
+ import { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy } from '../npx-cache.js';
8
+ export { isForeignNpxExecStart, isNpxExecStart, refreshNpxCacheForRedeploy };
7
9
  /**
8
10
  * The `ubuntu-vps` strategy: stand up an authenticated, proxied cezar on a bare
9
11
  * Ubuntu/Debian VPS. cezar itself stays loopback-bound; nginx is the single
@@ -602,100 +604,6 @@ async function resolveExecStart(ctx) {
602
604
  }
603
605
  return serviceExecStart({ node, pkgRoot, entry, entryExists: existsSync(entry), npxPath, globalBin });
604
606
  }
605
- /** The npx package cache root for the user the service runs as (this is the
606
- * same user that runs `server-deploy`). Honors an `npm_config_cache` override,
607
- * else npm's default `~/.npm`. */
608
- function npxCacheDir() {
609
- const base = process.env.npm_config_cache?.trim() || join(homedir(), '.npm');
610
- return join(base, '_npx');
611
- }
612
- /** True when a systemd `ExecStart` string launches cezar via npx (the unpinned
613
- * `npx --yes cezar-cli` form) rather than a checkout (`<node> …/dist/index.js`)
614
- * or a global bin. */
615
- export function isNpxExecStart(execStart) {
616
- return /\bnpx\b/.test(execStart) && execStart.includes(OFFICIAL_CLI_PKG);
617
- }
618
- /** True when the unit is an npx launch of a package that is NOT ours — in practice a unit
619
- * installed by upstream cezar as `npx --yes cezar-cli`, before this clone took its own npm
620
- * identity (#23).
621
- *
622
- * Deliberately not treated as ours to refresh: clearing another package's npx cache would make
623
- * the next restart fetch THAT package's `latest`, silently moving the box onto upstream's newest
624
- * release — the shadowing the rename exists to prevent. But saying nothing is worse, because
625
- * `server-deploy` then reports a green restart while the running version is unchanged. So the
626
- * caller warns and names the remedy.
627
- *
628
- * A checkout unit (`<node> …/dist/index.js`) is not foreign, including one running out of an
629
- * `_npx` directory: `\bnpx\b` needs a non-word character before `npx`, and `_` is a word
630
- * character, so `_npx` never matches. A global-bin unit names no `npx` at all and is likewise
631
- * excluded — its restart picks up whatever the global bin now points at. */
632
- export function isForeignNpxExecStart(execStart) {
633
- return /\bnpx\b/.test(execStart) && !execStart.includes(OFFICIAL_CLI_PKG);
634
- }
635
- /**
636
- * The npx trap (#696): `npx --yes cezarion` caches the resolved package under
637
- * `~/.npm/_npx/<hash>` and reuses it forever — a service restart re-execs the
638
- * SAME cached build, so `server-deploy` would never actually update. Before
639
- * restarting an npx-based unit we delete the cache entries that contain
640
- * `cezarion`, so the next launch re-resolves `latest`. Surgical: other npx
641
- * packages' caches are left untouched. A checkout / global-bin unit has no
642
- * npx cache to clear and is skipped (its restart picks up the new build/global
643
- * directly).
644
- */
645
- export function refreshNpxCacheForRedeploy(ctx, execStart) {
646
- if (!isNpxExecStart(execStart)) {
647
- if (isForeignNpxExecStart(execStart)) {
648
- ctx.ui.warn(`This service is launched by npx from a package other than ${OFFICIAL_CLI_PKG} — most likely a unit ` +
649
- `installed by upstream cezar as \`npx --yes cezar-cli\`. Restarting it re-execs that package's cached ` +
650
- `build, so this deploy will NOT change the running version, and clearing that cache would move the box ` +
651
- `onto upstream's latest instead. Rewrite the unit for ${OFFICIAL_CLI_PKG} first:\n` +
652
- ` cez server-install --platform ubuntu-vps --reconfigure autostart`);
653
- }
654
- return;
655
- }
656
- const dir = npxCacheDir();
657
- if (ctx.dryRun) {
658
- ctx.ui.info(`DRY RUN — would clear cached ${OFFICIAL_CLI_PKG} builds under ${dir} so npx refetches the latest.`);
659
- return;
660
- }
661
- let entries;
662
- try {
663
- entries = readdirSync(dir);
664
- }
665
- catch (error) {
666
- if (error.code === 'ENOENT') {
667
- ctx.ui.info(`No cached ${OFFICIAL_CLI_PKG} npx build found — the restart will fetch the latest published version.`);
668
- return;
669
- }
670
- const message = error instanceof Error ? error.message : String(error);
671
- throw new StepAborted(`cannot inspect the npx cache at ${dir}: ${message} — the service was not restarted`);
672
- }
673
- let cleared = 0;
674
- for (const entry of entries) {
675
- const pkgDir = join(dir, entry);
676
- const packageDir = join(pkgDir, 'node_modules', OFFICIAL_CLI_PKG);
677
- try {
678
- statSync(packageDir);
679
- }
680
- catch (error) {
681
- if (error.code === 'ENOENT')
682
- continue;
683
- const message = error instanceof Error ? error.message : String(error);
684
- throw new StepAborted(`cannot inspect the npx cache entry at ${packageDir}: ${message} — the service was not restarted`);
685
- }
686
- try {
687
- rmSync(pkgDir, { recursive: true, force: true });
688
- }
689
- catch (error) {
690
- const message = error instanceof Error ? error.message : String(error);
691
- throw new StepAborted(`cannot remove the cached ${OFFICIAL_CLI_PKG} build at ${pkgDir}: ${message} — the service was not restarted`);
692
- }
693
- cleared++;
694
- }
695
- ctx.ui.info(cleared > 0
696
- ? `Cleared ${cleared} cached ${OFFICIAL_CLI_PKG} npx build(s) — the restart will fetch the latest published version.`
697
- : `No cached ${OFFICIAL_CLI_PKG} npx build found — the restart will fetch the latest published version.`);
698
- }
699
607
  /** Read the unit's live `ExecStart` (read-only query; no sudo needed even for a
700
608
  * system unit). Empty string when it can't be read — callers then skip the
701
609
  * npx-cache refresh rather than guessing. */