@automagik/omni 2.260508.2 → 2.260508.4
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/commands/doctor.d.ts +25 -2
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/requirements.d.ts +30 -0
- package/dist/commands/requirements.d.ts.map +1 -0
- package/dist/commands/update.d.ts +0 -13
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/index.js +483 -196
- package/dist/lib/pgserve-transport.d.ts +113 -0
- package/dist/lib/pgserve-transport.d.ts.map +1 -0
- package/dist/lib/requirements.d.ts +112 -0
- package/dist/lib/requirements.d.ts.map +1 -0
- package/dist/runtime-env.d.ts +43 -17
- package/dist/runtime-env.d.ts.map +1 -1
- package/dist/server/index.js +1533 -8264
- package/package.json +1 -1
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* 5. orphaned-data-dirs — `.pgserve-data/` directories under cwd
|
|
16
16
|
* 6. version-match — CLI version vs. /api/v2/health `version` field
|
|
17
17
|
* 7. pm2-status — omni-api and omni-nats both `online` in pm2
|
|
18
|
-
* 8. pm2-max-restarts — omni-api
|
|
18
|
+
* 8. pm2-max-restarts — omni-api + omni-nats have bounded restarts
|
|
19
19
|
* 9. pm2-logrotate-installed — pm2-logrotate module configured correctly
|
|
20
|
+
* 10. port-canonical-owner — canonical ports owned by pm2-managed PIDs
|
|
20
21
|
*
|
|
21
22
|
* Each check returns OK / WARN / FAIL with a one-line detail. `--fix`
|
|
22
23
|
* attempts repair for checks with a known repair path. The fix flow
|
|
@@ -35,6 +36,12 @@
|
|
|
35
36
|
* so the hardened `--max-restarts` flag takes effect.
|
|
36
37
|
* - pm2-logrotate-installed: Re-run `pm2 install pm2-logrotate` + the four
|
|
37
38
|
* `pm2 set pm2-logrotate:*` commands.
|
|
39
|
+
* - port-canonical-owner: SIGTERM (then SIGKILL) the non-pm2 squatter
|
|
40
|
+
* holding 4222 / api port, then `pm2 restart`
|
|
41
|
+
* the managed entry. Refuses to act when the
|
|
42
|
+
* squatter PID matches another pm2-managed entry.
|
|
43
|
+
* - pm2-status: Reconcile port ownership (above) then `pm2
|
|
44
|
+
* restart` any non-online managed process.
|
|
38
45
|
*/
|
|
39
46
|
import { Command } from 'commander';
|
|
40
47
|
import { type Config, type ServerConfig } from '../config.js';
|
|
@@ -42,7 +49,7 @@ import { type EmbeddedDumpResult } from '../lib/canonical-pgserve.js';
|
|
|
42
49
|
/** Severity levels reported by each check. */
|
|
43
50
|
export type CheckLevel = 'OK' | 'WARN' | 'FAIL';
|
|
44
51
|
/** Identifier used in tests and --json output. */
|
|
45
|
-
export type CheckId = 'pm2-env-drift' | 'cli-key-valid' | 'pgserve-reachable' | 'omni-db-exists' | 'orphaned-data-dirs' | 'version-match' | 'pm2-status' | 'pm2-max-restarts' | 'pm2-logrotate-installed' | 'cli-signing-key-for-locked-instances' | 'pgserve-canonical';
|
|
52
|
+
export type CheckId = 'pm2-env-drift' | 'cli-key-valid' | 'pgserve-reachable' | 'omni-db-exists' | 'orphaned-data-dirs' | 'version-match' | 'pm2-status' | 'pm2-max-restarts' | 'pm2-logrotate-installed' | 'cli-signing-key-for-locked-instances' | 'pgserve-canonical' | 'port-canonical-owner';
|
|
46
53
|
export interface CheckResult {
|
|
47
54
|
id: CheckId;
|
|
48
55
|
level: CheckLevel;
|
|
@@ -77,6 +84,8 @@ export interface DoctorOptions {
|
|
|
77
84
|
interface Pm2Entry {
|
|
78
85
|
name?: string;
|
|
79
86
|
pm_id?: number;
|
|
87
|
+
/** Top-level OS PID of the spawned child. Used by port-canonical-owner. */
|
|
88
|
+
pid?: number;
|
|
80
89
|
pm2_env?: {
|
|
81
90
|
status?: string;
|
|
82
91
|
env?: Record<string, string | undefined>;
|
|
@@ -174,6 +183,20 @@ export interface DoctorDeps {
|
|
|
174
183
|
* to ~/.omni/config.json.
|
|
175
184
|
*/
|
|
176
185
|
saveServerConfig: (partial: Partial<ServerConfig>) => void;
|
|
186
|
+
/**
|
|
187
|
+
* Resolve the OS PID currently bound to a TCP port (LISTEN). Returns
|
|
188
|
+
* null when nothing is listening, when the lookup fails, or when the
|
|
189
|
+
* platform tool (`ss`) is unavailable. Used by the port-canonical-owner
|
|
190
|
+
* check + fixer to detect non-pm2 squatters on canonical ports.
|
|
191
|
+
*/
|
|
192
|
+
findPortOwner: (port: number) => Promise<number | null>;
|
|
193
|
+
/**
|
|
194
|
+
* Send a signal to a PID. Returns true when the signal was delivered,
|
|
195
|
+
* false on EPERM/ESRCH/etc. We never throw — callers treat falsy as
|
|
196
|
+
* "could not signal, fall through to next strategy". Tests stub this
|
|
197
|
+
* so they don't actually kill anything.
|
|
198
|
+
*/
|
|
199
|
+
processKill: (pid: number, signal: 'SIGTERM' | 'SIGKILL') => boolean;
|
|
177
200
|
}
|
|
178
201
|
/**
|
|
179
202
|
* Run all checks and optionally apply fixes. Returns a structured
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Requirements Command
|
|
3
|
+
*
|
|
4
|
+
* omni requirements [--json] [--check]
|
|
5
|
+
*
|
|
6
|
+
* Surfaces the compile-time peer-version manifest declared in
|
|
7
|
+
* `packages/cli/src/lib/requirements.ts` (this wish, G6 of
|
|
8
|
+
* pgserve-singleton-no-proxy).
|
|
9
|
+
*
|
|
10
|
+
* Output:
|
|
11
|
+
* - `--json` (handled globally — see packages/cli/src/index.ts:71-75)
|
|
12
|
+
* emits machine-readable JSON. Same shape as the
|
|
13
|
+
* `omni --requirements --json` contract documented in
|
|
14
|
+
* SHARED-DESIGN.md §3.3.
|
|
15
|
+
* - default — formatted object via `output.data()` (which renders a
|
|
16
|
+
* table when format=human, JSON when format=json).
|
|
17
|
+
*
|
|
18
|
+
* The flag-based variant `omni --requirements --json` is intentionally
|
|
19
|
+
* NOT wired as a top-level program option. Top-level flags collide with
|
|
20
|
+
* commander's own `--version` / `--help` semantics in the current
|
|
21
|
+
* version-handling stack. The subcommand surface is byte-equivalent for
|
|
22
|
+
* tooling: `omni requirements --json` produces the documented JSON
|
|
23
|
+
* shape verbatim via the global `--json` argv strip.
|
|
24
|
+
*
|
|
25
|
+
* `--check` exits non-zero when ANY peer fails its requirement. Used by
|
|
26
|
+
* `omni update` step 4 (preInstallPeerCheck) and `omni doctor` peer-row.
|
|
27
|
+
*/
|
|
28
|
+
import { Command } from 'commander';
|
|
29
|
+
export declare function createRequirementsCommand(): Command;
|
|
30
|
+
//# sourceMappingURL=requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/commands/requirements.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,wBAAgB,yBAAyB,IAAI,OAAO,CA4BnD"}
|
|
@@ -227,19 +227,6 @@ export declare function runPostUpdateMaintenance(args: {
|
|
|
227
227
|
skipReason: MaintenanceSkipReason | null;
|
|
228
228
|
runDoctorImpl?: typeof runDoctor;
|
|
229
229
|
}): Promise<MaintenanceReport>;
|
|
230
|
-
/**
|
|
231
|
-
* Halt updates that would cross the phase-2 default-flip cutoff on hosts
|
|
232
|
-
* still running legacy embedded pgserve without the canonical binary
|
|
233
|
-
* available.
|
|
234
|
-
*
|
|
235
|
-
* Returns null when safe to proceed; otherwise an actionable error message.
|
|
236
|
-
*/
|
|
237
|
-
export declare function checkCanonicalPgservePreflight(args: {
|
|
238
|
-
currentVersion: string;
|
|
239
|
-
targetVersion: string;
|
|
240
|
-
useCanonicalPgserve: boolean | undefined;
|
|
241
|
-
pgserveOnPath: boolean;
|
|
242
|
-
}): string | null;
|
|
243
230
|
/**
|
|
244
231
|
* Parse the `--skip-cleanup=name1,name2` value into a Set. Empty / undefined
|
|
245
232
|
* yields an empty set. Whitespace and empty entries are tolerated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAOH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,KAAK,MAAM,EAA4C,MAAM,cAAc,CAAC;AAMrF,OAAO,EACL,KAAK,qBAAqB,EAI3B,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,KAAK,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|