@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,273 @@
1
+ import { redactSecrets } from "../doctor/redact.js";
2
+ import { parseIdentityBootstrapSetupToken, parseWorkspaceBootstrapOutput, redactBootstrapSubprocessOutput, } from "./bootstrap-capture.js";
3
+ import { assertComposeSuccess, buildComposeSpawnEnv, ComposeExecError, runComposeCommand, } from "./compose-exec.js";
4
+ import { classifyAdministratorBootstrapPhase, parseInstallationStatusJson, } from "./installation-status.js";
5
+ import { writeAcceptanceBootstrapKeyFile, writeAcceptanceSetupTokenFile, } from "./acceptance-install.js";
6
+ export const COMPOSE_ONBOARDING_TIMEOUT_MS = 300_000;
7
+ export async function runSetupOnboarding(input) {
8
+ const processEnv = input.processEnv ?? process.env;
9
+ const checks = [];
10
+ const consoleUrl = `http://127.0.0.1:${String(input.options.consolePort)}`;
11
+ let setupTokenForOperator;
12
+ let administratorPhase;
13
+ if (!(await probeConsoleDistribution(input.execCtx, input.spawn))) {
14
+ checks.push(failCheck("console_distribution", "The pinned OSVA image does not include Console assets (apps/console).", "Re-run `osva setup --yes` after upgrading OSVA_IMAGE to a release that packages Console, or install a matching CLI bundle."));
15
+ checks.push(skipCheck("console_ready", "Skipped Console readiness because Console is unavailable in the OSVA image."));
16
+ checks.push(skipCheck("administrator_bootstrapped", "Skipped administrator bootstrap because Console distribution is unavailable."));
17
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
18
+ }
19
+ checks.push(passCheck("console_distribution", "Console server assets are present in the pinned OSVA image."));
20
+ if (input.mutateInstallation) {
21
+ startConsoleService(input.execCtx, input.spawn);
22
+ }
23
+ try {
24
+ await waitForConsoleReady(input.fetch, consoleUrl);
25
+ checks.push(passCheck("console_ready", `Console is ready at ${consoleUrl}.`));
26
+ }
27
+ catch (error) {
28
+ checks.push(failCheck("console_ready", redactSecrets(error instanceof Error
29
+ ? error.message
30
+ : "Console did not become ready."), "Inspect `docker compose --project-directory <install-dir> logs console` and retry `osva setup`."));
31
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
32
+ }
33
+ let status;
34
+ try {
35
+ status = await readInstallationStatus(input.execCtx, input.spawn);
36
+ }
37
+ catch (error) {
38
+ checks.push(failCheck("administrator_bootstrapped", redactSecrets(error instanceof Error
39
+ ? error.message
40
+ : "Could not read installation status."), "Ensure PostgreSQL is healthy, then retry `osva setup`."));
41
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
42
+ }
43
+ administratorPhase = classifyAdministratorBootstrapPhase(status);
44
+ if (!input.mutateInstallation) {
45
+ checks.push(...reportReadOnlyAdministratorState(administratorPhase, consoleUrl));
46
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
47
+ }
48
+ if (administratorPhase === "administrator_ready") {
49
+ checks.push(passCheck("administrator_bootstrapped", "A human administrator is already linked to this installation."));
50
+ checks.push(passCheck("administrator_setup_complete", "Initial administrator password setup appears complete."));
51
+ checks.push(passCheck("installation_complete", `Installation complete. Open ${consoleUrl}, sign in, and continue Console onboarding.`));
52
+ checks.push(skipCheck("first_agent_run_succeeded", "First agent execution is not verified by the installer; complete Agent Studio onboarding in the Console."));
53
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
54
+ }
55
+ if (administratorPhase === "administrator_pending_password_setup") {
56
+ checks.push(passCheck("administrator_bootstrapped", "Human administrator exists but password setup is still pending."));
57
+ checks.push(skipCheck("administrator_setup_complete", `Complete password setup at ${consoleUrl}/setup before signing in.`));
58
+ checks.push(skipCheck("installation_complete", "Installation is not complete until administrator password setup and sign-in succeed."));
59
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
60
+ }
61
+ if (administratorPhase === "multiple_unlinked_workspaces") {
62
+ checks.push(warnCheck("administrator_bootstrapped", "Multiple workspaces exist without linked human administrators.", "Run identity bootstrap manually with explicit --workspace-id values for each workspace, or consolidate workspaces before retrying `osva setup`."));
63
+ checks.push(skipCheck("installation_complete", "Installation is not complete until each workspace has a linked human administrator."));
64
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
65
+ }
66
+ if (status.apiKeyCount === 0) {
67
+ try {
68
+ await runWorkspaceBootstrapJob(input.execCtx, input.spawn, input.options, processEnv);
69
+ status = await readInstallationStatus(input.execCtx, input.spawn);
70
+ administratorPhase = classifyAdministratorBootstrapPhase(status);
71
+ }
72
+ catch (error) {
73
+ checks.push(failCheck("administrator_bootstrapped", redactSecrets(error instanceof Error
74
+ ? error.message
75
+ : "Workspace bootstrap failed."), "Inspect bootstrap job logs and retry `osva setup`."));
76
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
77
+ }
78
+ }
79
+ if (administratorPhase === "fresh_installation" ||
80
+ administratorPhase === "workspace_without_human_administrator" ||
81
+ administratorPhase === "ambiguous_workspace_state") {
82
+ if (input.options.adminEmail.trim().length === 0) {
83
+ checks.push(failCheck("administrator_bootstrapped", "Administrator email is required for initial human identity bootstrap.", "Re-run with --admin-email owner@example.com (and optional --admin-name / --organization-name)."));
84
+ checks.push(skipCheck("installation_complete", "Installation is not complete until administrator bootstrap succeeds."));
85
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
86
+ }
87
+ try {
88
+ const token = await runIdentityBootstrapJob(input.execCtx, input.spawn, input.options, status);
89
+ setupTokenForOperator = token;
90
+ if (token !== undefined) {
91
+ await writeAcceptanceSetupTokenFile({ processEnv, token });
92
+ }
93
+ checks.push(passCheck("administrator_bootstrapped", `Initial human administrator ${input.options.adminEmail} was linked to the workspace.`));
94
+ if (token !== undefined) {
95
+ checks.push(skipCheck("administrator_setup_complete", `Open ${consoleUrl}/setup and enter the one-time setup token printed below (not stored in installation files or JSON output).`));
96
+ }
97
+ checks.push(skipCheck("installation_complete", "Installation is not complete until password setup and sign-in succeed in the Console."));
98
+ checks.push(skipCheck("first_agent_run_succeeded", "First agent execution is not verified by the installer."));
99
+ }
100
+ catch (error) {
101
+ checks.push(failCheck("administrator_bootstrapped", redactSecrets(error instanceof Error
102
+ ? error.message
103
+ : "Human identity bootstrap failed."), "Resolve the reported issue and retry `osva setup` (existing organizations are not reset)."));
104
+ }
105
+ }
106
+ return { checks, consoleUrl, setupTokenForOperator, administratorPhase };
107
+ }
108
+ function reportReadOnlyAdministratorState(phase, consoleUrl) {
109
+ if (phase === "administrator_ready") {
110
+ return [
111
+ passCheck("administrator_bootstrapped", "Human administrator is configured."),
112
+ passCheck("administrator_setup_complete", "Initial administrator password setup appears complete."),
113
+ skipCheck("installation_complete", `Platform is operational. Open ${consoleUrl} to sign in (re-run with --yes to reconcile services).`),
114
+ ];
115
+ }
116
+ if (phase === "administrator_pending_password_setup") {
117
+ return [
118
+ passCheck("administrator_bootstrapped", "Human administrator exists; password setup is pending."),
119
+ skipCheck("administrator_setup_complete", `Complete setup at ${consoleUrl}/setup (re-run with --yes to reconcile services).`),
120
+ ];
121
+ }
122
+ return [
123
+ skipCheck("administrator_bootstrapped", "Human administrator bootstrap is incomplete. Re-run `osva setup --yes` with --admin-email to continue."),
124
+ ];
125
+ }
126
+ async function probeConsoleDistribution(ctx, spawn) {
127
+ const script = "try{require('fs').accessSync('/app/apps/console/dist/server/main.js');process.exit(0)}catch{process.exit(2)}";
128
+ const result = runComposeCommand(ctx, [
129
+ "run",
130
+ "--rm",
131
+ "--no-deps",
132
+ "-T",
133
+ "--entrypoint",
134
+ "node",
135
+ "web",
136
+ "-e",
137
+ script,
138
+ ], {
139
+ spawn,
140
+ timeoutMs: COMPOSE_ONBOARDING_TIMEOUT_MS,
141
+ processEnv: buildComposeSpawnEnv(ctx),
142
+ });
143
+ return result.status === 0;
144
+ }
145
+ function startConsoleService(ctx, spawn) {
146
+ const result = runComposeCommand(ctx, ["up", "-d", "--no-build", "--wait", "console"], {
147
+ spawn,
148
+ timeoutMs: COMPOSE_ONBOARDING_TIMEOUT_MS,
149
+ processEnv: buildComposeSpawnEnv(ctx),
150
+ });
151
+ assertComposeSuccess(result, "Starting Console");
152
+ }
153
+ async function waitForConsoleReady(fetchImpl, consoleUrl) {
154
+ let lastStatus;
155
+ for (let attempt = 0; attempt < 45; attempt += 1) {
156
+ try {
157
+ const response = await fetchImpl(`${consoleUrl}/`);
158
+ lastStatus = response.status;
159
+ if (response.ok) {
160
+ return;
161
+ }
162
+ }
163
+ catch {
164
+ // retry
165
+ }
166
+ await delay(2_000);
167
+ }
168
+ throw new ComposeExecError("command_failed", `Timed out waiting for Console at ${consoleUrl}${lastStatus === undefined ? "" : ` (last status ${String(lastStatus)})`}.`);
169
+ }
170
+ async function readInstallationStatus(ctx, spawn) {
171
+ const result = runComposeCommand(ctx, ["--profile", "bootstrap", "run", "--rm", "-T", "installation-status"], {
172
+ spawn,
173
+ timeoutMs: COMPOSE_ONBOARDING_TIMEOUT_MS,
174
+ processEnv: buildComposeSpawnEnv(ctx),
175
+ });
176
+ assertComposeSuccess(result, "Installation status probe");
177
+ return parseInstallationStatusJson(result.stdout);
178
+ }
179
+ async function runWorkspaceBootstrapJob(ctx, spawn, options, processEnv) {
180
+ const args = [
181
+ "--profile",
182
+ "bootstrap",
183
+ "run",
184
+ "--rm",
185
+ "-T",
186
+ "-e",
187
+ `OSVA_BOOTSTRAP_WORKSPACE_NAME=${options.workspaceName}`,
188
+ "bootstrap",
189
+ ];
190
+ const result = runComposeCommand(ctx, args, {
191
+ spawn,
192
+ timeoutMs: COMPOSE_ONBOARDING_TIMEOUT_MS,
193
+ processEnv: buildComposeSpawnEnv(ctx),
194
+ });
195
+ if (result.status !== 0) {
196
+ const detail = redactBootstrapSubprocessOutput(result.stderr || result.stdout);
197
+ throw new ComposeExecError("command_failed", detail.length > 0 ? detail : "Workspace bootstrap failed.");
198
+ }
199
+ const parsed = parseWorkspaceBootstrapOutput(result.stdout);
200
+ if (!parsed.alreadyCompleted && parsed.workspaceId === undefined) {
201
+ throw new ComposeExecError("command_failed", "Workspace bootstrap completed without a workspace id.");
202
+ }
203
+ if (parsed.apiKey !== undefined) {
204
+ await writeAcceptanceBootstrapKeyFile({
205
+ processEnv,
206
+ apiKey: parsed.apiKey,
207
+ });
208
+ }
209
+ }
210
+ async function runIdentityBootstrapJob(ctx, spawn, options, status) {
211
+ const identityArgs = [
212
+ "--profile",
213
+ "bootstrap",
214
+ "run",
215
+ "--rm",
216
+ "-T",
217
+ "identity-bootstrap",
218
+ "--",
219
+ "--email",
220
+ options.adminEmail,
221
+ "--name",
222
+ options.adminName,
223
+ "--organization-name",
224
+ options.organizationName,
225
+ ];
226
+ if (status.unlinkedWorkspaceIds.length === 1) {
227
+ identityArgs.push("--workspace-id", status.unlinkedWorkspaceIds[0]);
228
+ }
229
+ else if (status.unlinkedWorkspaceIds.length > 1) {
230
+ identityArgs.push("--all-unlinked-workspaces");
231
+ }
232
+ else if (status.workspaceCount === 1) {
233
+ const workspaceBootstrap = await readLatestWorkspaceId(ctx, spawn);
234
+ if (workspaceBootstrap !== undefined) {
235
+ identityArgs.push("--workspace-id", workspaceBootstrap);
236
+ }
237
+ }
238
+ const result = runComposeCommand(ctx, identityArgs, {
239
+ spawn,
240
+ timeoutMs: COMPOSE_ONBOARDING_TIMEOUT_MS,
241
+ processEnv: buildComposeSpawnEnv(ctx),
242
+ });
243
+ if (result.status !== 0) {
244
+ const detail = redactBootstrapSubprocessOutput(result.stderr || result.stdout);
245
+ throw new ComposeExecError("command_failed", detail.length > 0 ? detail : "Human identity bootstrap failed.");
246
+ }
247
+ return parseIdentityBootstrapSetupToken(result.stdout);
248
+ }
249
+ async function readLatestWorkspaceId(ctx, spawn) {
250
+ const status = await readInstallationStatus(ctx, spawn);
251
+ if (status.unlinkedWorkspaceIds.length === 1) {
252
+ return status.unlinkedWorkspaceIds[0];
253
+ }
254
+ return status.unlinkedWorkspaceIds[0];
255
+ }
256
+ function delay(ms) {
257
+ return new Promise((resolve) => {
258
+ setTimeout(resolve, ms);
259
+ });
260
+ }
261
+ function passCheck(id, message) {
262
+ return { id, status: "PASS", message };
263
+ }
264
+ function warnCheck(id, message, remediation) {
265
+ return { id, status: "WARN", message, remediation };
266
+ }
267
+ function failCheck(id, message, remediation) {
268
+ return { id, status: "FAIL", message, remediation };
269
+ }
270
+ function skipCheck(id, message) {
271
+ return { id, status: "SKIP", message };
272
+ }
273
+ //# sourceMappingURL=run-onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-onboarding.js","sourceRoot":"","sources":["../../src/setup/run-onboarding.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { DoctorCheck } from "../doctor/types.js";
2
+ import type { ProbeSpawnFn } from "./probe-spawn.js";
3
+ import type { SetupOptions } from "./read-options.js";
4
+ export declare const COMPOSE_CONFIG_TIMEOUT_MS = 120000;
5
+ export declare const COMPOSE_PULL_TIMEOUT_MS = 900000;
6
+ export declare const COMPOSE_UP_TIMEOUT_MS = 900000;
7
+ export interface ProvisionDependencies {
8
+ readonly spawn?: ProbeSpawnFn;
9
+ readonly processEnv?: NodeJS.ProcessEnv;
10
+ readonly fetch?: typeof fetch;
11
+ }
12
+ export interface ProvisionResult {
13
+ readonly checks: readonly DoctorCheck[];
14
+ readonly setupTokenForOperator?: string;
15
+ }
16
+ export declare function runSetupProvision(options: SetupOptions, deps?: ProvisionDependencies): Promise<ProvisionResult>;
17
+ //# sourceMappingURL=run-provision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-provision.d.ts","sourceRoot":"","sources":["../../src/setup/run-provision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAetD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,yBAAyB,SAAU,CAAC;AACjD,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAC/C,eAAO,MAAM,qBAAqB,SAAU,CAAC;AAW7C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,eAAe,CAAC,CAsK1B"}
@@ -0,0 +1,224 @@
1
+ import { redactSecrets } from "../doctor/redact.js";
2
+ import { assertComposeSuccess, buildComposeSpawnEnv, ComposeExecError, composeCommandIncludesDestructiveVolumeRemoval, runComposeCommand, } from "./compose-exec.js";
3
+ import { loadComposeDistribution } from "./distribution.js";
4
+ import { MaterializeInstallError, materializeInstallation, } from "./materialize-install.js";
5
+ import { runSetupOnboarding } from "./run-onboarding.js";
6
+ export const COMPOSE_CONFIG_TIMEOUT_MS = 120_000;
7
+ export const COMPOSE_PULL_TIMEOUT_MS = 900_000;
8
+ export const COMPOSE_UP_TIMEOUT_MS = 900_000;
9
+ const PLATFORM_SERVICES = [
10
+ "web",
11
+ "worker",
12
+ "scheduler",
13
+ "workflow-orchestrator",
14
+ "knowledge-worker",
15
+ "mcp-server",
16
+ ];
17
+ export async function runSetupProvision(options, deps = {}) {
18
+ const checks = [];
19
+ let setupTokenForOperator;
20
+ const processEnv = deps.processEnv ?? process.env;
21
+ const spawn = deps.spawn;
22
+ const fetchImpl = deps.fetch ?? fetch;
23
+ try {
24
+ const distribution = await loadComposeDistribution();
25
+ checks.push(passCheck("install_distribution", `Using bundled Compose distribution for platform ${distribution.manifest.platformVersion} (${distribution.manifest.imageRef}).`));
26
+ const materialized = await materializeInstallation({
27
+ options,
28
+ distribution,
29
+ processEnv,
30
+ });
31
+ checks.push(passCheck("install_directory", `Installation directory ${materialized.assessment.kind === "missing" ? "created at" : "ready at"} ${options.installDir}.`));
32
+ if (materialized.preservedSecrets) {
33
+ checks.push(passCheck("install_secrets", "Preserved existing installation secrets from .env (no credential rotation)."));
34
+ }
35
+ else {
36
+ checks.push(passCheck("install_secrets", "Generated new local secrets in .env (restricted permissions where supported)."));
37
+ }
38
+ const execCtx = {
39
+ installDir: options.installDir,
40
+ envFilePath: materialized.envPath,
41
+ projectName: materialized.envValues.COMPOSE_PROJECT_NAME,
42
+ };
43
+ const platformRunning = await detectFunctioningPlatform(execCtx, spawn);
44
+ if (platformRunning && !options.authorizeExisting) {
45
+ checks.push(warnCheck("install_existing_deployment", "An existing OSVA Compose deployment appears operational.", "Re-run with --yes to reconcile images and services, or use a different --install-dir."));
46
+ checks.push(skipCheck("compose_provision", "Skipped provisioning because an operational deployment was detected without --yes."));
47
+ checks.push(passCheck("platform_services_ready", "Platform services appear ready (existing deployment)."));
48
+ const onboarding = await runSetupOnboarding({
49
+ options,
50
+ execCtx,
51
+ spawn,
52
+ fetch: fetchImpl,
53
+ mutateInstallation: false,
54
+ processEnv,
55
+ });
56
+ checks.push(...onboarding.checks);
57
+ setupTokenForOperator = onboarding.setupTokenForOperator;
58
+ return { checks, setupTokenForOperator };
59
+ }
60
+ const reconcileRunning = platformRunning && options.authorizeExisting;
61
+ validateComposeConfig(execCtx, spawn);
62
+ checks.push(passCheck("compose_config", "Validated Compose configuration (`docker compose config`)."));
63
+ if (processEnv.OSVA_SETUP_SKIP_IMAGE_PULL?.trim() === "1") {
64
+ checks.push(skipCheck("compose_pull", "Skipped image pull (OSVA_SETUP_SKIP_IMAGE_PULL=1)."));
65
+ }
66
+ else {
67
+ pullPinnedImages(execCtx, spawn);
68
+ checks.push(passCheck("compose_pull", "Pulled pinned OSVA and dependency images."));
69
+ }
70
+ if (!reconcileRunning) {
71
+ startDataServices(execCtx, spawn);
72
+ checks.push(passCheck("compose_data_plane", "PostgreSQL and Valkey are healthy."));
73
+ runMigrationJob(execCtx, spawn);
74
+ checks.push(passCheck("compose_migrate", "Database migration job completed successfully."));
75
+ }
76
+ else {
77
+ checks.push(skipCheck("compose_data_plane", "Skipped data-plane restart during operational reconciliation."));
78
+ checks.push(skipCheck("compose_migrate", "Skipped migration during operational reconciliation (--yes does not authorize online re-migration)."));
79
+ }
80
+ startPlatformServices(execCtx, spawn);
81
+ checks.push(passCheck("compose_platform_up", `Started platform services: ${PLATFORM_SERVICES.join(", ")}.`));
82
+ await verifyPlatformHealth(options.webPort, options.mcpPort, fetchImpl);
83
+ checks.push(passCheck("platform_services_ready", `Platform services are ready at http://127.0.0.1:${String(options.webPort)} and MCP http://127.0.0.1:${String(options.mcpPort)}.`));
84
+ const onboarding = await runSetupOnboarding({
85
+ options,
86
+ execCtx,
87
+ spawn,
88
+ fetch: fetchImpl,
89
+ mutateInstallation: true,
90
+ processEnv,
91
+ });
92
+ checks.push(...onboarding.checks);
93
+ setupTokenForOperator = onboarding.setupTokenForOperator;
94
+ }
95
+ catch (error) {
96
+ checks.push(mapProvisionError(error));
97
+ }
98
+ return { checks, setupTokenForOperator };
99
+ }
100
+ function validateComposeConfig(ctx, spawn) {
101
+ const args = ["config"];
102
+ assertNotDestructive(args);
103
+ const result = runComposeCommand(ctx, args, {
104
+ spawn,
105
+ timeoutMs: COMPOSE_CONFIG_TIMEOUT_MS,
106
+ processEnv: buildComposeSpawnEnv(ctx),
107
+ });
108
+ assertComposeSuccess(result, "Compose configuration validation");
109
+ }
110
+ function pullPinnedImages(ctx, spawn) {
111
+ const args = ["pull"];
112
+ assertNotDestructive(args);
113
+ const result = runComposeCommand(ctx, args, {
114
+ spawn,
115
+ timeoutMs: COMPOSE_PULL_TIMEOUT_MS,
116
+ processEnv: buildComposeSpawnEnv(ctx),
117
+ });
118
+ assertComposeSuccess(result, "Image pull");
119
+ }
120
+ function startDataServices(ctx, spawn) {
121
+ const args = ["up", "-d", "--no-build", "--wait", "postgres", "valkey"];
122
+ assertNotDestructive(args);
123
+ const result = runComposeCommand(ctx, args, {
124
+ spawn,
125
+ timeoutMs: COMPOSE_UP_TIMEOUT_MS,
126
+ processEnv: buildComposeSpawnEnv(ctx),
127
+ });
128
+ assertComposeSuccess(result, "Starting PostgreSQL and Valkey");
129
+ }
130
+ function runMigrationJob(ctx, spawn) {
131
+ const args = ["up", "--no-build", "--wait", "migrate"];
132
+ assertNotDestructive(args);
133
+ const result = runComposeCommand(ctx, args, {
134
+ spawn,
135
+ timeoutMs: COMPOSE_UP_TIMEOUT_MS,
136
+ processEnv: buildComposeSpawnEnv(ctx),
137
+ });
138
+ assertComposeSuccess(result, "Migration job");
139
+ }
140
+ function startPlatformServices(ctx, spawn) {
141
+ const args = ["up", "-d", "--no-build", "--wait", ...PLATFORM_SERVICES];
142
+ assertNotDestructive(args);
143
+ const result = runComposeCommand(ctx, args, {
144
+ spawn,
145
+ timeoutMs: COMPOSE_UP_TIMEOUT_MS,
146
+ processEnv: buildComposeSpawnEnv(ctx),
147
+ });
148
+ assertComposeSuccess(result, "Starting platform services");
149
+ }
150
+ async function verifyPlatformHealth(webPort, mcpPort, fetchImpl) {
151
+ await waitForHttpOk(fetchImpl, `http://127.0.0.1:${String(webPort)}/health`);
152
+ await waitForHttpOk(fetchImpl, `http://127.0.0.1:${String(webPort)}/ready`);
153
+ await waitForHttpOk(fetchImpl, `http://127.0.0.1:${String(mcpPort)}/health`);
154
+ }
155
+ async function waitForHttpOk(fetchImpl, url, attempts = 45) {
156
+ let lastStatus;
157
+ for (let attempt = 0; attempt < attempts; attempt += 1) {
158
+ try {
159
+ const response = await fetchImpl(url);
160
+ lastStatus = response.status;
161
+ if (response.ok) {
162
+ return;
163
+ }
164
+ }
165
+ catch {
166
+ // retry
167
+ }
168
+ await delay(2_000);
169
+ }
170
+ throw new ComposeExecError("command_failed", `Timed out waiting for ${url}${lastStatus === undefined ? "" : ` (last status ${String(lastStatus)})`}.`);
171
+ }
172
+ async function detectFunctioningPlatform(ctx, spawn) {
173
+ const result = runComposeCommand(ctx, ["ps", "--status", "running", "--services"], {
174
+ spawn,
175
+ timeoutMs: COMPOSE_CONFIG_TIMEOUT_MS,
176
+ processEnv: buildComposeSpawnEnv(ctx),
177
+ });
178
+ if (result.status !== 0) {
179
+ return false;
180
+ }
181
+ const running = new Set(result.stdout
182
+ .split(/\r?\n/)
183
+ .map((line) => line.trim())
184
+ .filter((line) => line.length > 0));
185
+ return running.has("web") && running.has("worker");
186
+ }
187
+ function mapProvisionError(error) {
188
+ if (error instanceof MaterializeInstallError) {
189
+ if (error.code === "foreign_directory") {
190
+ return failCheck("install_directory", error.message, "Choose an empty directory or a prior OSVA installation path via --install-dir.");
191
+ }
192
+ return failCheck("install_env", error.message, "Unset conflicting host environment variables or align them with the installation .env file.");
193
+ }
194
+ if (error instanceof ComposeExecError) {
195
+ return failCheck("compose_provision", redactSecrets(error.message), "Inspect Docker logs with `docker compose --project-directory <install-dir> logs` and retry `osva setup`.");
196
+ }
197
+ if (error instanceof Error) {
198
+ return failCheck("compose_provision", redactSecrets(error.message), "Retry `osva setup` after resolving the reported issue.");
199
+ }
200
+ return failCheck("compose_provision", "Unexpected provisioning failure.", "Retry `osva setup` and inspect Docker state.");
201
+ }
202
+ function assertNotDestructive(args) {
203
+ if (composeCommandIncludesDestructiveVolumeRemoval(args)) {
204
+ throw new Error("Refusing destructive docker compose down -v during setup.");
205
+ }
206
+ }
207
+ function delay(ms) {
208
+ return new Promise((resolve) => {
209
+ setTimeout(resolve, ms);
210
+ });
211
+ }
212
+ function passCheck(id, message) {
213
+ return { id, status: "PASS", message };
214
+ }
215
+ function warnCheck(id, message, remediation) {
216
+ return { id, status: "WARN", message, remediation };
217
+ }
218
+ function failCheck(id, message, remediation) {
219
+ return { id, status: "FAIL", message, remediation };
220
+ }
221
+ function skipCheck(id, message) {
222
+ return { id, status: "SKIP", message };
223
+ }
224
+ //# sourceMappingURL=run-provision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-provision.js","sourceRoot":"","sources":["../../src/setup/run-provision.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { DoctorReport } from "../doctor/types.js";
2
+ import { type ProbeSpawnFn } from "./probe-spawn.js";
3
+ import type { SetupOptions } from "./read-options.js";
4
+ export declare const DEFAULT_SETUP_SUBPROCESS_TIMEOUT_MS = 5000;
5
+ export type LoopbackPortProbeResult = {
6
+ readonly kind: "available";
7
+ } | {
8
+ readonly kind: "in_use";
9
+ } | {
10
+ readonly kind: "permission_denied";
11
+ } | {
12
+ readonly kind: "probe_error";
13
+ readonly code?: string;
14
+ };
15
+ export type LoopbackPortProbeFn = (port: number) => Promise<LoopbackPortProbeResult>;
16
+ export interface SetupProbeDependencies {
17
+ readonly spawn?: ProbeSpawnFn;
18
+ readonly probeLoopbackPort?: LoopbackPortProbeFn;
19
+ readonly subprocessTimeoutMs?: number;
20
+ readonly platform?: NodeJS.Platform;
21
+ readonly arch?: string;
22
+ readonly cwdForDisk?: string;
23
+ }
24
+ export declare function runSetupPipeline(options: SetupOptions, deps?: SetupProbeDependencies): Promise<DoctorReport>;
25
+ export declare function setupExitCode(report: DoctorReport): number;
26
+ //# sourceMappingURL=run-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-setup.d.ts","sourceRoot":"","sources":["../../src/setup/run-setup.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAEL,KAAK,YAAY,EAElB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AAQzD,MAAM,MAAM,uBAAuB,GAC/B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAC3B;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG,CAChC,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAEtC,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,mBAAmB,CAAC;IACjD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,YAAY,EACrB,IAAI,GAAE,sBAA2B,GAChC,OAAO,CAAC,YAAY,CAAC,CA2EvB;AA2UD,wBAAgB,aAAa,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE1D"}