@useorgx/wizard 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +19 -20
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/banner.ts","../src/constants.ts","../src/lib/browser-auth.ts","../src/lib/fs.ts","../src/surfaces/openclaw-config.ts","../src/lib/auth-store.ts","../src/lib/auth.ts","../src/lib/setup-status.ts","../src/lib/openclaw-health.ts","../src/lib/hosted-mcp-health.ts","../src/lib/hosted-mcp-tool-check.ts","../src/lib/npm-registry-health.ts","../src/lib/workspaces.ts","../src/lib/workspace-connectivity.ts","../src/surfaces/mcp-config.ts","../src/surfaces/names.ts","../src/surfaces/detection.ts","../src/surfaces/registry.ts","../src/lib/wizard-state.ts","../src/lib/continuity.ts","../src/lib/initiatives.ts","../src/lib/skills.ts","../src/lib/setup-workspace.ts","../src/lib/founder-preset.ts","../src/lib/mutation-output.ts","../src/spinner.ts"],"sourcesContent":["import * as clack from \"@clack/prompts\";\nimport { hostname } from \"node:os\";\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\n\nimport { renderBanner } from \"./banner.js\";\nimport { ORGX_WIZARD_AUTH_PATH } from \"./constants.js\";\nimport {\n acknowledgeBrowserPairing,\n openBrowser,\n startBrowserPairing,\n waitForBrowserPairing,\n} from \"./lib/browser-auth.js\";\nimport {\n checkOrgxAuth,\n describeSetupStatusScope,\n normalizeOrgxBaseUrl,\n resolveOrgxAuth,\n verifyOrgxAuth,\n type OrgxAuthCheckResult,\n} from \"./lib/auth.js\";\nimport { clearWizardAuth, writeWizardAuth } from \"./lib/auth-store.js\";\nimport { persistContinuityDefaults } from \"./lib/continuity.js\";\nimport { runFounderPreset, type FounderPresetResult } from \"./lib/founder-preset.js\";\nimport { getOrCreateWizardInstallationId } from \"./lib/wizard-state.js\";\nimport {\n installOrgxSkills,\n resolveSkillPackNames,\n type SkillsInstallReport,\n} from \"./lib/skills.js\";\nimport { summarizeMutationResults } from \"./lib/mutation-output.js\";\nimport {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n type OrgxWorkspace,\n} from \"./lib/workspaces.js\";\nimport { runWorkspaceSetup, type WorkspaceSetupResult } from \"./lib/setup-workspace.js\";\nimport type { SetupStatusResult } from \"./lib/setup-status.js\";\nimport type { OpenClawHealthCheck } from \"./lib/openclaw-health.js\";\nimport type { HostedMcpHealthCheck } from \"./lib/hosted-mcp-health.js\";\nimport type { HostedMcpToolCheck } from \"./lib/hosted-mcp-tool-check.js\";\nimport type { NpmRegistryCheck } from \"./lib/npm-registry-health.js\";\nimport type { WorkspaceConnectivityCheck } from \"./lib/workspace-connectivity.js\";\nimport { createOrgxSpinner } from \"./spinner.js\";\nimport { detectSurface } from \"./surfaces/detection.js\";\nimport {\n assessDoctorReport,\n addMcpSurface,\n addSurface,\n listSurfaceStatuses,\n removeMcpSurface,\n removeSurface,\n runDoctor,\n setupDetectedSurfaces,\n type SurfaceMutationResult,\n type SurfaceStatus,\n} from \"./surfaces/registry.js\";\n\nfunction formatAuthSource(source: OrgxAuthCheckResult[\"source\"]): string {\n switch (source) {\n case \"environment\":\n return \"ORGX_API_KEY\";\n case \"wizard-store\":\n return \"wizard auth store\";\n case \"openclaw-config-file\":\n return \"OpenClaw config\";\n default:\n return \"not configured\";\n }\n}\n\nfunction printSurfaceTable(statuses: SurfaceStatus[]): void {\n for (const status of statuses) {\n const state = status.configured\n ? pc.green(\"configured\")\n : status.detected\n ? pc.yellow(\"detected\")\n : pc.dim(\"not detected\");\n const mode = status.mode === \"automated\" ? pc.cyan(\"auto\") : pc.magenta(\"manual\");\n console.log(`${pc.bold(status.name.padEnd(10))} ${mode.padEnd(14)} ${state}`);\n console.log(` ${status.summary}`);\n if (status.path) {\n console.log(` path: ${status.path}`);\n }\n for (const detail of status.details) {\n console.log(` - ${detail}`);\n }\n }\n}\n\nfunction printMutationResults(results: SurfaceMutationResult[]): void {\n for (const result of summarizeMutationResults(results)) {\n const marker = result.state === \"updated\" ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(`${pc.bold(result.name)} ${marker} ${result.message}`);\n }\n}\n\nfunction printSkillInstallReport(report: SkillsInstallReport): void {\n for (const write of report.writes) {\n const marker = write.changed ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(`${pc.bold(write.label)} ${marker} ${write.path}`);\n }\n\n for (const pack of report.packs) {\n const changedCount = pack.files.filter((file) => file.changed).length;\n const marker = changedCount > 0 ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(\n `${pc.bold(pack.name)} ${marker} ${changedCount}/${pack.files.length} files written`,\n );\n\n for (const file of pack.files) {\n const state = file.changed ? \"updated\" : \"unchanged\";\n console.log(` - ${state} ${file.path}`);\n }\n }\n}\n\nfunction printWorkspace(workspace: OrgxWorkspace): void {\n console.log(\n `${pc.bold(workspace.name)}${workspace.isDefault ? ` ${pc.green(\"(default)\")}` : \"\"}`,\n );\n console.log(` id: ${workspace.id}`);\n if (workspace.description) {\n console.log(` description: ${workspace.description}`);\n }\n if (workspace.createdAt) {\n console.log(` created: ${workspace.createdAt}`);\n }\n if (workspace.updatedAt) {\n console.log(` updated: ${workspace.updatedAt}`);\n }\n}\n\nfunction printWorkspaceList(workspaces: OrgxWorkspace[]): void {\n if (workspaces.length === 0) {\n console.log(pc.yellow(\"No workspaces found for this OrgX user.\"));\n return;\n }\n\n for (const workspace of workspaces) {\n printWorkspace(workspace);\n }\n}\n\nfunction printWorkspaceSetupResult(result: WorkspaceSetupResult): void {\n console.log(pc.bold(\"workspace bootstrap\"));\n\n const statusLabel =\n result.status === \"updated\"\n ? pc.green(\"updated\")\n : result.status === \"unchanged\"\n ? pc.yellow(\"unchanged\")\n : pc.dim(result.status);\n console.log(` ${statusLabel} ${result.message}`);\n\n if (result.workspace) {\n console.log(` workspace: ${result.workspace.name}`);\n console.log(` id: ${result.workspace.id}`);\n if (result.workspace.isDefault) {\n console.log(\" default: yes\");\n }\n }\n}\n\nfunction printFounderPresetResult(result: FounderPresetResult): void {\n printMutationResults(result.surfaceResults);\n console.log(\"\");\n printSkillInstallReport(result.skillReport);\n\n if (result.workspaceSetup) {\n console.log(\"\");\n printWorkspaceSetupResult(result.workspaceSetup);\n }\n\n if (result.demoInitiative) {\n console.log(\"\");\n console.log(pc.bold(\"demo initiative\"));\n console.log(\n ` ${result.demoInitiative.created ? pc.green(\"created\") : pc.yellow(\"unchanged\")} ${result.demoInitiative.initiative.title}`,\n );\n console.log(` live: ${result.demoInitiative.liveUrl}`);\n }\n}\n\nfunction normalizePromptResult<T>(value: T | symbol): T | symbol {\n return value;\n}\n\nasync function secretPrompt(message: string): Promise<string | null> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return null;\n }\n\n process.stdout.write(`${message}: `);\n\n const stdin = process.stdin;\n const stdout = process.stdout;\n const previousRawMode = stdin.isRaw === true;\n\n return await new Promise<string | null>((resolve) => {\n let value = \"\";\n\n const cleanup = (result: string | null) => {\n stdin.off(\"data\", onData);\n if (stdin.isTTY) {\n stdin.setRawMode(previousRawMode);\n }\n stdin.pause();\n stdout.write(\"\\n\");\n resolve(result);\n };\n\n const onData = (chunk: Buffer | string) => {\n const text = chunk.toString(\"utf8\");\n\n for (const char of text) {\n if (char === \"\\u0003\") {\n cleanup(null);\n return;\n }\n\n if (char === \"\\r\" || char === \"\\n\") {\n cleanup(value.trim());\n return;\n }\n\n if (char === \"\\u007f\" || char === \"\\b\") {\n value = value.slice(0, -1);\n continue;\n }\n\n if (char >= \" \") {\n value += char;\n }\n }\n };\n\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.on(\"data\", onData);\n });\n}\n\nasync function selectPrompt(input: {\n initialValue?: string | undefined;\n message: string;\n options: { hint?: string; label: string; value: string }[];\n}): Promise<string | symbol> {\n const promptInput = input.initialValue\n ? { ...input, initialValue: input.initialValue }\n : { message: input.message, options: input.options };\n\n return normalizePromptResult(await clack.select<string>(promptInput));\n}\n\nasync function textPrompt(input: {\n initialValue?: string | undefined;\n message: string;\n placeholder?: string;\n validate?: (value: string | undefined) => Error | string | undefined;\n}): Promise<string | symbol> {\n const promptInput = input.initialValue\n ? { ...input, initialValue: input.initialValue }\n : {\n message: input.message,\n ...(input.placeholder ? { placeholder: input.placeholder } : {}),\n ...(input.validate ? { validate: input.validate } : {}),\n };\n\n return normalizePromptResult(await clack.text(promptInput));\n}\n\nasync function verifyAndPersistAuth(\n apiKey: string,\n options: { baseUrl?: string },\n): Promise<{\n verification: OrgxAuthCheckResult;\n} | {\n openclawResults: SurfaceMutationResult[];\n stored: Awaited<ReturnType<typeof writeWizardAuth>>;\n verification: OrgxAuthCheckResult;\n}> {\n const trimmedKey = apiKey.trim();\n if (!trimmedKey.toLowerCase().startsWith(\"oxk_\")) {\n throw new Error(\"Expected a per-user OrgX API key that starts with oxk_.\");\n }\n\n const baseUrl = normalizeOrgxBaseUrl(options.baseUrl);\n const verification = await verifyOrgxAuth({\n apiKey: trimmedKey,\n keyPrefix: trimmedKey.slice(0, 12),\n baseUrl,\n source: \"wizard-store\",\n });\n\n if (!verification.ok) {\n return { verification };\n }\n\n const stored = await writeWizardAuth({\n apiKey: trimmedKey,\n baseUrl,\n verifiedAt: new Date().toISOString(),\n });\n const openclawResults = detectSurface(\"openclaw\").detected\n ? await addSurface(\"openclaw\")\n : [];\n\n return { openclawResults, stored, verification };\n}\n\nasync function syncContinuityAfterAuth(seed: {\n executionMode?: \"cloud\" | \"local\" | null;\n workspaceName?: string | null;\n} = {}): Promise<void> {\n try {\n const workspace = await getCurrentWorkspace().catch(() => null);\n persistContinuityDefaults({\n ...(seed.executionMode !== undefined ? { executionMode: seed.executionMode } : {}),\n workspace,\n workspaceName: seed.workspaceName ?? workspace?.name ?? null,\n });\n } catch {\n // Auth success should not depend on workspace or continuity writes.\n }\n}\n\nfunction printOpenClawHealth(check: OpenClawHealthCheck): void {\n console.log(pc.bold(\"openclaw runtime\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Gateway health check skipped.\")}`);\n } else if (check.ok) {\n const via = check.method === \"cli\" ? \"CLI\" : \"HTTP\";\n console.log(` ${pc.green(`healthy via ${via}`)}`);\n } else {\n const via = check.method === \"none\" ? \"unavailable\" : check.method.toUpperCase();\n console.log(` ${pc.red(`unhealthy via ${via}`)} ${check.error ?? \"unknown error\"}`);\n }\n\n if (check.url) {\n console.log(` url: ${check.url}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printHostedMcpHealth(check: HostedMcpHealthCheck): void {\n console.log(pc.bold(\"hosted mcp\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Hosted MCP health check skipped.\")}`);\n } else if (check.ok) {\n console.log(` ${pc.green(\"reachable\")}`);\n } else {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n }\n\n console.log(` url: ${check.url}`);\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printHostedMcpToolCheck(check: HostedMcpToolCheck): void {\n console.log(pc.bold(\"hosted mcp tool call\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Hosted MCP tool verification skipped.\")}`);\n } else if (check.ok) {\n console.log(` ${pc.green(\"authenticated tool call ok\")}`);\n } else {\n console.log(` ${pc.red(\"authenticated tool call failed\")} ${check.error ?? \"unknown error\"}`);\n }\n\n console.log(` tool: ${check.toolName}`);\n console.log(` url: ${check.url}`);\n\n if (check.source !== \"none\") {\n console.log(` auth source: ${formatAuthSource(check.source)}`);\n }\n\n if (check.baseUrl) {\n console.log(` base url: ${check.baseUrl}`);\n }\n\n if (check.initializeStatus !== undefined) {\n console.log(` initialize status: ${check.initializeStatus}`);\n }\n\n if (check.callStatus !== undefined) {\n console.log(` tool call status: ${check.callStatus}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printNpmRegistryHealth(check: NpmRegistryCheck): void {\n console.log(pc.bold(\"npm registry\"));\n\n if (!check.reachable) {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n } else if (check.published) {\n console.log(\n ` ${pc.green(\"reachable\")} ${check.packageName}${check.version ? `@${check.version}` : \"\"}`,\n );\n } else {\n console.log(` ${pc.yellow(\"reachable\")} ${check.error ?? `${check.packageName} is not published yet.`}`);\n }\n\n console.log(` url: ${check.url}`);\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction parseTimeoutSeconds(value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new Error(\"--timeout must be a positive number of seconds.\");\n }\n return parsed;\n}\n\nfunction describeBrowserPairingFailure(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return `${message} Use \\`wizard auth login --api-key <oxk_...>\\` or \\`wizard auth set-key <oxk_...>\\` to fall back to a manual key.`;\n}\n\nfunction printAuthStatus(status: OrgxAuthCheckResult): void {\n console.log(pc.bold(\"orgx auth\"));\n\n if (!status.configured) {\n console.log(` ${pc.yellow(status.error ?? \"No OrgX API key configured.\")}`);\n return;\n }\n\n const state = status.ok\n ? pc.green(\"verified\")\n : status.skipped\n ? pc.yellow(\"skipped\")\n : pc.red(\"invalid\");\n\n console.log(\n ` ${state} ${status.keyPrefix ?? \"unknown\"} via ${formatAuthSource(status.source)}`,\n );\n if (status.baseUrl) {\n console.log(` base url: ${status.baseUrl}`);\n }\n if (status.path) {\n console.log(` path: ${status.path}`);\n }\n if (status.verifiedAt) {\n console.log(` verified at: ${status.verifiedAt}`);\n }\n if (!status.ok && status.error) {\n console.log(` error: ${status.error}`);\n }\n}\n\nfunction printRemoteSetupStatus(status: SetupStatusResult): void {\n if (status.skipped) {\n console.log(pc.yellow(status.error ?? \"Remote setup check skipped.\"));\n console.log(pc.dim(describeSetupStatusScope()));\n return;\n }\n\n if (!status.ok) {\n console.log(pc.red(`Remote setup check failed: ${status.error ?? \"unknown error\"}`));\n if (status.status) {\n console.log(`status: ${status.status}`);\n }\n return;\n }\n\n console.log(pc.green(`Remote setup check passed via ${status.url}`));\n if (status.data) {\n console.log(JSON.stringify(status.data, null, 2));\n }\n}\n\nfunction printWorkspaceConnectivity(check: WorkspaceConnectivityCheck): void {\n console.log(pc.bold(\"workspace connectivity\"));\n\n if (!check.configured) {\n console.log(` ${pc.yellow(check.error ?? \"Workspace connectivity check skipped.\")}`);\n return;\n }\n\n if (!check.ok) {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n } else if (check.workspace) {\n console.log(` ${pc.green(\"reachable\")} ${check.workspace.name}`);\n console.log(` workspace id: ${check.workspace.id}`);\n if (check.workspace.isDefault) {\n console.log(\" default: yes\");\n }\n }\n\n if (check.baseUrl) {\n console.log(` base url: ${check.baseUrl}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printDoctorAssessment(report: ReturnType<typeof assessDoctorReport>): void {\n console.log(pc.bold(\"doctor summary\"));\n\n if (report.issues.length === 0) {\n console.log(` ${pc.green(\"ready\")} No blocking issues detected.`);\n return;\n }\n\n const headline = report.ok\n ? pc.yellow(\"warnings only\")\n : pc.red(\"blocking issues detected\");\n console.log(` ${headline}`);\n\n for (const issue of report.issues) {\n const label = issue.level === \"error\" ? pc.red(\"error\") : pc.yellow(\"warning\");\n console.log(` ${label} ${issue.title}`);\n console.log(` fix: ${issue.suggestion}`);\n }\n}\n\nasync function main(): Promise<void> {\n const program = new Command();\n program\n .name(\"orgx-wizard\")\n .description(\"One-line CLI onboarding for OrgX surfaces.\")\n .showHelpAfterError();\n\n program.hook(\"preAction\", () => {\n console.log(renderBanner());\n });\n\n program\n .command(\"setup\")\n .description(\"Patch all detected automated OrgX surfaces.\")\n .option(\"--preset <name>\", \"run a setup bundle (currently: founder)\")\n .action(async (options: { preset?: string }) => {\n if (options.preset) {\n if (options.preset !== \"founder\") {\n throw new Error(`Unknown setup preset '${options.preset}'. Supported presets: founder.`);\n }\n\n const spinner = createOrgxSpinner(\"Running founder setup preset\");\n spinner.start();\n const presetResult = await runFounderPreset(\n {\n cancel: clack.cancel,\n isCancel: clack.isCancel,\n select: selectPrompt,\n text: textPrompt,\n },\n {\n interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n },\n );\n\n if (\"status\" in presetResult) {\n spinner.stop();\n if (presetResult.status === \"cancelled\") {\n return;\n }\n printWorkspaceSetupResult(presetResult);\n return;\n }\n\n spinner.succeed(\"Founder setup preset complete\");\n printFounderPresetResult(presetResult);\n\n console.log(\"\");\n const doctor = await runDoctor();\n printSurfaceTable(doctor.surfaces);\n console.log(\"\");\n printAuthStatus(doctor.auth);\n console.log(\"\");\n printHostedMcpHealth(doctor.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(doctor.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(doctor.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(doctor.workspace);\n console.log(\"\");\n printOpenClawHealth(doctor.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(doctor.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(doctor);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n return;\n }\n\n const spinner = createOrgxSpinner(\"Configuring detected OrgX surfaces\");\n spinner.start();\n const results = await setupDetectedSurfaces();\n spinner.succeed(\"Detected surfaces configured\");\n printMutationResults(results);\n\n const resolvedAuth = await resolveOrgxAuth();\n if (resolvedAuth) {\n console.log(\"\");\n const workspaceSetup = await runWorkspaceSetup(\n {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n },\n {\n cancel: clack.cancel,\n isCancel: clack.isCancel,\n select: selectPrompt,\n text: textPrompt,\n },\n {\n interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n },\n );\n if (workspaceSetup.status !== \"cancelled\") {\n printWorkspaceSetupResult(workspaceSetup);\n } else {\n return;\n }\n }\n\n console.log(\"\");\n const doctor = await runDoctor();\n printSurfaceTable(doctor.surfaces);\n console.log(\"\");\n printAuthStatus(doctor.auth);\n console.log(\"\");\n printHostedMcpHealth(doctor.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(doctor.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(doctor.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(doctor.workspace);\n console.log(\"\");\n printOpenClawHealth(doctor.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(doctor.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(doctor);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n });\n\n const auth = program.command(\"auth\").description(\"Manage OrgX API key auth for the wizard.\");\n\n auth\n .command(\"status\")\n .description(\"Show the resolved OrgX API key source and verify it against OrgX.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Checking OrgX auth\");\n spinner.start();\n const status = await checkOrgxAuth();\n spinner.stop();\n printAuthStatus(status);\n });\n\n auth\n .command(\"login\")\n .description(\"Start browser pairing for OrgX auth, with direct API key fallback for CI and blocked browsers.\")\n .option(\"--api-key <key>\", \"Bypass browser pairing and verify this OrgX API key directly.\")\n .option(\"--base-url <url>\", \"OrgX base URL\")\n .option(\"--device-name <name>\", \"Device name shown during browser approval.\")\n .option(\"--no-open\", \"Do not automatically open the browser connect URL.\")\n .option(\"--timeout <seconds>\", \"How long to wait for browser pairing before giving up.\", parseTimeoutSeconds, 600)\n .action(async (options: { apiKey?: string; baseUrl?: string; deviceName?: string; open?: boolean; timeout: number }) => {\n if (options.apiKey) {\n const spinner = createOrgxSpinner(\"Verifying OrgX API key\");\n spinner.start();\n const result = await verifyAndPersistAuth(options.apiKey, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX API key verification failed\");\n printAuthStatus(result.verification);\n return;\n }\n\n spinner.succeed(\"OrgX API key verified and saved\");\n await syncContinuityAfterAuth();\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n return;\n }\n\n const installationId = getOrCreateWizardInstallationId();\n const spinner = createOrgxSpinner(\"Starting OrgX browser pairing\");\n spinner.start();\n\n try {\n const pairing = await startBrowserPairing({\n installationId,\n baseUrl: options.baseUrl,\n deviceName: options.deviceName ?? hostname(),\n platform: process.platform,\n });\n spinner.succeed(\"OrgX browser pairing started\");\n\n console.log(`Open to continue: ${pairing.connectUrl}`);\n if (options.open !== false) {\n const openResult = openBrowser(pairing.connectUrl);\n if (!openResult.ok && openResult.error) {\n console.log(pc.yellow(`Browser open failed: ${openResult.error}`));\n }\n }\n\n spinner.start();\n spinner.text = pc.cyan(\"Waiting for OrgX browser approval\");\n const ready = await waitForBrowserPairing({\n baseUrl: options.baseUrl,\n pairingId: pairing.pairingId,\n pollIntervalMs: pairing.pollIntervalMs,\n pollToken: pairing.pollToken,\n timeoutMs: options.timeout * 1000,\n });\n\n spinner.text = pc.cyan(\"Verifying OrgX API key\");\n const result = await verifyAndPersistAuth(ready.key!, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX browser pairing delivered an invalid API key\");\n printAuthStatus(result.verification);\n return;\n }\n\n await acknowledgeBrowserPairing({\n baseUrl: options.baseUrl,\n pairingId: pairing.pairingId,\n pollToken: pairing.pollToken,\n }).catch((error: unknown) => {\n console.log(pc.yellow(`Pairing acknowledge failed: ${error instanceof Error ? error.message : String(error)}`));\n });\n\n spinner.succeed(\"OrgX browser pairing completed\");\n await syncContinuityAfterAuth({\n executionMode: ready.executionMode,\n workspaceName: ready.workspaceName,\n });\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (ready.workspaceName) {\n console.log(`workspace: ${ready.workspaceName}`);\n }\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n } catch (error) {\n spinner.fail(\"OrgX browser pairing failed\");\n console.log(pc.red(describeBrowserPairingFailure(error)));\n }\n });\n\n auth\n .command(\"set-key\")\n .description(\"Verify and persist a per-user OrgX API key for the wizard.\")\n .argument(\"<apiKey>\", \"per-user OrgX API key (oxk_...)\")\n .option(\"--base-url <url>\", \"OrgX base URL\")\n .action(async (apiKey: string, options: { baseUrl?: string }) => {\n const spinner = createOrgxSpinner(\"Verifying OrgX API key\");\n spinner.start();\n const result = await verifyAndPersistAuth(apiKey, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX API key verification failed\");\n printAuthStatus(result.verification);\n return;\n }\n\n spinner.succeed(\"OrgX API key verified and saved\");\n await syncContinuityAfterAuth();\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n });\n\n auth\n .command(\"clear\")\n .description(\"Remove the wizard-local saved OrgX API key.\")\n .action(async () => {\n const removed = await clearWizardAuth();\n if (removed) {\n console.log(pc.green(\"Removed the wizard-local OrgX API key.\"));\n } else {\n console.log(pc.yellow(\"No wizard-local OrgX API key was stored.\"));\n }\n\n const resolved = await resolveOrgxAuth();\n if (resolved) {\n console.log(\n `Effective OrgX auth still resolves from ${formatAuthSource(resolved.source)} (${resolved.keyPrefix}).`,\n );\n }\n });\n\n const surface = program.command(\"surface\").description(\"Manage supported OrgX surfaces.\");\n\n surface\n .command(\"list\")\n .description(\"Show supported surfaces and their current status.\")\n .action(() => {\n printSurfaceTable(listSurfaceStatuses());\n });\n\n surface\n .command(\"add\")\n .description(\"Patch one surface or all automated surfaces.\")\n .argument(\"<names...>\", \"surface names or 'all'\")\n .action(async (names: string[]) => {\n const results = await addSurface(names as Parameters<typeof addSurface>[0]);\n printMutationResults(results);\n });\n\n surface\n .command(\"remove\")\n .description(\"Remove OrgX-managed config from one surface or all automated surfaces.\")\n .argument(\"<names...>\", \"surface names or 'all'\")\n .action((names: string[]) => {\n const results = removeSurface(names as Parameters<typeof removeSurface>[0]);\n printMutationResults(results);\n });\n\n const mcp = program\n .command(\"mcp\")\n .description(\"Manage OrgX MCP entries for Claude, Cursor, Codex, VS Code, Windsurf, and Zed.\");\n\n mcp\n .command(\"add\")\n .description(\"Add OrgX MCP entries to one client or all supported MCP clients.\")\n .argument(\"[surfaces...]\", \"claude, cursor, codex, vscode, windsurf, zed, or all\", [\"all\"])\n .action(async (names: string[]) => {\n const results = await addMcpSurface(names as Parameters<typeof addMcpSurface>[0]);\n printMutationResults(results);\n });\n\n mcp\n .command(\"remove\")\n .description(\"Remove OrgX MCP entries from one client or all supported MCP clients.\")\n .argument(\"[surfaces...]\", \"claude, cursor, codex, vscode, windsurf, zed, or all\", [\"all\"])\n .action((names: string[]) => {\n const results = removeMcpSurface(names as Parameters<typeof removeMcpSurface>[0]);\n printMutationResults(results);\n });\n\n const workspace = program\n .command(\"workspace\")\n .description(\"Inspect and create OrgX workspaces.\");\n\n workspace\n .command(\"current\")\n .description(\"Show the current OrgX workspace.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Loading current OrgX workspace\");\n spinner.start();\n const current = await getCurrentWorkspace();\n spinner.stop();\n\n if (!current) {\n console.log(pc.yellow(\"No OrgX workspaces found for the current user.\"));\n return;\n }\n\n printWorkspace(current);\n });\n\n workspace\n .command(\"list\")\n .description(\"List OrgX workspaces accessible with the current API key.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Loading OrgX workspaces\");\n spinner.start();\n const workspaces = await listWorkspaces();\n spinner.stop();\n printWorkspaceList(workspaces);\n });\n\n workspace\n .command(\"create\")\n .description(\"Create a new OrgX workspace.\")\n .argument(\"<name>\", \"workspace name\")\n .option(\"--description <text>\", \"workspace description\")\n .action(async (name: string, options: { description?: string }) => {\n const spinner = createOrgxSpinner(\"Creating OrgX workspace\");\n spinner.start();\n const created = await createWorkspace(\n {\n name,\n ...(options.description ? { description: options.description } : {}),\n },\n );\n spinner.succeed(\"OrgX workspace created\");\n printWorkspace(created);\n if (!created.isDefault) {\n console.log(\"\");\n console.log(pc.dim(`Run \\`wizard workspace set-default ${created.id}\\` to promote it.`));\n }\n });\n\n workspace\n .command(\"set-default\")\n .description(\"Set the default OrgX workspace.\")\n .argument(\"<id>\", \"workspace id\")\n .action(async (id: string) => {\n const spinner = createOrgxSpinner(\"Updating default OrgX workspace\");\n spinner.start();\n const result = await setDefaultWorkspace({ id });\n spinner.succeed(\n result.changed ? \"Default OrgX workspace updated\" : \"OrgX workspace already set as default\",\n );\n printWorkspace(result.workspace);\n });\n\n program\n .command(\"doctor\")\n .description(\"Verify local OrgX surface config and optional remote setup status.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Running OrgX doctor\");\n spinner.start();\n const report = await runDoctor();\n spinner.stop();\n printSurfaceTable(report.surfaces);\n console.log(\"\");\n printAuthStatus(report.auth);\n console.log(\"\");\n printHostedMcpHealth(report.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(report.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(report.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(report.workspace);\n console.log(\"\");\n printOpenClawHealth(report.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(report.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(report);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n });\n\n const skills = program\n .command(\"skills\")\n .description(\"Install OrgX rules and Claude skill packs.\");\n\n skills\n .command(\"add\")\n .description(\"Write Cursor and Claude OrgX rules and install OrgX Claude skill packs.\")\n .argument(\"[packs...]\", \"skill pack names or 'all'\", [\"all\"])\n .action(async (packs: string[]) => {\n const selectedPacks = resolveSkillPackNames(packs);\n const spinner = createOrgxSpinner(\"Installing OrgX rules and skills\");\n spinner.start();\n const report = await installOrgxSkills({ skillNames: selectedPacks });\n spinner.succeed(\"OrgX rules and skills installed\");\n printSkillInstallReport(report);\n });\n\n await program.parseAsync(process.argv);\n}\n\nmain().catch((error) => {\n console.error(pc.red(error instanceof Error ? error.message : String(error)));\n process.exitCode = 1;\n});\n","import pc from \"picocolors\";\n\nexport function renderBanner(): string {\n const lines = [\n \" ____ ____ _______ __\",\n \" / __ \\\\/ __ \\\\ / ____/ |/ /\",\n \"/ / / / /_/ // / __ | / \",\n \"/ /_/ / _, _// /_/ // | \",\n \"\\\\____/_/ |_| \\\\____//_/|_| \",\n ];\n\n return lines.map((line) => pc.cyan(line)).join(\"\\n\");\n}\n\n","import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport const ORGX_HOSTED_MCP_KEY = \"orgx\";\nexport const ORGX_LOCAL_MCP_KEY = \"orgx-openclaw\";\nexport const ORGX_HOSTED_MCP_URL = \"https://mcp.useorgx.com/mcp\";\nexport const ORGX_HOSTED_MCP_HEALTH_URL = \"https://mcp.useorgx.com/health\";\nexport const ORGX_WIZARD_NPM_PACKAGE_NAME = \"@useorgx/wizard\";\nexport const NPM_REGISTRY_BASE_URL = \"https://registry.npmjs.org\";\nexport const DEFAULT_OPENCLAW_GATEWAY_PORT = 18_789;\nexport const DEFAULT_ORGX_BASE_URL =\n process.env.ORGX_BASE_URL?.trim() || \"https://useorgx.com\";\n\nconst HOME = homedir();\nconst APPDATA = process.env.APPDATA?.trim();\nconst LOCAL_APPDATA = process.env.LOCALAPPDATA?.trim();\nconst XDG_CONFIG_HOME =\n process.env.XDG_CONFIG_HOME?.trim() || join(HOME, \".config\");\nexport const ORGX_WIZARD_CONFIG_HOME =\n process.env.ORGX_WIZARD_CONFIG_HOME?.trim() ||\n join(XDG_CONFIG_HOME, \"useorgx\", \"wizard\");\nexport const ORGX_WIZARD_AUTH_PATH = join(ORGX_WIZARD_CONFIG_HOME, \"auth.json\");\nexport const ORGX_WIZARD_STATE_PATH = join(ORGX_WIZARD_CONFIG_HOME, \"state.json\");\nexport const ORGX_WIZARD_KEYTAR_SERVICE = \"@useorgx/wizard\";\nexport const ORGX_WIZARD_KEYTAR_ACCOUNT = \"orgx-api-key\";\n\nfunction normalizeOrgxApiBaseUrl(baseUrl: string): string {\n const normalized = baseUrl.replace(/\\/+$/, \"\");\n if (/\\/api(\\/|$)/.test(normalized)) {\n return normalized;\n }\n return `${normalized}/api`;\n}\n\nconst ORGX_API_BASE_URL = normalizeOrgxApiBaseUrl(DEFAULT_ORGX_BASE_URL);\nexport const ORGX_SETUP_STATUS_URL = `${ORGX_API_BASE_URL}/setup/status`;\nexport const ORGX_AUTH_VERIFY_URL = `${ORGX_API_BASE_URL}/auth/verify`;\nexport const ORGX_CLIENT_SYNC_URL = `${ORGX_API_BASE_URL}/client/sync`;\n\nfunction uniquePaths(paths: Array<string | undefined>): string[] {\n return [...new Set(paths.filter((path): path is string => Boolean(path)))];\n}\n\nexport const CLAUDE_DIR = join(HOME, \".claude\");\nexport const CURSOR_DIR = join(HOME, \".cursor\");\nexport const CODEX_DIR = join(HOME, \".codex\");\nexport const OPENCLAW_DIR = join(HOME, \".openclaw\");\nexport const CLAUDE_SKILLS_DIR = join(CLAUDE_DIR, \"skills\");\nexport const CLAUDE_ORGX_SKILL_DIR = join(CLAUDE_SKILLS_DIR, \"orgx\");\nexport const CLAUDE_ORGX_SKILL_PATH = join(CLAUDE_ORGX_SKILL_DIR, \"SKILL.md\");\nexport const CURSOR_RULES_DIR = join(CURSOR_DIR, \"rules\");\nexport const CURSOR_ORGX_RULE_PATH = join(CURSOR_RULES_DIR, \"orgx.md\");\n\nexport const CLAUDE_MCP_PATHS = uniquePaths([join(CLAUDE_DIR, \"mcp.json\")]);\nexport const CURSOR_MCP_PATHS = uniquePaths([join(CURSOR_DIR, \"mcp.json\")]);\nexport const CODEX_CONFIG_PATHS = uniquePaths([join(CODEX_DIR, \"config.toml\")]);\nexport const OPENCLAW_CONFIG_PATHS = uniquePaths([\n join(OPENCLAW_DIR, \"openclaw.json\"),\n]);\n\nexport const CLAUDE_MCP_PATH = CLAUDE_MCP_PATHS[0];\nexport const CURSOR_MCP_PATH = CURSOR_MCP_PATHS[0];\nexport const CODEX_CONFIG_PATH = CODEX_CONFIG_PATHS[0];\nexport const OPENCLAW_CONFIG_PATH = OPENCLAW_CONFIG_PATHS[0];\n\nexport const CLAUDE_INSTALL_PATHS = uniquePaths([CLAUDE_DIR]);\nexport const CURSOR_INSTALL_PATHS = uniquePaths([CURSOR_DIR]);\nexport const CODEX_INSTALL_PATHS = uniquePaths([CODEX_DIR]);\nexport const OPENCLAW_INSTALL_PATHS = uniquePaths([OPENCLAW_DIR]);\n\nexport const VSCODE_MCP_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Code\", \"User\", \"mcp.json\"),\n join(XDG_CONFIG_HOME, \"Code\", \"User\", \"mcp.json\"),\n APPDATA ? join(APPDATA, \"Code\", \"User\", \"mcp.json\") : undefined,\n]);\nexport const VSCODE_INSTALL_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Code\", \"User\"),\n join(XDG_CONFIG_HOME, \"Code\", \"User\"),\n APPDATA ? join(APPDATA, \"Code\", \"User\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Microsoft VS Code\") : undefined,\n]);\n\nexport const WINDSURF_MCP_PATHS = uniquePaths([\n join(HOME, \".codeium\", \"windsurf\", \"mcp_config.json\"),\n]);\nexport const WINDSURF_INSTALL_PATHS = uniquePaths([\n join(HOME, \".codeium\", \"windsurf\"),\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Windsurf\") : undefined,\n]);\n\nexport const ZED_SETTINGS_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Zed\", \"settings.json\"),\n join(XDG_CONFIG_HOME, \"zed\", \"settings.json\"),\n APPDATA ? join(APPDATA, \"Zed\", \"settings.json\") : undefined,\n]);\nexport const ZED_INSTALL_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Zed\"),\n join(XDG_CONFIG_HOME, \"zed\"),\n APPDATA ? join(APPDATA, \"Zed\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Zed\") : undefined,\n]);\n\nexport const CHATGPT_APP_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"OpenAI\"),\n join(HOME, \"Library\", \"Application Support\", \"com.openai.chat\"),\n join(XDG_CONFIG_HOME, \"OpenAI\"),\n join(XDG_CONFIG_HOME, \"openai\"),\n APPDATA ? join(APPDATA, \"OpenAI\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"OpenAI\") : undefined,\n]);\n","import { spawnSync } from \"node:child_process\";\n\nimport { buildOrgxApiUrl, normalizeOrgxBaseUrl } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport type PairingStatus =\n | \"pending\"\n | \"authorized\"\n | \"ready\"\n | \"consumed\"\n | \"expired\"\n | \"cancelled\"\n | \"failed\";\n\nexport interface BrowserPairingStartResult {\n pairingId: string;\n pollToken: string;\n connectUrl: string;\n expiresAt: string;\n pollIntervalMs: number;\n}\n\nexport interface BrowserPairingPollResult {\n pairingId: string;\n status: PairingStatus;\n expiresAt: string;\n workspaceName: string | null;\n keyPrefix: string | null;\n executionMode: \"cloud\" | \"local\" | null;\n errorCode: string | null;\n errorMessage: string | null;\n key?: string;\n}\n\nexport interface BrowserPairingOpenResult {\n ok: boolean;\n error?: string;\n}\n\ninterface FetchJsonOptions {\n body?: string | undefined;\n fetchImpl?: typeof fetch | undefined;\n method: string;\n url: string;\n}\n\nfunction asString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction parseJsonBody(text: string): unknown {\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nasync function fetchJson<T>({\n url,\n method,\n body,\n fetchImpl = fetch,\n}: FetchJsonOptions): Promise<T> {\n const response = await fetchImpl(url, {\n method,\n headers: {\n Accept: \"application/json\",\n ...(body ? { \"Content-Type\": \"application/json\" } : {}),\n },\n ...(body ? { body } : {}),\n signal: AbortSignal.timeout(7_000),\n });\n\n const payload = parseJsonBody(await response.text());\n\n if (!response.ok) {\n const errorMessage = isRecord(payload)\n ? asString(payload.error) ?? asString(payload.message)\n : typeof payload === \"string\"\n ? payload\n : null;\n throw new Error(errorMessage ?? `HTTP ${response.status}`);\n }\n\n if (isRecord(payload) && payload.ok === true && \"data\" in payload) {\n return payload.data as T;\n }\n\n return payload as T;\n}\n\nfunction parsePairingStartResult(value: unknown): BrowserPairingStartResult {\n if (!isRecord(value)) {\n throw new Error(\"OrgX pairing start returned an invalid response.\");\n }\n\n const pairingId = asString(value.pairingId);\n const pollToken = asString(value.pollToken);\n const connectUrl = asString(value.connectUrl);\n const expiresAt = asString(value.expiresAt);\n const pollIntervalMs = typeof value.pollIntervalMs === \"number\"\n ? value.pollIntervalMs\n : Number.NaN;\n\n if (!pairingId || !pollToken || !connectUrl || !expiresAt || !Number.isFinite(pollIntervalMs)) {\n throw new Error(\"OrgX pairing start returned an incomplete response.\");\n }\n\n return { pairingId, pollToken, connectUrl, expiresAt, pollIntervalMs };\n}\n\nfunction parsePairingPollResult(value: unknown): BrowserPairingPollResult {\n if (!isRecord(value)) {\n throw new Error(\"OrgX pairing poll returned an invalid response.\");\n }\n\n const pairingId = asString(value.pairingId);\n const status = asString(value.status) as PairingStatus | null;\n const expiresAt = asString(value.expiresAt);\n\n if (!pairingId || !status || !expiresAt) {\n throw new Error(\"OrgX pairing poll returned an incomplete response.\");\n }\n\n return {\n pairingId,\n status,\n expiresAt,\n workspaceName: asString(value.workspaceName),\n keyPrefix: asString(value.keyPrefix),\n executionMode: value.executionMode === \"cloud\" || value.executionMode === \"local\"\n ? value.executionMode\n : null,\n errorCode: asString(value.errorCode),\n errorMessage: asString(value.errorMessage),\n ...(asString(value.key) ? { key: asString(value.key)! } : {}),\n };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function startBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n deviceName?: string | undefined;\n installationId: string;\n platform?: string | undefined;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingStartResult> {\n const data = await fetchJson<unknown>({\n url: buildOrgxApiUrl(\"/plugin/openclaw/pairings\", options.baseUrl),\n method: \"POST\",\n body: JSON.stringify({\n installationId: options.installationId,\n ...(options.deviceName ? { deviceName: options.deviceName } : {}),\n ...(options.platform ? { platform: options.platform } : {}),\n }),\n fetchImpl,\n });\n\n return parsePairingStartResult(data);\n}\n\nexport async function pollBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollToken: string;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingPollResult> {\n const baseUrl = normalizeOrgxBaseUrl(options.baseUrl);\n const url = new URL(buildOrgxApiUrl(`/plugin/openclaw/pairings/${options.pairingId}`, baseUrl));\n url.searchParams.set(\"pollToken\", options.pollToken);\n\n const data = await fetchJson<unknown>({\n url: url.toString(),\n method: \"GET\",\n fetchImpl,\n });\n\n return parsePairingPollResult(data);\n}\n\nexport async function waitForBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollIntervalMs?: number | undefined;\n pollToken: string;\n timeoutMs?: number | undefined;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingPollResult> {\n const timeoutMs = options.timeoutMs ?? 10 * 60_000;\n const pollIntervalMs = options.pollIntervalMs ?? 1_500;\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n const result = await pollBrowserPairing(\n {\n baseUrl: options.baseUrl,\n pairingId: options.pairingId,\n pollToken: options.pollToken,\n },\n fetchImpl,\n );\n\n if (result.status === \"ready\") {\n if (!result.key) {\n throw new Error(\"OrgX pairing completed without returning an API key.\");\n }\n return result;\n }\n\n if (result.status === \"failed\") {\n throw new Error(result.errorMessage ?? \"OrgX pairing failed.\");\n }\n\n if (result.status === \"expired\") {\n throw new Error(\"OrgX pairing expired before it was approved.\");\n }\n\n if (result.status === \"cancelled\") {\n throw new Error(\"OrgX pairing was cancelled in the browser.\");\n }\n\n if (result.status === \"consumed\") {\n throw new Error(\"OrgX pairing was already consumed by another client.\");\n }\n\n await sleep(Math.min(5_000, Math.max(350, pollIntervalMs)));\n }\n\n throw new Error(\n `Timed out waiting for OrgX pairing after ${Math.round(timeoutMs / 1000)} seconds.`,\n );\n}\n\nexport async function acknowledgeBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollToken: string;\n },\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await fetchJson<unknown>({\n url: buildOrgxApiUrl(`/plugin/openclaw/pairings/${options.pairingId}/ack`, options.baseUrl),\n method: \"POST\",\n body: JSON.stringify({ pollToken: options.pollToken }),\n fetchImpl,\n });\n}\n\nexport function openBrowser(url: string): BrowserPairingOpenResult {\n const platform = process.platform;\n const result = platform === \"darwin\"\n ? spawnSync(\"open\", [url], { stdio: \"ignore\" })\n : platform === \"win32\"\n ? spawnSync(\"cmd\", [\"/c\", \"start\", \"\", url], { stdio: \"ignore\" })\n : spawnSync(\"xdg-open\", [url], { stdio: \"ignore\" });\n\n if (result.error) {\n return { ok: false, error: result.error.message };\n }\n\n if (typeof result.status === \"number\" && result.status !== 0) {\n return { ok: false, error: `Browser open command exited with code ${result.status}.` };\n }\n\n return { ok: true };\n}\n","import {\n chmodSync,\n existsSync,\n mkdirSync,\n readFileSync,\n statSync,\n unlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function readTextIfExists(path: string): string | null {\n if (!existsSync(path)) return null;\n\n try {\n if (!statSync(path).isFile()) {\n return null;\n }\n\n return readFileSync(path, \"utf8\");\n } catch (error) {\n const code = typeof error === \"object\" && error && \"code\" in error\n ? String(error.code)\n : undefined;\n\n if (code === \"ENOENT\" || code === \"ENOTDIR\" || code === \"EISDIR\") {\n return null;\n }\n\n throw error;\n }\n}\n\nexport function writeTextFile(\n path: string,\n content: string,\n options: { mode?: number } = {},\n): void {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, content, {\n encoding: \"utf8\",\n ...(options.mode === undefined ? {} : { mode: options.mode }),\n });\n\n if (options.mode !== undefined) {\n chmodSync(path, options.mode);\n }\n}\n\nexport function writeJsonFile(\n path: string,\n value: unknown,\n options: { mode?: number } = {},\n): void {\n writeTextFile(path, `${JSON.stringify(value, null, 2)}\\n`, options);\n}\n\nexport function deleteFileIfExists(path: string): boolean {\n if (!existsSync(path)) return false;\n\n try {\n if (!statSync(path).isFile()) {\n return false;\n }\n\n unlinkSync(path);\n return true;\n } catch (error) {\n const code = typeof error === \"object\" && error && \"code\" in error\n ? String(error.code)\n : undefined;\n\n if (code === \"ENOENT\" || code === \"ENOTDIR\" || code === \"EISDIR\") {\n return false;\n }\n\n throw error;\n }\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nexport function parseJsonObject(input: string | null): Record<string, unknown> {\n if (!input) return {};\n\n try {\n const parsed = JSON.parse(input);\n return isRecord(parsed) ? parsed : {};\n } catch {\n return {};\n }\n}\n\nexport function readObject(\n value: unknown,\n fallback: Record<string, unknown> = {},\n): Record<string, unknown> {\n return isRecord(value) ? value : fallback;\n}\n","import {\n DEFAULT_OPENCLAW_GATEWAY_PORT,\n DEFAULT_ORGX_BASE_URL,\n} from \"../constants.js\";\nimport { isRecord, parseJsonObject, readObject } from \"../lib/fs.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface OpenClawInspection {\n configured: boolean;\n installed: boolean;\n pluginKey: \"orgx\" | \"openclaw-plugin\" | null;\n details: string[];\n}\n\nexport interface OpenClawAuthConfig {\n apiKey: string;\n baseUrl: string;\n pluginKey: \"orgx\" | \"openclaw-plugin\" | null;\n enabled: boolean;\n}\n\nexport interface OpenClawOrgxDefaultsInput {\n apiKey?: string;\n baseUrl?: string;\n}\n\nfunction cleanupEmptyObjects(value: JsonObject): void {\n for (const [key, child] of Object.entries(value)) {\n if (!isRecord(child)) continue;\n cleanupEmptyObjects(child);\n if (Object.keys(child).length === 0) {\n delete value[key];\n }\n }\n}\n\nexport function readOpenClawGatewayPort(raw: unknown): number {\n const isValidPort = (value: number): boolean =>\n Number.isFinite(value) && value >= 1 && value <= 65_535;\n\n const root = isRecord(raw) ? raw : {};\n const gateway = readObject(root.gateway);\n const port = gateway.port;\n\n if (typeof port === \"number\" && isValidPort(port)) {\n return Math.floor(port);\n }\n\n if (typeof port === \"string\") {\n const parsed = Number.parseInt(port, 10);\n if (isValidPort(parsed)) {\n return parsed;\n }\n }\n\n return DEFAULT_OPENCLAW_GATEWAY_PORT;\n}\n\nexport function buildLocalMcpUrl(raw: unknown): string {\n return `http://127.0.0.1:${readOpenClawGatewayPort(raw)}/orgx/mcp`;\n}\n\nfunction resolvePluginKey(entries: JsonObject): \"orgx\" | \"openclaw-plugin\" {\n if (isRecord(entries[\"openclaw-plugin\"])) {\n return \"openclaw-plugin\";\n }\n\n if (isRecord(entries.orgx)) {\n return \"orgx\";\n }\n\n return \"orgx\";\n}\n\nexport function readOpenClawAuth(input: string | null): OpenClawAuthConfig {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const pluginKey = isRecord(entries[\"openclaw-plugin\"])\n ? \"openclaw-plugin\"\n : isRecord(entries.orgx)\n ? \"orgx\"\n : null;\n const entry = pluginKey ? readObject(entries[pluginKey]) : {};\n const config = readObject(entry.config);\n\n return {\n apiKey: typeof config.apiKey === \"string\" ? config.apiKey.trim() : \"\",\n baseUrl:\n typeof config.baseUrl === \"string\" && config.baseUrl.trim().length > 0\n ? config.baseUrl.trim()\n : DEFAULT_ORGX_BASE_URL,\n pluginKey,\n enabled: entry.enabled !== false,\n };\n}\n\nexport function patchOpenClawConfig(\n input: string | null,\n auth: OpenClawOrgxDefaultsInput = {},\n): string {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const pluginKey = resolvePluginKey(entries);\n const entry = readObject(entries[pluginKey]);\n const config = readObject(entry.config);\n const apiKey =\n typeof auth.apiKey === \"string\" && auth.apiKey.trim().length > 0\n ? auth.apiKey.trim()\n : typeof config.apiKey === \"string\" && config.apiKey.trim().length > 0\n ? config.apiKey.trim()\n : undefined;\n const baseUrl =\n typeof auth.baseUrl === \"string\" && auth.baseUrl.trim().length > 0\n ? auth.baseUrl.trim()\n : typeof config.baseUrl === \"string\" && config.baseUrl.trim().length > 0\n ? config.baseUrl.trim()\n : DEFAULT_ORGX_BASE_URL;\n\n entries[pluginKey] = {\n ...entry,\n enabled: true,\n config: {\n ...config,\n ...(apiKey ? { apiKey } : {}),\n baseUrl,\n dashboardEnabled:\n typeof config.dashboardEnabled === \"boolean\"\n ? config.dashboardEnabled\n : true,\n autoInstallAgentSuiteOnConnect:\n typeof config.autoInstallAgentSuiteOnConnect === \"boolean\"\n ? config.autoInstallAgentSuiteOnConnect\n : true,\n autoConfigureMcpClientsOnConnect:\n typeof config.autoConfigureMcpClientsOnConnect === \"boolean\"\n ? config.autoConfigureMcpClientsOnConnect\n : true,\n },\n };\n\n plugins.entries = entries;\n current.plugins = plugins;\n\n return `${JSON.stringify(current, null, 2)}\\n`;\n}\n\nexport function removeOpenClawConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n\n for (const key of [\"openclaw-plugin\", \"orgx\"]) {\n const entry = readObject(entries[key]);\n if (!Object.keys(entry).length) continue;\n const config = readObject(entry.config);\n delete config.baseUrl;\n delete config.dashboardEnabled;\n delete config.autoInstallAgentSuiteOnConnect;\n delete config.autoConfigureMcpClientsOnConnect;\n if (Object.keys(config).length > 0) {\n entry.config = config;\n } else {\n delete entry.config;\n }\n entries[key] = entry;\n }\n\n plugins.entries = entries;\n current.plugins = plugins;\n cleanupEmptyObjects(current);\n\n return `${JSON.stringify(current, null, 2)}\\n`;\n}\n\nexport function inspectOpenClawConfig(input: string | null): OpenClawInspection {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const installs = readObject(plugins.installs);\n const pluginKey = isRecord(entries[\"openclaw-plugin\"])\n ? \"openclaw-plugin\"\n : isRecord(entries.orgx)\n ? \"orgx\"\n : null;\n const entry = pluginKey ? readObject(entries[pluginKey]) : {};\n const config = readObject(entry.config);\n const installed =\n pluginKey !== null ||\n isRecord(installs[\"openclaw-plugin\"]) ||\n isRecord(installs.orgx);\n const configured =\n installed &&\n entry.enabled === true &&\n (typeof config.baseUrl === \"string\" ||\n typeof config.autoInstallAgentSuiteOnConnect === \"boolean\" ||\n typeof config.autoConfigureMcpClientsOnConnect === \"boolean\");\n\n return {\n configured,\n installed,\n pluginKey,\n details: [\n `plugin key: ${pluginKey ?? \"missing\"}`,\n `enabled: ${entry.enabled === true ? \"yes\" : \"no\"}`,\n `gateway port: ${readOpenClawGatewayPort(current)}`,\n ],\n };\n}\n","import {\n ORGX_WIZARD_AUTH_PATH,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n ORGX_WIZARD_KEYTAR_SERVICE,\n} from \"../constants.js\";\nimport {\n deleteFileIfExists,\n parseJsonObject,\n readTextIfExists,\n writeJsonFile,\n} from \"./fs.js\";\n\nexport type WizardAuthStorage = \"file\" | \"keytar\";\n\nexport interface WizardAuthRecord {\n apiKey: string;\n keyPrefix: string;\n baseUrl: string;\n source: \"manual\";\n storage: WizardAuthStorage;\n verifiedAt: string;\n}\n\nexport interface WizardSecretStore {\n deletePassword(service: string, account: string): Promise<boolean>;\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n}\n\ninterface StoredWizardAuthRecord {\n apiKey?: string;\n baseUrl: string;\n keyPrefix: string;\n storage: WizardAuthStorage;\n verifiedAt: string;\n}\n\ninterface WizardAuthStoreOptions {\n preferSecureStorage?: boolean;\n secretStore?: WizardSecretStore | null;\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nexport function extractKeyPrefix(apiKey: string): string {\n return apiKey.trim().slice(0, 12);\n}\n\nfunction parseStoredWizardAuthRecord(raw: string | null): StoredWizardAuthRecord | null {\n const parsed = parseJsonObject(raw);\n\n if (\n !isNonEmptyString(parsed.keyPrefix) ||\n !isNonEmptyString(parsed.baseUrl) ||\n !isNonEmptyString(parsed.verifiedAt)\n ) {\n return null;\n }\n\n const storage = parsed.storage === \"keytar\" ? \"keytar\" : \"file\";\n\n return {\n baseUrl: parsed.baseUrl.trim(),\n ...(isNonEmptyString(parsed.apiKey) ? { apiKey: parsed.apiKey.trim() } : {}),\n keyPrefix: parsed.keyPrefix.trim(),\n storage,\n verifiedAt: parsed.verifiedAt.trim(),\n };\n}\n\nasync function loadDefaultSecretStore(): Promise<WizardSecretStore | null> {\n if (process.env.ORGX_WIZARD_DISABLE_KEYTAR === \"1\") {\n return null;\n }\n\n try {\n const imported = await import(\"keytar\");\n const candidate = (\n \"default\" in imported && imported.default ? imported.default : imported\n ) as Partial<WizardSecretStore>;\n\n if (\n typeof candidate.getPassword === \"function\" &&\n typeof candidate.setPassword === \"function\" &&\n typeof candidate.deletePassword === \"function\"\n ) {\n return candidate as WizardSecretStore;\n }\n } catch {\n return null;\n }\n\n return null;\n}\n\nasync function resolveSecretStore(\n options: WizardAuthStoreOptions,\n): Promise<WizardSecretStore | null> {\n if (options.secretStore !== undefined) {\n return options.secretStore;\n }\n\n return loadDefaultSecretStore();\n}\n\nfunction buildStoredRecord(\n value: Omit<WizardAuthRecord, \"source\">,\n): StoredWizardAuthRecord {\n return {\n ...(value.storage === \"file\" ? { apiKey: value.apiKey } : {}),\n baseUrl: value.baseUrl,\n keyPrefix: value.keyPrefix,\n storage: value.storage,\n verifiedAt: value.verifiedAt,\n };\n}\n\nexport async function readWizardAuth(\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<WizardAuthRecord | null> {\n const stored = parseStoredWizardAuthRecord(readTextIfExists(authPath));\n if (!stored) {\n return null;\n }\n\n const apiKeyFromFile =\n stored.storage === \"file\" && isNonEmptyString(stored.apiKey)\n ? stored.apiKey.trim()\n : null;\n\n if (apiKeyFromFile) {\n return {\n apiKey: apiKeyFromFile,\n baseUrl: stored.baseUrl,\n keyPrefix: stored.keyPrefix,\n source: \"manual\",\n storage: \"file\",\n verifiedAt: stored.verifiedAt,\n };\n }\n\n if (stored.storage !== \"keytar\") {\n return null;\n }\n\n const secretStore = await resolveSecretStore(options);\n if (!secretStore) {\n return null;\n }\n\n const apiKey = await secretStore.getPassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n );\n\n if (!isNonEmptyString(apiKey)) {\n return null;\n }\n\n return {\n apiKey: apiKey.trim(),\n baseUrl: stored.baseUrl,\n keyPrefix: stored.keyPrefix,\n source: \"manual\",\n storage: \"keytar\",\n verifiedAt: stored.verifiedAt,\n };\n}\n\nexport async function writeWizardAuth(\n value: {\n apiKey: string;\n baseUrl: string;\n keyPrefix?: string;\n verifiedAt: string;\n },\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<WizardAuthRecord> {\n const secretStore = options.preferSecureStorage === false\n ? null\n : await resolveSecretStore(options);\n\n const record: WizardAuthRecord = {\n apiKey: value.apiKey.trim(),\n keyPrefix: value.keyPrefix?.trim() || extractKeyPrefix(value.apiKey),\n baseUrl: value.baseUrl.trim(),\n source: \"manual\",\n storage: secretStore ? \"keytar\" : \"file\",\n verifiedAt: value.verifiedAt.trim(),\n };\n\n if (secretStore) {\n await secretStore.setPassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n record.apiKey,\n );\n }\n\n writeJsonFile(authPath, buildStoredRecord(record), { mode: 0o600 });\n return record;\n}\n\nexport async function clearWizardAuth(\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<boolean> {\n const secretStore = await resolveSecretStore(options);\n const secretRemoved = secretStore\n ? await secretStore.deletePassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n )\n : false;\n const fileRemoved = deleteFileIfExists(authPath);\n return secretRemoved || fileRemoved;\n}\n","import {\n DEFAULT_ORGX_BASE_URL,\n OPENCLAW_CONFIG_PATH,\n ORGX_WIZARD_AUTH_PATH,\n} from \"../constants.js\";\nimport { readOpenClawAuth } from \"../surfaces/openclaw-config.js\";\nimport { readTextIfExists } from \"./fs.js\";\nimport { extractKeyPrefix, readWizardAuth } from \"./auth-store.js\";\n\nexport type OrgxAuthSource =\n | \"environment\"\n | \"wizard-store\"\n | \"openclaw-config-file\";\n\nexport interface ResolvedOrgxAuth {\n apiKey: string;\n keyPrefix: string;\n baseUrl: string;\n source: OrgxAuthSource;\n path?: string;\n verifiedAt?: string;\n}\n\nexport interface OrgxAuthCheckResult {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n keyPrefix?: string;\n baseUrl?: string;\n path?: string;\n verifiedAt?: string;\n status?: number;\n url?: string;\n error?: string;\n data?: unknown;\n}\n\nexport interface ResolveOrgxAuthOptions {\n authPath?: string;\n openclawConfigPath?: string;\n}\n\nfunction normalizeHost(value: string): string {\n return value.trim().toLowerCase().replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction isLoopbackHostname(hostname: string): boolean {\n const normalized = normalizeHost(hostname);\n return normalized === \"localhost\" || normalized === \"127.0.0.1\" || normalized === \"::1\";\n}\n\nexport function normalizeOrgxBaseUrl(raw?: string): string {\n const candidate = raw?.trim() || DEFAULT_ORGX_BASE_URL;\n\n try {\n const parsed = new URL(candidate);\n if (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n if (parsed.username || parsed.password) {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n if (parsed.protocol === \"http:\" && !isLoopbackHostname(parsed.hostname)) {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n parsed.search = \"\";\n parsed.hash = \"\";\n parsed.pathname = parsed.pathname.replace(/\\/api\\/?$/, \"\").replace(/\\/+$/, \"\");\n return parsed.toString().replace(/\\/+$/, \"\");\n } catch {\n return DEFAULT_ORGX_BASE_URL;\n }\n}\n\nexport function buildOrgxApiUrl(path: string, baseUrl?: string): string {\n const normalizedBase = normalizeOrgxBaseUrl(baseUrl).replace(/\\/+$/, \"\");\n const apiBase = normalizedBase.endsWith(\"/api\") ? normalizedBase : `${normalizedBase}/api`;\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n return `${apiBase}${normalizedPath}`;\n}\n\nfunction withResolvedBaseUrl(baseUrl: string, envBaseUrl?: string): string {\n return normalizeOrgxBaseUrl(envBaseUrl?.trim() || baseUrl);\n}\n\nfunction buildResolvedAuth(\n apiKey: string,\n baseUrl: string,\n source: OrgxAuthSource,\n extras: Pick<ResolvedOrgxAuth, \"path\" | \"verifiedAt\"> = {},\n): ResolvedOrgxAuth {\n return {\n apiKey: apiKey.trim(),\n keyPrefix: extractKeyPrefix(apiKey),\n baseUrl,\n source,\n ...(extras.path ? { path: extras.path } : {}),\n ...(extras.verifiedAt ? { verifiedAt: extras.verifiedAt } : {}),\n };\n}\n\nexport async function resolveOrgxAuth(\n options: ResolveOrgxAuthOptions = {},\n): Promise<ResolvedOrgxAuth | null> {\n const envApiKey = process.env.ORGX_API_KEY?.trim();\n const envBaseUrl = process.env.ORGX_BASE_URL?.trim();\n if (envApiKey) {\n return buildResolvedAuth(\n envApiKey,\n withResolvedBaseUrl(DEFAULT_ORGX_BASE_URL, envBaseUrl),\n \"environment\",\n );\n }\n\n const authPath = options.authPath ?? ORGX_WIZARD_AUTH_PATH;\n const stored = await readWizardAuth(authPath);\n if (stored) {\n return buildResolvedAuth(\n stored.apiKey,\n withResolvedBaseUrl(stored.baseUrl, envBaseUrl),\n \"wizard-store\",\n {\n path: authPath,\n verifiedAt: stored.verifiedAt,\n },\n );\n }\n\n const openclawConfigPath = options.openclawConfigPath ?? OPENCLAW_CONFIG_PATH;\n const openclawAuth = readOpenClawAuth(\n openclawConfigPath ? readTextIfExists(openclawConfigPath) : null,\n );\n if (openclawAuth.apiKey && openclawConfigPath) {\n return buildResolvedAuth(\n openclawAuth.apiKey,\n withResolvedBaseUrl(openclawAuth.baseUrl || DEFAULT_ORGX_BASE_URL, envBaseUrl),\n \"openclaw-config-file\",\n { path: openclawConfigPath },\n );\n }\n\n return null;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nexport async function verifyOrgxAuth(\n auth: Pick<ResolvedOrgxAuth, \"apiKey\" | \"baseUrl\" | \"source\" | \"keyPrefix\"> & {\n path?: string;\n verifiedAt?: string;\n },\n): Promise<OrgxAuthCheckResult> {\n const url = buildOrgxApiUrl(\"/client/sync\", auth.baseUrl);\n\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: \"{}\",\n signal: AbortSignal.timeout(7_000),\n });\n\n const data = await parseResponseBody(response);\n\n return {\n configured: true,\n ok: response.ok,\n skipped: false,\n source: auth.source,\n keyPrefix: auth.keyPrefix,\n baseUrl: auth.baseUrl,\n ...(auth.path ? { path: auth.path } : {}),\n ...(auth.verifiedAt ? { verifiedAt: auth.verifiedAt } : {}),\n status: response.status,\n url,\n data,\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n keyPrefix: auth.keyPrefix,\n baseUrl: auth.baseUrl,\n ...(auth.path ? { path: auth.path } : {}),\n ...(auth.verifiedAt ? { verifiedAt: auth.verifiedAt } : {}),\n url,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function checkOrgxAuth(\n options: ResolveOrgxAuthOptions = {},\n): Promise<OrgxAuthCheckResult> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n error: \"No OrgX API key found in ORGX_API_KEY, the wizard auth store, or OpenClaw config.\",\n url: buildOrgxApiUrl(\"/client/sync\", DEFAULT_ORGX_BASE_URL),\n };\n }\n\n return verifyOrgxAuth(auth);\n}\n\nexport function describeSetupStatusScope(): string {\n return \"The setup-status endpoint is still service-key-only and uses ORGX_SERVICE_KEY.\";\n}\n","import { ORGX_SETUP_STATUS_URL } from \"../constants.js\";\n\nexport interface SetupStatusResult {\n ok: boolean;\n skipped: boolean;\n status?: number;\n data?: unknown;\n error?: string;\n url: string;\n}\n\nexport async function fetchSetupStatus(\n apiKey: string | undefined = process.env.ORGX_SERVICE_KEY?.trim(),\n): Promise<SetupStatusResult> {\n if (!apiKey) {\n return {\n ok: false,\n skipped: true,\n error:\n \"ORGX_SERVICE_KEY is not set; /api/setup/status is a service-level check and was skipped.\",\n url: ORGX_SETUP_STATUS_URL,\n };\n }\n\n try {\n const response = await fetch(ORGX_SETUP_STATUS_URL, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n\n const text = await response.text();\n let data: unknown = text;\n try {\n data = text.length > 0 ? JSON.parse(text) : null;\n } catch {\n data = text;\n }\n\n return {\n ok: response.ok,\n skipped: false,\n status: response.status,\n data,\n url: ORGX_SETUP_STATUS_URL,\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n error: error instanceof Error ? error.message : String(error),\n url: ORGX_SETUP_STATUS_URL,\n };\n }\n}\n","import { spawnSync } from \"node:child_process\";\n\nimport { readTextIfExists } from \"./fs.js\";\nimport { readOpenClawGatewayPort } from \"../surfaces/openclaw-config.js\";\n\nexport interface OpenClawHealthCheck {\n ok: boolean;\n skipped: boolean;\n method: \"cli\" | \"http\" | \"none\";\n url?: string;\n details: string[];\n error?: string;\n}\n\nfunction trimOutput(value: string | null | undefined): string | undefined {\n const next = value?.trim();\n return next ? next : undefined;\n}\n\nexport async function checkOpenClawHealth(\n configPath?: string,\n): Promise<OpenClawHealthCheck> {\n const rawConfig = configPath ? readTextIfExists(configPath) : null;\n const port = readOpenClawGatewayPort(rawConfig);\n const url = `http://127.0.0.1:${port}/orgx/live`;\n\n const cli = spawnSync(\"openclaw\", [\"gateway\", \"status\"], {\n encoding: \"utf8\",\n timeout: 5_000,\n });\n\n if (!cli.error) {\n const stdout = trimOutput(cli.stdout);\n const stderr = trimOutput(cli.stderr);\n const details = [`gateway port: ${port}`];\n if (stdout) details.push(`cli: ${stdout}`);\n if (stderr) details.push(`cli stderr: ${stderr}`);\n\n if (cli.status === 0) {\n return {\n ok: true,\n skipped: false,\n method: \"cli\",\n url,\n details,\n };\n }\n }\n\n try {\n const response = await fetch(url, {\n redirect: \"manual\",\n signal: AbortSignal.timeout(5_000),\n });\n\n if (response.ok || (response.status >= 300 && response.status < 400)) {\n return {\n ok: true,\n skipped: false,\n method: \"http\",\n url,\n details: [`gateway port: ${port}`, `http status: ${response.status}`],\n };\n }\n\n return {\n ok: false,\n skipped: false,\n method: \"http\",\n url,\n error: `HTTP ${response.status}`,\n details: [`gateway port: ${port}`, `http status: ${response.status}`],\n };\n } catch (error) {\n const cliError = cli.error instanceof Error ? cli.error.message : undefined;\n return {\n ok: false,\n skipped: false,\n method: cliError ? \"none\" : \"http\",\n url,\n error: error instanceof Error ? error.message : String(error),\n details: [\n `gateway port: ${port}`,\n ...(cliError ? [`openclaw cli unavailable: ${cliError}`] : []),\n ],\n };\n }\n}\n","import { ORGX_HOSTED_MCP_HEALTH_URL } from \"../constants.js\";\n\nexport interface HostedMcpHealthCheck {\n ok: boolean;\n skipped: boolean;\n status?: number;\n url: string;\n body?: string;\n error?: string;\n details: string[];\n}\n\nfunction trimBody(value: string): string | undefined {\n const next = value.trim();\n if (!next) return undefined;\n return next.length > 120 ? `${next.slice(0, 117)}...` : next;\n}\n\nexport async function checkHostedMcpHealth(): Promise<HostedMcpHealthCheck> {\n try {\n const response = await fetch(ORGX_HOSTED_MCP_HEALTH_URL, {\n method: \"GET\",\n signal: AbortSignal.timeout(5_000),\n });\n const text = await response.text();\n const body = trimBody(text);\n\n return {\n ok: response.ok,\n skipped: false,\n status: response.status,\n url: ORGX_HOSTED_MCP_HEALTH_URL,\n ...(body ? { body } : {}),\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n details: [\n `http status: ${response.status}`,\n ...(body ? [`body: ${body}`] : []),\n ],\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n url: ORGX_HOSTED_MCP_HEALTH_URL,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import { ORGX_HOSTED_MCP_URL } from \"../constants.js\";\nimport {\n resolveOrgxAuth,\n type OrgxAuthSource,\n type ResolveOrgxAuthOptions,\n} from \"./auth.js\";\n\nconst DEFAULT_TOOL_NAME = \"get_setup_status\";\n\ninterface JsonRpcErrorPayload {\n error?: {\n message?: string;\n };\n result?: unknown;\n}\n\nexport interface HostedMcpToolCheck {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n toolName: string;\n url: string;\n baseUrl?: string;\n initializeStatus?: number;\n callStatus?: number;\n error?: string;\n details: string[];\n response?: unknown;\n}\n\nfunction buildHeaders(apiKey: string, sessionId?: string): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json, text/event-stream\",\n };\n\n if (sessionId) {\n headers[\"Mcp-Session-Id\"] = sessionId;\n }\n\n return headers;\n}\n\nasync function readJsonSafe(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readJsonRpcError(payload: unknown): string | undefined {\n if (!payload || typeof payload !== \"object\") {\n return undefined;\n }\n\n const maybeError = (payload as JsonRpcErrorPayload).error;\n if (!maybeError || typeof maybeError !== \"object\") {\n return undefined;\n }\n\n return typeof maybeError.message === \"string\"\n ? maybeError.message\n : \"Unknown MCP JSON-RPC error.\";\n}\n\nfunction readSessionId(response: Response): string | undefined {\n return response.headers.get(\"mcp-session-id\") ?? response.headers.get(\"Mcp-Session-Id\") ?? undefined;\n}\n\nexport async function checkHostedMcpToolAccess(\n options: ResolveOrgxAuthOptions = {},\n toolName = DEFAULT_TOOL_NAME,\n): Promise<HostedMcpToolCheck> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n error: \"No OrgX API key configured; hosted MCP tool verification skipped.\",\n details: [],\n };\n }\n\n try {\n const initializeResponse = await fetch(ORGX_HOSTED_MCP_URL, {\n method: \"POST\",\n headers: buildHeaders(auth.apiKey),\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"initialize\",\n params: {\n protocolVersion: \"2024-11-05\",\n clientInfo: {\n name: \"orgx-wizard\",\n version: \"0.1.0\",\n },\n capabilities: {},\n },\n }),\n signal: AbortSignal.timeout(10_000),\n });\n\n const initializePayload = await readJsonSafe(initializeResponse);\n const initializeError = readJsonRpcError(initializePayload);\n const sessionId = readSessionId(initializeResponse);\n\n if (!initializeResponse.ok) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: `MCP initialize failed with HTTP ${initializeResponse.status}.`,\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n if (initializeError) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: `MCP initialize returned JSON-RPC error: ${initializeError}`,\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n if (!sessionId) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: \"MCP initialize succeeded but no Mcp-Session-Id header was returned.\",\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n const callResponse = await fetch(ORGX_HOSTED_MCP_URL, {\n method: \"POST\",\n headers: buildHeaders(auth.apiKey, sessionId),\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 2,\n method: \"tools/call\",\n params: {\n name: toolName,\n arguments: {},\n },\n }),\n signal: AbortSignal.timeout(10_000),\n });\n\n const callPayload = await readJsonSafe(callResponse);\n const callError = readJsonRpcError(callPayload);\n\n if (!callResponse.ok) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n error: `MCP tool call failed with HTTP ${callResponse.status}.`,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n ],\n response: callPayload,\n };\n }\n\n if (callError) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n error: `MCP tool call returned JSON-RPC error: ${callError}`,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n ],\n response: callPayload,\n };\n }\n\n return {\n configured: true,\n ok: true,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n `tool call: ${toolName}`,\n ],\n response: callPayload,\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n error: error instanceof Error ? error.message : String(error),\n details: [`auth source: ${auth.source}`],\n };\n }\n}\n","import {\n NPM_REGISTRY_BASE_URL,\n ORGX_WIZARD_NPM_PACKAGE_NAME,\n} from \"../constants.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport interface NpmRegistryCheck {\n ok: boolean;\n skipped: boolean;\n reachable: boolean;\n published: boolean;\n url: string;\n packageName: string;\n version?: string;\n error?: string;\n details: string[];\n}\n\nfunction resolvePackageUrl(packageName: string): string {\n return `${NPM_REGISTRY_BASE_URL}/${encodeURIComponent(packageName)}`;\n}\n\nfunction getLatestVersion(payload: unknown): string | undefined {\n if (!isRecord(payload) || !isRecord(payload[\"dist-tags\"])) {\n return undefined;\n }\n\n const latest = payload[\"dist-tags\"].latest;\n return typeof latest === \"string\" && latest.trim().length > 0 ? latest : undefined;\n}\n\nexport async function checkNpmRegistryHealth(\n packageName: string = ORGX_WIZARD_NPM_PACKAGE_NAME,\n): Promise<NpmRegistryCheck> {\n const url = resolvePackageUrl(packageName);\n\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(7_000),\n });\n\n const text = await response.text();\n let payload: unknown = text;\n try {\n payload = text.length > 0 ? JSON.parse(text) : null;\n } catch {\n payload = text;\n }\n\n if (response.ok) {\n const version = getLatestVersion(payload);\n return {\n ok: true,\n skipped: false,\n reachable: true,\n published: true,\n url,\n packageName,\n ...(version ? { version } : {}),\n details: [\n `http status: ${response.status}`,\n ...(version ? [`latest version: ${version}`] : [\"latest version: unavailable\"]),\n ],\n };\n }\n\n if (response.status === 404) {\n return {\n ok: true,\n skipped: false,\n reachable: true,\n published: false,\n url,\n packageName,\n error: `${packageName} is not published on npm yet.`,\n details: [`http status: ${response.status}`],\n };\n }\n\n return {\n ok: false,\n skipped: false,\n reachable: false,\n published: false,\n url,\n packageName,\n error: `npm registry returned HTTP ${response.status}`,\n details: [`http status: ${response.status}`],\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n reachable: false,\n published: false,\n url,\n packageName,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import { buildOrgxApiUrl, resolveOrgxAuth, type ResolveOrgxAuthOptions } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport interface OrgxWorkspace {\n id: string;\n name: string;\n description?: string;\n isDefault: boolean;\n createdAt?: string;\n updatedAt?: string;\n}\n\nexport interface CreateWorkspaceInput {\n name: string;\n description?: string;\n}\n\nexport interface SetDefaultWorkspaceInput {\n id: string;\n}\n\nexport interface OrgxWorkspaceClientOptions extends ResolveOrgxAuthOptions {}\n\nasync function requireOrgxAuth(options: OrgxWorkspaceClientOptions = {}) {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n throw new Error(\n \"No OrgX API key configured. Run `wizard auth login` or `wizard auth set-key <oxk_...>` first.\",\n );\n }\n\n return auth;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction parseWorkspace(value: unknown): OrgxWorkspace | null {\n if (!isRecord(value)) return null;\n\n const id = typeof value.id === \"string\" ? value.id : null;\n const name = typeof value.name === \"string\" ? value.name : null;\n if (!id || !name) return null;\n\n return {\n id,\n name,\n ...(typeof value.description === \"string\" && value.description.trim().length > 0\n ? { description: value.description }\n : {}),\n isDefault: value.is_default === true,\n ...(typeof value.created_at === \"string\" ? { createdAt: value.created_at } : {}),\n ...(typeof value.updated_at === \"string\" ? { updatedAt: value.updated_at } : {}),\n };\n}\n\nfunction sortWorkspaces(workspaces: OrgxWorkspace[]): OrgxWorkspace[] {\n return [...workspaces].sort((left, right) => {\n if (left.isDefault !== right.isDefault) {\n return left.isDefault ? -1 : 1;\n }\n\n const nameCompare = left.name.localeCompare(right.name);\n if (nameCompare !== 0) {\n return nameCompare;\n }\n\n return left.id.localeCompare(right.id);\n });\n}\n\nfunction parseWorkspaceList(payload: unknown): OrgxWorkspace[] {\n if (!isRecord(payload) || !Array.isArray(payload.data)) {\n return [];\n }\n\n return sortWorkspaces(payload.data.map(parseWorkspace).filter((item): item is OrgxWorkspace => item !== null));\n}\n\nfunction parseWorkspaceResponse(payload: unknown): OrgxWorkspace | null {\n if (!isRecord(payload)) return null;\n return parseWorkspace(payload.data);\n}\n\nfunction parseCurrentWorkspaceResponse(payload: unknown): OrgxWorkspace | null {\n if (!isRecord(payload)) return null;\n\n const id = typeof payload.id === \"string\" ? payload.id : null;\n const name = typeof payload.name === \"string\" ? payload.name : null;\n if (!id || !name) return null;\n\n return {\n id,\n name,\n isDefault: true,\n ...(typeof payload.createdAt === \"string\" ? { createdAt: payload.createdAt } : {}),\n };\n}\n\nfunction buildRequestHeaders(apiKey: string): Record<string, string> {\n return {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n}\n\nfunction formatHttpError(status: number, body: unknown): string {\n if (typeof body === \"string\" && body.trim().length > 0) {\n return `HTTP ${status}: ${body}`;\n }\n\n if (isRecord(body) && typeof body.error === \"string\" && body.error.trim().length > 0) {\n return `HTTP ${status}: ${body.error}`;\n }\n\n return `HTTP ${status}`;\n}\n\nexport async function listWorkspaces(\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace[]> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities?type=command_center&limit=100\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to list workspaces. ${formatHttpError(response.status, body)}`);\n }\n\n return parseWorkspaceList(body);\n}\n\nexport async function getCurrentWorkspace(\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace | null> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/v1/workspaces/current\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (response.ok) {\n const workspace = parseCurrentWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected current workspace payload.\");\n }\n return workspace;\n }\n\n if (response.status === 404) {\n const workspaces = await listWorkspaces(options);\n return workspaces[0] ?? null;\n }\n\n throw new Error(`Failed to load current workspace. ${formatHttpError(response.status, body)}`);\n}\n\nexport async function createWorkspace(\n input: CreateWorkspaceInput,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace> {\n const name = input.name.trim();\n if (!name) {\n throw new Error(\"Workspace name is required.\");\n }\n\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities\", auth.baseUrl);\n const payload = {\n type: \"command_center\",\n name,\n ...(input.description?.trim()\n ? { description: input.description.trim() }\n : {}),\n };\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: buildRequestHeaders(auth.apiKey),\n body: JSON.stringify(payload),\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to create workspace. ${formatHttpError(response.status, body)}`);\n }\n\n const workspace = parseWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected workspace payload.\");\n }\n\n return workspace;\n}\n\nasync function updateWorkspace(\n input: SetDefaultWorkspaceInput,\n patch: Record<string, unknown>,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: buildRequestHeaders(auth.apiKey),\n body: JSON.stringify({\n type: \"command_center\",\n id: input.id,\n ...patch,\n }),\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to update workspace. ${formatHttpError(response.status, body)}`);\n }\n\n const workspace = parseWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected workspace update payload.\");\n }\n\n return workspace;\n}\n\nexport async function setDefaultWorkspace(\n input: SetDefaultWorkspaceInput,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<{ changed: boolean; workspace: OrgxWorkspace }> {\n const workspaceId = input.id.trim();\n if (!workspaceId) {\n throw new Error(\"Workspace id is required.\");\n }\n\n const workspaces = await listWorkspaces(options);\n const target = workspaces.find((workspace) => workspace.id === workspaceId);\n if (!target) {\n throw new Error(`Workspace ${workspaceId} was not found in the current OrgX account.`);\n }\n\n if (target.isDefault) {\n return {\n changed: false,\n workspace: target,\n };\n }\n\n const currentDefault = workspaces.find((workspace) => workspace.isDefault);\n if (currentDefault) {\n await updateWorkspace({ id: currentDefault.id }, { is_default: false }, options);\n }\n\n try {\n const updated = await updateWorkspace({ id: workspaceId }, { is_default: true }, options);\n return {\n changed: true,\n workspace: updated,\n };\n } catch (error) {\n if (currentDefault) {\n try {\n await updateWorkspace({ id: currentDefault.id }, { is_default: true }, options);\n } catch {\n // Preserve the original failure while best-effort restoring the prior default.\n }\n }\n throw error;\n }\n}\n","import {\n resolveOrgxAuth,\n type OrgxAuthSource,\n type ResolveOrgxAuthOptions,\n} from \"./auth.js\";\nimport { getCurrentWorkspace, type OrgxWorkspace } from \"./workspaces.js\";\n\nexport interface WorkspaceConnectivityCheck {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n baseUrl?: string;\n workspace?: OrgxWorkspace;\n error?: string;\n details: string[];\n}\n\nexport async function checkWorkspaceConnectivity(\n options: ResolveOrgxAuthOptions = {},\n): Promise<WorkspaceConnectivityCheck> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n error: \"No OrgX API key configured; workspace connectivity check skipped.\",\n details: [],\n };\n }\n\n try {\n const workspace = await getCurrentWorkspace(options);\n if (!workspace) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n error: \"OrgX auth resolved, but no accessible workspace was returned.\",\n details: [],\n };\n }\n\n return {\n configured: true,\n ok: true,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n workspace,\n details: [\n `workspace id: ${workspace.id}`,\n ...(workspace.isDefault ? [\"workspace is marked as default\"] : []),\n ],\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import * as TOML from \"@iarna/toml\";\n\nimport {\n ORGX_HOSTED_MCP_KEY,\n ORGX_HOSTED_MCP_URL,\n ORGX_LOCAL_MCP_KEY,\n} from \"../constants.js\";\nimport { isRecord, parseJsonObject, readObject } from \"../lib/fs.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface McpConfigInspection {\n configured: boolean;\n hostedConfigured?: boolean;\n localConfigured?: boolean;\n details: string[];\n}\n\nfunction cloneConfigCollection(config: JsonObject, key: string): JsonObject {\n return { ...readObject(config[key]) };\n}\n\nfunction removeLegacyScopedMcpServers(servers: JsonObject): boolean {\n const scopedPrefix = `${ORGX_LOCAL_MCP_KEY}-`;\n let updated = false;\n\n for (const key of Object.keys(servers)) {\n if (key === ORGX_LOCAL_MCP_KEY) continue;\n if (!key.startsWith(scopedPrefix)) continue;\n delete servers[key];\n updated = true;\n }\n\n return updated;\n}\n\nfunction stringifyJsonConfig(config: JsonObject): string {\n return `${JSON.stringify(config, null, 2)}\\n`;\n}\n\nfunction clearStdioFields(entry: JsonObject): JsonObject {\n const next = { ...entry };\n delete next.command;\n delete next.args;\n delete next.env;\n return next;\n}\n\nfunction matchHttpEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.type === \"http\" && value.url === url;\n}\n\nfunction matchUrlEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.url === url;\n}\n\nexport function patchClaudeMcpConfig(\n input: string | null,\n localMcpUrl?: string,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingOrgx = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const existingLocal = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedUrl = typeof existingOrgx.url === \"string\" ? existingOrgx.url : \"\";\n const hostedType = typeof existingOrgx.type === \"string\" ? existingOrgx.type : \"\";\n const shouldSetHostedOrgx =\n !isRecord(servers[ORGX_HOSTED_MCP_KEY]) ||\n (hostedUrl === localMcpUrl && hostedType === \"http\");\n\n if (shouldSetHostedOrgx) {\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...existingOrgx,\n type: \"http\",\n url: ORGX_HOSTED_MCP_URL,\n description:\n typeof existingOrgx.description === \"string\" &&\n existingOrgx.description.trim().length > 0\n ? existingOrgx.description\n : \"OrgX cloud MCP (OAuth)\",\n };\n }\n\n if (localMcpUrl) {\n servers[ORGX_LOCAL_MCP_KEY] = {\n ...existingLocal,\n type: \"http\",\n url: localMcpUrl,\n description:\n typeof existingLocal.description === \"string\" &&\n existingLocal.description.trim().length > 0\n ? existingLocal.description\n : \"OrgX platform via local OpenClaw plugin (no OAuth)\",\n };\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeClaudeMcpConfig(\n input: string | null,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n if (matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectClaudeMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedConfigured = matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n const localConfigured =\n local.type === \"http\" &&\n typeof local.url === \"string\";\n const localUrl = localConfigured ? String(local.url) : \"missing\";\n\n return {\n configured: hostedConfigured && localConfigured,\n hostedConfigured,\n localConfigured,\n details: [\n `hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`,\n `local orgx-openclaw: ${localUrl}`,\n ],\n };\n}\n\nexport function patchCursorMcpConfig(\n input: string | null,\n localMcpUrl: string,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingLocal = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n\n servers[ORGX_LOCAL_MCP_KEY] = {\n ...clearStdioFields(existingLocal),\n url: localMcpUrl,\n };\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeCursorMcpConfig(\n input: string | null,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectCursorMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const localConfigured =\n typeof local.url === \"string\";\n const localUrl = localConfigured ? String(local.url) : \"missing\";\n\n return {\n configured: localConfigured,\n localConfigured,\n details: [`local orgx-openclaw: ${localUrl}`],\n };\n}\n\nexport function patchVscodeMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...clearStdioFields(existingHosted),\n type: \"http\",\n url: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n servers,\n });\n}\n\nexport function removeVscodeMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n\n if (matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n servers,\n });\n}\n\nexport function inspectVscodeMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n const hostedConfigured = matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nfunction matchServerUrlEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.serverUrl === url || value.url === url;\n}\n\nexport function patchWindsurfMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const nextEntry = clearStdioFields(existingHosted);\n\n delete nextEntry.url;\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...nextEntry,\n serverUrl: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeWindsurfMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (matchServerUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectWindsurfMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const hostedConfigured = matchServerUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nexport function patchZedMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...clearStdioFields(existingHosted),\n url: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n context_servers: servers,\n });\n}\n\nexport function removeZedMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n\n if (matchUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n context_servers: servers,\n });\n}\n\nexport function inspectZedMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n const hostedConfigured = matchUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nfunction parseTomlDocument(input: string | null): JsonObject {\n if (!input) return {};\n\n try {\n const parsed = TOML.parse(input) as unknown;\n return isRecord(parsed) ? parsed : {};\n } catch {\n return {};\n }\n}\n\nfunction stringifyTomlDocument(document: JsonObject): string {\n const rendered = TOML.stringify(document as TOML.JsonMap);\n return rendered.endsWith(\"\\n\") ? rendered : `${rendered}\\n`;\n}\n\nfunction upsertCodexEntry(servers: JsonObject, key: string, url: string): void {\n const current = readObject(servers[key]);\n const next: JsonObject = {\n ...current,\n url,\n };\n delete next.command;\n delete next.args;\n delete next.startup_timeout_sec;\n servers[key] = next;\n}\n\nfunction removeLegacyCodexEntries(servers: JsonObject): boolean {\n const scopedPrefix = `${ORGX_LOCAL_MCP_KEY}-`;\n let updated = false;\n\n for (const key of Object.keys(servers)) {\n if (key === ORGX_LOCAL_MCP_KEY) continue;\n if (!key.startsWith(scopedPrefix)) continue;\n delete servers[key];\n updated = true;\n }\n\n return updated;\n}\n\nexport function patchCodexConfigToml(\n input: string | null,\n localMcpUrl?: string,\n): string {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n\n upsertCodexEntry(servers, ORGX_HOSTED_MCP_KEY, ORGX_HOSTED_MCP_URL);\n if (localMcpUrl) {\n upsertCodexEntry(servers, ORGX_LOCAL_MCP_KEY, localMcpUrl);\n }\n removeLegacyCodexEntries(servers);\n\n current.mcp_servers = servers;\n return stringifyTomlDocument(current);\n}\n\nexport function removeCodexConfigToml(\n input: string | null,\n): string {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n const hosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n if (hosted.url === ORGX_HOSTED_MCP_URL) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n removeLegacyCodexEntries(servers);\n current.mcp_servers = servers;\n\n return stringifyTomlDocument(current);\n}\n\nexport function inspectCodexConfigToml(input: string | null): McpConfigInspection {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n const hosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedConfigured = hosted.url === ORGX_HOSTED_MCP_URL;\n const localConfigured = typeof local.url === \"string\";\n\n return {\n configured: hostedConfigured && localConfigured,\n hostedConfigured,\n localConfigured,\n details: [\n `hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`,\n `local orgx-openclaw: ${localConfigured ? local.url : \"missing\"}`,\n ],\n };\n}\n","export const SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"openclaw\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n \"chatgpt\",\n] as const;\n\nexport type SurfaceName = (typeof SURFACE_NAMES)[number];\nexport type SurfaceMode = \"automated\" | \"manual\";\n\nexport const AUTOMATED_SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"openclaw\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n] as const satisfies readonly SurfaceName[];\n\nexport const MCP_SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n] as const;\n","import { existsSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nimport {\n CHATGPT_APP_PATHS,\n CLAUDE_INSTALL_PATHS,\n CLAUDE_MCP_PATHS,\n CODEX_CONFIG_PATHS,\n CODEX_INSTALL_PATHS,\n CURSOR_INSTALL_PATHS,\n CURSOR_MCP_PATHS,\n OPENCLAW_CONFIG_PATHS,\n OPENCLAW_INSTALL_PATHS,\n VSCODE_INSTALL_PATHS,\n VSCODE_MCP_PATHS,\n WINDSURF_INSTALL_PATHS,\n WINDSURF_MCP_PATHS,\n ZED_INSTALL_PATHS,\n ZED_SETTINGS_PATHS,\n} from \"../constants.js\";\nimport type { SurfaceName } from \"./names.js\";\n\nexport interface SurfaceLocator {\n configPaths: string[];\n installPaths: string[];\n}\n\nexport interface SurfaceDetection {\n detected: boolean;\n preferredPath?: string;\n existingPath?: string;\n evidence: string[];\n}\n\ntype Exists = (path: string) => boolean;\n\nconst SURFACE_LOCATORS: Record<SurfaceName, SurfaceLocator> = {\n claude: {\n configPaths: CLAUDE_MCP_PATHS,\n installPaths: CLAUDE_INSTALL_PATHS,\n },\n cursor: {\n configPaths: CURSOR_MCP_PATHS,\n installPaths: CURSOR_INSTALL_PATHS,\n },\n codex: {\n configPaths: CODEX_CONFIG_PATHS,\n installPaths: CODEX_INSTALL_PATHS,\n },\n openclaw: {\n configPaths: OPENCLAW_CONFIG_PATHS,\n installPaths: OPENCLAW_INSTALL_PATHS,\n },\n vscode: {\n configPaths: VSCODE_MCP_PATHS,\n installPaths: VSCODE_INSTALL_PATHS,\n },\n windsurf: {\n configPaths: WINDSURF_MCP_PATHS,\n installPaths: WINDSURF_INSTALL_PATHS,\n },\n zed: {\n configPaths: ZED_SETTINGS_PATHS,\n installPaths: ZED_INSTALL_PATHS,\n },\n chatgpt: {\n configPaths: [],\n installPaths: CHATGPT_APP_PATHS,\n },\n};\n\nfunction firstExistingPath(paths: string[], exists: Exists): string | undefined {\n return paths.find((path) => exists(path));\n}\n\nfunction buildFallbackInstallPaths(configPaths: string[]): string[] {\n return [...new Set(configPaths.map((path) => dirname(path)))];\n}\n\nexport function getSurfaceLocator(name: SurfaceName): SurfaceLocator {\n return SURFACE_LOCATORS[name];\n}\n\nexport function detectSurface(name: SurfaceName, exists: Exists = existsSync): SurfaceDetection {\n const locator = getSurfaceLocator(name);\n const existingConfigPath = firstExistingPath(locator.configPaths, exists);\n const preferredPath = locator.configPaths[0] ?? locator.installPaths[0];\n const installCandidates = [\n ...locator.installPaths,\n ...buildFallbackInstallPaths(locator.configPaths),\n ];\n const existingInstallPath = firstExistingPath(installCandidates, exists);\n const existingPath = existingConfigPath ?? existingInstallPath;\n const evidence: string[] = [];\n\n if (existingConfigPath) {\n evidence.push(`config found: ${existingConfigPath}`);\n }\n if (existingInstallPath && existingInstallPath !== existingConfigPath) {\n evidence.push(`install marker found: ${existingInstallPath}`);\n }\n if (!existingConfigPath && !existingInstallPath) {\n evidence.push(\"no candidate paths found on disk\");\n }\n\n const detection: SurfaceDetection = {\n detected: Boolean(existingConfigPath || existingInstallPath),\n evidence,\n };\n\n if (preferredPath) {\n detection.preferredPath = preferredPath;\n }\n if (existingPath) {\n detection.existingPath = existingPath;\n }\n\n return detection;\n}\n","import {\n checkOrgxAuth,\n resolveOrgxAuth,\n type OrgxAuthCheckResult,\n} from \"../lib/auth.js\";\nimport {\n fetchSetupStatus,\n type SetupStatusResult,\n} from \"../lib/setup-status.js\";\nimport { checkOpenClawHealth, type OpenClawHealthCheck } from \"../lib/openclaw-health.js\";\nimport { checkHostedMcpHealth, type HostedMcpHealthCheck } from \"../lib/hosted-mcp-health.js\";\nimport {\n checkHostedMcpToolAccess,\n type HostedMcpToolCheck,\n} from \"../lib/hosted-mcp-tool-check.js\";\nimport { checkNpmRegistryHealth, type NpmRegistryCheck } from \"../lib/npm-registry-health.js\";\nimport {\n checkWorkspaceConnectivity,\n type WorkspaceConnectivityCheck,\n} from \"../lib/workspace-connectivity.js\";\nimport { readTextIfExists, writeTextFile } from \"../lib/fs.js\";\nimport {\n inspectClaudeMcpConfig,\n inspectCodexConfigToml,\n inspectCursorMcpConfig,\n inspectVscodeMcpConfig,\n inspectWindsurfMcpConfig,\n inspectZedMcpConfig,\n patchClaudeMcpConfig,\n patchCodexConfigToml,\n patchCursorMcpConfig,\n patchVscodeMcpConfig,\n patchWindsurfMcpConfig,\n patchZedMcpConfig,\n removeClaudeMcpConfig,\n removeCodexConfigToml,\n removeCursorMcpConfig,\n removeVscodeMcpConfig,\n removeWindsurfMcpConfig,\n removeZedMcpConfig,\n} from \"./mcp-config.js\";\nimport {\n buildLocalMcpUrl,\n inspectOpenClawConfig,\n patchOpenClawConfig,\n removeOpenClawConfig,\n} from \"./openclaw-config.js\";\nimport {\n AUTOMATED_SURFACE_NAMES,\n MCP_SURFACE_NAMES,\n SURFACE_NAMES,\n type SurfaceMode,\n type SurfaceName,\n} from \"./names.js\";\nimport { detectSurface, getSurfaceLocator } from \"./detection.js\";\n\nexport { SURFACE_NAMES } from \"./names.js\";\nexport type { SurfaceName } from \"./names.js\";\n\nexport interface SurfaceStatus {\n name: SurfaceName;\n mode: SurfaceMode;\n detected: boolean;\n configured: boolean;\n path?: string;\n details: string[];\n summary: string;\n}\n\nexport interface SurfaceMutationResult {\n name: SurfaceName;\n changed: boolean;\n path?: string;\n message: string;\n}\n\ntype SurfaceSelection<T extends string> = T | \"all\" | readonly (T | \"all\")[];\n\ninterface OpenClawDependencyState {\n detected: boolean;\n configured: boolean;\n path?: string;\n url?: string;\n}\n\nfunction getSurfaceMode(name: SurfaceName): SurfaceMode {\n return AUTOMATED_SURFACE_NAMES.includes(name as (typeof AUTOMATED_SURFACE_NAMES)[number])\n ? \"automated\"\n : \"manual\";\n}\n\nfunction getSurfacePath(name: SurfaceName): string | undefined {\n const detection = detectSurface(name);\n const locator = getSurfaceLocator(name);\n const existingPath = detection.existingPath;\n\n if (existingPath && locator.configPaths.includes(existingPath)) {\n return existingPath;\n }\n\n return locator.configPaths[0] ?? detection.preferredPath ?? existingPath;\n}\n\nfunction getOpenClawDependencyState(): OpenClawDependencyState {\n const detection = detectSurface(\"openclaw\");\n const path = detection.existingPath ?? detection.preferredPath;\n const raw = path ? readTextIfExists(path) : null;\n const inspection = inspectOpenClawConfig(raw);\n\n const result: OpenClawDependencyState = {\n detected: detection.detected,\n configured: inspection.configured,\n };\n\n if (path) {\n result.path = path;\n }\n\n if (detection.detected) {\n result.url = buildLocalMcpUrl(raw);\n }\n\n return result;\n}\n\nfunction automatedSurfaceStatus(\n name: Extract<\n SurfaceName,\n \"claude\" | \"cursor\" | \"codex\" | \"openclaw\" | \"vscode\" | \"windsurf\" | \"zed\"\n >,\n): SurfaceStatus {\n const detection = detectSurface(name);\n const path = detection.existingPath ?? detection.preferredPath;\n const openclaw = getOpenClawDependencyState();\n\n if (name === \"claude\") {\n const inspection = inspectClaudeMcpConfig(path ? readTextIfExists(path) : null);\n const configured = inspection.hostedConfigured === true &&\n (openclaw.detected ? inspection.localConfigured === true : true);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; hosted OrgX is the only available route.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? openclaw.detected\n ? \"OrgX is connected in Claude with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Claude.\"\n : detection.detected\n ? openclaw.detected\n ? `Claude is missing either hosted OrgX or the local OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Claude is missing the hosted OrgX MCP entry.\"\n : \"Claude config directory was not detected on disk.\",\n };\n }\n\n if (name === \"cursor\") {\n const inspection = inspectCursorMcpConfig(path ? readTextIfExists(path) : null);\n const configured = openclaw.detected && inspection.localConfigured === true;\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; Cursor cannot use the local OrgX bridge yet.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? \"OrgX is connected in Cursor through the local OpenClaw bridge.\"\n : detection.detected\n ? openclaw.detected\n ? `Cursor is missing the local OrgX OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Cursor is ready to wire, but OpenClaw must be installed first.\"\n : \"Cursor config directory was not detected on disk.\",\n };\n }\n\n if (name === \"codex\") {\n const inspection = inspectCodexConfigToml(path ? readTextIfExists(path) : null);\n const configured = inspection.hostedConfigured === true &&\n (openclaw.detected ? inspection.localConfigured === true : true);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; hosted OrgX is the only available route.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? openclaw.detected\n ? \"OrgX is connected in Codex with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Codex.\"\n : detection.detected\n ? openclaw.detected\n ? `Codex is missing either hosted OrgX or the local OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Codex is missing the hosted OrgX MCP entry.\"\n : \"Codex config directory was not detected on disk.\",\n };\n }\n\n if (name === \"vscode\") {\n const inspection = inspectVscodeMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in VS Code.\"\n : detection.detected\n ? \"VS Code is missing the hosted OrgX MCP entry.\"\n : \"VS Code config directory was not detected on disk.\",\n };\n }\n\n if (name === \"windsurf\") {\n const inspection = inspectWindsurfMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in Windsurf.\"\n : detection.detected\n ? \"Windsurf is missing the hosted OrgX MCP entry.\"\n : \"Windsurf config directory was not detected on disk.\",\n };\n }\n\n if (name === \"zed\") {\n const inspection = inspectZedMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in Zed.\"\n : detection.detected\n ? \"Zed is missing the hosted OrgX MCP entry.\"\n : \"Zed config directory was not detected on disk.\",\n };\n }\n\n const inspection = inspectOpenClawConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.configured,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.configured\n ? `OpenClaw plugin entry ${inspection.pluginKey ?? \"missing\"} is configured.`\n : inspection.installed\n ? \"OpenClaw is installed but OrgX defaults have not been written.\"\n : detection.detected\n ? \"OpenClaw support files exist but no OrgX plugin entry was found.\"\n : \"OpenClaw is not installed or no support files were found.\",\n };\n}\n\nfunction manualSurfaceStatus(name: Extract<SurfaceName, \"chatgpt\">): SurfaceStatus {\n const detection = detectSurface(name);\n const path = detection.existingPath ?? detection.preferredPath;\n\n const shared = {\n name,\n mode: \"manual\" as const,\n detected: detection.detected,\n configured: false,\n ...(path ? { path } : {}),\n };\n\n switch (name) {\n case \"chatgpt\":\n return {\n ...shared,\n details: [\n ...detection.evidence,\n \"ChatGPT desktop support is not automated yet.\",\n \"Manual follow-up: wire the OrgX surface once the app-side config contract is finalized.\",\n ],\n summary: detection.detected\n ? \"ChatGPT support files detected; manual OrgX wiring still required.\"\n : \"ChatGPT desktop support files were not found on disk.\",\n };\n }\n}\n\nfunction getSurfaceStatus(name: SurfaceName): SurfaceStatus {\n if (AUTOMATED_SURFACE_NAMES.includes(name as (typeof AUTOMATED_SURFACE_NAMES)[number])) {\n return automatedSurfaceStatus(\n name as Extract<\n SurfaceName,\n \"claude\" | \"cursor\" | \"codex\" | \"openclaw\" | \"vscode\" | \"windsurf\" | \"zed\"\n >,\n );\n }\n\n return manualSurfaceStatus(name as Extract<SurfaceName, \"chatgpt\">);\n}\n\nexport function listSurfaceStatuses(): SurfaceStatus[] {\n return SURFACE_NAMES.map(getSurfaceStatus);\n}\n\nfunction resolveTargets<T extends string>(\n selection: SurfaceSelection<T>,\n allTargets: readonly T[],\n): T[] {\n const values = Array.isArray(selection) ? selection : [selection];\n\n if (values.includes(\"all\")) {\n return [...allTargets];\n }\n\n return [...new Set(values)] as T[];\n}\n\nexport function resolveSurfaceSelection(\n selection: SurfaceSelection<SurfaceName>,\n): SurfaceName[] {\n return resolveTargets(selection, SURFACE_NAMES);\n}\n\nexport function resolveMcpSurfaceSelection(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): Array<(typeof MCP_SURFACE_NAMES)[number]> {\n return resolveTargets(selection, MCP_SURFACE_NAMES);\n}\n\nasync function addAutomatedSurface(name: SurfaceName): Promise<SurfaceMutationResult> {\n const path = getSurfacePath(name);\n const openclaw = getOpenClawDependencyState();\n\n if (!path) {\n return {\n name,\n changed: false,\n message: `${name} has no writable config path on this platform.`,\n };\n }\n\n switch (name) {\n case \"claude\": {\n const previous = readTextIfExists(path);\n const next = patchClaudeMcpConfig(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: openclaw.detected\n ? \"OrgX is connected in Claude with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Claude.\",\n };\n }\n case \"cursor\": {\n if (!openclaw.detected || !openclaw.url) {\n return {\n name,\n changed: false,\n path,\n message: \"Cursor needs OpenClaw installed before OrgX can be connected locally.\",\n };\n }\n const previous = readTextIfExists(path);\n const next = patchCursorMcpConfig(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX is connected in Cursor through the local OpenClaw bridge.\",\n };\n }\n case \"codex\": {\n const previous = readTextIfExists(path);\n const next = patchCodexConfigToml(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: openclaw.detected\n ? \"OrgX is connected in Codex with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Codex.\",\n };\n }\n case \"openclaw\": {\n const previous = readTextIfExists(path);\n const auth = await resolveOrgxAuth();\n const next = patchOpenClawConfig(previous, auth ?? {});\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: auth\n ? \"OpenClaw is configured as the local OrgX bridge with the resolved OrgX auth.\"\n : \"OpenClaw is configured as the local OrgX bridge.\",\n };\n }\n case \"vscode\": {\n const previous = readTextIfExists(path);\n const next = patchVscodeMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX cloud MCP is connected in VS Code.\",\n };\n }\n case \"windsurf\": {\n const previous = readTextIfExists(path);\n const next = patchWindsurfMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX cloud MCP is connected in Windsurf.\",\n };\n }\n case \"zed\": {\n const previous = readTextIfExists(path);\n const next = patchZedMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX cloud MCP is connected in Zed.\",\n };\n }\n default:\n return {\n name,\n changed: false,\n message: `${name} is not automated yet.`,\n };\n }\n}\n\nfunction removeAutomatedSurface(name: SurfaceName): SurfaceMutationResult {\n const path = getSurfacePath(name);\n\n if (!path) {\n return {\n name,\n changed: false,\n message: `${name} has no writable config path on this platform.`,\n };\n }\n\n switch (name) {\n case \"claude\": {\n const previous = readTextIfExists(path);\n const next = removeClaudeMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Claude.\",\n };\n }\n case \"cursor\": {\n const previous = readTextIfExists(path);\n const next = removeCursorMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Cursor.\",\n };\n }\n case \"codex\": {\n const previous = readTextIfExists(path);\n const next = removeCodexConfigToml(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Codex.\",\n };\n }\n case \"openclaw\": {\n const previous = readTextIfExists(path);\n const next = removeOpenClawConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OpenClaw OrgX defaults were removed.\",\n };\n }\n case \"vscode\": {\n const previous = readTextIfExists(path);\n const next = removeVscodeMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from VS Code.\",\n };\n }\n case \"windsurf\": {\n const previous = readTextIfExists(path);\n const next = removeWindsurfMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Windsurf.\",\n };\n }\n case \"zed\": {\n const previous = readTextIfExists(path);\n const next = removeZedMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Zed.\",\n };\n }\n default:\n return {\n name,\n changed: false,\n message: `${name} is not automated yet.`,\n };\n }\n}\n\nexport async function addSurface(\n selection: SurfaceSelection<SurfaceName>,\n): Promise<SurfaceMutationResult[]> {\n const targets = resolveSurfaceSelection(selection);\n const results: SurfaceMutationResult[] = [];\n\n for (const surface of targets) {\n results.push(await addAutomatedSurface(surface));\n }\n\n return results;\n}\n\nexport function removeSurface(selection: SurfaceSelection<SurfaceName>): SurfaceMutationResult[] {\n const targets = resolveSurfaceSelection(selection);\n return targets.map((surface) => removeAutomatedSurface(surface));\n}\n\nexport async function addMcpSurface(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): Promise<SurfaceMutationResult[]> {\n const targets = resolveMcpSurfaceSelection(selection);\n const results: SurfaceMutationResult[] = [];\n\n for (const surface of targets) {\n results.push(await addAutomatedSurface(surface));\n }\n\n return results;\n}\n\nexport function removeMcpSurface(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): SurfaceMutationResult[] {\n const targets = resolveMcpSurfaceSelection(selection);\n return targets.map((surface) => removeAutomatedSurface(surface));\n}\n\nexport async function setupDetectedSurfaces(): Promise<SurfaceMutationResult[]> {\n const targets = AUTOMATED_SURFACE_NAMES.filter((name) => getSurfaceStatus(name).detected);\n\n targets.sort((left, right) => {\n if (left === \"openclaw\") return -1;\n if (right === \"openclaw\") return 1;\n return 0;\n });\n\n const results: SurfaceMutationResult[] = [];\n\n for (const name of targets) {\n results.push(await addAutomatedSurface(name));\n }\n\n return results;\n}\n\nexport interface DoctorReport {\n surfaces: SurfaceStatus[];\n auth: OrgxAuthCheckResult;\n hostedMcp: HostedMcpHealthCheck;\n hostedMcpTool: HostedMcpToolCheck;\n npmRegistry: NpmRegistryCheck;\n workspace: WorkspaceConnectivityCheck;\n remote: SetupStatusResult;\n openclaw: OpenClawHealthCheck;\n}\n\nexport interface DoctorAssessmentIssue {\n level: \"error\" | \"warning\";\n title: string;\n suggestion: string;\n}\n\nexport interface DoctorAssessment {\n ok: boolean;\n issues: DoctorAssessmentIssue[];\n}\n\nfunction skippedOpenClawHealth(): OpenClawHealthCheck {\n return {\n ok: false,\n skipped: true,\n method: \"none\",\n error: \"OpenClaw support files were not detected; skipping gateway health check.\",\n details: [],\n };\n}\n\nexport async function runDoctor(): Promise<DoctorReport> {\n const surfaces = listSurfaceStatuses();\n const openclawSurface = surfaces.find((surface) => surface.name === \"openclaw\");\n const auth = await checkOrgxAuth();\n const hostedMcp = await checkHostedMcpHealth();\n const hostedMcpTool = await checkHostedMcpToolAccess();\n const npmRegistry = await checkNpmRegistryHealth();\n const workspace = await checkWorkspaceConnectivity();\n const remote = await fetchSetupStatus();\n const openclaw = openclawSurface?.detected\n ? await checkOpenClawHealth(openclawSurface.path)\n : skippedOpenClawHealth();\n return { surfaces, auth, hostedMcp, hostedMcpTool, npmRegistry, workspace, remote, openclaw };\n}\n\nexport function assessDoctorReport(report: DoctorReport): DoctorAssessment {\n const issues: DoctorAssessmentIssue[] = [];\n\n if (!report.hostedMcp.ok) {\n issues.push({\n level: \"error\",\n title: \"Hosted OrgX MCP is unreachable.\",\n suggestion:\n \"Retry later or verify https://mcp.useorgx.com/health. Hosted-only clients will stay broken until that endpoint recovers.\",\n });\n }\n\n if (\n report.hostedMcp.ok &&\n report.hostedMcpTool.configured &&\n !report.hostedMcpTool.ok &&\n !report.hostedMcpTool.skipped\n ) {\n issues.push({\n level: \"error\",\n title: `Hosted OrgX MCP tool verification failed (${report.hostedMcpTool.toolName}).`,\n suggestion:\n \"Re-run `wizard auth login` to refresh the per-user key, then retry `wizard doctor` to confirm the hosted MCP can initialize and execute tools.\",\n });\n }\n\n if (report.auth.configured && !report.auth.ok && !report.auth.skipped) {\n issues.push({\n level: \"error\",\n title: \"OrgX user auth could not be verified.\",\n suggestion:\n \"Run `wizard auth set-key <oxk_...>` again or correct the resolved ORGX_API_KEY / base URL before retrying.\",\n });\n }\n\n if (report.workspace.configured && !report.workspace.ok) {\n issues.push({\n level: \"error\",\n title: \"Current workspace lookup failed.\",\n suggestion:\n \"Verify the resolved OrgX base URL and that the authenticated user still has access to a workspace.\",\n });\n }\n\n if (!report.npmRegistry.reachable) {\n issues.push({\n level: \"warning\",\n title: \"npm registry is unreachable.\",\n suggestion:\n \"Check outbound network access to https://registry.npmjs.org before relying on npm-based installation flows.\",\n });\n } else if (!report.npmRegistry.published) {\n issues.push({\n level: \"warning\",\n title: `${report.npmRegistry.packageName} is not published on npm yet.`,\n suggestion:\n \"This is expected before launch. Publish the package in the release workstream before asking users to install from npm.\",\n });\n }\n\n if (!report.openclaw.skipped && !report.openclaw.ok) {\n issues.push({\n level: \"warning\",\n title: \"OpenClaw is installed but its local gateway health check failed.\",\n suggestion:\n \"Run `openclaw doctor` or `openclaw doctor --repair` before relying on local bridge clients like Cursor.\",\n });\n }\n\n if (!report.remote.skipped && !report.remote.ok) {\n issues.push({\n level: \"warning\",\n title: \"Remote setup status check failed.\",\n suggestion:\n \"If you expected the service-key check to pass, verify ORGX_SERVICE_KEY before trusting setup-status output.\",\n });\n }\n\n return {\n ok: !issues.some((issue) => issue.level === \"error\"),\n issues,\n };\n}\n","import { randomUUID } from \"node:crypto\";\n\nimport { ORGX_WIZARD_STATE_PATH } from \"../constants.js\";\nimport { parseJsonObject, readTextIfExists, writeJsonFile } from \"./fs.js\";\nimport { SURFACE_NAMES, type SurfaceName } from \"../surfaces/names.js\";\n\nexport interface WizardContinuityDefaults {\n executionMode?: \"cloud\" | \"local\";\n reviewSurface?: SurfaceName;\n workspaceId?: string;\n workspaceName?: string;\n}\n\nexport interface WizardDemoInitiativeRecord {\n createdAt: string;\n id: string;\n liveUrl: string;\n title: string;\n workspaceId?: string;\n workspaceName?: string;\n}\n\nexport interface WizardStateRecord {\n continuity?: WizardContinuityDefaults;\n installationId: string;\n demoInitiative?: WizardDemoInitiativeRecord;\n createdAt: string;\n updatedAt: string;\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction isSurfaceName(value: unknown): value is SurfaceName {\n return typeof value === \"string\" && SURFACE_NAMES.includes(value as SurfaceName);\n}\n\nfunction parseContinuityDefaults(value: unknown): WizardContinuityDefaults | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n const record = value as Record<string, unknown>;\n const parsed: WizardContinuityDefaults = {};\n\n if (record.executionMode === \"cloud\" || record.executionMode === \"local\") {\n parsed.executionMode = record.executionMode;\n }\n\n if (isSurfaceName(record.reviewSurface)) {\n parsed.reviewSurface = record.reviewSurface;\n }\n\n if (isNonEmptyString(record.workspaceId)) {\n parsed.workspaceId = record.workspaceId.trim();\n }\n\n if (isNonEmptyString(record.workspaceName)) {\n parsed.workspaceName = record.workspaceName.trim();\n }\n\n return Object.keys(parsed).length > 0 ? parsed : undefined;\n}\n\nfunction parseDemoInitiative(value: unknown): WizardDemoInitiativeRecord | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n const record = value as Record<string, unknown>;\n if (\n !isNonEmptyString(record.id) ||\n !isNonEmptyString(record.title) ||\n !isNonEmptyString(record.liveUrl) ||\n !isNonEmptyString(record.createdAt)\n ) {\n return undefined;\n }\n\n return {\n createdAt: record.createdAt.trim(),\n id: record.id.trim(),\n liveUrl: record.liveUrl.trim(),\n title: record.title.trim(),\n ...(isNonEmptyString(record.workspaceId)\n ? { workspaceId: record.workspaceId.trim() }\n : {}),\n ...(isNonEmptyString(record.workspaceName)\n ? { workspaceName: record.workspaceName.trim() }\n : {}),\n };\n}\n\nfunction createWizardState(now = new Date().toISOString()): WizardStateRecord {\n return {\n installationId: `wizard-${randomUUID()}`,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nfunction sanitizeWizardStateRecord(record: WizardStateRecord): WizardStateRecord {\n const continuity = parseContinuityDefaults(record.continuity);\n const demoInitiative = parseDemoInitiative(record.demoInitiative);\n\n return {\n installationId: record.installationId.trim(),\n createdAt: record.createdAt.trim(),\n updatedAt: record.updatedAt.trim(),\n ...(continuity ? { continuity } : {}),\n ...(demoInitiative ? { demoInitiative } : {}),\n };\n}\n\nexport function readWizardState(\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord | null {\n const parsed = parseJsonObject(readTextIfExists(statePath));\n\n if (\n !isNonEmptyString(parsed.installationId) ||\n !isNonEmptyString(parsed.createdAt) ||\n !isNonEmptyString(parsed.updatedAt)\n ) {\n return null;\n }\n\n const state: WizardStateRecord = {\n installationId: parsed.installationId.trim(),\n createdAt: parsed.createdAt.trim(),\n updatedAt: parsed.updatedAt.trim(),\n };\n const continuity = parseContinuityDefaults(parsed.continuity);\n if (continuity !== undefined) state.continuity = continuity;\n const demoInitiative = parseDemoInitiative(parsed.demoInitiative);\n if (demoInitiative !== undefined) state.demoInitiative = demoInitiative;\n return state;\n}\n\nexport function writeWizardState(\n value: WizardStateRecord,\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord {\n const record = sanitizeWizardStateRecord(value);\n writeJsonFile(statePath, record, { mode: 0o600 });\n return record;\n}\n\nexport function updateWizardState(\n updater: (current: WizardStateRecord) => WizardStateRecord,\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord {\n const current = readWizardState(statePath) ?? createWizardState();\n const next = updater(current);\n const sanitized = sanitizeWizardStateRecord({\n ...next,\n installationId: next.installationId || current.installationId,\n createdAt: next.createdAt || current.createdAt,\n updatedAt: new Date().toISOString(),\n });\n writeJsonFile(statePath, sanitized, { mode: 0o600 });\n return sanitized;\n}\n\nexport function getOrCreateWizardInstallationId(\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): string {\n const existing = readWizardState(statePath);\n if (existing) {\n return existing.installationId;\n }\n\n const record = createWizardState();\n writeWizardState(record, statePath);\n return record.installationId;\n}\n","import { listSurfaceStatuses, type SurfaceStatus } from \"../surfaces/registry.js\";\nimport type { SurfaceName } from \"../surfaces/names.js\";\nimport type { OrgxWorkspace } from \"./workspaces.js\";\nimport {\n updateWizardState,\n type WizardContinuityDefaults,\n type WizardStateRecord,\n} from \"./wizard-state.js\";\n\nconst REVIEW_SURFACE_ORDER: SurfaceName[] = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n \"chatgpt\",\n];\n\nexport interface ContinuitySeed {\n executionMode?: \"cloud\" | \"local\" | null;\n statuses?: SurfaceStatus[];\n workspace?: Pick<OrgxWorkspace, \"id\" | \"name\"> | null;\n workspaceName?: string | null;\n}\n\nfunction selectReviewSurface(statuses: SurfaceStatus[]): SurfaceName | undefined {\n for (const name of REVIEW_SURFACE_ORDER) {\n const configured = statuses.find((status) => status.name === name && status.configured);\n if (configured) {\n return configured.name;\n }\n }\n\n for (const name of REVIEW_SURFACE_ORDER) {\n const detected = statuses.find((status) => status.name === name && status.detected);\n if (detected) {\n return detected.name;\n }\n }\n\n return undefined;\n}\n\nfunction inferExecutionMode(\n explicitMode: \"cloud\" | \"local\" | null | undefined,\n statuses: SurfaceStatus[],\n): \"cloud\" | \"local\" | undefined {\n if (explicitMode) {\n return explicitMode;\n }\n\n const openclaw = statuses.find((status) => status.name === \"openclaw\");\n if (openclaw?.configured || openclaw?.detected) {\n return \"local\";\n }\n\n const hostedSurface = statuses.find(\n (status) => status.name !== \"openclaw\" && (status.configured || status.detected),\n );\n\n return hostedSurface ? \"cloud\" : undefined;\n}\n\nexport function inferContinuityDefaults(seed: ContinuitySeed = {}): WizardContinuityDefaults {\n const statuses = seed.statuses ?? listSurfaceStatuses();\n const continuity: WizardContinuityDefaults = {};\n\n const reviewSurface = selectReviewSurface(statuses);\n if (reviewSurface) {\n continuity.reviewSurface = reviewSurface;\n }\n\n const executionMode = inferExecutionMode(seed.executionMode, statuses);\n if (executionMode) {\n continuity.executionMode = executionMode;\n }\n\n if (seed.workspace?.id) {\n continuity.workspaceId = seed.workspace.id;\n }\n\n const workspaceName = seed.workspace?.name ?? seed.workspaceName ?? undefined;\n if (workspaceName?.trim()) {\n continuity.workspaceName = workspaceName.trim();\n }\n\n return continuity;\n}\n\nfunction mergeContinuityDefaults(\n current: WizardContinuityDefaults | undefined,\n next: WizardContinuityDefaults,\n): WizardContinuityDefaults {\n return {\n ...(current ?? {}),\n ...next,\n };\n}\n\nexport function persistContinuityDefaults(\n seed: ContinuitySeed = {},\n statePath?: string,\n): WizardStateRecord {\n const next = inferContinuityDefaults(seed);\n\n return updateWizardState(\n (current) => ({\n ...current,\n continuity: mergeContinuityDefaults(current.continuity, next),\n }),\n statePath,\n );\n}\n","import { buildOrgxApiUrl, resolveOrgxAuth, type ResolveOrgxAuthOptions } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\nimport type { OrgxWorkspace } from \"./workspaces.js\";\nimport {\n readWizardState,\n updateWizardState,\n type WizardDemoInitiativeRecord,\n} from \"./wizard-state.js\";\n\nconst FOUNDER_DEMO_INITIATIVE_TITLE = \"Founder Demo Initiative\";\nconst FOUNDER_DEMO_INITIATIVE_SUMMARY =\n \"Starter initiative created by @useorgx/wizard to validate workspace routing, live views, and the default OrgX skill pack.\";\n\nexport interface OrgxInitiative {\n id: string;\n summary?: string;\n title: string;\n}\n\nexport interface FounderDemoInitiativeResult {\n created: boolean;\n initiative: OrgxInitiative;\n liveUrl: string;\n}\n\ninterface InitiativeClientOptions extends ResolveOrgxAuthOptions {\n statePath?: string;\n}\n\nfunction parseResponseBody(text: string): unknown {\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction formatHttpError(status: number, body: unknown): string {\n if (typeof body === \"string\" && body.trim().length > 0) {\n return `HTTP ${status}: ${body}`;\n }\n\n if (isRecord(body) && typeof body.error === \"string\" && body.error.trim().length > 0) {\n return `HTTP ${status}: ${body.error}`;\n }\n\n return `HTTP ${status}`;\n}\n\nfunction parseInitiative(payload: unknown): OrgxInitiative {\n const entity = isRecord(payload) && isRecord(payload.data) ? payload.data : payload;\n if (!isRecord(entity)) {\n throw new Error(\"OrgX returned an unexpected initiative payload.\");\n }\n\n const id = typeof entity.id === \"string\" ? entity.id.trim() : \"\";\n const title = typeof entity.title === \"string\"\n ? entity.title.trim()\n : typeof entity.name === \"string\"\n ? entity.name.trim()\n : \"\";\n\n if (!id || !title) {\n throw new Error(\"OrgX returned an incomplete initiative payload.\");\n }\n\n return {\n id,\n title,\n ...(typeof entity.summary === \"string\" && entity.summary.trim().length > 0\n ? { summary: entity.summary.trim() }\n : {}),\n };\n}\n\nfunction toDemoInitiativeRecord(\n initiative: OrgxInitiative,\n liveUrl: string,\n workspace: Pick<OrgxWorkspace, \"id\" | \"name\">,\n): WizardDemoInitiativeRecord {\n return {\n createdAt: new Date().toISOString(),\n id: initiative.id,\n liveUrl,\n title: initiative.title,\n workspaceId: workspace.id,\n workspaceName: workspace.name,\n };\n}\n\nasync function requireOrgxAuth(options: InitiativeClientOptions = {}) {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n throw new Error(\n \"No OrgX API key configured. Run `wizard auth login` or `wizard auth set-key <oxk_...>` first.\",\n );\n }\n\n return auth;\n}\n\nexport async function createInitiative(\n input: {\n summary?: string;\n title: string;\n workspaceId?: string;\n },\n options: InitiativeClientOptions = {},\n): Promise<OrgxInitiative> {\n const title = input.title.trim();\n if (!title) {\n throw new Error(\"Initiative title is required.\");\n }\n\n const auth = await requireOrgxAuth(options);\n const response = await fetch(buildOrgxApiUrl(\"/entities\", auth.baseUrl), {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n type: \"initiative\",\n title,\n status: \"active\",\n ...(input.summary?.trim() ? { summary: input.summary.trim() } : {}),\n ...(input.workspaceId?.trim() ? { workspace_id: input.workspaceId.trim() } : {}),\n }),\n signal: AbortSignal.timeout(7_000),\n });\n\n const body = parseResponseBody(await response.text());\n if (!response.ok) {\n throw new Error(`Failed to create initiative. ${formatHttpError(response.status, body)}`);\n }\n\n return parseInitiative(body);\n}\n\nexport async function ensureFounderDemoInitiative(\n workspace: Pick<OrgxWorkspace, \"id\" | \"name\">,\n options: InitiativeClientOptions = {},\n): Promise<FounderDemoInitiativeResult> {\n const existingRecord = readWizardState(options.statePath)?.demoInitiative;\n\n if (existingRecord?.workspaceId === workspace.id) {\n return {\n created: false,\n initiative: {\n id: existingRecord.id,\n title: existingRecord.title,\n },\n liveUrl: existingRecord.liveUrl,\n };\n }\n\n const auth = await requireOrgxAuth(options);\n const initiative = await createInitiative(\n {\n title: FOUNDER_DEMO_INITIATIVE_TITLE,\n summary: FOUNDER_DEMO_INITIATIVE_SUMMARY,\n workspaceId: workspace.id,\n },\n options,\n );\n const liveUrl = `${auth.baseUrl.replace(/\\/+$/, \"\")}/live/${initiative.id}`;\n const record = toDemoInitiativeRecord(initiative, liveUrl, workspace);\n\n updateWizardState(\n (current) => ({\n ...current,\n demoInitiative: record,\n }),\n options.statePath,\n );\n\n return {\n created: true,\n initiative,\n liveUrl,\n };\n}\n","import { join } from \"node:path\";\n\nimport {\n CLAUDE_ORGX_SKILL_PATH,\n CLAUDE_SKILLS_DIR,\n CURSOR_ORGX_RULE_PATH,\n} from \"../constants.js\";\nimport { readTextIfExists, writeTextFile } from \"./fs.js\";\n\nexport const DEFAULT_ORGX_SKILL_PACKS = [\n \"morning-briefing\",\n \"initiative-kickoff\",\n \"bulk-create\",\n \"nightly-recap\",\n] as const;\n\n// Directory entries in the useorgx/skills repo root that are not skill packs.\nconst EXCLUDED_PACK_DIRS = new Set([\".github\", \"scripts\"]);\n\nconst ORGX_SKILLS_OWNER = \"useorgx\";\nconst ORGX_SKILLS_REPO = \"skills\";\nconst ORGX_SKILLS_REF = \"main\";\n\nexport interface ManagedFileWrite {\n label: string;\n path: string;\n changed: boolean;\n sourceUrl?: string;\n}\n\nexport interface InstalledSkillPack {\n name: string;\n files: ManagedFileWrite[];\n}\n\nexport interface SkillsInstallReport {\n writes: ManagedFileWrite[];\n packs: InstalledSkillPack[];\n}\n\nexport interface InstallOrgxSkillsOptions {\n skillNames?: readonly string[];\n claudeSkillsDir?: string;\n claudeOrgxSkillPath?: string;\n cursorRulePath?: string;\n fetchImpl?: typeof fetch;\n ref?: string;\n}\n\ninterface GithubDirectoryEntry {\n name: string;\n path: string;\n type: \"file\" | \"dir\";\n download_url: string | null;\n}\n\ninterface RemoteSkillFile {\n path: string;\n sourceUrl: string;\n}\n\nconst CURSOR_RULES_CONTENT = `# OrgX Rules\n\n- Prefer \\`workspace_id\\` on OrgX tool calls. \\`command_center_id\\` is a deprecated alias and should only be used for backwards compatibility. If both are present, they must match.\n- Treat \\`entity_action\\` with \\`force: true\\` as an escape hatch. It bypasses hierarchy and proof checks, so only use it when the user explicitly wants that behavior and say why.\n- Treat \\`scaffold_initiative continue_on_error\\` as best-effort creation. Use it only when partial scaffolds are acceptable, and follow up on any failed children.\n- Preserve \\`_context\\` when widget or app-rendering flows depend on client, conversation, session, or user metadata. Do not strip or rename it.\n- Prefer \\`list_entities\\` for pending approvals and state inspection before reaching for legacy aliases.\n- Keep hosted OrgX MCP calls distinct from local OpenClaw/plugin surfaces before mutating config or entity state.\n`;\n\nconst CLAUDE_ORGX_SKILL_CONTENT = `---\nname: orgx\ndescription: Use when working against the hosted OrgX MCP server for workspace-scoped planning, entity mutations, progress reporting, and decision handling.\nversion: 1.0.0\nuser-invocable: true\ntags:\n - orchestration\n - productivity\n - workspace\n---\n\n# OrgX Hosted MCP\n\nUse this skill when Claude is connected to the hosted OrgX MCP server at \\`https://mcp.useorgx.com/mcp\\`.\n\nThis skill is for the hosted OrgX tool surface, not the local OpenClaw plugin. Keep those surfaces distinct before mutating config or entity state.\n\n## Operating Rules\n\n- Prefer \\`workspace_id\\` on OrgX tools. \\`command_center_id\\` is a deprecated alias kept for compatibility.\n- Treat \\`entity_action\\` with \\`force: true\\` as a deliberate override only. It bypasses hierarchy and proof-chain checks.\n- Treat \\`scaffold_initiative continue_on_error\\` as best-effort scaffolding. Use it only when partial creation is acceptable and inspect failures afterward.\n- Preserve \\`_context\\` when widget or app rendering depends on client, conversation, session, or user metadata.\n- Prefer \\`list_entities\\` over older aliases when you need pending decisions, blockers, or entity state.\n\n## Suggested Skill Packs\n\nInstall and use these packs alongside this base skill:\n\n- \\`morning-briefing\\`\n- \\`initiative-kickoff\\`\n- \\`bulk-create\\`\n- \\`nightly-recap\\`\n\n## Suggested Workflow\n\n1. Inspect state with \\`mcp__orgx__list_entities\\`, \\`mcp__orgx__get_initiative_pulse\\`, or the relevant workspace-scoped read tool.\n2. Mutate state with the narrowest tool that matches the task.\n3. When you need a hard override, explain why before using \\`force: true\\`.\n4. When you scaffold, decide up front whether \\`continue_on_error\\` is acceptable.\n5. Carry \\`_context\\` through any widget-producing flows so the UI can render and resume correctly.\n`;\n\nfunction encodeRepoPath(value: string): string {\n return value\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n}\n\nfunction buildContentsUrl(path: string, ref: string): string {\n const encodedPath = encodeRepoPath(path);\n return `https://api.github.com/repos/${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}/contents/${encodedPath}?ref=${encodeURIComponent(ref)}`;\n}\n\nfunction resolveGitHubError(status: number, path: string): string {\n if (status === 404) {\n return `OrgX skill pack '${path}' was not found in ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`;\n }\n\n return `GitHub returned HTTP ${status} while loading '${path}' from ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`;\n}\n\nasync function readResponseText(response: Response): Promise<string> {\n return response.text();\n}\n\nasync function fetchDirectoryEntries(\n path: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<GithubDirectoryEntry[]> {\n const response = await fetchImpl(buildContentsUrl(path, ref), {\n headers: {\n Accept: \"application/vnd.github+json\",\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n throw new Error(resolveGitHubError(response.status, path));\n }\n\n const data = await response.json();\n if (!Array.isArray(data)) {\n throw new Error(`Expected '${path}' to be a directory in ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`);\n }\n\n return data\n .filter((entry): entry is GithubDirectoryEntry => {\n if (!entry || typeof entry !== \"object\") return false;\n return entry.type === \"file\" || entry.type === \"dir\";\n })\n .sort((left, right) => left.path.localeCompare(right.path));\n}\n\nasync function listRemoteSkillFiles(\n path: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<RemoteSkillFile[]> {\n const entries = await fetchDirectoryEntries(path, fetchImpl, ref);\n const files: RemoteSkillFile[] = [];\n\n for (const entry of entries) {\n if (entry.type === \"dir\") {\n files.push(...await listRemoteSkillFiles(entry.path, fetchImpl, ref));\n continue;\n }\n\n if (!entry.download_url) {\n throw new Error(`GitHub did not provide a download URL for '${entry.path}'.`);\n }\n\n files.push({\n path: entry.path,\n sourceUrl: entry.download_url,\n });\n }\n\n return files;\n}\n\nasync function fetchRemoteText(sourceUrl: string, fetchImpl: typeof fetch): Promise<string> {\n const response = await fetchImpl(sourceUrl, {\n headers: {\n Accept: \"text/plain\",\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n throw new Error(`GitHub returned HTTP ${response.status} while downloading ${sourceUrl}.`);\n }\n\n return readResponseText(response);\n}\n\nfunction writeManagedFile(\n path: string,\n content: string,\n label: string,\n sourceUrl?: string,\n): ManagedFileWrite {\n const existing = readTextIfExists(path);\n const changed = existing !== content;\n\n if (changed) {\n writeTextFile(path, content);\n }\n\n return {\n label,\n path,\n changed,\n ...(sourceUrl ? { sourceUrl } : {}),\n };\n}\n\nexport function resolveSkillPackNames(\n requested: readonly string[] = [],\n): string[] {\n if (requested.length === 0 || requested.includes(\"all\")) {\n return [...DEFAULT_ORGX_SKILL_PACKS];\n }\n\n const seen = new Set<string>();\n const normalized: string[] = [];\n\n for (const name of requested) {\n const next = name.trim();\n if (!next || seen.has(next)) {\n continue;\n }\n seen.add(next);\n normalized.push(next);\n }\n\n return normalized;\n}\n\nasync function fetchAvailablePackNames(\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<string[]> {\n const entries = await fetchDirectoryEntries(\"\", fetchImpl, ref);\n return entries\n .filter((e) => e.type === \"dir\" && !EXCLUDED_PACK_DIRS.has(e.name))\n .map((e) => e.name);\n}\n\nasync function installSkillPack(\n skillName: string,\n claudeSkillsDir: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<InstalledSkillPack> {\n const rootPath = skillName;\n const files = await listRemoteSkillFiles(rootPath, fetchImpl, ref);\n const writes: ManagedFileWrite[] = [];\n\n for (const file of files) {\n const content = await fetchRemoteText(file.sourceUrl, fetchImpl);\n const relativePath = file.path.slice(`${rootPath}/`.length);\n writes.push(\n writeManagedFile(\n join(claudeSkillsDir, skillName, relativePath),\n content,\n `${skillName}/${relativePath}`,\n file.sourceUrl,\n ),\n );\n }\n\n return {\n name: skillName,\n files: writes,\n };\n}\n\nexport async function installOrgxSkills(\n options: InstallOrgxSkillsOptions = {},\n): Promise<SkillsInstallReport> {\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\"Global fetch is unavailable in this runtime.\");\n }\n\n const ref = options.ref ?? ORGX_SKILLS_REF;\n const claudeSkillsDir = options.claudeSkillsDir ?? CLAUDE_SKILLS_DIR;\n const claudeOrgxSkillPath = options.claudeOrgxSkillPath ?? CLAUDE_ORGX_SKILL_PATH;\n const cursorRulePath = options.cursorRulePath ?? CURSOR_ORGX_RULE_PATH;\n const requestedNames = options.skillNames ?? [];\n let skillNames: string[];\n if (requestedNames.length === 0 || requestedNames.includes(\"all\")) {\n try {\n skillNames = await fetchAvailablePackNames(fetchImpl, ref);\n } catch {\n skillNames = [...DEFAULT_ORGX_SKILL_PACKS];\n }\n } else {\n skillNames = resolveSkillPackNames(requestedNames);\n }\n\n const writes: ManagedFileWrite[] = [\n writeManagedFile(cursorRulePath, CURSOR_RULES_CONTENT, \"cursor-rules\"),\n writeManagedFile(claudeOrgxSkillPath, CLAUDE_ORGX_SKILL_CONTENT, \"claude-orgx-skill\"),\n ];\n\n const packs: InstalledSkillPack[] = [];\n for (const skillName of skillNames) {\n packs.push(await installSkillPack(skillName, claudeSkillsDir, fetchImpl, ref));\n }\n\n return {\n writes,\n packs,\n };\n}\n","import type { CreateWorkspaceInput, OrgxWorkspace, SetDefaultWorkspaceInput } from \"./workspaces.js\";\n\nconst CREATE_WORKSPACE_VALUE = \"__create_workspace__\";\nconst SKIP_WORKSPACE_VALUE = \"__skip_workspace__\";\n\nexport interface WorkspaceSetupClient {\n createWorkspace(input: CreateWorkspaceInput): Promise<OrgxWorkspace>;\n getCurrentWorkspace(): Promise<OrgxWorkspace | null>;\n listWorkspaces(): Promise<OrgxWorkspace[]>;\n setDefaultWorkspace(\n input: SetDefaultWorkspaceInput,\n ): Promise<{ changed: boolean; workspace: OrgxWorkspace }>;\n}\n\nexport interface WorkspaceSelectOption {\n hint?: string;\n label: string;\n value: string;\n}\n\nexport interface WorkspaceSetupPrompts {\n cancel(message: string): void;\n isCancel(value: unknown): boolean;\n select(input: {\n initialValue?: string | undefined;\n message: string;\n options: WorkspaceSelectOption[];\n }): Promise<string | symbol>;\n text(input: {\n initialValue?: string | undefined;\n message: string;\n placeholder?: string;\n validate?: (value: string | undefined) => Error | string | undefined;\n }): Promise<string | symbol>;\n}\n\nexport interface WorkspaceSetupOptions {\n interactive: boolean;\n}\n\nexport interface WorkspaceSetupResult {\n created?: boolean;\n defaultChanged?: boolean;\n message: string;\n status: \"cancelled\" | \"skipped\" | \"unchanged\" | \"updated\";\n workspace?: OrgxWorkspace;\n}\n\nfunction trimDescription(value: string): string | undefined {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction cancelResult(\n prompts: WorkspaceSetupPrompts,\n message = \"Workspace bootstrap cancelled.\",\n): WorkspaceSetupResult {\n prompts.cancel(message);\n return {\n message,\n status: \"cancelled\",\n };\n}\n\nfunction buildWorkspaceLabel(workspace: OrgxWorkspace, currentWorkspaceId?: string): string {\n const suffixes: string[] = [];\n\n if (workspace.isDefault) {\n suffixes.push(\"default\");\n }\n\n if (workspace.id === currentWorkspaceId) {\n suffixes.push(\"current\");\n }\n\n if (suffixes.length === 0) {\n return workspace.name;\n }\n\n return `${workspace.name} (${suffixes.join(\", \")})`;\n}\n\nexport function buildWorkspaceSelectOptions(\n workspaces: OrgxWorkspace[],\n currentWorkspaceId?: string,\n): WorkspaceSelectOption[] {\n const options = workspaces.map((workspace) => ({\n value: workspace.id,\n label: buildWorkspaceLabel(workspace, currentWorkspaceId),\n ...(workspace.description ? { hint: workspace.description } : {}),\n }));\n\n options.push(\n {\n value: CREATE_WORKSPACE_VALUE,\n label: \"Create a new workspace\",\n hint: \"Name it here and set it as the default for this machine.\",\n },\n {\n value: SKIP_WORKSPACE_VALUE,\n label: \"Skip for now\",\n hint: \"Leave workspace selection unchanged and finish setup.\",\n },\n );\n\n return options;\n}\n\nasync function promptForWorkspaceName(prompts: WorkspaceSetupPrompts): Promise<string | symbol> {\n return prompts.text({\n message: \"Workspace name\",\n placeholder: \"Founders\",\n validate(value) {\n if (!value || value.trim().length === 0) {\n return \"Workspace name is required.\";\n }\n\n return undefined;\n },\n });\n}\n\nasync function promptForWorkspaceDescription(\n prompts: WorkspaceSetupPrompts,\n): Promise<string | symbol> {\n return prompts.text({\n message: \"Workspace description\",\n placeholder: \"Optional\",\n });\n}\n\nasync function createAndSelectWorkspace(\n client: WorkspaceSetupClient,\n prompts: WorkspaceSetupPrompts,\n): Promise<WorkspaceSetupResult> {\n const name = await promptForWorkspaceName(prompts);\n if (prompts.isCancel(name)) {\n return cancelResult(prompts);\n }\n if (typeof name !== \"string\") {\n return cancelResult(prompts);\n }\n\n const description = await promptForWorkspaceDescription(prompts);\n if (prompts.isCancel(description)) {\n return cancelResult(prompts);\n }\n if (typeof description !== \"string\") {\n return cancelResult(prompts);\n }\n\n const trimmedDescription = trimDescription(description);\n const createWorkspaceInput: CreateWorkspaceInput = trimmedDescription\n ? { name, description: trimmedDescription }\n : { name };\n\n const created = await client.createWorkspace(createWorkspaceInput);\n\n if (created.isDefault) {\n return {\n created: true,\n defaultChanged: false,\n message: `Created \"${created.name}\" and it is already the default OrgX workspace.`,\n status: \"updated\",\n workspace: created,\n };\n }\n\n const promoted = await client.setDefaultWorkspace({ id: created.id });\n return {\n created: true,\n defaultChanged: promoted.changed,\n message: `Created \"${promoted.workspace.name}\" and set it as the default OrgX workspace.`,\n status: \"updated\",\n workspace: promoted.workspace,\n };\n}\n\nexport async function runWorkspaceSetup(\n client: WorkspaceSetupClient,\n prompts: WorkspaceSetupPrompts,\n options: WorkspaceSetupOptions,\n): Promise<WorkspaceSetupResult> {\n if (!options.interactive) {\n return {\n message:\n \"Interactive workspace bootstrap skipped because this shell is not attached to a TTY.\",\n status: \"skipped\",\n };\n }\n\n const workspaces = await client.listWorkspaces();\n const currentWorkspace =\n workspaces.length > 0\n ? await client.getCurrentWorkspace().catch(() => workspaces.find((workspace) => workspace.isDefault) ?? null)\n : null;\n\n if (workspaces.length === 0) {\n const action = await prompts.select({\n message: \"No OrgX workspaces were found. What should setup do next?\",\n options: [\n {\n value: CREATE_WORKSPACE_VALUE,\n label: \"Create a new workspace\",\n hint: \"Create one now and set it as the default for this machine.\",\n },\n {\n value: SKIP_WORKSPACE_VALUE,\n label: \"Skip for now\",\n hint: \"Finish surface setup without creating a workspace.\",\n },\n ],\n initialValue: CREATE_WORKSPACE_VALUE,\n });\n\n if (prompts.isCancel(action)) {\n return cancelResult(prompts);\n }\n\n if (action === SKIP_WORKSPACE_VALUE) {\n return {\n message: \"Workspace bootstrap skipped.\",\n status: \"skipped\",\n };\n }\n\n return createAndSelectWorkspace(client, prompts);\n }\n\n const initialWorkspaceId =\n currentWorkspace?.id ??\n workspaces.find((workspace) => workspace.isDefault)?.id ??\n workspaces[0]?.id;\n const selected = await prompts.select({\n message: \"Choose the OrgX workspace this machine should use by default.\",\n options: buildWorkspaceSelectOptions(\n workspaces,\n currentWorkspace?.id ?? workspaces.find((workspace) => workspace.isDefault)?.id,\n ),\n ...(initialWorkspaceId ? { initialValue: initialWorkspaceId } : {}),\n });\n\n if (prompts.isCancel(selected)) {\n return cancelResult(prompts);\n }\n if (typeof selected !== \"string\") {\n return cancelResult(prompts);\n }\n\n if (selected === SKIP_WORKSPACE_VALUE) {\n return {\n message: \"Workspace bootstrap skipped.\",\n status: \"skipped\",\n ...(currentWorkspace ? { workspace: currentWorkspace } : {}),\n };\n }\n\n if (selected === CREATE_WORKSPACE_VALUE) {\n return createAndSelectWorkspace(client, prompts);\n }\n\n const chosenWorkspace = workspaces.find((workspace) => workspace.id === selected);\n if (!chosenWorkspace) {\n throw new Error(`Selected workspace ${selected} is no longer available.`);\n }\n\n if (chosenWorkspace.isDefault) {\n return {\n defaultChanged: false,\n message: `\"${chosenWorkspace.name}\" is already the default OrgX workspace.`,\n status: \"unchanged\",\n workspace: chosenWorkspace,\n };\n }\n\n const promoted = await client.setDefaultWorkspace({ id: chosenWorkspace.id });\n return {\n defaultChanged: promoted.changed,\n message: `Set \"${promoted.workspace.name}\" as the default OrgX workspace.`,\n status: promoted.changed ? \"updated\" : \"unchanged\",\n workspace: promoted.workspace,\n };\n}\n","import {\n ensureFounderDemoInitiative,\n type FounderDemoInitiativeResult,\n} from \"./initiatives.js\";\nimport { persistContinuityDefaults, type ContinuitySeed } from \"./continuity.js\";\nimport {\n DEFAULT_ORGX_SKILL_PACKS,\n installOrgxSkills,\n type SkillsInstallReport,\n} from \"./skills.js\";\nimport {\n runWorkspaceSetup,\n type WorkspaceSetupOptions,\n type WorkspaceSetupPrompts,\n type WorkspaceSetupResult,\n} from \"./setup-workspace.js\";\nimport { listSurfaceStatuses, setupDetectedSurfaces, type SurfaceMutationResult } from \"../surfaces/registry.js\";\nimport {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n type OrgxWorkspace,\n} from \"./workspaces.js\";\nimport type { WizardStateRecord } from \"./wizard-state.js\";\n\nexport interface FounderPresetResult {\n continuity: WizardStateRecord;\n demoInitiative?: FounderDemoInitiativeResult;\n skillReport: SkillsInstallReport;\n surfaceResults: SurfaceMutationResult[];\n workspace: OrgxWorkspace | null;\n workspaceSetup?: WorkspaceSetupResult;\n}\n\nexport async function runFounderPreset(\n prompts: WorkspaceSetupPrompts,\n options: WorkspaceSetupOptions,\n): Promise<FounderPresetResult | WorkspaceSetupResult> {\n const surfaceResults = await setupDetectedSurfaces();\n const skillReport = await installOrgxSkills({\n skillNames: [...DEFAULT_ORGX_SKILL_PACKS],\n });\n\n let workspaceSetup: WorkspaceSetupResult | undefined;\n let workspace = await getCurrentWorkspace().catch(() => null);\n\n if (workspace || options.interactive) {\n workspaceSetup = await runWorkspaceSetup(\n {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n },\n prompts,\n options,\n );\n\n if (workspaceSetup.status === \"cancelled\") {\n return workspaceSetup;\n }\n\n workspace = workspaceSetup.workspace ?? workspace ?? await getCurrentWorkspace().catch(() => null);\n }\n\n const continuity = persistContinuityDefaults({\n statuses: listSurfaceStatuses(),\n workspace,\n });\n\n let demoInitiative: FounderDemoInitiativeResult | undefined;\n if (workspace) {\n demoInitiative = await ensureFounderDemoInitiative(workspace);\n }\n\n return {\n continuity,\n ...(demoInitiative ? { demoInitiative } : {}),\n skillReport,\n surfaceResults,\n workspace,\n ...(workspaceSetup ? { workspaceSetup } : {}),\n };\n}\n","import type { SurfaceMutationResult } from \"../surfaces/registry.js\";\n\nexport type MutationSummary = {\n name: string;\n state: \"updated\" | \"unchanged\";\n message: string;\n};\n\nexport function summarizeMutationResults(\n results: SurfaceMutationResult[],\n): MutationSummary[] {\n return results.map((result) => ({\n name: result.name,\n state: result.changed ? \"updated\" : \"unchanged\",\n message: result.message,\n }));\n}\n","import ora, { type Ora } from \"ora\";\nimport pc from \"picocolors\";\n\nconst frames = [\"[ ]\", \"[= ]\", \"[== ]\", \"[=== ]\", \"[ ===]\", \"[ ==]\", \"[ =]\"];\n\nexport function createOrgxSpinner(text: string): Ora {\n return ora({\n text: pc.cyan(text),\n spinner: {\n interval: 90,\n frames,\n },\n });\n}\n\n"],"mappings":"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","names":["pc","hostname","text","text","text","spawnSync","spawnSync","text","text","text","parseResponseBody","text","existsSync","dirname","dirname","existsSync","inspection","isNonEmptyString","parseResponseBody","text","formatHttpError","requireOrgxAuth","join","join","pc","text","pc","pc","spinner","doctor","assessment"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/banner.ts","../src/constants.ts","../src/lib/browser-auth.ts","../src/lib/fs.ts","../src/surfaces/openclaw-config.ts","../src/lib/auth-store.ts","../src/lib/auth.ts","../src/lib/setup-status.ts","../src/lib/openclaw-health.ts","../src/lib/hosted-mcp-health.ts","../src/lib/hosted-mcp-tool-check.ts","../src/lib/npm-registry-health.ts","../src/lib/workspaces.ts","../src/lib/workspace-connectivity.ts","../src/surfaces/mcp-config.ts","../src/surfaces/names.ts","../src/surfaces/detection.ts","../src/surfaces/registry.ts","../src/lib/wizard-state.ts","../src/lib/continuity.ts","../src/lib/initiatives.ts","../src/lib/skills.ts","../src/lib/setup-workspace.ts","../src/lib/founder-preset.ts","../src/lib/mutation-output.ts","../src/spinner.ts"],"sourcesContent":["import * as clack from \"@clack/prompts\";\nimport { hostname } from \"node:os\";\nimport { Command } from \"commander\";\nimport pc from \"picocolors\";\n\nimport { renderBanner } from \"./banner.js\";\nimport { ORGX_WIZARD_AUTH_PATH } from \"./constants.js\";\nimport {\n acknowledgeBrowserPairing,\n openBrowser,\n startBrowserPairing,\n waitForBrowserPairing,\n} from \"./lib/browser-auth.js\";\nimport {\n checkOrgxAuth,\n describeSetupStatusScope,\n normalizeOrgxBaseUrl,\n resolveOrgxAuth,\n verifyOrgxAuth,\n type OrgxAuthCheckResult,\n} from \"./lib/auth.js\";\nimport { clearWizardAuth, writeWizardAuth } from \"./lib/auth-store.js\";\nimport { persistContinuityDefaults } from \"./lib/continuity.js\";\nimport { runFounderPreset, type FounderPresetResult } from \"./lib/founder-preset.js\";\nimport { getOrCreateWizardInstallationId } from \"./lib/wizard-state.js\";\nimport {\n installOrgxSkills,\n type SkillsInstallReport,\n} from \"./lib/skills.js\";\nimport { summarizeMutationResults } from \"./lib/mutation-output.js\";\nimport {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n type OrgxWorkspace,\n} from \"./lib/workspaces.js\";\nimport { runWorkspaceSetup, type WorkspaceSetupResult } from \"./lib/setup-workspace.js\";\nimport type { SetupStatusResult } from \"./lib/setup-status.js\";\nimport type { OpenClawHealthCheck } from \"./lib/openclaw-health.js\";\nimport type { HostedMcpHealthCheck } from \"./lib/hosted-mcp-health.js\";\nimport type { HostedMcpToolCheck } from \"./lib/hosted-mcp-tool-check.js\";\nimport type { NpmRegistryCheck } from \"./lib/npm-registry-health.js\";\nimport type { WorkspaceConnectivityCheck } from \"./lib/workspace-connectivity.js\";\nimport { createOrgxSpinner } from \"./spinner.js\";\nimport { detectSurface } from \"./surfaces/detection.js\";\nimport {\n assessDoctorReport,\n addMcpSurface,\n addSurface,\n listSurfaceStatuses,\n removeMcpSurface,\n removeSurface,\n runDoctor,\n setupDetectedSurfaces,\n type SurfaceMutationResult,\n type SurfaceStatus,\n} from \"./surfaces/registry.js\";\n\nfunction formatAuthSource(source: OrgxAuthCheckResult[\"source\"]): string {\n switch (source) {\n case \"environment\":\n return \"ORGX_API_KEY\";\n case \"wizard-store\":\n return \"wizard auth store\";\n case \"openclaw-config-file\":\n return \"OpenClaw config\";\n default:\n return \"not configured\";\n }\n}\n\nfunction printSurfaceTable(statuses: SurfaceStatus[]): void {\n for (const status of statuses) {\n const state = status.configured\n ? pc.green(\"configured\")\n : status.detected\n ? pc.yellow(\"detected\")\n : pc.dim(\"not detected\");\n const mode = status.mode === \"automated\" ? pc.cyan(\"auto\") : pc.magenta(\"manual\");\n console.log(`${pc.bold(status.name.padEnd(10))} ${mode.padEnd(14)} ${state}`);\n console.log(` ${status.summary}`);\n if (status.path) {\n console.log(` path: ${status.path}`);\n }\n for (const detail of status.details) {\n console.log(` - ${detail}`);\n }\n }\n}\n\nfunction printMutationResults(results: SurfaceMutationResult[]): void {\n for (const result of summarizeMutationResults(results)) {\n const marker = result.state === \"updated\" ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(`${pc.bold(result.name)} ${marker} ${result.message}`);\n }\n}\n\nfunction printSkillInstallReport(report: SkillsInstallReport): void {\n for (const write of report.writes) {\n const marker = write.changed ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(`${pc.bold(write.label)} ${marker} ${write.path}`);\n }\n\n for (const pack of report.packs) {\n const changedCount = pack.files.filter((file) => file.changed).length;\n const marker = changedCount > 0 ? pc.green(\"updated\") : pc.yellow(\"unchanged\");\n console.log(\n `${pc.bold(pack.name)} ${marker} ${changedCount}/${pack.files.length} files written`,\n );\n\n for (const file of pack.files) {\n const state = file.changed ? \"updated\" : \"unchanged\";\n console.log(` - ${state} ${file.path}`);\n }\n }\n}\n\nfunction printWorkspace(workspace: OrgxWorkspace): void {\n console.log(\n `${pc.bold(workspace.name)}${workspace.isDefault ? ` ${pc.green(\"(default)\")}` : \"\"}`,\n );\n console.log(` id: ${workspace.id}`);\n if (workspace.description) {\n console.log(` description: ${workspace.description}`);\n }\n if (workspace.createdAt) {\n console.log(` created: ${workspace.createdAt}`);\n }\n if (workspace.updatedAt) {\n console.log(` updated: ${workspace.updatedAt}`);\n }\n}\n\nfunction printWorkspaceList(workspaces: OrgxWorkspace[]): void {\n if (workspaces.length === 0) {\n console.log(pc.yellow(\"No workspaces found for this OrgX user.\"));\n return;\n }\n\n for (const workspace of workspaces) {\n printWorkspace(workspace);\n }\n}\n\nfunction printWorkspaceSetupResult(result: WorkspaceSetupResult): void {\n console.log(pc.bold(\"workspace bootstrap\"));\n\n const statusLabel =\n result.status === \"updated\"\n ? pc.green(\"updated\")\n : result.status === \"unchanged\"\n ? pc.yellow(\"unchanged\")\n : pc.dim(result.status);\n console.log(` ${statusLabel} ${result.message}`);\n\n if (result.workspace) {\n console.log(` workspace: ${result.workspace.name}`);\n console.log(` id: ${result.workspace.id}`);\n if (result.workspace.isDefault) {\n console.log(\" default: yes\");\n }\n }\n}\n\nfunction printFounderPresetResult(result: FounderPresetResult): void {\n printMutationResults(result.surfaceResults);\n console.log(\"\");\n printSkillInstallReport(result.skillReport);\n\n if (result.workspaceSetup) {\n console.log(\"\");\n printWorkspaceSetupResult(result.workspaceSetup);\n }\n\n if (result.demoInitiative) {\n console.log(\"\");\n console.log(pc.bold(\"demo initiative\"));\n console.log(\n ` ${result.demoInitiative.created ? pc.green(\"created\") : pc.yellow(\"unchanged\")} ${result.demoInitiative.initiative.title}`,\n );\n console.log(` live: ${result.demoInitiative.liveUrl}`);\n }\n}\n\nfunction normalizePromptResult<T>(value: T | symbol): T | symbol {\n return value;\n}\n\nasync function secretPrompt(message: string): Promise<string | null> {\n if (!process.stdin.isTTY || !process.stdout.isTTY) {\n return null;\n }\n\n process.stdout.write(`${message}: `);\n\n const stdin = process.stdin;\n const stdout = process.stdout;\n const previousRawMode = stdin.isRaw === true;\n\n return await new Promise<string | null>((resolve) => {\n let value = \"\";\n\n const cleanup = (result: string | null) => {\n stdin.off(\"data\", onData);\n if (stdin.isTTY) {\n stdin.setRawMode(previousRawMode);\n }\n stdin.pause();\n stdout.write(\"\\n\");\n resolve(result);\n };\n\n const onData = (chunk: Buffer | string) => {\n const text = chunk.toString(\"utf8\");\n\n for (const char of text) {\n if (char === \"\\u0003\") {\n cleanup(null);\n return;\n }\n\n if (char === \"\\r\" || char === \"\\n\") {\n cleanup(value.trim());\n return;\n }\n\n if (char === \"\\u007f\" || char === \"\\b\") {\n value = value.slice(0, -1);\n continue;\n }\n\n if (char >= \" \") {\n value += char;\n }\n }\n };\n\n if (stdin.isTTY) {\n stdin.setRawMode(true);\n }\n stdin.resume();\n stdin.on(\"data\", onData);\n });\n}\n\nasync function selectPrompt(input: {\n initialValue?: string | undefined;\n message: string;\n options: { hint?: string; label: string; value: string }[];\n}): Promise<string | symbol> {\n const promptInput = input.initialValue\n ? { ...input, initialValue: input.initialValue }\n : { message: input.message, options: input.options };\n\n return normalizePromptResult(await clack.select<string>(promptInput));\n}\n\nasync function textPrompt(input: {\n initialValue?: string | undefined;\n message: string;\n placeholder?: string;\n validate?: (value: string | undefined) => Error | string | undefined;\n}): Promise<string | symbol> {\n const promptInput = input.initialValue\n ? { ...input, initialValue: input.initialValue }\n : {\n message: input.message,\n ...(input.placeholder ? { placeholder: input.placeholder } : {}),\n ...(input.validate ? { validate: input.validate } : {}),\n };\n\n return normalizePromptResult(await clack.text(promptInput));\n}\n\nasync function verifyAndPersistAuth(\n apiKey: string,\n options: { baseUrl?: string },\n): Promise<{\n verification: OrgxAuthCheckResult;\n} | {\n openclawResults: SurfaceMutationResult[];\n stored: Awaited<ReturnType<typeof writeWizardAuth>>;\n verification: OrgxAuthCheckResult;\n}> {\n const trimmedKey = apiKey.trim();\n if (!trimmedKey.toLowerCase().startsWith(\"oxk_\")) {\n throw new Error(\"Expected a per-user OrgX API key that starts with oxk_.\");\n }\n\n const baseUrl = normalizeOrgxBaseUrl(options.baseUrl);\n const verification = await verifyOrgxAuth({\n apiKey: trimmedKey,\n keyPrefix: trimmedKey.slice(0, 12),\n baseUrl,\n source: \"wizard-store\",\n });\n\n if (!verification.ok) {\n return { verification };\n }\n\n const stored = await writeWizardAuth({\n apiKey: trimmedKey,\n baseUrl,\n verifiedAt: new Date().toISOString(),\n });\n const openclawResults = detectSurface(\"openclaw\").detected\n ? await addSurface(\"openclaw\")\n : [];\n\n return { openclawResults, stored, verification };\n}\n\nasync function syncContinuityAfterAuth(seed: {\n executionMode?: \"cloud\" | \"local\" | null;\n workspaceName?: string | null;\n} = {}): Promise<void> {\n try {\n const workspace = await getCurrentWorkspace().catch(() => null);\n persistContinuityDefaults({\n ...(seed.executionMode !== undefined ? { executionMode: seed.executionMode } : {}),\n workspace,\n workspaceName: seed.workspaceName ?? workspace?.name ?? null,\n });\n } catch {\n // Auth success should not depend on workspace or continuity writes.\n }\n}\n\nfunction printOpenClawHealth(check: OpenClawHealthCheck): void {\n console.log(pc.bold(\"openclaw runtime\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Gateway health check skipped.\")}`);\n } else if (check.ok) {\n const via = check.method === \"cli\" ? \"CLI\" : \"HTTP\";\n console.log(` ${pc.green(`healthy via ${via}`)}`);\n } else {\n const via = check.method === \"none\" ? \"unavailable\" : check.method.toUpperCase();\n console.log(` ${pc.red(`unhealthy via ${via}`)} ${check.error ?? \"unknown error\"}`);\n }\n\n if (check.url) {\n console.log(` url: ${check.url}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printHostedMcpHealth(check: HostedMcpHealthCheck): void {\n console.log(pc.bold(\"hosted mcp\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Hosted MCP health check skipped.\")}`);\n } else if (check.ok) {\n console.log(` ${pc.green(\"reachable\")}`);\n } else {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n }\n\n console.log(` url: ${check.url}`);\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printHostedMcpToolCheck(check: HostedMcpToolCheck): void {\n console.log(pc.bold(\"hosted mcp tool call\"));\n\n if (check.skipped) {\n console.log(` ${pc.yellow(check.error ?? \"Hosted MCP tool verification skipped.\")}`);\n } else if (check.ok) {\n console.log(` ${pc.green(\"authenticated tool call ok\")}`);\n } else {\n console.log(` ${pc.red(\"authenticated tool call failed\")} ${check.error ?? \"unknown error\"}`);\n }\n\n console.log(` tool: ${check.toolName}`);\n console.log(` url: ${check.url}`);\n\n if (check.source !== \"none\") {\n console.log(` auth source: ${formatAuthSource(check.source)}`);\n }\n\n if (check.baseUrl) {\n console.log(` base url: ${check.baseUrl}`);\n }\n\n if (check.initializeStatus !== undefined) {\n console.log(` initialize status: ${check.initializeStatus}`);\n }\n\n if (check.callStatus !== undefined) {\n console.log(` tool call status: ${check.callStatus}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printNpmRegistryHealth(check: NpmRegistryCheck): void {\n console.log(pc.bold(\"npm registry\"));\n\n if (!check.reachable) {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n } else if (check.published) {\n console.log(\n ` ${pc.green(\"reachable\")} ${check.packageName}${check.version ? `@${check.version}` : \"\"}`,\n );\n } else {\n console.log(` ${pc.yellow(\"reachable\")} ${check.error ?? `${check.packageName} is not published yet.`}`);\n }\n\n console.log(` url: ${check.url}`);\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction parseTimeoutSeconds(value: string): number {\n const parsed = Number(value);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new Error(\"--timeout must be a positive number of seconds.\");\n }\n return parsed;\n}\n\nfunction describeBrowserPairingFailure(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return `${message} Use \\`wizard auth login --api-key <oxk_...>\\` or \\`wizard auth set-key <oxk_...>\\` to fall back to a manual key.`;\n}\n\nfunction printAuthStatus(status: OrgxAuthCheckResult): void {\n console.log(pc.bold(\"orgx auth\"));\n\n if (!status.configured) {\n console.log(` ${pc.yellow(status.error ?? \"No OrgX API key configured.\")}`);\n return;\n }\n\n const state = status.ok\n ? pc.green(\"verified\")\n : status.skipped\n ? pc.yellow(\"skipped\")\n : pc.red(\"invalid\");\n\n console.log(\n ` ${state} ${status.keyPrefix ?? \"unknown\"} via ${formatAuthSource(status.source)}`,\n );\n if (status.baseUrl) {\n console.log(` base url: ${status.baseUrl}`);\n }\n if (status.path) {\n console.log(` path: ${status.path}`);\n }\n if (status.verifiedAt) {\n console.log(` verified at: ${status.verifiedAt}`);\n }\n if (!status.ok && status.error) {\n console.log(` error: ${status.error}`);\n }\n}\n\nfunction printRemoteSetupStatus(status: SetupStatusResult): void {\n if (status.skipped) {\n console.log(pc.yellow(status.error ?? \"Remote setup check skipped.\"));\n console.log(pc.dim(describeSetupStatusScope()));\n return;\n }\n\n if (!status.ok) {\n console.log(pc.red(`Remote setup check failed: ${status.error ?? \"unknown error\"}`));\n if (status.status) {\n console.log(`status: ${status.status}`);\n }\n return;\n }\n\n console.log(pc.green(`Remote setup check passed via ${status.url}`));\n if (status.data) {\n console.log(JSON.stringify(status.data, null, 2));\n }\n}\n\nfunction printWorkspaceConnectivity(check: WorkspaceConnectivityCheck): void {\n console.log(pc.bold(\"workspace connectivity\"));\n\n if (!check.configured) {\n console.log(` ${pc.yellow(check.error ?? \"Workspace connectivity check skipped.\")}`);\n return;\n }\n\n if (!check.ok) {\n console.log(` ${pc.red(\"unreachable\")} ${check.error ?? \"unknown error\"}`);\n } else if (check.workspace) {\n console.log(` ${pc.green(\"reachable\")} ${check.workspace.name}`);\n console.log(` workspace id: ${check.workspace.id}`);\n if (check.workspace.isDefault) {\n console.log(\" default: yes\");\n }\n }\n\n if (check.baseUrl) {\n console.log(` base url: ${check.baseUrl}`);\n }\n\n for (const detail of check.details) {\n console.log(` - ${detail}`);\n }\n}\n\nfunction printDoctorAssessment(report: ReturnType<typeof assessDoctorReport>): void {\n console.log(pc.bold(\"doctor summary\"));\n\n if (report.issues.length === 0) {\n console.log(` ${pc.green(\"ready\")} No blocking issues detected.`);\n return;\n }\n\n const headline = report.ok\n ? pc.yellow(\"warnings only\")\n : pc.red(\"blocking issues detected\");\n console.log(` ${headline}`);\n\n for (const issue of report.issues) {\n const label = issue.level === \"error\" ? pc.red(\"error\") : pc.yellow(\"warning\");\n console.log(` ${label} ${issue.title}`);\n console.log(` fix: ${issue.suggestion}`);\n }\n}\n\nasync function main(): Promise<void> {\n const program = new Command();\n program\n .name(\"orgx-wizard\")\n .description(\"One-line CLI onboarding for OrgX surfaces.\")\n .showHelpAfterError();\n\n program.hook(\"preAction\", () => {\n console.log(renderBanner());\n });\n\n program\n .command(\"setup\")\n .description(\"Patch all detected automated OrgX surfaces.\")\n .option(\"--preset <name>\", \"run a setup bundle (currently: founder)\")\n .action(async (options: { preset?: string }) => {\n if (options.preset) {\n if (options.preset !== \"founder\") {\n throw new Error(`Unknown setup preset '${options.preset}'. Supported presets: founder.`);\n }\n\n const spinner = createOrgxSpinner(\"Running founder setup preset\");\n spinner.start();\n const presetResult = await runFounderPreset(\n {\n cancel: clack.cancel,\n isCancel: clack.isCancel,\n select: selectPrompt,\n text: textPrompt,\n },\n {\n interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n },\n );\n\n if (\"status\" in presetResult) {\n spinner.stop();\n if (presetResult.status === \"cancelled\") {\n return;\n }\n printWorkspaceSetupResult(presetResult);\n return;\n }\n\n spinner.succeed(\"Founder setup preset complete\");\n printFounderPresetResult(presetResult);\n\n console.log(\"\");\n const doctor = await runDoctor();\n printSurfaceTable(doctor.surfaces);\n console.log(\"\");\n printAuthStatus(doctor.auth);\n console.log(\"\");\n printHostedMcpHealth(doctor.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(doctor.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(doctor.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(doctor.workspace);\n console.log(\"\");\n printOpenClawHealth(doctor.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(doctor.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(doctor);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n return;\n }\n\n const spinner = createOrgxSpinner(\"Configuring detected OrgX surfaces\");\n spinner.start();\n const results = await setupDetectedSurfaces();\n spinner.succeed(\"Detected surfaces configured\");\n printMutationResults(results);\n\n const resolvedAuth = await resolveOrgxAuth();\n if (!resolvedAuth) {\n console.log(\"\");\n console.log(\n `${pc.yellow(\"No OrgX API key configured.\")} Run ${pc.cyan(\"orgx-wizard auth login\")} to connect your account and enable workspace + tool access.`,\n );\n }\n if (resolvedAuth) {\n console.log(\"\");\n const workspaceSetup = await runWorkspaceSetup(\n {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n },\n {\n cancel: clack.cancel,\n isCancel: clack.isCancel,\n select: selectPrompt,\n text: textPrompt,\n },\n {\n interactive: Boolean(process.stdin.isTTY && process.stdout.isTTY),\n },\n );\n if (workspaceSetup.status !== \"cancelled\") {\n printWorkspaceSetupResult(workspaceSetup);\n } else {\n return;\n }\n }\n\n console.log(\"\");\n const doctor = await runDoctor();\n printSurfaceTable(doctor.surfaces);\n console.log(\"\");\n printAuthStatus(doctor.auth);\n console.log(\"\");\n printHostedMcpHealth(doctor.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(doctor.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(doctor.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(doctor.workspace);\n console.log(\"\");\n printOpenClawHealth(doctor.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(doctor.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(doctor);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n });\n\n const auth = program.command(\"auth\").description(\"Manage OrgX API key auth for the wizard.\");\n\n auth\n .command(\"status\")\n .description(\"Show the resolved OrgX API key source and verify it against OrgX.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Checking OrgX auth\");\n spinner.start();\n const status = await checkOrgxAuth();\n spinner.stop();\n printAuthStatus(status);\n });\n\n auth\n .command(\"login\")\n .description(\"Start browser pairing for OrgX auth, with direct API key fallback for CI and blocked browsers.\")\n .option(\"--api-key <key>\", \"Bypass browser pairing and verify this OrgX API key directly.\")\n .option(\"--base-url <url>\", \"OrgX base URL\")\n .option(\"--device-name <name>\", \"Device name shown during browser approval.\")\n .option(\"--no-open\", \"Do not automatically open the browser connect URL.\")\n .option(\"--timeout <seconds>\", \"How long to wait for browser pairing before giving up.\", parseTimeoutSeconds, 600)\n .action(async (options: { apiKey?: string; baseUrl?: string; deviceName?: string; open?: boolean; timeout: number }) => {\n if (options.apiKey) {\n const spinner = createOrgxSpinner(\"Verifying OrgX API key\");\n spinner.start();\n const result = await verifyAndPersistAuth(options.apiKey, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX API key verification failed\");\n printAuthStatus(result.verification);\n return;\n }\n\n spinner.succeed(\"OrgX API key verified and saved\");\n await syncContinuityAfterAuth();\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n return;\n }\n\n const installationId = getOrCreateWizardInstallationId();\n const spinner = createOrgxSpinner(\"Starting OrgX browser pairing\");\n spinner.start();\n\n try {\n const pairing = await startBrowserPairing({\n installationId,\n baseUrl: options.baseUrl,\n deviceName: options.deviceName ?? hostname(),\n platform: process.platform,\n });\n spinner.succeed(\"OrgX browser pairing started\");\n\n console.log(`Open to continue: ${pairing.connectUrl}`);\n if (options.open !== false) {\n const openResult = openBrowser(pairing.connectUrl);\n if (!openResult.ok && openResult.error) {\n console.log(pc.yellow(`Browser open failed: ${openResult.error}`));\n }\n }\n\n spinner.start();\n spinner.text = pc.cyan(\"Waiting for OrgX browser approval\");\n const ready = await waitForBrowserPairing({\n baseUrl: options.baseUrl,\n pairingId: pairing.pairingId,\n pollIntervalMs: pairing.pollIntervalMs,\n pollToken: pairing.pollToken,\n timeoutMs: options.timeout * 1000,\n });\n\n spinner.text = pc.cyan(\"Verifying OrgX API key\");\n const result = await verifyAndPersistAuth(ready.key!, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX browser pairing delivered an invalid API key\");\n printAuthStatus(result.verification);\n return;\n }\n\n await acknowledgeBrowserPairing({\n baseUrl: options.baseUrl,\n pairingId: pairing.pairingId,\n pollToken: pairing.pollToken,\n }).catch((error: unknown) => {\n console.log(pc.yellow(`Pairing acknowledge failed: ${error instanceof Error ? error.message : String(error)}`));\n });\n\n spinner.succeed(\"OrgX browser pairing completed\");\n await syncContinuityAfterAuth({\n executionMode: ready.executionMode,\n workspaceName: ready.workspaceName,\n });\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (ready.workspaceName) {\n console.log(`workspace: ${ready.workspaceName}`);\n }\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n } catch (error) {\n spinner.fail(\"OrgX browser pairing failed\");\n console.log(pc.red(describeBrowserPairingFailure(error)));\n }\n });\n\n auth\n .command(\"set-key\")\n .description(\"Verify and persist a per-user OrgX API key for the wizard.\")\n .argument(\"<apiKey>\", \"per-user OrgX API key (oxk_...)\")\n .option(\"--base-url <url>\", \"OrgX base URL\")\n .action(async (apiKey: string, options: { baseUrl?: string }) => {\n const spinner = createOrgxSpinner(\"Verifying OrgX API key\");\n spinner.start();\n const result = await verifyAndPersistAuth(apiKey, options);\n\n if (!(\"stored\" in result)) {\n spinner.fail(\"OrgX API key verification failed\");\n printAuthStatus(result.verification);\n return;\n }\n\n spinner.succeed(\"OrgX API key verified and saved\");\n await syncContinuityAfterAuth();\n printAuthStatus({\n ...result.verification,\n source: \"wizard-store\",\n path: ORGX_WIZARD_AUTH_PATH,\n verifiedAt: result.stored.verifiedAt,\n });\n\n if (result.openclawResults.length > 0) {\n console.log(\"\");\n printMutationResults(result.openclawResults);\n }\n });\n\n auth\n .command(\"clear\")\n .description(\"Remove the wizard-local saved OrgX API key.\")\n .action(async () => {\n const removed = await clearWizardAuth();\n if (removed) {\n console.log(pc.green(\"Removed the wizard-local OrgX API key.\"));\n } else {\n console.log(pc.yellow(\"No wizard-local OrgX API key was stored.\"));\n }\n\n const resolved = await resolveOrgxAuth();\n if (resolved) {\n console.log(\n `Effective OrgX auth still resolves from ${formatAuthSource(resolved.source)} (${resolved.keyPrefix}).`,\n );\n }\n });\n\n const surface = program.command(\"surface\").description(\"Manage supported OrgX surfaces.\");\n\n surface\n .command(\"list\")\n .description(\"Show supported surfaces and their current status.\")\n .action(() => {\n printSurfaceTable(listSurfaceStatuses());\n });\n\n surface\n .command(\"add\")\n .description(\"Patch one surface or all automated surfaces.\")\n .argument(\"<names...>\", \"surface names or 'all'\")\n .action(async (names: string[]) => {\n const results = await addSurface(names as Parameters<typeof addSurface>[0]);\n printMutationResults(results);\n });\n\n surface\n .command(\"remove\")\n .description(\"Remove OrgX-managed config from one surface or all automated surfaces.\")\n .argument(\"<names...>\", \"surface names or 'all'\")\n .action((names: string[]) => {\n const results = removeSurface(names as Parameters<typeof removeSurface>[0]);\n printMutationResults(results);\n });\n\n const mcp = program\n .command(\"mcp\")\n .description(\"Manage OrgX MCP entries for Claude, Cursor, Codex, VS Code, Windsurf, and Zed.\");\n\n mcp\n .command(\"add\")\n .description(\"Add OrgX MCP entries to one client or all supported MCP clients.\")\n .argument(\"[surfaces...]\", \"claude, cursor, codex, vscode, windsurf, zed, or all\", [\"all\"])\n .action(async (names: string[]) => {\n const results = await addMcpSurface(names as Parameters<typeof addMcpSurface>[0]);\n printMutationResults(results);\n });\n\n mcp\n .command(\"remove\")\n .description(\"Remove OrgX MCP entries from one client or all supported MCP clients.\")\n .argument(\"[surfaces...]\", \"claude, cursor, codex, vscode, windsurf, zed, or all\", [\"all\"])\n .action((names: string[]) => {\n const results = removeMcpSurface(names as Parameters<typeof removeMcpSurface>[0]);\n printMutationResults(results);\n });\n\n const workspace = program\n .command(\"workspace\")\n .description(\"Inspect and create OrgX workspaces.\");\n\n workspace\n .command(\"current\")\n .description(\"Show the current OrgX workspace.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Loading current OrgX workspace\");\n spinner.start();\n const current = await getCurrentWorkspace();\n spinner.stop();\n\n if (!current) {\n console.log(pc.yellow(\"No OrgX workspaces found for the current user.\"));\n return;\n }\n\n printWorkspace(current);\n });\n\n workspace\n .command(\"list\")\n .description(\"List OrgX workspaces accessible with the current API key.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Loading OrgX workspaces\");\n spinner.start();\n const workspaces = await listWorkspaces();\n spinner.stop();\n printWorkspaceList(workspaces);\n });\n\n workspace\n .command(\"create\")\n .description(\"Create a new OrgX workspace.\")\n .argument(\"<name>\", \"workspace name\")\n .option(\"--description <text>\", \"workspace description\")\n .action(async (name: string, options: { description?: string }) => {\n const spinner = createOrgxSpinner(\"Creating OrgX workspace\");\n spinner.start();\n const created = await createWorkspace(\n {\n name,\n ...(options.description ? { description: options.description } : {}),\n },\n );\n spinner.succeed(\"OrgX workspace created\");\n printWorkspace(created);\n if (!created.isDefault) {\n console.log(\"\");\n console.log(pc.dim(`Run \\`wizard workspace set-default ${created.id}\\` to promote it.`));\n }\n });\n\n workspace\n .command(\"set-default\")\n .description(\"Set the default OrgX workspace.\")\n .argument(\"<id>\", \"workspace id\")\n .action(async (id: string) => {\n const spinner = createOrgxSpinner(\"Updating default OrgX workspace\");\n spinner.start();\n const result = await setDefaultWorkspace({ id });\n spinner.succeed(\n result.changed ? \"Default OrgX workspace updated\" : \"OrgX workspace already set as default\",\n );\n printWorkspace(result.workspace);\n });\n\n program\n .command(\"doctor\")\n .description(\"Verify local OrgX surface config and optional remote setup status.\")\n .action(async () => {\n const spinner = createOrgxSpinner(\"Running OrgX doctor\");\n spinner.start();\n const report = await runDoctor();\n spinner.stop();\n printSurfaceTable(report.surfaces);\n console.log(\"\");\n printAuthStatus(report.auth);\n console.log(\"\");\n printHostedMcpHealth(report.hostedMcp);\n console.log(\"\");\n printHostedMcpToolCheck(report.hostedMcpTool);\n console.log(\"\");\n printNpmRegistryHealth(report.npmRegistry);\n console.log(\"\");\n printWorkspaceConnectivity(report.workspace);\n console.log(\"\");\n printOpenClawHealth(report.openclaw);\n console.log(\"\");\n printRemoteSetupStatus(report.remote);\n console.log(\"\");\n const assessment = assessDoctorReport(report);\n printDoctorAssessment(assessment);\n if (!assessment.ok) {\n process.exitCode = 1;\n }\n });\n\n const skills = program\n .command(\"skills\")\n .description(\"Install OrgX rules and Claude skill packs.\");\n\n skills\n .command(\"add\")\n .description(\"Write Cursor and Claude OrgX rules and install OrgX Claude skill packs.\")\n .argument(\"[packs...]\", \"skill pack names or 'all'\", [\"all\"])\n .action(async (packs: string[]) => {\n const spinner = createOrgxSpinner(\"Installing OrgX rules and skills\");\n spinner.start();\n const report = await installOrgxSkills({ skillNames: packs });\n spinner.succeed(\"OrgX rules and skills installed\");\n printSkillInstallReport(report);\n });\n\n await program.parseAsync(process.argv);\n}\n\nmain().catch((error) => {\n console.error(pc.red(error instanceof Error ? error.message : String(error)));\n process.exitCode = 1;\n});\n","import pc from \"picocolors\";\n\nexport function renderBanner(): string {\n const lines = [\n \" ____ ____ _______ __\",\n \" / __ \\\\/ __ \\\\ / ____/ |/ /\",\n \"/ / / / /_/ // / __ | / \",\n \"/ /_/ / _, _// /_/ // | \",\n \"\\\\____/_/ |_| \\\\____//_/|_| \",\n ];\n\n return lines.map((line) => pc.cyan(line)).join(\"\\n\");\n}\n\n","import { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport const ORGX_HOSTED_MCP_KEY = \"orgx\";\nexport const ORGX_LOCAL_MCP_KEY = \"orgx-openclaw\";\nexport const ORGX_HOSTED_MCP_URL = \"https://mcp.useorgx.com/mcp\";\nexport const ORGX_HOSTED_MCP_HEALTH_URL = \"https://mcp.useorgx.com/health\";\nexport const ORGX_WIZARD_NPM_PACKAGE_NAME = \"@useorgx/wizard\";\nexport const NPM_REGISTRY_BASE_URL = \"https://registry.npmjs.org\";\nexport const DEFAULT_OPENCLAW_GATEWAY_PORT = 18_789;\nexport const DEFAULT_ORGX_BASE_URL =\n process.env.ORGX_BASE_URL?.trim() || \"https://useorgx.com\";\n\nconst HOME = homedir();\nconst APPDATA = process.env.APPDATA?.trim();\nconst LOCAL_APPDATA = process.env.LOCALAPPDATA?.trim();\nconst XDG_CONFIG_HOME =\n process.env.XDG_CONFIG_HOME?.trim() || join(HOME, \".config\");\nexport const ORGX_WIZARD_CONFIG_HOME =\n process.env.ORGX_WIZARD_CONFIG_HOME?.trim() ||\n join(XDG_CONFIG_HOME, \"useorgx\", \"wizard\");\nexport const ORGX_WIZARD_AUTH_PATH = join(ORGX_WIZARD_CONFIG_HOME, \"auth.json\");\nexport const ORGX_WIZARD_STATE_PATH = join(ORGX_WIZARD_CONFIG_HOME, \"state.json\");\nexport const ORGX_WIZARD_KEYTAR_SERVICE = \"@useorgx/wizard\";\nexport const ORGX_WIZARD_KEYTAR_ACCOUNT = \"orgx-api-key\";\n\nfunction normalizeOrgxApiBaseUrl(baseUrl: string): string {\n const normalized = baseUrl.replace(/\\/+$/, \"\");\n if (/\\/api(\\/|$)/.test(normalized)) {\n return normalized;\n }\n return `${normalized}/api`;\n}\n\nconst ORGX_API_BASE_URL = normalizeOrgxApiBaseUrl(DEFAULT_ORGX_BASE_URL);\nexport const ORGX_SETUP_STATUS_URL = `${ORGX_API_BASE_URL}/setup/status`;\nexport const ORGX_AUTH_VERIFY_URL = `${ORGX_API_BASE_URL}/auth/verify`;\nexport const ORGX_CLIENT_SYNC_URL = `${ORGX_API_BASE_URL}/client/sync`;\n\nfunction uniquePaths(paths: Array<string | undefined>): string[] {\n return [...new Set(paths.filter((path): path is string => Boolean(path)))];\n}\n\nexport const CLAUDE_DIR = join(HOME, \".claude\");\nexport const CURSOR_DIR = join(HOME, \".cursor\");\nexport const CODEX_DIR = join(HOME, \".codex\");\nexport const OPENCLAW_DIR = join(HOME, \".openclaw\");\nexport const CLAUDE_SKILLS_DIR = join(CLAUDE_DIR, \"skills\");\nexport const CLAUDE_ORGX_SKILL_DIR = join(CLAUDE_SKILLS_DIR, \"orgx\");\nexport const CLAUDE_ORGX_SKILL_PATH = join(CLAUDE_ORGX_SKILL_DIR, \"SKILL.md\");\nexport const CURSOR_RULES_DIR = join(CURSOR_DIR, \"rules\");\nexport const CURSOR_ORGX_RULE_PATH = join(CURSOR_RULES_DIR, \"orgx.md\");\n\nexport const CLAUDE_MCP_PATHS = uniquePaths([join(CLAUDE_DIR, \"mcp.json\")]);\nexport const CURSOR_MCP_PATHS = uniquePaths([join(CURSOR_DIR, \"mcp.json\")]);\nexport const CODEX_CONFIG_PATHS = uniquePaths([join(CODEX_DIR, \"config.toml\")]);\nexport const OPENCLAW_CONFIG_PATHS = uniquePaths([\n join(OPENCLAW_DIR, \"openclaw.json\"),\n]);\n\nexport const CLAUDE_MCP_PATH = CLAUDE_MCP_PATHS[0];\nexport const CURSOR_MCP_PATH = CURSOR_MCP_PATHS[0];\nexport const CODEX_CONFIG_PATH = CODEX_CONFIG_PATHS[0];\nexport const OPENCLAW_CONFIG_PATH = OPENCLAW_CONFIG_PATHS[0];\n\nexport const CLAUDE_INSTALL_PATHS = uniquePaths([CLAUDE_DIR]);\nexport const CURSOR_INSTALL_PATHS = uniquePaths([CURSOR_DIR]);\nexport const CODEX_INSTALL_PATHS = uniquePaths([CODEX_DIR]);\nexport const OPENCLAW_INSTALL_PATHS = uniquePaths([OPENCLAW_DIR]);\n\nexport const VSCODE_MCP_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Code\", \"User\", \"mcp.json\"),\n join(XDG_CONFIG_HOME, \"Code\", \"User\", \"mcp.json\"),\n APPDATA ? join(APPDATA, \"Code\", \"User\", \"mcp.json\") : undefined,\n]);\nexport const VSCODE_INSTALL_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Code\", \"User\"),\n join(XDG_CONFIG_HOME, \"Code\", \"User\"),\n APPDATA ? join(APPDATA, \"Code\", \"User\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Microsoft VS Code\") : undefined,\n]);\n\nexport const WINDSURF_MCP_PATHS = uniquePaths([\n join(HOME, \".codeium\", \"windsurf\", \"mcp_config.json\"),\n]);\nexport const WINDSURF_INSTALL_PATHS = uniquePaths([\n join(HOME, \".codeium\", \"windsurf\"),\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Windsurf\") : undefined,\n]);\n\nexport const ZED_SETTINGS_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Zed\", \"settings.json\"),\n join(XDG_CONFIG_HOME, \"zed\", \"settings.json\"),\n APPDATA ? join(APPDATA, \"Zed\", \"settings.json\") : undefined,\n]);\nexport const ZED_INSTALL_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"Zed\"),\n join(XDG_CONFIG_HOME, \"zed\"),\n APPDATA ? join(APPDATA, \"Zed\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"Programs\", \"Zed\") : undefined,\n]);\n\nexport const CHATGPT_APP_PATHS = uniquePaths([\n join(HOME, \"Library\", \"Application Support\", \"OpenAI\"),\n join(HOME, \"Library\", \"Application Support\", \"com.openai.chat\"),\n join(XDG_CONFIG_HOME, \"OpenAI\"),\n join(XDG_CONFIG_HOME, \"openai\"),\n APPDATA ? join(APPDATA, \"OpenAI\") : undefined,\n LOCAL_APPDATA ? join(LOCAL_APPDATA, \"OpenAI\") : undefined,\n]);\n","import { spawnSync } from \"node:child_process\";\n\nimport { buildOrgxApiUrl, normalizeOrgxBaseUrl } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport type PairingStatus =\n | \"pending\"\n | \"authorized\"\n | \"ready\"\n | \"consumed\"\n | \"expired\"\n | \"cancelled\"\n | \"failed\";\n\nexport interface BrowserPairingStartResult {\n pairingId: string;\n pollToken: string;\n connectUrl: string;\n expiresAt: string;\n pollIntervalMs: number;\n}\n\nexport interface BrowserPairingPollResult {\n pairingId: string;\n status: PairingStatus;\n expiresAt: string;\n workspaceName: string | null;\n keyPrefix: string | null;\n executionMode: \"cloud\" | \"local\" | null;\n errorCode: string | null;\n errorMessage: string | null;\n key?: string;\n}\n\nexport interface BrowserPairingOpenResult {\n ok: boolean;\n error?: string;\n}\n\ninterface FetchJsonOptions {\n body?: string | undefined;\n fetchImpl?: typeof fetch | undefined;\n method: string;\n url: string;\n}\n\nfunction asString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : null;\n}\n\nfunction parseJsonBody(text: string): unknown {\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nasync function fetchJson<T>({\n url,\n method,\n body,\n fetchImpl = fetch,\n}: FetchJsonOptions): Promise<T> {\n const response = await fetchImpl(url, {\n method,\n headers: {\n Accept: \"application/json\",\n ...(body ? { \"Content-Type\": \"application/json\" } : {}),\n },\n ...(body ? { body } : {}),\n signal: AbortSignal.timeout(7_000),\n });\n\n const payload = parseJsonBody(await response.text());\n\n if (!response.ok) {\n const errorMessage = isRecord(payload)\n ? asString(payload.error) ?? asString(payload.message)\n : typeof payload === \"string\"\n ? payload\n : null;\n throw new Error(errorMessage ?? `HTTP ${response.status}`);\n }\n\n if (isRecord(payload) && payload.ok === true && \"data\" in payload) {\n return payload.data as T;\n }\n\n return payload as T;\n}\n\nfunction parsePairingStartResult(value: unknown): BrowserPairingStartResult {\n if (!isRecord(value)) {\n throw new Error(\"OrgX pairing start returned an invalid response.\");\n }\n\n const pairingId = asString(value.pairingId);\n const pollToken = asString(value.pollToken);\n const connectUrl = asString(value.connectUrl);\n const expiresAt = asString(value.expiresAt);\n const pollIntervalMs = typeof value.pollIntervalMs === \"number\"\n ? value.pollIntervalMs\n : Number.NaN;\n\n if (!pairingId || !pollToken || !connectUrl || !expiresAt || !Number.isFinite(pollIntervalMs)) {\n throw new Error(\"OrgX pairing start returned an incomplete response.\");\n }\n\n return { pairingId, pollToken, connectUrl, expiresAt, pollIntervalMs };\n}\n\nfunction parsePairingPollResult(value: unknown): BrowserPairingPollResult {\n if (!isRecord(value)) {\n throw new Error(\"OrgX pairing poll returned an invalid response.\");\n }\n\n const pairingId = asString(value.pairingId);\n const status = asString(value.status) as PairingStatus | null;\n const expiresAt = asString(value.expiresAt);\n\n if (!pairingId || !status || !expiresAt) {\n throw new Error(\"OrgX pairing poll returned an incomplete response.\");\n }\n\n return {\n pairingId,\n status,\n expiresAt,\n workspaceName: asString(value.workspaceName),\n keyPrefix: asString(value.keyPrefix),\n executionMode: value.executionMode === \"cloud\" || value.executionMode === \"local\"\n ? value.executionMode\n : null,\n errorCode: asString(value.errorCode),\n errorMessage: asString(value.errorMessage),\n ...(asString(value.key) ? { key: asString(value.key)! } : {}),\n };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport async function startBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n deviceName?: string | undefined;\n installationId: string;\n platform?: string | undefined;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingStartResult> {\n const data = await fetchJson<unknown>({\n url: buildOrgxApiUrl(\"/plugin/openclaw/pairings\", options.baseUrl),\n method: \"POST\",\n body: JSON.stringify({\n installationId: options.installationId,\n ...(options.deviceName ? { deviceName: options.deviceName } : {}),\n ...(options.platform ? { platform: options.platform } : {}),\n }),\n fetchImpl,\n });\n\n return parsePairingStartResult(data);\n}\n\nexport async function pollBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollToken: string;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingPollResult> {\n const baseUrl = normalizeOrgxBaseUrl(options.baseUrl);\n const url = new URL(buildOrgxApiUrl(`/plugin/openclaw/pairings/${options.pairingId}`, baseUrl));\n url.searchParams.set(\"pollToken\", options.pollToken);\n\n const data = await fetchJson<unknown>({\n url: url.toString(),\n method: \"GET\",\n fetchImpl,\n });\n\n return parsePairingPollResult(data);\n}\n\nexport async function waitForBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollIntervalMs?: number | undefined;\n pollToken: string;\n timeoutMs?: number | undefined;\n },\n fetchImpl?: typeof fetch,\n): Promise<BrowserPairingPollResult> {\n const timeoutMs = options.timeoutMs ?? 10 * 60_000;\n const pollIntervalMs = options.pollIntervalMs ?? 1_500;\n const deadline = Date.now() + timeoutMs;\n\n while (Date.now() <= deadline) {\n const result = await pollBrowserPairing(\n {\n baseUrl: options.baseUrl,\n pairingId: options.pairingId,\n pollToken: options.pollToken,\n },\n fetchImpl,\n );\n\n if (result.status === \"ready\") {\n if (!result.key) {\n throw new Error(\"OrgX pairing completed without returning an API key.\");\n }\n return result;\n }\n\n if (result.status === \"failed\") {\n throw new Error(result.errorMessage ?? \"OrgX pairing failed.\");\n }\n\n if (result.status === \"expired\") {\n throw new Error(\"OrgX pairing expired before it was approved.\");\n }\n\n if (result.status === \"cancelled\") {\n throw new Error(\"OrgX pairing was cancelled in the browser.\");\n }\n\n if (result.status === \"consumed\") {\n throw new Error(\"OrgX pairing was already consumed by another client.\");\n }\n\n await sleep(Math.min(5_000, Math.max(350, pollIntervalMs)));\n }\n\n throw new Error(\n `Timed out waiting for OrgX pairing after ${Math.round(timeoutMs / 1000)} seconds.`,\n );\n}\n\nexport async function acknowledgeBrowserPairing(\n options: {\n baseUrl?: string | undefined;\n pairingId: string;\n pollToken: string;\n },\n fetchImpl?: typeof fetch,\n): Promise<void> {\n await fetchJson<unknown>({\n url: buildOrgxApiUrl(`/plugin/openclaw/pairings/${options.pairingId}/ack`, options.baseUrl),\n method: \"POST\",\n body: JSON.stringify({ pollToken: options.pollToken }),\n fetchImpl,\n });\n}\n\nexport function openBrowser(url: string): BrowserPairingOpenResult {\n const platform = process.platform;\n const result = platform === \"darwin\"\n ? spawnSync(\"open\", [url], { stdio: \"ignore\" })\n : platform === \"win32\"\n ? spawnSync(\"cmd\", [\"/c\", \"start\", \"\", url], { stdio: \"ignore\" })\n : spawnSync(\"xdg-open\", [url], { stdio: \"ignore\" });\n\n if (result.error) {\n return { ok: false, error: result.error.message };\n }\n\n if (typeof result.status === \"number\" && result.status !== 0) {\n return { ok: false, error: `Browser open command exited with code ${result.status}.` };\n }\n\n return { ok: true };\n}\n","import {\n chmodSync,\n existsSync,\n mkdirSync,\n readFileSync,\n statSync,\n unlinkSync,\n writeFileSync,\n} from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nexport function fileExists(path: string): boolean {\n return existsSync(path);\n}\n\nexport function readTextIfExists(path: string): string | null {\n if (!existsSync(path)) return null;\n\n try {\n if (!statSync(path).isFile()) {\n return null;\n }\n\n return readFileSync(path, \"utf8\");\n } catch (error) {\n const code = typeof error === \"object\" && error && \"code\" in error\n ? String(error.code)\n : undefined;\n\n if (code === \"ENOENT\" || code === \"ENOTDIR\" || code === \"EISDIR\") {\n return null;\n }\n\n throw error;\n }\n}\n\nexport function writeTextFile(\n path: string,\n content: string,\n options: { mode?: number } = {},\n): void {\n mkdirSync(dirname(path), { recursive: true });\n writeFileSync(path, content, {\n encoding: \"utf8\",\n ...(options.mode === undefined ? {} : { mode: options.mode }),\n });\n\n if (options.mode !== undefined) {\n chmodSync(path, options.mode);\n }\n}\n\nexport function writeJsonFile(\n path: string,\n value: unknown,\n options: { mode?: number } = {},\n): void {\n writeTextFile(path, `${JSON.stringify(value, null, 2)}\\n`, options);\n}\n\nexport function deleteFileIfExists(path: string): boolean {\n if (!existsSync(path)) return false;\n\n try {\n if (!statSync(path).isFile()) {\n return false;\n }\n\n unlinkSync(path);\n return true;\n } catch (error) {\n const code = typeof error === \"object\" && error && \"code\" in error\n ? String(error.code)\n : undefined;\n\n if (code === \"ENOENT\" || code === \"ENOTDIR\" || code === \"EISDIR\") {\n return false;\n }\n\n throw error;\n }\n}\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === \"object\" && !Array.isArray(value));\n}\n\nexport function parseJsonObject(input: string | null): Record<string, unknown> {\n if (!input) return {};\n\n try {\n const parsed = JSON.parse(input);\n return isRecord(parsed) ? parsed : {};\n } catch {\n return {};\n }\n}\n\nexport function readObject(\n value: unknown,\n fallback: Record<string, unknown> = {},\n): Record<string, unknown> {\n return isRecord(value) ? value : fallback;\n}\n","import {\n DEFAULT_OPENCLAW_GATEWAY_PORT,\n DEFAULT_ORGX_BASE_URL,\n} from \"../constants.js\";\nimport { isRecord, parseJsonObject, readObject } from \"../lib/fs.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface OpenClawInspection {\n configured: boolean;\n installed: boolean;\n pluginKey: \"orgx\" | \"openclaw-plugin\" | null;\n details: string[];\n}\n\nexport interface OpenClawAuthConfig {\n apiKey: string;\n baseUrl: string;\n pluginKey: \"orgx\" | \"openclaw-plugin\" | null;\n enabled: boolean;\n}\n\nexport interface OpenClawOrgxDefaultsInput {\n apiKey?: string;\n baseUrl?: string;\n}\n\nfunction cleanupEmptyObjects(value: JsonObject): void {\n for (const [key, child] of Object.entries(value)) {\n if (!isRecord(child)) continue;\n cleanupEmptyObjects(child);\n if (Object.keys(child).length === 0) {\n delete value[key];\n }\n }\n}\n\nexport function readOpenClawGatewayPort(raw: unknown): number {\n const isValidPort = (value: number): boolean =>\n Number.isFinite(value) && value >= 1 && value <= 65_535;\n\n const root = isRecord(raw) ? raw : {};\n const gateway = readObject(root.gateway);\n const port = gateway.port;\n\n if (typeof port === \"number\" && isValidPort(port)) {\n return Math.floor(port);\n }\n\n if (typeof port === \"string\") {\n const parsed = Number.parseInt(port, 10);\n if (isValidPort(parsed)) {\n return parsed;\n }\n }\n\n return DEFAULT_OPENCLAW_GATEWAY_PORT;\n}\n\nexport function buildLocalMcpUrl(raw: unknown): string {\n return `http://127.0.0.1:${readOpenClawGatewayPort(raw)}/orgx/mcp`;\n}\n\nfunction resolvePluginKey(entries: JsonObject): \"orgx\" | \"openclaw-plugin\" {\n if (isRecord(entries[\"openclaw-plugin\"])) {\n return \"openclaw-plugin\";\n }\n\n if (isRecord(entries.orgx)) {\n return \"orgx\";\n }\n\n return \"orgx\";\n}\n\nexport function readOpenClawAuth(input: string | null): OpenClawAuthConfig {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const pluginKey = isRecord(entries[\"openclaw-plugin\"])\n ? \"openclaw-plugin\"\n : isRecord(entries.orgx)\n ? \"orgx\"\n : null;\n const entry = pluginKey ? readObject(entries[pluginKey]) : {};\n const config = readObject(entry.config);\n\n return {\n apiKey: typeof config.apiKey === \"string\" ? config.apiKey.trim() : \"\",\n baseUrl:\n typeof config.baseUrl === \"string\" && config.baseUrl.trim().length > 0\n ? config.baseUrl.trim()\n : DEFAULT_ORGX_BASE_URL,\n pluginKey,\n enabled: entry.enabled !== false,\n };\n}\n\nexport function patchOpenClawConfig(\n input: string | null,\n auth: OpenClawOrgxDefaultsInput = {},\n): string {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const pluginKey = resolvePluginKey(entries);\n const entry = readObject(entries[pluginKey]);\n const config = readObject(entry.config);\n const apiKey =\n typeof auth.apiKey === \"string\" && auth.apiKey.trim().length > 0\n ? auth.apiKey.trim()\n : typeof config.apiKey === \"string\" && config.apiKey.trim().length > 0\n ? config.apiKey.trim()\n : undefined;\n const baseUrl =\n typeof auth.baseUrl === \"string\" && auth.baseUrl.trim().length > 0\n ? auth.baseUrl.trim()\n : typeof config.baseUrl === \"string\" && config.baseUrl.trim().length > 0\n ? config.baseUrl.trim()\n : DEFAULT_ORGX_BASE_URL;\n\n entries[pluginKey] = {\n ...entry,\n enabled: true,\n config: {\n ...config,\n ...(apiKey ? { apiKey } : {}),\n baseUrl,\n dashboardEnabled:\n typeof config.dashboardEnabled === \"boolean\"\n ? config.dashboardEnabled\n : true,\n autoInstallAgentSuiteOnConnect:\n typeof config.autoInstallAgentSuiteOnConnect === \"boolean\"\n ? config.autoInstallAgentSuiteOnConnect\n : true,\n autoConfigureMcpClientsOnConnect:\n typeof config.autoConfigureMcpClientsOnConnect === \"boolean\"\n ? config.autoConfigureMcpClientsOnConnect\n : true,\n },\n };\n\n plugins.entries = entries;\n current.plugins = plugins;\n\n return `${JSON.stringify(current, null, 2)}\\n`;\n}\n\nexport function removeOpenClawConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n\n for (const key of [\"openclaw-plugin\", \"orgx\"]) {\n const entry = readObject(entries[key]);\n if (!Object.keys(entry).length) continue;\n const config = readObject(entry.config);\n delete config.baseUrl;\n delete config.dashboardEnabled;\n delete config.autoInstallAgentSuiteOnConnect;\n delete config.autoConfigureMcpClientsOnConnect;\n if (Object.keys(config).length > 0) {\n entry.config = config;\n } else {\n delete entry.config;\n }\n entries[key] = entry;\n }\n\n plugins.entries = entries;\n current.plugins = plugins;\n cleanupEmptyObjects(current);\n\n return `${JSON.stringify(current, null, 2)}\\n`;\n}\n\nexport function inspectOpenClawConfig(input: string | null): OpenClawInspection {\n const current = parseJsonObject(input);\n const plugins = readObject(current.plugins);\n const entries = readObject(plugins.entries);\n const installs = readObject(plugins.installs);\n const pluginKey = isRecord(entries[\"openclaw-plugin\"])\n ? \"openclaw-plugin\"\n : isRecord(entries.orgx)\n ? \"orgx\"\n : null;\n const entry = pluginKey ? readObject(entries[pluginKey]) : {};\n const config = readObject(entry.config);\n const installed =\n pluginKey !== null ||\n isRecord(installs[\"openclaw-plugin\"]) ||\n isRecord(installs.orgx);\n const configured =\n installed &&\n entry.enabled === true &&\n (typeof config.baseUrl === \"string\" ||\n typeof config.autoInstallAgentSuiteOnConnect === \"boolean\" ||\n typeof config.autoConfigureMcpClientsOnConnect === \"boolean\");\n\n return {\n configured,\n installed,\n pluginKey,\n details: [\n `plugin key: ${pluginKey ?? \"missing\"}`,\n `enabled: ${entry.enabled === true ? \"yes\" : \"no\"}`,\n `gateway port: ${readOpenClawGatewayPort(current)}`,\n ],\n };\n}\n","import {\n ORGX_WIZARD_AUTH_PATH,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n ORGX_WIZARD_KEYTAR_SERVICE,\n} from \"../constants.js\";\nimport {\n deleteFileIfExists,\n parseJsonObject,\n readTextIfExists,\n writeJsonFile,\n} from \"./fs.js\";\n\nexport type WizardAuthStorage = \"file\" | \"keytar\";\n\nexport interface WizardAuthRecord {\n apiKey: string;\n keyPrefix: string;\n baseUrl: string;\n source: \"manual\";\n storage: WizardAuthStorage;\n verifiedAt: string;\n}\n\nexport interface WizardSecretStore {\n deletePassword(service: string, account: string): Promise<boolean>;\n getPassword(service: string, account: string): Promise<string | null>;\n setPassword(service: string, account: string, password: string): Promise<void>;\n}\n\ninterface StoredWizardAuthRecord {\n apiKey?: string;\n baseUrl: string;\n keyPrefix: string;\n storage: WizardAuthStorage;\n verifiedAt: string;\n}\n\ninterface WizardAuthStoreOptions {\n preferSecureStorage?: boolean;\n secretStore?: WizardSecretStore | null;\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nexport function extractKeyPrefix(apiKey: string): string {\n return apiKey.trim().slice(0, 12);\n}\n\nfunction parseStoredWizardAuthRecord(raw: string | null): StoredWizardAuthRecord | null {\n const parsed = parseJsonObject(raw);\n\n if (\n !isNonEmptyString(parsed.keyPrefix) ||\n !isNonEmptyString(parsed.baseUrl) ||\n !isNonEmptyString(parsed.verifiedAt)\n ) {\n return null;\n }\n\n const storage = parsed.storage === \"keytar\" ? \"keytar\" : \"file\";\n\n return {\n baseUrl: parsed.baseUrl.trim(),\n ...(isNonEmptyString(parsed.apiKey) ? { apiKey: parsed.apiKey.trim() } : {}),\n keyPrefix: parsed.keyPrefix.trim(),\n storage,\n verifiedAt: parsed.verifiedAt.trim(),\n };\n}\n\nasync function loadDefaultSecretStore(): Promise<WizardSecretStore | null> {\n if (process.env.ORGX_WIZARD_DISABLE_KEYTAR === \"1\") {\n return null;\n }\n\n try {\n const imported = await import(\"keytar\");\n const candidate = (\n \"default\" in imported && imported.default ? imported.default : imported\n ) as Partial<WizardSecretStore>;\n\n if (\n typeof candidate.getPassword === \"function\" &&\n typeof candidate.setPassword === \"function\" &&\n typeof candidate.deletePassword === \"function\"\n ) {\n return candidate as WizardSecretStore;\n }\n } catch {\n return null;\n }\n\n return null;\n}\n\nasync function resolveSecretStore(\n options: WizardAuthStoreOptions,\n): Promise<WizardSecretStore | null> {\n if (options.secretStore !== undefined) {\n return options.secretStore;\n }\n\n return loadDefaultSecretStore();\n}\n\nfunction buildStoredRecord(\n value: Omit<WizardAuthRecord, \"source\">,\n): StoredWizardAuthRecord {\n return {\n ...(value.storage === \"file\" ? { apiKey: value.apiKey } : {}),\n baseUrl: value.baseUrl,\n keyPrefix: value.keyPrefix,\n storage: value.storage,\n verifiedAt: value.verifiedAt,\n };\n}\n\nexport async function readWizardAuth(\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<WizardAuthRecord | null> {\n const stored = parseStoredWizardAuthRecord(readTextIfExists(authPath));\n if (!stored) {\n return null;\n }\n\n const apiKeyFromFile =\n stored.storage === \"file\" && isNonEmptyString(stored.apiKey)\n ? stored.apiKey.trim()\n : null;\n\n if (apiKeyFromFile) {\n return {\n apiKey: apiKeyFromFile,\n baseUrl: stored.baseUrl,\n keyPrefix: stored.keyPrefix,\n source: \"manual\",\n storage: \"file\",\n verifiedAt: stored.verifiedAt,\n };\n }\n\n if (stored.storage !== \"keytar\") {\n return null;\n }\n\n const secretStore = await resolveSecretStore(options);\n if (!secretStore) {\n return null;\n }\n\n const apiKey = await secretStore.getPassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n );\n\n if (!isNonEmptyString(apiKey)) {\n return null;\n }\n\n return {\n apiKey: apiKey.trim(),\n baseUrl: stored.baseUrl,\n keyPrefix: stored.keyPrefix,\n source: \"manual\",\n storage: \"keytar\",\n verifiedAt: stored.verifiedAt,\n };\n}\n\nexport async function writeWizardAuth(\n value: {\n apiKey: string;\n baseUrl: string;\n keyPrefix?: string;\n verifiedAt: string;\n },\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<WizardAuthRecord> {\n const secretStore = options.preferSecureStorage === false\n ? null\n : await resolveSecretStore(options);\n\n const record: WizardAuthRecord = {\n apiKey: value.apiKey.trim(),\n keyPrefix: value.keyPrefix?.trim() || extractKeyPrefix(value.apiKey),\n baseUrl: value.baseUrl.trim(),\n source: \"manual\",\n storage: secretStore ? \"keytar\" : \"file\",\n verifiedAt: value.verifiedAt.trim(),\n };\n\n if (secretStore) {\n await secretStore.setPassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n record.apiKey,\n );\n }\n\n writeJsonFile(authPath, buildStoredRecord(record), { mode: 0o600 });\n return record;\n}\n\nexport async function clearWizardAuth(\n authPath: string = ORGX_WIZARD_AUTH_PATH,\n options: WizardAuthStoreOptions = {},\n): Promise<boolean> {\n const secretStore = await resolveSecretStore(options);\n const secretRemoved = secretStore\n ? await secretStore.deletePassword(\n ORGX_WIZARD_KEYTAR_SERVICE,\n ORGX_WIZARD_KEYTAR_ACCOUNT,\n )\n : false;\n const fileRemoved = deleteFileIfExists(authPath);\n return secretRemoved || fileRemoved;\n}\n","import {\n DEFAULT_ORGX_BASE_URL,\n OPENCLAW_CONFIG_PATH,\n ORGX_WIZARD_AUTH_PATH,\n} from \"../constants.js\";\nimport { readOpenClawAuth } from \"../surfaces/openclaw-config.js\";\nimport { readTextIfExists } from \"./fs.js\";\nimport { extractKeyPrefix, readWizardAuth } from \"./auth-store.js\";\n\nexport type OrgxAuthSource =\n | \"environment\"\n | \"wizard-store\"\n | \"openclaw-config-file\";\n\nexport interface ResolvedOrgxAuth {\n apiKey: string;\n keyPrefix: string;\n baseUrl: string;\n source: OrgxAuthSource;\n path?: string;\n verifiedAt?: string;\n}\n\nexport interface OrgxAuthCheckResult {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n keyPrefix?: string;\n baseUrl?: string;\n path?: string;\n verifiedAt?: string;\n status?: number;\n url?: string;\n error?: string;\n data?: unknown;\n}\n\nexport interface ResolveOrgxAuthOptions {\n authPath?: string;\n openclawConfigPath?: string;\n}\n\nfunction normalizeHost(value: string): string {\n return value.trim().toLowerCase().replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction isLoopbackHostname(hostname: string): boolean {\n const normalized = normalizeHost(hostname);\n return normalized === \"localhost\" || normalized === \"127.0.0.1\" || normalized === \"::1\";\n}\n\nexport function normalizeOrgxBaseUrl(raw?: string): string {\n const candidate = raw?.trim() || DEFAULT_ORGX_BASE_URL;\n\n try {\n const parsed = new URL(candidate);\n if (parsed.protocol !== \"https:\" && parsed.protocol !== \"http:\") {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n if (parsed.username || parsed.password) {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n if (parsed.protocol === \"http:\" && !isLoopbackHostname(parsed.hostname)) {\n return DEFAULT_ORGX_BASE_URL;\n }\n\n parsed.search = \"\";\n parsed.hash = \"\";\n parsed.pathname = parsed.pathname.replace(/\\/api\\/?$/, \"\").replace(/\\/+$/, \"\");\n return parsed.toString().replace(/\\/+$/, \"\");\n } catch {\n return DEFAULT_ORGX_BASE_URL;\n }\n}\n\nexport function buildOrgxApiUrl(path: string, baseUrl?: string): string {\n const normalizedBase = normalizeOrgxBaseUrl(baseUrl).replace(/\\/+$/, \"\");\n const apiBase = normalizedBase.endsWith(\"/api\") ? normalizedBase : `${normalizedBase}/api`;\n const normalizedPath = path.startsWith(\"/\") ? path : `/${path}`;\n return `${apiBase}${normalizedPath}`;\n}\n\nfunction withResolvedBaseUrl(baseUrl: string, envBaseUrl?: string): string {\n return normalizeOrgxBaseUrl(envBaseUrl?.trim() || baseUrl);\n}\n\nfunction buildResolvedAuth(\n apiKey: string,\n baseUrl: string,\n source: OrgxAuthSource,\n extras: Pick<ResolvedOrgxAuth, \"path\" | \"verifiedAt\"> = {},\n): ResolvedOrgxAuth {\n return {\n apiKey: apiKey.trim(),\n keyPrefix: extractKeyPrefix(apiKey),\n baseUrl,\n source,\n ...(extras.path ? { path: extras.path } : {}),\n ...(extras.verifiedAt ? { verifiedAt: extras.verifiedAt } : {}),\n };\n}\n\nexport async function resolveOrgxAuth(\n options: ResolveOrgxAuthOptions = {},\n): Promise<ResolvedOrgxAuth | null> {\n const envApiKey = process.env.ORGX_API_KEY?.trim();\n const envBaseUrl = process.env.ORGX_BASE_URL?.trim();\n if (envApiKey) {\n return buildResolvedAuth(\n envApiKey,\n withResolvedBaseUrl(DEFAULT_ORGX_BASE_URL, envBaseUrl),\n \"environment\",\n );\n }\n\n const authPath = options.authPath ?? ORGX_WIZARD_AUTH_PATH;\n const stored = await readWizardAuth(authPath);\n if (stored) {\n return buildResolvedAuth(\n stored.apiKey,\n withResolvedBaseUrl(stored.baseUrl, envBaseUrl),\n \"wizard-store\",\n {\n path: authPath,\n verifiedAt: stored.verifiedAt,\n },\n );\n }\n\n const openclawConfigPath = options.openclawConfigPath ?? OPENCLAW_CONFIG_PATH;\n const openclawAuth = readOpenClawAuth(\n openclawConfigPath ? readTextIfExists(openclawConfigPath) : null,\n );\n if (openclawAuth.apiKey && openclawConfigPath) {\n return buildResolvedAuth(\n openclawAuth.apiKey,\n withResolvedBaseUrl(openclawAuth.baseUrl || DEFAULT_ORGX_BASE_URL, envBaseUrl),\n \"openclaw-config-file\",\n { path: openclawConfigPath },\n );\n }\n\n return null;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nexport async function verifyOrgxAuth(\n auth: Pick<ResolvedOrgxAuth, \"apiKey\" | \"baseUrl\" | \"source\" | \"keyPrefix\"> & {\n path?: string;\n verifiedAt?: string;\n },\n): Promise<OrgxAuthCheckResult> {\n const url = buildOrgxApiUrl(\"/client/sync\", auth.baseUrl);\n\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: \"{}\",\n signal: AbortSignal.timeout(7_000),\n });\n\n const data = await parseResponseBody(response);\n\n return {\n configured: true,\n ok: response.ok,\n skipped: false,\n source: auth.source,\n keyPrefix: auth.keyPrefix,\n baseUrl: auth.baseUrl,\n ...(auth.path ? { path: auth.path } : {}),\n ...(auth.verifiedAt ? { verifiedAt: auth.verifiedAt } : {}),\n status: response.status,\n url,\n data,\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n keyPrefix: auth.keyPrefix,\n baseUrl: auth.baseUrl,\n ...(auth.path ? { path: auth.path } : {}),\n ...(auth.verifiedAt ? { verifiedAt: auth.verifiedAt } : {}),\n url,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\nexport async function checkOrgxAuth(\n options: ResolveOrgxAuthOptions = {},\n): Promise<OrgxAuthCheckResult> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n error: \"No OrgX API key found in ORGX_API_KEY, the wizard auth store, or OpenClaw config.\",\n url: buildOrgxApiUrl(\"/client/sync\", DEFAULT_ORGX_BASE_URL),\n };\n }\n\n return verifyOrgxAuth(auth);\n}\n\nexport function describeSetupStatusScope(): string {\n return \"The setup-status endpoint is still service-key-only and uses ORGX_SERVICE_KEY.\";\n}\n","import { ORGX_SETUP_STATUS_URL } from \"../constants.js\";\n\nexport interface SetupStatusResult {\n ok: boolean;\n skipped: boolean;\n status?: number;\n data?: unknown;\n error?: string;\n url: string;\n}\n\nexport async function fetchSetupStatus(\n apiKey: string | undefined = process.env.ORGX_SERVICE_KEY?.trim(),\n): Promise<SetupStatusResult> {\n if (!apiKey) {\n return {\n ok: false,\n skipped: true,\n error:\n \"ORGX_SERVICE_KEY is not set; /api/setup/status is a service-level check and was skipped.\",\n url: ORGX_SETUP_STATUS_URL,\n };\n }\n\n try {\n const response = await fetch(ORGX_SETUP_STATUS_URL, {\n headers: {\n Authorization: `Bearer ${apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n\n const text = await response.text();\n let data: unknown = text;\n try {\n data = text.length > 0 ? JSON.parse(text) : null;\n } catch {\n data = text;\n }\n\n return {\n ok: response.ok,\n skipped: false,\n status: response.status,\n data,\n url: ORGX_SETUP_STATUS_URL,\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n error: error instanceof Error ? error.message : String(error),\n url: ORGX_SETUP_STATUS_URL,\n };\n }\n}\n","import { spawnSync } from \"node:child_process\";\n\nimport { readTextIfExists } from \"./fs.js\";\nimport { readOpenClawGatewayPort } from \"../surfaces/openclaw-config.js\";\n\nexport interface OpenClawHealthCheck {\n ok: boolean;\n skipped: boolean;\n method: \"cli\" | \"http\" | \"none\";\n url?: string;\n details: string[];\n error?: string;\n}\n\nfunction trimOutput(value: string | null | undefined): string | undefined {\n const next = value?.trim();\n return next ? next : undefined;\n}\n\nexport async function checkOpenClawHealth(\n configPath?: string,\n): Promise<OpenClawHealthCheck> {\n const rawConfig = configPath ? readTextIfExists(configPath) : null;\n const port = readOpenClawGatewayPort(rawConfig);\n const url = `http://127.0.0.1:${port}/orgx/live`;\n\n const cli = spawnSync(\"openclaw\", [\"gateway\", \"status\"], {\n encoding: \"utf8\",\n timeout: 5_000,\n });\n\n if (!cli.error) {\n const stdout = trimOutput(cli.stdout);\n const stderr = trimOutput(cli.stderr);\n const details = [`gateway port: ${port}`];\n if (stdout) details.push(`cli: ${stdout}`);\n if (stderr) details.push(`cli stderr: ${stderr}`);\n\n if (cli.status === 0) {\n return {\n ok: true,\n skipped: false,\n method: \"cli\",\n url,\n details,\n };\n }\n }\n\n try {\n const response = await fetch(url, {\n redirect: \"manual\",\n signal: AbortSignal.timeout(5_000),\n });\n\n if (response.ok || (response.status >= 300 && response.status < 400)) {\n return {\n ok: true,\n skipped: false,\n method: \"http\",\n url,\n details: [`gateway port: ${port}`, `http status: ${response.status}`],\n };\n }\n\n return {\n ok: false,\n skipped: false,\n method: \"http\",\n url,\n error: `HTTP ${response.status}`,\n details: [`gateway port: ${port}`, `http status: ${response.status}`],\n };\n } catch (error) {\n const cliError = cli.error instanceof Error ? cli.error.message : undefined;\n return {\n ok: false,\n skipped: false,\n method: cliError ? \"none\" : \"http\",\n url,\n error: error instanceof Error ? error.message : String(error),\n details: [\n `gateway port: ${port}`,\n ...(cliError ? [`openclaw cli unavailable: ${cliError}`] : []),\n ],\n };\n }\n}\n","import { ORGX_HOSTED_MCP_HEALTH_URL } from \"../constants.js\";\n\nexport interface HostedMcpHealthCheck {\n ok: boolean;\n skipped: boolean;\n status?: number;\n url: string;\n body?: string;\n error?: string;\n details: string[];\n}\n\nfunction trimBody(value: string): string | undefined {\n const next = value.trim();\n if (!next) return undefined;\n return next.length > 120 ? `${next.slice(0, 117)}...` : next;\n}\n\nexport async function checkHostedMcpHealth(): Promise<HostedMcpHealthCheck> {\n try {\n const response = await fetch(ORGX_HOSTED_MCP_HEALTH_URL, {\n method: \"GET\",\n signal: AbortSignal.timeout(5_000),\n });\n const text = await response.text();\n const body = trimBody(text);\n\n return {\n ok: response.ok,\n skipped: false,\n status: response.status,\n url: ORGX_HOSTED_MCP_HEALTH_URL,\n ...(body ? { body } : {}),\n ...(response.ok ? {} : { error: `HTTP ${response.status}` }),\n details: [\n `http status: ${response.status}`,\n ...(body ? [`body: ${body}`] : []),\n ],\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n url: ORGX_HOSTED_MCP_HEALTH_URL,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import { ORGX_HOSTED_MCP_URL } from \"../constants.js\";\nimport {\n resolveOrgxAuth,\n type OrgxAuthSource,\n type ResolveOrgxAuthOptions,\n} from \"./auth.js\";\n\nconst DEFAULT_TOOL_NAME = \"get_setup_status\";\n\ninterface JsonRpcErrorPayload {\n error?: {\n message?: string;\n };\n result?: unknown;\n}\n\nexport interface HostedMcpToolCheck {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n toolName: string;\n url: string;\n baseUrl?: string;\n initializeStatus?: number;\n callStatus?: number;\n error?: string;\n details: string[];\n response?: unknown;\n}\n\nfunction buildHeaders(apiKey: string, sessionId?: string): Record<string, string> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json, text/event-stream\",\n };\n\n if (sessionId) {\n headers[\"Mcp-Session-Id\"] = sessionId;\n }\n\n return headers;\n}\n\nasync function readJsonSafe(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction readJsonRpcError(payload: unknown): string | undefined {\n if (!payload || typeof payload !== \"object\") {\n return undefined;\n }\n\n const maybeError = (payload as JsonRpcErrorPayload).error;\n if (!maybeError || typeof maybeError !== \"object\") {\n return undefined;\n }\n\n return typeof maybeError.message === \"string\"\n ? maybeError.message\n : \"Unknown MCP JSON-RPC error.\";\n}\n\nfunction readSessionId(response: Response): string | undefined {\n return response.headers.get(\"mcp-session-id\") ?? response.headers.get(\"Mcp-Session-Id\") ?? undefined;\n}\n\nexport async function checkHostedMcpToolAccess(\n options: ResolveOrgxAuthOptions = {},\n toolName = DEFAULT_TOOL_NAME,\n): Promise<HostedMcpToolCheck> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n error: \"No OrgX API key configured; hosted MCP tool verification skipped.\",\n details: [],\n };\n }\n\n try {\n const initializeResponse = await fetch(ORGX_HOSTED_MCP_URL, {\n method: \"POST\",\n headers: buildHeaders(auth.apiKey),\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 1,\n method: \"initialize\",\n params: {\n protocolVersion: \"2024-11-05\",\n clientInfo: {\n name: \"orgx-wizard\",\n version: \"0.1.0\",\n },\n capabilities: {},\n },\n }),\n signal: AbortSignal.timeout(10_000),\n });\n\n const initializePayload = await readJsonSafe(initializeResponse);\n const initializeError = readJsonRpcError(initializePayload);\n const sessionId = readSessionId(initializeResponse);\n\n if (!initializeResponse.ok) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: `MCP initialize failed with HTTP ${initializeResponse.status}.`,\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n if (initializeError) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: `MCP initialize returned JSON-RPC error: ${initializeError}`,\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n if (!sessionId) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n error: \"MCP initialize succeeded but no Mcp-Session-Id header was returned.\",\n details: [`auth source: ${auth.source}`],\n response: initializePayload,\n };\n }\n\n const callResponse = await fetch(ORGX_HOSTED_MCP_URL, {\n method: \"POST\",\n headers: buildHeaders(auth.apiKey, sessionId),\n body: JSON.stringify({\n jsonrpc: \"2.0\",\n id: 2,\n method: \"tools/call\",\n params: {\n name: toolName,\n arguments: {},\n },\n }),\n signal: AbortSignal.timeout(10_000),\n });\n\n const callPayload = await readJsonSafe(callResponse);\n const callError = readJsonRpcError(callPayload);\n\n if (!callResponse.ok) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n error: `MCP tool call failed with HTTP ${callResponse.status}.`,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n ],\n response: callPayload,\n };\n }\n\n if (callError) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n error: `MCP tool call returned JSON-RPC error: ${callError}`,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n ],\n response: callPayload,\n };\n }\n\n return {\n configured: true,\n ok: true,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n initializeStatus: initializeResponse.status,\n callStatus: callResponse.status,\n details: [\n `auth source: ${auth.source}`,\n `session established: ${sessionId}`,\n `tool call: ${toolName}`,\n ],\n response: callPayload,\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n toolName,\n url: ORGX_HOSTED_MCP_URL,\n baseUrl: auth.baseUrl,\n error: error instanceof Error ? error.message : String(error),\n details: [`auth source: ${auth.source}`],\n };\n }\n}\n","import {\n NPM_REGISTRY_BASE_URL,\n ORGX_WIZARD_NPM_PACKAGE_NAME,\n} from \"../constants.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport interface NpmRegistryCheck {\n ok: boolean;\n skipped: boolean;\n reachable: boolean;\n published: boolean;\n url: string;\n packageName: string;\n version?: string;\n error?: string;\n details: string[];\n}\n\nfunction resolvePackageUrl(packageName: string): string {\n return `${NPM_REGISTRY_BASE_URL}/${encodeURIComponent(packageName)}`;\n}\n\nfunction getLatestVersion(payload: unknown): string | undefined {\n if (!isRecord(payload) || !isRecord(payload[\"dist-tags\"])) {\n return undefined;\n }\n\n const latest = payload[\"dist-tags\"].latest;\n return typeof latest === \"string\" && latest.trim().length > 0 ? latest : undefined;\n}\n\nexport async function checkNpmRegistryHealth(\n packageName: string = ORGX_WIZARD_NPM_PACKAGE_NAME,\n): Promise<NpmRegistryCheck> {\n const url = resolvePackageUrl(packageName);\n\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: { Accept: \"application/json\" },\n signal: AbortSignal.timeout(7_000),\n });\n\n const text = await response.text();\n let payload: unknown = text;\n try {\n payload = text.length > 0 ? JSON.parse(text) : null;\n } catch {\n payload = text;\n }\n\n if (response.ok) {\n const version = getLatestVersion(payload);\n return {\n ok: true,\n skipped: false,\n reachable: true,\n published: true,\n url,\n packageName,\n ...(version ? { version } : {}),\n details: [\n `http status: ${response.status}`,\n ...(version ? [`latest version: ${version}`] : [\"latest version: unavailable\"]),\n ],\n };\n }\n\n if (response.status === 404) {\n return {\n ok: true,\n skipped: false,\n reachable: true,\n published: false,\n url,\n packageName,\n error: `${packageName} is not published on npm yet.`,\n details: [`http status: ${response.status}`],\n };\n }\n\n return {\n ok: false,\n skipped: false,\n reachable: false,\n published: false,\n url,\n packageName,\n error: `npm registry returned HTTP ${response.status}`,\n details: [`http status: ${response.status}`],\n };\n } catch (error) {\n return {\n ok: false,\n skipped: false,\n reachable: false,\n published: false,\n url,\n packageName,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import { buildOrgxApiUrl, resolveOrgxAuth, type ResolveOrgxAuthOptions } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\n\nexport interface OrgxWorkspace {\n id: string;\n name: string;\n description?: string;\n isDefault: boolean;\n createdAt?: string;\n updatedAt?: string;\n}\n\nexport interface CreateWorkspaceInput {\n name: string;\n description?: string;\n}\n\nexport interface SetDefaultWorkspaceInput {\n id: string;\n}\n\nexport interface OrgxWorkspaceClientOptions extends ResolveOrgxAuthOptions {}\n\nasync function requireOrgxAuth(options: OrgxWorkspaceClientOptions = {}) {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n throw new Error(\n \"No OrgX API key configured. Run `wizard auth login` or `wizard auth set-key <oxk_...>` first.\",\n );\n }\n\n return auth;\n}\n\nasync function parseResponseBody(response: Response): Promise<unknown> {\n const text = await response.text();\n if (!text) return null;\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction parseWorkspace(value: unknown): OrgxWorkspace | null {\n if (!isRecord(value)) return null;\n\n const id = typeof value.id === \"string\" ? value.id : null;\n const name = typeof value.name === \"string\" ? value.name : null;\n if (!id || !name) return null;\n\n return {\n id,\n name,\n ...(typeof value.description === \"string\" && value.description.trim().length > 0\n ? { description: value.description }\n : {}),\n isDefault: value.is_default === true,\n ...(typeof value.created_at === \"string\" ? { createdAt: value.created_at } : {}),\n ...(typeof value.updated_at === \"string\" ? { updatedAt: value.updated_at } : {}),\n };\n}\n\nfunction sortWorkspaces(workspaces: OrgxWorkspace[]): OrgxWorkspace[] {\n return [...workspaces].sort((left, right) => {\n if (left.isDefault !== right.isDefault) {\n return left.isDefault ? -1 : 1;\n }\n\n const nameCompare = left.name.localeCompare(right.name);\n if (nameCompare !== 0) {\n return nameCompare;\n }\n\n return left.id.localeCompare(right.id);\n });\n}\n\nfunction parseWorkspaceList(payload: unknown): OrgxWorkspace[] {\n if (!isRecord(payload) || !Array.isArray(payload.data)) {\n return [];\n }\n\n return sortWorkspaces(payload.data.map(parseWorkspace).filter((item): item is OrgxWorkspace => item !== null));\n}\n\nfunction parseWorkspaceResponse(payload: unknown): OrgxWorkspace | null {\n if (!isRecord(payload)) return null;\n return parseWorkspace(payload.data);\n}\n\nfunction parseCurrentWorkspaceResponse(payload: unknown): OrgxWorkspace | null {\n if (!isRecord(payload)) return null;\n\n const id = typeof payload.id === \"string\" ? payload.id : null;\n const name = typeof payload.name === \"string\" ? payload.name : null;\n if (!id || !name) return null;\n\n return {\n id,\n name,\n isDefault: true,\n ...(typeof payload.createdAt === \"string\" ? { createdAt: payload.createdAt } : {}),\n };\n}\n\nfunction buildRequestHeaders(apiKey: string): Record<string, string> {\n return {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n };\n}\n\nfunction formatHttpError(status: number, body: unknown): string {\n if (typeof body === \"string\" && body.trim().length > 0) {\n return `HTTP ${status}: ${body}`;\n }\n\n if (isRecord(body) && typeof body.error === \"string\" && body.error.trim().length > 0) {\n return `HTTP ${status}: ${body.error}`;\n }\n\n return `HTTP ${status}`;\n}\n\nexport async function listWorkspaces(\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace[]> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities?type=command_center&limit=100\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to list workspaces. ${formatHttpError(response.status, body)}`);\n }\n\n return parseWorkspaceList(body);\n}\n\nexport async function getCurrentWorkspace(\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace | null> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/v1/workspaces/current\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n },\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (response.ok) {\n const workspace = parseCurrentWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected current workspace payload.\");\n }\n return workspace;\n }\n\n if (response.status === 404) {\n const workspaces = await listWorkspaces(options);\n return workspaces[0] ?? null;\n }\n\n throw new Error(`Failed to load current workspace. ${formatHttpError(response.status, body)}`);\n}\n\nexport async function createWorkspace(\n input: CreateWorkspaceInput,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace> {\n const name = input.name.trim();\n if (!name) {\n throw new Error(\"Workspace name is required.\");\n }\n\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities\", auth.baseUrl);\n const payload = {\n type: \"command_center\",\n name,\n ...(input.description?.trim()\n ? { description: input.description.trim() }\n : {}),\n };\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: buildRequestHeaders(auth.apiKey),\n body: JSON.stringify(payload),\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to create workspace. ${formatHttpError(response.status, body)}`);\n }\n\n const workspace = parseWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected workspace payload.\");\n }\n\n return workspace;\n}\n\nasync function updateWorkspace(\n input: SetDefaultWorkspaceInput,\n patch: Record<string, unknown>,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<OrgxWorkspace> {\n const auth = await requireOrgxAuth(options);\n const url = buildOrgxApiUrl(\"/entities\", auth.baseUrl);\n const response = await fetch(url, {\n method: \"PATCH\",\n headers: buildRequestHeaders(auth.apiKey),\n body: JSON.stringify({\n type: \"command_center\",\n id: input.id,\n ...patch,\n }),\n signal: AbortSignal.timeout(7_000),\n });\n const body = await parseResponseBody(response);\n\n if (!response.ok) {\n throw new Error(`Failed to update workspace. ${formatHttpError(response.status, body)}`);\n }\n\n const workspace = parseWorkspaceResponse(body);\n if (!workspace) {\n throw new Error(\"OrgX returned an unexpected workspace update payload.\");\n }\n\n return workspace;\n}\n\nexport async function setDefaultWorkspace(\n input: SetDefaultWorkspaceInput,\n options: OrgxWorkspaceClientOptions = {},\n): Promise<{ changed: boolean; workspace: OrgxWorkspace }> {\n const workspaceId = input.id.trim();\n if (!workspaceId) {\n throw new Error(\"Workspace id is required.\");\n }\n\n const workspaces = await listWorkspaces(options);\n const target = workspaces.find((workspace) => workspace.id === workspaceId);\n if (!target) {\n throw new Error(`Workspace ${workspaceId} was not found in the current OrgX account.`);\n }\n\n if (target.isDefault) {\n return {\n changed: false,\n workspace: target,\n };\n }\n\n const currentDefault = workspaces.find((workspace) => workspace.isDefault);\n if (currentDefault) {\n await updateWorkspace({ id: currentDefault.id }, { is_default: false }, options);\n }\n\n try {\n const updated = await updateWorkspace({ id: workspaceId }, { is_default: true }, options);\n return {\n changed: true,\n workspace: updated,\n };\n } catch (error) {\n if (currentDefault) {\n try {\n await updateWorkspace({ id: currentDefault.id }, { is_default: true }, options);\n } catch {\n // Preserve the original failure while best-effort restoring the prior default.\n }\n }\n throw error;\n }\n}\n","import {\n resolveOrgxAuth,\n type OrgxAuthSource,\n type ResolveOrgxAuthOptions,\n} from \"./auth.js\";\nimport { getCurrentWorkspace, type OrgxWorkspace } from \"./workspaces.js\";\n\nexport interface WorkspaceConnectivityCheck {\n configured: boolean;\n ok: boolean;\n skipped: boolean;\n source: OrgxAuthSource | \"none\";\n baseUrl?: string;\n workspace?: OrgxWorkspace;\n error?: string;\n details: string[];\n}\n\nexport async function checkWorkspaceConnectivity(\n options: ResolveOrgxAuthOptions = {},\n): Promise<WorkspaceConnectivityCheck> {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n return {\n configured: false,\n ok: false,\n skipped: true,\n source: \"none\",\n error: \"No OrgX API key configured; workspace connectivity check skipped.\",\n details: [],\n };\n }\n\n try {\n const workspace = await getCurrentWorkspace(options);\n if (!workspace) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n error: \"OrgX auth resolved, but no accessible workspace was returned.\",\n details: [],\n };\n }\n\n return {\n configured: true,\n ok: true,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n workspace,\n details: [\n `workspace id: ${workspace.id}`,\n ...(workspace.isDefault ? [\"workspace is marked as default\"] : []),\n ],\n };\n } catch (error) {\n return {\n configured: true,\n ok: false,\n skipped: false,\n source: auth.source,\n baseUrl: auth.baseUrl,\n error: error instanceof Error ? error.message : String(error),\n details: [],\n };\n }\n}\n","import * as TOML from \"@iarna/toml\";\n\nimport {\n ORGX_HOSTED_MCP_KEY,\n ORGX_HOSTED_MCP_URL,\n ORGX_LOCAL_MCP_KEY,\n} from \"../constants.js\";\nimport { isRecord, parseJsonObject, readObject } from \"../lib/fs.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nexport interface McpConfigInspection {\n configured: boolean;\n hostedConfigured?: boolean;\n localConfigured?: boolean;\n details: string[];\n}\n\nfunction cloneConfigCollection(config: JsonObject, key: string): JsonObject {\n return { ...readObject(config[key]) };\n}\n\nfunction removeLegacyScopedMcpServers(servers: JsonObject): boolean {\n const scopedPrefix = `${ORGX_LOCAL_MCP_KEY}-`;\n let updated = false;\n\n for (const key of Object.keys(servers)) {\n if (key === ORGX_LOCAL_MCP_KEY) continue;\n if (!key.startsWith(scopedPrefix)) continue;\n delete servers[key];\n updated = true;\n }\n\n return updated;\n}\n\nfunction stringifyJsonConfig(config: JsonObject): string {\n return `${JSON.stringify(config, null, 2)}\\n`;\n}\n\nfunction clearStdioFields(entry: JsonObject): JsonObject {\n const next = { ...entry };\n delete next.command;\n delete next.args;\n delete next.env;\n return next;\n}\n\nfunction matchHttpEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.type === \"http\" && value.url === url;\n}\n\nfunction matchUrlEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.url === url;\n}\n\nexport function patchClaudeMcpConfig(\n input: string | null,\n localMcpUrl?: string,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingOrgx = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const existingLocal = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedUrl = typeof existingOrgx.url === \"string\" ? existingOrgx.url : \"\";\n const hostedType = typeof existingOrgx.type === \"string\" ? existingOrgx.type : \"\";\n const shouldSetHostedOrgx =\n !isRecord(servers[ORGX_HOSTED_MCP_KEY]) ||\n (hostedUrl === localMcpUrl && hostedType === \"http\");\n\n if (shouldSetHostedOrgx) {\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...existingOrgx,\n type: \"http\",\n url: ORGX_HOSTED_MCP_URL,\n description:\n typeof existingOrgx.description === \"string\" &&\n existingOrgx.description.trim().length > 0\n ? existingOrgx.description\n : \"OrgX cloud MCP (OAuth)\",\n };\n }\n\n if (localMcpUrl) {\n servers[ORGX_LOCAL_MCP_KEY] = {\n ...existingLocal,\n type: \"http\",\n url: localMcpUrl,\n description:\n typeof existingLocal.description === \"string\" &&\n existingLocal.description.trim().length > 0\n ? existingLocal.description\n : \"OrgX platform via local OpenClaw plugin (no OAuth)\",\n };\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeClaudeMcpConfig(\n input: string | null,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n if (matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectClaudeMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedConfigured = matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n const localConfigured =\n local.type === \"http\" &&\n typeof local.url === \"string\";\n const localUrl = localConfigured ? String(local.url) : \"missing\";\n\n return {\n configured: hostedConfigured && localConfigured,\n hostedConfigured,\n localConfigured,\n details: [\n `hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`,\n `local orgx-openclaw: ${localUrl}`,\n ],\n };\n}\n\nexport function patchCursorMcpConfig(\n input: string | null,\n localMcpUrl: string,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingLocal = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n\n servers[ORGX_LOCAL_MCP_KEY] = {\n ...clearStdioFields(existingLocal),\n url: localMcpUrl,\n };\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeCursorMcpConfig(\n input: string | null,\n): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n removeLegacyScopedMcpServers(servers);\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectCursorMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const localConfigured =\n typeof local.url === \"string\";\n const localUrl = localConfigured ? String(local.url) : \"missing\";\n\n return {\n configured: localConfigured,\n localConfigured,\n details: [`local orgx-openclaw: ${localUrl}`],\n };\n}\n\nexport function patchVscodeMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...clearStdioFields(existingHosted),\n type: \"http\",\n url: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n servers,\n });\n}\n\nexport function removeVscodeMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n\n if (matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n servers,\n });\n}\n\nexport function inspectVscodeMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"servers\");\n const hostedConfigured = matchHttpEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nfunction matchServerUrlEntry(value: unknown, url: string): boolean {\n if (!isRecord(value)) return false;\n return value.serverUrl === url || value.url === url;\n}\n\nexport function patchWindsurfMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const nextEntry = clearStdioFields(existingHosted);\n\n delete nextEntry.url;\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...nextEntry,\n serverUrl: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function removeWindsurfMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n\n if (matchServerUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n mcpServers: servers,\n });\n}\n\nexport function inspectWindsurfMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"mcpServers\");\n const hostedConfigured = matchServerUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nexport function patchZedMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n const existingHosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n servers[ORGX_HOSTED_MCP_KEY] = {\n ...clearStdioFields(existingHosted),\n url: ORGX_HOSTED_MCP_URL,\n };\n\n return stringifyJsonConfig({\n ...current,\n context_servers: servers,\n });\n}\n\nexport function removeZedMcpConfig(input: string | null): string {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n\n if (matchUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL)) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n return stringifyJsonConfig({\n ...current,\n context_servers: servers,\n });\n}\n\nexport function inspectZedMcpConfig(input: string | null): McpConfigInspection {\n const current = parseJsonObject(input);\n const servers = cloneConfigCollection(current, \"context_servers\");\n const hostedConfigured = matchUrlEntry(servers[ORGX_HOSTED_MCP_KEY], ORGX_HOSTED_MCP_URL);\n\n return {\n configured: hostedConfigured,\n hostedConfigured,\n details: [`hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`],\n };\n}\n\nfunction parseTomlDocument(input: string | null): JsonObject {\n if (!input) return {};\n\n try {\n const parsed = TOML.parse(input) as unknown;\n return isRecord(parsed) ? parsed : {};\n } catch {\n return {};\n }\n}\n\nfunction stringifyTomlDocument(document: JsonObject): string {\n const rendered = TOML.stringify(document as TOML.JsonMap);\n return rendered.endsWith(\"\\n\") ? rendered : `${rendered}\\n`;\n}\n\nfunction upsertCodexEntry(servers: JsonObject, key: string, url: string): void {\n const current = readObject(servers[key]);\n const next: JsonObject = {\n ...current,\n url,\n };\n delete next.command;\n delete next.args;\n delete next.startup_timeout_sec;\n servers[key] = next;\n}\n\nfunction removeLegacyCodexEntries(servers: JsonObject): boolean {\n const scopedPrefix = `${ORGX_LOCAL_MCP_KEY}-`;\n let updated = false;\n\n for (const key of Object.keys(servers)) {\n if (key === ORGX_LOCAL_MCP_KEY) continue;\n if (!key.startsWith(scopedPrefix)) continue;\n delete servers[key];\n updated = true;\n }\n\n return updated;\n}\n\nexport function patchCodexConfigToml(\n input: string | null,\n localMcpUrl?: string,\n): string {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n\n upsertCodexEntry(servers, ORGX_HOSTED_MCP_KEY, ORGX_HOSTED_MCP_URL);\n if (localMcpUrl) {\n upsertCodexEntry(servers, ORGX_LOCAL_MCP_KEY, localMcpUrl);\n }\n removeLegacyCodexEntries(servers);\n\n current.mcp_servers = servers;\n return stringifyTomlDocument(current);\n}\n\nexport function removeCodexConfigToml(\n input: string | null,\n): string {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n const hosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n\n if (isRecord(servers[ORGX_LOCAL_MCP_KEY])) {\n delete servers[ORGX_LOCAL_MCP_KEY];\n }\n\n if (hosted.url === ORGX_HOSTED_MCP_URL) {\n delete servers[ORGX_HOSTED_MCP_KEY];\n }\n\n removeLegacyCodexEntries(servers);\n current.mcp_servers = servers;\n\n return stringifyTomlDocument(current);\n}\n\nexport function inspectCodexConfigToml(input: string | null): McpConfigInspection {\n const current = parseTomlDocument(input);\n const servers = readObject(current.mcp_servers);\n const hosted = readObject(servers[ORGX_HOSTED_MCP_KEY]);\n const local = readObject(servers[ORGX_LOCAL_MCP_KEY]);\n const hostedConfigured = hosted.url === ORGX_HOSTED_MCP_URL;\n const localConfigured = typeof local.url === \"string\";\n\n return {\n configured: hostedConfigured && localConfigured,\n hostedConfigured,\n localConfigured,\n details: [\n `hosted orgx: ${hostedConfigured ? \"ok\" : \"missing\"}`,\n `local orgx-openclaw: ${localConfigured ? local.url : \"missing\"}`,\n ],\n };\n}\n","export const SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"openclaw\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n \"chatgpt\",\n] as const;\n\nexport type SurfaceName = (typeof SURFACE_NAMES)[number];\nexport type SurfaceMode = \"automated\" | \"manual\";\n\nexport const AUTOMATED_SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"openclaw\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n] as const satisfies readonly SurfaceName[];\n\nexport const MCP_SURFACE_NAMES = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n] as const;\n","import { existsSync } from \"node:fs\";\nimport { dirname } from \"node:path\";\n\nimport {\n CHATGPT_APP_PATHS,\n CLAUDE_INSTALL_PATHS,\n CLAUDE_MCP_PATHS,\n CODEX_CONFIG_PATHS,\n CODEX_INSTALL_PATHS,\n CURSOR_INSTALL_PATHS,\n CURSOR_MCP_PATHS,\n OPENCLAW_CONFIG_PATHS,\n OPENCLAW_INSTALL_PATHS,\n VSCODE_INSTALL_PATHS,\n VSCODE_MCP_PATHS,\n WINDSURF_INSTALL_PATHS,\n WINDSURF_MCP_PATHS,\n ZED_INSTALL_PATHS,\n ZED_SETTINGS_PATHS,\n} from \"../constants.js\";\nimport type { SurfaceName } from \"./names.js\";\n\nexport interface SurfaceLocator {\n configPaths: string[];\n installPaths: string[];\n}\n\nexport interface SurfaceDetection {\n detected: boolean;\n preferredPath?: string;\n existingPath?: string;\n evidence: string[];\n}\n\ntype Exists = (path: string) => boolean;\n\nconst SURFACE_LOCATORS: Record<SurfaceName, SurfaceLocator> = {\n claude: {\n configPaths: CLAUDE_MCP_PATHS,\n installPaths: CLAUDE_INSTALL_PATHS,\n },\n cursor: {\n configPaths: CURSOR_MCP_PATHS,\n installPaths: CURSOR_INSTALL_PATHS,\n },\n codex: {\n configPaths: CODEX_CONFIG_PATHS,\n installPaths: CODEX_INSTALL_PATHS,\n },\n openclaw: {\n configPaths: OPENCLAW_CONFIG_PATHS,\n installPaths: OPENCLAW_INSTALL_PATHS,\n },\n vscode: {\n configPaths: VSCODE_MCP_PATHS,\n installPaths: VSCODE_INSTALL_PATHS,\n },\n windsurf: {\n configPaths: WINDSURF_MCP_PATHS,\n installPaths: WINDSURF_INSTALL_PATHS,\n },\n zed: {\n configPaths: ZED_SETTINGS_PATHS,\n installPaths: ZED_INSTALL_PATHS,\n },\n chatgpt: {\n configPaths: [],\n installPaths: CHATGPT_APP_PATHS,\n },\n};\n\nfunction firstExistingPath(paths: string[], exists: Exists): string | undefined {\n return paths.find((path) => exists(path));\n}\n\nfunction buildFallbackInstallPaths(configPaths: string[]): string[] {\n return [...new Set(configPaths.map((path) => dirname(path)))];\n}\n\nexport function getSurfaceLocator(name: SurfaceName): SurfaceLocator {\n return SURFACE_LOCATORS[name];\n}\n\nexport function detectSurface(name: SurfaceName, exists: Exists = existsSync): SurfaceDetection {\n const locator = getSurfaceLocator(name);\n const existingConfigPath = firstExistingPath(locator.configPaths, exists);\n const preferredPath = locator.configPaths[0] ?? locator.installPaths[0];\n const installCandidates = [\n ...locator.installPaths,\n ...buildFallbackInstallPaths(locator.configPaths),\n ];\n const existingInstallPath = firstExistingPath(installCandidates, exists);\n const existingPath = existingConfigPath ?? existingInstallPath;\n const evidence: string[] = [];\n\n if (existingConfigPath) {\n evidence.push(`config found: ${existingConfigPath}`);\n }\n if (existingInstallPath && existingInstallPath !== existingConfigPath) {\n evidence.push(`install marker found: ${existingInstallPath}`);\n }\n if (!existingConfigPath && !existingInstallPath) {\n evidence.push(\"no candidate paths found on disk\");\n }\n\n const detection: SurfaceDetection = {\n detected: Boolean(existingConfigPath || existingInstallPath),\n evidence,\n };\n\n if (preferredPath) {\n detection.preferredPath = preferredPath;\n }\n if (existingPath) {\n detection.existingPath = existingPath;\n }\n\n return detection;\n}\n","import {\n checkOrgxAuth,\n resolveOrgxAuth,\n type OrgxAuthCheckResult,\n} from \"../lib/auth.js\";\nimport {\n fetchSetupStatus,\n type SetupStatusResult,\n} from \"../lib/setup-status.js\";\nimport { checkOpenClawHealth, type OpenClawHealthCheck } from \"../lib/openclaw-health.js\";\nimport { checkHostedMcpHealth, type HostedMcpHealthCheck } from \"../lib/hosted-mcp-health.js\";\nimport {\n checkHostedMcpToolAccess,\n type HostedMcpToolCheck,\n} from \"../lib/hosted-mcp-tool-check.js\";\nimport { checkNpmRegistryHealth, type NpmRegistryCheck } from \"../lib/npm-registry-health.js\";\nimport {\n checkWorkspaceConnectivity,\n type WorkspaceConnectivityCheck,\n} from \"../lib/workspace-connectivity.js\";\nimport { readTextIfExists, writeTextFile } from \"../lib/fs.js\";\nimport {\n inspectClaudeMcpConfig,\n inspectCodexConfigToml,\n inspectCursorMcpConfig,\n inspectVscodeMcpConfig,\n inspectWindsurfMcpConfig,\n inspectZedMcpConfig,\n patchClaudeMcpConfig,\n patchCodexConfigToml,\n patchCursorMcpConfig,\n patchVscodeMcpConfig,\n patchWindsurfMcpConfig,\n patchZedMcpConfig,\n removeClaudeMcpConfig,\n removeCodexConfigToml,\n removeCursorMcpConfig,\n removeVscodeMcpConfig,\n removeWindsurfMcpConfig,\n removeZedMcpConfig,\n} from \"./mcp-config.js\";\nimport {\n buildLocalMcpUrl,\n inspectOpenClawConfig,\n patchOpenClawConfig,\n removeOpenClawConfig,\n} from \"./openclaw-config.js\";\nimport {\n AUTOMATED_SURFACE_NAMES,\n MCP_SURFACE_NAMES,\n SURFACE_NAMES,\n type SurfaceMode,\n type SurfaceName,\n} from \"./names.js\";\nimport { detectSurface, getSurfaceLocator } from \"./detection.js\";\n\nexport { SURFACE_NAMES } from \"./names.js\";\nexport type { SurfaceName } from \"./names.js\";\n\nexport interface SurfaceStatus {\n name: SurfaceName;\n mode: SurfaceMode;\n detected: boolean;\n configured: boolean;\n path?: string;\n details: string[];\n summary: string;\n}\n\nexport interface SurfaceMutationResult {\n name: SurfaceName;\n changed: boolean;\n path?: string;\n message: string;\n}\n\ntype SurfaceSelection<T extends string> = T | \"all\" | readonly (T | \"all\")[];\n\ninterface OpenClawDependencyState {\n detected: boolean;\n configured: boolean;\n path?: string;\n url?: string;\n}\n\nfunction getSurfaceMode(name: SurfaceName): SurfaceMode {\n return AUTOMATED_SURFACE_NAMES.includes(name as (typeof AUTOMATED_SURFACE_NAMES)[number])\n ? \"automated\"\n : \"manual\";\n}\n\nfunction getSurfacePath(name: SurfaceName): string | undefined {\n const detection = detectSurface(name);\n const locator = getSurfaceLocator(name);\n const existingPath = detection.existingPath;\n\n if (existingPath && locator.configPaths.includes(existingPath)) {\n return existingPath;\n }\n\n return locator.configPaths[0] ?? detection.preferredPath ?? existingPath;\n}\n\nfunction getOpenClawDependencyState(): OpenClawDependencyState {\n const detection = detectSurface(\"openclaw\");\n const path = detection.existingPath ?? detection.preferredPath;\n const raw = path ? readTextIfExists(path) : null;\n const inspection = inspectOpenClawConfig(raw);\n\n const result: OpenClawDependencyState = {\n detected: detection.detected,\n configured: inspection.configured,\n };\n\n if (path) {\n result.path = path;\n }\n\n if (detection.detected) {\n result.url = buildLocalMcpUrl(raw);\n }\n\n return result;\n}\n\nfunction automatedSurfaceStatus(\n name: Extract<\n SurfaceName,\n \"claude\" | \"cursor\" | \"codex\" | \"openclaw\" | \"vscode\" | \"windsurf\" | \"zed\"\n >,\n): SurfaceStatus {\n const detection = detectSurface(name);\n const path = detection.existingPath ?? detection.preferredPath;\n const openclaw = getOpenClawDependencyState();\n\n if (name === \"claude\") {\n const inspection = inspectClaudeMcpConfig(path ? readTextIfExists(path) : null);\n const configured = inspection.hostedConfigured === true &&\n (openclaw.detected ? inspection.localConfigured === true : true);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; hosted OrgX is the only available route.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? openclaw.detected\n ? \"OrgX is connected in Claude with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Claude.\"\n : detection.detected\n ? openclaw.detected\n ? `Claude is missing either hosted OrgX or the local OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Claude is missing the hosted OrgX MCP entry.\"\n : \"Claude config directory was not detected on disk.\",\n };\n }\n\n if (name === \"cursor\") {\n const inspection = inspectCursorMcpConfig(path ? readTextIfExists(path) : null);\n const configured = openclaw.detected && inspection.localConfigured === true;\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; Cursor cannot use the local OrgX bridge yet.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? \"OrgX is connected in Cursor through the local OpenClaw bridge.\"\n : detection.detected\n ? openclaw.detected\n ? `Cursor is missing the local OrgX OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Cursor is ready to wire, but OpenClaw must be installed first.\"\n : \"Cursor config directory was not detected on disk.\",\n };\n }\n\n if (name === \"codex\") {\n const inspection = inspectCodexConfigToml(path ? readTextIfExists(path) : null);\n const configured = inspection.hostedConfigured === true &&\n (openclaw.detected ? inspection.localConfigured === true : true);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured,\n ...(path ? { path } : {}),\n details: [\n ...inspection.details,\n ...(openclaw.detected\n ? [`OpenClaw bridge: ${openclaw.configured ? \"configured\" : \"detected but not configured\"}`]\n : [\"OpenClaw bridge: not detected; hosted OrgX is the only available route.\"]),\n ...detection.evidence,\n ],\n summary: configured\n ? openclaw.detected\n ? \"OrgX is connected in Codex with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Codex.\"\n : detection.detected\n ? openclaw.detected\n ? `Codex is missing either hosted OrgX or the local OpenClaw bridge (${openclaw.url ?? \"unknown\"}).`\n : \"Codex is missing the hosted OrgX MCP entry.\"\n : \"Codex config directory was not detected on disk.\",\n };\n }\n\n if (name === \"vscode\") {\n const inspection = inspectVscodeMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in VS Code.\"\n : detection.detected\n ? \"VS Code is missing the hosted OrgX MCP entry.\"\n : \"VS Code config directory was not detected on disk.\",\n };\n }\n\n if (name === \"windsurf\") {\n const inspection = inspectWindsurfMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in Windsurf.\"\n : detection.detected\n ? \"Windsurf is missing the hosted OrgX MCP entry.\"\n : \"Windsurf config directory was not detected on disk.\",\n };\n }\n\n if (name === \"zed\") {\n const inspection = inspectZedMcpConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.hostedConfigured === true,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.hostedConfigured\n ? \"OrgX cloud MCP is connected in Zed.\"\n : detection.detected\n ? \"Zed is missing the hosted OrgX MCP entry.\"\n : \"Zed config directory was not detected on disk.\",\n };\n }\n\n const inspection = inspectOpenClawConfig(path ? readTextIfExists(path) : null);\n return {\n name,\n mode: \"automated\",\n detected: detection.detected,\n configured: inspection.configured,\n ...(path ? { path } : {}),\n details: [...inspection.details, ...detection.evidence],\n summary: inspection.configured\n ? `OpenClaw plugin entry ${inspection.pluginKey ?? \"missing\"} is configured.`\n : inspection.installed\n ? \"OpenClaw is installed but OrgX defaults have not been written.\"\n : detection.detected\n ? \"OpenClaw support files exist but no OrgX plugin entry was found.\"\n : \"OpenClaw is not installed or no support files were found.\",\n };\n}\n\nfunction manualSurfaceStatus(name: Extract<SurfaceName, \"chatgpt\">): SurfaceStatus {\n const detection = detectSurface(name);\n const path = detection.existingPath ?? detection.preferredPath;\n\n const shared = {\n name,\n mode: \"manual\" as const,\n detected: detection.detected,\n configured: false,\n ...(path ? { path } : {}),\n };\n\n switch (name) {\n case \"chatgpt\":\n return {\n ...shared,\n details: [\n ...detection.evidence,\n \"ChatGPT desktop support is not automated yet.\",\n \"Manual follow-up: wire the OrgX surface once the app-side config contract is finalized.\",\n ],\n summary: detection.detected\n ? \"ChatGPT support files detected; manual OrgX wiring still required.\"\n : \"ChatGPT desktop support files were not found on disk.\",\n };\n }\n}\n\nfunction getSurfaceStatus(name: SurfaceName): SurfaceStatus {\n if (AUTOMATED_SURFACE_NAMES.includes(name as (typeof AUTOMATED_SURFACE_NAMES)[number])) {\n return automatedSurfaceStatus(\n name as Extract<\n SurfaceName,\n \"claude\" | \"cursor\" | \"codex\" | \"openclaw\" | \"vscode\" | \"windsurf\" | \"zed\"\n >,\n );\n }\n\n return manualSurfaceStatus(name as Extract<SurfaceName, \"chatgpt\">);\n}\n\nexport function listSurfaceStatuses(): SurfaceStatus[] {\n return SURFACE_NAMES.map(getSurfaceStatus);\n}\n\nfunction resolveTargets<T extends string>(\n selection: SurfaceSelection<T>,\n allTargets: readonly T[],\n): T[] {\n const values = Array.isArray(selection) ? selection : [selection];\n\n if (values.includes(\"all\")) {\n return [...allTargets];\n }\n\n return [...new Set(values)] as T[];\n}\n\nexport function resolveSurfaceSelection(\n selection: SurfaceSelection<SurfaceName>,\n): SurfaceName[] {\n return resolveTargets(selection, SURFACE_NAMES);\n}\n\nexport function resolveMcpSurfaceSelection(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): Array<(typeof MCP_SURFACE_NAMES)[number]> {\n return resolveTargets(selection, MCP_SURFACE_NAMES);\n}\n\nasync function addAutomatedSurface(name: SurfaceName): Promise<SurfaceMutationResult> {\n const path = getSurfacePath(name);\n const openclaw = getOpenClawDependencyState();\n\n if (!path) {\n return {\n name,\n changed: false,\n message: `${name} has no writable config path on this platform.`,\n };\n }\n\n switch (name) {\n case \"claude\": {\n const previous = readTextIfExists(path);\n const next = patchClaudeMcpConfig(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: openclaw.detected\n ? \"OrgX is connected in Claude with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Claude.\",\n };\n }\n case \"cursor\": {\n if (!openclaw.detected || !openclaw.url) {\n return {\n name,\n changed: false,\n path,\n message: \"Cursor needs OpenClaw installed before OrgX can be connected locally.\",\n };\n }\n const previous = readTextIfExists(path);\n const next = patchCursorMcpConfig(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX is connected in Cursor through the local OpenClaw bridge.\",\n };\n }\n case \"codex\": {\n const previous = readTextIfExists(path);\n const next = patchCodexConfigToml(previous, openclaw.url);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: openclaw.detected\n ? \"OrgX is connected in Codex with the local OpenClaw bridge.\"\n : \"OrgX cloud MCP is connected in Codex.\",\n };\n }\n case \"openclaw\": {\n const previous = readTextIfExists(path);\n const auth = await resolveOrgxAuth();\n const next = patchOpenClawConfig(previous, auth ?? {});\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: auth\n ? \"OpenClaw is configured as the local OrgX bridge with the resolved OrgX auth.\"\n : \"OpenClaw is configured as the local OrgX bridge.\",\n };\n }\n case \"vscode\": {\n const previous = readTextIfExists(path);\n if (inspectVscodeMcpConfig(previous).hostedConfigured) {\n return { name, changed: false, path, message: \"OrgX cloud MCP is connected in VS Code.\" };\n }\n const next = patchVscodeMcpConfig(previous);\n writeTextFile(path, next);\n return { name, changed: true, path, message: \"OrgX cloud MCP is connected in VS Code.\" };\n }\n case \"windsurf\": {\n const previous = readTextIfExists(path);\n if (inspectWindsurfMcpConfig(previous).hostedConfigured) {\n return { name, changed: false, path, message: \"OrgX cloud MCP is connected in Windsurf.\" };\n }\n const next = patchWindsurfMcpConfig(previous);\n writeTextFile(path, next);\n return { name, changed: true, path, message: \"OrgX cloud MCP is connected in Windsurf.\" };\n }\n case \"zed\": {\n const previous = readTextIfExists(path);\n if (inspectZedMcpConfig(previous).hostedConfigured) {\n return { name, changed: false, path, message: \"OrgX cloud MCP is connected in Zed.\" };\n }\n const next = patchZedMcpConfig(previous);\n writeTextFile(path, next);\n return { name, changed: true, path, message: \"OrgX cloud MCP is connected in Zed.\" };\n }\n default:\n return {\n name,\n changed: false,\n message: `${name} is not automated yet.`,\n };\n }\n}\n\nfunction removeAutomatedSurface(name: SurfaceName): SurfaceMutationResult {\n const path = getSurfacePath(name);\n\n if (!path) {\n return {\n name,\n changed: false,\n message: `${name} has no writable config path on this platform.`,\n };\n }\n\n switch (name) {\n case \"claude\": {\n const previous = readTextIfExists(path);\n const next = removeClaudeMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Claude.\",\n };\n }\n case \"cursor\": {\n const previous = readTextIfExists(path);\n const next = removeCursorMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Cursor.\",\n };\n }\n case \"codex\": {\n const previous = readTextIfExists(path);\n const next = removeCodexConfigToml(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Codex.\",\n };\n }\n case \"openclaw\": {\n const previous = readTextIfExists(path);\n const next = removeOpenClawConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OpenClaw OrgX defaults were removed.\",\n };\n }\n case \"vscode\": {\n const previous = readTextIfExists(path);\n const next = removeVscodeMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from VS Code.\",\n };\n }\n case \"windsurf\": {\n const previous = readTextIfExists(path);\n const next = removeWindsurfMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Windsurf.\",\n };\n }\n case \"zed\": {\n const previous = readTextIfExists(path);\n const next = removeZedMcpConfig(previous);\n writeTextFile(path, next);\n return {\n name,\n changed: previous !== next,\n path,\n message: \"OrgX connection was removed from Zed.\",\n };\n }\n default:\n return {\n name,\n changed: false,\n message: `${name} is not automated yet.`,\n };\n }\n}\n\nexport async function addSurface(\n selection: SurfaceSelection<SurfaceName>,\n): Promise<SurfaceMutationResult[]> {\n const targets = resolveSurfaceSelection(selection);\n const results: SurfaceMutationResult[] = [];\n\n for (const surface of targets) {\n results.push(await addAutomatedSurface(surface));\n }\n\n return results;\n}\n\nexport function removeSurface(selection: SurfaceSelection<SurfaceName>): SurfaceMutationResult[] {\n const targets = resolveSurfaceSelection(selection);\n return targets.map((surface) => removeAutomatedSurface(surface));\n}\n\nexport async function addMcpSurface(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): Promise<SurfaceMutationResult[]> {\n const targets = resolveMcpSurfaceSelection(selection);\n const results: SurfaceMutationResult[] = [];\n\n for (const surface of targets) {\n results.push(await addAutomatedSurface(surface));\n }\n\n return results;\n}\n\nexport function removeMcpSurface(\n selection: SurfaceSelection<(typeof MCP_SURFACE_NAMES)[number]>,\n): SurfaceMutationResult[] {\n const targets = resolveMcpSurfaceSelection(selection);\n return targets.map((surface) => removeAutomatedSurface(surface));\n}\n\nexport async function setupDetectedSurfaces(): Promise<SurfaceMutationResult[]> {\n const targets = AUTOMATED_SURFACE_NAMES.filter((name) => getSurfaceStatus(name).detected);\n\n targets.sort((left, right) => {\n if (left === \"openclaw\") return -1;\n if (right === \"openclaw\") return 1;\n return 0;\n });\n\n const results: SurfaceMutationResult[] = [];\n\n for (const name of targets) {\n results.push(await addAutomatedSurface(name));\n }\n\n return results;\n}\n\nexport interface DoctorReport {\n surfaces: SurfaceStatus[];\n auth: OrgxAuthCheckResult;\n hostedMcp: HostedMcpHealthCheck;\n hostedMcpTool: HostedMcpToolCheck;\n npmRegistry: NpmRegistryCheck;\n workspace: WorkspaceConnectivityCheck;\n remote: SetupStatusResult;\n openclaw: OpenClawHealthCheck;\n}\n\nexport interface DoctorAssessmentIssue {\n level: \"error\" | \"warning\";\n title: string;\n suggestion: string;\n}\n\nexport interface DoctorAssessment {\n ok: boolean;\n issues: DoctorAssessmentIssue[];\n}\n\nfunction skippedOpenClawHealth(): OpenClawHealthCheck {\n return {\n ok: false,\n skipped: true,\n method: \"none\",\n error: \"OpenClaw support files were not detected; skipping gateway health check.\",\n details: [],\n };\n}\n\nexport async function runDoctor(): Promise<DoctorReport> {\n const surfaces = listSurfaceStatuses();\n const openclawSurface = surfaces.find((surface) => surface.name === \"openclaw\");\n const auth = await checkOrgxAuth();\n const hostedMcp = await checkHostedMcpHealth();\n const hostedMcpTool = await checkHostedMcpToolAccess();\n const npmRegistry = await checkNpmRegistryHealth();\n const workspace = await checkWorkspaceConnectivity();\n const remote = await fetchSetupStatus();\n const openclaw = openclawSurface?.detected\n ? await checkOpenClawHealth(openclawSurface.path)\n : skippedOpenClawHealth();\n return { surfaces, auth, hostedMcp, hostedMcpTool, npmRegistry, workspace, remote, openclaw };\n}\n\nexport function assessDoctorReport(report: DoctorReport): DoctorAssessment {\n const issues: DoctorAssessmentIssue[] = [];\n\n if (!report.hostedMcp.ok) {\n issues.push({\n level: \"error\",\n title: \"Hosted OrgX MCP is unreachable.\",\n suggestion:\n \"Retry later or verify https://mcp.useorgx.com/health. Hosted-only clients will stay broken until that endpoint recovers.\",\n });\n }\n\n if (\n report.hostedMcp.ok &&\n report.hostedMcpTool.configured &&\n !report.hostedMcpTool.ok &&\n !report.hostedMcpTool.skipped\n ) {\n issues.push({\n level: \"error\",\n title: `Hosted OrgX MCP tool verification failed (${report.hostedMcpTool.toolName}).`,\n suggestion:\n \"Re-run `wizard auth login` to refresh the per-user key, then retry `wizard doctor` to confirm the hosted MCP can initialize and execute tools.\",\n });\n }\n\n if (report.auth.configured && !report.auth.ok && !report.auth.skipped) {\n issues.push({\n level: \"error\",\n title: \"OrgX user auth could not be verified.\",\n suggestion:\n \"Run `wizard auth set-key <oxk_...>` again or correct the resolved ORGX_API_KEY / base URL before retrying.\",\n });\n }\n\n if (report.workspace.configured && !report.workspace.ok) {\n issues.push({\n level: \"error\",\n title: \"Current workspace lookup failed.\",\n suggestion:\n \"Verify the resolved OrgX base URL and that the authenticated user still has access to a workspace.\",\n });\n }\n\n if (!report.npmRegistry.reachable) {\n issues.push({\n level: \"warning\",\n title: \"npm registry is unreachable.\",\n suggestion:\n \"Check outbound network access to https://registry.npmjs.org before relying on npm-based installation flows.\",\n });\n } else if (!report.npmRegistry.published) {\n issues.push({\n level: \"warning\",\n title: `${report.npmRegistry.packageName} is not published on npm yet.`,\n suggestion:\n \"This is expected before launch. Publish the package in the release workstream before asking users to install from npm.\",\n });\n }\n\n if (!report.openclaw.skipped && !report.openclaw.ok) {\n issues.push({\n level: \"warning\",\n title: \"OpenClaw is installed but its local gateway health check failed.\",\n suggestion:\n \"Run `openclaw doctor` or `openclaw doctor --repair` before relying on local bridge clients like Cursor.\",\n });\n }\n\n if (!report.remote.skipped && !report.remote.ok) {\n issues.push({\n level: \"warning\",\n title: \"Remote setup status check failed.\",\n suggestion:\n \"If you expected the service-key check to pass, verify ORGX_SERVICE_KEY before trusting setup-status output.\",\n });\n }\n\n return {\n ok: !issues.some((issue) => issue.level === \"error\"),\n issues,\n };\n}\n","import { randomUUID } from \"node:crypto\";\n\nimport { ORGX_WIZARD_STATE_PATH } from \"../constants.js\";\nimport { parseJsonObject, readTextIfExists, writeJsonFile } from \"./fs.js\";\nimport { SURFACE_NAMES, type SurfaceName } from \"../surfaces/names.js\";\n\nexport interface WizardContinuityDefaults {\n executionMode?: \"cloud\" | \"local\";\n reviewSurface?: SurfaceName;\n workspaceId?: string;\n workspaceName?: string;\n}\n\nexport interface WizardDemoInitiativeRecord {\n createdAt: string;\n id: string;\n liveUrl: string;\n title: string;\n workspaceId?: string;\n workspaceName?: string;\n}\n\nexport interface WizardStateRecord {\n continuity?: WizardContinuityDefaults;\n installationId: string;\n demoInitiative?: WizardDemoInitiativeRecord;\n createdAt: string;\n updatedAt: string;\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction isSurfaceName(value: unknown): value is SurfaceName {\n return typeof value === \"string\" && SURFACE_NAMES.includes(value as SurfaceName);\n}\n\nfunction parseContinuityDefaults(value: unknown): WizardContinuityDefaults | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n const record = value as Record<string, unknown>;\n const parsed: WizardContinuityDefaults = {};\n\n if (record.executionMode === \"cloud\" || record.executionMode === \"local\") {\n parsed.executionMode = record.executionMode;\n }\n\n if (isSurfaceName(record.reviewSurface)) {\n parsed.reviewSurface = record.reviewSurface;\n }\n\n if (isNonEmptyString(record.workspaceId)) {\n parsed.workspaceId = record.workspaceId.trim();\n }\n\n if (isNonEmptyString(record.workspaceName)) {\n parsed.workspaceName = record.workspaceName.trim();\n }\n\n return Object.keys(parsed).length > 0 ? parsed : undefined;\n}\n\nfunction parseDemoInitiative(value: unknown): WizardDemoInitiativeRecord | undefined {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n\n const record = value as Record<string, unknown>;\n if (\n !isNonEmptyString(record.id) ||\n !isNonEmptyString(record.title) ||\n !isNonEmptyString(record.liveUrl) ||\n !isNonEmptyString(record.createdAt)\n ) {\n return undefined;\n }\n\n return {\n createdAt: record.createdAt.trim(),\n id: record.id.trim(),\n liveUrl: record.liveUrl.trim(),\n title: record.title.trim(),\n ...(isNonEmptyString(record.workspaceId)\n ? { workspaceId: record.workspaceId.trim() }\n : {}),\n ...(isNonEmptyString(record.workspaceName)\n ? { workspaceName: record.workspaceName.trim() }\n : {}),\n };\n}\n\nfunction createWizardState(now = new Date().toISOString()): WizardStateRecord {\n return {\n installationId: `wizard-${randomUUID()}`,\n createdAt: now,\n updatedAt: now,\n };\n}\n\nfunction sanitizeWizardStateRecord(record: WizardStateRecord): WizardStateRecord {\n const continuity = parseContinuityDefaults(record.continuity);\n const demoInitiative = parseDemoInitiative(record.demoInitiative);\n\n return {\n installationId: record.installationId.trim(),\n createdAt: record.createdAt.trim(),\n updatedAt: record.updatedAt.trim(),\n ...(continuity ? { continuity } : {}),\n ...(demoInitiative ? { demoInitiative } : {}),\n };\n}\n\nexport function readWizardState(\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord | null {\n const parsed = parseJsonObject(readTextIfExists(statePath));\n\n if (\n !isNonEmptyString(parsed.installationId) ||\n !isNonEmptyString(parsed.createdAt) ||\n !isNonEmptyString(parsed.updatedAt)\n ) {\n return null;\n }\n\n const state: WizardStateRecord = {\n installationId: parsed.installationId.trim(),\n createdAt: parsed.createdAt.trim(),\n updatedAt: parsed.updatedAt.trim(),\n };\n const continuity = parseContinuityDefaults(parsed.continuity);\n if (continuity !== undefined) state.continuity = continuity;\n const demoInitiative = parseDemoInitiative(parsed.demoInitiative);\n if (demoInitiative !== undefined) state.demoInitiative = demoInitiative;\n return state;\n}\n\nexport function writeWizardState(\n value: WizardStateRecord,\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord {\n const record = sanitizeWizardStateRecord(value);\n writeJsonFile(statePath, record, { mode: 0o600 });\n return record;\n}\n\nexport function updateWizardState(\n updater: (current: WizardStateRecord) => WizardStateRecord,\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): WizardStateRecord {\n const current = readWizardState(statePath) ?? createWizardState();\n const next = updater(current);\n const sanitized = sanitizeWizardStateRecord({\n ...next,\n installationId: next.installationId || current.installationId,\n createdAt: next.createdAt || current.createdAt,\n updatedAt: new Date().toISOString(),\n });\n writeJsonFile(statePath, sanitized, { mode: 0o600 });\n return sanitized;\n}\n\nexport function getOrCreateWizardInstallationId(\n statePath: string = ORGX_WIZARD_STATE_PATH,\n): string {\n const existing = readWizardState(statePath);\n if (existing) {\n return existing.installationId;\n }\n\n const record = createWizardState();\n writeWizardState(record, statePath);\n return record.installationId;\n}\n","import { listSurfaceStatuses, type SurfaceStatus } from \"../surfaces/registry.js\";\nimport type { SurfaceName } from \"../surfaces/names.js\";\nimport type { OrgxWorkspace } from \"./workspaces.js\";\nimport {\n updateWizardState,\n type WizardContinuityDefaults,\n type WizardStateRecord,\n} from \"./wizard-state.js\";\n\nconst REVIEW_SURFACE_ORDER: SurfaceName[] = [\n \"claude\",\n \"cursor\",\n \"codex\",\n \"vscode\",\n \"windsurf\",\n \"zed\",\n \"chatgpt\",\n];\n\nexport interface ContinuitySeed {\n executionMode?: \"cloud\" | \"local\" | null;\n statuses?: SurfaceStatus[];\n workspace?: Pick<OrgxWorkspace, \"id\" | \"name\"> | null;\n workspaceName?: string | null;\n}\n\nfunction selectReviewSurface(statuses: SurfaceStatus[]): SurfaceName | undefined {\n for (const name of REVIEW_SURFACE_ORDER) {\n const configured = statuses.find((status) => status.name === name && status.configured);\n if (configured) {\n return configured.name;\n }\n }\n\n for (const name of REVIEW_SURFACE_ORDER) {\n const detected = statuses.find((status) => status.name === name && status.detected);\n if (detected) {\n return detected.name;\n }\n }\n\n return undefined;\n}\n\nfunction inferExecutionMode(\n explicitMode: \"cloud\" | \"local\" | null | undefined,\n statuses: SurfaceStatus[],\n): \"cloud\" | \"local\" | undefined {\n if (explicitMode) {\n return explicitMode;\n }\n\n const openclaw = statuses.find((status) => status.name === \"openclaw\");\n if (openclaw?.configured || openclaw?.detected) {\n return \"local\";\n }\n\n const hostedSurface = statuses.find(\n (status) => status.name !== \"openclaw\" && (status.configured || status.detected),\n );\n\n return hostedSurface ? \"cloud\" : undefined;\n}\n\nexport function inferContinuityDefaults(seed: ContinuitySeed = {}): WizardContinuityDefaults {\n const statuses = seed.statuses ?? listSurfaceStatuses();\n const continuity: WizardContinuityDefaults = {};\n\n const reviewSurface = selectReviewSurface(statuses);\n if (reviewSurface) {\n continuity.reviewSurface = reviewSurface;\n }\n\n const executionMode = inferExecutionMode(seed.executionMode, statuses);\n if (executionMode) {\n continuity.executionMode = executionMode;\n }\n\n if (seed.workspace?.id) {\n continuity.workspaceId = seed.workspace.id;\n }\n\n const workspaceName = seed.workspace?.name ?? seed.workspaceName ?? undefined;\n if (workspaceName?.trim()) {\n continuity.workspaceName = workspaceName.trim();\n }\n\n return continuity;\n}\n\nfunction mergeContinuityDefaults(\n current: WizardContinuityDefaults | undefined,\n next: WizardContinuityDefaults,\n): WizardContinuityDefaults {\n return {\n ...(current ?? {}),\n ...next,\n };\n}\n\nexport function persistContinuityDefaults(\n seed: ContinuitySeed = {},\n statePath?: string,\n): WizardStateRecord {\n const next = inferContinuityDefaults(seed);\n\n return updateWizardState(\n (current) => ({\n ...current,\n continuity: mergeContinuityDefaults(current.continuity, next),\n }),\n statePath,\n );\n}\n","import { buildOrgxApiUrl, resolveOrgxAuth, type ResolveOrgxAuthOptions } from \"./auth.js\";\nimport { isRecord } from \"./fs.js\";\nimport type { OrgxWorkspace } from \"./workspaces.js\";\nimport {\n readWizardState,\n updateWizardState,\n type WizardDemoInitiativeRecord,\n} from \"./wizard-state.js\";\n\nconst FOUNDER_DEMO_INITIATIVE_TITLE = \"Founder Demo Initiative\";\nconst FOUNDER_DEMO_INITIATIVE_SUMMARY =\n \"Starter initiative created by @useorgx/wizard to validate workspace routing, live views, and the default OrgX skill pack.\";\n\nexport interface OrgxInitiative {\n id: string;\n summary?: string;\n title: string;\n}\n\nexport interface FounderDemoInitiativeResult {\n created: boolean;\n initiative: OrgxInitiative;\n liveUrl: string;\n}\n\ninterface InitiativeClientOptions extends ResolveOrgxAuthOptions {\n statePath?: string;\n}\n\nfunction parseResponseBody(text: string): unknown {\n if (!text) {\n return null;\n }\n\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction formatHttpError(status: number, body: unknown): string {\n if (typeof body === \"string\" && body.trim().length > 0) {\n return `HTTP ${status}: ${body}`;\n }\n\n if (isRecord(body) && typeof body.error === \"string\" && body.error.trim().length > 0) {\n return `HTTP ${status}: ${body.error}`;\n }\n\n return `HTTP ${status}`;\n}\n\nfunction parseInitiative(payload: unknown): OrgxInitiative {\n const entity = isRecord(payload) && isRecord(payload.data) ? payload.data : payload;\n if (!isRecord(entity)) {\n throw new Error(\"OrgX returned an unexpected initiative payload.\");\n }\n\n const id = typeof entity.id === \"string\" ? entity.id.trim() : \"\";\n const title = typeof entity.title === \"string\"\n ? entity.title.trim()\n : typeof entity.name === \"string\"\n ? entity.name.trim()\n : \"\";\n\n if (!id || !title) {\n throw new Error(\"OrgX returned an incomplete initiative payload.\");\n }\n\n return {\n id,\n title,\n ...(typeof entity.summary === \"string\" && entity.summary.trim().length > 0\n ? { summary: entity.summary.trim() }\n : {}),\n };\n}\n\nfunction toDemoInitiativeRecord(\n initiative: OrgxInitiative,\n liveUrl: string,\n workspace: Pick<OrgxWorkspace, \"id\" | \"name\">,\n): WizardDemoInitiativeRecord {\n return {\n createdAt: new Date().toISOString(),\n id: initiative.id,\n liveUrl,\n title: initiative.title,\n workspaceId: workspace.id,\n workspaceName: workspace.name,\n };\n}\n\nasync function requireOrgxAuth(options: InitiativeClientOptions = {}) {\n const auth = await resolveOrgxAuth(options);\n if (!auth) {\n throw new Error(\n \"No OrgX API key configured. Run `wizard auth login` or `wizard auth set-key <oxk_...>` first.\",\n );\n }\n\n return auth;\n}\n\nexport async function createInitiative(\n input: {\n summary?: string;\n title: string;\n workspaceId?: string;\n },\n options: InitiativeClientOptions = {},\n): Promise<OrgxInitiative> {\n const title = input.title.trim();\n if (!title) {\n throw new Error(\"Initiative title is required.\");\n }\n\n const auth = await requireOrgxAuth(options);\n const response = await fetch(buildOrgxApiUrl(\"/entities\", auth.baseUrl), {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${auth.apiKey}`,\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n type: \"initiative\",\n title,\n status: \"active\",\n ...(input.summary?.trim() ? { summary: input.summary.trim() } : {}),\n ...(input.workspaceId?.trim() ? { workspace_id: input.workspaceId.trim() } : {}),\n }),\n signal: AbortSignal.timeout(7_000),\n });\n\n const body = parseResponseBody(await response.text());\n if (!response.ok) {\n throw new Error(`Failed to create initiative. ${formatHttpError(response.status, body)}`);\n }\n\n return parseInitiative(body);\n}\n\nexport async function ensureFounderDemoInitiative(\n workspace: Pick<OrgxWorkspace, \"id\" | \"name\">,\n options: InitiativeClientOptions = {},\n): Promise<FounderDemoInitiativeResult> {\n const existingRecord = readWizardState(options.statePath)?.demoInitiative;\n\n if (existingRecord?.workspaceId === workspace.id) {\n return {\n created: false,\n initiative: {\n id: existingRecord.id,\n title: existingRecord.title,\n },\n liveUrl: existingRecord.liveUrl,\n };\n }\n\n const auth = await requireOrgxAuth(options);\n const initiative = await createInitiative(\n {\n title: FOUNDER_DEMO_INITIATIVE_TITLE,\n summary: FOUNDER_DEMO_INITIATIVE_SUMMARY,\n workspaceId: workspace.id,\n },\n options,\n );\n const liveUrl = `${auth.baseUrl.replace(/\\/+$/, \"\")}/live/${initiative.id}`;\n const record = toDemoInitiativeRecord(initiative, liveUrl, workspace);\n\n updateWizardState(\n (current) => ({\n ...current,\n demoInitiative: record,\n }),\n options.statePath,\n );\n\n return {\n created: true,\n initiative,\n liveUrl,\n };\n}\n","import { join } from \"node:path\";\n\nimport {\n CLAUDE_ORGX_SKILL_PATH,\n CLAUDE_SKILLS_DIR,\n CURSOR_ORGX_RULE_PATH,\n} from \"../constants.js\";\nimport { readTextIfExists, writeTextFile } from \"./fs.js\";\n\nexport const DEFAULT_ORGX_SKILL_PACKS = [\n \"morning-briefing\",\n \"initiative-kickoff\",\n \"bulk-create\",\n \"nightly-recap\",\n] as const;\n\n// Directory entries in the useorgx/skills repo root that are not skill packs.\nconst EXCLUDED_PACK_DIRS = new Set([\".github\", \"scripts\"]);\n\nconst ORGX_SKILLS_OWNER = \"useorgx\";\nconst ORGX_SKILLS_REPO = \"skills\";\nconst ORGX_SKILLS_REF = \"main\";\n\nexport interface ManagedFileWrite {\n label: string;\n path: string;\n changed: boolean;\n sourceUrl?: string;\n}\n\nexport interface InstalledSkillPack {\n name: string;\n files: ManagedFileWrite[];\n}\n\nexport interface SkillsInstallReport {\n writes: ManagedFileWrite[];\n packs: InstalledSkillPack[];\n}\n\nexport interface InstallOrgxSkillsOptions {\n skillNames?: readonly string[];\n claudeSkillsDir?: string;\n claudeOrgxSkillPath?: string;\n cursorRulePath?: string;\n fetchImpl?: typeof fetch;\n ref?: string;\n}\n\ninterface GithubDirectoryEntry {\n name: string;\n path: string;\n type: \"file\" | \"dir\";\n download_url: string | null;\n}\n\ninterface RemoteSkillFile {\n path: string;\n sourceUrl: string;\n}\n\nconst CURSOR_RULES_CONTENT = `# OrgX Rules\n\n- Prefer \\`workspace_id\\` on OrgX tool calls. \\`command_center_id\\` is a deprecated alias and should only be used for backwards compatibility. If both are present, they must match.\n- Treat \\`entity_action\\` with \\`force: true\\` as an escape hatch. It bypasses hierarchy and proof checks, so only use it when the user explicitly wants that behavior and say why.\n- Treat \\`scaffold_initiative continue_on_error\\` as best-effort creation. Use it only when partial scaffolds are acceptable, and follow up on any failed children.\n- Preserve \\`_context\\` when widget or app-rendering flows depend on client, conversation, session, or user metadata. Do not strip or rename it.\n- Prefer \\`list_entities\\` for pending approvals and state inspection before reaching for legacy aliases.\n- Keep hosted OrgX MCP calls distinct from local OpenClaw/plugin surfaces before mutating config or entity state.\n`;\n\nconst CLAUDE_ORGX_SKILL_CONTENT = `---\nname: orgx\ndescription: Use when working against the hosted OrgX MCP server for workspace-scoped planning, entity mutations, progress reporting, and decision handling.\nversion: 1.0.0\nuser-invocable: true\ntags:\n - orchestration\n - productivity\n - workspace\n---\n\n# OrgX Hosted MCP\n\nUse this skill when Claude is connected to the hosted OrgX MCP server at \\`https://mcp.useorgx.com/mcp\\`.\n\nThis skill is for the hosted OrgX tool surface, not the local OpenClaw plugin. Keep those surfaces distinct before mutating config or entity state.\n\n## Operating Rules\n\n- Prefer \\`workspace_id\\` on OrgX tools. \\`command_center_id\\` is a deprecated alias kept for compatibility.\n- Treat \\`entity_action\\` with \\`force: true\\` as a deliberate override only. It bypasses hierarchy and proof-chain checks.\n- Treat \\`scaffold_initiative continue_on_error\\` as best-effort scaffolding. Use it only when partial creation is acceptable and inspect failures afterward.\n- Preserve \\`_context\\` when widget or app rendering depends on client, conversation, session, or user metadata.\n- Prefer \\`list_entities\\` over older aliases when you need pending decisions, blockers, or entity state.\n\n## Suggested Skill Packs\n\nInstall and use these packs alongside this base skill:\n\n- \\`morning-briefing\\`\n- \\`initiative-kickoff\\`\n- \\`bulk-create\\`\n- \\`nightly-recap\\`\n\n## Suggested Workflow\n\n1. Inspect state with \\`mcp__orgx__list_entities\\`, \\`mcp__orgx__get_initiative_pulse\\`, or the relevant workspace-scoped read tool.\n2. Mutate state with the narrowest tool that matches the task.\n3. When you need a hard override, explain why before using \\`force: true\\`.\n4. When you scaffold, decide up front whether \\`continue_on_error\\` is acceptable.\n5. Carry \\`_context\\` through any widget-producing flows so the UI can render and resume correctly.\n`;\n\nfunction encodeRepoPath(value: string): string {\n return value\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n}\n\nfunction buildContentsUrl(path: string, ref: string): string {\n const encodedPath = encodeRepoPath(path);\n return `https://api.github.com/repos/${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}/contents/${encodedPath}?ref=${encodeURIComponent(ref)}`;\n}\n\nfunction resolveGitHubError(status: number, path: string): string {\n if (status === 404) {\n return `OrgX skill pack '${path}' was not found in ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`;\n }\n\n return `GitHub returned HTTP ${status} while loading '${path}' from ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`;\n}\n\nasync function readResponseText(response: Response): Promise<string> {\n return response.text();\n}\n\nasync function fetchDirectoryEntries(\n path: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<GithubDirectoryEntry[]> {\n const response = await fetchImpl(buildContentsUrl(path, ref), {\n headers: {\n Accept: \"application/vnd.github+json\",\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n throw new Error(resolveGitHubError(response.status, path));\n }\n\n const data = await response.json();\n if (!Array.isArray(data)) {\n throw new Error(`Expected '${path}' to be a directory in ${ORGX_SKILLS_OWNER}/${ORGX_SKILLS_REPO}.`);\n }\n\n return data\n .filter((entry): entry is GithubDirectoryEntry => {\n if (!entry || typeof entry !== \"object\") return false;\n return entry.type === \"file\" || entry.type === \"dir\";\n })\n .sort((left, right) => left.path.localeCompare(right.path));\n}\n\nasync function listRemoteSkillFiles(\n path: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<RemoteSkillFile[]> {\n const entries = await fetchDirectoryEntries(path, fetchImpl, ref);\n const files: RemoteSkillFile[] = [];\n\n for (const entry of entries) {\n if (entry.type === \"dir\") {\n files.push(...await listRemoteSkillFiles(entry.path, fetchImpl, ref));\n continue;\n }\n\n if (!entry.download_url) {\n throw new Error(`GitHub did not provide a download URL for '${entry.path}'.`);\n }\n\n files.push({\n path: entry.path,\n sourceUrl: entry.download_url,\n });\n }\n\n return files;\n}\n\nasync function fetchRemoteText(sourceUrl: string, fetchImpl: typeof fetch): Promise<string> {\n const response = await fetchImpl(sourceUrl, {\n headers: {\n Accept: \"text/plain\",\n },\n signal: AbortSignal.timeout(10_000),\n });\n\n if (!response.ok) {\n throw new Error(`GitHub returned HTTP ${response.status} while downloading ${sourceUrl}.`);\n }\n\n return readResponseText(response);\n}\n\nfunction writeManagedFile(\n path: string,\n content: string,\n label: string,\n sourceUrl?: string,\n): ManagedFileWrite {\n const existing = readTextIfExists(path);\n const changed = existing !== content;\n\n if (changed) {\n writeTextFile(path, content);\n }\n\n return {\n label,\n path,\n changed,\n ...(sourceUrl ? { sourceUrl } : {}),\n };\n}\n\nexport function resolveSkillPackNames(\n requested: readonly string[] = [],\n): string[] {\n if (requested.length === 0 || requested.includes(\"all\")) {\n return [...DEFAULT_ORGX_SKILL_PACKS];\n }\n\n const seen = new Set<string>();\n const normalized: string[] = [];\n\n for (const name of requested) {\n const next = name.trim();\n if (!next || seen.has(next)) {\n continue;\n }\n seen.add(next);\n normalized.push(next);\n }\n\n return normalized;\n}\n\nasync function fetchAvailablePackNames(\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<string[]> {\n const entries = await fetchDirectoryEntries(\"\", fetchImpl, ref);\n return entries\n .filter((e) => e.type === \"dir\" && !EXCLUDED_PACK_DIRS.has(e.name))\n .map((e) => e.name);\n}\n\nasync function installSkillPack(\n skillName: string,\n claudeSkillsDir: string,\n fetchImpl: typeof fetch,\n ref: string,\n): Promise<InstalledSkillPack> {\n const rootPath = skillName;\n const files = await listRemoteSkillFiles(rootPath, fetchImpl, ref);\n const writes: ManagedFileWrite[] = [];\n\n for (const file of files) {\n const content = await fetchRemoteText(file.sourceUrl, fetchImpl);\n const relativePath = file.path.slice(`${rootPath}/`.length);\n writes.push(\n writeManagedFile(\n join(claudeSkillsDir, skillName, relativePath),\n content,\n `${skillName}/${relativePath}`,\n file.sourceUrl,\n ),\n );\n }\n\n return {\n name: skillName,\n files: writes,\n };\n}\n\nexport async function installOrgxSkills(\n options: InstallOrgxSkillsOptions = {},\n): Promise<SkillsInstallReport> {\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n if (!fetchImpl) {\n throw new Error(\"Global fetch is unavailable in this runtime.\");\n }\n\n const ref = options.ref ?? ORGX_SKILLS_REF;\n const claudeSkillsDir = options.claudeSkillsDir ?? CLAUDE_SKILLS_DIR;\n const claudeOrgxSkillPath = options.claudeOrgxSkillPath ?? CLAUDE_ORGX_SKILL_PATH;\n const cursorRulePath = options.cursorRulePath ?? CURSOR_ORGX_RULE_PATH;\n const requestedNames = options.skillNames ?? [];\n let skillNames: string[];\n if (requestedNames.length === 0 || requestedNames.includes(\"all\")) {\n try {\n skillNames = await fetchAvailablePackNames(fetchImpl, ref);\n } catch {\n skillNames = [...DEFAULT_ORGX_SKILL_PACKS];\n }\n } else {\n skillNames = resolveSkillPackNames(requestedNames);\n }\n\n const writes: ManagedFileWrite[] = [\n writeManagedFile(cursorRulePath, CURSOR_RULES_CONTENT, \"cursor-rules\"),\n writeManagedFile(claudeOrgxSkillPath, CLAUDE_ORGX_SKILL_CONTENT, \"claude-orgx-skill\"),\n ];\n\n const packs: InstalledSkillPack[] = [];\n for (const skillName of skillNames) {\n packs.push(await installSkillPack(skillName, claudeSkillsDir, fetchImpl, ref));\n }\n\n return {\n writes,\n packs,\n };\n}\n","import type { CreateWorkspaceInput, OrgxWorkspace, SetDefaultWorkspaceInput } from \"./workspaces.js\";\n\nconst CREATE_WORKSPACE_VALUE = \"__create_workspace__\";\nconst SKIP_WORKSPACE_VALUE = \"__skip_workspace__\";\n\nexport interface WorkspaceSetupClient {\n createWorkspace(input: CreateWorkspaceInput): Promise<OrgxWorkspace>;\n getCurrentWorkspace(): Promise<OrgxWorkspace | null>;\n listWorkspaces(): Promise<OrgxWorkspace[]>;\n setDefaultWorkspace(\n input: SetDefaultWorkspaceInput,\n ): Promise<{ changed: boolean; workspace: OrgxWorkspace }>;\n}\n\nexport interface WorkspaceSelectOption {\n hint?: string;\n label: string;\n value: string;\n}\n\nexport interface WorkspaceSetupPrompts {\n cancel(message: string): void;\n isCancel(value: unknown): boolean;\n select(input: {\n initialValue?: string | undefined;\n message: string;\n options: WorkspaceSelectOption[];\n }): Promise<string | symbol>;\n text(input: {\n initialValue?: string | undefined;\n message: string;\n placeholder?: string;\n validate?: (value: string | undefined) => Error | string | undefined;\n }): Promise<string | symbol>;\n}\n\nexport interface WorkspaceSetupOptions {\n interactive: boolean;\n}\n\nexport interface WorkspaceSetupResult {\n created?: boolean;\n defaultChanged?: boolean;\n message: string;\n status: \"cancelled\" | \"skipped\" | \"unchanged\" | \"updated\";\n workspace?: OrgxWorkspace;\n}\n\nfunction trimDescription(value: string): string | undefined {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : undefined;\n}\n\nfunction cancelResult(\n prompts: WorkspaceSetupPrompts,\n message = \"Workspace bootstrap cancelled.\",\n): WorkspaceSetupResult {\n prompts.cancel(message);\n return {\n message,\n status: \"cancelled\",\n };\n}\n\nfunction buildWorkspaceLabel(workspace: OrgxWorkspace, currentWorkspaceId?: string): string {\n const suffixes: string[] = [];\n\n if (workspace.isDefault) {\n suffixes.push(\"default\");\n }\n\n if (workspace.id === currentWorkspaceId) {\n suffixes.push(\"current\");\n }\n\n if (suffixes.length === 0) {\n return workspace.name;\n }\n\n return `${workspace.name} (${suffixes.join(\", \")})`;\n}\n\nexport function buildWorkspaceSelectOptions(\n workspaces: OrgxWorkspace[],\n currentWorkspaceId?: string,\n): WorkspaceSelectOption[] {\n const options = workspaces.map((workspace) => ({\n value: workspace.id,\n label: buildWorkspaceLabel(workspace, currentWorkspaceId),\n ...(workspace.description ? { hint: workspace.description } : {}),\n }));\n\n options.push(\n {\n value: CREATE_WORKSPACE_VALUE,\n label: \"Create a new workspace\",\n hint: \"Name it here and set it as the default for this machine.\",\n },\n {\n value: SKIP_WORKSPACE_VALUE,\n label: \"Skip for now\",\n hint: \"Leave workspace selection unchanged and finish setup.\",\n },\n );\n\n return options;\n}\n\nasync function promptForWorkspaceName(prompts: WorkspaceSetupPrompts): Promise<string | symbol> {\n return prompts.text({\n message: \"Workspace name\",\n placeholder: \"Founders\",\n validate(value) {\n if (!value || value.trim().length === 0) {\n return \"Workspace name is required.\";\n }\n\n return undefined;\n },\n });\n}\n\nasync function promptForWorkspaceDescription(\n prompts: WorkspaceSetupPrompts,\n): Promise<string | symbol> {\n return prompts.text({\n message: \"Workspace description\",\n placeholder: \"Optional\",\n });\n}\n\nasync function createAndSelectWorkspace(\n client: WorkspaceSetupClient,\n prompts: WorkspaceSetupPrompts,\n): Promise<WorkspaceSetupResult> {\n const name = await promptForWorkspaceName(prompts);\n if (prompts.isCancel(name)) {\n return cancelResult(prompts);\n }\n if (typeof name !== \"string\") {\n return cancelResult(prompts);\n }\n\n const description = await promptForWorkspaceDescription(prompts);\n if (prompts.isCancel(description)) {\n return cancelResult(prompts);\n }\n if (typeof description !== \"string\") {\n return cancelResult(prompts);\n }\n\n const trimmedDescription = trimDescription(description);\n const createWorkspaceInput: CreateWorkspaceInput = trimmedDescription\n ? { name, description: trimmedDescription }\n : { name };\n\n const created = await client.createWorkspace(createWorkspaceInput);\n\n if (created.isDefault) {\n return {\n created: true,\n defaultChanged: false,\n message: `Created \"${created.name}\" and it is already the default OrgX workspace.`,\n status: \"updated\",\n workspace: created,\n };\n }\n\n const promoted = await client.setDefaultWorkspace({ id: created.id });\n return {\n created: true,\n defaultChanged: promoted.changed,\n message: `Created \"${promoted.workspace.name}\" and set it as the default OrgX workspace.`,\n status: \"updated\",\n workspace: promoted.workspace,\n };\n}\n\nexport async function runWorkspaceSetup(\n client: WorkspaceSetupClient,\n prompts: WorkspaceSetupPrompts,\n options: WorkspaceSetupOptions,\n): Promise<WorkspaceSetupResult> {\n if (!options.interactive) {\n return {\n message:\n \"Interactive workspace bootstrap skipped because this shell is not attached to a TTY.\",\n status: \"skipped\",\n };\n }\n\n const workspaces = await client.listWorkspaces();\n const currentWorkspace =\n workspaces.length > 0\n ? await client.getCurrentWorkspace().catch(() => workspaces.find((workspace) => workspace.isDefault) ?? null)\n : null;\n\n if (workspaces.length === 0) {\n const action = await prompts.select({\n message: \"No OrgX workspaces were found. What should setup do next?\",\n options: [\n {\n value: CREATE_WORKSPACE_VALUE,\n label: \"Create a new workspace\",\n hint: \"Create one now and set it as the default for this machine.\",\n },\n {\n value: SKIP_WORKSPACE_VALUE,\n label: \"Skip for now\",\n hint: \"Finish surface setup without creating a workspace.\",\n },\n ],\n initialValue: CREATE_WORKSPACE_VALUE,\n });\n\n if (prompts.isCancel(action)) {\n return cancelResult(prompts);\n }\n\n if (action === SKIP_WORKSPACE_VALUE) {\n return {\n message: \"Workspace bootstrap skipped.\",\n status: \"skipped\",\n };\n }\n\n return createAndSelectWorkspace(client, prompts);\n }\n\n const initialWorkspaceId =\n currentWorkspace?.id ??\n workspaces.find((workspace) => workspace.isDefault)?.id ??\n workspaces[0]?.id;\n const selected = await prompts.select({\n message: \"Choose the OrgX workspace this machine should use by default.\",\n options: buildWorkspaceSelectOptions(\n workspaces,\n currentWorkspace?.id ?? workspaces.find((workspace) => workspace.isDefault)?.id,\n ),\n ...(initialWorkspaceId ? { initialValue: initialWorkspaceId } : {}),\n });\n\n if (prompts.isCancel(selected)) {\n return cancelResult(prompts);\n }\n if (typeof selected !== \"string\") {\n return cancelResult(prompts);\n }\n\n if (selected === SKIP_WORKSPACE_VALUE) {\n return {\n message: \"Workspace bootstrap skipped.\",\n status: \"skipped\",\n ...(currentWorkspace ? { workspace: currentWorkspace } : {}),\n };\n }\n\n if (selected === CREATE_WORKSPACE_VALUE) {\n return createAndSelectWorkspace(client, prompts);\n }\n\n const chosenWorkspace = workspaces.find((workspace) => workspace.id === selected);\n if (!chosenWorkspace) {\n throw new Error(`Selected workspace ${selected} is no longer available.`);\n }\n\n if (chosenWorkspace.isDefault) {\n return {\n defaultChanged: false,\n message: `\"${chosenWorkspace.name}\" is already the default OrgX workspace.`,\n status: \"unchanged\",\n workspace: chosenWorkspace,\n };\n }\n\n const promoted = await client.setDefaultWorkspace({ id: chosenWorkspace.id });\n return {\n defaultChanged: promoted.changed,\n message: `Set \"${promoted.workspace.name}\" as the default OrgX workspace.`,\n status: promoted.changed ? \"updated\" : \"unchanged\",\n workspace: promoted.workspace,\n };\n}\n","import {\n ensureFounderDemoInitiative,\n type FounderDemoInitiativeResult,\n} from \"./initiatives.js\";\nimport { persistContinuityDefaults, type ContinuitySeed } from \"./continuity.js\";\nimport {\n DEFAULT_ORGX_SKILL_PACKS,\n installOrgxSkills,\n type SkillsInstallReport,\n} from \"./skills.js\";\nimport {\n runWorkspaceSetup,\n type WorkspaceSetupOptions,\n type WorkspaceSetupPrompts,\n type WorkspaceSetupResult,\n} from \"./setup-workspace.js\";\nimport { listSurfaceStatuses, setupDetectedSurfaces, type SurfaceMutationResult } from \"../surfaces/registry.js\";\nimport {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n type OrgxWorkspace,\n} from \"./workspaces.js\";\nimport type { WizardStateRecord } from \"./wizard-state.js\";\n\nexport interface FounderPresetResult {\n continuity: WizardStateRecord;\n demoInitiative?: FounderDemoInitiativeResult;\n skillReport: SkillsInstallReport;\n surfaceResults: SurfaceMutationResult[];\n workspace: OrgxWorkspace | null;\n workspaceSetup?: WorkspaceSetupResult;\n}\n\nexport async function runFounderPreset(\n prompts: WorkspaceSetupPrompts,\n options: WorkspaceSetupOptions,\n): Promise<FounderPresetResult | WorkspaceSetupResult> {\n const surfaceResults = await setupDetectedSurfaces();\n const skillReport = await installOrgxSkills({\n skillNames: [...DEFAULT_ORGX_SKILL_PACKS],\n });\n\n let workspaceSetup: WorkspaceSetupResult | undefined;\n let workspace = await getCurrentWorkspace().catch(() => null);\n\n if (workspace || options.interactive) {\n workspaceSetup = await runWorkspaceSetup(\n {\n createWorkspace,\n getCurrentWorkspace,\n listWorkspaces,\n setDefaultWorkspace,\n },\n prompts,\n options,\n );\n\n if (workspaceSetup.status === \"cancelled\") {\n return workspaceSetup;\n }\n\n workspace = workspaceSetup.workspace ?? workspace ?? await getCurrentWorkspace().catch(() => null);\n }\n\n const continuity = persistContinuityDefaults({\n statuses: listSurfaceStatuses(),\n workspace,\n });\n\n let demoInitiative: FounderDemoInitiativeResult | undefined;\n if (workspace) {\n demoInitiative = await ensureFounderDemoInitiative(workspace);\n }\n\n return {\n continuity,\n ...(demoInitiative ? { demoInitiative } : {}),\n skillReport,\n surfaceResults,\n workspace,\n ...(workspaceSetup ? { workspaceSetup } : {}),\n };\n}\n","import type { SurfaceMutationResult } from \"../surfaces/registry.js\";\n\nexport type MutationSummary = {\n name: string;\n state: \"updated\" | \"unchanged\";\n message: string;\n};\n\nexport function summarizeMutationResults(\n results: SurfaceMutationResult[],\n): MutationSummary[] {\n return results.map((result) => ({\n name: result.name,\n state: result.changed ? \"updated\" : \"unchanged\",\n message: result.message,\n }));\n}\n","import ora, { type Ora } from \"ora\";\nimport pc from \"picocolors\";\n\nconst frames = [\"[ ]\", \"[= ]\", \"[== ]\", \"[=== ]\", \"[ ===]\", \"[ ==]\", \"[ =]\"];\n\nexport function createOrgxSpinner(text: string): Ora {\n return ora({\n text: pc.cyan(text),\n spinner: {\n interval: 90,\n frames,\n },\n });\n}\n\n"],"mappings":";;;AAAA,YAAY,WAAW;AACvB,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,OAAOA,SAAQ;;;ACHf,OAAO,QAAQ;AAER,SAAS,eAAuB;AACrC,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,SAAO,MAAM,IAAI,CAAC,SAAS,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI;AACrD;;;ACZA,SAAS,eAAe;AACxB,SAAS,YAAY;AAEd,IAAM,sBAAsB;AAC5B,IAAM,qBAAqB;AAC3B,IAAM,sBAAsB;AAC5B,IAAM,6BAA6B;AACnC,IAAM,+BAA+B;AACrC,IAAM,wBAAwB;AAC9B,IAAM,gCAAgC;AACtC,IAAM,wBACX,QAAQ,IAAI,eAAe,KAAK,KAAK;AAEvC,IAAM,OAAO,QAAQ;AACrB,IAAM,UAAU,QAAQ,IAAI,SAAS,KAAK;AAC1C,IAAM,gBAAgB,QAAQ,IAAI,cAAc,KAAK;AACrD,IAAM,kBACJ,QAAQ,IAAI,iBAAiB,KAAK,KAAK,KAAK,MAAM,SAAS;AACtD,IAAM,0BACX,QAAQ,IAAI,yBAAyB,KAAK,KAC1C,KAAK,iBAAiB,WAAW,QAAQ;AACpC,IAAM,wBAAwB,KAAK,yBAAyB,WAAW;AACvE,IAAM,yBAAyB,KAAK,yBAAyB,YAAY;AACzE,IAAM,6BAA6B;AACnC,IAAM,6BAA6B;AAE1C,SAAS,wBAAwB,SAAyB;AACxD,QAAM,aAAa,QAAQ,QAAQ,QAAQ,EAAE;AAC7C,MAAI,cAAc,KAAK,UAAU,GAAG;AAClC,WAAO;AAAA,EACT;AACA,SAAO,GAAG,UAAU;AACtB;AAEA,IAAM,oBAAoB,wBAAwB,qBAAqB;AAChE,IAAM,wBAAwB,GAAG,iBAAiB;AAClD,IAAM,uBAAuB,GAAG,iBAAiB;AACjD,IAAM,uBAAuB,GAAG,iBAAiB;AAExD,SAAS,YAAY,OAA4C;AAC/D,SAAO,CAAC,GAAG,IAAI,IAAI,MAAM,OAAO,CAAC,SAAyB,QAAQ,IAAI,CAAC,CAAC,CAAC;AAC3E;AAEO,IAAM,aAAa,KAAK,MAAM,SAAS;AACvC,IAAM,aAAa,KAAK,MAAM,SAAS;AACvC,IAAM,YAAY,KAAK,MAAM,QAAQ;AACrC,IAAM,eAAe,KAAK,MAAM,WAAW;AAC3C,IAAM,oBAAoB,KAAK,YAAY,QAAQ;AACnD,IAAM,wBAAwB,KAAK,mBAAmB,MAAM;AAC5D,IAAM,yBAAyB,KAAK,uBAAuB,UAAU;AACrE,IAAM,mBAAmB,KAAK,YAAY,OAAO;AACjD,IAAM,wBAAwB,KAAK,kBAAkB,SAAS;AAE9D,IAAM,mBAAmB,YAAY,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC;AACnE,IAAM,mBAAmB,YAAY,CAAC,KAAK,YAAY,UAAU,CAAC,CAAC;AACnE,IAAM,qBAAqB,YAAY,CAAC,KAAK,WAAW,aAAa,CAAC,CAAC;AACvE,IAAM,wBAAwB,YAAY;AAAA,EAC/C,KAAK,cAAc,eAAe;AACpC,CAAC;AAEM,IAAM,kBAAkB,iBAAiB,CAAC;AAC1C,IAAM,kBAAkB,iBAAiB,CAAC;AAC1C,IAAM,oBAAoB,mBAAmB,CAAC;AAC9C,IAAM,uBAAuB,sBAAsB,CAAC;AAEpD,IAAM,uBAAuB,YAAY,CAAC,UAAU,CAAC;AACrD,IAAM,uBAAuB,YAAY,CAAC,UAAU,CAAC;AACrD,IAAM,sBAAsB,YAAY,CAAC,SAAS,CAAC;AACnD,IAAM,yBAAyB,YAAY,CAAC,YAAY,CAAC;AAEzD,IAAM,mBAAmB,YAAY;AAAA,EAC1C,KAAK,MAAM,WAAW,uBAAuB,QAAQ,QAAQ,UAAU;AAAA,EACvE,KAAK,iBAAiB,QAAQ,QAAQ,UAAU;AAAA,EAChD,UAAU,KAAK,SAAS,QAAQ,QAAQ,UAAU,IAAI;AACxD,CAAC;AACM,IAAM,uBAAuB,YAAY;AAAA,EAC9C,KAAK,MAAM,WAAW,uBAAuB,QAAQ,MAAM;AAAA,EAC3D,KAAK,iBAAiB,QAAQ,MAAM;AAAA,EACpC,UAAU,KAAK,SAAS,QAAQ,MAAM,IAAI;AAAA,EAC1C,gBAAgB,KAAK,eAAe,YAAY,mBAAmB,IAAI;AACzE,CAAC;AAEM,IAAM,qBAAqB,YAAY;AAAA,EAC5C,KAAK,MAAM,YAAY,YAAY,iBAAiB;AACtD,CAAC;AACM,IAAM,yBAAyB,YAAY;AAAA,EAChD,KAAK,MAAM,YAAY,UAAU;AAAA,EACjC,gBAAgB,KAAK,eAAe,YAAY,UAAU,IAAI;AAChE,CAAC;AAEM,IAAM,qBAAqB,YAAY;AAAA,EAC5C,KAAK,MAAM,WAAW,uBAAuB,OAAO,eAAe;AAAA,EACnE,KAAK,iBAAiB,OAAO,eAAe;AAAA,EAC5C,UAAU,KAAK,SAAS,OAAO,eAAe,IAAI;AACpD,CAAC;AACM,IAAM,oBAAoB,YAAY;AAAA,EAC3C,KAAK,MAAM,WAAW,uBAAuB,KAAK;AAAA,EAClD,KAAK,iBAAiB,KAAK;AAAA,EAC3B,UAAU,KAAK,SAAS,KAAK,IAAI;AAAA,EACjC,gBAAgB,KAAK,eAAe,YAAY,KAAK,IAAI;AAC3D,CAAC;AAEM,IAAM,oBAAoB,YAAY;AAAA,EAC3C,KAAK,MAAM,WAAW,uBAAuB,QAAQ;AAAA,EACrD,KAAK,MAAM,WAAW,uBAAuB,iBAAiB;AAAA,EAC9D,KAAK,iBAAiB,QAAQ;AAAA,EAC9B,KAAK,iBAAiB,QAAQ;AAAA,EAC9B,UAAU,KAAK,SAAS,QAAQ,IAAI;AAAA,EACpC,gBAAgB,KAAK,eAAe,QAAQ,IAAI;AAClD,CAAC;;;AC7GD,SAAS,iBAAiB;;;ACA1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AAMjB,SAAS,iBAAiB,MAA6B;AAC5D,MAAI,CAAC,WAAW,IAAI,EAAG,QAAO;AAE9B,MAAI;AACF,QAAI,CAAC,SAAS,IAAI,EAAE,OAAO,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,WAAO,aAAa,MAAM,MAAM;AAAA,EAClC,SAAS,OAAO;AACd,UAAM,OAAO,OAAO,UAAU,YAAY,SAAS,UAAU,QACzD,OAAO,MAAM,IAAI,IACjB;AAEJ,QAAI,SAAS,YAAY,SAAS,aAAa,SAAS,UAAU;AAChE,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,EACR;AACF;AAEO,SAAS,cACd,MACA,SACA,UAA6B,CAAC,GACxB;AACN,YAAU,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAC5C,gBAAc,MAAM,SAAS;AAAA,IAC3B,UAAU;AAAA,IACV,GAAI,QAAQ,SAAS,SAAY,CAAC,IAAI,EAAE,MAAM,QAAQ,KAAK;AAAA,EAC7D,CAAC;AAED,MAAI,QAAQ,SAAS,QAAW;AAC9B,cAAU,MAAM,QAAQ,IAAI;AAAA,EAC9B;AACF;AAEO,SAAS,cACd,MACA,OACA,UAA6B,CAAC,GACxB;AACN,gBAAc,MAAM,GAAG,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,GAAM,OAAO;AACpE;AAEO,SAAS,mBAAmB,MAAuB;AACxD,MAAI,CAAC,WAAW,IAAI,EAAG,QAAO;AAE9B,MAAI;AACF,QAAI,CAAC,SAAS,IAAI,EAAE,OAAO,GAAG;AAC5B,aAAO;AAAA,IACT;AAEA,eAAW,IAAI;AACf,WAAO;AAAA,EACT,SAAS,OAAO;AACd,UAAM,OAAO,OAAO,UAAU,YAAY,SAAS,UAAU,QACzD,OAAO,MAAM,IAAI,IACjB;AAEJ,QAAI,SAAS,YAAY,SAAS,aAAa,SAAS,UAAU;AAChE,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,EACR;AACF;AAEO,SAAS,SAAS,OAAkD;AACzE,SAAO,QAAQ,SAAS,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,CAAC;AAC5E;AAEO,SAAS,gBAAgB,OAA+C;AAC7E,MAAI,CAAC,MAAO,QAAO,CAAC;AAEpB,MAAI;AACF,UAAM,SAAS,KAAK,MAAM,KAAK;AAC/B,WAAO,SAAS,MAAM,IAAI,SAAS,CAAC;AAAA,EACtC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEO,SAAS,WACd,OACA,WAAoC,CAAC,GACZ;AACzB,SAAO,SAAS,KAAK,IAAI,QAAQ;AACnC;;;AC7EA,SAAS,oBAAoB,OAAyB;AACpD,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,KAAK,GAAG;AAChD,QAAI,CAAC,SAAS,KAAK,EAAG;AACtB,wBAAoB,KAAK;AACzB,QAAI,OAAO,KAAK,KAAK,EAAE,WAAW,GAAG;AACnC,aAAO,MAAM,GAAG;AAAA,IAClB;AAAA,EACF;AACF;AAEO,SAAS,wBAAwB,KAAsB;AAC5D,QAAM,cAAc,CAAC,UACnB,OAAO,SAAS,KAAK,KAAK,SAAS,KAAK,SAAS;AAEnD,QAAM,OAAO,SAAS,GAAG,IAAI,MAAM,CAAC;AACpC,QAAM,UAAU,WAAW,KAAK,OAAO;AACvC,QAAM,OAAO,QAAQ;AAErB,MAAI,OAAO,SAAS,YAAY,YAAY,IAAI,GAAG;AACjD,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAEA,MAAI,OAAO,SAAS,UAAU;AAC5B,UAAM,SAAS,OAAO,SAAS,MAAM,EAAE;AACvC,QAAI,YAAY,MAAM,GAAG;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,KAAsB;AACrD,SAAO,oBAAoB,wBAAwB,GAAG,CAAC;AACzD;AAEA,SAAS,iBAAiB,SAAiD;AACzE,MAAI,SAAS,QAAQ,iBAAiB,CAAC,GAAG;AACxC,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,QAAQ,IAAI,GAAG;AAC1B,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEO,SAAS,iBAAiB,OAA0C;AACzE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,YAAY,SAAS,QAAQ,iBAAiB,CAAC,IACjD,oBACA,SAAS,QAAQ,IAAI,IACnB,SACA;AACN,QAAM,QAAQ,YAAY,WAAW,QAAQ,SAAS,CAAC,IAAI,CAAC;AAC5D,QAAM,SAAS,WAAW,MAAM,MAAM;AAEtC,SAAO;AAAA,IACL,QAAQ,OAAO,OAAO,WAAW,WAAW,OAAO,OAAO,KAAK,IAAI;AAAA,IACnE,SACE,OAAO,OAAO,YAAY,YAAY,OAAO,QAAQ,KAAK,EAAE,SAAS,IACjE,OAAO,QAAQ,KAAK,IACpB;AAAA,IACN;AAAA,IACA,SAAS,MAAM,YAAY;AAAA,EAC7B;AACF;AAEO,SAAS,oBACd,OACA,OAAkC,CAAC,GAC3B;AACR,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,YAAY,iBAAiB,OAAO;AAC1C,QAAM,QAAQ,WAAW,QAAQ,SAAS,CAAC;AAC3C,QAAM,SAAS,WAAW,MAAM,MAAM;AACtC,QAAM,SACJ,OAAO,KAAK,WAAW,YAAY,KAAK,OAAO,KAAK,EAAE,SAAS,IAC3D,KAAK,OAAO,KAAK,IACjB,OAAO,OAAO,WAAW,YAAY,OAAO,OAAO,KAAK,EAAE,SAAS,IACjE,OAAO,OAAO,KAAK,IACnB;AACR,QAAM,UACJ,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,KAAK,EAAE,SAAS,IAC7D,KAAK,QAAQ,KAAK,IAClB,OAAO,OAAO,YAAY,YAAY,OAAO,QAAQ,KAAK,EAAE,SAAS,IACnE,OAAO,QAAQ,KAAK,IACpB;AAER,UAAQ,SAAS,IAAI;AAAA,IACnB,GAAG;AAAA,IACH,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,GAAG;AAAA,MACH,GAAI,SAAS,EAAE,OAAO,IAAI,CAAC;AAAA,MAC3B;AAAA,MACA,kBACE,OAAO,OAAO,qBAAqB,YAC/B,OAAO,mBACP;AAAA,MACN,gCACE,OAAO,OAAO,mCAAmC,YAC7C,OAAO,iCACP;AAAA,MACN,kCACE,OAAO,OAAO,qCAAqC,YAC/C,OAAO,mCACP;AAAA,IACR;AAAA,EACF;AAEA,UAAQ,UAAU;AAClB,UAAQ,UAAU;AAElB,SAAO,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAC5C;AAEO,SAAS,qBAAqB,OAA8B;AACjE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,UAAU,WAAW,QAAQ,OAAO;AAE1C,aAAW,OAAO,CAAC,mBAAmB,MAAM,GAAG;AAC7C,UAAM,QAAQ,WAAW,QAAQ,GAAG,CAAC;AACrC,QAAI,CAAC,OAAO,KAAK,KAAK,EAAE,OAAQ;AAChC,UAAM,SAAS,WAAW,MAAM,MAAM;AACtC,WAAO,OAAO;AACd,WAAO,OAAO;AACd,WAAO,OAAO;AACd,WAAO,OAAO;AACd,QAAI,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC,YAAM,SAAS;AAAA,IACjB,OAAO;AACL,aAAO,MAAM;AAAA,IACf;AACA,YAAQ,GAAG,IAAI;AAAA,EACjB;AAEA,UAAQ,UAAU;AAClB,UAAQ,UAAU;AAClB,sBAAoB,OAAO;AAE3B,SAAO,GAAG,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAAA;AAC5C;AAEO,SAAS,sBAAsB,OAA0C;AAC9E,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,UAAU,WAAW,QAAQ,OAAO;AAC1C,QAAM,WAAW,WAAW,QAAQ,QAAQ;AAC5C,QAAM,YAAY,SAAS,QAAQ,iBAAiB,CAAC,IACjD,oBACA,SAAS,QAAQ,IAAI,IACnB,SACA;AACN,QAAM,QAAQ,YAAY,WAAW,QAAQ,SAAS,CAAC,IAAI,CAAC;AAC5D,QAAM,SAAS,WAAW,MAAM,MAAM;AACtC,QAAM,YACJ,cAAc,QACd,SAAS,SAAS,iBAAiB,CAAC,KACpC,SAAS,SAAS,IAAI;AACxB,QAAM,aACJ,aACA,MAAM,YAAY,SACjB,OAAO,OAAO,YAAY,YACzB,OAAO,OAAO,mCAAmC,aACjD,OAAO,OAAO,qCAAqC;AAEvD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,eAAe,aAAa,SAAS;AAAA,MACrC,YAAY,MAAM,YAAY,OAAO,QAAQ,IAAI;AAAA,MACjD,iBAAiB,wBAAwB,OAAO,CAAC;AAAA,IACnD;AAAA,EACF;AACF;;;ACxKA,SAAS,iBAAiB,OAAiC;AACzD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAC5D;AAEO,SAAS,iBAAiB,QAAwB;AACvD,SAAO,OAAO,KAAK,EAAE,MAAM,GAAG,EAAE;AAClC;AAEA,SAAS,4BAA4B,KAAmD;AACtF,QAAM,SAAS,gBAAgB,GAAG;AAElC,MACE,CAAC,iBAAiB,OAAO,SAAS,KAClC,CAAC,iBAAiB,OAAO,OAAO,KAChC,CAAC,iBAAiB,OAAO,UAAU,GACnC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,OAAO,YAAY,WAAW,WAAW;AAEzD,SAAO;AAAA,IACL,SAAS,OAAO,QAAQ,KAAK;AAAA,IAC7B,GAAI,iBAAiB,OAAO,MAAM,IAAI,EAAE,QAAQ,OAAO,OAAO,KAAK,EAAE,IAAI,CAAC;AAAA,IAC1E,WAAW,OAAO,UAAU,KAAK;AAAA,IACjC;AAAA,IACA,YAAY,OAAO,WAAW,KAAK;AAAA,EACrC;AACF;AAEA,eAAe,yBAA4D;AACzE,MAAI,QAAQ,IAAI,+BAA+B,KAAK;AAClD,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,OAAO,QAAQ;AACtC,UAAM,YACJ,aAAa,YAAY,SAAS,UAAU,SAAS,UAAU;AAGjE,QACE,OAAO,UAAU,gBAAgB,cACjC,OAAO,UAAU,gBAAgB,cACjC,OAAO,UAAU,mBAAmB,YACpC;AACA,aAAO;AAAA,IACT;AAAA,EACF,QAAQ;AACN,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAEA,eAAe,mBACb,SACmC;AACnC,MAAI,QAAQ,gBAAgB,QAAW;AACrC,WAAO,QAAQ;AAAA,EACjB;AAEA,SAAO,uBAAuB;AAChC;AAEA,SAAS,kBACP,OACwB;AACxB,SAAO;AAAA,IACL,GAAI,MAAM,YAAY,SAAS,EAAE,QAAQ,MAAM,OAAO,IAAI,CAAC;AAAA,IAC3D,SAAS,MAAM;AAAA,IACf,WAAW,MAAM;AAAA,IACjB,SAAS,MAAM;AAAA,IACf,YAAY,MAAM;AAAA,EACpB;AACF;AAEA,eAAsB,eACpB,WAAmB,uBACnB,UAAkC,CAAC,GACD;AAClC,QAAM,SAAS,4BAA4B,iBAAiB,QAAQ,CAAC;AACrE,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,EACT;AAEA,QAAM,iBACJ,OAAO,YAAY,UAAU,iBAAiB,OAAO,MAAM,IACvD,OAAO,OAAO,KAAK,IACnB;AAEN,MAAI,gBAAgB;AAClB,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,SAAS,OAAO;AAAA,MAChB,WAAW,OAAO;AAAA,MAClB,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,YAAY,OAAO;AAAA,IACrB;AAAA,EACF;AAEA,MAAI,OAAO,YAAY,UAAU;AAC/B,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,MAAM,mBAAmB,OAAO;AACpD,MAAI,CAAC,aAAa;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,MAAM,YAAY;AAAA,IAC/B;AAAA,IACA;AAAA,EACF;AAEA,MAAI,CAAC,iBAAiB,MAAM,GAAG;AAC7B,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK;AAAA,IACpB,SAAS,OAAO;AAAA,IAChB,WAAW,OAAO;AAAA,IAClB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,OAAO;AAAA,EACrB;AACF;AAEA,eAAsB,gBACpB,OAMA,WAAmB,uBACnB,UAAkC,CAAC,GACR;AAC3B,QAAM,cAAc,QAAQ,wBAAwB,QAChD,OACA,MAAM,mBAAmB,OAAO;AAEpC,QAAM,SAA2B;AAAA,IAC/B,QAAQ,MAAM,OAAO,KAAK;AAAA,IAC1B,WAAW,MAAM,WAAW,KAAK,KAAK,iBAAiB,MAAM,MAAM;AAAA,IACnE,SAAS,MAAM,QAAQ,KAAK;AAAA,IAC5B,QAAQ;AAAA,IACR,SAAS,cAAc,WAAW;AAAA,IAClC,YAAY,MAAM,WAAW,KAAK;AAAA,EACpC;AAEA,MAAI,aAAa;AACf,UAAM,YAAY;AAAA,MAChB;AAAA,MACA;AAAA,MACA,OAAO;AAAA,IACT;AAAA,EACF;AAEA,gBAAc,UAAU,kBAAkB,MAAM,GAAG,EAAE,MAAM,IAAM,CAAC;AAClE,SAAO;AACT;AAEA,eAAsB,gBACpB,WAAmB,uBACnB,UAAkC,CAAC,GACjB;AAClB,QAAM,cAAc,MAAM,mBAAmB,OAAO;AACpD,QAAM,gBAAgB,cAClB,MAAM,YAAY;AAAA,IAChB;AAAA,IACA;AAAA,EACF,IACA;AACJ,QAAM,cAAc,mBAAmB,QAAQ;AAC/C,SAAO,iBAAiB;AAC1B;;;ACjLA,SAAS,cAAc,OAAuB;AAC5C,SAAO,MAAM,KAAK,EAAE,YAAY,EAAE,QAAQ,YAAY,EAAE;AAC1D;AAEA,SAAS,mBAAmBC,WAA2B;AACrD,QAAM,aAAa,cAAcA,SAAQ;AACzC,SAAO,eAAe,eAAe,eAAe,eAAe,eAAe;AACpF;AAEO,SAAS,qBAAqB,KAAsB;AACzD,QAAM,YAAY,KAAK,KAAK,KAAK;AAEjC,MAAI;AACF,UAAM,SAAS,IAAI,IAAI,SAAS;AAChC,QAAI,OAAO,aAAa,YAAY,OAAO,aAAa,SAAS;AAC/D,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,YAAY,OAAO,UAAU;AACtC,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,aAAa,WAAW,CAAC,mBAAmB,OAAO,QAAQ,GAAG;AACvE,aAAO;AAAA,IACT;AAEA,WAAO,SAAS;AAChB,WAAO,OAAO;AACd,WAAO,WAAW,OAAO,SAAS,QAAQ,aAAa,EAAE,EAAE,QAAQ,QAAQ,EAAE;AAC7E,WAAO,OAAO,SAAS,EAAE,QAAQ,QAAQ,EAAE;AAAA,EAC7C,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAEO,SAAS,gBAAgB,MAAc,SAA0B;AACtE,QAAM,iBAAiB,qBAAqB,OAAO,EAAE,QAAQ,QAAQ,EAAE;AACvE,QAAM,UAAU,eAAe,SAAS,MAAM,IAAI,iBAAiB,GAAG,cAAc;AACpF,QAAM,iBAAiB,KAAK,WAAW,GAAG,IAAI,OAAO,IAAI,IAAI;AAC7D,SAAO,GAAG,OAAO,GAAG,cAAc;AACpC;AAEA,SAAS,oBAAoB,SAAiB,YAA6B;AACzE,SAAO,qBAAqB,YAAY,KAAK,KAAK,OAAO;AAC3D;AAEA,SAAS,kBACP,QACA,SACA,QACA,SAAwD,CAAC,GACvC;AAClB,SAAO;AAAA,IACL,QAAQ,OAAO,KAAK;AAAA,IACpB,WAAW,iBAAiB,MAAM;AAAA,IAClC;AAAA,IACA;AAAA,IACA,GAAI,OAAO,OAAO,EAAE,MAAM,OAAO,KAAK,IAAI,CAAC;AAAA,IAC3C,GAAI,OAAO,aAAa,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;AAAA,EAC/D;AACF;AAEA,eAAsB,gBACpB,UAAkC,CAAC,GACD;AAClC,QAAM,YAAY,QAAQ,IAAI,cAAc,KAAK;AACjD,QAAM,aAAa,QAAQ,IAAI,eAAe,KAAK;AACnD,MAAI,WAAW;AACb,WAAO;AAAA,MACL;AAAA,MACA,oBAAoB,uBAAuB,UAAU;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,WAAW,QAAQ,YAAY;AACrC,QAAM,SAAS,MAAM,eAAe,QAAQ;AAC5C,MAAI,QAAQ;AACV,WAAO;AAAA,MACL,OAAO;AAAA,MACP,oBAAoB,OAAO,SAAS,UAAU;AAAA,MAC9C;AAAA,MACA;AAAA,QACE,MAAM;AAAA,QACN,YAAY,OAAO;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,qBAAqB,QAAQ,sBAAsB;AACzD,QAAM,eAAe;AAAA,IACnB,qBAAqB,iBAAiB,kBAAkB,IAAI;AAAA,EAC9D;AACA,MAAI,aAAa,UAAU,oBAAoB;AAC7C,WAAO;AAAA,MACL,aAAa;AAAA,MACb,oBAAoB,aAAa,WAAW,uBAAuB,UAAU;AAAA,MAC7E;AAAA,MACA,EAAE,MAAM,mBAAmB;AAAA,IAC7B;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,kBAAkB,UAAsC;AACrE,QAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAACA,MAAM,QAAO;AAElB,MAAI;AACF,WAAO,KAAK,MAAMA,KAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,eAAsB,eACpB,MAI8B;AAC9B,QAAM,MAAM,gBAAgB,gBAAgB,KAAK,OAAO;AAExD,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,eAAe,UAAU,KAAK,MAAM;AAAA,QACpC,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,QAAQ,YAAY,QAAQ,GAAK;AAAA,IACnC,CAAC;AAED,UAAM,OAAO,MAAM,kBAAkB,QAAQ;AAE7C,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI,SAAS;AAAA,MACb,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,GAAI,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,MACvC,GAAI,KAAK,aAAa,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,MACzD,QAAQ,SAAS;AAAA,MACjB;AAAA,MACA;AAAA,MACA,GAAI,SAAS,KAAK,CAAC,IAAI,EAAE,OAAO,QAAQ,SAAS,MAAM,GAAG;AAAA,IAC5D;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,SAAS,KAAK;AAAA,MACd,GAAI,KAAK,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;AAAA,MACvC,GAAI,KAAK,aAAa,EAAE,YAAY,KAAK,WAAW,IAAI,CAAC;AAAA,MACzD;AAAA,MACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC9D;AAAA,EACF;AACF;AAEA,eAAsB,cACpB,UAAkC,CAAC,GACL;AAC9B,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK,gBAAgB,gBAAgB,qBAAqB;AAAA,IAC5D;AAAA,EACF;AAEA,SAAO,eAAe,IAAI;AAC5B;AAEO,SAAS,2BAAmC;AACjD,SAAO;AACT;;;AJxLA,SAAS,SAAS,OAA+B;AAC/C,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;AAEA,SAAS,cAAcC,OAAuB;AAC5C,MAAI,CAACA,MAAM,QAAO;AAElB,MAAI;AACF,WAAO,KAAK,MAAMA,KAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,eAAe,UAAa;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY;AACd,GAAiC;AAC/B,QAAM,WAAW,MAAM,UAAU,KAAK;AAAA,IACpC;AAAA,IACA,SAAS;AAAA,MACP,QAAQ;AAAA,MACR,GAAI,OAAO,EAAE,gBAAgB,mBAAmB,IAAI,CAAC;AAAA,IACvD;AAAA,IACA,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AAED,QAAM,UAAU,cAAc,MAAM,SAAS,KAAK,CAAC;AAEnD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,eAAe,SAAS,OAAO,IACjC,SAAS,QAAQ,KAAK,KAAK,SAAS,QAAQ,OAAO,IACnD,OAAO,YAAY,WACjB,UACA;AACN,UAAM,IAAI,MAAM,gBAAgB,QAAQ,SAAS,MAAM,EAAE;AAAA,EAC3D;AAEA,MAAI,SAAS,OAAO,KAAK,QAAQ,OAAO,QAAQ,UAAU,SAAS;AACjE,WAAO,QAAQ;AAAA,EACjB;AAEA,SAAO;AACT;AAEA,SAAS,wBAAwB,OAA2C;AAC1E,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AAEA,QAAM,YAAY,SAAS,MAAM,SAAS;AAC1C,QAAM,YAAY,SAAS,MAAM,SAAS;AAC1C,QAAM,aAAa,SAAS,MAAM,UAAU;AAC5C,QAAM,YAAY,SAAS,MAAM,SAAS;AAC1C,QAAM,iBAAiB,OAAO,MAAM,mBAAmB,WACnD,MAAM,iBACN,OAAO;AAEX,MAAI,CAAC,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,SAAS,cAAc,GAAG;AAC7F,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACvE;AAEA,SAAO,EAAE,WAAW,WAAW,YAAY,WAAW,eAAe;AACvE;AAEA,SAAS,uBAAuB,OAA0C;AACxE,MAAI,CAAC,SAAS,KAAK,GAAG;AACpB,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,QAAM,YAAY,SAAS,MAAM,SAAS;AAC1C,QAAM,SAAS,SAAS,MAAM,MAAM;AACpC,QAAM,YAAY,SAAS,MAAM,SAAS;AAE1C,MAAI,CAAC,aAAa,CAAC,UAAU,CAAC,WAAW;AACvC,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAe,SAAS,MAAM,aAAa;AAAA,IAC3C,WAAW,SAAS,MAAM,SAAS;AAAA,IACnC,eAAe,MAAM,kBAAkB,WAAW,MAAM,kBAAkB,UACtE,MAAM,gBACN;AAAA,IACJ,WAAW,SAAS,MAAM,SAAS;AAAA,IACnC,cAAc,SAAS,MAAM,YAAY;AAAA,IACzC,GAAI,SAAS,MAAM,GAAG,IAAI,EAAE,KAAK,SAAS,MAAM,GAAG,EAAG,IAAI,CAAC;AAAA,EAC7D;AACF;AAEA,SAAS,MAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAEA,eAAsB,oBACpB,SAMA,WACoC;AACpC,QAAM,OAAO,MAAM,UAAmB;AAAA,IACpC,KAAK,gBAAgB,6BAA6B,QAAQ,OAAO;AAAA,IACjE,QAAQ;AAAA,IACR,MAAM,KAAK,UAAU;AAAA,MACnB,gBAAgB,QAAQ;AAAA,MACxB,GAAI,QAAQ,aAAa,EAAE,YAAY,QAAQ,WAAW,IAAI,CAAC;AAAA,MAC/D,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAS,IAAI,CAAC;AAAA,IAC3D,CAAC;AAAA,IACD;AAAA,EACF,CAAC;AAED,SAAO,wBAAwB,IAAI;AACrC;AAEA,eAAsB,mBACpB,SAKA,WACmC;AACnC,QAAM,UAAU,qBAAqB,QAAQ,OAAO;AACpD,QAAM,MAAM,IAAI,IAAI,gBAAgB,6BAA6B,QAAQ,SAAS,IAAI,OAAO,CAAC;AAC9F,MAAI,aAAa,IAAI,aAAa,QAAQ,SAAS;AAEnD,QAAM,OAAO,MAAM,UAAmB;AAAA,IACpC,KAAK,IAAI,SAAS;AAAA,IAClB,QAAQ;AAAA,IACR;AAAA,EACF,CAAC;AAED,SAAO,uBAAuB,IAAI;AACpC;AAEA,eAAsB,sBACpB,SAOA,WACmC;AACnC,QAAM,YAAY,QAAQ,aAAa,KAAK;AAC5C,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,WAAW,KAAK,IAAI,IAAI;AAE9B,SAAO,KAAK,IAAI,KAAK,UAAU;AAC7B,UAAM,SAAS,MAAM;AAAA,MACnB;AAAA,QACE,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,MACrB;AAAA,MACA;AAAA,IACF;AAEA,QAAI,OAAO,WAAW,SAAS;AAC7B,UAAI,CAAC,OAAO,KAAK;AACf,cAAM,IAAI,MAAM,sDAAsD;AAAA,MACxE;AACA,aAAO;AAAA,IACT;AAEA,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI,MAAM,OAAO,gBAAgB,sBAAsB;AAAA,IAC/D;AAEA,QAAI,OAAO,WAAW,WAAW;AAC/B,YAAM,IAAI,MAAM,8CAA8C;AAAA,IAChE;AAEA,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,IAAI,MAAM,4CAA4C;AAAA,IAC9D;AAEA,QAAI,OAAO,WAAW,YAAY;AAChC,YAAM,IAAI,MAAM,sDAAsD;AAAA,IACxE;AAEA,UAAM,MAAM,KAAK,IAAI,KAAO,KAAK,IAAI,KAAK,cAAc,CAAC,CAAC;AAAA,EAC5D;AAEA,QAAM,IAAI;AAAA,IACR,4CAA4C,KAAK,MAAM,YAAY,GAAI,CAAC;AAAA,EAC1E;AACF;AAEA,eAAsB,0BACpB,SAKA,WACe;AACf,QAAM,UAAmB;AAAA,IACvB,KAAK,gBAAgB,6BAA6B,QAAQ,SAAS,QAAQ,QAAQ,OAAO;AAAA,IAC1F,QAAQ;AAAA,IACR,MAAM,KAAK,UAAU,EAAE,WAAW,QAAQ,UAAU,CAAC;AAAA,IACrD;AAAA,EACF,CAAC;AACH;AAEO,SAAS,YAAY,KAAuC;AACjE,QAAM,WAAW,QAAQ;AACzB,QAAM,SAAS,aAAa,WACxB,UAAU,QAAQ,CAAC,GAAG,GAAG,EAAE,OAAO,SAAS,CAAC,IAC5C,aAAa,UACX,UAAU,OAAO,CAAC,MAAM,SAAS,IAAI,GAAG,GAAG,EAAE,OAAO,SAAS,CAAC,IAC9D,UAAU,YAAY,CAAC,GAAG,GAAG,EAAE,OAAO,SAAS,CAAC;AAEtD,MAAI,OAAO,OAAO;AAChB,WAAO,EAAE,IAAI,OAAO,OAAO,OAAO,MAAM,QAAQ;AAAA,EAClD;AAEA,MAAI,OAAO,OAAO,WAAW,YAAY,OAAO,WAAW,GAAG;AAC5D,WAAO,EAAE,IAAI,OAAO,OAAO,yCAAyC,OAAO,MAAM,IAAI;AAAA,EACvF;AAEA,SAAO,EAAE,IAAI,KAAK;AACpB;;;AK3QA,eAAsB,iBACpB,SAA6B,QAAQ,IAAI,kBAAkB,KAAK,GACpC;AAC5B,MAAI,CAAC,QAAQ;AACX,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,OACE;AAAA,MACF,KAAK;AAAA,IACP;AAAA,EACF;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,uBAAuB;AAAA,MAClD,SAAS;AAAA,QACP,eAAe,UAAU,MAAM;AAAA,MACjC;AAAA,MACA,QAAQ,YAAY,QAAQ,GAAK;AAAA,IACnC,CAAC;AAED,UAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,QAAI,OAAgBA;AACpB,QAAI;AACF,aAAOA,MAAK,SAAS,IAAI,KAAK,MAAMA,KAAI,IAAI;AAAA,IAC9C,QAAQ;AACN,aAAOA;AAAA,IACT;AAEA,WAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,SAAS;AAAA,MACT,QAAQ,SAAS;AAAA,MACjB;AAAA,MACA,KAAK;AAAA,MACL,GAAI,SAAS,KAAK,CAAC,IAAI,EAAE,OAAO,QAAQ,SAAS,MAAM,GAAG;AAAA,IAC5D;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,KAAK;AAAA,IACP;AAAA,EACF;AACF;;;ACxDA,SAAS,aAAAC,kBAAiB;AAc1B,SAAS,WAAW,OAAsD;AACxE,QAAM,OAAO,OAAO,KAAK;AACzB,SAAO,OAAO,OAAO;AACvB;AAEA,eAAsB,oBACpB,YAC8B;AAC9B,QAAM,YAAY,aAAa,iBAAiB,UAAU,IAAI;AAC9D,QAAM,OAAO,wBAAwB,SAAS;AAC9C,QAAM,MAAM,oBAAoB,IAAI;AAEpC,QAAM,MAAMC,WAAU,YAAY,CAAC,WAAW,QAAQ,GAAG;AAAA,IACvD,UAAU;AAAA,IACV,SAAS;AAAA,EACX,CAAC;AAED,MAAI,CAAC,IAAI,OAAO;AACd,UAAM,SAAS,WAAW,IAAI,MAAM;AACpC,UAAM,SAAS,WAAW,IAAI,MAAM;AACpC,UAAM,UAAU,CAAC,iBAAiB,IAAI,EAAE;AACxC,QAAI,OAAQ,SAAQ,KAAK,QAAQ,MAAM,EAAE;AACzC,QAAI,OAAQ,SAAQ,KAAK,eAAe,MAAM,EAAE;AAEhD,QAAI,IAAI,WAAW,GAAG;AACpB,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,UAAU;AAAA,MACV,QAAQ,YAAY,QAAQ,GAAK;AAAA,IACnC,CAAC;AAED,QAAI,SAAS,MAAO,SAAS,UAAU,OAAO,SAAS,SAAS,KAAM;AACpE,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,QACA,SAAS,CAAC,iBAAiB,IAAI,IAAI,gBAAgB,SAAS,MAAM,EAAE;AAAA,MACtE;AAAA,IACF;AAEA,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,OAAO,QAAQ,SAAS,MAAM;AAAA,MAC9B,SAAS,CAAC,iBAAiB,IAAI,IAAI,gBAAgB,SAAS,MAAM,EAAE;AAAA,IACtE;AAAA,EACF,SAAS,OAAO;AACd,UAAM,WAAW,IAAI,iBAAiB,QAAQ,IAAI,MAAM,UAAU;AAClE,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,WAAW,SAAS;AAAA,MAC5B;AAAA,MACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,SAAS;AAAA,QACP,iBAAiB,IAAI;AAAA,QACrB,GAAI,WAAW,CAAC,6BAA6B,QAAQ,EAAE,IAAI,CAAC;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACF;;;AC3EA,SAAS,SAAS,OAAmC;AACnD,QAAM,OAAO,MAAM,KAAK;AACxB,MAAI,CAAC,KAAM,QAAO;AAClB,SAAO,KAAK,SAAS,MAAM,GAAG,KAAK,MAAM,GAAG,GAAG,CAAC,QAAQ;AAC1D;AAEA,eAAsB,uBAAsD;AAC1E,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,4BAA4B;AAAA,MACvD,QAAQ;AAAA,MACR,QAAQ,YAAY,QAAQ,GAAK;AAAA,IACnC,CAAC;AACD,UAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,UAAM,OAAO,SAASA,KAAI;AAE1B,WAAO;AAAA,MACL,IAAI,SAAS;AAAA,MACb,SAAS;AAAA,MACT,QAAQ,SAAS;AAAA,MACjB,KAAK;AAAA,MACL,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,GAAI,SAAS,KAAK,CAAC,IAAI,EAAE,OAAO,QAAQ,SAAS,MAAM,GAAG;AAAA,MAC1D,SAAS;AAAA,QACP,gBAAgB,SAAS,MAAM;AAAA,QAC/B,GAAI,OAAO,CAAC,SAAS,IAAI,EAAE,IAAI,CAAC;AAAA,MAClC;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,KAAK;AAAA,MACL,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACF;;;ACzCA,IAAM,oBAAoB;AAwB1B,SAAS,aAAa,QAAgB,WAA4C;AAChF,QAAM,UAAkC;AAAA,IACtC,eAAe,UAAU,MAAM;AAAA,IAC/B,gBAAgB;AAAA,IAChB,QAAQ;AAAA,EACV;AAEA,MAAI,WAAW;AACb,YAAQ,gBAAgB,IAAI;AAAA,EAC9B;AAEA,SAAO;AACT;AAEA,eAAe,aAAa,UAAsC;AAChE,QAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAACA,MAAM,QAAO;AAElB,MAAI;AACF,WAAO,KAAK,MAAMA,KAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,SAAS,iBAAiB,SAAsC;AAC9D,MAAI,CAAC,WAAW,OAAO,YAAY,UAAU;AAC3C,WAAO;AAAA,EACT;AAEA,QAAM,aAAc,QAAgC;AACpD,MAAI,CAAC,cAAc,OAAO,eAAe,UAAU;AACjD,WAAO;AAAA,EACT;AAEA,SAAO,OAAO,WAAW,YAAY,WACjC,WAAW,UACX;AACN;AAEA,SAAS,cAAc,UAAwC;AAC7D,SAAO,SAAS,QAAQ,IAAI,gBAAgB,KAAK,SAAS,QAAQ,IAAI,gBAAgB,KAAK;AAC7F;AAEA,eAAsB,yBACpB,UAAkC,CAAC,GACnC,WAAW,mBACkB;AAC7B,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR;AAAA,MACA,KAAK;AAAA,MACL,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,MAAI;AACF,UAAM,qBAAqB,MAAM,MAAM,qBAAqB;AAAA,MAC1D,QAAQ;AAAA,MACR,SAAS,aAAa,KAAK,MAAM;AAAA,MACjC,MAAM,KAAK,UAAU;AAAA,QACnB,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,iBAAiB;AAAA,UACjB,YAAY;AAAA,YACV,MAAM;AAAA,YACN,SAAS;AAAA,UACX;AAAA,UACA,cAAc,CAAC;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,MACD,QAAQ,YAAY,QAAQ,GAAM;AAAA,IACpC,CAAC;AAED,UAAM,oBAAoB,MAAM,aAAa,kBAAkB;AAC/D,UAAM,kBAAkB,iBAAiB,iBAAiB;AAC1D,UAAM,YAAY,cAAc,kBAAkB;AAElD,QAAI,CAAC,mBAAmB,IAAI;AAC1B,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,SAAS,KAAK;AAAA,QACd,kBAAkB,mBAAmB;AAAA,QACrC,OAAO,mCAAmC,mBAAmB,MAAM;AAAA,QACnE,SAAS,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAAA,QACvC,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,QAAI,iBAAiB;AACnB,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,SAAS,KAAK;AAAA,QACd,kBAAkB,mBAAmB;AAAA,QACrC,OAAO,2CAA2C,eAAe;AAAA,QACjE,SAAS,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAAA,QACvC,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,SAAS,KAAK;AAAA,QACd,kBAAkB,mBAAmB;AAAA,QACrC,OAAO;AAAA,QACP,SAAS,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAAA,QACvC,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,UAAM,eAAe,MAAM,MAAM,qBAAqB;AAAA,MACpD,QAAQ;AAAA,MACR,SAAS,aAAa,KAAK,QAAQ,SAAS;AAAA,MAC5C,MAAM,KAAK,UAAU;AAAA,QACnB,SAAS;AAAA,QACT,IAAI;AAAA,QACJ,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,WAAW,CAAC;AAAA,QACd;AAAA,MACF,CAAC;AAAA,MACD,QAAQ,YAAY,QAAQ,GAAM;AAAA,IACpC,CAAC;AAED,UAAM,cAAc,MAAM,aAAa,YAAY;AACnD,UAAM,YAAY,iBAAiB,WAAW;AAE9C,QAAI,CAAC,aAAa,IAAI;AACpB,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,SAAS,KAAK;AAAA,QACd,kBAAkB,mBAAmB;AAAA,QACrC,YAAY,aAAa;AAAA,QACzB,OAAO,kCAAkC,aAAa,MAAM;AAAA,QAC5D,SAAS;AAAA,UACP,gBAAgB,KAAK,MAAM;AAAA,UAC3B,wBAAwB,SAAS;AAAA,QACnC;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,QAAI,WAAW;AACb,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb;AAAA,QACA,KAAK;AAAA,QACL,SAAS,KAAK;AAAA,QACd,kBAAkB,mBAAmB;AAAA,QACrC,YAAY,aAAa;AAAA,QACzB,OAAO,0CAA0C,SAAS;AAAA,QAC1D,SAAS;AAAA,UACP,gBAAgB,KAAK,MAAM;AAAA,UAC3B,wBAAwB,SAAS;AAAA,QACnC;AAAA,QACA,UAAU;AAAA,MACZ;AAAA,IACF;AAEA,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,KAAK;AAAA,MACL,SAAS,KAAK;AAAA,MACd,kBAAkB,mBAAmB;AAAA,MACrC,YAAY,aAAa;AAAA,MACzB,SAAS;AAAA,QACP,gBAAgB,KAAK,MAAM;AAAA,QAC3B,wBAAwB,SAAS;AAAA,QACjC,cAAc,QAAQ;AAAA,MACxB;AAAA,MACA,UAAU;AAAA,IACZ;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb;AAAA,MACA,KAAK;AAAA,MACL,SAAS,KAAK;AAAA,MACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,SAAS,CAAC,gBAAgB,KAAK,MAAM,EAAE;AAAA,IACzC;AAAA,EACF;AACF;;;AC3OA,SAAS,kBAAkB,aAA6B;AACtD,SAAO,GAAG,qBAAqB,IAAI,mBAAmB,WAAW,CAAC;AACpE;AAEA,SAAS,iBAAiB,SAAsC;AAC9D,MAAI,CAAC,SAAS,OAAO,KAAK,CAAC,SAAS,QAAQ,WAAW,CAAC,GAAG;AACzD,WAAO;AAAA,EACT;AAEA,QAAM,SAAS,QAAQ,WAAW,EAAE;AACpC,SAAO,OAAO,WAAW,YAAY,OAAO,KAAK,EAAE,SAAS,IAAI,SAAS;AAC3E;AAEA,eAAsB,uBACpB,cAAsB,8BACK;AAC3B,QAAM,MAAM,kBAAkB,WAAW;AAEzC,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS,EAAE,QAAQ,mBAAmB;AAAA,MACtC,QAAQ,YAAY,QAAQ,GAAK;AAAA,IACnC,CAAC;AAED,UAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,QAAI,UAAmBA;AACvB,QAAI;AACF,gBAAUA,MAAK,SAAS,IAAI,KAAK,MAAMA,KAAI,IAAI;AAAA,IACjD,QAAQ;AACN,gBAAUA;AAAA,IACZ;AAEA,QAAI,SAAS,IAAI;AACf,YAAM,UAAU,iBAAiB,OAAO;AACxC,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA,GAAI,UAAU,EAAE,QAAQ,IAAI,CAAC;AAAA,QAC7B,SAAS;AAAA,UACP,gBAAgB,SAAS,MAAM;AAAA,UAC/B,GAAI,UAAU,CAAC,mBAAmB,OAAO,EAAE,IAAI,CAAC,6BAA6B;AAAA,QAC/E;AAAA,MACF;AAAA,IACF;AAEA,QAAI,SAAS,WAAW,KAAK;AAC3B,aAAO;AAAA,QACL,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,WAAW;AAAA,QACX,WAAW;AAAA,QACX;AAAA,QACA;AAAA,QACA,OAAO,GAAG,WAAW;AAAA,QACrB,SAAS,CAAC,gBAAgB,SAAS,MAAM,EAAE;AAAA,MAC7C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,OAAO,8BAA8B,SAAS,MAAM;AAAA,MACpD,SAAS,CAAC,gBAAgB,SAAS,MAAM,EAAE;AAAA,IAC7C;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,WAAW;AAAA,MACX,WAAW;AAAA,MACX;AAAA,MACA;AAAA,MACA,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACF;;;AChFA,eAAe,gBAAgB,UAAsC,CAAC,GAAG;AACvE,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAeC,mBAAkB,UAAsC;AACrE,QAAMC,QAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAACA,MAAM,QAAO;AAElB,MAAI;AACF,WAAO,KAAK,MAAMA,KAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,SAAS,eAAe,OAAsC;AAC5D,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAE7B,QAAM,KAAK,OAAO,MAAM,OAAO,WAAW,MAAM,KAAK;AACrD,QAAM,OAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAC3D,MAAI,CAAC,MAAM,CAAC,KAAM,QAAO;AAEzB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAI,OAAO,MAAM,gBAAgB,YAAY,MAAM,YAAY,KAAK,EAAE,SAAS,IAC3E,EAAE,aAAa,MAAM,YAAY,IACjC,CAAC;AAAA,IACL,WAAW,MAAM,eAAe;AAAA,IAChC,GAAI,OAAO,MAAM,eAAe,WAAW,EAAE,WAAW,MAAM,WAAW,IAAI,CAAC;AAAA,IAC9E,GAAI,OAAO,MAAM,eAAe,WAAW,EAAE,WAAW,MAAM,WAAW,IAAI,CAAC;AAAA,EAChF;AACF;AAEA,SAAS,eAAe,YAA8C;AACpE,SAAO,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,UAAU;AAC3C,QAAI,KAAK,cAAc,MAAM,WAAW;AACtC,aAAO,KAAK,YAAY,KAAK;AAAA,IAC/B;AAEA,UAAM,cAAc,KAAK,KAAK,cAAc,MAAM,IAAI;AACtD,QAAI,gBAAgB,GAAG;AACrB,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,GAAG,cAAc,MAAM,EAAE;AAAA,EACvC,CAAC;AACH;AAEA,SAAS,mBAAmB,SAAmC;AAC7D,MAAI,CAAC,SAAS,OAAO,KAAK,CAAC,MAAM,QAAQ,QAAQ,IAAI,GAAG;AACtD,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,eAAe,QAAQ,KAAK,IAAI,cAAc,EAAE,OAAO,CAAC,SAAgC,SAAS,IAAI,CAAC;AAC/G;AAEA,SAAS,uBAAuB,SAAwC;AACtE,MAAI,CAAC,SAAS,OAAO,EAAG,QAAO;AAC/B,SAAO,eAAe,QAAQ,IAAI;AACpC;AAEA,SAAS,8BAA8B,SAAwC;AAC7E,MAAI,CAAC,SAAS,OAAO,EAAG,QAAO;AAE/B,QAAM,KAAK,OAAO,QAAQ,OAAO,WAAW,QAAQ,KAAK;AACzD,QAAM,OAAO,OAAO,QAAQ,SAAS,WAAW,QAAQ,OAAO;AAC/D,MAAI,CAAC,MAAM,CAAC,KAAM,QAAO;AAEzB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,WAAW;AAAA,IACX,GAAI,OAAO,QAAQ,cAAc,WAAW,EAAE,WAAW,QAAQ,UAAU,IAAI,CAAC;AAAA,EAClF;AACF;AAEA,SAAS,oBAAoB,QAAwC;AACnE,SAAO;AAAA,IACL,eAAe,UAAU,MAAM;AAAA,IAC/B,gBAAgB;AAAA,EAClB;AACF;AAEA,SAAS,gBAAgB,QAAgB,MAAuB;AAC9D,MAAI,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS,GAAG;AACtD,WAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,EAChC;AAEA,MAAI,SAAS,IAAI,KAAK,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,KAAK,EAAE,SAAS,GAAG;AACpF,WAAO,QAAQ,MAAM,KAAK,KAAK,KAAK;AAAA,EACtC;AAEA,SAAO,QAAQ,MAAM;AACvB;AAEA,eAAsB,eACpB,UAAsC,CAAC,GACb;AAC1B,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,QAAM,MAAM,gBAAgB,2CAA2C,KAAK,OAAO;AACnF,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU,KAAK,MAAM;AAAA,IACtC;AAAA,IACA,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AACD,QAAM,OAAO,MAAMD,mBAAkB,QAAQ;AAE7C,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,8BAA8B,gBAAgB,SAAS,QAAQ,IAAI,CAAC,EAAE;AAAA,EACxF;AAEA,SAAO,mBAAmB,IAAI;AAChC;AAEA,eAAsB,oBACpB,UAAsC,CAAC,GACR;AAC/B,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,QAAM,MAAM,gBAAgB,0BAA0B,KAAK,OAAO;AAClE,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU,KAAK,MAAM;AAAA,IACtC;AAAA,IACA,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AACD,QAAM,OAAO,MAAMA,mBAAkB,QAAQ;AAE7C,MAAI,SAAS,IAAI;AACf,UAAM,YAAY,8BAA8B,IAAI;AACpD,QAAI,CAAC,WAAW;AACd,YAAM,IAAI,MAAM,wDAAwD;AAAA,IAC1E;AACA,WAAO;AAAA,EACT;AAEA,MAAI,SAAS,WAAW,KAAK;AAC3B,UAAM,aAAa,MAAM,eAAe,OAAO;AAC/C,WAAO,WAAW,CAAC,KAAK;AAAA,EAC1B;AAEA,QAAM,IAAI,MAAM,qCAAqC,gBAAgB,SAAS,QAAQ,IAAI,CAAC,EAAE;AAC/F;AAEA,eAAsB,gBACpB,OACA,UAAsC,CAAC,GACf;AACxB,QAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,MAAI,CAAC,MAAM;AACT,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AAEA,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,QAAM,MAAM,gBAAgB,aAAa,KAAK,OAAO;AACrD,QAAM,UAAU;AAAA,IACd,MAAM;AAAA,IACN;AAAA,IACA,GAAI,MAAM,aAAa,KAAK,IACxB,EAAE,aAAa,MAAM,YAAY,KAAK,EAAE,IACxC,CAAC;AAAA,EACP;AAEA,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,oBAAoB,KAAK,MAAM;AAAA,IACxC,MAAM,KAAK,UAAU,OAAO;AAAA,IAC5B,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AACD,QAAM,OAAO,MAAMA,mBAAkB,QAAQ;AAE7C,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,+BAA+B,gBAAgB,SAAS,QAAQ,IAAI,CAAC,EAAE;AAAA,EACzF;AAEA,QAAM,YAAY,uBAAuB,IAAI;AAC7C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,gDAAgD;AAAA,EAClE;AAEA,SAAO;AACT;AAEA,eAAe,gBACb,OACA,OACA,UAAsC,CAAC,GACf;AACxB,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,QAAM,MAAM,gBAAgB,aAAa,KAAK,OAAO;AACrD,QAAM,WAAW,MAAM,MAAM,KAAK;AAAA,IAChC,QAAQ;AAAA,IACR,SAAS,oBAAoB,KAAK,MAAM;AAAA,IACxC,MAAM,KAAK,UAAU;AAAA,MACnB,MAAM;AAAA,MACN,IAAI,MAAM;AAAA,MACV,GAAG;AAAA,IACL,CAAC;AAAA,IACD,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AACD,QAAM,OAAO,MAAMA,mBAAkB,QAAQ;AAE7C,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,+BAA+B,gBAAgB,SAAS,QAAQ,IAAI,CAAC,EAAE;AAAA,EACzF;AAEA,QAAM,YAAY,uBAAuB,IAAI;AAC7C,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,uDAAuD;AAAA,EACzE;AAEA,SAAO;AACT;AAEA,eAAsB,oBACpB,OACA,UAAsC,CAAC,GACkB;AACzD,QAAM,cAAc,MAAM,GAAG,KAAK;AAClC,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,2BAA2B;AAAA,EAC7C;AAEA,QAAM,aAAa,MAAM,eAAe,OAAO;AAC/C,QAAM,SAAS,WAAW,KAAK,CAAC,cAAc,UAAU,OAAO,WAAW;AAC1E,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,aAAa,WAAW,6CAA6C;AAAA,EACvF;AAEA,MAAI,OAAO,WAAW;AACpB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,iBAAiB,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS;AACzE,MAAI,gBAAgB;AAClB,UAAM,gBAAgB,EAAE,IAAI,eAAe,GAAG,GAAG,EAAE,YAAY,MAAM,GAAG,OAAO;AAAA,EACjF;AAEA,MAAI;AACF,UAAM,UAAU,MAAM,gBAAgB,EAAE,IAAI,YAAY,GAAG,EAAE,YAAY,KAAK,GAAG,OAAO;AACxF,WAAO;AAAA,MACL,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,EACF,SAAS,OAAO;AACd,QAAI,gBAAgB;AAClB,UAAI;AACF,cAAM,gBAAgB,EAAE,IAAI,eAAe,GAAG,GAAG,EAAE,YAAY,KAAK,GAAG,OAAO;AAAA,MAChF,QAAQ;AAAA,MAER;AAAA,IACF;AACA,UAAM;AAAA,EACR;AACF;;;AChRA,eAAsB,2BACpB,UAAkC,CAAC,GACE;AACrC,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AAEA,MAAI;AACF,UAAM,YAAY,MAAM,oBAAoB,OAAO;AACnD,QAAI,CAAC,WAAW;AACd,aAAO;AAAA,QACL,YAAY;AAAA,QACZ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,QACd,OAAO;AAAA,QACP,SAAS,CAAC;AAAA,MACZ;AAAA,IACF;AAEA,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd;AAAA,MACA,SAAS;AAAA,QACP,iBAAiB,UAAU,EAAE;AAAA,QAC7B,GAAI,UAAU,YAAY,CAAC,gCAAgC,IAAI,CAAC;AAAA,MAClE;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,YAAY;AAAA,MACZ,IAAI;AAAA,MACJ,SAAS;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,SAAS,KAAK;AAAA,MACd,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,MAC5D,SAAS,CAAC;AAAA,IACZ;AAAA,EACF;AACF;;;ACtEA,YAAY,UAAU;AAkBtB,SAAS,sBAAsB,QAAoB,KAAyB;AAC1E,SAAO,EAAE,GAAG,WAAW,OAAO,GAAG,CAAC,EAAE;AACtC;AAEA,SAAS,6BAA6B,SAA8B;AAClE,QAAM,eAAe,GAAG,kBAAkB;AAC1C,MAAI,UAAU;AAEd,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACtC,QAAI,QAAQ,mBAAoB;AAChC,QAAI,CAAC,IAAI,WAAW,YAAY,EAAG;AACnC,WAAO,QAAQ,GAAG;AAClB,cAAU;AAAA,EACZ;AAEA,SAAO;AACT;AAEA,SAAS,oBAAoB,QAA4B;AACvD,SAAO,GAAG,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA;AAC3C;AAEA,SAAS,iBAAiB,OAA+B;AACvD,QAAM,OAAO,EAAE,GAAG,MAAM;AACxB,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO;AACT;AAEA,SAAS,eAAe,OAAgB,KAAsB;AAC5D,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,SAAO,MAAM,SAAS,UAAU,MAAM,QAAQ;AAChD;AAEA,SAAS,cAAc,OAAgB,KAAsB;AAC3D,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,SAAO,MAAM,QAAQ;AACvB;AAEO,SAAS,qBACd,OACA,aACQ;AACR,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,eAAe,WAAW,QAAQ,mBAAmB,CAAC;AAC5D,QAAM,gBAAgB,WAAW,QAAQ,kBAAkB,CAAC;AAC5D,QAAM,YAAY,OAAO,aAAa,QAAQ,WAAW,aAAa,MAAM;AAC5E,QAAM,aAAa,OAAO,aAAa,SAAS,WAAW,aAAa,OAAO;AAC/E,QAAM,sBACJ,CAAC,SAAS,QAAQ,mBAAmB,CAAC,KACrC,cAAc,eAAe,eAAe;AAE/C,MAAI,qBAAqB;AACvB,YAAQ,mBAAmB,IAAI;AAAA,MAC7B,GAAG;AAAA,MACH,MAAM;AAAA,MACN,KAAK;AAAA,MACL,aACE,OAAO,aAAa,gBAAgB,YACpC,aAAa,YAAY,KAAK,EAAE,SAAS,IACrC,aAAa,cACb;AAAA,IACR;AAAA,EACF;AAEA,MAAI,aAAa;AACf,YAAQ,kBAAkB,IAAI;AAAA,MAC5B,GAAG;AAAA,MACH,MAAM;AAAA,MACN,KAAK;AAAA,MACL,aACE,OAAO,cAAc,gBAAgB,YACrC,cAAc,YAAY,KAAK,EAAE,SAAS,IACtC,cAAc,cACd;AAAA,IACR;AAAA,EACF;AAEA,+BAA6B,OAAO;AAEpC,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,sBACd,OACQ;AACR,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAE3D,MAAI,SAAS,QAAQ,kBAAkB,CAAC,GAAG;AACzC,WAAO,QAAQ,kBAAkB;AAAA,EACnC;AAEA,MAAI,eAAe,QAAQ,mBAAmB,GAAG,mBAAmB,GAAG;AACrE,WAAO,QAAQ,mBAAmB;AAAA,EACpC;AAEA,+BAA6B,OAAO;AAEpC,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,uBAAuB,OAA2C;AAChF,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,QAAQ,WAAW,QAAQ,kBAAkB,CAAC;AACpD,QAAM,mBAAmB,eAAe,QAAQ,mBAAmB,GAAG,mBAAmB;AACzF,QAAM,kBACJ,MAAM,SAAS,UACf,OAAO,MAAM,QAAQ;AACvB,QAAM,WAAW,kBAAkB,OAAO,MAAM,GAAG,IAAI;AAEvD,SAAO;AAAA,IACL,YAAY,oBAAoB;AAAA,IAChC;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,gBAAgB,mBAAmB,OAAO,SAAS;AAAA,MACnD,wBAAwB,QAAQ;AAAA,IAClC;AAAA,EACF;AACF;AAEO,SAAS,qBACd,OACA,aACQ;AACR,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,gBAAgB,WAAW,QAAQ,kBAAkB,CAAC;AAE5D,UAAQ,kBAAkB,IAAI;AAAA,IAC5B,GAAG,iBAAiB,aAAa;AAAA,IACjC,KAAK;AAAA,EACP;AAEA,+BAA6B,OAAO;AAEpC,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,sBACd,OACQ;AACR,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAE3D,MAAI,SAAS,QAAQ,kBAAkB,CAAC,GAAG;AACzC,WAAO,QAAQ,kBAAkB;AAAA,EACnC;AAEA,+BAA6B,OAAO;AAEpC,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,uBAAuB,OAA2C;AAChF,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,QAAQ,WAAW,QAAQ,kBAAkB,CAAC;AACpD,QAAM,kBACJ,OAAO,MAAM,QAAQ;AACvB,QAAM,WAAW,kBAAkB,OAAO,MAAM,GAAG,IAAI;AAEvD,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA,SAAS,CAAC,wBAAwB,QAAQ,EAAE;AAAA,EAC9C;AACF;AAEO,SAAS,qBAAqB,OAA8B;AACjE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,SAAS;AACxD,QAAM,iBAAiB,WAAW,QAAQ,mBAAmB,CAAC;AAE9D,UAAQ,mBAAmB,IAAI;AAAA,IAC7B,GAAG,iBAAiB,cAAc;AAAA,IAClC,MAAM;AAAA,IACN,KAAK;AAAA,EACP;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,sBAAsB,OAA8B;AAClE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,SAAS;AAExD,MAAI,eAAe,QAAQ,mBAAmB,GAAG,mBAAmB,GAAG;AACrE,WAAO,QAAQ,mBAAmB;AAAA,EACpC;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH;AAAA,EACF,CAAC;AACH;AAEO,SAAS,uBAAuB,OAA2C;AAChF,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,SAAS;AACxD,QAAM,mBAAmB,eAAe,QAAQ,mBAAmB,GAAG,mBAAmB;AAEzF,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA,SAAS,CAAC,gBAAgB,mBAAmB,OAAO,SAAS,EAAE;AAAA,EACjE;AACF;AAEA,SAAS,oBAAoB,OAAgB,KAAsB;AACjE,MAAI,CAAC,SAAS,KAAK,EAAG,QAAO;AAC7B,SAAO,MAAM,cAAc,OAAO,MAAM,QAAQ;AAClD;AAEO,SAAS,uBAAuB,OAA8B;AACnE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,iBAAiB,WAAW,QAAQ,mBAAmB,CAAC;AAC9D,QAAM,YAAY,iBAAiB,cAAc;AAEjD,SAAO,UAAU;AACjB,UAAQ,mBAAmB,IAAI;AAAA,IAC7B,GAAG;AAAA,IACH,WAAW;AAAA,EACb;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,wBAAwB,OAA8B;AACpE,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAE3D,MAAI,oBAAoB,QAAQ,mBAAmB,GAAG,mBAAmB,GAAG;AAC1E,WAAO,QAAQ,mBAAmB;AAAA,EACpC;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,YAAY;AAAA,EACd,CAAC;AACH;AAEO,SAAS,yBAAyB,OAA2C;AAClF,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,YAAY;AAC3D,QAAM,mBAAmB,oBAAoB,QAAQ,mBAAmB,GAAG,mBAAmB;AAE9F,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA,SAAS,CAAC,gBAAgB,mBAAmB,OAAO,SAAS,EAAE;AAAA,EACjE;AACF;AAEO,SAAS,kBAAkB,OAA8B;AAC9D,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,iBAAiB;AAChE,QAAM,iBAAiB,WAAW,QAAQ,mBAAmB,CAAC;AAE9D,UAAQ,mBAAmB,IAAI;AAAA,IAC7B,GAAG,iBAAiB,cAAc;AAAA,IAClC,KAAK;AAAA,EACP;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,iBAAiB;AAAA,EACnB,CAAC;AACH;AAEO,SAAS,mBAAmB,OAA8B;AAC/D,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,iBAAiB;AAEhE,MAAI,cAAc,QAAQ,mBAAmB,GAAG,mBAAmB,GAAG;AACpE,WAAO,QAAQ,mBAAmB;AAAA,EACpC;AAEA,SAAO,oBAAoB;AAAA,IACzB,GAAG;AAAA,IACH,iBAAiB;AAAA,EACnB,CAAC;AACH;AAEO,SAAS,oBAAoB,OAA2C;AAC7E,QAAM,UAAU,gBAAgB,KAAK;AACrC,QAAM,UAAU,sBAAsB,SAAS,iBAAiB;AAChE,QAAM,mBAAmB,cAAc,QAAQ,mBAAmB,GAAG,mBAAmB;AAExF,SAAO;AAAA,IACL,YAAY;AAAA,IACZ;AAAA,IACA,SAAS,CAAC,gBAAgB,mBAAmB,OAAO,SAAS,EAAE;AAAA,EACjE;AACF;AAEA,SAAS,kBAAkB,OAAkC;AAC3D,MAAI,CAAC,MAAO,QAAO,CAAC;AAEpB,MAAI;AACF,UAAM,SAAc,WAAM,KAAK;AAC/B,WAAO,SAAS,MAAM,IAAI,SAAS,CAAC;AAAA,EACtC,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;AAEA,SAAS,sBAAsB,UAA8B;AAC3D,QAAM,WAAgB,eAAU,QAAwB;AACxD,SAAO,SAAS,SAAS,IAAI,IAAI,WAAW,GAAG,QAAQ;AAAA;AACzD;AAEA,SAAS,iBAAiB,SAAqB,KAAa,KAAmB;AAC7E,QAAM,UAAU,WAAW,QAAQ,GAAG,CAAC;AACvC,QAAM,OAAmB;AAAA,IACvB,GAAG;AAAA,IACH;AAAA,EACF;AACA,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,SAAO,KAAK;AACZ,UAAQ,GAAG,IAAI;AACjB;AAEA,SAAS,yBAAyB,SAA8B;AAC9D,QAAM,eAAe,GAAG,kBAAkB;AAC1C,MAAI,UAAU;AAEd,aAAW,OAAO,OAAO,KAAK,OAAO,GAAG;AACtC,QAAI,QAAQ,mBAAoB;AAChC,QAAI,CAAC,IAAI,WAAW,YAAY,EAAG;AACnC,WAAO,QAAQ,GAAG;AAClB,cAAU;AAAA,EACZ;AAEA,SAAO;AACT;AAEO,SAAS,qBACd,OACA,aACQ;AACR,QAAM,UAAU,kBAAkB,KAAK;AACvC,QAAM,UAAU,WAAW,QAAQ,WAAW;AAE9C,mBAAiB,SAAS,qBAAqB,mBAAmB;AAClE,MAAI,aAAa;AACf,qBAAiB,SAAS,oBAAoB,WAAW;AAAA,EAC3D;AACA,2BAAyB,OAAO;AAEhC,UAAQ,cAAc;AACtB,SAAO,sBAAsB,OAAO;AACtC;AAEO,SAAS,sBACd,OACQ;AACR,QAAM,UAAU,kBAAkB,KAAK;AACvC,QAAM,UAAU,WAAW,QAAQ,WAAW;AAC9C,QAAM,SAAS,WAAW,QAAQ,mBAAmB,CAAC;AAEtD,MAAI,SAAS,QAAQ,kBAAkB,CAAC,GAAG;AACzC,WAAO,QAAQ,kBAAkB;AAAA,EACnC;AAEA,MAAI,OAAO,QAAQ,qBAAqB;AACtC,WAAO,QAAQ,mBAAmB;AAAA,EACpC;AAEA,2BAAyB,OAAO;AAChC,UAAQ,cAAc;AAEtB,SAAO,sBAAsB,OAAO;AACtC;AAEO,SAAS,uBAAuB,OAA2C;AAChF,QAAM,UAAU,kBAAkB,KAAK;AACvC,QAAM,UAAU,WAAW,QAAQ,WAAW;AAC9C,QAAM,SAAS,WAAW,QAAQ,mBAAmB,CAAC;AACtD,QAAM,QAAQ,WAAW,QAAQ,kBAAkB,CAAC;AACpD,QAAM,mBAAmB,OAAO,QAAQ;AACxC,QAAM,kBAAkB,OAAO,MAAM,QAAQ;AAE7C,SAAO;AAAA,IACL,YAAY,oBAAoB;AAAA,IAChC;AAAA,IACA;AAAA,IACA,SAAS;AAAA,MACP,gBAAgB,mBAAmB,OAAO,SAAS;AAAA,MACnD,wBAAwB,kBAAkB,MAAM,MAAM,SAAS;AAAA,IACjE;AAAA,EACF;AACF;;;AClbO,IAAM,gBAAgB;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAKO,IAAM,0BAA0B;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,oBAAoB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC/BA,SAAS,cAAAE,mBAAkB;AAC3B,SAAS,WAAAC,gBAAe;AAmCxB,IAAM,mBAAwD;AAAA,EAC5D,QAAQ;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,OAAO;AAAA,IACL,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,QAAQ;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,UAAU;AAAA,IACR,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,KAAK;AAAA,IACH,aAAa;AAAA,IACb,cAAc;AAAA,EAChB;AAAA,EACA,SAAS;AAAA,IACP,aAAa,CAAC;AAAA,IACd,cAAc;AAAA,EAChB;AACF;AAEA,SAAS,kBAAkB,OAAiB,QAAoC;AAC9E,SAAO,MAAM,KAAK,CAAC,SAAS,OAAO,IAAI,CAAC;AAC1C;AAEA,SAAS,0BAA0B,aAAiC;AAClE,SAAO,CAAC,GAAG,IAAI,IAAI,YAAY,IAAI,CAAC,SAASC,SAAQ,IAAI,CAAC,CAAC,CAAC;AAC9D;AAEO,SAAS,kBAAkB,MAAmC;AACnE,SAAO,iBAAiB,IAAI;AAC9B;AAEO,SAAS,cAAc,MAAmB,SAAiBC,aAA8B;AAC9F,QAAM,UAAU,kBAAkB,IAAI;AACtC,QAAM,qBAAqB,kBAAkB,QAAQ,aAAa,MAAM;AACxE,QAAM,gBAAgB,QAAQ,YAAY,CAAC,KAAK,QAAQ,aAAa,CAAC;AACtE,QAAM,oBAAoB;AAAA,IACxB,GAAG,QAAQ;AAAA,IACX,GAAG,0BAA0B,QAAQ,WAAW;AAAA,EAClD;AACA,QAAM,sBAAsB,kBAAkB,mBAAmB,MAAM;AACvE,QAAM,eAAe,sBAAsB;AAC3C,QAAM,WAAqB,CAAC;AAE5B,MAAI,oBAAoB;AACtB,aAAS,KAAK,iBAAiB,kBAAkB,EAAE;AAAA,EACrD;AACA,MAAI,uBAAuB,wBAAwB,oBAAoB;AACrE,aAAS,KAAK,yBAAyB,mBAAmB,EAAE;AAAA,EAC9D;AACA,MAAI,CAAC,sBAAsB,CAAC,qBAAqB;AAC/C,aAAS,KAAK,kCAAkC;AAAA,EAClD;AAEA,QAAM,YAA8B;AAAA,IAClC,UAAU,QAAQ,sBAAsB,mBAAmB;AAAA,IAC3D;AAAA,EACF;AAEA,MAAI,eAAe;AACjB,cAAU,gBAAgB;AAAA,EAC5B;AACA,MAAI,cAAc;AAChB,cAAU,eAAe;AAAA,EAC3B;AAEA,SAAO;AACT;;;AC3BA,SAAS,eAAe,MAAuC;AAC7D,QAAM,YAAY,cAAc,IAAI;AACpC,QAAM,UAAU,kBAAkB,IAAI;AACtC,QAAM,eAAe,UAAU;AAE/B,MAAI,gBAAgB,QAAQ,YAAY,SAAS,YAAY,GAAG;AAC9D,WAAO;AAAA,EACT;AAEA,SAAO,QAAQ,YAAY,CAAC,KAAK,UAAU,iBAAiB;AAC9D;AAEA,SAAS,6BAAsD;AAC7D,QAAM,YAAY,cAAc,UAAU;AAC1C,QAAM,OAAO,UAAU,gBAAgB,UAAU;AACjD,QAAM,MAAM,OAAO,iBAAiB,IAAI,IAAI;AAC5C,QAAM,aAAa,sBAAsB,GAAG;AAE5C,QAAM,SAAkC;AAAA,IACtC,UAAU,UAAU;AAAA,IACpB,YAAY,WAAW;AAAA,EACzB;AAEA,MAAI,MAAM;AACR,WAAO,OAAO;AAAA,EAChB;AAEA,MAAI,UAAU,UAAU;AACtB,WAAO,MAAM,iBAAiB,GAAG;AAAA,EACnC;AAEA,SAAO;AACT;AAEA,SAAS,uBACP,MAIe;AACf,QAAM,YAAY,cAAc,IAAI;AACpC,QAAM,OAAO,UAAU,gBAAgB,UAAU;AACjD,QAAM,WAAW,2BAA2B;AAE5C,MAAI,SAAS,UAAU;AACrB,UAAMC,cAAa,uBAAuB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC9E,UAAM,aAAaA,YAAW,qBAAqB,SAChD,SAAS,WAAWA,YAAW,oBAAoB,OAAO;AAC7D,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB;AAAA,MACA,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS;AAAA,QACP,GAAGA,YAAW;AAAA,QACd,GAAI,SAAS,WACT,CAAC,oBAAoB,SAAS,aAAa,eAAe,6BAA6B,EAAE,IACzF,CAAC,yEAAyE;AAAA,QAC9E,GAAG,UAAU;AAAA,MACf;AAAA,MACA,SAAS,aACL,SAAS,WACP,gEACA,2CACF,UAAU,WACR,SAAS,WACP,sEAAsE,SAAS,OAAO,SAAS,OAC/F,iDACF;AAAA,IACR;AAAA,EACF;AAEA,MAAI,SAAS,UAAU;AACrB,UAAMA,cAAa,uBAAuB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC9E,UAAM,aAAa,SAAS,YAAYA,YAAW,oBAAoB;AACvE,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB;AAAA,MACA,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS;AAAA,QACP,GAAGA,YAAW;AAAA,QACd,GAAI,SAAS,WACT,CAAC,oBAAoB,SAAS,aAAa,eAAe,6BAA6B,EAAE,IACzF,CAAC,6EAA6E;AAAA,QAClF,GAAG,UAAU;AAAA,MACf;AAAA,MACA,SAAS,aACL,mEACA,UAAU,WACR,SAAS,WACP,qDAAqD,SAAS,OAAO,SAAS,OAC9E,mEACF;AAAA,IACR;AAAA,EACF;AAEA,MAAI,SAAS,SAAS;AACpB,UAAMA,cAAa,uBAAuB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC9E,UAAM,aAAaA,YAAW,qBAAqB,SAChD,SAAS,WAAWA,YAAW,oBAAoB,OAAO;AAC7D,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB;AAAA,MACA,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS;AAAA,QACP,GAAGA,YAAW;AAAA,QACd,GAAI,SAAS,WACT,CAAC,oBAAoB,SAAS,aAAa,eAAe,6BAA6B,EAAE,IACzF,CAAC,yEAAyE;AAAA,QAC9E,GAAG,UAAU;AAAA,MACf;AAAA,MACA,SAAS,aACL,SAAS,WACP,+DACA,0CACF,UAAU,WACR,SAAS,WACP,qEAAqE,SAAS,OAAO,SAAS,OAC9F,gDACF;AAAA,IACR;AAAA,EACF;AAEA,MAAI,SAAS,UAAU;AACrB,UAAMA,cAAa,uBAAuB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC9E,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB,YAAYA,YAAW,qBAAqB;AAAA,MAC5C,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS,CAAC,GAAGA,YAAW,SAAS,GAAG,UAAU,QAAQ;AAAA,MACtD,SAASA,YAAW,mBAChB,4CACA,UAAU,WACR,kDACA;AAAA,IACR;AAAA,EACF;AAEA,MAAI,SAAS,YAAY;AACvB,UAAMA,cAAa,yBAAyB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAChF,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB,YAAYA,YAAW,qBAAqB;AAAA,MAC5C,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS,CAAC,GAAGA,YAAW,SAAS,GAAG,UAAU,QAAQ;AAAA,MACtD,SAASA,YAAW,mBAChB,6CACA,UAAU,WACR,mDACA;AAAA,IACR;AAAA,EACF;AAEA,MAAI,SAAS,OAAO;AAClB,UAAMA,cAAa,oBAAoB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC3E,WAAO;AAAA,MACL;AAAA,MACA,MAAM;AAAA,MACN,UAAU,UAAU;AAAA,MACpB,YAAYA,YAAW,qBAAqB;AAAA,MAC5C,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,MACvB,SAAS,CAAC,GAAGA,YAAW,SAAS,GAAG,UAAU,QAAQ;AAAA,MACtD,SAASA,YAAW,mBAChB,wCACA,UAAU,WACR,8CACA;AAAA,IACR;AAAA,EACF;AAEA,QAAM,aAAa,sBAAsB,OAAO,iBAAiB,IAAI,IAAI,IAAI;AAC7E,SAAO;AAAA,IACL;AAAA,IACA,MAAM;AAAA,IACN,UAAU,UAAU;AAAA,IACpB,YAAY,WAAW;AAAA,IACvB,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,IACvB,SAAS,CAAC,GAAG,WAAW,SAAS,GAAG,UAAU,QAAQ;AAAA,IACtD,SAAS,WAAW,aAChB,yBAAyB,WAAW,aAAa,SAAS,oBAC1D,WAAW,YACT,mEACA,UAAU,WACR,qEACA;AAAA,EACV;AACF;AAEA,SAAS,oBAAoB,MAAsD;AACjF,QAAM,YAAY,cAAc,IAAI;AACpC,QAAM,OAAO,UAAU,gBAAgB,UAAU;AAEjD,QAAM,SAAS;AAAA,IACb;AAAA,IACA,MAAM;AAAA,IACN,UAAU,UAAU;AAAA,IACpB,YAAY;AAAA,IACZ,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;AAAA,EACzB;AAEA,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO;AAAA,QACL,GAAG;AAAA,QACH,SAAS;AAAA,UACP,GAAG,UAAU;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS,UAAU,WACf,uEACA;AAAA,MACN;AAAA,EACJ;AACF;AAEA,SAAS,iBAAiB,MAAkC;AAC1D,MAAI,wBAAwB,SAAS,IAAgD,GAAG;AACtF,WAAO;AAAA,MACL;AAAA,IAIF;AAAA,EACF;AAEA,SAAO,oBAAoB,IAAuC;AACpE;AAEO,SAAS,sBAAuC;AACrD,SAAO,cAAc,IAAI,gBAAgB;AAC3C;AAEA,SAAS,eACP,WACA,YACK;AACL,QAAM,SAAS,MAAM,QAAQ,SAAS,IAAI,YAAY,CAAC,SAAS;AAEhE,MAAI,OAAO,SAAS,KAAK,GAAG;AAC1B,WAAO,CAAC,GAAG,UAAU;AAAA,EACvB;AAEA,SAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC;AAC5B;AAEO,SAAS,wBACd,WACe;AACf,SAAO,eAAe,WAAW,aAAa;AAChD;AAEO,SAAS,2BACd,WAC2C;AAC3C,SAAO,eAAe,WAAW,iBAAiB;AACpD;AAEA,eAAe,oBAAoB,MAAmD;AACpF,QAAM,OAAO,eAAe,IAAI;AAChC,QAAM,WAAW,2BAA2B;AAE5C,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,SAAS,GAAG,IAAI;AAAA,IAClB;AAAA,EACF;AAEA,UAAQ,MAAM;AAAA,IACZ,KAAK,UAAU;AACb,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,qBAAqB,UAAU,SAAS,GAAG;AACxD,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS,SAAS,WACd,gEACA;AAAA,MACN;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,UAAI,CAAC,SAAS,YAAY,CAAC,SAAS,KAAK;AACvC,eAAO;AAAA,UACL;AAAA,UACA,SAAS;AAAA,UACT;AAAA,UACA,SAAS;AAAA,QACX;AAAA,MACF;AACA,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,qBAAqB,UAAU,SAAS,GAAG;AACxD,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,qBAAqB,UAAU,SAAS,GAAG;AACxD,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS,SAAS,WACd,+DACA;AAAA,MACN;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,MAAM,gBAAgB;AACnC,YAAM,OAAO,oBAAoB,UAAU,QAAQ,CAAC,CAAC;AACrD,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS,OACL,iFACA;AAAA,MACN;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,WAAW,iBAAiB,IAAI;AACtC,UAAI,uBAAuB,QAAQ,EAAE,kBAAkB;AACrD,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,0CAA0C;AAAA,MAC1F;AACA,YAAM,OAAO,qBAAqB,QAAQ;AAC1C,oBAAc,MAAM,IAAI;AACxB,aAAO,EAAE,MAAM,SAAS,MAAM,MAAM,SAAS,0CAA0C;AAAA,IACzF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,WAAW,iBAAiB,IAAI;AACtC,UAAI,yBAAyB,QAAQ,EAAE,kBAAkB;AACvD,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,2CAA2C;AAAA,MAC3F;AACA,YAAM,OAAO,uBAAuB,QAAQ;AAC5C,oBAAc,MAAM,IAAI;AACxB,aAAO,EAAE,MAAM,SAAS,MAAM,MAAM,SAAS,2CAA2C;AAAA,IAC1F;AAAA,IACA,KAAK,OAAO;AACV,YAAM,WAAW,iBAAiB,IAAI;AACtC,UAAI,oBAAoB,QAAQ,EAAE,kBAAkB;AAClD,eAAO,EAAE,MAAM,SAAS,OAAO,MAAM,SAAS,sCAAsC;AAAA,MACtF;AACA,YAAM,OAAO,kBAAkB,QAAQ;AACvC,oBAAc,MAAM,IAAI;AACxB,aAAO,EAAE,MAAM,SAAS,MAAM,MAAM,SAAS,sCAAsC;AAAA,IACrF;AAAA,IACA;AACE,aAAO;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,SAAS,GAAG,IAAI;AAAA,MAClB;AAAA,EACJ;AACF;AAEA,SAAS,uBAAuB,MAA0C;AACxE,QAAM,OAAO,eAAe,IAAI;AAEhC,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,MACL;AAAA,MACA,SAAS;AAAA,MACT,SAAS,GAAG,IAAI;AAAA,IAClB;AAAA,EACF;AAEA,UAAQ,MAAM;AAAA,IACZ,KAAK,UAAU;AACb,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,sBAAsB,QAAQ;AAC3C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,sBAAsB,QAAQ;AAC3C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,SAAS;AACZ,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,sBAAsB,QAAQ;AAC3C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,qBAAqB,QAAQ;AAC1C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,sBAAsB,QAAQ;AAC3C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,wBAAwB,QAAQ;AAC7C,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA,KAAK,OAAO;AACV,YAAM,WAAW,iBAAiB,IAAI;AACtC,YAAM,OAAO,mBAAmB,QAAQ;AACxC,oBAAc,MAAM,IAAI;AACxB,aAAO;AAAA,QACL;AAAA,QACA,SAAS,aAAa;AAAA,QACtB;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,IACA;AACE,aAAO;AAAA,QACL;AAAA,QACA,SAAS;AAAA,QACT,SAAS,GAAG,IAAI;AAAA,MAClB;AAAA,EACJ;AACF;AAEA,eAAsB,WACpB,WACkC;AAClC,QAAM,UAAU,wBAAwB,SAAS;AACjD,QAAM,UAAmC,CAAC;AAE1C,aAAW,WAAW,SAAS;AAC7B,YAAQ,KAAK,MAAM,oBAAoB,OAAO,CAAC;AAAA,EACjD;AAEA,SAAO;AACT;AAEO,SAAS,cAAc,WAAmE;AAC/F,QAAM,UAAU,wBAAwB,SAAS;AACjD,SAAO,QAAQ,IAAI,CAAC,YAAY,uBAAuB,OAAO,CAAC;AACjE;AAEA,eAAsB,cACpB,WACkC;AAClC,QAAM,UAAU,2BAA2B,SAAS;AACpD,QAAM,UAAmC,CAAC;AAE1C,aAAW,WAAW,SAAS;AAC7B,YAAQ,KAAK,MAAM,oBAAoB,OAAO,CAAC;AAAA,EACjD;AAEA,SAAO;AACT;AAEO,SAAS,iBACd,WACyB;AACzB,QAAM,UAAU,2BAA2B,SAAS;AACpD,SAAO,QAAQ,IAAI,CAAC,YAAY,uBAAuB,OAAO,CAAC;AACjE;AAEA,eAAsB,wBAA0D;AAC9E,QAAM,UAAU,wBAAwB,OAAO,CAAC,SAAS,iBAAiB,IAAI,EAAE,QAAQ;AAExF,UAAQ,KAAK,CAAC,MAAM,UAAU;AAC5B,QAAI,SAAS,WAAY,QAAO;AAChC,QAAI,UAAU,WAAY,QAAO;AACjC,WAAO;AAAA,EACT,CAAC;AAED,QAAM,UAAmC,CAAC;AAE1C,aAAW,QAAQ,SAAS;AAC1B,YAAQ,KAAK,MAAM,oBAAoB,IAAI,CAAC;AAAA,EAC9C;AAEA,SAAO;AACT;AAwBA,SAAS,wBAA6C;AACpD,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,SAAS,CAAC;AAAA,EACZ;AACF;AAEA,eAAsB,YAAmC;AACvD,QAAM,WAAW,oBAAoB;AACrC,QAAM,kBAAkB,SAAS,KAAK,CAAC,YAAY,QAAQ,SAAS,UAAU;AAC9E,QAAM,OAAO,MAAM,cAAc;AACjC,QAAM,YAAY,MAAM,qBAAqB;AAC7C,QAAM,gBAAgB,MAAM,yBAAyB;AACrD,QAAM,cAAc,MAAM,uBAAuB;AACjD,QAAM,YAAY,MAAM,2BAA2B;AACnD,QAAM,SAAS,MAAM,iBAAiB;AACtC,QAAM,WAAW,iBAAiB,WAC9B,MAAM,oBAAoB,gBAAgB,IAAI,IAC9C,sBAAsB;AAC1B,SAAO,EAAE,UAAU,MAAM,WAAW,eAAe,aAAa,WAAW,QAAQ,SAAS;AAC9F;AAEO,SAAS,mBAAmB,QAAwC;AACzE,QAAM,SAAkC,CAAC;AAEzC,MAAI,CAAC,OAAO,UAAU,IAAI;AACxB,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MACE,OAAO,UAAU,MACjB,OAAO,cAAc,cACrB,CAAC,OAAO,cAAc,MACtB,CAAC,OAAO,cAAc,SACtB;AACA,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO,6CAA6C,OAAO,cAAc,QAAQ;AAAA,MACjF,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,KAAK,cAAc,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,KAAK,SAAS;AACrE,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,UAAU,cAAc,CAAC,OAAO,UAAU,IAAI;AACvD,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO,YAAY,WAAW;AACjC,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH,WAAW,CAAC,OAAO,YAAY,WAAW;AACxC,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO,GAAG,OAAO,YAAY,WAAW;AAAA,MACxC,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO,SAAS,WAAW,CAAC,OAAO,SAAS,IAAI;AACnD,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,MAAI,CAAC,OAAO,OAAO,WAAW,CAAC,OAAO,OAAO,IAAI;AAC/C,WAAO,KAAK;AAAA,MACV,OAAO;AAAA,MACP,OAAO;AAAA,MACP,YACE;AAAA,IACJ,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL,IAAI,CAAC,OAAO,KAAK,CAAC,UAAU,MAAM,UAAU,OAAO;AAAA,IACnD;AAAA,EACF;AACF;;;AC7uBA,SAAS,kBAAkB;AA8B3B,SAASC,kBAAiB,OAAiC;AACzD,SAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAC5D;AAEA,SAAS,cAAc,OAAsC;AAC3D,SAAO,OAAO,UAAU,YAAY,cAAc,SAAS,KAAoB;AACjF;AAEA,SAAS,wBAAwB,OAAsD;AACrF,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAC/D,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AACf,QAAM,SAAmC,CAAC;AAE1C,MAAI,OAAO,kBAAkB,WAAW,OAAO,kBAAkB,SAAS;AACxE,WAAO,gBAAgB,OAAO;AAAA,EAChC;AAEA,MAAI,cAAc,OAAO,aAAa,GAAG;AACvC,WAAO,gBAAgB,OAAO;AAAA,EAChC;AAEA,MAAIA,kBAAiB,OAAO,WAAW,GAAG;AACxC,WAAO,cAAc,OAAO,YAAY,KAAK;AAAA,EAC/C;AAEA,MAAIA,kBAAiB,OAAO,aAAa,GAAG;AAC1C,WAAO,gBAAgB,OAAO,cAAc,KAAK;AAAA,EACnD;AAEA,SAAO,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AACnD;AAEA,SAAS,oBAAoB,OAAwD;AACnF,MAAI,CAAC,SAAS,OAAO,UAAU,YAAY,MAAM,QAAQ,KAAK,GAAG;AAC/D,WAAO;AAAA,EACT;AAEA,QAAM,SAAS;AACf,MACE,CAACA,kBAAiB,OAAO,EAAE,KAC3B,CAACA,kBAAiB,OAAO,KAAK,KAC9B,CAACA,kBAAiB,OAAO,OAAO,KAChC,CAACA,kBAAiB,OAAO,SAAS,GAClC;AACA,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,WAAW,OAAO,UAAU,KAAK;AAAA,IACjC,IAAI,OAAO,GAAG,KAAK;AAAA,IACnB,SAAS,OAAO,QAAQ,KAAK;AAAA,IAC7B,OAAO,OAAO,MAAM,KAAK;AAAA,IACzB,GAAIA,kBAAiB,OAAO,WAAW,IACnC,EAAE,aAAa,OAAO,YAAY,KAAK,EAAE,IACzC,CAAC;AAAA,IACL,GAAIA,kBAAiB,OAAO,aAAa,IACrC,EAAE,eAAe,OAAO,cAAc,KAAK,EAAE,IAC7C,CAAC;AAAA,EACP;AACF;AAEA,SAAS,kBAAkB,OAAM,oBAAI,KAAK,GAAE,YAAY,GAAsB;AAC5E,SAAO;AAAA,IACL,gBAAgB,UAAU,WAAW,CAAC;AAAA,IACtC,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AACF;AAEA,SAAS,0BAA0B,QAA8C;AAC/E,QAAM,aAAa,wBAAwB,OAAO,UAAU;AAC5D,QAAM,iBAAiB,oBAAoB,OAAO,cAAc;AAEhE,SAAO;AAAA,IACL,gBAAgB,OAAO,eAAe,KAAK;AAAA,IAC3C,WAAW,OAAO,UAAU,KAAK;AAAA,IACjC,WAAW,OAAO,UAAU,KAAK;AAAA,IACjC,GAAI,aAAa,EAAE,WAAW,IAAI,CAAC;AAAA,IACnC,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,EAC7C;AACF;AAEO,SAAS,gBACd,YAAoB,wBACM;AAC1B,QAAM,SAAS,gBAAgB,iBAAiB,SAAS,CAAC;AAE1D,MACE,CAACA,kBAAiB,OAAO,cAAc,KACvC,CAACA,kBAAiB,OAAO,SAAS,KAClC,CAACA,kBAAiB,OAAO,SAAS,GAClC;AACA,WAAO;AAAA,EACT;AAEA,QAAM,QAA2B;AAAA,IAC/B,gBAAgB,OAAO,eAAe,KAAK;AAAA,IAC3C,WAAW,OAAO,UAAU,KAAK;AAAA,IACjC,WAAW,OAAO,UAAU,KAAK;AAAA,EACnC;AACA,QAAM,aAAa,wBAAwB,OAAO,UAAU;AAC5D,MAAI,eAAe,OAAW,OAAM,aAAa;AACjD,QAAM,iBAAiB,oBAAoB,OAAO,cAAc;AAChE,MAAI,mBAAmB,OAAW,OAAM,iBAAiB;AACzD,SAAO;AACT;AAEO,SAAS,iBACd,OACA,YAAoB,wBACD;AACnB,QAAM,SAAS,0BAA0B,KAAK;AAC9C,gBAAc,WAAW,QAAQ,EAAE,MAAM,IAAM,CAAC;AAChD,SAAO;AACT;AAEO,SAAS,kBACd,SACA,YAAoB,wBACD;AACnB,QAAM,UAAU,gBAAgB,SAAS,KAAK,kBAAkB;AAChE,QAAM,OAAO,QAAQ,OAAO;AAC5B,QAAM,YAAY,0BAA0B;AAAA,IAC1C,GAAG;AAAA,IACH,gBAAgB,KAAK,kBAAkB,QAAQ;AAAA,IAC/C,WAAW,KAAK,aAAa,QAAQ;AAAA,IACrC,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,EACpC,CAAC;AACD,gBAAc,WAAW,WAAW,EAAE,MAAM,IAAM,CAAC;AACnD,SAAO;AACT;AAEO,SAAS,gCACd,YAAoB,wBACZ;AACR,QAAM,WAAW,gBAAgB,SAAS;AAC1C,MAAI,UAAU;AACZ,WAAO,SAAS;AAAA,EAClB;AAEA,QAAM,SAAS,kBAAkB;AACjC,mBAAiB,QAAQ,SAAS;AAClC,SAAO,OAAO;AAChB;;;ACvKA,IAAM,uBAAsC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AASA,SAAS,oBAAoB,UAAoD;AAC/E,aAAW,QAAQ,sBAAsB;AACvC,UAAM,aAAa,SAAS,KAAK,CAAC,WAAW,OAAO,SAAS,QAAQ,OAAO,UAAU;AACtF,QAAI,YAAY;AACd,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AAEA,aAAW,QAAQ,sBAAsB;AACvC,UAAM,WAAW,SAAS,KAAK,CAAC,WAAW,OAAO,SAAS,QAAQ,OAAO,QAAQ;AAClF,QAAI,UAAU;AACZ,aAAO,SAAS;AAAA,IAClB;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,mBACP,cACA,UAC+B;AAC/B,MAAI,cAAc;AAChB,WAAO;AAAA,EACT;AAEA,QAAM,WAAW,SAAS,KAAK,CAAC,WAAW,OAAO,SAAS,UAAU;AACrE,MAAI,UAAU,cAAc,UAAU,UAAU;AAC9C,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,SAAS;AAAA,IAC7B,CAAC,WAAW,OAAO,SAAS,eAAe,OAAO,cAAc,OAAO;AAAA,EACzE;AAEA,SAAO,gBAAgB,UAAU;AACnC;AAEO,SAAS,wBAAwB,OAAuB,CAAC,GAA6B;AAC3F,QAAM,WAAW,KAAK,YAAY,oBAAoB;AACtD,QAAM,aAAuC,CAAC;AAE9C,QAAM,gBAAgB,oBAAoB,QAAQ;AAClD,MAAI,eAAe;AACjB,eAAW,gBAAgB;AAAA,EAC7B;AAEA,QAAM,gBAAgB,mBAAmB,KAAK,eAAe,QAAQ;AACrE,MAAI,eAAe;AACjB,eAAW,gBAAgB;AAAA,EAC7B;AAEA,MAAI,KAAK,WAAW,IAAI;AACtB,eAAW,cAAc,KAAK,UAAU;AAAA,EAC1C;AAEA,QAAM,gBAAgB,KAAK,WAAW,QAAQ,KAAK,iBAAiB;AACpE,MAAI,eAAe,KAAK,GAAG;AACzB,eAAW,gBAAgB,cAAc,KAAK;AAAA,EAChD;AAEA,SAAO;AACT;AAEA,SAAS,wBACP,SACA,MAC0B;AAC1B,SAAO;AAAA,IACL,GAAI,WAAW,CAAC;AAAA,IAChB,GAAG;AAAA,EACL;AACF;AAEO,SAAS,0BACd,OAAuB,CAAC,GACxB,WACmB;AACnB,QAAM,OAAO,wBAAwB,IAAI;AAEzC,SAAO;AAAA,IACL,CAAC,aAAa;AAAA,MACZ,GAAG;AAAA,MACH,YAAY,wBAAwB,QAAQ,YAAY,IAAI;AAAA,IAC9D;AAAA,IACA;AAAA,EACF;AACF;;;ACxGA,IAAM,gCAAgC;AACtC,IAAM,kCACJ;AAkBF,SAASC,mBAAkBC,OAAuB;AAChD,MAAI,CAACA,OAAM;AACT,WAAO;AAAA,EACT;AAEA,MAAI;AACF,WAAO,KAAK,MAAMA,KAAI;AAAA,EACxB,QAAQ;AACN,WAAOA;AAAA,EACT;AACF;AAEA,SAASC,iBAAgB,QAAgB,MAAuB;AAC9D,MAAI,OAAO,SAAS,YAAY,KAAK,KAAK,EAAE,SAAS,GAAG;AACtD,WAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,EAChC;AAEA,MAAI,SAAS,IAAI,KAAK,OAAO,KAAK,UAAU,YAAY,KAAK,MAAM,KAAK,EAAE,SAAS,GAAG;AACpF,WAAO,QAAQ,MAAM,KAAK,KAAK,KAAK;AAAA,EACtC;AAEA,SAAO,QAAQ,MAAM;AACvB;AAEA,SAAS,gBAAgB,SAAkC;AACzD,QAAM,SAAS,SAAS,OAAO,KAAK,SAAS,QAAQ,IAAI,IAAI,QAAQ,OAAO;AAC5E,MAAI,CAAC,SAAS,MAAM,GAAG;AACrB,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,QAAM,KAAK,OAAO,OAAO,OAAO,WAAW,OAAO,GAAG,KAAK,IAAI;AAC9D,QAAM,QAAQ,OAAO,OAAO,UAAU,WAClC,OAAO,MAAM,KAAK,IAClB,OAAO,OAAO,SAAS,WACrB,OAAO,KAAK,KAAK,IACjB;AAEN,MAAI,CAAC,MAAM,CAAC,OAAO;AACjB,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,GAAI,OAAO,OAAO,YAAY,YAAY,OAAO,QAAQ,KAAK,EAAE,SAAS,IACrE,EAAE,SAAS,OAAO,QAAQ,KAAK,EAAE,IACjC,CAAC;AAAA,EACP;AACF;AAEA,SAAS,uBACP,YACA,SACA,WAC4B;AAC5B,SAAO;AAAA,IACL,YAAW,oBAAI,KAAK,GAAE,YAAY;AAAA,IAClC,IAAI,WAAW;AAAA,IACf;AAAA,IACA,OAAO,WAAW;AAAA,IAClB,aAAa,UAAU;AAAA,IACvB,eAAe,UAAU;AAAA,EAC3B;AACF;AAEA,eAAeC,iBAAgB,UAAmC,CAAC,GAAG;AACpE,QAAM,OAAO,MAAM,gBAAgB,OAAO;AAC1C,MAAI,CAAC,MAAM;AACT,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAsB,iBACpB,OAKA,UAAmC,CAAC,GACX;AACzB,QAAM,QAAQ,MAAM,MAAM,KAAK;AAC/B,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AAEA,QAAM,OAAO,MAAMA,iBAAgB,OAAO;AAC1C,QAAM,WAAW,MAAM,MAAM,gBAAgB,aAAa,KAAK,OAAO,GAAG;AAAA,IACvE,QAAQ;AAAA,IACR,SAAS;AAAA,MACP,eAAe,UAAU,KAAK,MAAM;AAAA,MACpC,gBAAgB;AAAA,IAClB;AAAA,IACA,MAAM,KAAK,UAAU;AAAA,MACnB,MAAM;AAAA,MACN;AAAA,MACA,QAAQ;AAAA,MACR,GAAI,MAAM,SAAS,KAAK,IAAI,EAAE,SAAS,MAAM,QAAQ,KAAK,EAAE,IAAI,CAAC;AAAA,MACjE,GAAI,MAAM,aAAa,KAAK,IAAI,EAAE,cAAc,MAAM,YAAY,KAAK,EAAE,IAAI,CAAC;AAAA,IAChF,CAAC;AAAA,IACD,QAAQ,YAAY,QAAQ,GAAK;AAAA,EACnC,CAAC;AAED,QAAM,OAAOH,mBAAkB,MAAM,SAAS,KAAK,CAAC;AACpD,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,gCAAgCE,iBAAgB,SAAS,QAAQ,IAAI,CAAC,EAAE;AAAA,EAC1F;AAEA,SAAO,gBAAgB,IAAI;AAC7B;AAEA,eAAsB,4BACpB,WACA,UAAmC,CAAC,GACE;AACtC,QAAM,iBAAiB,gBAAgB,QAAQ,SAAS,GAAG;AAE3D,MAAI,gBAAgB,gBAAgB,UAAU,IAAI;AAChD,WAAO;AAAA,MACL,SAAS;AAAA,MACT,YAAY;AAAA,QACV,IAAI,eAAe;AAAA,QACnB,OAAO,eAAe;AAAA,MACxB;AAAA,MACA,SAAS,eAAe;AAAA,IAC1B;AAAA,EACF;AAEA,QAAM,OAAO,MAAMC,iBAAgB,OAAO;AAC1C,QAAM,aAAa,MAAM;AAAA,IACvB;AAAA,MACE,OAAO;AAAA,MACP,SAAS;AAAA,MACT,aAAa,UAAU;AAAA,IACzB;AAAA,IACA;AAAA,EACF;AACA,QAAM,UAAU,GAAG,KAAK,QAAQ,QAAQ,QAAQ,EAAE,CAAC,SAAS,WAAW,EAAE;AACzE,QAAM,SAAS,uBAAuB,YAAY,SAAS,SAAS;AAEpE;AAAA,IACE,CAAC,aAAa;AAAA,MACZ,GAAG;AAAA,MACH,gBAAgB;AAAA,IAClB;AAAA,IACA,QAAQ;AAAA,EACV;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;;;ACzLA,SAAS,QAAAC,aAAY;AASd,IAAM,2BAA2B;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,qBAAqB,oBAAI,IAAI,CAAC,WAAW,SAAS,CAAC;AAEzD,IAAM,oBAAoB;AAC1B,IAAM,mBAAmB;AACzB,IAAM,kBAAkB;AAwCxB,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAU7B,IAAM,4BAA4B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA2ClC,SAAS,eAAe,OAAuB;AAC7C,SAAO,MACJ,MAAM,GAAG,EACT,OAAO,CAAC,YAAY,QAAQ,SAAS,CAAC,EACtC,IAAI,CAAC,YAAY,mBAAmB,OAAO,CAAC,EAC5C,KAAK,GAAG;AACb;AAEA,SAAS,iBAAiB,MAAc,KAAqB;AAC3D,QAAM,cAAc,eAAe,IAAI;AACvC,SAAO,gCAAgC,iBAAiB,IAAI,gBAAgB,aAAa,WAAW,QAAQ,mBAAmB,GAAG,CAAC;AACrI;AAEA,SAAS,mBAAmB,QAAgB,MAAsB;AAChE,MAAI,WAAW,KAAK;AAClB,WAAO,oBAAoB,IAAI,sBAAsB,iBAAiB,IAAI,gBAAgB;AAAA,EAC5F;AAEA,SAAO,wBAAwB,MAAM,mBAAmB,IAAI,UAAU,iBAAiB,IAAI,gBAAgB;AAC7G;AAEA,eAAe,iBAAiB,UAAqC;AACnE,SAAO,SAAS,KAAK;AACvB;AAEA,eAAe,sBACb,MACA,WACA,KACiC;AACjC,QAAM,WAAW,MAAM,UAAU,iBAAiB,MAAM,GAAG,GAAG;AAAA,IAC5D,SAAS;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,QAAQ,YAAY,QAAQ,GAAM;AAAA,EACpC,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,mBAAmB,SAAS,QAAQ,IAAI,CAAC;AAAA,EAC3D;AAEA,QAAM,OAAO,MAAM,SAAS,KAAK;AACjC,MAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,UAAM,IAAI,MAAM,aAAa,IAAI,0BAA0B,iBAAiB,IAAI,gBAAgB,GAAG;AAAA,EACrG;AAEA,SAAO,KACJ,OAAO,CAAC,UAAyC;AAChD,QAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,WAAO,MAAM,SAAS,UAAU,MAAM,SAAS;AAAA,EACjD,CAAC,EACA,KAAK,CAAC,MAAM,UAAU,KAAK,KAAK,cAAc,MAAM,IAAI,CAAC;AAC9D;AAEA,eAAe,qBACb,MACA,WACA,KAC4B;AAC5B,QAAM,UAAU,MAAM,sBAAsB,MAAM,WAAW,GAAG;AAChE,QAAM,QAA2B,CAAC;AAElC,aAAW,SAAS,SAAS;AAC3B,QAAI,MAAM,SAAS,OAAO;AACxB,YAAM,KAAK,GAAG,MAAM,qBAAqB,MAAM,MAAM,WAAW,GAAG,CAAC;AACpE;AAAA,IACF;AAEA,QAAI,CAAC,MAAM,cAAc;AACvB,YAAM,IAAI,MAAM,8CAA8C,MAAM,IAAI,IAAI;AAAA,IAC9E;AAEA,UAAM,KAAK;AAAA,MACT,MAAM,MAAM;AAAA,MACZ,WAAW,MAAM;AAAA,IACnB,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAEA,eAAe,gBAAgB,WAAmB,WAA0C;AAC1F,QAAM,WAAW,MAAM,UAAU,WAAW;AAAA,IAC1C,SAAS;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,IACA,QAAQ,YAAY,QAAQ,GAAM;AAAA,EACpC,CAAC;AAED,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,IAAI,MAAM,wBAAwB,SAAS,MAAM,sBAAsB,SAAS,GAAG;AAAA,EAC3F;AAEA,SAAO,iBAAiB,QAAQ;AAClC;AAEA,SAAS,iBACP,MACA,SACA,OACA,WACkB;AAClB,QAAM,WAAW,iBAAiB,IAAI;AACtC,QAAM,UAAU,aAAa;AAE7B,MAAI,SAAS;AACX,kBAAc,MAAM,OAAO;AAAA,EAC7B;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,YAAY,EAAE,UAAU,IAAI,CAAC;AAAA,EACnC;AACF;AAEO,SAAS,sBACd,YAA+B,CAAC,GACtB;AACV,MAAI,UAAU,WAAW,KAAK,UAAU,SAAS,KAAK,GAAG;AACvD,WAAO,CAAC,GAAG,wBAAwB;AAAA,EACrC;AAEA,QAAM,OAAO,oBAAI,IAAY;AAC7B,QAAM,aAAuB,CAAC;AAE9B,aAAW,QAAQ,WAAW;AAC5B,UAAM,OAAO,KAAK,KAAK;AACvB,QAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC3B;AAAA,IACF;AACA,SAAK,IAAI,IAAI;AACb,eAAW,KAAK,IAAI;AAAA,EACtB;AAEA,SAAO;AACT;AAEA,eAAe,wBACb,WACA,KACmB;AACnB,QAAM,UAAU,MAAM,sBAAsB,IAAI,WAAW,GAAG;AAC9D,SAAO,QACJ,OAAO,CAAC,MAAM,EAAE,SAAS,SAAS,CAAC,mBAAmB,IAAI,EAAE,IAAI,CAAC,EACjE,IAAI,CAAC,MAAM,EAAE,IAAI;AACtB;AAEA,eAAe,iBACb,WACA,iBACA,WACA,KAC6B;AAC7B,QAAM,WAAW;AACjB,QAAM,QAAQ,MAAM,qBAAqB,UAAU,WAAW,GAAG;AACjE,QAAM,SAA6B,CAAC;AAEpC,aAAW,QAAQ,OAAO;AACxB,UAAM,UAAU,MAAM,gBAAgB,KAAK,WAAW,SAAS;AAC/D,UAAM,eAAe,KAAK,KAAK,MAAM,GAAG,QAAQ,IAAI,MAAM;AAC1D,WAAO;AAAA,MACL;AAAA,QACEC,MAAK,iBAAiB,WAAW,YAAY;AAAA,QAC7C;AAAA,QACA,GAAG,SAAS,IAAI,YAAY;AAAA,QAC5B,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AAAA,IACL,MAAM;AAAA,IACN,OAAO;AAAA,EACT;AACF;AAEA,eAAsB,kBACpB,UAAoC,CAAC,GACP;AAC9B,QAAM,YAAY,QAAQ,aAAa,WAAW;AAClD,MAAI,CAAC,WAAW;AACd,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAChE;AAEA,QAAM,MAAM,QAAQ,OAAO;AAC3B,QAAM,kBAAkB,QAAQ,mBAAmB;AACnD,QAAM,sBAAsB,QAAQ,uBAAuB;AAC3D,QAAM,iBAAiB,QAAQ,kBAAkB;AACjD,QAAM,iBAAiB,QAAQ,cAAc,CAAC;AAC9C,MAAI;AACJ,MAAI,eAAe,WAAW,KAAK,eAAe,SAAS,KAAK,GAAG;AACjE,QAAI;AACF,mBAAa,MAAM,wBAAwB,WAAW,GAAG;AAAA,IAC3D,QAAQ;AACN,mBAAa,CAAC,GAAG,wBAAwB;AAAA,IAC3C;AAAA,EACF,OAAO;AACL,iBAAa,sBAAsB,cAAc;AAAA,EACnD;AAEA,QAAM,SAA6B;AAAA,IACjC,iBAAiB,gBAAgB,sBAAsB,cAAc;AAAA,IACrE,iBAAiB,qBAAqB,2BAA2B,mBAAmB;AAAA,EACtF;AAEA,QAAM,QAA8B,CAAC;AACrC,aAAW,aAAa,YAAY;AAClC,UAAM,KAAK,MAAM,iBAAiB,WAAW,iBAAiB,WAAW,GAAG,CAAC;AAAA,EAC/E;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACxUA,IAAM,yBAAyB;AAC/B,IAAM,uBAAuB;AA6C7B,SAAS,gBAAgB,OAAmC;AAC1D,QAAM,UAAU,MAAM,KAAK;AAC3B,SAAO,QAAQ,SAAS,IAAI,UAAU;AACxC;AAEA,SAAS,aACP,SACA,UAAU,kCACY;AACtB,UAAQ,OAAO,OAAO;AACtB,SAAO;AAAA,IACL;AAAA,IACA,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,oBAAoB,WAA0B,oBAAqC;AAC1F,QAAM,WAAqB,CAAC;AAE5B,MAAI,UAAU,WAAW;AACvB,aAAS,KAAK,SAAS;AAAA,EACzB;AAEA,MAAI,UAAU,OAAO,oBAAoB;AACvC,aAAS,KAAK,SAAS;AAAA,EACzB;AAEA,MAAI,SAAS,WAAW,GAAG;AACzB,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO,GAAG,UAAU,IAAI,KAAK,SAAS,KAAK,IAAI,CAAC;AAClD;AAEO,SAAS,4BACd,YACA,oBACyB;AACzB,QAAM,UAAU,WAAW,IAAI,CAAC,eAAe;AAAA,IAC7C,OAAO,UAAU;AAAA,IACjB,OAAO,oBAAoB,WAAW,kBAAkB;AAAA,IACxD,GAAI,UAAU,cAAc,EAAE,MAAM,UAAU,YAAY,IAAI,CAAC;AAAA,EACjE,EAAE;AAEF,UAAQ;AAAA,IACN;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AACT;AAEA,eAAe,uBAAuB,SAA0D;AAC9F,SAAO,QAAQ,KAAK;AAAA,IAClB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,SAAS,OAAO;AACd,UAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,GAAG;AACvC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,EACF,CAAC;AACH;AAEA,eAAe,8BACb,SAC0B;AAC1B,SAAO,QAAQ,KAAK;AAAA,IAClB,SAAS;AAAA,IACT,aAAa;AAAA,EACf,CAAC;AACH;AAEA,eAAe,yBACb,QACA,SAC+B;AAC/B,QAAM,OAAO,MAAM,uBAAuB,OAAO;AACjD,MAAI,QAAQ,SAAS,IAAI,GAAG;AAC1B,WAAO,aAAa,OAAO;AAAA,EAC7B;AACA,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,aAAa,OAAO;AAAA,EAC7B;AAEA,QAAM,cAAc,MAAM,8BAA8B,OAAO;AAC/D,MAAI,QAAQ,SAAS,WAAW,GAAG;AACjC,WAAO,aAAa,OAAO;AAAA,EAC7B;AACA,MAAI,OAAO,gBAAgB,UAAU;AACnC,WAAO,aAAa,OAAO;AAAA,EAC7B;AAEA,QAAM,qBAAqB,gBAAgB,WAAW;AACtD,QAAM,uBAA6C,qBAC/C,EAAE,MAAM,aAAa,mBAAmB,IACxC,EAAE,KAAK;AAEX,QAAM,UAAU,MAAM,OAAO,gBAAgB,oBAAoB;AAEjE,MAAI,QAAQ,WAAW;AACrB,WAAO;AAAA,MACL,SAAS;AAAA,MACT,gBAAgB;AAAA,MAChB,SAAS,YAAY,QAAQ,IAAI;AAAA,MACjC,QAAQ;AAAA,MACR,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,OAAO,oBAAoB,EAAE,IAAI,QAAQ,GAAG,CAAC;AACpE,SAAO;AAAA,IACL,SAAS;AAAA,IACT,gBAAgB,SAAS;AAAA,IACzB,SAAS,YAAY,SAAS,UAAU,IAAI;AAAA,IAC5C,QAAQ;AAAA,IACR,WAAW,SAAS;AAAA,EACtB;AACF;AAEA,eAAsB,kBACpB,QACA,SACA,SAC+B;AAC/B,MAAI,CAAC,QAAQ,aAAa;AACxB,WAAO;AAAA,MACL,SACE;AAAA,MACF,QAAQ;AAAA,IACV;AAAA,EACF;AAEA,QAAM,aAAa,MAAM,OAAO,eAAe;AAC/C,QAAM,mBACJ,WAAW,SAAS,IAChB,MAAM,OAAO,oBAAoB,EAAE,MAAM,MAAM,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS,KAAK,IAAI,IAC1G;AAEN,MAAI,WAAW,WAAW,GAAG;AAC3B,UAAM,SAAS,MAAM,QAAQ,OAAO;AAAA,MAClC,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,OAAO;AAAA,UACP,OAAO;AAAA,UACP,MAAM;AAAA,QACR;AAAA,MACF;AAAA,MACA,cAAc;AAAA,IAChB,CAAC;AAED,QAAI,QAAQ,SAAS,MAAM,GAAG;AAC5B,aAAO,aAAa,OAAO;AAAA,IAC7B;AAEA,QAAI,WAAW,sBAAsB;AACnC,aAAO;AAAA,QACL,SAAS;AAAA,QACT,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,yBAAyB,QAAQ,OAAO;AAAA,EACjD;AAEA,QAAM,qBACJ,kBAAkB,MAClB,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS,GAAG,MACrD,WAAW,CAAC,GAAG;AACjB,QAAM,WAAW,MAAM,QAAQ,OAAO;AAAA,IACpC,SAAS;AAAA,IACT,SAAS;AAAA,MACP;AAAA,MACA,kBAAkB,MAAM,WAAW,KAAK,CAAC,cAAc,UAAU,SAAS,GAAG;AAAA,IAC/E;AAAA,IACA,GAAI,qBAAqB,EAAE,cAAc,mBAAmB,IAAI,CAAC;AAAA,EACnE,CAAC;AAED,MAAI,QAAQ,SAAS,QAAQ,GAAG;AAC9B,WAAO,aAAa,OAAO;AAAA,EAC7B;AACA,MAAI,OAAO,aAAa,UAAU;AAChC,WAAO,aAAa,OAAO;AAAA,EAC7B;AAEA,MAAI,aAAa,sBAAsB;AACrC,WAAO;AAAA,MACL,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,GAAI,mBAAmB,EAAE,WAAW,iBAAiB,IAAI,CAAC;AAAA,IAC5D;AAAA,EACF;AAEA,MAAI,aAAa,wBAAwB;AACvC,WAAO,yBAAyB,QAAQ,OAAO;AAAA,EACjD;AAEA,QAAM,kBAAkB,WAAW,KAAK,CAAC,cAAc,UAAU,OAAO,QAAQ;AAChF,MAAI,CAAC,iBAAiB;AACpB,UAAM,IAAI,MAAM,sBAAsB,QAAQ,0BAA0B;AAAA,EAC1E;AAEA,MAAI,gBAAgB,WAAW;AAC7B,WAAO;AAAA,MACL,gBAAgB;AAAA,MAChB,SAAS,IAAI,gBAAgB,IAAI;AAAA,MACjC,QAAQ;AAAA,MACR,WAAW;AAAA,IACb;AAAA,EACF;AAEA,QAAM,WAAW,MAAM,OAAO,oBAAoB,EAAE,IAAI,gBAAgB,GAAG,CAAC;AAC5E,SAAO;AAAA,IACL,gBAAgB,SAAS;AAAA,IACzB,SAAS,QAAQ,SAAS,UAAU,IAAI;AAAA,IACxC,QAAQ,SAAS,UAAU,YAAY;AAAA,IACvC,WAAW,SAAS;AAAA,EACtB;AACF;;;ACvPA,eAAsB,iBACpB,SACA,SACqD;AACrD,QAAM,iBAAiB,MAAM,sBAAsB;AACnD,QAAM,cAAc,MAAM,kBAAkB;AAAA,IAC1C,YAAY,CAAC,GAAG,wBAAwB;AAAA,EAC1C,CAAC;AAED,MAAI;AACJ,MAAI,YAAY,MAAM,oBAAoB,EAAE,MAAM,MAAM,IAAI;AAE5D,MAAI,aAAa,QAAQ,aAAa;AACpC,qBAAiB,MAAM;AAAA,MACrB;AAAA,QACE;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,eAAe,WAAW,aAAa;AACzC,aAAO;AAAA,IACT;AAEA,gBAAY,eAAe,aAAa,aAAa,MAAM,oBAAoB,EAAE,MAAM,MAAM,IAAI;AAAA,EACnG;AAEA,QAAM,aAAa,0BAA0B;AAAA,IAC3C,UAAU,oBAAoB;AAAA,IAC9B;AAAA,EACF,CAAC;AAED,MAAI;AACJ,MAAI,WAAW;AACb,qBAAiB,MAAM,4BAA4B,SAAS;AAAA,EAC9D;AAEA,SAAO;AAAA,IACL;AAAA,IACA,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAI,iBAAiB,EAAE,eAAe,IAAI,CAAC;AAAA,EAC7C;AACF;;;AC5EO,SAAS,yBACd,SACmB;AACnB,SAAO,QAAQ,IAAI,CAAC,YAAY;AAAA,IAC9B,MAAM,OAAO;AAAA,IACb,OAAO,OAAO,UAAU,YAAY;AAAA,IACpC,SAAS,OAAO;AAAA,EAClB,EAAE;AACJ;;;AChBA,OAAO,SAAuB;AAC9B,OAAOC,SAAQ;AAEf,IAAM,SAAS,CAAC,UAAU,UAAU,UAAU,UAAU,UAAU,UAAU,QAAQ;AAE7E,SAAS,kBAAkBC,OAAmB;AACnD,SAAO,IAAI;AAAA,IACT,MAAMD,IAAG,KAAKC,KAAI;AAAA,IAClB,SAAS;AAAA,MACP,UAAU;AAAA,MACV;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;A1B8CA,SAAS,iBAAiB,QAA+C;AACvE,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;AAEA,SAAS,kBAAkB,UAAiC;AAC1D,aAAW,UAAU,UAAU;AAC7B,UAAM,QAAQ,OAAO,aACjBC,IAAG,MAAM,YAAY,IACrB,OAAO,WACLA,IAAG,OAAO,UAAU,IACpBA,IAAG,IAAI,cAAc;AAC3B,UAAM,OAAO,OAAO,SAAS,cAAcA,IAAG,KAAK,MAAM,IAAIA,IAAG,QAAQ,QAAQ;AAChF,YAAQ,IAAI,GAAGA,IAAG,KAAK,OAAO,KAAK,OAAO,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE;AAC5E,YAAQ,IAAI,KAAK,OAAO,OAAO,EAAE;AACjC,QAAI,OAAO,MAAM;AACf,cAAQ,IAAI,WAAW,OAAO,IAAI,EAAE;AAAA,IACtC;AACA,eAAW,UAAU,OAAO,SAAS;AACnC,cAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,IAC7B;AAAA,EACF;AACF;AAEA,SAAS,qBAAqB,SAAwC;AACpE,aAAW,UAAU,yBAAyB,OAAO,GAAG;AACtD,UAAM,SAAS,OAAO,UAAU,YAAYA,IAAG,MAAM,SAAS,IAAIA,IAAG,OAAO,WAAW;AACvF,YAAQ,IAAI,GAAGA,IAAG,KAAK,OAAO,IAAI,CAAC,IAAI,MAAM,IAAI,OAAO,OAAO,EAAE;AAAA,EACnE;AACF;AAEA,SAAS,wBAAwB,QAAmC;AAClE,aAAW,SAAS,OAAO,QAAQ;AACjC,UAAM,SAAS,MAAM,UAAUA,IAAG,MAAM,SAAS,IAAIA,IAAG,OAAO,WAAW;AAC1E,YAAQ,IAAI,GAAGA,IAAG,KAAK,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE;AAAA,EAC/D;AAEA,aAAW,QAAQ,OAAO,OAAO;AAC/B,UAAM,eAAe,KAAK,MAAM,OAAO,CAAC,SAAS,KAAK,OAAO,EAAE;AAC/D,UAAM,SAAS,eAAe,IAAIA,IAAG,MAAM,SAAS,IAAIA,IAAG,OAAO,WAAW;AAC7E,YAAQ;AAAA,MACN,GAAGA,IAAG,KAAK,KAAK,IAAI,CAAC,IAAI,MAAM,IAAI,YAAY,IAAI,KAAK,MAAM,MAAM;AAAA,IACtE;AAEA,eAAW,QAAQ,KAAK,OAAO;AAC7B,YAAM,QAAQ,KAAK,UAAU,YAAY;AACzC,cAAQ,IAAI,OAAO,KAAK,IAAI,KAAK,IAAI,EAAE;AAAA,IACzC;AAAA,EACF;AACF;AAEA,SAAS,eAAe,WAAgC;AACtD,UAAQ;AAAA,IACN,GAAGA,IAAG,KAAK,UAAU,IAAI,CAAC,GAAG,UAAU,YAAY,IAAIA,IAAG,MAAM,WAAW,CAAC,KAAK,EAAE;AAAA,EACrF;AACA,UAAQ,IAAI,SAAS,UAAU,EAAE,EAAE;AACnC,MAAI,UAAU,aAAa;AACzB,YAAQ,IAAI,kBAAkB,UAAU,WAAW,EAAE;AAAA,EACvD;AACA,MAAI,UAAU,WAAW;AACvB,YAAQ,IAAI,cAAc,UAAU,SAAS,EAAE;AAAA,EACjD;AACA,MAAI,UAAU,WAAW;AACvB,YAAQ,IAAI,cAAc,UAAU,SAAS,EAAE;AAAA,EACjD;AACF;AAEA,SAAS,mBAAmB,YAAmC;AAC7D,MAAI,WAAW,WAAW,GAAG;AAC3B,YAAQ,IAAIA,IAAG,OAAO,yCAAyC,CAAC;AAChE;AAAA,EACF;AAEA,aAAW,aAAa,YAAY;AAClC,mBAAe,SAAS;AAAA,EAC1B;AACF;AAEA,SAAS,0BAA0B,QAAoC;AACrE,UAAQ,IAAIA,IAAG,KAAK,qBAAqB,CAAC;AAE1C,QAAM,cACJ,OAAO,WAAW,YACdA,IAAG,MAAM,SAAS,IAClB,OAAO,WAAW,cAChBA,IAAG,OAAO,WAAW,IACrBA,IAAG,IAAI,OAAO,MAAM;AAC5B,UAAQ,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,EAAE;AAEhD,MAAI,OAAO,WAAW;AACpB,YAAQ,IAAI,gBAAgB,OAAO,UAAU,IAAI,EAAE;AACnD,YAAQ,IAAI,SAAS,OAAO,UAAU,EAAE,EAAE;AAC1C,QAAI,OAAO,UAAU,WAAW;AAC9B,cAAQ,IAAI,gBAAgB;AAAA,IAC9B;AAAA,EACF;AACF;AAEA,SAAS,yBAAyB,QAAmC;AACnE,uBAAqB,OAAO,cAAc;AAC1C,UAAQ,IAAI,EAAE;AACd,0BAAwB,OAAO,WAAW;AAE1C,MAAI,OAAO,gBAAgB;AACzB,YAAQ,IAAI,EAAE;AACd,8BAA0B,OAAO,cAAc;AAAA,EACjD;AAEA,MAAI,OAAO,gBAAgB;AACzB,YAAQ,IAAI,EAAE;AACd,YAAQ,IAAIA,IAAG,KAAK,iBAAiB,CAAC;AACtC,YAAQ;AAAA,MACN,KAAK,OAAO,eAAe,UAAUA,IAAG,MAAM,SAAS,IAAIA,IAAG,OAAO,WAAW,CAAC,IAAI,OAAO,eAAe,WAAW,KAAK;AAAA,IAC7H;AACA,YAAQ,IAAI,WAAW,OAAO,eAAe,OAAO,EAAE;AAAA,EACxD;AACF;AAEA,SAAS,sBAAyB,OAA+B;AAC/D,SAAO;AACT;AA2DA,eAAe,aAAa,OAIC;AAC3B,QAAM,cAAc,MAAM,eACtB,EAAE,GAAG,OAAO,cAAc,MAAM,aAAa,IAC7C,EAAE,SAAS,MAAM,SAAS,SAAS,MAAM,QAAQ;AAErD,SAAO,sBAAsB,MAAY,aAAe,WAAW,CAAC;AACtE;AAEA,eAAe,WAAW,OAKG;AAC3B,QAAM,cAAc,MAAM,eACtB,EAAE,GAAG,OAAO,cAAc,MAAM,aAAa,IAC7C;AAAA,IACE,SAAS,MAAM;AAAA,IACf,GAAI,MAAM,cAAc,EAAE,aAAa,MAAM,YAAY,IAAI,CAAC;AAAA,IAC9D,GAAI,MAAM,WAAW,EAAE,UAAU,MAAM,SAAS,IAAI,CAAC;AAAA,EACvD;AAEJ,SAAO,sBAAsB,MAAY,WAAK,WAAW,CAAC;AAC5D;AAEA,eAAe,qBACb,QACA,SAOC;AACD,QAAM,aAAa,OAAO,KAAK;AAC/B,MAAI,CAAC,WAAW,YAAY,EAAE,WAAW,MAAM,GAAG;AAChD,UAAM,IAAI,MAAM,yDAAyD;AAAA,EAC3E;AAEA,QAAM,UAAU,qBAAqB,QAAQ,OAAO;AACpD,QAAM,eAAe,MAAM,eAAe;AAAA,IACxC,QAAQ;AAAA,IACR,WAAW,WAAW,MAAM,GAAG,EAAE;AAAA,IACjC;AAAA,IACA,QAAQ;AAAA,EACV,CAAC;AAED,MAAI,CAAC,aAAa,IAAI;AACpB,WAAO,EAAE,aAAa;AAAA,EACxB;AAEA,QAAM,SAAS,MAAM,gBAAgB;AAAA,IACnC,QAAQ;AAAA,IACR;AAAA,IACA,aAAY,oBAAI,KAAK,GAAE,YAAY;AAAA,EACrC,CAAC;AACD,QAAM,kBAAkB,cAAc,UAAU,EAAE,WAC9C,MAAM,WAAW,UAAU,IAC3B,CAAC;AAEL,SAAO,EAAE,iBAAiB,QAAQ,aAAa;AACjD;AAEA,eAAe,wBAAwB,OAGnC,CAAC,GAAkB;AACrB,MAAI;AACF,UAAM,YAAY,MAAM,oBAAoB,EAAE,MAAM,MAAM,IAAI;AAC9D,8BAA0B;AAAA,MACxB,GAAI,KAAK,kBAAkB,SAAY,EAAE,eAAe,KAAK,cAAc,IAAI,CAAC;AAAA,MAChF;AAAA,MACA,eAAe,KAAK,iBAAiB,WAAW,QAAQ;AAAA,IAC1D,CAAC;AAAA,EACH,QAAQ;AAAA,EAER;AACF;AAEA,SAAS,oBAAoB,OAAkC;AAC7D,UAAQ,IAAIC,IAAG,KAAK,kBAAkB,CAAC;AAEvC,MAAI,MAAM,SAAS;AACjB,YAAQ,IAAI,KAAKA,IAAG,OAAO,MAAM,SAAS,+BAA+B,CAAC,EAAE;AAAA,EAC9E,WAAW,MAAM,IAAI;AACnB,UAAM,MAAM,MAAM,WAAW,QAAQ,QAAQ;AAC7C,YAAQ,IAAI,KAAKA,IAAG,MAAM,eAAe,GAAG,EAAE,CAAC,EAAE;AAAA,EACnD,OAAO;AACL,UAAM,MAAM,MAAM,WAAW,SAAS,gBAAgB,MAAM,OAAO,YAAY;AAC/E,YAAQ,IAAI,KAAKA,IAAG,IAAI,iBAAiB,GAAG,EAAE,CAAC,IAAI,MAAM,SAAS,eAAe,EAAE;AAAA,EACrF;AAEA,MAAI,MAAM,KAAK;AACb,YAAQ,IAAI,UAAU,MAAM,GAAG,EAAE;AAAA,EACnC;AAEA,aAAW,UAAU,MAAM,SAAS;AAClC,YAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,EAC7B;AACF;AAEA,SAAS,qBAAqB,OAAmC;AAC/D,UAAQ,IAAIA,IAAG,KAAK,YAAY,CAAC;AAEjC,MAAI,MAAM,SAAS;AACjB,YAAQ,IAAI,KAAKA,IAAG,OAAO,MAAM,SAAS,kCAAkC,CAAC,EAAE;AAAA,EACjF,WAAW,MAAM,IAAI;AACnB,YAAQ,IAAI,KAAKA,IAAG,MAAM,WAAW,CAAC,EAAE;AAAA,EAC1C,OAAO;AACL,YAAQ,IAAI,KAAKA,IAAG,IAAI,aAAa,CAAC,IAAI,MAAM,SAAS,eAAe,EAAE;AAAA,EAC5E;AAEA,UAAQ,IAAI,UAAU,MAAM,GAAG,EAAE;AAEjC,aAAW,UAAU,MAAM,SAAS;AAClC,YAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,EAC7B;AACF;AAEA,SAAS,wBAAwB,OAAiC;AAChE,UAAQ,IAAIA,IAAG,KAAK,sBAAsB,CAAC;AAE3C,MAAI,MAAM,SAAS;AACjB,YAAQ,IAAI,KAAKA,IAAG,OAAO,MAAM,SAAS,uCAAuC,CAAC,EAAE;AAAA,EACtF,WAAW,MAAM,IAAI;AACnB,YAAQ,IAAI,KAAKA,IAAG,MAAM,4BAA4B,CAAC,EAAE;AAAA,EAC3D,OAAO;AACL,YAAQ,IAAI,KAAKA,IAAG,IAAI,gCAAgC,CAAC,IAAI,MAAM,SAAS,eAAe,EAAE;AAAA,EAC/F;AAEA,UAAQ,IAAI,WAAW,MAAM,QAAQ,EAAE;AACvC,UAAQ,IAAI,UAAU,MAAM,GAAG,EAAE;AAEjC,MAAI,MAAM,WAAW,QAAQ;AAC3B,YAAQ,IAAI,kBAAkB,iBAAiB,MAAM,MAAM,CAAC,EAAE;AAAA,EAChE;AAEA,MAAI,MAAM,SAAS;AACjB,YAAQ,IAAI,eAAe,MAAM,OAAO,EAAE;AAAA,EAC5C;AAEA,MAAI,MAAM,qBAAqB,QAAW;AACxC,YAAQ,IAAI,wBAAwB,MAAM,gBAAgB,EAAE;AAAA,EAC9D;AAEA,MAAI,MAAM,eAAe,QAAW;AAClC,YAAQ,IAAI,uBAAuB,MAAM,UAAU,EAAE;AAAA,EACvD;AAEA,aAAW,UAAU,MAAM,SAAS;AAClC,YAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,EAC7B;AACF;AAEA,SAAS,uBAAuB,OAA+B;AAC7D,UAAQ,IAAIA,IAAG,KAAK,cAAc,CAAC;AAEnC,MAAI,CAAC,MAAM,WAAW;AACpB,YAAQ,IAAI,KAAKA,IAAG,IAAI,aAAa,CAAC,IAAI,MAAM,SAAS,eAAe,EAAE;AAAA,EAC5E,WAAW,MAAM,WAAW;AAC1B,YAAQ;AAAA,MACN,KAAKA,IAAG,MAAM,WAAW,CAAC,IAAI,MAAM,WAAW,GAAG,MAAM,UAAU,IAAI,MAAM,OAAO,KAAK,EAAE;AAAA,IAC5F;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,KAAKA,IAAG,OAAO,WAAW,CAAC,IAAI,MAAM,SAAS,GAAG,MAAM,WAAW,wBAAwB,EAAE;AAAA,EAC1G;AAEA,UAAQ,IAAI,UAAU,MAAM,GAAG,EAAE;AAEjC,aAAW,UAAU,MAAM,SAAS;AAClC,YAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,EAC7B;AACF;AAEA,SAAS,oBAAoB,OAAuB;AAClD,QAAM,SAAS,OAAO,KAAK;AAC3B,MAAI,CAAC,OAAO,SAAS,MAAM,KAAK,UAAU,GAAG;AAC3C,UAAM,IAAI,MAAM,iDAAiD;AAAA,EACnE;AACA,SAAO;AACT;AAEA,SAAS,8BAA8B,OAAwB;AAC7D,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,SAAO,GAAG,OAAO;AACnB;AAEA,SAAS,gBAAgB,QAAmC;AAC1D,UAAQ,IAAIA,IAAG,KAAK,WAAW,CAAC;AAEhC,MAAI,CAAC,OAAO,YAAY;AACtB,YAAQ,IAAI,KAAKA,IAAG,OAAO,OAAO,SAAS,6BAA6B,CAAC,EAAE;AAC3E;AAAA,EACF;AAEA,QAAM,QAAQ,OAAO,KACjBA,IAAG,MAAM,UAAU,IACnB,OAAO,UACLA,IAAG,OAAO,SAAS,IACnBA,IAAG,IAAI,SAAS;AAEtB,UAAQ;AAAA,IACN,KAAK,KAAK,IAAI,OAAO,aAAa,SAAS,QAAQ,iBAAiB,OAAO,MAAM,CAAC;AAAA,EACpF;AACA,MAAI,OAAO,SAAS;AAClB,YAAQ,IAAI,eAAe,OAAO,OAAO,EAAE;AAAA,EAC7C;AACA,MAAI,OAAO,MAAM;AACf,YAAQ,IAAI,WAAW,OAAO,IAAI,EAAE;AAAA,EACtC;AACA,MAAI,OAAO,YAAY;AACrB,YAAQ,IAAI,kBAAkB,OAAO,UAAU,EAAE;AAAA,EACnD;AACA,MAAI,CAAC,OAAO,MAAM,OAAO,OAAO;AAC9B,YAAQ,IAAI,YAAY,OAAO,KAAK,EAAE;AAAA,EACxC;AACF;AAEA,SAAS,uBAAuB,QAAiC;AAC/D,MAAI,OAAO,SAAS;AAClB,YAAQ,IAAIA,IAAG,OAAO,OAAO,SAAS,6BAA6B,CAAC;AACpE,YAAQ,IAAIA,IAAG,IAAI,yBAAyB,CAAC,CAAC;AAC9C;AAAA,EACF;AAEA,MAAI,CAAC,OAAO,IAAI;AACd,YAAQ,IAAIA,IAAG,IAAI,8BAA8B,OAAO,SAAS,eAAe,EAAE,CAAC;AACnF,QAAI,OAAO,QAAQ;AACjB,cAAQ,IAAI,WAAW,OAAO,MAAM,EAAE;AAAA,IACxC;AACA;AAAA,EACF;AAEA,UAAQ,IAAIA,IAAG,MAAM,iCAAiC,OAAO,GAAG,EAAE,CAAC;AACnE,MAAI,OAAO,MAAM;AACf,YAAQ,IAAI,KAAK,UAAU,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,EAClD;AACF;AAEA,SAAS,2BAA2B,OAAyC;AAC3E,UAAQ,IAAIA,IAAG,KAAK,wBAAwB,CAAC;AAE7C,MAAI,CAAC,MAAM,YAAY;AACrB,YAAQ,IAAI,KAAKA,IAAG,OAAO,MAAM,SAAS,uCAAuC,CAAC,EAAE;AACpF;AAAA,EACF;AAEA,MAAI,CAAC,MAAM,IAAI;AACb,YAAQ,IAAI,KAAKA,IAAG,IAAI,aAAa,CAAC,IAAI,MAAM,SAAS,eAAe,EAAE;AAAA,EAC5E,WAAW,MAAM,WAAW;AAC1B,YAAQ,IAAI,KAAKA,IAAG,MAAM,WAAW,CAAC,IAAI,MAAM,UAAU,IAAI,EAAE;AAChE,YAAQ,IAAI,mBAAmB,MAAM,UAAU,EAAE,EAAE;AACnD,QAAI,MAAM,UAAU,WAAW;AAC7B,cAAQ,IAAI,gBAAgB;AAAA,IAC9B;AAAA,EACF;AAEA,MAAI,MAAM,SAAS;AACjB,YAAQ,IAAI,eAAe,MAAM,OAAO,EAAE;AAAA,EAC5C;AAEA,aAAW,UAAU,MAAM,SAAS;AAClC,YAAQ,IAAI,OAAO,MAAM,EAAE;AAAA,EAC7B;AACF;AAEA,SAAS,sBAAsB,QAAqD;AAClF,UAAQ,IAAIA,IAAG,KAAK,gBAAgB,CAAC;AAErC,MAAI,OAAO,OAAO,WAAW,GAAG;AAC9B,YAAQ,IAAI,KAAKA,IAAG,MAAM,OAAO,CAAC,+BAA+B;AACjE;AAAA,EACF;AAEA,QAAM,WAAW,OAAO,KACpBA,IAAG,OAAO,eAAe,IACzBA,IAAG,IAAI,0BAA0B;AACrC,UAAQ,IAAI,KAAK,QAAQ,EAAE;AAE3B,aAAW,SAAS,OAAO,QAAQ;AACjC,UAAM,QAAQ,MAAM,UAAU,UAAUA,IAAG,IAAI,OAAO,IAAIA,IAAG,OAAO,SAAS;AAC7E,YAAQ,IAAI,KAAK,KAAK,IAAI,MAAM,KAAK,EAAE;AACvC,YAAQ,IAAI,UAAU,MAAM,UAAU,EAAE;AAAA,EAC1C;AACF;AAEA,eAAe,OAAsB;AACnC,QAAM,UAAU,IAAI,QAAQ;AAC5B,UACG,KAAK,aAAa,EAClB,YAAY,4CAA4C,EACxD,mBAAmB;AAEtB,UAAQ,KAAK,aAAa,MAAM;AAC9B,YAAQ,IAAI,aAAa,CAAC;AAAA,EAC5B,CAAC;AAED,UACG,QAAQ,OAAO,EACf,YAAY,6CAA6C,EACzD,OAAO,mBAAmB,yCAAyC,EACnE,OAAO,OAAO,YAAiC;AAC9C,QAAI,QAAQ,QAAQ;AAClB,UAAI,QAAQ,WAAW,WAAW;AAChC,cAAM,IAAI,MAAM,yBAAyB,QAAQ,MAAM,gCAAgC;AAAA,MACzF;AAEA,YAAMC,WAAU,kBAAkB,8BAA8B;AAChE,MAAAA,SAAQ,MAAM;AACd,YAAM,eAAe,MAAM;AAAA,QACzB;AAAA,UACE,QAAc;AAAA,UACd,UAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,aAAa,QAAQ,QAAQ,MAAM,SAAS,QAAQ,OAAO,KAAK;AAAA,QAClE;AAAA,MACF;AAEA,UAAI,YAAY,cAAc;AAC5B,QAAAA,SAAQ,KAAK;AACb,YAAI,aAAa,WAAW,aAAa;AACvC;AAAA,QACF;AACA,kCAA0B,YAAY;AACtC;AAAA,MACF;AAEA,MAAAA,SAAQ,QAAQ,+BAA+B;AAC/C,+BAAyB,YAAY;AAErC,cAAQ,IAAI,EAAE;AACd,YAAMC,UAAS,MAAM,UAAU;AAC/B,wBAAkBA,QAAO,QAAQ;AACjC,cAAQ,IAAI,EAAE;AACd,sBAAgBA,QAAO,IAAI;AAC3B,cAAQ,IAAI,EAAE;AACd,2BAAqBA,QAAO,SAAS;AACrC,cAAQ,IAAI,EAAE;AACd,8BAAwBA,QAAO,aAAa;AAC5C,cAAQ,IAAI,EAAE;AACd,6BAAuBA,QAAO,WAAW;AACzC,cAAQ,IAAI,EAAE;AACd,iCAA2BA,QAAO,SAAS;AAC3C,cAAQ,IAAI,EAAE;AACd,0BAAoBA,QAAO,QAAQ;AACnC,cAAQ,IAAI,EAAE;AACd,6BAAuBA,QAAO,MAAM;AACpC,cAAQ,IAAI,EAAE;AACd,YAAMC,cAAa,mBAAmBD,OAAM;AAC5C,4BAAsBC,WAAU;AAChC,UAAI,CAACA,YAAW,IAAI;AAClB,gBAAQ,WAAW;AAAA,MACrB;AACA;AAAA,IACF;AAEA,UAAM,UAAU,kBAAkB,oCAAoC;AACtE,YAAQ,MAAM;AACd,UAAM,UAAU,MAAM,sBAAsB;AAC5C,YAAQ,QAAQ,8BAA8B;AAC9C,yBAAqB,OAAO;AAE5B,UAAM,eAAe,MAAM,gBAAgB;AAC3C,QAAI,CAAC,cAAc;AACjB,cAAQ,IAAI,EAAE;AACd,cAAQ;AAAA,QACN,GAAGH,IAAG,OAAO,6BAA6B,CAAC,QAAQA,IAAG,KAAK,wBAAwB,CAAC;AAAA,MACtF;AAAA,IACF;AACA,QAAI,cAAc;AAChB,cAAQ,IAAI,EAAE;AACd,YAAM,iBAAiB,MAAM;AAAA,QAC3B;AAAA,UACE;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA;AAAA,UACE,QAAc;AAAA,UACd,UAAgB;AAAA,UAChB,QAAQ;AAAA,UACR,MAAM;AAAA,QACR;AAAA,QACA;AAAA,UACE,aAAa,QAAQ,QAAQ,MAAM,SAAS,QAAQ,OAAO,KAAK;AAAA,QAClE;AAAA,MACF;AACA,UAAI,eAAe,WAAW,aAAa;AACzC,kCAA0B,cAAc;AAAA,MAC1C,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAEA,YAAQ,IAAI,EAAE;AACd,UAAM,SAAS,MAAM,UAAU;AAC/B,sBAAkB,OAAO,QAAQ;AACjC,YAAQ,IAAI,EAAE;AACd,oBAAgB,OAAO,IAAI;AAC3B,YAAQ,IAAI,EAAE;AACd,yBAAqB,OAAO,SAAS;AACrC,YAAQ,IAAI,EAAE;AACd,4BAAwB,OAAO,aAAa;AAC5C,YAAQ,IAAI,EAAE;AACd,2BAAuB,OAAO,WAAW;AACzC,YAAQ,IAAI,EAAE;AACd,+BAA2B,OAAO,SAAS;AAC3C,YAAQ,IAAI,EAAE;AACd,wBAAoB,OAAO,QAAQ;AACnC,YAAQ,IAAI,EAAE;AACd,2BAAuB,OAAO,MAAM;AACpC,YAAQ,IAAI,EAAE;AACd,UAAM,aAAa,mBAAmB,MAAM;AAC5C,0BAAsB,UAAU;AAChC,QAAI,CAAC,WAAW,IAAI;AAClB,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF,CAAC;AAEH,QAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,YAAY,0CAA0C;AAE3F,OACG,QAAQ,QAAQ,EAChB,YAAY,mEAAmE,EAC/E,OAAO,YAAY;AAClB,UAAM,UAAU,kBAAkB,oBAAoB;AACtD,YAAQ,MAAM;AACd,UAAM,SAAS,MAAM,cAAc;AACnC,YAAQ,KAAK;AACb,oBAAgB,MAAM;AAAA,EACxB,CAAC;AAEH,OACG,QAAQ,OAAO,EACf,YAAY,gGAAgG,EAC5G,OAAO,mBAAmB,+DAA+D,EACzF,OAAO,oBAAoB,eAAe,EAC1C,OAAO,wBAAwB,4CAA4C,EAC3E,OAAO,aAAa,oDAAoD,EACxE,OAAO,uBAAuB,0DAA0D,qBAAqB,GAAG,EAChH,OAAO,OAAO,YAAyG;AACtH,QAAI,QAAQ,QAAQ;AAClB,YAAMC,WAAU,kBAAkB,wBAAwB;AAC1D,MAAAA,SAAQ,MAAM;AACd,YAAM,SAAS,MAAM,qBAAqB,QAAQ,QAAQ,OAAO;AAEjE,UAAI,EAAE,YAAY,SAAS;AACzB,QAAAA,SAAQ,KAAK,kCAAkC;AAC/C,wBAAgB,OAAO,YAAY;AACnC;AAAA,MACF;AAEA,MAAAA,SAAQ,QAAQ,iCAAiC;AACjD,YAAM,wBAAwB;AAC9B,sBAAgB;AAAA,QACd,GAAG,OAAO;AAAA,QACV,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,YAAY,OAAO,OAAO;AAAA,MAC5B,CAAC;AAED,UAAI,OAAO,gBAAgB,SAAS,GAAG;AACrC,gBAAQ,IAAI,EAAE;AACd,6BAAqB,OAAO,eAAe;AAAA,MAC7C;AACA;AAAA,IACF;AAEA,UAAM,iBAAiB,gCAAgC;AACvD,UAAM,UAAU,kBAAkB,+BAA+B;AACjE,YAAQ,MAAM;AAEd,QAAI;AACF,YAAM,UAAU,MAAM,oBAAoB;AAAA,QACxC;AAAA,QACA,SAAS,QAAQ;AAAA,QACjB,YAAY,QAAQ,cAAc,SAAS;AAAA,QAC3C,UAAU,QAAQ;AAAA,MACpB,CAAC;AACD,cAAQ,QAAQ,8BAA8B;AAE9C,cAAQ,IAAI,qBAAqB,QAAQ,UAAU,EAAE;AACrD,UAAI,QAAQ,SAAS,OAAO;AAC1B,cAAM,aAAa,YAAY,QAAQ,UAAU;AACjD,YAAI,CAAC,WAAW,MAAM,WAAW,OAAO;AACtC,kBAAQ,IAAID,IAAG,OAAO,wBAAwB,WAAW,KAAK,EAAE,CAAC;AAAA,QACnE;AAAA,MACF;AAEA,cAAQ,MAAM;AACd,cAAQ,OAAOA,IAAG,KAAK,mCAAmC;AAC1D,YAAM,QAAQ,MAAM,sBAAsB;AAAA,QACxC,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QACnB,gBAAgB,QAAQ;AAAA,QACxB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ,UAAU;AAAA,MAC/B,CAAC;AAED,cAAQ,OAAOA,IAAG,KAAK,wBAAwB;AAC/C,YAAM,SAAS,MAAM,qBAAqB,MAAM,KAAM,OAAO;AAE7D,UAAI,EAAE,YAAY,SAAS;AACzB,gBAAQ,KAAK,mDAAmD;AAChE,wBAAgB,OAAO,YAAY;AACnC;AAAA,MACF;AAEA,YAAM,0BAA0B;AAAA,QAC9B,SAAS,QAAQ;AAAA,QACjB,WAAW,QAAQ;AAAA,QACnB,WAAW,QAAQ;AAAA,MACrB,CAAC,EAAE,MAAM,CAAC,UAAmB;AAC3B,gBAAQ,IAAIA,IAAG,OAAO,+BAA+B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,EAAE,CAAC;AAAA,MAChH,CAAC;AAED,cAAQ,QAAQ,gCAAgC;AAChD,YAAM,wBAAwB;AAAA,QAC5B,eAAe,MAAM;AAAA,QACrB,eAAe,MAAM;AAAA,MACvB,CAAC;AACD,sBAAgB;AAAA,QACd,GAAG,OAAO;AAAA,QACV,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,YAAY,OAAO,OAAO;AAAA,MAC5B,CAAC;AAED,UAAI,MAAM,eAAe;AACvB,gBAAQ,IAAI,cAAc,MAAM,aAAa,EAAE;AAAA,MACjD;AAEA,UAAI,OAAO,gBAAgB,SAAS,GAAG;AACrC,gBAAQ,IAAI,EAAE;AACd,6BAAqB,OAAO,eAAe;AAAA,MAC7C;AAAA,IACF,SAAS,OAAO;AACd,cAAQ,KAAK,6BAA6B;AAC1C,cAAQ,IAAIA,IAAG,IAAI,8BAA8B,KAAK,CAAC,CAAC;AAAA,IAC1D;AAAA,EACF,CAAC;AAEH,OACG,QAAQ,SAAS,EACjB,YAAY,4DAA4D,EACxE,SAAS,YAAY,iCAAiC,EACtD,OAAO,oBAAoB,eAAe,EAC1C,OAAO,OAAO,QAAgB,YAAkC;AAC/D,UAAM,UAAU,kBAAkB,wBAAwB;AAC1D,YAAQ,MAAM;AACd,UAAM,SAAS,MAAM,qBAAqB,QAAQ,OAAO;AAEzD,QAAI,EAAE,YAAY,SAAS;AACzB,cAAQ,KAAK,kCAAkC;AAC/C,sBAAgB,OAAO,YAAY;AACnC;AAAA,IACF;AAEA,YAAQ,QAAQ,iCAAiC;AACjD,UAAM,wBAAwB;AAC9B,oBAAgB;AAAA,MACd,GAAG,OAAO;AAAA,MACV,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,YAAY,OAAO,OAAO;AAAA,IAC5B,CAAC;AAED,QAAI,OAAO,gBAAgB,SAAS,GAAG;AACrC,cAAQ,IAAI,EAAE;AACd,2BAAqB,OAAO,eAAe;AAAA,IAC7C;AAAA,EACF,CAAC;AAEH,OACG,QAAQ,OAAO,EACf,YAAY,6CAA6C,EACzD,OAAO,YAAY;AAClB,UAAM,UAAU,MAAM,gBAAgB;AACtC,QAAI,SAAS;AACX,cAAQ,IAAIA,IAAG,MAAM,wCAAwC,CAAC;AAAA,IAChE,OAAO;AACL,cAAQ,IAAIA,IAAG,OAAO,0CAA0C,CAAC;AAAA,IACnE;AAEA,UAAM,WAAW,MAAM,gBAAgB;AACvC,QAAI,UAAU;AACZ,cAAQ;AAAA,QACN,2CAA2C,iBAAiB,SAAS,MAAM,CAAC,KAAK,SAAS,SAAS;AAAA,MACrG;AAAA,IACF;AAAA,EACF,CAAC;AAEH,QAAM,UAAU,QAAQ,QAAQ,SAAS,EAAE,YAAY,iCAAiC;AAExF,UACG,QAAQ,MAAM,EACd,YAAY,mDAAmD,EAC/D,OAAO,MAAM;AACZ,sBAAkB,oBAAoB,CAAC;AAAA,EACzC,CAAC;AAEH,UACG,QAAQ,KAAK,EACb,YAAY,8CAA8C,EAC1D,SAAS,cAAc,wBAAwB,EAC/C,OAAO,OAAO,UAAoB;AACjC,UAAM,UAAU,MAAM,WAAW,KAAyC;AAC1E,yBAAqB,OAAO;AAAA,EAC9B,CAAC;AAEH,UACG,QAAQ,QAAQ,EAChB,YAAY,wEAAwE,EACpF,SAAS,cAAc,wBAAwB,EAC/C,OAAO,CAAC,UAAoB;AAC3B,UAAM,UAAU,cAAc,KAA4C;AAC1E,yBAAqB,OAAO;AAAA,EAC9B,CAAC;AAEH,QAAM,MAAM,QACT,QAAQ,KAAK,EACb,YAAY,gFAAgF;AAE/F,MACG,QAAQ,KAAK,EACb,YAAY,kEAAkE,EAC9E,SAAS,iBAAiB,wDAAwD,CAAC,KAAK,CAAC,EACzF,OAAO,OAAO,UAAoB;AACjC,UAAM,UAAU,MAAM,cAAc,KAA4C;AAChF,yBAAqB,OAAO;AAAA,EAC9B,CAAC;AAEH,MACG,QAAQ,QAAQ,EAChB,YAAY,uEAAuE,EACnF,SAAS,iBAAiB,wDAAwD,CAAC,KAAK,CAAC,EACzF,OAAO,CAAC,UAAoB;AAC3B,UAAM,UAAU,iBAAiB,KAA+C;AAChF,yBAAqB,OAAO;AAAA,EAC9B,CAAC;AAEH,QAAM,YAAY,QACf,QAAQ,WAAW,EACnB,YAAY,qCAAqC;AAEpD,YACG,QAAQ,SAAS,EACjB,YAAY,kCAAkC,EAC9C,OAAO,YAAY;AAClB,UAAM,UAAU,kBAAkB,gCAAgC;AAClE,YAAQ,MAAM;AACd,UAAM,UAAU,MAAM,oBAAoB;AAC1C,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS;AACZ,cAAQ,IAAIA,IAAG,OAAO,gDAAgD,CAAC;AACvE;AAAA,IACF;AAEA,mBAAe,OAAO;AAAA,EACxB,CAAC;AAEH,YACG,QAAQ,MAAM,EACd,YAAY,2DAA2D,EACvE,OAAO,YAAY;AAClB,UAAM,UAAU,kBAAkB,yBAAyB;AAC3D,YAAQ,MAAM;AACd,UAAM,aAAa,MAAM,eAAe;AACxC,YAAQ,KAAK;AACb,uBAAmB,UAAU;AAAA,EAC/B,CAAC;AAEH,YACG,QAAQ,QAAQ,EAChB,YAAY,8BAA8B,EAC1C,SAAS,UAAU,gBAAgB,EACnC,OAAO,wBAAwB,uBAAuB,EACtD,OAAO,OAAO,MAAc,YAAsC;AACjE,UAAM,UAAU,kBAAkB,yBAAyB;AAC3D,YAAQ,MAAM;AACd,UAAM,UAAU,MAAM;AAAA,MACpB;AAAA,QACE;AAAA,QACA,GAAI,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAY,IAAI,CAAC;AAAA,MACpE;AAAA,IACF;AACA,YAAQ,QAAQ,wBAAwB;AACxC,mBAAe,OAAO;AACtB,QAAI,CAAC,QAAQ,WAAW;AACtB,cAAQ,IAAI,EAAE;AACd,cAAQ,IAAIA,IAAG,IAAI,sCAAsC,QAAQ,EAAE,mBAAmB,CAAC;AAAA,IACzF;AAAA,EACF,CAAC;AAEH,YACG,QAAQ,aAAa,EACrB,YAAY,iCAAiC,EAC7C,SAAS,QAAQ,cAAc,EAC/B,OAAO,OAAO,OAAe;AAC5B,UAAM,UAAU,kBAAkB,iCAAiC;AACnE,YAAQ,MAAM;AACd,UAAM,SAAS,MAAM,oBAAoB,EAAE,GAAG,CAAC;AAC/C,YAAQ;AAAA,MACN,OAAO,UAAU,mCAAmC;AAAA,IACtD;AACA,mBAAe,OAAO,SAAS;AAAA,EACjC,CAAC;AAEH,UACG,QAAQ,QAAQ,EAChB,YAAY,oEAAoE,EAChF,OAAO,YAAY;AAClB,UAAM,UAAU,kBAAkB,qBAAqB;AACvD,YAAQ,MAAM;AACd,UAAM,SAAS,MAAM,UAAU;AAC/B,YAAQ,KAAK;AACb,sBAAkB,OAAO,QAAQ;AACjC,YAAQ,IAAI,EAAE;AACd,oBAAgB,OAAO,IAAI;AAC3B,YAAQ,IAAI,EAAE;AACd,yBAAqB,OAAO,SAAS;AACrC,YAAQ,IAAI,EAAE;AACd,4BAAwB,OAAO,aAAa;AAC5C,YAAQ,IAAI,EAAE;AACd,2BAAuB,OAAO,WAAW;AACzC,YAAQ,IAAI,EAAE;AACd,+BAA2B,OAAO,SAAS;AAC3C,YAAQ,IAAI,EAAE;AACd,wBAAoB,OAAO,QAAQ;AACnC,YAAQ,IAAI,EAAE;AACd,2BAAuB,OAAO,MAAM;AACpC,YAAQ,IAAI,EAAE;AACd,UAAM,aAAa,mBAAmB,MAAM;AAC5C,0BAAsB,UAAU;AAChC,QAAI,CAAC,WAAW,IAAI;AAClB,cAAQ,WAAW;AAAA,IACrB;AAAA,EACF,CAAC;AAEH,QAAM,SAAS,QACZ,QAAQ,QAAQ,EAChB,YAAY,4CAA4C;AAE3D,SACG,QAAQ,KAAK,EACb,YAAY,yEAAyE,EACrF,SAAS,cAAc,6BAA6B,CAAC,KAAK,CAAC,EAC3D,OAAO,OAAO,UAAoB;AACjC,UAAM,UAAU,kBAAkB,kCAAkC;AACpE,YAAQ,MAAM;AACd,UAAM,SAAS,MAAM,kBAAkB,EAAE,YAAY,MAAM,CAAC;AAC5D,YAAQ,QAAQ,iCAAiC;AACjD,4BAAwB,MAAM;AAAA,EAChC,CAAC;AAEH,QAAM,QAAQ,WAAW,QAAQ,IAAI;AACvC;AAEA,KAAK,EAAE,MAAM,CAAC,UAAU;AACtB,UAAQ,MAAMA,IAAG,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC,CAAC;AAC5E,UAAQ,WAAW;AACrB,CAAC;","names":["pc","hostname","text","text","text","spawnSync","spawnSync","text","text","text","parseResponseBody","text","existsSync","dirname","dirname","existsSync","inspection","isNonEmptyString","parseResponseBody","text","formatHttpError","requireOrgxAuth","join","join","pc","text","pc","pc","spinner","doctor","assessment"]}
|