@osva-ai/cli 1.1.0 → 1.1.2

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 (183) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +36 -0
  3. package/dist/bin/osva.js +26 -0
  4. package/dist/bin/osva.js.map +1 -1
  5. package/dist/commands/index.js +6 -0
  6. package/dist/commands/index.js.map +1 -1
  7. package/dist/doctor/redact.d.ts.map +1 -1
  8. package/dist/doctor/redact.js +3 -1
  9. package/dist/doctor/redact.js.map +1 -1
  10. package/dist/doctor/run-doctor.d.ts +2 -1
  11. package/dist/doctor/run-doctor.d.ts.map +1 -1
  12. package/dist/doctor/run-doctor.js +1 -1
  13. package/dist/doctor/run-doctor.js.map +1 -1
  14. package/dist/doctor/streaming-redact.d.ts +11 -0
  15. package/dist/doctor/streaming-redact.d.ts.map +1 -0
  16. package/dist/doctor/streaming-redact.js +29 -0
  17. package/dist/doctor/streaming-redact.js.map +1 -0
  18. package/dist/platform/compose-inspect.d.ts +9 -0
  19. package/dist/platform/compose-inspect.d.ts.map +1 -0
  20. package/dist/platform/compose-inspect.js +114 -0
  21. package/dist/platform/compose-inspect.js.map +1 -0
  22. package/dist/platform/doctor.d.ts +10 -0
  23. package/dist/platform/doctor.d.ts.map +1 -0
  24. package/dist/platform/doctor.js +154 -0
  25. package/dist/platform/doctor.js.map +1 -0
  26. package/dist/platform/format.d.ts +10 -0
  27. package/dist/platform/format.d.ts.map +1 -0
  28. package/dist/platform/format.js +73 -0
  29. package/dist/platform/format.js.map +1 -0
  30. package/dist/platform/index.d.ts +9 -0
  31. package/dist/platform/index.d.ts.map +1 -0
  32. package/dist/platform/index.js +143 -0
  33. package/dist/platform/index.js.map +1 -0
  34. package/dist/platform/lifecycle.d.ts +20 -0
  35. package/dist/platform/lifecycle.d.ts.map +1 -0
  36. package/dist/platform/lifecycle.js +136 -0
  37. package/dist/platform/lifecycle.js.map +1 -0
  38. package/dist/platform/logs.d.ts +12 -0
  39. package/dist/platform/logs.d.ts.map +1 -0
  40. package/dist/platform/logs.js +81 -0
  41. package/dist/platform/logs.js.map +1 -0
  42. package/dist/platform/readiness.d.ts +9 -0
  43. package/dist/platform/readiness.d.ts.map +1 -0
  44. package/dist/platform/readiness.js +58 -0
  45. package/dist/platform/readiness.js.map +1 -0
  46. package/dist/platform/resolve-installation.d.ts +5 -0
  47. package/dist/platform/resolve-installation.d.ts.map +1 -0
  48. package/dist/platform/resolve-installation.js +115 -0
  49. package/dist/platform/resolve-installation.js.map +1 -0
  50. package/dist/platform/services.d.ts +7 -0
  51. package/dist/platform/services.d.ts.map +1 -0
  52. package/dist/platform/services.js +21 -0
  53. package/dist/platform/services.js.map +1 -0
  54. package/dist/platform/status.d.ts +7 -0
  55. package/dist/platform/status.d.ts.map +1 -0
  56. package/dist/platform/status.js +60 -0
  57. package/dist/platform/status.js.map +1 -0
  58. package/dist/platform/types.d.ts +37 -0
  59. package/dist/platform/types.d.ts.map +1 -0
  60. package/dist/platform/types.js +8 -0
  61. package/dist/platform/types.js.map +1 -0
  62. package/dist/platform/upgrade/backup-policy.d.ts +4 -0
  63. package/dist/platform/upgrade/backup-policy.d.ts.map +1 -0
  64. package/dist/platform/upgrade/backup-policy.js +20 -0
  65. package/dist/platform/upgrade/backup-policy.js.map +1 -0
  66. package/dist/platform/upgrade/catalog.d.ts +26 -0
  67. package/dist/platform/upgrade/catalog.d.ts.map +1 -0
  68. package/dist/platform/upgrade/catalog.js +56 -0
  69. package/dist/platform/upgrade/catalog.js.map +1 -0
  70. package/dist/platform/upgrade/options.d.ts +8 -0
  71. package/dist/platform/upgrade/options.d.ts.map +1 -0
  72. package/dist/platform/upgrade/options.js +17 -0
  73. package/dist/platform/upgrade/options.js.map +1 -0
  74. package/dist/platform/upgrade/preflight.d.ts +25 -0
  75. package/dist/platform/upgrade/preflight.d.ts.map +1 -0
  76. package/dist/platform/upgrade/preflight.js +91 -0
  77. package/dist/platform/upgrade/preflight.js.map +1 -0
  78. package/dist/platform/upgrade/run-upgrade.d.ts +22 -0
  79. package/dist/platform/upgrade/run-upgrade.d.ts.map +1 -0
  80. package/dist/platform/upgrade/run-upgrade.js +253 -0
  81. package/dist/platform/upgrade/run-upgrade.js.map +1 -0
  82. package/dist/platform/upgrade/state.d.ts +31 -0
  83. package/dist/platform/upgrade/state.d.ts.map +1 -0
  84. package/dist/platform/upgrade/state.js +129 -0
  85. package/dist/platform/upgrade/state.js.map +1 -0
  86. package/dist/platform/upgrade/version.d.ts +11 -0
  87. package/dist/platform/upgrade/version.d.ts.map +1 -0
  88. package/dist/platform/upgrade/version.js +70 -0
  89. package/dist/platform/upgrade/version.js.map +1 -0
  90. package/dist/platform/upgrade-guard.d.ts +2 -0
  91. package/dist/platform/upgrade-guard.d.ts.map +1 -0
  92. package/dist/platform/upgrade-guard.js +12 -0
  93. package/dist/platform/upgrade-guard.js.map +1 -0
  94. package/dist/setup/acceptance-install.d.ts +15 -0
  95. package/dist/setup/acceptance-install.d.ts.map +1 -0
  96. package/dist/setup/acceptance-install.js +44 -0
  97. package/dist/setup/acceptance-install.js.map +1 -0
  98. package/dist/setup/atomic-write.d.ts +4 -0
  99. package/dist/setup/atomic-write.d.ts.map +1 -0
  100. package/dist/setup/atomic-write.js +19 -0
  101. package/dist/setup/atomic-write.js.map +1 -0
  102. package/dist/setup/bootstrap-capture.d.ts +9 -0
  103. package/dist/setup/bootstrap-capture.d.ts.map +1 -0
  104. package/dist/setup/bootstrap-capture.js +64 -0
  105. package/dist/setup/bootstrap-capture.js.map +1 -0
  106. package/dist/setup/compose-exec.d.ts +21 -0
  107. package/dist/setup/compose-exec.d.ts.map +1 -0
  108. package/dist/setup/compose-exec.js +55 -0
  109. package/dist/setup/compose-exec.js.map +1 -0
  110. package/dist/setup/compose-project.d.ts +3 -0
  111. package/dist/setup/compose-project.d.ts.map +1 -0
  112. package/dist/setup/compose-project.js +12 -0
  113. package/dist/setup/compose-project.js.map +1 -0
  114. package/dist/setup/compose-template-root.d.ts +3 -0
  115. package/dist/setup/compose-template-root.d.ts.map +1 -0
  116. package/dist/setup/compose-template-root.js +8 -0
  117. package/dist/setup/compose-template-root.js.map +1 -0
  118. package/dist/setup/distribution.d.ts +13 -0
  119. package/dist/setup/distribution.d.ts.map +1 -0
  120. package/dist/setup/distribution.js +55 -0
  121. package/dist/setup/distribution.js.map +1 -0
  122. package/dist/setup/env-file.d.ts +23 -0
  123. package/dist/setup/env-file.d.ts.map +1 -0
  124. package/dist/setup/env-file.js +141 -0
  125. package/dist/setup/env-file.js.map +1 -0
  126. package/dist/setup/format.d.ts +4 -0
  127. package/dist/setup/format.d.ts.map +1 -0
  128. package/dist/setup/format.js +58 -0
  129. package/dist/setup/format.js.map +1 -0
  130. package/dist/setup/index.d.ts +17 -0
  131. package/dist/setup/index.d.ts.map +1 -0
  132. package/dist/setup/index.js +45 -0
  133. package/dist/setup/index.js.map +1 -0
  134. package/dist/setup/install-path.d.ts +3 -0
  135. package/dist/setup/install-path.d.ts.map +1 -0
  136. package/dist/setup/install-path.js +26 -0
  137. package/dist/setup/install-path.js.map +1 -0
  138. package/dist/setup/installation-state.d.ts +29 -0
  139. package/dist/setup/installation-state.d.ts.map +1 -0
  140. package/dist/setup/installation-state.js +83 -0
  141. package/dist/setup/installation-state.js.map +1 -0
  142. package/dist/setup/installation-status.d.ts +14 -0
  143. package/dist/setup/installation-status.d.ts.map +1 -0
  144. package/dist/setup/installation-status.js +36 -0
  145. package/dist/setup/installation-status.js.map +1 -0
  146. package/dist/setup/materialize-install.d.ts +24 -0
  147. package/dist/setup/materialize-install.d.ts.map +1 -0
  148. package/dist/setup/materialize-install.js +108 -0
  149. package/dist/setup/materialize-install.js.map +1 -0
  150. package/dist/setup/probe-spawn.d.ts +16 -0
  151. package/dist/setup/probe-spawn.d.ts.map +1 -0
  152. package/dist/setup/probe-spawn.js +87 -0
  153. package/dist/setup/probe-spawn.js.map +1 -0
  154. package/dist/setup/read-options.d.ts +15 -0
  155. package/dist/setup/read-options.d.ts.map +1 -0
  156. package/dist/setup/read-options.js +69 -0
  157. package/dist/setup/read-options.js.map +1 -0
  158. package/dist/setup/run-onboarding.d.ts +22 -0
  159. package/dist/setup/run-onboarding.d.ts.map +1 -0
  160. package/dist/setup/run-onboarding.js +273 -0
  161. package/dist/setup/run-onboarding.js.map +1 -0
  162. package/dist/setup/run-provision.d.ts +17 -0
  163. package/dist/setup/run-provision.d.ts.map +1 -0
  164. package/dist/setup/run-provision.js +224 -0
  165. package/dist/setup/run-provision.js.map +1 -0
  166. package/dist/setup/run-setup.d.ts +26 -0
  167. package/dist/setup/run-setup.d.ts.map +1 -0
  168. package/dist/setup/run-setup.js +227 -0
  169. package/dist/setup/run-setup.js.map +1 -0
  170. package/dist/setup/secrets.d.ts +2 -0
  171. package/dist/setup/secrets.d.ts.map +1 -0
  172. package/dist/setup/secrets.js +8 -0
  173. package/dist/setup/secrets.js.map +1 -0
  174. package/dist/setup/setup-report.d.ts +19 -0
  175. package/dist/setup/setup-report.d.ts.map +1 -0
  176. package/dist/setup/setup-report.js +35 -0
  177. package/dist/setup/setup-report.js.map +1 -0
  178. package/dist/tsconfig.tsbuildinfo +1 -1
  179. package/package.json +15 -15
  180. package/templates/agent-typescript/.gitignore +4 -0
  181. package/templates/compose-install/compose.yml +307 -0
  182. package/templates/compose-install/distribution.json +5 -0
  183. package/templates/compose-install/upgrade-catalog.json +39 -0
