@synap-core/eve 0.1.0
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/README.md +251 -0
- package/dist/add-R6RGUYER.js +22 -0
- package/dist/add-R6RGUYER.js.map +1 -0
- package/dist/auth-7FFZNARZ-4OIRGZ7R.js +31 -0
- package/dist/auth-7FFZNARZ-4OIRGZ7R.js.map +1 -0
- package/dist/chunk-22RIHU4J.js +975 -0
- package/dist/chunk-22RIHU4J.js.map +1 -0
- package/dist/chunk-23XQDB7K.js +1773 -0
- package/dist/chunk-23XQDB7K.js.map +1 -0
- package/dist/chunk-5TBV2VHZ.js +6067 -0
- package/dist/chunk-5TBV2VHZ.js.map +1 -0
- package/dist/chunk-D7P3IYYR.js +44 -0
- package/dist/chunk-D7P3IYYR.js.map +1 -0
- package/dist/chunk-EHPC7CKE.js +757 -0
- package/dist/chunk-EHPC7CKE.js.map +1 -0
- package/dist/chunk-FAE5UZFE.js +17 -0
- package/dist/chunk-FAE5UZFE.js.map +1 -0
- package/dist/chunk-HRF6TNXX.js +53 -0
- package/dist/chunk-HRF6TNXX.js.map +1 -0
- package/dist/chunk-HVJEW7TU.js +495 -0
- package/dist/chunk-HVJEW7TU.js.map +1 -0
- package/dist/chunk-JO5H5G6U.js +1529 -0
- package/dist/chunk-JO5H5G6U.js.map +1 -0
- package/dist/chunk-MUEQNBE6.js +1140 -0
- package/dist/chunk-MUEQNBE6.js.map +1 -0
- package/dist/chunk-O5WTCVMZ.js +3391 -0
- package/dist/chunk-O5WTCVMZ.js.map +1 -0
- package/dist/chunk-ROKIQIEX.js +65 -0
- package/dist/chunk-ROKIQIEX.js.map +1 -0
- package/dist/chunk-T7GCAJK5.js +4895 -0
- package/dist/chunk-T7GCAJK5.js.map +1 -0
- package/dist/chunk-UOQWJ3S4.js +138 -0
- package/dist/chunk-UOQWJ3S4.js.map +1 -0
- package/dist/chunk-YQWV5W4U.js +3479 -0
- package/dist/chunk-YQWV5W4U.js.map +1 -0
- package/dist/chunk-ZPDNZRVW.js +272 -0
- package/dist/chunk-ZPDNZRVW.js.map +1 -0
- package/dist/config-store-KTOWIKAS-XVZHNPKW.js +11 -0
- package/dist/config-store-KTOWIKAS-XVZHNPKW.js.map +1 -0
- package/dist/dist-2VRFSXMO.js +40 -0
- package/dist/dist-2VRFSXMO.js.map +1 -0
- package/dist/dist-C2QB4IKT.js +340 -0
- package/dist/dist-C2QB4IKT.js.map +1 -0
- package/dist/dist-DEIUVZ57.js +299 -0
- package/dist/dist-DEIUVZ57.js.map +1 -0
- package/dist/dist-DSKHGECB.js +36 -0
- package/dist/dist-DSKHGECB.js.map +1 -0
- package/dist/dist-GN2DN7CI.js +95 -0
- package/dist/dist-GN2DN7CI.js.map +1 -0
- package/dist/dist-TZL4XW2R.js +58 -0
- package/dist/dist-TZL4XW2R.js.map +1 -0
- package/dist/dist-ZP2APOYV.js +53 -0
- package/dist/dist-ZP2APOYV.js.map +1 -0
- package/dist/index.js +15083 -0
- package/dist/index.js.map +1 -0
- package/dist/operational-5RT6AZJI-ZEMPD32Q.js +12 -0
- package/dist/operational-5RT6AZJI-ZEMPD32Q.js.map +1 -0
- package/dist/reconcile-A4I3Z7VX-GQMEN4GC.js +12 -0
- package/dist/reconcile-A4I3Z7VX-GQMEN4GC.js.map +1 -0
- package/dist/rsshub-GOJBTNOD-UNNVKBFL.js +18 -0
- package/dist/rsshub-GOJBTNOD-UNNVKBFL.js.map +1 -0
- package/dist/synap-image-install-X36REYQ5-UGO4MAOP.js +17 -0
- package/dist/synap-image-install-X36REYQ5-UGO4MAOP.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../@eve/lifecycle/dist/index.js"],"sourcesContent":["import {\n FetchRunner,\n combineSignals,\n deleteEntityBestEffort,\n ensurePodProvisioningToken,\n extractEntityId,\n getAuthStatus,\n isFetchTransportError,\n isKeyValid,\n migrateLegacyToAgents,\n probeSynapDiscovery,\n provisionAgent,\n provisionAllAgents,\n readEnvFile,\n readEnvVar,\n renewAgentKey,\n resolveProvisioningToken,\n runHubProtocolProbes,\n shortId,\n truncate,\n writeEnvVar\n} from \"./chunk-6JFSP4GT.js\";\n\n// src/index.ts\nimport { execSync, spawn } from \"child_process\";\nimport { existsSync as existsSync2, mkdirSync, readFileSync as readFileSync2, writeFileSync } from \"fs\";\nimport { join as join2 } from \"path\";\nimport { homedir } from \"os\";\nimport { randomBytes } from \"crypto\";\nimport {\n resolveComponent,\n publicComponentUrl,\n entityStateManager as entityStateManager2,\n readAgentKey,\n readEveSecrets as readEveSecrets7,\n readAgentKeyOrLegacy,\n upsertPodProvider,\n describePodProviderResult,\n writeEveSecrets as writeEveSecrets4,\n pickPrimaryProvider,\n wireComponentAi,\n resolveSynapUrl as resolveSynapUrl3,\n resolveSynapUrlOnHost as resolveSynapUrlOnHost2,\n SYNAP_BACKEND_INTERNAL_URL,\n AI_CONSUMERS as AI_CONSUMERS2,\n AI_CONSUMERS_NEEDING_RECREATE,\n pruneOldImagesForRepo,\n ensureSynapLoopbackOverride as ensureSynapLoopbackOverride2,\n connectTraefikToEveNetwork as connectTraefikToEveNetwork2,\n writeHermesConfigYaml,\n generateSynapPlugin,\n ensureOpenWebuiBootstrapSecrets,\n writeOpenwebuiEnv,\n appendOperationalEvent as appendOperationalEvent3,\n configStore\n} from \"@eve/dna\";\nimport {\n installDashboardContainer,\n uninstallDashboardContainer\n} from \"@eve/legs\";\nimport { runSynapCli, reconcileEveEnv, backupPodSecrets, restorePodSecrets } from \"@eve/brain\";\n\n// src/components/openclaw/reconcile.ts\nimport { spawnSync } from \"child_process\";\nvar DEFAULT_CONTAINER = \"eve-arms-openclaw\";\nvar DEFAULT_CONFIG_PATH = \"/home/node/.openclaw/openclaw.json\";\nvar ALWAYS_INCLUDE_ORIGINS = [\n \"http://localhost:18789\",\n \"http://127.0.0.1:18789\"\n];\nasync function reconcileOpenclawConfig(opts = {}) {\n const containerName = opts.containerName ?? DEFAULT_CONTAINER;\n const configPath = opts.configPath ?? DEFAULT_CONFIG_PATH;\n const skipIfMissing = opts.skipIfContainerMissing ?? true;\n if (!isContainerRunning(containerName)) {\n const note = skipIfMissing ? `${containerName} is not running \\u2014 skipping reconciliation` : `${containerName} is not running`;\n return {\n changed: false,\n before: { allowedOrigins: [], authTokenChanged: false },\n after: { allowedOrigins: [] },\n notes: [note]\n };\n }\n const readResult = readContainerJson(containerName, configPath);\n if (readResult.kind === \"error\") {\n return {\n changed: false,\n before: { allowedOrigins: [], authTokenChanged: false },\n after: { allowedOrigins: [] },\n notes: [`could not read ${configPath}: ${readResult.message}`]\n };\n }\n const config = readResult.value;\n const currentOrigins = readAllowedOrigins(config);\n const expectedOrigins = [...ALWAYS_INCLUDE_ORIGINS];\n const notes = [];\n if (opts.domain && opts.domain.trim().length > 0) {\n expectedOrigins.push(buildPublicOrigin(opts.domain.trim()));\n } else {\n notes.push(\"no public domain configured \\u2014 only localhost origins reconciled\");\n }\n const merged = unionInOrder(currentOrigins, expectedOrigins);\n const added = merged.filter((o) => !currentOrigins.includes(o));\n if (added.length === 0) {\n notes.unshift(\"allowedOrigins already in sync\");\n return {\n changed: false,\n before: { allowedOrigins: currentOrigins, authTokenChanged: false },\n after: { allowedOrigins: currentOrigins },\n notes\n };\n }\n const nextConfig = setAllowedOrigins(config, merged);\n const writeResult = writeContainerJson(containerName, configPath, nextConfig);\n if (writeResult.kind === \"error\") {\n return {\n changed: false,\n before: { allowedOrigins: currentOrigins, authTokenChanged: false },\n after: { allowedOrigins: currentOrigins },\n notes: [\n ...notes,\n `could not write ${configPath}: ${writeResult.message}`\n ]\n };\n }\n notes.unshift(\n `re-added ${added.length} entr${added.length === 1 ? \"y\" : \"ies\"} to allowedOrigins: ${added.join(\", \")}`\n );\n return {\n changed: true,\n before: { allowedOrigins: currentOrigins, authTokenChanged: false },\n after: { allowedOrigins: merged },\n notes\n };\n}\nfunction readAllowedOrigins(config) {\n if (!config || typeof config !== \"object\") return [];\n const c = config;\n const gateway = c.gateway;\n if (!gateway || typeof gateway !== \"object\") return [];\n const controlUi = gateway.controlUi;\n if (!controlUi || typeof controlUi !== \"object\") return [];\n const list = controlUi.allowedOrigins;\n if (!Array.isArray(list)) return [];\n return list.filter((v) => typeof v === \"string\");\n}\nfunction setAllowedOrigins(config, origins) {\n const clone = typeof structuredClone === \"function\" ? structuredClone(config) : JSON.parse(JSON.stringify(config ?? {}));\n const obj = clone && typeof clone === \"object\" ? clone : {};\n if (!obj.gateway || typeof obj.gateway !== \"object\") obj.gateway = {};\n const gateway = obj.gateway;\n if (!gateway.controlUi || typeof gateway.controlUi !== \"object\") gateway.controlUi = {};\n const controlUi = gateway.controlUi;\n controlUi.allowedOrigins = [...origins];\n return obj;\n}\nfunction buildPublicOrigin(domain) {\n const host = domain.replace(/^https?:\\/\\//i, \"\").replace(/\\/.*$/, \"\").replace(/:\\d+$/, \"\");\n return `https://openclaw.${host}`;\n}\nfunction unionInOrder(first, second) {\n const seen = /* @__PURE__ */ new Set();\n const out = [];\n for (const v of first) {\n if (!seen.has(v)) {\n seen.add(v);\n out.push(v);\n }\n }\n for (const v of second) {\n if (!seen.has(v)) {\n seen.add(v);\n out.push(v);\n }\n }\n return out;\n}\nfunction isContainerRunning(name) {\n const r = spawnSync(\n \"docker\",\n [\"ps\", \"--filter\", `name=^${name}$`, \"--format\", \"{{.Names}}\"],\n { encoding: \"utf-8\", stdio: [\"ignore\", \"pipe\", \"ignore\"], timeout: 4e3 }\n );\n if (r.status !== 0) return false;\n return (r.stdout ?? \"\").trim() === name;\n}\nfunction readContainerJson(container, path) {\n const r = spawnSync(\n \"docker\",\n [\"exec\", container, \"cat\", path],\n { encoding: \"utf-8\", stdio: [\"ignore\", \"pipe\", \"pipe\"], timeout: 4e3 }\n );\n if (r.status !== 0) {\n const stderr = (r.stderr ?? \"\").toString().trim();\n return { kind: \"error\", message: stderr.length > 0 ? stderr : `cat exited ${r.status}` };\n }\n const text2 = r.stdout ?? \"\";\n if (text2.trim().length === 0) {\n return { kind: \"ok\", value: {} };\n }\n try {\n return { kind: \"ok\", value: JSON.parse(text2) };\n } catch (err) {\n return { kind: \"error\", message: err instanceof Error ? err.message : String(err) };\n }\n}\nfunction writeContainerJson(container, path, value) {\n const json = JSON.stringify(value, null, 2);\n const tmpPath = `${path}.eve-reconcile.tmp`;\n const writeR = spawnSync(\n \"docker\",\n [\"exec\", \"-i\", container, \"sh\", \"-c\", `cat > ${shellEscape(tmpPath)} && chmod 600 ${shellEscape(tmpPath)}`],\n { input: json, encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"pipe\"], timeout: 6e3 }\n );\n if (writeR.status !== 0) {\n return {\n kind: \"error\",\n message: (writeR.stderr ?? \"\").toString().trim() || `cat exited ${writeR.status}`\n };\n }\n const moveR = spawnSync(\n \"docker\",\n [\"exec\", container, \"mv\", tmpPath, path],\n { encoding: \"utf-8\", stdio: [\"ignore\", \"pipe\", \"pipe\"], timeout: 4e3 }\n );\n if (moveR.status !== 0) {\n spawnSync(\"docker\", [\"exec\", container, \"rm\", \"-f\", tmpPath], { stdio: \"ignore\", timeout: 4e3 });\n return {\n kind: \"error\",\n message: (moveR.stderr ?? \"\").toString().trim() || `mv exited ${moveR.status}`\n };\n }\n return { kind: \"ok\" };\n}\nfunction shellEscape(value) {\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n}\n\n// src/builder-workspace.ts\nimport { existsSync, readFileSync } from \"fs\";\nimport { dirname, join } from \"path\";\nimport { fileURLToPath } from \"url\";\nimport { readEveSecrets, writeEveSecrets } from \"@eve/dna\";\nvar DEFAULT_TIMEOUT_MS = 15e3;\nvar AUTH_AGENT_TYPE = \"eve\";\nfunction resolveTemplatePath() {\n const here = dirname(fileURLToPath(import.meta.url));\n const candidates = [\n join(here, \"..\", \"assets\", \"templates\", \"builder-workspace.json\"),\n join(here, \"assets\", \"templates\", \"builder-workspace.json\"),\n \"/app/packages/@eve/lifecycle/assets/templates/builder-workspace.json\"\n ];\n for (const p of candidates) {\n if (existsSync(p)) return p;\n }\n return null;\n}\nfunction loadBundledTemplate() {\n const path = resolveTemplatePath();\n if (!path) {\n throw new Error(\n \"Builder workspace template not found in @eve/lifecycle assets. Run `pnpm --filter @eve/lifecycle sync-builder-template` (or rebuild) to copy it from synap-backend/templates/builder-workspace.json.\"\n );\n }\n let raw;\n try {\n raw = readFileSync(path, \"utf-8\");\n } catch (err) {\n throw new Error(\n `Could not read builder workspace template at ${path}: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n try {\n const parsed = JSON.parse(raw);\n if (!parsed || typeof parsed !== \"object\") {\n throw new Error(\"template root is not a JSON object\");\n }\n return parsed;\n } catch (err) {\n throw new Error(\n `Builder workspace template at ${path} is not valid JSON: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n}\nasync function ensureBuilderWorkspace(opts) {\n const podUrl = opts.podUrl.trim().replace(/\\/+$/, \"\");\n if (!podUrl) {\n throw new Error(\"ensureBuilderWorkspace: podUrl is required\");\n }\n const cwd = opts.deployDir ?? process.env.EVE_HOME ?? process.cwd();\n const fresh = await readEveSecrets(cwd);\n const secrets = fresh ?? opts.secrets;\n const eveKey = secrets?.agents?.[AUTH_AGENT_TYPE]?.hubApiKey?.trim() ?? // Legacy fallback: pre-migration installs only had the single key.\n secrets?.synap?.apiKey?.trim() ?? \"\";\n if (!eveKey) {\n throw new Error(\n `ensureBuilderWorkspace: no eve agent Hub key found in secrets.json. Run \\`eve auth provision\\` against ${podUrl} first.`\n );\n }\n const template = loadBundledTemplate();\n const proposalId = typeof template.proposalId === \"string\" ? template.proposalId : \"(unset)\";\n const runner = opts.runner ?? new FetchRunner();\n const url = `${podUrl}/api/hub/workspaces/from-definition`;\n const headers = {\n Authorization: `Bearer ${eveKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\"\n };\n const body = JSON.stringify(template);\n const res = await runner.httpPost(url, headers, body, {\n timeoutMs: opts.timeoutMs ?? DEFAULT_TIMEOUT_MS\n });\n if (res.status === 0) {\n throw new Error(\n `ensureBuilderWorkspace: cannot reach ${url} (${res.error ?? \"network error\"})`\n );\n }\n if (res.status === 401 || res.status === 403) {\n throw new Error(\n `ensureBuilderWorkspace: pod rejected the eve agent key with ${res.status}. Run \\`eve auth status\\` and \\`eve auth renew --agent eve\\` to recover.`\n );\n }\n if (res.status === 404) {\n throw new Error(\n `ensureBuilderWorkspace: ${url} not available \\u2014 backend version too old. Run \\`eve update synap\\`.`\n );\n }\n if (res.status < 200 || res.status >= 300) {\n throw new Error(\n `ensureBuilderWorkspace: pod returned ${res.status} for proposalId=${proposalId}: ${res.body.slice(0, 200)}`\n );\n }\n let parsed;\n try {\n parsed = JSON.parse(res.body);\n } catch {\n throw new Error(\n `ensureBuilderWorkspace: pod returned non-JSON body (status ${res.status}): ${res.body.slice(0, 160)}`\n );\n }\n if (!parsed || typeof parsed !== \"object\") {\n throw new Error(\n `ensureBuilderWorkspace: pod response was not an object (status ${res.status})`\n );\n }\n const obj = parsed;\n const workspaceId = typeof obj.workspaceId === \"string\" ? obj.workspaceId.trim() : \"\";\n if (!workspaceId) {\n throw new Error(\n `ensureBuilderWorkspace: pod response missing workspaceId (proposalId=${proposalId})`\n );\n }\n const created = obj.created === true;\n try {\n await writeEveSecrets(\n { builder: { workspaceId } },\n cwd\n );\n } catch (err) {\n throw new Error(\n `ensureBuilderWorkspace: pod seeded ${workspaceId} but secrets.json write failed: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n return { workspaceId, created };\n}\n\n// src/materialize.ts\nimport {\n AI_CONSUMERS,\n appendOperationalEvent,\n findPodDeployDir,\n readEveSecrets as readEveSecrets2,\n resolveSynapUrl,\n wireAllInstalledComponents,\n writeHermesEnvFile\n} from \"@eve/dna\";\nimport { refreshTraefikRoutes } from \"@eve/legs\";\nfunction uniqueTargets(targets) {\n return Array.from(new Set(targets));\n}\nasync function record(type, target, data = {}) {\n await appendOperationalEvent({\n type,\n target,\n ok: data.ok,\n summary: data.summary,\n error: data.error,\n details: data.details\n }).catch(() => {\n });\n}\nasync function materializeTargets(secrets, targets, options = {}) {\n const out = [];\n const resolvedSecrets = secrets ?? await readEveSecrets2(options.cwd ?? process.cwd());\n for (const target of uniqueTargets(targets)) {\n await record(\"materialize.started\", target, { summary: `Materializing ${target}` });\n try {\n if (options.dryRun) {\n const result2 = { target, ok: true, changed: false, summary: `Dry run: ${target}` };\n out.push(result2);\n await record(\"materialize.succeeded\", target, result2);\n continue;\n }\n let result;\n switch (target) {\n case \"backend-env\": {\n const deployDir = findPodDeployDir();\n if (!deployDir) {\n result = { target, ok: false, changed: false, summary: \"Synap deploy dir not found\", error: \"deploy-dir-missing\" };\n break;\n }\n const domain = resolvedSecrets?.domain?.primary?.trim();\n const publicUrl = resolveSynapUrl(resolvedSecrets);\n const domainResult = domain ? writeEnvVar(deployDir, \"DOMAIN\", domain) : { changed: false, previous: null };\n const publicUrlResult = publicUrl ? writeEnvVar(deployDir, \"PUBLIC_URL\", publicUrl) : { changed: false, previous: null };\n const hermesApiKey = resolvedSecrets?.builder?.hermes?.apiServerKey;\n const hermesTriggerUrlResult = hermesApiKey ? writeEnvVar(deployDir, \"HERMES_TRIGGER_URL\", \"http://eve-builder-hermes:8642\") : { changed: false, previous: null };\n const hermesTriggerKeyResult = hermesApiKey ? writeEnvVar(deployDir, \"HERMES_TRIGGER_KEY\", hermesApiKey) : { changed: false, previous: null };\n const t3codeUrl = resolvedSecrets?.builder?.t3code?.url;\n const t3codeApiKey = resolvedSecrets?.builder?.t3code?.apiKey;\n const t3codeUrlResult = t3codeUrl ? writeEnvVar(deployDir, \"T3CODE_URL\", t3codeUrl) : { changed: false, previous: null };\n const t3codeKeyResult = t3codeApiKey ? writeEnvVar(deployDir, \"T3CODE_API_KEY\", t3codeApiKey) : { changed: false, previous: null };\n result = {\n target,\n ok: true,\n changed: domainResult.changed || publicUrlResult.changed || hermesTriggerUrlResult.changed || hermesTriggerKeyResult.changed || t3codeUrlResult.changed || t3codeKeyResult.changed,\n summary: \"Backend env synchronized\",\n details: {\n deployDir,\n domainChanged: domainResult.changed,\n publicUrlChanged: publicUrlResult.changed,\n hermesTriggerChanged: hermesTriggerUrlResult.changed,\n t3codeChanged: t3codeUrlResult.changed\n }\n };\n break;\n }\n case \"traefik-routes\": {\n const refresh = await refreshTraefikRoutes(options.cwd);\n const ok2 = refresh.refreshed || refresh.reason === \"no domain configured\";\n result = {\n target,\n ok: ok2,\n changed: refresh.refreshed,\n summary: refresh.refreshed ? `Traefik routes refreshed for ${refresh.domain}` : refresh.reason ?? \"Traefik routes unchanged\",\n error: ok2 ? void 0 : refresh.reason,\n details: { domain: refresh.domain }\n };\n break;\n }\n case \"hermes-env\": {\n const path = await writeHermesEnvFile(options.cwd ?? process.cwd());\n result = { target, ok: true, changed: true, summary: \"Hermes env file written\", details: { path } };\n break;\n }\n case \"openclaw-config\": {\n const results = await wireAllInstalledComponents(resolvedSecrets, [\"openclaw\"]);\n const failed = results.filter((r) => r.outcome === \"failed\");\n result = {\n target,\n ok: failed.length === 0,\n changed: true,\n summary: failed.length === 0 ? \"OpenClaw config wired\" : failed.map((r) => r.summary).join(\"; \"),\n error: failed.length === 0 ? void 0 : \"openclaw-config-failed\",\n details: { results }\n };\n break;\n }\n case \"openwebui-config\": {\n const components = [\"openwebui\"];\n const results = await wireAllInstalledComponents(resolvedSecrets, components);\n const failed = results.filter((r) => r.outcome === \"failed\");\n result = {\n target,\n ok: failed.length === 0,\n changed: true,\n summary: failed.length === 0 ? \"Open WebUI config wired\" : failed.map((r) => r.summary).join(\"; \"),\n error: failed.length === 0 ? void 0 : \"openwebui-config-failed\",\n details: { results }\n };\n break;\n }\n case \"ai-wiring\": {\n const components = options.components ?? Array.from(AI_CONSUMERS);\n const results = await wireAllInstalledComponents(resolvedSecrets, components);\n const failed = results.filter((r) => r.outcome === \"failed\");\n result = {\n target,\n ok: failed.length === 0,\n changed: true,\n summary: failed.length === 0 ? \"AI wiring applied\" : failed.map((r) => r.summary).join(\"; \"),\n error: failed.length === 0 ? void 0 : \"ai-wiring-failed\",\n details: { results }\n };\n break;\n }\n }\n out.push(result);\n await record(result.ok ? \"materialize.succeeded\" : \"materialize.failed\", target, result);\n } catch (error) {\n const result = {\n target,\n ok: false,\n changed: false,\n summary: `${target} failed`,\n error: error instanceof Error ? error.message : String(error)\n };\n out.push(result);\n await record(\"materialize.failed\", target, result);\n }\n }\n return out;\n}\n\n// src/doctor.ts\nimport { execFile } from \"child_process\";\nimport { promisify } from \"util\";\nimport {\n COMPONENTS,\n appendOperationalEvent as appendOperationalEvent2,\n entityStateManager,\n readEveSecrets as readEveSecrets3,\n runStateCoherenceChecks\n} from \"@eve/dna\";\nimport { verifyComponent } from \"@eve/legs\";\nvar execFileAsync = promisify(execFile);\nvar DOCKER_TIMEOUT_MS = 4e3;\nasync function dockerOk(args) {\n try {\n await execFileAsync(\"docker\", args, { timeout: DOCKER_TIMEOUT_MS });\n return true;\n } catch {\n return false;\n }\n}\nasync function listContainers() {\n const parse = (out) => {\n const map = /* @__PURE__ */ new Map();\n for (const line of out.split(\"\\n\").filter(Boolean)) {\n const [name, ...rest] = line.split(\"\t\");\n if (name) map.set(name.trim(), rest.join(\" \").trim());\n }\n return map;\n };\n try {\n const [running, all] = await Promise.all([\n execFileAsync(\"docker\", [\"ps\", \"--format\", \"{{.Names}}\t{{.Status}}\"], { timeout: DOCKER_TIMEOUT_MS }),\n execFileAsync(\"docker\", [\"ps\", \"-a\", \"--format\", \"{{.Names}}\t{{.Status}}\"], { timeout: DOCKER_TIMEOUT_MS })\n ]);\n return { running: parse(running.stdout), all: parse(all.stdout) };\n } catch {\n return { running: /* @__PURE__ */ new Map(), all: /* @__PURE__ */ new Map() };\n }\n}\nasync function runDoctorChecks() {\n const checks = [];\n const [dockerReady, composeReady, networkPresent] = await Promise.all([\n dockerOk([\"version\"]),\n dockerOk([\"compose\", \"version\"]),\n dockerOk([\"network\", \"inspect\", \"eve-network\"])\n ]);\n checks.push({\n group: \"platform\",\n name: \"Docker daemon\",\n status: dockerReady ? \"pass\" : \"fail\",\n message: dockerReady ? \"Docker is running\" : \"Docker daemon is not reachable\",\n fix: dockerReady ? void 0 : \"Start Docker Desktop or system Docker\"\n });\n checks.push({\n group: \"platform\",\n name: \"Docker Compose\",\n status: composeReady ? \"pass\" : \"fail\",\n message: composeReady ? \"Compose plugin available\" : \"Compose plugin not installed\"\n });\n checks.push({\n group: \"network\",\n name: \"eve-network\",\n status: networkPresent ? \"pass\" : \"warn\",\n message: networkPresent ? \"Shared bridge network exists\" : \"eve-network is missing\",\n repair: networkPresent ? void 0 : { kind: \"create-eve-network\", label: \"Create network\" }\n });\n const [installed, containers, secrets] = await Promise.all([\n entityStateManager.getInstalledComponents().catch(() => []),\n listContainers(),\n readEveSecrets3().catch(() => null)\n ]);\n for (const component of COMPONENTS.filter((c) => installed.includes(c.id) && c.service)) {\n const containerName = component.service.containerName;\n if (containers.running.has(containerName)) {\n checks.push({\n group: \"containers\",\n name: component.label,\n status: \"pass\",\n message: `Running - ${containers.running.get(containerName)}`,\n componentId: component.id,\n integrationId: component.doctor?.integrationId\n });\n } else if (containers.all.has(containerName)) {\n checks.push({\n group: \"containers\",\n name: component.label,\n status: component.doctor?.critical ? \"fail\" : \"warn\",\n message: `Stopped - ${containers.all.get(containerName)}`,\n fix: `Start ${component.label}`,\n componentId: component.id,\n integrationId: component.doctor?.integrationId,\n repair: { kind: \"start-component\", label: \"Start\" }\n });\n } else {\n checks.push({\n group: \"containers\",\n name: component.label,\n status: component.doctor?.critical ? \"fail\" : \"warn\",\n message: \"Container missing\",\n fix: `Install ${component.id}`,\n componentId: component.id,\n integrationId: component.doctor?.integrationId\n });\n }\n if (containers.running.has(containerName)) {\n const verification = await verifyComponent(component.id, { quick: true }).catch((error) => ({\n ok: false,\n summary: error instanceof Error ? error.message : String(error)\n }));\n checks.push({\n group: \"network\",\n name: `${component.label} reachability`,\n status: verification.ok ? \"pass\" : \"warn\",\n message: verification.summary,\n componentId: component.id,\n integrationId: component.doctor?.integrationId\n });\n }\n }\n checks.push(...await runStateCoherenceChecks(secrets));\n for (const check of checks) {\n if (check.status === \"fail\" || check.status === \"warn\") {\n await appendOperationalEvent2({\n type: \"doctor.issue.detected\",\n target: check.name,\n componentId: check.componentId,\n ok: false,\n summary: check.message,\n details: { group: check.group, status: check.status, fix: check.fix }\n }).catch(() => {\n });\n }\n }\n return checks;\n}\n\n// src/index.ts\nimport { COMPONENTS as COMPONENTS4, resolveComponent as resolveComponent2 } from \"@eve/dna\";\n\n// src/preflight.ts\nimport {\n readEveSecrets as readEveSecrets5,\n writeEveSecrets as writeEveSecrets3,\n resolveSynapUrl as resolveSynapUrl2,\n resolveSynapUrlOnHost,\n resetSynapLoopbackProbeCache,\n isSynapLoopbackReachable,\n ensureSynapLoopbackOverride,\n connectTraefikToEveNetwork,\n discoverAndBackfillPodConfig,\n findPodDeployDir as findPodDeployDir2,\n restartBackendContainer\n} from \"@eve/dna\";\n\n// src/setup-profile-migration.ts\nimport {\n readEveSecrets as readEveSecrets4,\n readSetupProfile,\n writeEveSecrets as writeEveSecrets2\n} from \"@eve/dna\";\nasync function migrateSetupProfileToSecrets(cwd) {\n const [secrets, saved] = await Promise.all([\n readEveSecrets4(cwd).catch(() => null),\n readSetupProfile(cwd).catch(() => null)\n ]);\n if (!saved) return { migrated: [] };\n const migrated = [];\n const patch = {};\n const savedDomain = saved.network?.synapHost?.trim() || saved.domainHint?.trim() || void 0;\n if (savedDomain && savedDomain !== \"localhost\" && !secrets?.domain?.primary?.trim()) {\n patch.domain = { ...patch.domain, primary: savedDomain };\n migrated.push(\"domain.primary\");\n }\n const savedEmail = saved.synapInstall?.tlsEmail?.trim();\n if (savedEmail && !secrets?.domain?.email?.trim()) {\n patch.domain = { ...patch.domain, email: savedEmail };\n migrated.push(\"domain.email\");\n }\n if (migrated.length === 0) return { migrated: [] };\n await writeEveSecrets2(patch, cwd);\n return { migrated };\n}\n\n// src/preflight.ts\nvar PREFLIGHT_PLACEHOLDER_DOMAINS = /* @__PURE__ */ new Set([\n \"localhost\",\n \"127.0.0.1\",\n \"::1\",\n \"example.com\",\n \"yourdomain.com\",\n \"mydomain.com\",\n \"your-domain.com\"\n]);\nfunction isPreflightPlaceholderDomain(d) {\n if (!d) return false;\n const lower = d.toLowerCase();\n return PREFLIGHT_PLACEHOLDER_DOMAINS.has(lower) || lower.startsWith(\"127.\") || lower.startsWith(\"192.168.\") || lower.startsWith(\"10.\") || !lower.includes(\".\");\n}\nasync function waitForLoopback(maxMs = 8e3, intervalMs = 500) {\n const deadline = Date.now() + maxMs;\n while (Date.now() < deadline) {\n resetSynapLoopbackProbeCache();\n if (await isSynapLoopbackReachable()) return true;\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n resetSynapLoopbackProbeCache();\n return await isSynapLoopbackReachable();\n}\nasync function runBackendPreflight(opts = {}) {\n const cwd = opts.cwd ?? process.cwd();\n const synapBackendDir = opts.synapBackendDir ?? findPodDeployDir2() ?? \"/opt/synap-backend\";\n const notes = [];\n let configured = false;\n try {\n await migrateSetupProfileToSecrets(cwd);\n } catch {\n }\n let secrets = await readEveSecrets5(cwd);\n if (isPreflightPlaceholderDomain(secrets?.domain?.primary)) {\n secrets = await writeEveSecrets3({ domain: { primary: void 0 } }, cwd);\n notes.push(\"Cleared placeholder domain from secrets (was set to a default value \\u2014 re-run `eve domain set` to configure)\");\n configured = true;\n }\n let synapUrl = await resolveSynapUrlOnHost(secrets);\n const isLoopback = synapUrl ? synapUrl.includes(\"127.0.0.1\") || synapUrl.includes(\"localhost\") : false;\n if (synapUrl && isLoopback) {\n const tokenResult2 = await ensurePodProvisioningToken();\n const provisioningToken2 = tokenResult2.token;\n if (!provisioningToken2) {\n throw new Error(\n \"Backend reachable but PROVISIONING_TOKEN is missing. Set PROVISIONING_TOKEN in /opt/synap-backend/.env and restart the backend.\"\n );\n }\n if (tokenResult2.source === \"generated\") {\n notes.push(`Generated PROVISIONING_TOKEN \\u2192 ${tokenResult2.writtenTo ?? synapBackendDir}/.env`);\n configured = true;\n }\n return { synapUrl, provisioningToken: provisioningToken2, configured, notes };\n }\n const discovered = await discoverAndBackfillPodConfig(cwd);\n if (discovered.backfilled) {\n secrets = await readEveSecrets5(cwd);\n configured = true;\n notes.push(\n `Auto-configured pod: domain=${discovered.domain ?? \"(unchanged)\"}` + (discovered.synapUrl ? `, url=${discovered.synapUrl}` : \"\") + (discovered.sources.length > 0 ? ` (from ${discovered.sources.join(\", \")})` : \"\")\n );\n }\n try {\n const overrideResult = ensureSynapLoopbackOverride(synapBackendDir);\n if (overrideResult.outcome === \"wrote\") {\n notes.push(`Wrote compose override (loopback + eve-network) \\u2192 ${overrideResult.path}`);\n configured = true;\n const restarted = restartBackendContainer(synapBackendDir);\n notes.push(restarted ? \"Restarted backend to apply compose override\" : \"Could not restart backend automatically \\u2014 run: docker compose up -d backend\");\n }\n } catch {\n notes.push(\"Could not write compose override (non-fatal, will use public URL)\");\n }\n const traefik = connectTraefikToEveNetwork();\n if (traefik.connected && traefik.containerName && !traefik.alreadyConnected) {\n notes.push(`Connected ${traefik.containerName} to eve-network`);\n configured = true;\n }\n const loopbackReady = await waitForLoopback(8e3);\n resetSynapLoopbackProbeCache();\n secrets = await readEveSecrets5(cwd);\n synapUrl = await resolveSynapUrlOnHost(secrets);\n if (!synapUrl) {\n synapUrl = discovered.synapUrl ?? resolveSynapUrl2(secrets);\n }\n if (!synapUrl) {\n throw new Error(\n \"Could not resolve synap-backend URL.\\n \\u2022 If synap-backend is installed, check that it's running: docker ps\\n \\u2022 Set DOMAIN or PUBLIC_URL in /opt/synap-backend/.env\\n \\u2022 Or run `eve setup` to configure this server from scratch\"\n );\n }\n let tokenResult;\n try {\n tokenResult = await ensurePodProvisioningToken();\n } catch (err) {\n throw new Error(\n `Cannot resolve PROVISIONING_TOKEN: ${err instanceof Error ? err.message : String(err)}\n Set PROVISIONING_TOKEN in /opt/synap-backend/.env`\n );\n }\n const provisioningToken = tokenResult.token;\n if (!provisioningToken) {\n throw new Error(\n \"PROVISIONING_TOKEN is empty after all discovery attempts.\\n Set PROVISIONING_TOKEN in /opt/synap-backend/.env and run `eve auth provision`\"\n );\n }\n if (tokenResult.source === \"generated\") {\n notes.push(`Generated PROVISIONING_TOKEN \\u2192 ${tokenResult.writtenTo ?? synapBackendDir}/.env`);\n configured = true;\n }\n if (!loopbackReady && synapUrl.includes(\"127.0.0.1\")) {\n notes.push(\"Loopback not reachable yet \\u2014 backend may still be starting (will retry on next command)\");\n }\n return { synapUrl, provisioningToken, configured, notes };\n}\n\n// src/install-config.ts\nimport {\n readEveSecrets as readEveSecrets6,\n discoverAndBackfillPodConfig as discoverAndBackfillPodConfig2\n} from \"@eve/dna\";\nimport {\n readSetupProfile as readSetupProfile2\n} from \"@eve/dna\";\nvar InstallConfigError = class extends Error {\n constructor(missing) {\n super(\n `Install configuration incomplete:\n` + missing.map((m) => ` \\u2022 ${m.field} \\u2014 ${m.reason}`).join(\"\\n\") + `\n\nRe-run with the missing flags or drop --yes/--json to be prompted.`\n );\n this.missing = missing;\n this.name = \"InstallConfigError\";\n }\n missing;\n};\nvar DEFAULT_IO = {\n readSecrets: (cwd) => readEveSecrets6(cwd).catch(() => null),\n readSavedProfile: (cwd) => readSetupProfile2(cwd).catch(() => null),\n discover: async (cwd) => {\n const r = await discoverAndBackfillPodConfig2(cwd, { backfill: false }).catch(\n () => ({ domain: void 0 })\n );\n return { domain: r.domain };\n },\n env: process.env\n};\nvar ALWAYS_ON_COMPONENTS = [\"traefik\"];\nvar FQDN_RE = /^[a-z0-9]([a-z0-9.-]*[a-z0-9])?$/i;\nvar EMAIL_RE = /^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/;\nfunction isValidDomain(s) {\n if (!s || !s.trim()) return false;\n const v = s.trim();\n if (v === \"localhost\") return true;\n return v.includes(\".\") && FQDN_RE.test(v);\n}\nfunction isValidEmail(s) {\n return !!s && EMAIL_RE.test(s.trim());\n}\nfunction normalizeBareDomain(input) {\n if (!input) return input;\n const trimmed = input.trim();\n if (!trimmed || trimmed === \"localhost\") return trimmed;\n if (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(trimmed)) return trimmed;\n return trimmed.startsWith(\"pod.\") ? trimmed.slice(4) : trimmed;\n}\nasync function gatherInstallConfig(opts) {\n const io = { ...DEFAULT_IO, ...opts.io ?? {} };\n const prompts = opts.prompts ?? {};\n const seed = opts.seed ?? {};\n const flags = opts.flags;\n const interactive = opts.interactive;\n const secrets = await io.readSecrets(opts.cwd);\n const saved = opts.loadSavedProfile ? await io.readSavedProfile(opts.cwd) : null;\n const discovered = await io.discover(opts.cwd);\n const source = {};\n const missing = [];\n let components;\n if (flags.components && flags.components.length > 0) {\n components = dedupe([...flags.components, ...ALWAYS_ON_COMPONENTS]);\n source.components = \"flag\";\n } else if (seed.components && seed.components.length > 0) {\n components = dedupe([...seed.components, ...ALWAYS_ON_COMPONENTS]);\n source.components = \"saved-profile\";\n } else if (interactive && prompts.componentSet) {\n const picked = await prompts.componentSet();\n if (!picked || Object.keys(picked).length === 0) {\n throw new InstallConfigError([{ field: \"components\", reason: \"selection canceled\" }]);\n }\n components = dedupe([\n ...Object.keys(picked).filter((k) => picked[k]),\n ...ALWAYS_ON_COMPONENTS\n ]);\n source.components = \"prompt\";\n } else {\n components = [\"traefik\", \"synap\"];\n source.components = \"default\";\n }\n let domain;\n let domainSource;\n const flagDomain = normalizeBareDomain(flags.domain);\n const secretsDomain = normalizeBareDomain(secrets?.domain?.primary);\n const discoveredDomain = normalizeBareDomain(discovered.domain);\n const savedSynapHost = normalizeBareDomain(saved?.network?.synapHost);\n const savedHint = normalizeBareDomain(saved?.domainHint);\n if (flagDomain && flagDomain !== \"localhost\") {\n domain = flagDomain;\n domainSource = \"flag\";\n } else if (flagDomain === \"localhost\") {\n domain = \"localhost\";\n domainSource = \"flag\";\n } else if (secretsDomain) {\n domain = secretsDomain;\n domainSource = \"secrets\";\n } else if (discoveredDomain && discoveredDomain !== \"localhost\") {\n domain = discoveredDomain;\n domainSource = \"discovered\";\n } else if (savedSynapHost && savedSynapHost !== \"localhost\") {\n domain = savedSynapHost;\n domainSource = \"saved-profile\";\n } else if (savedHint && savedHint !== \"localhost\") {\n domain = savedHint;\n domainSource = \"saved-profile\";\n }\n let exposure;\n if (interactive && prompts.exposure && !flags.domain) {\n const initial = domain && domain !== \"localhost\" ? \"public\" : \"local\";\n const picked = await prompts.exposure(initial);\n if (!picked) throw new InstallConfigError([{ field: \"exposure\", reason: \"canceled\" }]);\n exposure = picked;\n if (exposure === \"local\") {\n domain = \"localhost\";\n domainSource = \"prompt\";\n } else {\n if (prompts.domain) {\n const initialDomain = domain && domain !== \"localhost\" ? domain : \"\";\n const d = await prompts.domain(initialDomain);\n if (!d || !isValidDomain(d) || d === \"localhost\") {\n throw new InstallConfigError([{ field: \"domain\", reason: \"public exposure requires FQDN\" }]);\n }\n const normalised = normalizeBareDomain(d) ?? d.trim();\n if (normalised !== domain) {\n domain = normalised;\n domainSource = \"prompt\";\n }\n } else {\n throw new InstallConfigError([{ field: \"domain\", reason: \"public exposure but no domain prompt available\" }]);\n }\n }\n } else if (!domain) {\n domain = \"localhost\";\n domainSource = \"default\";\n exposure = \"local\";\n } else {\n exposure = domain === \"localhost\" ? \"local\" : \"public\";\n }\n const resolvedDomain = domain;\n source.domain = domainSource ?? \"default\";\n source.exposure = source.domain;\n let ssl;\n let sslSource;\n if (typeof flags.ssl === \"boolean\") {\n ssl = flags.ssl;\n sslSource = \"flag\";\n } else if (interactive && exposure === \"public\" && prompts.ssl) {\n const initialSsl = typeof secrets?.domain?.ssl === \"boolean\" ? secrets.domain.ssl : true;\n const hasEmail = isValidEmail(\n flags.email || io.env.LETSENCRYPT_EMAIL || io.env.SYNAP_LETSENCRYPT_EMAIL || secrets?.domain?.email\n );\n const picked = await prompts.ssl(initialSsl, hasEmail);\n if (typeof picked !== \"boolean\") {\n throw new InstallConfigError([{ field: \"ssl\", reason: \"canceled\" }]);\n }\n ssl = picked;\n sslSource = \"prompt\";\n } else if (typeof secrets?.domain?.ssl === \"boolean\" && exposure === \"public\") {\n ssl = secrets.domain.ssl;\n sslSource = \"secrets\";\n } else {\n ssl = exposure === \"public\";\n sslSource = \"default\";\n }\n source.ssl = sslSource;\n let email;\n let emailSource;\n const emailFromFlag = flags.email?.trim();\n const emailFromEnv = io.env.LETSENCRYPT_EMAIL?.trim() || io.env.SYNAP_LETSENCRYPT_EMAIL?.trim();\n const emailFromSecrets = secrets?.domain?.email?.trim();\n const emailFromSaved = saved?.synapInstall?.tlsEmail?.trim();\n if (emailFromFlag) {\n email = emailFromFlag;\n emailSource = \"flag\";\n } else if (emailFromEnv) {\n email = emailFromEnv;\n emailSource = \"env\";\n } else if (emailFromSecrets) {\n email = emailFromSecrets;\n emailSource = \"secrets\";\n } else if (emailFromSaved) {\n email = emailFromSaved;\n emailSource = \"saved-profile\";\n }\n if (exposure === \"public\" && resolvedDomain !== \"localhost\" && !email) {\n if (ssl) {\n if (interactive && prompts.email) {\n const picked = await prompts.email(void 0);\n if (!picked || !isValidEmail(picked)) {\n missing.push({ field: \"email\", reason: \"Let's Encrypt requires a valid email\" });\n } else {\n email = picked.trim();\n emailSource = \"prompt\";\n }\n } else {\n missing.push({\n field: \"email\",\n reason: \"Let's Encrypt requires --email (or LETSENCRYPT_EMAIL, or `eve domain set --email`)\"\n });\n }\n } else {\n email = `noreply@${resolvedDomain}`;\n emailSource = \"default\";\n }\n }\n if (email) source.email = emailSource;\n let adminBootstrapMode = \"token\";\n let abmSource = \"default\";\n if (flags.adminBootstrapMode) {\n adminBootstrapMode = flags.adminBootstrapMode;\n abmSource = \"flag\";\n } else if (saved?.synapInstall?.adminBootstrapMode) {\n adminBootstrapMode = saved.synapInstall.adminBootstrapMode;\n abmSource = \"saved-profile\";\n } else if (interactive && prompts.adminBootstrapMode) {\n const picked = await prompts.adminBootstrapMode(\"token\");\n if (!picked) throw new InstallConfigError([{ field: \"adminBootstrapMode\", reason: \"canceled\" }]);\n adminBootstrapMode = picked;\n abmSource = \"prompt\";\n }\n source.adminBootstrapMode = abmSource;\n let adminEmail = flags.adminEmail?.trim() || io.env.ADMIN_EMAIL?.trim() || saved?.synapInstall?.adminEmail?.trim() || email;\n let adminEmailSource = flags.adminEmail?.trim() ? \"flag\" : io.env.ADMIN_EMAIL?.trim() ? \"env\" : saved?.synapInstall?.adminEmail?.trim() ? \"saved-profile\" : email ? emailSource : void 0;\n let adminPassword = flags.adminPassword?.trim() || io.env.ADMIN_PASSWORD?.trim();\n let adminPasswordSource = flags.adminPassword?.trim() ? \"flag\" : io.env.ADMIN_PASSWORD?.trim() ? \"env\" : void 0;\n if (adminBootstrapMode === \"preseed\") {\n if (!adminEmail) {\n if (interactive && prompts.adminEmail) {\n const picked = await prompts.adminEmail(void 0);\n if (!picked || !isValidEmail(picked)) {\n missing.push({ field: \"adminEmail\", reason: \"preseed admin requires a valid email\" });\n } else {\n adminEmail = picked.trim();\n adminEmailSource = \"prompt\";\n }\n } else {\n missing.push({ field: \"adminEmail\", reason: \"preseed admin bootstrap requires --admin-email\" });\n }\n }\n if (!adminPassword) {\n if (interactive && prompts.adminPassword) {\n const picked = await prompts.adminPassword(void 0);\n if (!picked) {\n missing.push({ field: \"adminPassword\", reason: \"preseed admin requires a password\" });\n } else {\n adminPassword = picked.trim();\n adminPasswordSource = \"prompt\";\n }\n } else {\n missing.push({\n field: \"adminPassword\",\n reason: \"preseed admin bootstrap requires --admin-password\"\n });\n }\n }\n }\n if (adminEmail) source.adminEmail = adminEmailSource;\n if (adminPassword) source.adminPassword = adminPasswordSource;\n let installMode = \"from_image\";\n let imSource = \"default\";\n if (flags.fromImage && flags.fromSource) {\n missing.push({ field: \"installMode\", reason: \"--from-image and --from-source are mutually exclusive\" });\n } else if (flags.fromImage) {\n installMode = \"from_image\";\n imSource = \"flag\";\n } else if (flags.fromSource) {\n installMode = \"from_source\";\n imSource = \"flag\";\n } else if (flags.installMode && flags.installMode !== \"auto\") {\n installMode = flags.installMode;\n imSource = \"flag\";\n } else if (saved?.synapInstall?.mode && saved.synapInstall.mode !== \"auto\") {\n installMode = saved.synapInstall.mode;\n imSource = \"saved-profile\";\n } else if (interactive && prompts.installMode && components.includes(\"synap\")) {\n const picked = await prompts.installMode(\"from_image\");\n if (picked && picked !== \"auto\") {\n installMode = picked;\n imSource = \"prompt\";\n }\n }\n source.installMode = imSource;\n let withOpenclaw = Boolean(\n flags.withOpenclaw ?? seed.withOpenclaw ?? components.includes(\"openclaw\")\n );\n let woSource = typeof flags.withOpenclaw === \"boolean\" ? \"flag\" : typeof seed.withOpenclaw === \"boolean\" ? \"saved-profile\" : \"default\";\n if (interactive && prompts.withOpenclaw && components.includes(\"synap\")) {\n const picked = await prompts.withOpenclaw(withOpenclaw, adminBootstrapMode);\n if (typeof picked === \"boolean\") {\n withOpenclaw = picked;\n woSource = \"prompt\";\n }\n }\n source.withOpenclaw = woSource;\n let withRsshub = Boolean(\n flags.withRsshub ?? seed.withRsshub ?? components.includes(\"rsshub\")\n );\n let wrSource = typeof flags.withRsshub === \"boolean\" ? \"flag\" : typeof seed.withRsshub === \"boolean\" ? \"saved-profile\" : \"default\";\n if (interactive && prompts.withRsshub && components.includes(\"synap\")) {\n const picked = await prompts.withRsshub(withRsshub);\n if (typeof picked === \"boolean\") {\n withRsshub = picked;\n wrSource = \"prompt\";\n }\n }\n source.withRsshub = wrSource;\n const ai = {\n mode: flags.aiMode ?? seed.ai?.mode ?? \"hybrid\",\n defaultProvider: flags.aiProvider ?? seed.ai?.defaultProvider,\n fallbackProvider: flags.fallbackProvider ?? seed.ai?.fallbackProvider\n };\n source.ai = flags.aiMode || flags.aiProvider || flags.fallbackProvider ? \"flag\" : seed.ai ? \"saved-profile\" : \"default\";\n let tunnel;\n let tunnelSource = \"default\";\n let provider = flags.tunnel ?? seed.tunnel?.provider;\n let tDomain = flags.tunnelDomain ?? seed.tunnel?.domain;\n let hostStrategy = flags.tunnelHostStrategy ?? seed.tunnel?.hostStrategy;\n if (!provider && interactive && prompts.tunnel) {\n const picked = await prompts.tunnel(void 0);\n if (picked && picked !== \"none\") {\n provider = picked;\n tunnelSource = \"prompt\";\n }\n } else if (provider) {\n tunnelSource = flags.tunnel ? \"flag\" : \"saved-profile\";\n }\n if (provider) {\n if (!tDomain) {\n if (interactive && prompts.tunnelHostStrategy && resolvedDomain !== \"localhost\") {\n const strat = await prompts.tunnelHostStrategy(resolvedDomain);\n hostStrategy = strat;\n if (strat === \"same_as_synap\") tDomain = resolvedDomain;\n } else if (resolvedDomain !== \"localhost\") {\n hostStrategy = hostStrategy ?? \"same_as_synap\";\n tDomain = tDomain ?? resolvedDomain;\n }\n if (!tDomain && interactive && prompts.tunnelDomain) {\n const d = await prompts.tunnelDomain(void 0);\n if (d && isValidDomain(d) && d !== \"localhost\") {\n tDomain = d.trim();\n hostStrategy = \"custom\";\n }\n }\n }\n tunnel = { provider, domain: tDomain, hostStrategy };\n }\n if (tunnel) source.tunnel = tunnelSource;\n if (missing.length > 0) {\n throw new InstallConfigError(missing);\n }\n return {\n components,\n exposure,\n domain: resolvedDomain,\n ssl,\n email,\n adminBootstrapMode,\n adminEmail,\n adminPassword,\n installMode,\n withOpenclaw,\n withRsshub,\n ai,\n tunnel,\n source\n };\n}\nfunction dedupe(xs) {\n return Array.from(new Set(xs));\n}\n\n// src/install-config-prompts.ts\nimport {\n confirm,\n isCancel,\n multiselect,\n select,\n text\n} from \"@clack/prompts\";\nimport { COMPONENTS as COMPONENTS2 } from \"@eve/dna\";\nvar PRESETS = [\n { value: \"personal\", label: \"\\u{1F9E0} Personal AI pod\", hint: \"Synap + Traefik\", ids: [\"traefik\", \"synap\"] },\n { value: \"full\", label: \"\\u{1F680} Full stack\", hint: \"Synap + Ollama + OpenClaw + Traefik\", ids: [\"traefik\", \"synap\", \"ollama\", \"openclaw\"] },\n { value: \"chat\", label: \"\\u{1F4AC} AI chat server\", hint: \"Synap + Open WebUI + Traefik\", ids: [\"traefik\", \"synap\", \"openwebui\"] },\n { value: \"builder\", label: \"\\u{1F3D7}\\uFE0F Builder server\", hint: \"Synap + Hermes + OpenClaw + Traefik\", ids: [\"traefik\", \"synap\", \"openclaw\", \"hermes\"] },\n { value: \"minimal\", label: \"\\u26A1 Minimal\", hint: \"Traefik only \\u2014 add later\", ids: [\"traefik\"] },\n { value: \"custom\", label: \"\\u{1F527} Custom\", hint: \"Pick each component\", ids: [] }\n];\nfunction ok(v) {\n return isCancel(v) ? void 0 : v;\n}\nvar defaultPrompts = {\n async componentSet() {\n const preset = await select({\n message: \"What do you want to install?\",\n options: PRESETS,\n initialValue: \"personal\"\n });\n if (isCancel(preset)) return void 0;\n const selectable = COMPONENTS2.filter((c) => !c.alwaysInstall);\n const presetIds = preset === \"custom\" ? selectable.filter((c) => c.category !== \"add-on\").map((c) => c.id) : PRESETS.find((p) => p.value === preset)?.ids.filter((id) => id !== \"traefik\") ?? [];\n if (preset === \"minimal\") {\n return { traefik: true };\n }\n const finalIds = await multiselect({\n message: preset === \"custom\" ? \"Select components\" : \"Adjust selection (space to toggle)\",\n options: selectable.map((c) => ({\n value: c.id,\n label: `${c.emoji} ${c.label}`,\n hint: c.description.split(\".\")[0]\n })),\n initialValues: presetIds,\n required: false\n });\n if (isCancel(finalIds)) return void 0;\n const result = { traefik: true };\n for (const id of finalIds) result[id] = true;\n for (const id of Object.keys(result)) {\n const comp = COMPONENTS2.find((c) => c.id === id);\n for (const req of comp?.requires ?? []) result[req] = true;\n }\n return result;\n },\n async exposure(initial) {\n return ok(\n await select({\n message: \"How will this Data Pod be reached?\",\n options: [\n { value: \"local\", label: \"Local only (this machine / private network)\", hint: \"Sets domain to localhost\" },\n { value: \"public\", label: \"Public domain (internet-accessible)\", hint: \"Caddy/Traefik handle external traffic\" }\n ],\n initialValue: initial\n })\n );\n },\n async domain(initial) {\n return ok(\n await text({\n message: \"Public hostname for the pod (e.g. pod.example.com)\",\n initialValue: initial,\n placeholder: \"pod.example.com\",\n validate: (v) => isValidDomain(v) && v !== \"localhost\" ? void 0 : \"Use a public FQDN (not localhost)\"\n })\n );\n },\n async ssl(initial, hasEmail) {\n const message = hasEmail ? \"Manage TLS via Let's Encrypt? (recommended \\u2014 disable if you sit behind an HTTPS-terminating proxy)\" : \"Manage TLS via Let's Encrypt? (you'll be asked for an email; disable if behind an HTTPS proxy)\";\n const v = await confirm({ message, initialValue: initial });\n return ok(v);\n },\n async email(initial) {\n return ok(\n await text({\n message: \"Let's Encrypt contact email (used for cert renewal alerts)\",\n initialValue: initial ?? \"\",\n placeholder: \"you@example.com\",\n validate: (v) => isValidEmail(v) ? void 0 : \"Enter a valid email\"\n })\n );\n },\n async adminBootstrapMode(initial) {\n return ok(\n await select({\n message: \"Admin bootstrap mode\",\n options: [\n { value: \"token\", label: \"Token (recommended)\", hint: \"One-time token; create first admin in the UI\" },\n { value: \"preseed\", label: \"Preseed admin now\", hint: \"Create admin during install \\u2014 needs email + password\" }\n ],\n initialValue: initial\n })\n );\n },\n async adminEmail(initial) {\n return ok(\n await text({\n message: \"Admin email for the first account\",\n initialValue: initial ?? \"\",\n placeholder: \"admin@example.com\",\n validate: (v) => isValidEmail(v) ? void 0 : \"Enter a valid email\"\n })\n );\n },\n async adminPassword(initial) {\n return ok(\n await text({\n message: \"Admin password (preseed bootstrap)\",\n initialValue: initial ?? \"\",\n placeholder: \"Choose a strong password\",\n validate: (v) => v && v.length >= 8 ? void 0 : \"Use at least 8 characters\"\n })\n );\n },\n async installMode(initial) {\n return ok(\n await select({\n message: \"Install Synap from\",\n options: [\n { value: \"from_image\", label: \"From image (recommended)\", hint: \"Pull prebuilt GHCR images. Fastest.\" },\n { value: \"from_source\", label: \"From source\", hint: \"Build locally from your synap-backend checkout. Needed when modifying backend code.\" }\n ],\n initialValue: initial === \"auto\" ? \"from_image\" : initial\n })\n );\n },\n async withOpenclaw(initial, bootstrap) {\n const message = bootstrap === \"preseed\" ? \"Install OpenClaw during this install? (preseed has a workspace, add-on can provision now)\" : \"Enable OpenClaw? (token bootstrap delays add-on; admin UI can install it post-bootstrap)\";\n return ok(await confirm({ message, initialValue: bootstrap === \"preseed\" ? initial : false }));\n },\n async withRsshub(initial) {\n return ok(\n await confirm({ message: \"Enable RSSHub during install?\", initialValue: initial })\n );\n },\n async tunnel(_initial) {\n const v = await select({\n message: \"Expose Eve services through a tunnel?\",\n options: [\n { value: \"none\", label: \"No tunnel\", hint: \"Localhost / manual Traefik\" },\n { value: \"pangolin\", label: \"Pangolin\", hint: \"Self-hosted tunnel\" },\n { value: \"cloudflare\", label: \"Cloudflare\", hint: \"cloudflared ingress\" }\n ],\n initialValue: \"none\"\n });\n return ok(v);\n },\n async tunnelHostStrategy(domainSuggestion) {\n const v = await select({\n message: \"Tunnel hostname\",\n options: [\n { value: \"same_as_synap\", label: `Reuse pod hostname (${domainSuggestion})`, hint: \"No extra DNS record needed\" },\n { value: \"custom\", label: \"Use a different hostname\", hint: \"Example: eve.example.com\" }\n ],\n initialValue: \"same_as_synap\"\n });\n return ok(v);\n },\n async tunnelDomain(initial) {\n return ok(\n await text({\n message: \"Tunnel hostname (e.g. eve.example.com)\",\n initialValue: initial ?? \"\",\n placeholder: \"eve.example.com\",\n validate: (v) => isValidDomain(v) && v !== \"localhost\" ? void 0 : \"Use a public FQDN (not localhost)\"\n })\n );\n }\n};\n\n// src/index.ts\nasync function* runCommand(cmd, args, opts = {}) {\n yield { type: \"log\", line: `$ ${cmd} ${args.join(\" \")}` };\n const child = spawn(cmd, args, {\n cwd: opts.cwd,\n env: opts.env,\n stdio: [\"ignore\", \"pipe\", \"pipe\"]\n });\n const queue = [];\n let resolveNext = null;\n let exited = false;\n let exitCode = 0;\n const wakeUp = () => {\n const r = resolveNext;\n resolveNext = null;\n r?.();\n };\n const consumeChunk = (buf) => {\n const text2 = buf.toString(\"utf-8\");\n for (const line of text2.split(/\\r?\\n/)) {\n if (line.length > 0) queue.push(line);\n }\n wakeUp();\n };\n child.stdout.on(\"data\", consumeChunk);\n child.stderr.on(\"data\", consumeChunk);\n child.on(\"close\", (code) => {\n exitCode = code ?? 0;\n exited = true;\n wakeUp();\n });\n child.on(\"error\", (err) => {\n queue.push(`error: ${err.message}`);\n exitCode = 1;\n exited = true;\n wakeUp();\n });\n while (true) {\n while (queue.length > 0) yield { type: \"log\", line: queue.shift() };\n if (exited && queue.length === 0) break;\n if (exited) continue;\n await new Promise((r) => {\n resolveNext = r;\n });\n }\n return exitCode;\n}\nasync function* dockerExec(args, label) {\n if (label) yield { type: \"step\", label };\n return yield* runCommand(\"docker\", args);\n}\nvar UPDATE_PLAN = {\n traefik: { imagePull: \"traefik:v3.0\" },\n ollama: { imagePull: \"ollama/ollama:latest\" },\n openclaw: { imagePull: \"ghcr.io/openclaw/openclaw:latest\" },\n // Hermes: pull latest image, then regenerate config + plugin so the new\n // container starts with the current Synap memory provider and AI wiring.\n hermes: { imagePull: \"nousresearch/hermes-agent:latest\" },\n rsshub: { imagePull: \"diygod/rsshub:latest\" },\n nango: { imagePull: \"nangohq/nango-server:hosted\" },\n stalwart: { imagePull: \"stalwartlabs/stalwart:v0.16\" },\n bulwark: { imagePull: \"ghcr.io/bulwarkmail/webmail:latest\" },\n // openwebui + pipelines were installed via `docker compose up -d`. After\n // a remove/down the container is gone, so a plain `docker restart` after\n // pull would fail with \"No such container\". `compose pull && compose up\n // -d` is idempotent — recreates if needed, restarts in place if not.\n openwebui: {\n compose: {\n cwd: \"/opt/openwebui\",\n regenerate: () => writeOpenwebuiCompose(\"/opt/openwebui\"),\n reconcileEnv: () => reconcileOpenwebuiEnv(\"/opt/openwebui\")\n }\n },\n synap: {\n // Synap delegates to the canonical synap-backend bash CLI, which owns the\n // canary-first update flow, kratos-migrate force-recreate, CREATE DATABASE\n // idempotency, and migration sequencing. Eve still owns: loopback override,\n // eve-network attach, post-update hooks (Traefik/agent/AI wiring).\n // See: hestia-cli/.docs/synap-cli-as-source-of-truth.md\n delegate: {\n // Compose dir: synap-backend uses a git-checkout layout where the\n // compose file lives in `<repoRoot>/deploy/`. Eve clones into\n // `/opt/synap-backend/`, so the compose dir is `/opt/synap-backend/deploy/`.\n cwd: \"/opt/synap-backend/deploy\",\n subcommand: \"update\",\n // Don't pass `--from-image` or `--from-source` — let the synap CLI's\n // smart default decide. Its rules (synap line ~1838): if `.env` has\n // `BACKEND_VERSION=local` → build from source (skip the doomed pull\n // of the `:local` sentinel that never existed upstream); if we're in\n // a git checkout → build from source; otherwise → pull. Forcing\n // `--from-image` here meant every update tried to pull `:local`, hit\n // 404, and fell back to a build that — without `refreshGit` having\n // already run — was using whatever stale code happened to be on disk.\n args: [],\n // Idempotently write the loopback host-port override so the on-host\n // CLI can reach the backend at 127.0.0.1:4000 without going through\n // Traefik. Runs before the synap CLI so the recreated container\n // starts with the binding already in place.\n ensureOverride: () => ensureSynapLoopbackOverride2(\"/opt/synap-backend/deploy\"),\n refreshGit: true,\n // Heal `.env` if it was written with the bare root domain instead of\n // the pod FQDN. Reads from the centralised configStore at runtime.\n resolveDomain: async () => {\n const secrets = await configStore.get();\n return secrets?.domain?.primary;\n },\n // synap-backend, backend-canary, backend-migrate, realtime — all\n // share the same `ghcr.io/synap-core/backend` image. pod-agent\n // ships separately. Keep three so the user can still roll back\n // one or two versions if a deploy regresses.\n pruneImages: {\n repositories: [\"ghcr.io/synap-core/backend\", \"ghcr.io/synap-core/pod-agent\"],\n keep: 3\n }\n }\n }\n};\nfunction removePlanFor(comp) {\n const containerNames = comp.service?.containerName ? [comp.service.containerName] : [];\n switch (comp.id) {\n case \"synap\":\n return { composeDir: \"/opt/synap-backend/deploy\", containerNames };\n case \"openwebui\":\n return { composeDir: \"/opt/openwebui\", containerNames };\n case \"freellmapi\":\n return { composeDir: \"/opt/freellmapi\", containerNames };\n case \"openwebui-pipelines\":\n return { composeDir: \"/opt/openwebui-pipelines\", containerNames };\n case \"traefik\":\n return { composeDir: `${homedir()}/.eve/traefik`, containerNames };\n default:\n return { containerNames };\n }\n}\nasync function* startContainer(comp) {\n const name = comp.service?.containerName;\n if (!name) {\n yield { type: \"error\", message: `${comp.label} has no container to start.` };\n return;\n }\n const code = yield* dockerExec([\"start\", name], `Starting ${comp.label}\\u2026`);\n if (code === 0) yield { type: \"done\", summary: `${comp.label} started` };\n else yield { type: \"error\", message: `docker start exited ${code}` };\n}\nasync function* stopContainer(comp) {\n const name = comp.service?.containerName;\n if (!name) {\n yield { type: \"error\", message: `${comp.label} has no container to stop.` };\n return;\n }\n const code = yield* dockerExec([\"stop\", name], `Stopping ${comp.label}\\u2026`);\n if (code === 0) yield { type: \"done\", summary: `${comp.label} stopped` };\n else yield { type: \"error\", message: `docker stop exited ${code}` };\n}\nasync function* restartContainer(comp) {\n const name = comp.service?.containerName;\n if (!name) {\n yield { type: \"error\", message: `${comp.label} has no container to restart.` };\n return;\n }\n const code = yield* dockerExec([\"restart\", name], `Restarting ${comp.label}\\u2026`);\n if (code === 0) yield { type: \"done\", summary: `${comp.label} restarted` };\n else yield { type: \"error\", message: `docker restart exited ${code}` };\n}\nasync function* updateContainer(comp) {\n const plan = UPDATE_PLAN[comp.id];\n if (!plan) {\n yield { type: \"error\", message: `${comp.label} has no automated update path.` };\n return;\n }\n let inner = [];\n for await (const ev of runUpdatePlan(comp, plan)) {\n inner.push(ev);\n yield ev;\n }\n const lastDone = [...inner].reverse().find((e) => e.type === \"done\");\n const lastErr = [...inner].reverse().find((e) => e.type === \"error\");\n if (lastDone && !lastErr) {\n yield* runPostUpdateHooks(comp);\n }\n}\nasync function* runUpdatePlan(comp, plan) {\n if (plan.delegate) {\n yield* runDelegatePlan(comp, plan.delegate);\n return;\n }\n if (plan.compose) {\n yield { type: \"step\", label: `${comp.label} \\u2014 prepare` };\n if (plan.compose.regenerate) {\n try {\n plan.compose.regenerate();\n yield { type: \"log\", line: `Regenerated ${plan.compose.cwd}/docker-compose.yml from current template` };\n } catch (err) {\n yield {\n type: \"error\",\n message: `Could not regenerate compose file: ${err instanceof Error ? err.message : String(err)}`\n };\n return;\n }\n }\n if (plan.compose.reconcileEnv) {\n try {\n await plan.compose.reconcileEnv();\n yield { type: \"log\", line: `Reconciled ${plan.compose.cwd}/.env from current secrets` };\n } catch (err) {\n yield {\n type: \"error\",\n message: `Could not reconcile .env: ${err instanceof Error ? err.message : String(err)}`\n };\n return;\n }\n }\n if (plan.compose.ensureOverride) {\n try {\n const r = plan.compose.ensureOverride();\n yield {\n type: \"log\",\n line: r.outcome === \"wrote\" ? `Refreshed ${r.path}` : `Left ${r.path} alone \\u2014 ${r.reason ?? \"user-owned\"}`\n };\n } catch (err) {\n yield {\n type: \"log\",\n line: `Could not ensure compose override: ${err instanceof Error ? err.message : String(err)} (continuing)`\n };\n }\n }\n if (!existsSync2(plan.compose.cwd)) {\n yield { type: \"error\", message: `Compose dir not found: ${plan.compose.cwd}.` };\n return;\n }\n sanitizeComposeFile(join2(plan.compose.cwd, \"docker-compose.yml\"));\n yield* ensureEveNetwork();\n const services = plan.compose.services ?? [];\n yield { type: \"step\", label: `${comp.label} \\u2014 pull images` };\n let code = yield* runCommand(\n \"docker\",\n [\"compose\", \"pull\", ...services, \"--ignore-pull-failures\"],\n { cwd: plan.compose.cwd }\n );\n if (code !== 0) {\n yield { type: \"error\", message: `compose pull exited ${code}` };\n return;\n }\n yield { type: \"step\", label: `${comp.label} \\u2014 start containers` };\n const upArgs = services.length > 0 ? [\"compose\", \"up\", \"-d\", \"--no-deps\", ...services] : [\"compose\", \"up\", \"-d\"];\n code = yield* runCommand(\"docker\", upArgs, { cwd: plan.compose.cwd });\n if (code !== 0) {\n yield { type: \"error\", message: `compose up exited ${code}` };\n return;\n }\n if (plan.compose.pruneImages) {\n const keep = plan.compose.pruneImages.keep ?? 3;\n for (const repo of plan.compose.pruneImages.repositories) {\n try {\n const result = pruneOldImagesForRepo(repo, keep);\n if (result.removed.length > 0) {\n yield {\n type: \"log\",\n line: `Pruned ${result.removed.length} old ${repo} image(s) \\u2014 kept latest ${keep} (${result.kept.length} remain).`\n };\n }\n if (result.skipped.length > 0) {\n yield {\n type: \"log\",\n line: `Skipped ${result.skipped.length} ${repo} image(s) still in use by other containers.`\n };\n }\n } catch (err) {\n yield {\n type: \"log\",\n line: `Image prune for ${repo} skipped: ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n }\n yield { type: \"done\", summary: `${comp.label} updated` };\n return;\n }\n if (plan.imagePull && comp.service?.containerName) {\n const code = yield* dockerExec([\"pull\", plan.imagePull], `Pulling ${plan.imagePull}\\u2026`);\n if (code !== 0) {\n yield { type: \"error\", message: `pull exited ${code}` };\n return;\n }\n const exists = await containerExists(comp.service.containerName);\n const needsRecreate = AI_CONSUMERS_NEEDING_RECREATE.has(comp.id);\n const hasInstallRecipe = HAS_INSTALL_RECIPE.has(comp.id);\n if (!exists && hasInstallRecipe) {\n yield { type: \"log\", line: `${comp.service.containerName} not found \\u2014 recreating from install recipe\\u2026` };\n yield* installOne(comp, {});\n return;\n }\n if (!exists) {\n yield { type: \"error\", message: `${comp.service.containerName} not found \\u2014 re-install with \\`eve add ${comp.id}\\`` };\n return;\n }\n if (needsRecreate && hasInstallRecipe) {\n yield { type: \"log\", line: `${comp.label} is env-bound \\u2014 recreating to apply current config` };\n yield* recreateContainer(comp, {});\n return;\n }\n const restartCode = yield* dockerExec(\n [\"restart\", comp.service.containerName],\n `Restarting ${comp.label}\\u2026`\n );\n if (restartCode !== 0) {\n yield { type: \"error\", message: `restart exited ${restartCode}` };\n return;\n }\n yield { type: \"done\", summary: `${comp.label} updated to latest` };\n }\n}\nasync function* runDelegatePlan(comp, plan) {\n if (plan.ensureOverride) {\n try {\n const r = plan.ensureOverride();\n yield {\n type: \"log\",\n line: r.outcome === \"wrote\" ? `Refreshed ${r.path}` : `Left ${r.path} alone \\u2014 ${r.reason ?? \"user-owned\"}`\n };\n } catch (err) {\n yield {\n type: \"log\",\n line: `Could not ensure compose override: ${err instanceof Error ? err.message : String(err)} (continuing)`\n };\n }\n }\n if (!existsSync2(plan.cwd)) {\n yield { type: \"error\", message: `Compose dir not found: ${plan.cwd}.` };\n return;\n }\n if (plan.subcommand === \"update\") {\n const envPath2 = join2(plan.cwd, \".env\");\n const envExists = existsSync2(plan.cwd) && existsSync2(envPath2);\n let envHasPostgresPassword = false;\n if (envExists) {\n try {\n const env = readFileSync2(envPath2, \"utf-8\");\n envHasPostgresPassword = /^POSTGRES_PASSWORD=.+$/m.test(env);\n } catch {\n }\n }\n if (!envExists || !envHasPostgresPassword) {\n yield {\n type: \"error\",\n message: [\n `${comp.label}: install was never completed (${envExists ? \"POSTGRES_PASSWORD missing in .env\" : \".env missing\"} at ${plan.cwd}).`,\n ``,\n `Running update against an unconfigured stack would launch postgres with`,\n `a blank password and destroy the volume. Refusing.`,\n ``,\n `Run \\`eve install ${comp.id}\\` to complete the initial setup, then`,\n `\\`eve update ${comp.id}\\` for subsequent updates.`\n ].join(\"\\n\")\n };\n return;\n }\n }\n yield* ensureEveNetwork();\n const bareDomain = plan.resolveDomain ? await plan.resolveDomain() : void 0;\n if (plan.resolveDomain && !bareDomain) {\n yield {\n type: \"log\",\n line: \"No domain in eve secrets \\u2014 synap CLI will use whatever DOMAIN is already in .env\"\n };\n }\n const envPath = join2(plan.cwd, \".env\");\n if (existsSync2(envPath)) {\n const dirty = reconcileEveEnv(envPath);\n if (dirty) {\n yield { type: \"log\", line: \"Reconciled eve-specific .env vars before delegating\" };\n }\n try {\n const restored = await restorePodSecrets(envPath);\n if (restored.restored.length > 0) {\n yield {\n type: \"log\",\n line: `Restored ${restored.restored.length} pod secret(s) from eve backup: ${restored.restored.join(\", \")}`\n };\n }\n } catch (err) {\n yield {\n type: \"log\",\n line: `Pod-secrets restore failed (continuing): ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n yield {\n type: \"log\",\n line: `Delegating ${comp.label} ${plan.subcommand} to synap CLI\\u2026`\n };\n const result = runSynapCli(plan.subcommand, plan.args ?? [], {\n refreshGit: plan.refreshGit,\n domain: bareDomain\n });\n if (!result.ok) {\n yield {\n type: \"error\",\n message: `synap ${plan.subcommand} exited ${result.exitCode}${result.stderr ? `: ${result.stderr}` : \"\"}`\n };\n return;\n }\n if (existsSync2(envPath)) {\n try {\n const captured = await backupPodSecrets(envPath);\n if (captured.captured.length > 0) {\n yield {\n type: \"log\",\n line: `Refreshed pod-secrets backup (${captured.captured.length} key(s) captured)`\n };\n }\n } catch (err) {\n yield {\n type: \"log\",\n line: `Pod-secrets backup failed (continuing): ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n if (plan.pruneImages) {\n const keep = plan.pruneImages.keep ?? 3;\n for (const repo of plan.pruneImages.repositories) {\n try {\n const pruneResult = pruneOldImagesForRepo(repo, keep);\n if (pruneResult.removed.length > 0) {\n yield {\n type: \"log\",\n line: `Pruned ${pruneResult.removed.length} old ${repo} image(s) \\u2014 kept latest ${keep} (${pruneResult.kept.length} remain).`\n };\n }\n if (pruneResult.skipped.length > 0) {\n yield {\n type: \"log\",\n line: `Skipped ${pruneResult.skipped.length} ${repo} image(s) still in use by other containers.`\n };\n }\n } catch (err) {\n yield {\n type: \"log\",\n line: `Image prune for ${repo} skipped: ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n }\n if (comp.id === \"synap\") {\n yield* probePodAdminInvariant();\n }\n yield { type: \"done\", summary: `${comp.label} updated via synap CLI` };\n}\nasync function* probePodAdminInvariant() {\n const url = \"http://127.0.0.1:14000/api/hub/setup/status\";\n let body;\n try {\n const res = await fetch(url, {\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(5e3)\n });\n if (!res.ok) {\n yield {\n type: \"log\",\n line: `Pod-admin invariant probe: HTTP ${res.status} (skipping)`\n };\n return;\n }\n body = await res.json();\n } catch (err) {\n yield {\n type: \"log\",\n line: `Pod-admin invariant probe failed (continuing): ${err instanceof Error ? err.message : String(err)}`\n };\n return;\n }\n const inv = body.podAdminInvariant;\n if (!inv) {\n return;\n }\n if (inv.healthy) {\n yield {\n type: \"log\",\n line: `Pod-admin invariant healthy (${inv.reason ?? \"ok\"})`\n };\n return;\n }\n if (inv.kind === \"fresh\" || body.needsSetup === true) {\n yield {\n type: \"log\",\n line: \"Pod-admin invariant: pre-bootstrap (no admin yet \\u2014 run `synap setup admin` to seed one)\"\n };\n return;\n }\n yield {\n type: \"log\",\n line: `\\u26A0 Pod-admin invariant BROKEN (${inv.kind ?? \"unknown\"}): ${inv.reason ?? \"unknown reason\"}.\n Recover with:\n synap setup admin --email <your-email> --password <new-password>\n (run inside /opt/synap-backend or wherever your synap CLI lives).`\n };\n}\nasync function* runPostUpdateHooks(comp) {\n yield { type: \"step\", label: `${comp.label} \\u2014 post-update wiring` };\n if (comp.id === \"openclaw\") {\n yield* postUpdateReconcileOpenclaw();\n yield* postUpdateReconcileAiWiring();\n }\n if (comp.id === \"synap\") {\n yield* waitUntilSynapReady({ timeoutMs: 3e4 });\n yield* postUpdateConnectTraefik();\n yield* postUpdateReconcileAuth();\n yield* postUpdateReconcileAiWiring();\n }\n if (comp.id === \"hermes\") {\n yield* waitUntilSynapReady({ timeoutMs: 15e3 });\n yield* postUpdateReconcileHermes();\n yield* postUpdateReconcileAiWiring();\n }\n if (comp.id === \"openwebui\") {\n yield* decommissionLegacyPipelines();\n yield* waitUntilSynapReady({ timeoutMs: 15e3 });\n yield* validateAndRenewKeyIfRevoked(\"eve\");\n yield* validateAndRenewKeyIfRevoked(\"hermes\");\n yield* postUpdateReconcileAiWiring();\n }\n}\nasync function* waitUntilSynapReady(opts = {}) {\n const secrets = await readEveSecrets7();\n const timeoutMs = opts.timeoutMs ?? 3e4;\n const intervalMs = opts.intervalMs ?? 1500;\n const deadline = Date.now() + timeoutMs;\n let ready = false;\n while (Date.now() < deadline) {\n const url = await resolveSynapUrlOnHost2(secrets);\n if (url) {\n try {\n const res = await fetch(`${url.replace(/\\/+$/, \"\")}/api/hub/health`, {\n signal: AbortSignal.timeout(2e3)\n });\n if (res.ok || res.status < 500) {\n ready = true;\n break;\n }\n } catch {\n }\n }\n await new Promise((r) => setTimeout(r, intervalMs));\n }\n if (!ready) {\n yield {\n type: \"log\",\n line: \"\\u21B3 synap-backend health check timed out \\u2014 wiring may be incomplete\"\n };\n }\n}\nasync function* validateAndRenewKeyIfRevoked(agentType) {\n const { getAuthStatus: getAuthStatus2, renewAgentKey: renewAgentKey2 } = await import(\"./auth-7FFZNARZ.js\");\n const { readAgentKey: readAgentKey2 } = await import(\"@eve/dna\");\n const secrets = await readEveSecrets7();\n const synapUrl = await resolveSynapUrlOnHost2(secrets);\n if (!synapUrl) return;\n const agentRecord = await readAgentKey2(agentType);\n const apiKey = agentRecord?.hubApiKey?.trim();\n if (!apiKey) return;\n let status = await getAuthStatus2({ synapUrl, apiKey });\n if (!status.ok && status.failure.reason === \"transport\") {\n await new Promise((r) => setTimeout(r, 3e3));\n status = await getAuthStatus2({ synapUrl, apiKey, timeoutMs: 12e3 });\n }\n if (status.ok) {\n if (!agentRecord?.workspaceId) {\n yield {\n type: \"log\",\n line: `\\u21B3 ${agentType} agent key has no workspace binding \\u2014 renewing to repair membership`\n };\n const renewed2 = await renewAgentKey2({ agentType, reason: \"workspace-membership-repair\", idempotent: true });\n if (renewed2.renewed) {\n yield {\n type: \"log\",\n line: `\\u21B3 workspace membership repaired (new key prefix ${renewed2.keyIdPrefix}\\u2026)`\n };\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 workspace repair failed (${renewed2.reason}) \\u2014 run: eve auth provision --agent ${agentType} to re-provision`\n };\n }\n }\n return;\n }\n const reason = status.failure.reason;\n const recoverable = reason === \"key_revoked\" || reason === \"expired\" || reason === \"missing_scope\";\n if (!recoverable) {\n yield {\n type: \"log\",\n line: `\\u21B3 ${agentType} agent key returned ${reason} (${status.failure.message}) \\u2014 non-recoverable, run \\`eve auth status\\` for details`\n };\n return;\n }\n yield { type: \"log\", line: `\\u21B3 ${agentType} agent key invalid (${reason}) \\u2014 auto-renewing` };\n await appendOperationalEvent3({\n type: \"repair.started\",\n target: `agent-key:${agentType}`,\n summary: `Auto-renewing ${agentType} agent key (probe reason: ${reason})`,\n details: { agentType, probeReason: reason, trigger: \"validateAndRenewKeyIfRevoked\" }\n }).catch(() => {\n });\n const renewed = await renewAgentKey2({ agentType, reason: `${reason} during update` });\n if (renewed.renewed) {\n yield {\n type: \"log\",\n line: `\\u21B3 refreshed ${agentType} agent key \\u2014 new prefix ${renewed.keyIdPrefix}`\n };\n await appendOperationalEvent3({\n type: \"repair.succeeded\",\n target: `agent-key:${agentType}`,\n ok: true,\n summary: `${agentType} agent key renewed (new prefix ${renewed.keyIdPrefix})`,\n details: { agentType, keyIdPrefix: renewed.keyIdPrefix }\n }).catch(() => {\n });\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 ${agentType} auto-renew failed: ${renewed.reason} \\u2014 run \\`eve auth renew --agent ${agentType}\\` manually`\n };\n await appendOperationalEvent3({\n type: \"repair.failed\",\n target: `agent-key:${agentType}`,\n ok: false,\n summary: `${agentType} agent key auto-renew failed`,\n error: renewed.reason,\n details: { agentType, probeReason: reason }\n }).catch(() => {\n });\n }\n}\nasync function* postUpdateReconcileAiWiring() {\n try {\n const secrets = await readEveSecrets7();\n let installed = [];\n try {\n installed = await entityStateManager2.getInstalledComponents();\n } catch {\n }\n if (installed.length === 0) {\n yield { type: \"log\", line: \"No installed components \\u2014 skipping AI wiring reconciliation\" };\n return;\n }\n const [materialized] = await materializeTargets(secrets, [\"ai-wiring\"], { components: installed });\n let results = Array.isArray(materialized?.details?.results) ? materialized.details.results : [];\n const owui = results.find((r) => r.id === \"openwebui\");\n if (owui && /\\b401\\b|Unauthorized/i.test(owui.summary)) {\n yield { type: \"log\", line: \"\\u21B3 OpenWebUI extras returned 401 \\u2014 reconciling Hub keys and retrying wiring\" };\n const { renewAgentKey: renewAgentKey2, resolveProvisioningToken: resolveProvisioningToken2 } = await import(\"./auth-7FFZNARZ.js\");\n const provisioningToken = await resolveProvisioningToken2() ?? void 0;\n const renewedOwui = await renewAgentKey2({ agentType: \"openwebui\", reason: \"owui-extras-401\", idempotent: true, provisioningToken }).catch(() => null);\n const renewedEve = await renewAgentKey2({ agentType: \"eve\", reason: \"owui-extras-401\", idempotent: true, provisioningToken }).catch(() => null);\n const anyRotated = renewedOwui?.renewed || renewedEve?.renewed;\n const actuallyRotated = (r) => r?.renewed && !r.wasAlreadyPresent;\n const rotatedLabels = [\n actuallyRotated(renewedOwui) ? `openwebui (prefix ${renewedOwui.keyIdPrefix}\\u2026)` : null,\n actuallyRotated(renewedEve) ? `eve (prefix ${renewedEve.keyIdPrefix}\\u2026)` : null\n ].filter(Boolean).join(\", \");\n if (rotatedLabels) {\n yield { type: \"log\", line: `\\u21B3 rotated stale key(s): ${rotatedLabels} \\u2014 re-running OpenWebUI wiring` };\n } else {\n yield { type: \"log\", line: \"\\u21B3 keys confirmed valid \\u2014 re-running OpenWebUI wiring\" };\n }\n const refreshed = await readEveSecrets7();\n const [retry] = await materializeTargets(refreshed, [\"ai-wiring\"], { components: [\"openwebui\"] });\n const retryResults = Array.isArray(retry?.details?.results) ? retry.details.results : [];\n const retried = retryResults.find((r) => r.id === \"openwebui\");\n if (retried) {\n results = results.map((r) => r.id === \"openwebui\" ? retried : r);\n const retried401 = /\\b401\\b|Unauthorized/i.test(retried.summary);\n if (!retried401) {\n yield { type: \"log\", line: \"\\u21B3 OpenWebUI wiring retry succeeded\" };\n } else {\n yield { type: \"log\", line: \"\\u21B3 retry still 401 \\u2014 recreating OpenWebUI to flush in-memory key cache\" };\n const recreateResult = await runActionToCompletion(\"openwebui\", \"recreate\");\n if (recreateResult.ok) {\n const refreshed2 = await readEveSecrets7();\n const [final] = await materializeTargets(refreshed2, [\"ai-wiring\"], { components: [\"openwebui\"] });\n const finalResults = Array.isArray(final?.details?.results) ? final.details.results : [];\n const finalRetried = finalResults.find((r) => r.id === \"openwebui\");\n if (finalRetried) {\n results = results.map((r) => r.id === \"openwebui\" ? finalRetried : r);\n const final401 = /\\b401\\b|Unauthorized/i.test(finalRetried.summary);\n yield {\n type: \"log\",\n line: final401 ? \"\\u21B3 still 401 after recreate \\u2014 run `eve auth provision --agent openwebui` then `eve auth provision --agent eve`\" : \"\\u21B3 OpenWebUI wiring succeeded after container reload \\u2713\"\n };\n }\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 recreate failed (${recreateResult.error ?? \"unknown\"}) \\u2014 run \\`eve auth provision --agent openwebui\\` then \\`eve auth provision --agent eve\\``\n };\n }\n }\n }\n void anyRotated;\n }\n const okCount = results.filter((r) => r.outcome === \"ok\").length;\n const failCount = results.filter((r) => r.outcome === \"failed\").length;\n if (failCount > 0) {\n yield { type: \"log\", line: `AI wiring reconciliation: ${okCount} ok, ${failCount} failed` };\n } else if (okCount > 0) {\n yield { type: \"log\", line: `AI wiring reconciled \\u2713 (${okCount} component(s))` };\n }\n } catch (err) {\n yield { type: \"log\", line: `Warning: AI wiring reconciliation failed \\u2014 ${err}` };\n }\n}\nasync function* postUpdateConnectTraefik() {\n const result = connectTraefikToEveNetwork2();\n if (result.connected && result.containerName) {\n if (result.alreadyConnected) {\n yield { type: \"log\", line: `${result.containerName} already on eve-network \\u2713` };\n } else {\n yield { type: \"log\", line: `Connected ${result.containerName} \\u2192 eve-network (Traefik can now route to backend)` };\n }\n } else {\n yield {\n type: \"log\",\n line: \"Could not find Traefik container to connect to eve-network \\u2014 if Traefik routes to backend return 502, run: docker network connect eve-network <traefik-container-name>\"\n };\n }\n}\nasync function* postUpdateReconcileAuth() {\n const { getAuthStatus: getAuthStatus2, renewAgentKey: renewAgentKey2, migrateLegacyToAgents: migrateLegacyToAgents2 } = await import(\"./auth-7FFZNARZ.js\");\n const { readAgentKey: readAgentKey2 } = await import(\"@eve/dna\");\n const secrets = await readEveSecrets7();\n const synapUrl = await resolveSynapUrlOnHost2(secrets);\n if (!synapUrl) {\n return;\n }\n const legacyKey = secrets?.synap?.apiKey?.trim() ?? \"\";\n const eveAgentKey = await readAgentKey2(\"eve\");\n if (legacyKey && !eveAgentKey) {\n yield {\n type: \"log\",\n line: \"\\u21B3 legacy single-key install detected \\u2014 migrating to per-agent keys\"\n };\n let installedSet;\n try {\n installedSet = await entityStateManager2.getInstalledComponents();\n } catch {\n installedSet = [];\n }\n const migration = await migrateLegacyToAgents2({\n installedComponentIds: installedSet\n });\n if (migration.migrated) {\n const ok2 = migration.results.filter((r) => r.provisioned).length;\n const failed = migration.results.length - ok2;\n yield {\n type: \"log\",\n line: `\\u21B3 migrated ${ok2}/${migration.results.length} agent${migration.results.length === 1 ? \"\" : \"s\"} to per-agent keys${failed > 0 ? ` (${failed} failed \\u2014 run \\`eve auth status\\`)` : \"\"}`\n };\n yield* postInstallSeedBuilderWorkspace();\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 legacy migration deferred: ${migration.reason ?? \"unknown\"} \\u2014 run \\`eve auth provision\\` manually`\n };\n }\n return;\n }\n const eveKeyValue = eveAgentKey?.hubApiKey?.trim() ?? legacyKey;\n if (!eveKeyValue) {\n yield {\n type: \"log\",\n line: \"\\u21B3 no eve agent key \\u2014 run: eve auth provision --agent eve (attempting auto-provisioning now)\"\n };\n yield* postInstallProvisionAgents(\"synap\");\n yield* postInstallSeedBuilderWorkspace();\n return;\n }\n const status = await getAuthStatus2({ synapUrl, apiKey: eveKeyValue });\n if (status.ok) {\n if (!eveAgentKey?.workspaceId) {\n yield {\n type: \"log\",\n line: \"\\u21B3 eve agent key has no workspace binding \\u2014 renewing to repair membership\"\n };\n const renewed2 = await renewAgentKey2({ agentType: \"eve\", reason: \"workspace-membership-repair\", idempotent: true });\n if (renewed2.renewed) {\n yield {\n type: \"log\",\n line: `\\u21B3 workspace membership repaired (new key prefix ${renewed2.keyIdPrefix}\\u2026)`\n };\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 workspace repair failed (${renewed2.reason}) \\u2014 run: eve auth provision --agent eve to re-provision`\n };\n }\n }\n yield* postInstallSeedBuilderWorkspace();\n try {\n const { AGENTS } = await import(\"@eve/dna\");\n const installed = await entityStateManager2.getInstalledComponents();\n const otherAgents = [\"hermes\", \"openclaw\", \"openwebui\"].filter(\n (a) => installed.includes(a) || AGENTS.find((ag) => ag.agentType === a)?.alwaysProvision\n );\n for (const agentType of otherAgents) {\n const key = await readAgentKey2(agentType);\n if (!key?.hubApiKey) {\n yield { type: \"log\", line: `\\u21B3 ${agentType} agent key missing \\u2014 run: eve auth provision --agent ${agentType}` };\n }\n }\n } catch {\n }\n return;\n }\n const reason = status.failure.reason;\n const recoverable = reason === \"key_revoked\" || reason === \"expired\";\n if (!recoverable) {\n yield {\n type: \"log\",\n line: `\\u21B3 post-update auth check returned ${reason} (${status.failure.message}) \\u2014 run \\`eve auth status\\` for details`\n };\n return;\n }\n yield {\n type: \"log\",\n line: `\\u21B3 eve agent key invalid (${reason}) \\u2014 auto-renewing`\n };\n const renewed = await renewAgentKey2({\n agentType: \"eve\",\n reason: `${reason} during update`\n });\n if (renewed.renewed) {\n yield {\n type: \"log\",\n line: `\\u21B3 refreshed eve agent key (was ${reason} during update) \\u2014 new prefix ${renewed.keyIdPrefix}`\n };\n yield {\n type: \"log\",\n line: \"\\u21B3 containers using the old key need restart \\u2014 run: docker restart eve-brain-openwebui eve-proxy-openclaw\"\n };\n yield* postInstallSeedBuilderWorkspace();\n } else {\n yield {\n type: \"log\",\n line: `\\u21B3 key renewal failed (${renewed.reason}) \\u2014 run: eve auth renew --agent eve`\n };\n }\n}\nasync function* postInstallProvisionAgents(componentId) {\n const { provisionAgent: provisionAgent2 } = await import(\"./auth-7FFZNARZ.js\");\n const { AGENTS, readAgentKey: readAgentKey2 } = await import(\"@eve/dna\");\n const matches = AGENTS.filter((a) => a.componentId === componentId);\n if (componentId === \"synap\") {\n const eveEntry = AGENTS.find((a) => a.agentType === \"eve\");\n if (eveEntry && !matches.includes(eveEntry)) matches.push(eveEntry);\n }\n if (matches.length === 0) return;\n for (const agent of matches) {\n const existing = await readAgentKey2(agent.agentType);\n if (existing && existing.hubApiKey) {\n yield {\n type: \"log\",\n line: `${agent.label} agent key already provisioned (prefix ${(existing.keyId ?? existing.hubApiKey).slice(0, 8)}\\u2026) \\u2014 skipping`\n };\n continue;\n }\n const result = await provisionAgent2({\n agentType: agent.agentType,\n reason: `install:${componentId}`\n });\n if (result.provisioned) {\n yield {\n type: \"log\",\n line: `Minted ${agent.label} agent key (prefix ${result.keyIdPrefix}\\u2026)`\n };\n } else {\n yield {\n type: \"log\",\n line: `warning: could not mint ${agent.label} agent key \\u2014 ${result.reason}. Run \\`eve auth provision\\` once the pod is reachable.`\n };\n }\n }\n}\nasync function* postInstallSeedBuilderWorkspace() {\n const secrets = await readEveSecrets7();\n const podUrl = await resolveSynapUrlOnHost2(secrets);\n if (!podUrl) {\n yield {\n type: \"log\",\n line: \"Skipping Builder workspace seed \\u2014 pod URL unresolved (configure domain.primary or synap.apiUrl).\"\n };\n return;\n }\n try {\n const result = await ensureBuilderWorkspace({ secrets, podUrl });\n if (result.created) {\n yield {\n type: \"log\",\n line: `Seeded Builder workspace on pod (id: ${result.workspaceId})`\n };\n } else {\n yield {\n type: \"log\",\n line: `Builder workspace already present on pod (id: ${result.workspaceId})`\n };\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n yield {\n type: \"log\",\n line: `warning: could not seed Builder workspace \\u2014 ${message}. Retry with \\`eve update\\`.`\n };\n }\n}\nasync function* postUpdateReconcileOpenclaw() {\n const secrets = await readEveSecrets7();\n const domain = secrets?.domain?.primary;\n const reconcile = await waitThenReconcileOpenclaw(domain);\n if (reconcile.notes.length > 0) {\n for (const n of reconcile.notes) {\n yield { type: \"log\", line: `OpenClaw: ${n}` };\n }\n }\n if (reconcile.changed) {\n const code = yield* dockerExec([\"restart\", \"eve-arms-openclaw\"], \"Restarting OpenClaw to apply allowedOrigins\\u2026\");\n if (code !== 0) {\n yield {\n type: \"log\",\n line: `OpenClaw: docker restart exited ${code} \\u2014 config was updated but the container may still be serving the stale list`\n };\n }\n }\n}\nasync function waitThenReconcileOpenclaw(domain) {\n const deadline = Date.now() + 6e3;\n let last = null;\n while (Date.now() < deadline) {\n last = await reconcileOpenclawConfig({ domain });\n const note = last.notes[0] ?? \"\";\n const stillBooting = note.includes(\"could not read\") || note.includes(\"not running\");\n if (!stillBooting) return last;\n await new Promise((r) => setTimeout(r, 500));\n }\n return last ?? {\n changed: false,\n before: { allowedOrigins: [], authTokenChanged: false },\n after: { allowedOrigins: [] },\n notes: [\"reconcile timed out before OpenClaw seeded its config\"]\n };\n}\nasync function* postUpdateReconcileHermes() {\n yield { type: \"log\", line: \"Regenerating Hermes env + config.yaml + Synap memory plugin\\u2026\" };\n try {\n await materializeTargets(null, [\"hermes-env\"]);\n await writeHermesConfigYaml();\n generateSynapPlugin();\n yield { type: \"log\", line: \"Hermes env, config + plugin regenerated \\u2713\" };\n } catch (err) {\n yield {\n type: \"log\",\n line: `Warning: could not regenerate Hermes config \\u2014 ${err instanceof Error ? err.message : String(err)}`\n };\n }\n try {\n await materializeTargets(null, [\"backend-env\"]);\n } catch {\n }\n yield* wireHermesIntoOpenwebui();\n}\nasync function* installHermes() {\n yield { type: \"step\", label: \"Writing Hermes env + config + Synap memory plugin\\u2026\" };\n try {\n await materializeTargets(null, [\"hermes-env\"]);\n await writeHermesConfigYaml();\n generateSynapPlugin();\n yield { type: \"log\", line: \"Env file, config.yaml, and Synap plugin written \\u2713\" };\n } catch (err) {\n throw new Error(\n `Failed to write Hermes config: ${err instanceof Error ? err.message : String(err)}`\n );\n }\n try {\n await materializeTargets(null, [\"backend-env\"]);\n } catch {\n }\n yield* ensureEveNetwork();\n yield { type: \"step\", label: \"Pulling Hermes image\\u2026\" };\n const pullCode = yield* runCommand(\"docker\", [\"pull\", \"nousresearch/hermes-agent:latest\"]);\n if (pullCode !== 0) throw new Error(`docker pull nousresearch/hermes-agent:latest exited ${pullCode}`);\n yield { type: \"step\", label: \"Starting Hermes\\u2026\" };\n const hermesHome = join2(homedir(), \".eve\", \"hermes\");\n mkdirSync(hermesHome, { recursive: true });\n const hermesEnv = join2(homedir(), \".eve\", \"hermes.env\");\n const skillsDir = join2(homedir(), \".eve\", \"skills\");\n mkdirSync(skillsDir, { recursive: true });\n try {\n execSync(`chown -R 10000:10000 ${JSON.stringify(hermesHome)}`, { stdio: \"ignore\" });\n } catch {\n }\n const args = [\n \"run\",\n \"-d\",\n \"--name\",\n \"eve-builder-hermes\",\n \"--network\",\n \"eve-network\",\n \"--restart\",\n \"unless-stopped\",\n \"-p\",\n \"8642:8642\",\n // OpenAI-compat gateway (part of hermes gateway)\n \"-p\",\n \"9119:9119\",\n // Admin dashboard (enabled via config.yaml)\n \"-p\",\n \"9120:9120\",\n // MCP server (enabled via config.yaml)\n \"-v\",\n `${hermesHome}:/opt/data`,\n // Synap skill packages — mounted at a SIBLING path of Hermes's own\n // /opt/data/skills/ so the bind-mount doesn't shadow it. Hermes copies\n // ~91 bundled skills into /opt/data/skills/<category>/ on first boot;\n // when we mounted Synap's read-only at /opt/data/skills, every one of\n // those copies failed with \"Read-only file system\" and Hermes's tool\n // surface stayed empty. Hermes config (writeHermesConfigYaml) has been\n // updated to point at the new path.\n \"-v\",\n `${skillsDir}:/opt/data/synap-skills:ro`,\n \"--env-file\",\n hermesEnv,\n \"-e\",\n \"HERMES_HOME=/opt/data\",\n \"nousresearch/hermes-agent:latest\",\n \"gateway\",\n \"run\"\n ];\n const runCode = yield* runCommand(\"docker\", args);\n if (runCode !== 0) throw new Error(`docker run exited ${runCode}`);\n await new Promise((r) => setTimeout(r, 12e3));\n const stillUp = await isContainerInState(\"eve-builder-hermes\", \"running\");\n if (!stillUp) {\n yield {\n type: \"log\",\n line: \"warning: Hermes container exited or is restarting \\u2014 run `docker logs eve-builder-hermes` for details\"\n };\n } else {\n yield { type: \"log\", line: \"Hermes container running \\u2014 gateway: :8642, dashboard: :9119, MCP: :9120\" };\n }\n yield* wireHermesIntoOpenwebui();\n}\nvar T3CODE_CONTAINER = \"eve-builder-t3code\";\nvar T3CODE_PORT = 3773;\nasync function* installT3Code() {\n const secrets = await readEveSecrets7();\n const existing = secrets?.builder?.t3code;\n let authToken = existing?.apiKey;\n if (!authToken) {\n authToken = randomBytes(32).toString(\"hex\");\n await writeEveSecrets4({ builder: { t3code: { ...existing ?? {}, apiKey: authToken } } });\n yield { type: \"log\", line: \"Generated T3 Code auth token (saved to secrets)\" };\n }\n const openaiApiKey = existing?.openaiApiKey ?? process.env.OPENAI_API_KEY ?? \"\";\n if (!openaiApiKey) {\n yield { type: \"error\", message: \"API key required \\u2014 run `eve add t3code` from the CLI to provide it.\" };\n return;\n }\n const openaiBaseUrl = existing?.openaiBaseUrl ?? process.env.OPENAI_BASE_URL ?? \"\";\n const workspaceDir = secrets?.builder?.workspaceDir ?? join2(homedir(), \".eve\", \"workspace\");\n mkdirSync(workspaceDir, { recursive: true });\n const exists = await containerExists(T3CODE_CONTAINER);\n if (exists) {\n yield { type: \"log\", line: `Removing existing ${T3CODE_CONTAINER} container\\u2026` };\n await runCommand(\"docker\", [\"rm\", \"-f\", T3CODE_CONTAINER]);\n }\n yield { type: \"step\", label: \"Starting T3 Code server\\u2026\" };\n const secrets2 = await readEveSecrets7();\n const traefikHost = secrets2?.traefik?.domain ? `t3.${secrets2.traefik.domain}` : \"\";\n const args = [\n \"run\",\n \"-d\",\n \"--name\",\n T3CODE_CONTAINER,\n \"--network\",\n \"eve-network\",\n \"--restart\",\n \"unless-stopped\",\n \"-p\",\n `${T3CODE_PORT}:${T3CODE_PORT}`,\n \"-v\",\n \"t3code-npm-global:/root/.npm\",\n \"-v\",\n `${workspaceDir}:/workspace`,\n \"-w\",\n \"/workspace\",\n \"-e\",\n `OPENAI_API_KEY=${openaiApiKey}`,\n ...openaiBaseUrl ? [\"-e\", `OPENAI_BASE_URL=${openaiBaseUrl}`] : [],\n // Traefik labels — expose T3 Code UI via subdomain if domain is configured\n \"--label\",\n \"traefik.enable=true\",\n \"--label\",\n `traefik.http.routers.t3code.rule=Host(\\`${traefikHost || `t3.eve.local`}\\`)`,\n \"--label\",\n \"traefik.http.routers.t3code.entrypoints=websecure\",\n \"--label\",\n \"traefik.http.routers.t3code.tls.certresolver=le\",\n \"--label\",\n `traefik.http.services.t3code.loadbalancer.server.port=${T3CODE_PORT}`,\n \"node:22-slim\",\n \"sh\",\n \"-c\",\n `npm install -g t3@latest --prefer-offline 2>/dev/null || npm install -g t3@latest; t3 --host 0.0.0.0 --port ${T3CODE_PORT} --auth-token ${authToken} --no-browser --auto-bootstrap-project-from-cwd=false`\n ];\n const code = yield* runCommand(\"docker\", args);\n if (code !== 0) throw new Error(`docker run exited ${code}`);\n await writeEveSecrets4({\n builder: {\n t3code: {\n ...secrets?.builder?.t3code ?? {},\n url: `ws://eve-builder-t3code:${T3CODE_PORT}`,\n apiKey: authToken,\n openaiApiKey\n }\n }\n });\n const [envResult] = await materializeTargets(null, [\"backend-env\"]);\n if (envResult?.changed) {\n yield { type: \"log\", line: \"Backend .env updated with T3CODE_URL and T3CODE_API_KEY\" };\n }\n yield { type: \"log\", line: \"Waiting for T3 Code to start\\u2026\" };\n let healthy = false;\n for (let i = 0; i < 5; i++) {\n await new Promise((r) => setTimeout(r, 3e3));\n try {\n const res = await fetch(`http://127.0.0.1:${T3CODE_PORT}/health`, { signal: AbortSignal.timeout(2e3) });\n if (res.ok) {\n healthy = true;\n break;\n }\n } catch {\n }\n }\n if (healthy) {\n yield { type: \"log\", line: `T3 Code is healthy on port ${T3CODE_PORT}` };\n } else {\n yield { type: \"log\", line: `T3 Code container started but health endpoint not yet responding \\u2014 it may still be bootstrapping. Check: docker logs ${T3CODE_CONTAINER}` };\n }\n yield { type: \"step\", label: \"Starting codex feature-poller daemon\\u2026\" };\n const daemonCode = yield* runCommand(\"docker\", [\n \"exec\",\n \"-d\",\n \"eve-builder-hermes\",\n \"sh\",\n \"-c\",\n \"node /app/dist/commands/codex.js daemon start --detach 2>/tmp/codex-daemon.log &\"\n ]);\n if (daemonCode === 0) {\n yield { type: \"log\", line: \"Codex daemon started inside eve-builder-hermes\" };\n } else {\n yield { type: \"log\", line: \"Could not auto-start codex daemon \\u2014 run `eve builder codex daemon` manually once Hermes is running\" };\n }\n}\nasync function* wireHermesIntoOpenwebui() {\n const owEnv = \"/opt/openwebui/.env\";\n if (!existsSync2(owEnv)) {\n yield { type: \"log\", line: \"OpenWebUI not found \\u2014 skipping Hermes model-source wiring\" };\n return;\n }\n const secrets = await readEveSecrets7();\n let hermesApiKey = secrets?.builder?.hermes?.apiServerKey ?? \"\";\n if (!hermesApiKey) {\n const hermesEnvPath = join2(homedir(), \".eve\", \"hermes.env\");\n if (existsSync2(hermesEnvPath)) {\n const hermesEnv = readFileSync2(hermesEnvPath, \"utf-8\");\n hermesApiKey = hermesEnv.split(\"\\n\").find((l) => l.startsWith(\"API_SERVER_KEY=\"))?.split(\"=\", 2)[1]?.trim() ?? \"\";\n if (hermesApiKey) {\n try {\n const updated = await writeEveSecrets4({\n ...secrets ?? {},\n builder: {\n ...secrets?.builder ?? {},\n hermes: { ...secrets?.builder?.hermes ?? {}, apiServerKey: hermesApiKey }\n }\n });\n hermesApiKey = updated.builder?.hermes?.apiServerKey ?? hermesApiKey;\n } catch {\n }\n }\n }\n }\n if (!hermesApiKey) {\n yield {\n type: \"log\",\n line: \"Warning: Hermes API key not found \\u2014 OpenWebUI connection may fail. Run `eve update hermes` after setting the key.\"\n };\n }\n const result = await wireComponentAi(\"openwebui\", secrets);\n yield { type: \"log\", line: result.summary };\n if (result.outcome === \"ok\") {\n await markOpenwebuiConfigReconciled(secrets);\n }\n}\nvar HAS_INSTALL_RECIPE = /* @__PURE__ */ new Set([\n \"synap\",\n \"ollama\",\n \"rsshub\",\n \"openwebui\",\n \"openclaw\",\n \"hermes\",\n \"eve-dashboard\",\n \"stalwart\",\n \"bulwark\"\n]);\nasync function isContainerInState(name, state) {\n return new Promise((resolve) => {\n const child = spawn(\n \"docker\",\n [\"ps\", \"--filter\", `name=^${name}$`, \"--filter\", `status=${state}`, \"--format\", \"{{.Names}}\"],\n { stdio: [\"ignore\", \"pipe\", \"ignore\"] }\n );\n let out = \"\";\n let done = false;\n const timer = setTimeout(() => {\n if (done) return;\n done = true;\n child.kill(\"SIGKILL\");\n resolve(false);\n }, 4e3);\n child.stdout?.on(\"data\", (chunk) => {\n out += chunk.toString();\n });\n child.on(\"close\", () => {\n if (done) return;\n done = true;\n clearTimeout(timer);\n resolve(out.trim() === name);\n });\n child.on(\"error\", () => {\n if (done) return;\n done = true;\n clearTimeout(timer);\n resolve(false);\n });\n });\n}\nasync function containerExists(name) {\n return new Promise((resolve) => {\n const child = spawn(\"docker\", [\"ps\", \"-a\", \"--filter\", `name=^${name}$`, \"--format\", \"{{.Names}}\"], {\n stdio: [\"ignore\", \"pipe\", \"ignore\"]\n });\n let out = \"\";\n let done = false;\n const timer = setTimeout(() => {\n if (done) return;\n done = true;\n child.kill(\"SIGKILL\");\n resolve(false);\n }, 4e3);\n child.stdout?.on(\"data\", (chunk) => {\n out += chunk.toString();\n });\n child.on(\"close\", () => {\n if (done) return;\n done = true;\n clearTimeout(timer);\n resolve(out.trim() === name);\n });\n child.on(\"error\", () => {\n if (done) return;\n done = true;\n clearTimeout(timer);\n resolve(false);\n });\n });\n}\nasync function* removeOne(comp) {\n if (comp.alwaysInstall) {\n yield { type: \"error\", message: `${comp.label} is always-installed and cannot be removed.` };\n return;\n }\n const plan = removePlanFor(comp);\n if (plan.composeDir && existsSync2(plan.composeDir)) {\n const code = yield* runCommand(\n \"docker\",\n [\"compose\", \"down\", \"--volumes\"],\n { cwd: plan.composeDir }\n );\n if (code !== 0) {\n yield { type: \"log\", line: `compose down exited ${code} \\u2014 falling back to docker rm` };\n }\n }\n for (const name of plan.containerNames) {\n yield* dockerExec([\"rm\", \"-f\", name], `Removing ${name}\\u2026`);\n }\n if (comp.id === \"eve-dashboard\") {\n try {\n uninstallDashboardContainer();\n } catch (err) {\n yield {\n type: \"log\",\n line: `dashboard helper warning: ${err instanceof Error ? err.message : String(err)}`\n };\n }\n }\n try {\n await markRemoved(comp.id);\n } catch (err) {\n yield {\n type: \"log\",\n line: `warning: state.json wasn't updated (${err instanceof Error ? err.message : String(err)}) \\u2014 dashboard list may show ${comp.label} until next sync`\n };\n }\n yield { type: \"done\", summary: `${comp.label} removed` };\n}\nasync function* installOne(comp, opts) {\n let installedSet;\n try {\n installedSet = new Set(await entityStateManager2.getInstalledComponents());\n } catch {\n installedSet = /* @__PURE__ */ new Set();\n }\n const missingDeps = (comp.requires ?? []).filter((d) => !installedSet.has(d));\n if (missingDeps.length > 0) {\n yield {\n type: \"error\",\n message: `Missing prerequisites: ${missingDeps.join(\", \")}. Install those first.`\n };\n return;\n }\n if (installedSet.has(comp.id)) {\n yield { type: \"log\", line: `${comp.label} is already installed \\u2014 re-running install (idempotent).` };\n }\n yield { type: \"step\", label: `Installing ${comp.label}\\u2026` };\n try {\n yield* runInstallRecipe(comp, opts);\n } catch (err) {\n yield {\n type: \"error\",\n message: err instanceof Error ? err.message : String(err)\n };\n return;\n }\n try {\n const [refresh] = await materializeTargets(null, [\"traefik-routes\"]);\n if (refresh?.changed) {\n yield { type: \"log\", line: refresh.summary };\n }\n } catch {\n }\n try {\n await markInstalled(comp.id);\n } catch (err) {\n yield {\n type: \"log\",\n line: `warning: state.json wasn't updated (${err instanceof Error ? err.message : String(err)}) \\u2014 dashboard list may show stale state until next sync`\n };\n }\n yield* postInstallProvisionAgents(comp.id);\n if (comp.id === \"synap\") {\n yield* postInstallSeedBuilderWorkspace();\n }\n if (AI_CONSUMERS2.has(comp.id)) {\n try {\n const secrets = await readEveSecrets7();\n const result = await wireComponentAi(comp.id, secrets);\n if (result.outcome === \"ok\") {\n yield { type: \"log\", line: `AI config seeded: ${result.summary}` };\n } else if (result.outcome === \"skipped\") {\n yield { type: \"log\", line: `AI seed skipped: ${result.summary}` };\n } else {\n yield { type: \"log\", line: `warning: AI seed failed (${result.summary})` };\n }\n } catch (err) {\n yield {\n type: \"log\",\n line: `warning: AI seed step errored (${err instanceof Error ? err.message : String(err)})`\n };\n }\n }\n yield { type: \"done\", summary: `${comp.label} installed` };\n}\nasync function* runInstallRecipe(comp, opts) {\n switch (comp.id) {\n case \"traefik\":\n throw new Error(\"Install Traefik from the CLI: `eve add traefik`. The dashboard runs on top of it.\");\n case \"synap\": {\n const { runBrainInit } = await import(\"@eve/brain\");\n const explicitRepo = opts.synapRepo ?? process.env.SYNAP_REPO_ROOT;\n const secrets = await configStore.get();\n const domain = secrets?.domain?.primary ?? \"localhost\";\n const email = secrets?.domain?.email;\n await runBrainInit({\n synapRepo: explicitRepo,\n domain,\n email,\n adminBootstrapMode: \"token\",\n withAi: false,\n withOpenclaw: false,\n withRsshub: false\n });\n yield { type: \"log\", line: \"Synap brain initialised\" };\n return;\n }\n case \"ollama\": {\n const { runInferenceInit } = await import(\"@eve/brain\");\n await runInferenceInit({\n model: opts.model ?? \"llama3.1:8b\",\n withGateway: true,\n internalOllamaOnly: true\n });\n yield { type: \"log\", line: \"Ollama up\" };\n return;\n }\n case \"rsshub\": {\n const { RSSHubService } = await import(\"@eve/eyes\");\n const rsshub = new RSSHubService();\n if (await rsshub.isInstalled()) {\n yield { type: \"log\", line: \"RSSHub image already present \\u2014 skipping pull\" };\n } else {\n await rsshub.install({ port: 1200 });\n }\n yield { type: \"log\", line: \"RSSHub container running\" };\n return;\n }\n case \"openwebui\": {\n yield* installOpenWebUi();\n return;\n }\n case \"freellmapi\": {\n yield* installFreellmapi();\n return;\n }\n case \"stalwart\": {\n const { StalwartService } = await import(\"@eve/mouth\");\n const secrets = await readEveSecrets7();\n const domain = secrets?.domain?.primary;\n const ssl = secrets?.domain?.ssl ?? false;\n const publicUrl = publicComponentUrl(\"stalwart\", domain, ssl) ?? void 0;\n const svc = new StalwartService({\n publicUrl,\n adminPassword: secrets?.stalwart?.adminPassword\n });\n const { adminPassword } = await svc.install();\n await writeEveSecrets4({\n stalwart: {\n domain: domain ?? void 0,\n adminPassword,\n jmapUrl: publicUrl ? `${publicUrl}/jmap` : void 0,\n installedAt: (/* @__PURE__ */ new Date()).toISOString()\n }\n });\n yield { type: \"log\", line: \"Stalwart mail server running\" };\n if (publicUrl) {\n yield { type: \"log\", line: `Admin console: ${publicUrl}/admin (user: admin)` };\n } else {\n yield { type: \"log\", line: \"Set a domain (`eve domain set`) then recreate Stalwart to route mail.<domain>.\" };\n }\n yield { type: \"log\", line: \"Admin password saved to ~/.eve/secrets.json (stalwart.adminPassword)\" };\n yield {\n type: \"log\",\n line: \"\\u26A0 Mail ports 25, 465, 587, 993, 995 are now reachable on ALL host interfaces \\u2014 allow them through your firewall and keep everything else closed. (143/110/4190 are bound to loopback only.)\"\n };\n yield { type: \"log\", line: \"Next: set DKIM/SPF/DMARC + a PTR record, then verify with `eve doctor`.\" };\n return;\n }\n case \"bulwark\": {\n const { BulwarkService } = await import(\"@eve/mouth\");\n const secrets = await readEveSecrets7();\n const domain = secrets?.domain?.primary;\n const ssl = secrets?.domain?.ssl ?? false;\n const jmapUrl = publicComponentUrl(\"stalwart\", domain, ssl) ?? void 0;\n const { sessionSecret } = await new BulwarkService({\n jmapUrl,\n sessionSecret: secrets?.stalwart?.bulwarkSessionSecret\n }).install();\n if (sessionSecret) {\n await writeEveSecrets4({ stalwart: { bulwarkSessionSecret: sessionSecret } });\n }\n yield { type: \"log\", line: \"Bulwark webmail running\" };\n yield {\n type: \"log\",\n line: jmapUrl ? `Open webmail.<domain> and point the setup wizard at ${jmapUrl}` : \"Open the webmail UI and point the setup wizard at your Stalwart JMAP URL\"\n };\n return;\n }\n case \"eve-dashboard\": {\n const secrets = await readEveSecrets7();\n let secret = secrets?.dashboard?.secret;\n if (!secret) {\n secret = randomBytes(32).toString(\"hex\");\n await writeEveSecrets4({ dashboard: { secret, port: 7979 } });\n yield { type: \"log\", line: \"Generated new dashboard secret (saved to ~/.eve/secrets.json)\" };\n }\n installDashboardContainer({ workspaceRoot: process.cwd(), secret });\n yield { type: \"log\", line: \"Dashboard container running\" };\n return;\n }\n case \"openclaw\": {\n yield* installOpenclaw();\n return;\n }\n case \"hermes\": {\n yield* installHermes();\n return;\n }\n case \"t3code\": {\n yield* installT3Code();\n return;\n }\n case \"dokploy\":\n case \"opencode\":\n case \"openclaude\":\n throw new Error(\n `${comp.label} install requires the host CLI right now. Run \\`eve add ${comp.id}\\` on the host \\u2014 that path needs interactive input we can't reproduce here.`\n );\n default:\n throw new Error(`No install recipe for ${comp.id}`);\n }\n}\nvar FREELLMAPI_COMPOSE_YAML = `# FreeLLMAPI \\u2014 generated by @eve/lifecycle (regenerated on every install/update)\nservices:\n freellmapi:\n image: ghcr.io/tashfeenahmed/freellmapi:\\${FREELLMAPI_TAG:-latest}\n container_name: eve-brain-freellmapi\n restart: unless-stopped\n env_file:\n - .env\n environment:\n - NODE_ENV=production\n - PORT=3001\n volumes:\n - freellmapi-data:/app/server/data\n extra_hosts:\n - host.docker.internal:host-gateway\n healthcheck:\n test: [\"CMD\", \"node\", \"-e\", \"fetch('http://127.0.0.1:3001/api/ping').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"]\n interval: 30s\n timeout: 5s\n start_period: 15s\n retries: 3\n networks:\n - eve-network\n\nnetworks:\n eve-network:\n external: true\n\nvolumes:\n freellmapi-data:\n`;\nfunction writeFreellmapiCompose(deployDir) {\n mkdirSync(deployDir, { recursive: true });\n writeFileSync(join2(deployDir, \"docker-compose.yml\"), FREELLMAPI_COMPOSE_YAML);\n}\nfunction ensureFreellmapiEnv(deployDir) {\n mkdirSync(deployDir, { recursive: true });\n const envPath = join2(deployDir, \".env\");\n let existing = \"\";\n try {\n existing = readFileSync2(envPath, \"utf-8\");\n } catch {\n }\n if (/^ENCRYPTION_KEY=.+$/m.test(existing)) return { created: false };\n const key = randomBytes(32).toString(\"hex\");\n const merged = (existing.trimEnd() ? existing.trimEnd() + \"\\n\" : \"\") + `# Encrypts stored provider keys at rest. Rotating this orphans them.\nENCRYPTION_KEY=${key}\nPORT=3001\n`;\n writeFileSync(envPath, merged, { mode: 384 });\n return { created: true };\n}\nvar OPENWEBUI_COMPOSE_YAML = `# Open WebUI \\u2014 generated by @eve/lifecycle (regenerated on every install/update)\nservices:\n openwebui:\n image: ghcr.io/open-webui/open-webui:\\${WEBUI_DOCKER_TAG:-latest}\n container_name: hestia-openwebui\n restart: unless-stopped\n env_file:\n - .env\n environment:\n # Brand / chrome \\u2014 makes OpenWebUI feel like part of Eve, not a\n # generic chat. Most of these are overridable via .env.\n - WEBUI_NAME=\\${WEBUI_NAME:-Eve}\n - WEBUI_URL=\\${WEBUI_URL:-}\n - WEBUI_DESCRIPTION=\\${WEBUI_DESCRIPTION:-Sovereign AI chat wired to your Synap pod}\n\n - ENV=production\n - SCARF_NO_ANALYTICS=true\n - DO_NOT_TRACK=true\n\n # Backend wiring \\u2014 Synap IS as the OpenAI-compat hub. The plural\n # OPENAI_API_BASE_URLS / OPENAI_API_KEYS are written to .env by\n # the pipelines install path; env_file: passes them straight to\n # the container, so they take precedence over the singulars below.\n - ENABLE_OPENAI_API=true\n - OPENAI_API_BASE_URLS=\\${OPENAI_API_BASE_URLS:-http://eve-brain-synap:4000/v1}\n - OPENAI_API_KEYS=\\${OPENAI_API_KEYS:-}\n - OLLAMA_BASE_URL=\\${OLLAMA_BASE_URL:-http://eve-brain-ollama:11434}\n\n # Pre-selected model on first chat \\u2014 \\`synap/auto\\` falls through to\n # the user's defaultProvider in IS, so it picks up secrets.ai.\n - DEFAULT_MODELS=\\${DEFAULT_MODELS:-synap/auto}\n\n # Features\n - ENABLE_RAG=true\n - ENABLE_WEB_SEARCH=true\n - WEB_SEARCH_ENGINE=duckduckgo\n - ENABLE_COMMUNITY_SHARING=false\n - ENABLE_PERSISTENT_CONFIG=\\${ENABLE_PERSISTENT_CONFIG:-true}\n\n # Auth \\u2014 first signup auto-becomes admin (OpenWebUI's special-case).\n # Eve also writes WEBUI_ADMIN_EMAIL/PASSWORD/NAME to .env so first\n # boot can create the admin user headlessly without using the UI.\n # Subsequent signups follow DEFAULT_USER_ROLE; \"pending\" forces approval.\n - ENABLE_SIGNUP=\\${ENABLE_SIGNUP:-true}\n - DEFAULT_USER_ROLE=\\${DEFAULT_USER_ROLE:-pending}\n ports:\n - \"\\${OPEN_WEBUI_PORT:-3011}:8080\"\n volumes:\n - openwebui-data:/app/backend/data\n extra_hosts:\n - host.docker.internal:host-gateway\n networks:\n - eve-network\n\nnetworks:\n eve-network:\n external: true\n\nvolumes:\n openwebui-data:\n`;\nfunction writeOpenwebuiCompose(deployDir) {\n mkdirSync(deployDir, { recursive: true });\n writeFileSync(join2(deployDir, \"docker-compose.yml\"), OPENWEBUI_COMPOSE_YAML);\n}\nasync function reconcileOpenwebuiEnv(deployDir) {\n const bootstrap = await ensureOpenWebuiBootstrapSecrets();\n const secrets = bootstrap.secrets;\n const eveAgent = await readAgentKey(\"eve\");\n const synapApiKey = eveAgent?.hubApiKey ?? secrets?.synap?.apiKey ?? process.env.SYNAP_API_KEY ?? \"\";\n const isUrl = process.env.SYNAP_IS_URL ?? \"http://eve-brain-synap:4000\";\n const domain = secrets?.domain?.primary;\n const ssl = secrets?.domain?.ssl !== false;\n const protocol = ssl ? \"https\" : \"http\";\n const webuiUrl = domain ? `${protocol}://chat.${domain}` : \"\";\n writeOpenwebuiEnv(deployDir, {\n synapApiKey,\n synapIsUrl: isUrl,\n webuiUrl,\n adminEmail: secrets.builder?.openwebui?.adminEmail ?? \"admin@eve.local\",\n adminPassword: secrets.builder?.openwebui?.adminPassword ?? \"\",\n adminName: secrets.builder?.openwebui?.adminName ?? \"Eve Admin\"\n });\n}\nasync function markOpenwebuiConfigReconciled(secrets) {\n await writeEveSecrets4({\n builder: {\n ...secrets?.builder ?? {},\n openwebui: {\n ...secrets?.builder?.openwebui ?? {},\n lastConfigReconciledAt: (/* @__PURE__ */ new Date()).toISOString()\n }\n }\n });\n}\nasync function* installOpenWebUi() {\n const deployDir = \"/opt/openwebui\";\n const bootstrap = await ensureOpenWebuiBootstrapSecrets();\n const secrets = bootstrap.secrets;\n const eveAgent = await readAgentKey(\"eve\");\n const synapApiKey = eveAgent?.hubApiKey ?? secrets?.synap?.apiKey ?? process.env.SYNAP_API_KEY ?? \"\";\n const isUrl = process.env.SYNAP_IS_URL ?? \"http://eve-brain-synap:4000\";\n writeOpenwebuiCompose(deployDir);\n const domain = secrets?.domain?.primary;\n const ssl = secrets?.domain?.ssl !== false;\n const protocol = ssl ? \"https\" : \"http\";\n const webuiUrl = domain ? `${protocol}://chat.${domain}` : \"\";\n const envResult = writeOpenwebuiEnv(deployDir, {\n synapApiKey,\n synapIsUrl: isUrl,\n webuiUrl,\n adminEmail: secrets.builder?.openwebui?.adminEmail ?? \"admin@eve.local\",\n adminPassword: secrets.builder?.openwebui?.adminPassword ?? \"\",\n adminName: secrets.builder?.openwebui?.adminName ?? \"Eve Admin\"\n });\n const generatedParts = [\n bootstrap.generated.adminEmail ? \"email\" : \"\",\n bootstrap.generated.adminPassword ? \"password\" : \"\",\n bootstrap.generated.adminName ? \"name\" : \"\",\n envResult.secretKeyGenerated ? \"secret-key\" : \"\"\n ].filter(Boolean);\n yield {\n type: \"log\",\n line: generatedParts.length > 0 ? `OpenWebUI headless admin bootstrap prepared (${generatedParts.join(\", \")} generated)` : \"OpenWebUI headless admin bootstrap prepared (existing credentials reused)\"\n };\n yield* ensureEveNetwork();\n const code = yield* runCommand(\n \"docker\",\n [\"compose\", \"up\", \"-d\"],\n { cwd: deployDir }\n );\n if (code !== 0) throw new Error(`docker compose up exited ${code}`);\n}\nasync function* installFreellmapi() {\n const deployDir = \"/opt/freellmapi\";\n writeFreellmapiCompose(deployDir);\n const { created } = ensureFreellmapiEnv(deployDir);\n yield {\n type: \"log\",\n line: created ? \"Generated a new ENCRYPTION_KEY for FreeLLMAPI (stored 0600 in .env)\" : \"Reusing the existing FreeLLMAPI ENCRYPTION_KEY (rotating it would orphan stored provider keys)\"\n };\n yield* ensureEveNetwork();\n const code = yield* runCommand(\"docker\", [\"compose\", \"up\", \"-d\"], { cwd: deployDir });\n if (code !== 0) throw new Error(`docker compose up exited ${code}`);\n let healthy = false;\n for (let i = 0; i < 30; i++) {\n try {\n const out = execSync(\n `docker exec eve-brain-freellmapi node -e \"fetch('http://127.0.0.1:3001/livez').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))\"`,\n { encoding: \"utf-8\", stdio: [\"pipe\", \"pipe\", \"ignore\"] }\n );\n void out;\n healthy = true;\n break;\n } catch {\n await new Promise((r) => setTimeout(r, 2e3));\n }\n }\n if (!healthy) {\n yield { type: \"log\", line: \"FreeLLMAPI did not report ready within 60s \\u2014 skipping provider registration.\" };\n return;\n }\n const unifiedKey = readFreellmapiUnifiedKey();\n if (!unifiedKey) {\n yield {\n type: \"log\",\n line: \"FreeLLMAPI is running, but its unified API key was not found in the container logs (it is printed only on FIRST boot). Read it from the dashboard, then run: eve brain providers add freellmapi --url http://eve-brain-freellmapi:3001/v1 --key <key> --priority 90\"\n };\n return;\n }\n yield* registerFreellmapiProvider(unifiedKey);\n}\nfunction parseFreellmapiUnifiedKey(logs) {\n const matches = logs.match(/freellmapi-[0-9a-f]{48}/g);\n return matches?.[matches.length - 1] ?? null;\n}\nfunction readFreellmapiUnifiedKey() {\n try {\n return parseFreellmapiUnifiedKey(\n execSync(`docker logs eve-brain-freellmapi 2>&1`, {\n encoding: \"utf-8\",\n maxBuffer: 10 * 1024 * 1024,\n stdio: [\"pipe\", \"pipe\", \"pipe\"]\n })\n );\n } catch {\n return null;\n }\n}\nasync function* registerFreellmapiProvider(unifiedKey) {\n const secrets = await readEveSecrets7();\n const podUrl = resolveSynapUrl3(secrets);\n const apiKey = await readAgentKeyOrLegacy(\"eve\");\n if (!podUrl || !apiKey) {\n yield {\n type: \"log\",\n line: \"No pod configured \\u2014 FreeLLMAPI is running but not registered as a provider yet. Run `eve brain providers add freellmapi \\u2026` once the pod is up.\"\n };\n return;\n }\n try {\n const result = await upsertPodProvider(podUrl, apiKey, {\n providerId: \"freellmapi\",\n name: \"FreeLLMAPI (free-tier gateway)\",\n baseUrl: \"http://eve-brain-freellmapi:3001/v1\",\n apiKeyEnvVar: \"FREELLMAPI_API_KEY\",\n apiKey: unifiedKey,\n enabled: true,\n // Last in the cascade — see the docblock on installFreellmapi.\n priority: 90,\n tags: [\"free-tier\", \"gateway\", \"fallback\"],\n models: [\n {\n id: \"auto\",\n tier: \"free\",\n // The router picks a tool-capable model when the request carries\n // `tools`, and 4xxs upfront if none is enabled — so this is honest.\n supportsTools: true,\n costPer1MInput: 0,\n costPer1MOutput: 0\n }\n ]\n });\n yield { type: \"log\", line: describePodProviderResult(result) };\n } catch (err) {\n yield {\n type: \"log\",\n line: `FreeLLMAPI is running, but registering it on the pod failed: ${err instanceof Error ? err.message : String(err)}`\n };\n }\n}\nasync function* decommissionLegacyPipelines() {\n const containerName = \"eve-openwebui-pipelines\";\n const deployDir = \"/opt/openwebui-pipelines\";\n let didSomething = false;\n if (await containerExists(containerName)) {\n yield { type: \"step\", label: `Removing legacy pipelines container ${containerName}` };\n yield* runCommand(\"docker\", [\"rm\", \"-f\", containerName], {});\n didSomething = true;\n }\n if (existsSync2(deployDir)) {\n const { rmSync } = await import(\"fs\");\n rmSync(deployDir, { recursive: true, force: true });\n yield { type: \"log\", line: `Removed ${deployDir}` };\n didSomething = true;\n }\n try {\n const installed = await entityStateManager2.getInstalledComponents();\n if (installed.includes(\"openwebui-pipelines\")) {\n await entityStateManager2.updateComponentEntry(\"openwebui-pipelines\", { state: \"missing\" });\n yield { type: \"log\", line: \"Marked openwebui-pipelines as missing in entity state\" };\n didSomething = true;\n }\n } catch {\n }\n if (!didSomething) return;\n yield {\n type: \"log\",\n line: \"Legacy Pipelines sidecar decommissioned \\u2014 Synap memory + channel sync now live as inline OpenWebUI Functions.\"\n };\n}\nvar OPENCLAW_CONTAINER = \"eve-arms-openclaw\";\nasync function* installOpenclaw() {\n const secrets = await readEveSecrets7();\n const ollamaUrl = process.env.OLLAMA_URL ?? \"http://eve-brain-ollama:11434\";\n const synapApiUrl = SYNAP_BACKEND_INTERNAL_URL;\n const openclawAgent = await readAgentKey(\"openclaw\");\n const synapApiKey = openclawAgent?.hubApiKey ?? secrets?.synap?.apiKey ?? \"\";\n const dokployApiUrl = secrets?.builder?.dokployApiUrl ?? \"\";\n const aiProvider = pickPrimaryProvider(secrets, \"openclaw\");\n const defaultModel = aiProvider?.defaultModel ?? \"llama3.2\";\n const m = secrets?.arms?.messaging ?? {};\n const v = secrets?.arms?.voice ?? {};\n const openclawConfigDir = join2(homedir(), \".eve\", \"openclaw\");\n const openclawConfigFile = join2(openclawConfigDir, \"openclaw.json\");\n mkdirSync(openclawConfigDir, { recursive: true });\n if (!existsSync2(openclawConfigFile)) {\n writeFileSync(openclawConfigFile, JSON.stringify({\n gateway: {\n mode: \"local\",\n controlUi: {\n allowedOrigins: [\"http://localhost:18789\", \"http://127.0.0.1:18789\"]\n }\n }\n }, null, 2));\n }\n try {\n execSync(`chown -R 1000:1000 ${openclawConfigDir} 2>/dev/null || true`);\n } catch {\n }\n let gatewayToken = secrets?.arms?.openclaw?.gatewayToken ?? \"\";\n if (!gatewayToken) {\n gatewayToken = randomBytes(32).toString(\"hex\");\n await writeEveSecrets4({ arms: { ...secrets?.arms ?? {}, openclaw: { gatewayToken } } });\n }\n yield* ensureEveNetwork();\n yield { type: \"step\", label: \"Pulling OpenClaw image\\u2026\" };\n const pullCode = yield* runCommand(\n \"docker\",\n [\"pull\", \"ghcr.io/openclaw/openclaw:latest\"]\n );\n if (pullCode !== 0) throw new Error(`docker pull exited ${pullCode}`);\n yield { type: \"step\", label: \"Starting OpenClaw\\u2026\" };\n const args = [\n \"run\",\n \"-d\",\n \"--name\",\n OPENCLAW_CONTAINER,\n \"--network\",\n \"eve-network\",\n \"-p\",\n \"3000:3000\",\n \"-e\",\n `OLLAMA_URL=${ollamaUrl}`,\n \"-e\",\n `DEFAULT_MODEL=${defaultModel}`,\n \"-e\",\n `SYNAP_API_URL=${synapApiUrl}`,\n \"-e\",\n `SYNAP_API_KEY=${synapApiKey}`,\n \"-e\",\n `DOKPLOY_API_URL=${dokployApiUrl}`,\n \"-e\",\n `OPENCLAW_GATEWAY_TOKEN=${gatewayToken}`,\n \"-e\",\n `MESSAGING_ENABLED=${Boolean(m.enabled)}`,\n \"-e\",\n `MESSAGING_PLATFORM=${m.platform ?? \"\"}`,\n \"-e\",\n `MESSAGING_BOT_TOKEN=${m.botToken ?? \"\"}`,\n \"-e\",\n `VOICE_ENABLED=${Boolean(v.enabled)}`,\n \"-e\",\n `VOICE_PROVIDER=${v.provider ?? \"\"}`,\n \"-e\",\n `VOICE_PHONE_NUMBER=${v.phoneNumber ?? \"\"}`,\n \"-e\",\n `VOICE_SIP_URI=${v.sipUri ?? \"\"}`,\n \"-v\",\n `${openclawConfigDir}:/home/node/.openclaw`,\n \"--restart\",\n \"unless-stopped\",\n \"ghcr.io/openclaw/openclaw:latest\"\n ];\n const runCode = yield* runCommand(\"docker\", args);\n if (runCode !== 0) throw new Error(`docker run exited ${runCode}`);\n yield { type: \"log\", line: \"OpenClaw container running\" };\n}\nfunction sanitizeComposeFile(path) {\n try {\n if (!existsSync2(path)) return;\n const cur = readFileSync2(path, \"utf-8\");\n const cleaned = cur.replace(/^version:\\s*['\"]?[^\\n]*['\"]?\\s*\\n/m, \"\");\n if (cleaned !== cur) writeFileSync(path, cleaned);\n } catch {\n }\n}\nasync function* ensureEveNetwork() {\n let exists = false;\n try {\n const { stdout } = await new Promise((resolve, reject) => {\n const child = spawn(\"docker\", [\"network\", \"ls\", \"--filter\", \"name=^eve-network$\", \"--format\", \"{{.Name}}\"], {\n stdio: [\"ignore\", \"pipe\", \"ignore\"]\n });\n let out = \"\";\n const t = setTimeout(() => {\n child.kill(\"SIGKILL\");\n reject(new Error(\"timeout\"));\n }, 4e3);\n child.stdout.on(\"data\", (c) => {\n out += c.toString();\n });\n child.on(\"close\", () => {\n clearTimeout(t);\n resolve({ stdout: out });\n });\n child.on(\"error\", (e) => {\n clearTimeout(t);\n reject(e);\n });\n });\n exists = stdout.trim() === \"eve-network\";\n } catch {\n }\n if (!exists) {\n yield { type: \"step\", label: \"Creating eve-network\\u2026\" };\n yield* runCommand(\"docker\", [\"network\", \"create\", \"eve-network\"]);\n }\n}\nvar ORGAN_MAP = {\n synap: \"brain\",\n ollama: \"brain\",\n openclaw: \"arms\",\n hermes: \"arms\",\n rsshub: \"eyes\",\n traefik: \"legs\",\n openwebui: \"eyes\",\n dokploy: \"builder\",\n opencode: \"builder\",\n openclaude: \"builder\",\n \"eve-dashboard\": \"legs\"\n};\nasync function markInstalled(componentId) {\n const organ = ORGAN_MAP[componentId];\n if (organ) await entityStateManager2.updateOrgan(organ, \"ready\", { version: \"0.1.0\" });\n await entityStateManager2.updateComponentEntry(componentId, { state: \"ready\" });\n const current = await entityStateManager2.getInstalledComponents();\n if (!current.includes(componentId)) {\n await entityStateManager2.updateSetupProfile({ components: [...current, componentId] });\n }\n}\nasync function markRemoved(componentId) {\n const organ = ORGAN_MAP[componentId];\n if (organ) await entityStateManager2.updateOrgan(organ, \"missing\");\n await entityStateManager2.updateComponentEntry(componentId, { state: \"missing\" });\n const current = await entityStateManager2.getInstalledComponents();\n const next = current.filter((id) => id !== componentId);\n await entityStateManager2.updateSetupProfile({ components: next });\n}\nasync function* runAction(componentId, action, opts = {}) {\n if (componentId === \"openwebui-pipelines\") {\n yield* decommissionLegacyPipelines();\n yield { type: \"done\", summary: \"openwebui-pipelines decommissioned (replaced by native OpenWebUI Functions)\" };\n return;\n }\n let comp;\n try {\n comp = resolveComponent(componentId);\n } catch (err) {\n yield { type: \"error\", message: err instanceof Error ? err.message : String(err) };\n return;\n }\n switch (action) {\n case \"install\":\n yield* installOne(comp, opts);\n return;\n case \"remove\":\n yield* removeOne(comp);\n return;\n case \"update\":\n yield* updateContainer(comp);\n return;\n case \"start\":\n yield* startContainer(comp);\n return;\n case \"stop\":\n yield* stopContainer(comp);\n return;\n case \"restart\":\n yield* restartContainer(comp);\n return;\n case \"recreate\":\n yield* recreateContainer(comp, opts);\n return;\n }\n}\nasync function* recreateContainer(comp, opts) {\n const name = comp.service?.containerName;\n if (name) {\n yield { type: \"step\", label: `Removing ${comp.label} container\\u2026` };\n yield* runCommand(\"docker\", [\"rm\", \"-f\", name]);\n }\n yield* installOne(comp, opts);\n}\nasync function runActionToCompletion(componentId, action, opts = {}) {\n const logs = [];\n let summary = \"\";\n let error;\n for await (const ev of runAction(componentId, action, opts)) {\n if (ev.type === \"log\") logs.push(ev.line);\n else if (ev.type === \"step\") logs.push(`\\u25B6 ${ev.label}`);\n else if (ev.type === \"done\") summary = ev.summary;\n else if (ev.type === \"error\") error = ev.message;\n }\n return { ok: !error, summary, logs, error };\n}\nasync function runRepair(request) {\n await appendOperationalEvent3({\n type: \"repair.started\",\n target: request.kind,\n componentId: request.componentId,\n details: { target: request.target }\n }).catch(() => {\n });\n let result;\n let eventRequest = request;\n try {\n switch (request.kind) {\n case \"create-eve-network\": {\n let commandError;\n for await (const event of runCommand(\"docker\", [\"network\", \"create\", \"eve-network\"])) {\n if (event.type === \"error\") commandError = event.message;\n }\n if (commandError && !commandError.includes(\"already exists\")) throw new Error(commandError);\n result = { ok: true, summary: \"eve-network created\", recheck: { doctorGroup: \"network\" } };\n break;\n }\n case \"start-container\":\n case \"start-component\":\n if (!request.componentId) throw new Error(\"componentId required\");\n result = await runActionToCompletion(request.componentId, \"start\");\n result.recheck = { doctorGroup: \"containers\", componentId: request.componentId };\n break;\n case \"restart-component\":\n if (!request.componentId) throw new Error(\"componentId required\");\n result = await runActionToCompletion(request.componentId, \"restart\");\n result.recheck = { doctorGroup: \"containers\", componentId: request.componentId };\n break;\n case \"recreate-component\":\n if (!request.componentId) throw new Error(\"componentId required\");\n result = await runActionToCompletion(request.componentId, \"recreate\");\n result.recheck = { doctorGroup: \"containers\", componentId: request.componentId };\n break;\n case \"materialize-target\": {\n if (!request.target) throw new Error(\"target required\");\n const [materialized] = await materializeTargets(null, [request.target]);\n result = {\n ok: materialized?.ok ?? false,\n summary: materialized?.summary ?? \"No materializer result\",\n error: materialized?.error,\n recheck: { target: request.target }\n };\n break;\n }\n case \"repair-domain-routing\": {\n const [materialized] = await materializeTargets(null, [\"traefik-routes\"]);\n result = {\n ok: materialized.ok,\n summary: materialized.summary,\n error: materialized.error,\n recheck: { doctorGroup: \"network\" }\n };\n break;\n }\n case \"repair-pod-url\": {\n const results = await materializeTargets(null, [\"backend-env\", \"traefik-routes\"]);\n const failed = results.find((item) => !item.ok);\n result = {\n ok: !failed,\n summary: failed ? failed.summary : \"Pod URL materialized\",\n error: failed?.error,\n recheck: { doctorGroup: \"config\" }\n };\n break;\n }\n case \"rewire-openclaw\":\n eventRequest = { ...request, kind: \"rewire-ai\", componentId: \"openclaw\" };\n // falls through\n case \"rewire-ai\": {\n const [materialized] = await materializeTargets(null, [\"ai-wiring\"], {\n components: eventRequest.componentId ? [eventRequest.componentId] : void 0\n });\n result = {\n ok: materialized.ok,\n summary: materialized.summary,\n error: materialized.error,\n recheck: { doctorGroup: \"wiring\", componentId: eventRequest.componentId }\n };\n break;\n }\n default:\n result = { ok: false, summary: \"Unknown repair\", error: `Unknown repair: ${request.kind}` };\n }\n } catch (error) {\n result = {\n ok: false,\n summary: `${request.kind} failed`,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n await appendOperationalEvent3({\n type: result.ok ? \"repair.succeeded\" : \"repair.failed\",\n target: eventRequest.kind,\n componentId: eventRequest.componentId,\n ok: result.ok,\n summary: result.summary,\n error: result.error,\n details: { target: eventRequest.target, recheck: result.recheck }\n }).catch(() => {\n });\n return result;\n}\nexport {\n COMPONENTS4 as COMPONENTS,\n FetchRunner,\n InstallConfigError,\n combineSignals,\n defaultPrompts,\n deleteEntityBestEffort,\n ensureBuilderWorkspace,\n ensurePodProvisioningToken,\n extractEntityId,\n gatherInstallConfig,\n getAuthStatus,\n isFetchTransportError,\n isKeyValid,\n isValidDomain,\n isValidEmail,\n materializeTargets,\n migrateLegacyToAgents,\n migrateSetupProfileToSecrets,\n normalizeBareDomain,\n parseFreellmapiUnifiedKey,\n probeSynapDiscovery,\n provisionAgent,\n provisionAllAgents,\n readEnvFile,\n readEnvVar,\n reconcileOpenclawConfig,\n renewAgentKey,\n resolveComponent2 as resolveComponent,\n resolveProvisioningToken,\n runAction,\n runActionToCompletion,\n runBackendPreflight,\n runDoctorChecks,\n runHubProtocolProbes,\n runRepair,\n shortId,\n truncate,\n writeEnvVar\n};\n"],"mappings":"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","names":[]}
|