{"version":3,"file":"prepare.mjs","names":[],"sources":["../../../../src/cli/commands/sync/prepare.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { loadDomains } from '@agimon-ai/doompi-config/domains';\nimport { loadMajorModesConfig } from '@agimon-ai/doompi-config/majorModes';\nimport type { HarnessTelemetry } from '@agimon-ai/doompi-core/runtime-log-sink-telemetry';\n\nimport { buildPreparedRuntime, type BuildResult } from '../../../builders/cli/prepare';\nimport { DUPLICATE_REGISTRATION_DRIFT } from '../../../builders/cli/projectSettings';\nimport { parseHarnessArgs } from '../../options';\nimport { environmentForSyncScope, resolveSyncRoots, selectionEnvironment } from './index';\nexport type { BuildResult } from '../../../builders/cli/prepare';\ntype BuildOutput = Pick<NodeJS.WritableStream, 'write'>;\nexport function formatBuildResult(result: BuildResult): string {\n  return [\n    `bundle:     ${result.bundle}`,\n    `manifest:   ${result.manifest}`,\n    `extensions: ${result.extensionCount} -> 1`,\n    `skills:     ${result.skillCount}`,\n    `agents:     ${result.agentCount}`,\n    ...(result.syncedBootstrap\n      ? [`bootstrap:  ${result.syncedBootstrap}`, `modes:      ${String(result.syncedBundleCount ?? 0)} precompiled`]\n      : []),\n    // Build never writes settings, so it reports what only sync can repair.\n    ...(result.duplicateRegistration ? [`warning:    ${DUPLICATE_REGISTRATION_DRIFT}; run doompi sync`] : []),\n    '',\n    'Doom Pi is built. The next launch will use the dist mode extension.',\n    '',\n  ].join('\\n');\n}\n\nexport async function prepareSync(\n  args: string[],\n  environment: NodeJS.ProcessEnv = process.env,\n  currentDirectory = process.cwd(),\n  output: BuildOutput = process.stdout,\n  telemetry?: HarnessTelemetry,\n): Promise<number> {\n  const homeDirectory = environment.HOME ?? os.homedir();\n  const roots = resolveSyncRoots(args, environment, currentDirectory, homeDirectory);\n  const repoRoot = roots.targetRoot;\n  const scopedEnvironment = environmentForSyncScope(environment, roots.globalOnly);\n  const parsed = parseHarnessArgs(\n    args.slice(1).filter((argument) => argument !== '--global'),\n    selectionEnvironment(repoRoot, scopedEnvironment, homeDirectory),\n    roots.globalOnly ? repoRoot : currentDirectory,\n    loadMajorModesConfig(repoRoot, homeDirectory).defaultMajorMode,\n    loadDomains(repoRoot, homeDirectory).defaultDomains,\n  );\n  const result = await buildPreparedRuntime(\n    { ...parsed.options, repoRoot, homeDirectory },\n    scopedEnvironment,\n    telemetry,\n  );\n  output.write(formatBuildResult(result));\n  return 0;\n}\n"],"mappings":";;;;;;;;AAYA,SAAgB,kBAAkB,QAA6B;CAC7D,OAAO;EACL,eAAe,OAAO;EACtB,eAAe,OAAO;EACtB,eAAe,OAAO,eAAe;EACrC,eAAe,OAAO;EACtB,eAAe,OAAO;EACtB,GAAI,OAAO,kBACP,CAAC,eAAe,OAAO,mBAAmB,eAAe,OAAO,OAAO,qBAAqB,CAAC,EAAE,aAAa,IAC5G,CAAC;EAEL,GAAI,OAAO,wBAAwB,CAAC,eAAe,6BAA6B,kBAAkB,IAAI,CAAC;EACvG;EACA;EACA;CACF,CAAC,CAAC,KAAK,IAAI;AACb;AAEA,eAAsB,YACpB,MACA,cAAiC,QAAQ,KACzC,mBAAmB,QAAQ,IAAI,GAC/B,SAAsB,QAAQ,QAC9B,WACiB;CACjB,MAAM,gBAAgB,YAAY,QAAQ,GAAG,QAAQ;CACrD,MAAM,QAAQ,iBAAiB,MAAM,aAAa,kBAAkB,aAAa;CACjF,MAAM,WAAW,MAAM;CACvB,MAAM,oBAAoB,wBAAwB,aAAa,MAAM,UAAU;CAC/E,MAAM,SAAS,iBACb,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,aAAa,aAAa,UAAU,GAC1D,qBAAqB,UAAU,mBAAmB,aAAa,GAC/D,MAAM,aAAa,WAAW,kBAC9B,qBAAqB,UAAU,aAAa,CAAC,CAAC,kBAC9C,YAAY,UAAU,aAAa,CAAC,CAAC,cACvC;CACA,MAAM,SAAS,MAAM,qBACnB;EAAE,GAAG,OAAO;EAAS;EAAU;CAAc,GAC7C,mBACA,SACF;CACA,OAAO,MAAM,kBAAkB,MAAM,CAAC;CACtC,OAAO;AACT"}