@@ -0,0 +1,114 @@
1
+ import { buildComposeSpawnEnv, runComposeCommand, } from "../setup/compose-exec.js";
2
+ import {} from "./types.js";
3
+ export const COMPOSE_INSPECT_TIMEOUT_MS = 120_000;
4
+ export function inspectComposeServices(ctx, spawn) {
5
+ const result = runComposeCommand(ctx, ["ps", "-a", "--format", "json"], {
6
+ spawn,
7
+ timeoutMs: COMPOSE_INSPECT_TIMEOUT_MS,
8
+ processEnv: buildComposeSpawnEnv(ctx),
9
+ });
10
+ if (result.status !== 0) {
11
+ return [];
12
+ }
13
+ return parseComposePsJson(result.stdout);
14
+ }
15
+ export function parseComposePsJson(stdout) {
16
+ const trimmed = stdout.trim();
17
+ if (trimmed.length === 0) {
18
+ return [];
19
+ }
20
+ const rows = [];
21
+ if (trimmed.startsWith("[")) {
22
+ try {
23
+ const parsed = JSON.parse(trimmed);
24
+ rows.push(...parsed);
25
+ }
26
+ catch {
27
+ return [];
28
+ }
29
+ }
30
+ else {
31
+ for (const line of trimmed.split(/\r?\n/)) {
32
+ const candidate = line.trim();
33
+ if (candidate.length === 0) {
34
+ continue;
35
+ }
36
+ try {
37
+ rows.push(JSON.parse(candidate));
38
+ }
39
+ catch {
40
+ // ignore malformed lines
41
+ }
42
+ }
43
+ }
44
+ const byService = new Map();
45
+ for (const row of rows) {
46
+ const name = row.Service?.trim();
47
+ if (name === undefined || name.length === 0) {
48
+ continue;
49
+ }
50
+ byService.set(name, mapComposePsRow(name, row));
51
+ }
52
+ return [...byService.values()].sort((left, right) => left.name.localeCompare(right.name));
53
+ }
54
+ function mapComposePsRow(name, row) {
55
+ const statusText = row.Status?.trim() || row.State?.trim() || "unknown";
56
+ const health = row.Health?.trim();
57
+ return {
58
+ name,
59
+ state: classifyServiceState(statusText, health),
60
+ statusText,
61
+ health: health && health.length > 0 ? health : undefined,
62
+ };
63
+ }
64
+ export function classifyServiceState(statusText, health) {
65
+ const normalized = statusText.toLowerCase();
66
+ if (normalized.includes("exited") || normalized.includes("dead")) {
67
+ return "stopped";
68
+ }
69
+ if (health !== undefined) {
70
+ const healthLower = health.toLowerCase();
71
+ if (healthLower.includes("unhealthy")) {
72
+ return "unhealthy";
73
+ }
74
+ if (healthLower.includes("healthy")) {
75
+ return "healthy";
76
+ }
77
+ if (healthLower.includes("starting")) {
78
+ return "starting";
79
+ }
80
+ }
81
+ if (normalized.includes("(unhealthy)")) {
82
+ return "unhealthy";
83
+ }
84
+ if (normalized.includes("(healthy)")) {
85
+ return "healthy";
86
+ }
87
+ if (normalized.includes("starting") || normalized.includes("created")) {
88
+ return "starting";
89
+ }
90
+ if (normalized.includes("running") ||
91
+ normalized.includes("up") ||
92
+ normalized.includes("restarting")) {
93
+ return normalized.includes("health: starting") ? "starting" : "running";
94
+ }
95
+ return "unknown";
96
+ }
97
+ export function migrateJobCompleted(services) {
98
+ const migrate = services.find((service) => service.name === "migrate");
99
+ if (migrate === undefined) {
100
+ return undefined;
101
+ }
102
+ const status = migrate.statusText.toLowerCase();
103
+ if (status.includes("exited") && status.includes("(0)")) {
104
+ return true;
105
+ }
106
+ if (status.includes("exited") && !status.includes("(0)")) {
107
+ return false;
108
+ }
109
+ if (migrate.state === "running" || migrate.state === "starting") {
110
+ return false;
111
+ }
112
+ return undefined;
113
+ }
114
+ //# sourceMappingURL=compose-inspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-inspect.js","sourceRoot":"","sources":["../../src/platform/compose-inspect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ProbeSpawnFn } from "../setup/probe-spawn.js";
2
+ import type { DoctorReport } from "../doctor/types.js";
3
+ export declare const PLATFORM_DOCTOR_SUBPROCESS_TIMEOUT_MS = 5000;
4
+ export declare function runPlatformDoctor(flags: Readonly<Record<string, string | boolean>>, processEnv?: NodeJS.ProcessEnv, deps?: {
5
+ readonly spawn?: ProbeSpawnFn;
6
+ readonly fetch?: typeof fetch;
7
+ readonly platform?: NodeJS.Platform;
8
+ }): Promise<DoctorReport>;
9
+ export declare function platformDoctorExitCode(report: DoctorReport): number;
10
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/platform/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQpE,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAE3D,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,UAAU,GAAE,MAAM,CAAC,UAAwB,EAC3C,IAAI,GAAE;IACJ,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAChC,GACL,OAAO,CAAC,YAAY,CAAC,CAkNvB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,154 @@
1
+ import { loadComposeDistribution } from "../setup/distribution.js";
2
+ import { defaultProbeSpawn } from "../setup/probe-spawn.js";
3
+ import { doctorExitCode } from "../doctor/run-doctor.js";
4
+ import { redactSecrets } from "../doctor/redact.js";
5
+ import { isIncompleteUpgrade, readUpgradeState } from "./upgrade/state.js";
6
+ import { collectPlatformStatus } from "./status.js";
7
+ import { resolveInstallDir } from "../setup/install-path.js";
8
+ import { resolveInstallationForLifecycle } from "./resolve-installation.js";
9
+ import { PlatformCommandError } from "./types.js";
10
+ export const PLATFORM_DOCTOR_SUBPROCESS_TIMEOUT_MS = 5_000;
11
+ export async function runPlatformDoctor(flags, processEnv = process.env, deps = {}) {
12
+ const spawn = deps.spawn ?? defaultProbeSpawn;
13
+ const timeoutMs = PLATFORM_DOCTOR_SUBPROCESS_TIMEOUT_MS;
14
+ const checks = [];
15
+ checks.push(checkDockerCli(spawn, timeoutMs));
16
+ const engine = checkDockerEngine(spawn, timeoutMs);
17
+ checks.push(engine);
18
+ if (engine.status === "PASS") {
19
+ checks.push(checkDockerCompose(spawn, timeoutMs));
20
+ }
21
+ else {
22
+ checks.push(skipCheck("docker_compose", "Skipped because Docker Engine is unavailable."));
23
+ }
24
+ let installation;
25
+ const upgradeState = await readUpgradeState(resolveInstallDir(flags, processEnv, deps.platform));
26
+ if (isIncompleteUpgrade(upgradeState)) {
27
+ checks.push(warnCheck("upgrade_state", `Incomplete platform upgrade recorded (phase ${upgradeState.phase}).`, "See docs/operations/UPGRADE.md and `osva platform status` before retrying."));
28
+ }
29
+ try {
30
+ installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
31
+ checks.push(passCheck("installation_state", `Located OSVA installation at ${installation.installDir} (project ${installation.marker.composeProjectName}).`));
32
+ }
33
+ catch (error) {
34
+ if (error instanceof PlatformCommandError) {
35
+ checks.push(failCheck("installation_state", error.message, "Run `osva setup` or pass --install-dir to an existing installation."));
36
+ return finalizeReport(checks);
37
+ }
38
+ throw error;
39
+ }
40
+ try {
41
+ const distribution = await loadComposeDistribution();
42
+ if (installation.marker.platformVersion !==
43
+ distribution.manifest.platformVersion) {
44
+ checks.push(warnCheck("installation_version", `Installation platform version ${installation.marker.platformVersion} differs from CLI bundle ${distribution.manifest.platformVersion}.`, "Plan an explicit upgrade with `osva platform upgrade --to <version> --dry-run`."));
45
+ }
46
+ else {
47
+ checks.push(passCheck("installation_version", `Installation platform version ${installation.marker.platformVersion} matches the CLI bundle.`));
48
+ }
49
+ }
50
+ catch (error) {
51
+ checks.push(warnCheck("installation_version", error instanceof Error
52
+ ? error.message
53
+ : "Could not load CLI distribution metadata.", "Reinstall or rebuild the OSVA CLI package."));
54
+ }
55
+ if (installation.envValues.OSVA_IMAGE !== installation.marker.imageRef) {
56
+ checks.push(failCheck("installation_image", "Installed image metadata mismatch between marker and .env.", "Repair installation metadata or rerun setup reconciliation."));
57
+ }
58
+ else {
59
+ checks.push(passCheck("installation_image", `Installed image ${installation.marker.imageRef}.`));
60
+ }
61
+ const status = await collectPlatformStatus(installation, {
62
+ fetch: deps.fetch,
63
+ spawn: deps.spawn,
64
+ });
65
+ for (const service of status.services) {
66
+ const id = `service_${service.name.replace(/[^a-z0-9]+/gi, "_")}`;
67
+ if (service.state === "healthy") {
68
+ checks.push(passCheck(id, `${service.name}: healthy (${service.statusText}).`));
69
+ continue;
70
+ }
71
+ if (service.state === "running" || service.state === "starting") {
72
+ checks.push(warnCheck(id, `${service.name}: ${service.state} (${service.statusText}).`, service.name === "web"
73
+ ? "Wait for health checks or inspect logs with `osva platform logs --service web`."
74
+ : "Inspect service logs if the platform remains degraded."));
75
+ continue;
76
+ }
77
+ if (service.state === "stopped") {
78
+ checks.push(warnCheck(id, `${service.name}: stopped.`, "Run `osva platform start` to start the installation."));
79
+ continue;
80
+ }
81
+ checks.push(warnCheck(id, `${service.name}: ${service.state} (${service.statusText}).`, "Inspect Docker state with `osva platform status`."));
82
+ }
83
+ if (status.apiHealthOk) {
84
+ checks.push(passCheck("api_health", "GET /health succeeded."));
85
+ }
86
+ else {
87
+ checks.push(failCheck("api_health", `Control plane /health failed at ${installation.webUrl}.`, "Run `osva platform start` or inspect web logs."));
88
+ }
89
+ if (status.apiReadyOk) {
90
+ checks.push(passCheck("api_ready", "GET /ready succeeded (PostgreSQL and Valkey reachable from web)."));
91
+ }
92
+ else {
93
+ checks.push(failCheck("api_ready", `Control plane /ready failed at ${installation.webUrl}.`, "Ensure postgres and valkey are healthy (`osva platform logs --service postgres`)."));
94
+ }
95
+ if (status.consoleReady) {
96
+ checks.push(passCheck("console_ready", `Console responded at ${installation.consoleUrl}.`));
97
+ }
98
+ else {
99
+ checks.push(failCheck("console_ready", `Console is not reachable at ${installation.consoleUrl}.`, "Inspect `osva platform logs --service console`."));
100
+ }
101
+ for (const problem of status.problems) {
102
+ checks.push(warnCheck("platform_status", problem, "See `osva platform status` for details."));
103
+ }
104
+ return finalizeReport(checks);
105
+ }
106
+ export function platformDoctorExitCode(report) {
107
+ return doctorExitCode(report);
108
+ }
109
+ function checkDockerCli(spawn, timeoutMs) {
110
+ const result = spawn("docker", ["--version"], timeoutMs);
111
+ if (result.error?.code === "ENOENT") {
112
+ return failCheck("docker_cli", "Docker CLI was not found on PATH.", "Install Docker Desktop or Docker Engine.");
113
+ }
114
+ if (result.status !== 0) {
115
+ return failCheck("docker_cli", redactSecrets("Docker CLI is unavailable."), "Install Docker and ensure `docker` is on PATH.");
116
+ }
117
+ return passCheck("docker_cli", "Docker CLI is available.");
118
+ }
119
+ function checkDockerEngine(spawn, timeoutMs) {
120
+ const result = spawn("docker", ["info", "--format", "{{.ServerVersion}}"], timeoutMs);
121
+ if (result.error?.code === "ENOENT") {
122
+ return failCheck("docker_engine", "Docker CLI was not found on PATH.", "Install Docker Desktop or Docker Engine.");
123
+ }
124
+ if (result.status !== 0 || result.stdout.trim().length === 0) {
125
+ return failCheck("docker_engine", "Docker Engine is not reachable.", "Start Docker Desktop or the Docker daemon.");
126
+ }
127
+ return passCheck("docker_engine", `Docker Engine is reachable (server ${result.stdout.trim()}).`);
128
+ }
129
+ function checkDockerCompose(spawn, timeoutMs) {
130
+ const result = spawn("docker", ["compose", "version"], timeoutMs);
131
+ if (result.status !== 0) {
132
+ return failCheck("docker_compose", "Docker Compose v2 plugin is unavailable.", "Install Docker Compose v2 (`docker compose`).");
133
+ }
134
+ return passCheck("docker_compose", "Docker Compose v2 is available.");
135
+ }
136
+ function passCheck(id, message) {
137
+ return { id, status: "PASS", message };
138
+ }
139
+ function warnCheck(id, message, remediation) {
140
+ return { id, status: "WARN", message, remediation };
141
+ }
142
+ function failCheck(id, message, remediation) {
143
+ return { id, status: "FAIL", message, remediation };
144
+ }
145
+ function skipCheck(id, message) {
146
+ return { id, status: "SKIP", message };
147
+ }
148
+ function finalizeReport(checks) {
149
+ const hasFail = checks.some((check) => check.status === "FAIL");
150
+ const hasWarn = checks.some((check) => check.status === "WARN");
151
+ const result = hasFail ? "fail" : hasWarn ? "warn" : "pass";
152
+ return { result, checks };
153
+ }
154
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/platform/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { DoctorReport } from "../doctor/types.js";
2
+ import type { LifecycleActionResult } from "./lifecycle.js";
3
+ import type { PlatformStatusReport } from "./types.js";
4
+ export declare function formatPlatformStatusHuman(report: PlatformStatusReport): string;
5
+ export declare function formatPlatformStatusJson(report: PlatformStatusReport): string;
6
+ export declare function formatLifecycleHuman(result: LifecycleActionResult): string;
7
+ export declare function formatLifecycleJson(result: LifecycleActionResult): string;
8
+ export declare function formatPlatformDoctorHuman(report: DoctorReport): string;
9
+ export declare function formatPlatformDoctorJson(report: DoctorReport): string;
10
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/platform/format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,oBAAoB,GAC3B,MAAM,CAqCR;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,CAqB7E;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAE1E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAEzE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAWtE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAErE"}
@@ -0,0 +1,73 @@
1
+ export function formatPlatformStatusHuman(report) {
2
+ const lines = [];
3
+ const { installation } = report;
4
+ lines.push(`Installation: ${installation.installDir}`);
5
+ lines.push(`Image: ${installation.marker.imageRef}`);
6
+ lines.push(`Platform version: ${installation.marker.platformVersion}`);
7
+ lines.push(`Compose project: ${installation.marker.composeProjectName}`);
8
+ lines.push(`Control plane: ${installation.webUrl}`);
9
+ lines.push(`Console: ${installation.consoleUrl}`);
10
+ lines.push(`Platform ready: ${report.platformReady ? "yes" : "no"} (API /ready: ${report.apiReadyOk ? "ok" : "not ok"})`);
11
+ lines.push(`Console ready: ${report.consoleReady ? "yes" : "no"}`);
12
+ lines.push("");
13
+ lines.push("Services:");
14
+ if (report.services.length === 0) {
15
+ lines.push(" (no containers reported — installation may be stopped)");
16
+ }
17
+ else {
18
+ for (const service of report.services) {
19
+ lines.push(` ${service.name.padEnd(22)} ${service.state.padEnd(10)} ${service.statusText}`);
20
+ }
21
+ }
22
+ if (report.upgradeState !== undefined) {
23
+ lines.push(`Upgrade state: ${report.upgradeState.phase} (${report.upgradeState.fromPlatformVersion} → ${report.upgradeState.toPlatformVersion})`);
24
+ }
25
+ if (report.problems.length > 0) {
26
+ lines.push("");
27
+ lines.push("Problems:");
28
+ for (const problem of report.problems) {
29
+ lines.push(` - ${problem}`);
30
+ }
31
+ }
32
+ return `${lines.join("\n")}\n`;
33
+ }
34
+ export function formatPlatformStatusJson(report) {
35
+ return `${JSON.stringify({
36
+ installDir: report.installation.installDir,
37
+ imageRef: report.installation.marker.imageRef,
38
+ platformVersion: report.installation.marker.platformVersion,
39
+ composeProjectName: report.installation.marker.composeProjectName,
40
+ webUrl: report.installation.webUrl,
41
+ mcpUrl: report.installation.mcpUrl,
42
+ consoleUrl: report.installation.consoleUrl,
43
+ platformReady: report.platformReady,
44
+ consoleReady: report.consoleReady,
45
+ apiHealthOk: report.apiHealthOk,
46
+ apiReadyOk: report.apiReadyOk,
47
+ services: report.services,
48
+ problems: report.problems,
49
+ upgradeState: report.upgradeState,
50
+ }, null, 2)}\n`;
51
+ }
52
+ export function formatLifecycleHuman(result) {
53
+ return `${result.message}\n`;
54
+ }
55
+ export function formatLifecycleJson(result) {
56
+ return `${JSON.stringify(result, null, 2)}\n`;
57
+ }
58
+ export function formatPlatformDoctorHuman(report) {
59
+ const lines = ["OSVA platform doctor", ""];
60
+ for (const check of report.checks) {
61
+ lines.push(`[${check.status}] ${check.id}: ${check.message}`);
62
+ if (check.remediation !== undefined) {
63
+ lines.push(` → ${check.remediation}`);
64
+ }
65
+ }
66
+ lines.push("");
67
+ lines.push(`Result: ${report.result}`);
68
+ return `${lines.join("\n")}\n`;
69
+ }
70
+ export function formatPlatformDoctorJson(report) {
71
+ return `${JSON.stringify(report, null, 2)}\n`;
72
+ }
73
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/platform/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ProbeSpawnFn } from "../setup/probe-spawn.js";
2
+ export type PlatformCommandDependencies = {
3
+ readonly spawn?: ProbeSpawnFn;
4
+ readonly fetch?: typeof fetch;
5
+ readonly processEnv?: NodeJS.ProcessEnv;
6
+ readonly platform?: NodeJS.Platform;
7
+ };
8
+ export declare function runPlatformCommand(subcommand: readonly string[], flags: Readonly<Record<string, string | boolean>>, deps?: PlatformCommandDependencies): Promise<number>;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CACrC,CAAC;AAEF,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EACjD,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,MAAM,CAAC,CA8HjB"}
@@ -0,0 +1,143 @@
1
+ import { writeStdout } from "../stdout.js";
2
+ import { ComposeExecError } from "../setup/compose-exec.js";
3
+ import { printError } from "../output.js";
4
+ import { formatLifecycleHuman, formatLifecycleJson, formatPlatformDoctorHuman, formatPlatformDoctorJson, formatPlatformStatusHuman, formatPlatformStatusJson, } from "./format.js";
5
+ import { runPlatformDoctor, platformDoctorExitCode } from "./doctor.js";
6
+ import { runPlatformRestart, runPlatformStart, runPlatformStop, } from "./lifecycle.js";
7
+ import { parsePlatformLogsOptions, runPlatformLogs } from "./logs.js";
8
+ import { resolveInstallationForLifecycle } from "./resolve-installation.js";
9
+ import { collectPlatformStatus } from "./status.js";
10
+ import { PlatformCommandError } from "./types.js";
11
+ import { parsePlatformUpgradeOptions } from "./upgrade/options.js";
12
+ import { PlatformUpgradeDryRunReport, runPlatformUpgrade, } from "./upgrade/run-upgrade.js";
13
+ export async function runPlatformCommand(subcommand, flags, deps = {}) {
14
+ const processEnv = deps.processEnv ?? process.env;
15
+ const json = flags.json === true;
16
+ if (subcommand.length === 0 || subcommand[0] === "help") {
17
+ printPlatformHelp();
18
+ return subcommand.length === 0 ? 1 : 0;
19
+ }
20
+ const action = subcommand[0];
21
+ try {
22
+ if (action === "status") {
23
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
24
+ const report = await collectPlatformStatus(installation, {
25
+ fetch: deps.fetch,
26
+ spawn: deps.spawn,
27
+ });
28
+ await writeStdout(json
29
+ ? formatPlatformStatusJson(report)
30
+ : formatPlatformStatusHuman(report));
31
+ return report.platformReady && report.problems.length === 0 ? 0 : 1;
32
+ }
33
+ if (action === "start") {
34
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
35
+ const result = await runPlatformStart(installation, {
36
+ spawn: deps.spawn,
37
+ fetch: deps.fetch,
38
+ });
39
+ await writeStdout(json ? formatLifecycleJson(result) : formatLifecycleHuman(result));
40
+ return 0;
41
+ }
42
+ if (action === "stop") {
43
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
44
+ const result = await runPlatformStop(installation, { spawn: deps.spawn });
45
+ await writeStdout(json ? formatLifecycleJson(result) : formatLifecycleHuman(result));
46
+ return 0;
47
+ }
48
+ if (action === "restart") {
49
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
50
+ const result = await runPlatformRestart(installation, {
51
+ spawn: deps.spawn,
52
+ fetch: deps.fetch,
53
+ });
54
+ await writeStdout(json ? formatLifecycleJson(result) : formatLifecycleHuman(result));
55
+ return 0;
56
+ }
57
+ if (action === "logs") {
58
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
59
+ const logOptions = parsePlatformLogsOptions(flags);
60
+ return await runPlatformLogs(installation, logOptions);
61
+ }
62
+ if (action === "upgrade") {
63
+ const installation = await resolveInstallationForLifecycle(flags, processEnv, deps.platform);
64
+ const upgradeOptions = parsePlatformUpgradeOptions(flags);
65
+ try {
66
+ const result = await runPlatformUpgrade(installation, upgradeOptions, {
67
+ spawn: deps.spawn,
68
+ fetch: deps.fetch,
69
+ processEnv,
70
+ });
71
+ await writeStdout(json ? `${JSON.stringify(result, null, 2)}\n` : `${result.message}\n`);
72
+ return 0;
73
+ }
74
+ catch (error) {
75
+ if (error instanceof PlatformUpgradeDryRunReport) {
76
+ await writeStdout(error.formatted);
77
+ return error.report.blockingIssues.length > 0 ? 1 : 0;
78
+ }
79
+ throw error;
80
+ }
81
+ }
82
+ if (action === "doctor") {
83
+ const report = await runPlatformDoctor(flags, processEnv, deps);
84
+ await writeStdout(json
85
+ ? formatPlatformDoctorJson(report)
86
+ : formatPlatformDoctorHuman(report));
87
+ return platformDoctorExitCode(report);
88
+ }
89
+ printError(`Unknown platform command: ${subcommand.join(" ")}`);
90
+ printPlatformHelp();
91
+ return 1;
92
+ }
93
+ catch (error) {
94
+ return mapPlatformError(error, json);
95
+ }
96
+ }
97
+ function mapPlatformError(error, json) {
98
+ if (error instanceof PlatformCommandError) {
99
+ if (json) {
100
+ void writeStdout(`${JSON.stringify({ error: { code: error.code, message: error.message } }, null, 2)}\n`);
101
+ }
102
+ else {
103
+ printError(error.message);
104
+ }
105
+ return error.code === "usage" ? 1 : 1;
106
+ }
107
+ if (error instanceof ComposeExecError) {
108
+ const message = error.message;
109
+ if (json) {
110
+ void writeStdout(`${JSON.stringify({ error: { code: error.code, message } }, null, 2)}\n`);
111
+ }
112
+ else {
113
+ printError(message);
114
+ }
115
+ return 1;
116
+ }
117
+ if (error instanceof Error) {
118
+ printError(error.message);
119
+ return 1;
120
+ }
121
+ printError("Platform command failed.");
122
+ return 1;
123
+ }
124
+ function printPlatformHelp() {
125
+ process.stdout.write(`OSVA platform lifecycle
126
+
127
+ Usage:
128
+ osva platform <command> [--install-dir PATH] [--json]
129
+
130
+ Commands:
131
+ status Show installation, service, and readiness overview
132
+ start Start an existing installation (no image pull or migration)
133
+ stop Gracefully stop services (preserves volumes and secrets)
134
+ restart Restart services in place (no image pull or migration)
135
+ logs Show recent service logs [--service NAME] [--tail N] [--follow]
136
+ doctor Diagnose Docker, installation, services, API, and Console health
137
+ upgrade Explicit platform upgrade (--to VERSION [--dry-run] [--backup-confirmed] [--yes])
138
+
139
+ Install OSVA with \`osva setup\`. Lifecycle commands never create a new installation.
140
+ \`platform upgrade\` requires --dry-run review, then --backup-confirmed and --yes to execute.
141
+ `);
142
+ }
143
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { ProbeSpawnFn } from "../setup/probe-spawn.js";
2
+ import { type ResolvedInstallation } from "./types.js";
3
+ export declare const COMPOSE_LIFECYCLE_TIMEOUT_MS = 900000;
4
+ export interface LifecycleActionResult {
5
+ readonly action: "start" | "stop" | "restart";
6
+ readonly servicesAffected: readonly string[];
7
+ readonly message: string;
8
+ }
9
+ export declare function runPlatformStart(installation: ResolvedInstallation, deps?: {
10
+ readonly spawn?: ProbeSpawnFn;
11
+ readonly fetch?: typeof fetch;
12
+ }): Promise<LifecycleActionResult>;
13
+ export declare function runPlatformStop(installation: ResolvedInstallation, deps?: {
14
+ readonly spawn?: ProbeSpawnFn;
15
+ }): Promise<LifecycleActionResult>;
16
+ export declare function runPlatformRestart(installation: ResolvedInstallation, deps?: {
17
+ readonly spawn?: ProbeSpawnFn;
18
+ readonly fetch?: typeof fetch;
19
+ }): Promise<LifecycleActionResult>;
20
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/platform/lifecycle.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAY5D,OAAO,EAAwB,KAAK,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE7E,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,gBAAgB,CACpC,YAAY,EAAE,oBAAoB,EAClC,IAAI,GAAE;IACJ,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GACL,OAAO,CAAC,qBAAqB,CAAC,CAuChC;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,oBAAoB,EAClC,IAAI,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAO,GAC3C,OAAO,CAAC,qBAAqB,CAAC,CA4BhC;AAED,wBAAsB,kBAAkB,CACtC,YAAY,EAAE,oBAAoB,EAClC,IAAI,GAAE;IACJ,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GACL,OAAO,CAAC,qBAAqB,CAAC,CA+ChC"}