{"version":3,"file":"plugin.mjs","names":[],"sources":["../src/plugin.ts"],"sourcesContent":["import process from \"node:process\";\nimport * as p from \"@clack/prompts\";\nimport { Context, Effect, Layer } from \"effect\";\nimport { buildScoped, buildScopedContext } from \"every-plugin\";\nimport { cliDeployTrainRender } from \"./cli/render/deploy-train\";\nimport { cliWorkspaceBuildRender } from \"./cli/render/workspace-build\";\nimport { bosContract } from \"./contract\";\nimport { DatabaseBindings, DrizzleKit, makeDatabaseBindings, makeDrizzleKitLive } from \"./db\";\nimport { ProjectEnv, ProjectEnvLive } from \"./env/project-env\";\nimport { registerBuild } from \"./handlers/build\";\nimport { registerConfig } from \"./handlers/config\";\nimport { registerDb } from \"./handlers/db\";\nimport { registerDeploy } from \"./handlers/deploy\";\nimport { registerDev } from \"./handlers/dev\";\nimport { registerImport } from \"./handlers/import\";\nimport { registerInit } from \"./handlers/init\";\nimport { registerKeys } from \"./handlers/keys\";\nimport { registerOps } from \"./handlers/ops\";\nimport { registerPlugins } from \"./handlers/plugins\";\nimport { registerProcesses } from \"./handlers/processes\";\nimport { registerSecrets } from \"./handlers/secrets\";\nimport { registerSmoke } from \"./handlers/smoke\";\nimport { registerUpgrade } from \"./handlers/upgrade\";\nimport { createPlugin, z } from \"./sdk\";\nimport { DeviceLoginService } from \"./services/auth/device-login\";\nimport { SessionStore } from \"./services/auth/session-store\";\nimport { SignerService } from \"./services/auth/signer\";\nimport { SiteClient } from \"./services/auth/site-client\";\nimport { DbOpsService } from \"./services/db/ops\";\nimport { BundleStorage, RegistryStore } from \"./services/deploy/deps\";\nimport { DeployTrainRenderService } from \"./services/deploy/render\";\nimport { DeployTrainService } from \"./services/deploy/train\";\nimport { DevFlowService } from \"./services/dev/flow\";\nimport { OpsService } from \"./services/ops\";\nimport { PlatformManifestService } from \"./services/platform/manifest\";\nimport { PluginAdminService } from \"./services/plugins-admin\";\nimport { ProcessesService } from \"./services/processes/service\";\nimport { openResolution, ResolutionSessionService } from \"./services/resolution/session\";\nimport { InitFlowService } from \"./services/scaffold/init-flow\";\nimport { BuildTrainService, WorkspaceBuildRenderService } from \"./services/workspace/build-train\";\n\nexport { resolveRemoteConfigChain } from \"./handlers/config\";\nexport { type ProgressEvent, pluginEvents } from \"./services/dev/progress\";\nexport type { DevSessionData, StartSummary } from \"./services/dev/session\";\n\nconst buildRenderLayer = Layer.succeed(\n  WorkspaceBuildRenderService,\n  WorkspaceBuildRenderService.of(cliWorkspaceBuildRender),\n);\n\nconst deployRenderLayer = Layer.succeed(\n  DeployTrainRenderService,\n  DeployTrainRenderService.of(cliDeployTrainRender),\n);\n\nconst buildTrainLayer = BuildTrainService.Live.pipe(Layer.provide(buildRenderLayer));\n\nexport default createPlugin({\n  variables: z.object({\n    configPath: z.string().optional(),\n    // The artifact root (cwd-derived) — decoupled from configPath so an\n    // explicit boot config (--config-path fixture) validates and loads\n    // without redirecting where the CLI writes generated artifacts.\n    configDir: z.string().optional(),\n  }),\n  secrets: z.object({}),\n  contract: bosContract,\n  initialize: (config, _plugins) =>\n    Effect.gen(function* () {\n      const session = yield* Effect.promise(() =>\n        openResolution({ path: config.variables.configPath }),\n      );\n\n      const projectEnv = yield* buildScoped(ProjectEnv, ProjectEnvLive);\n      const effectContext = yield* Effect.context();\n\n      const configDir = config.variables.configDir ?? session?.root ?? process.cwd();\n\n      const services = yield* buildScopedContext(\n        Layer.mergeAll(\n          makeDatabaseBindings({\n            projectDir: configDir,\n            loadRuntimeConfig: async () => (await session?.buildRuntime()) ?? null,\n            loadEnv: () => Effect.runPromiseWith(effectContext)(projectEnv.load(configDir)),\n          }),\n          makeDrizzleKitLive({\n            projectDir: configDir,\n            onLog: (message) => p.log.info(message),\n          }),\n        ),\n      );\n\n      const dbBindingsLayer = Layer.succeed(\n        DatabaseBindings,\n        Context.get(services, DatabaseBindings),\n      );\n      const drizzleKitLayer = Layer.succeed(DrizzleKit, Context.get(services, DrizzleKit));\n      const deployTrainLayer = DeployTrainService.Live.pipe(\n        Layer.provide(\n          Layer.mergeAll(\n            BundleStorage.Live,\n            RegistryStore.Live,\n            SignerService.Live,\n            buildTrainLayer,\n          ),\n        ),\n      );\n\n      return Layer.mergeAll(\n        Layer.succeed(ResolutionSessionService, session),\n        dbBindingsLayer,\n        drizzleKitLayer,\n        ProcessesService.Live,\n        SiteClient.Live,\n        SessionStore.Live,\n        DeviceLoginService.Live.pipe(Layer.provide(SiteClient.Live)),\n        buildRenderLayer,\n        buildTrainLayer,\n        deployTrainLayer,\n        deployRenderLayer,\n        OpsService.Live,\n        DbOpsService.Live.pipe(Layer.provide(Layer.mergeAll(dbBindingsLayer, drizzleKitLayer))),\n        PluginAdminService.Live.pipe(Layer.provide(deployTrainLayer)),\n        DevFlowService.Live,\n        InitFlowService.Live,\n        PlatformManifestService.Live,\n      );\n    }),\n  createRouter: (builder) => ({\n    ...registerConfig(builder),\n    ...registerPlugins(builder),\n    ...registerDev(builder),\n    ...registerBuild(builder),\n    ...registerDeploy(builder),\n    ...registerSmoke(builder),\n    ...registerKeys(builder),\n    ...registerSecrets(builder),\n    ...registerProcesses(builder),\n    ...registerInit(builder),\n    ...registerImport(builder),\n    ...registerUpgrade(builder),\n    ...registerDb(builder),\n    ...registerOps(builder),\n  }),\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CA,MAAM,mBAAmB,MAAM,QAC7B,6BACA,4BAA4B,GAAG,uBAAuB,CACxD;AAEA,MAAM,oBAAoB,MAAM,QAC9B,0BACA,yBAAyB,GAAG,oBAAoB,CAClD;AAEA,MAAM,kBAAkB,kBAAkB,KAAK,KAAK,MAAM,QAAQ,gBAAgB,CAAC;AAEnF,qBAAe,aAAa;CAC1B,WAAW,EAAE,OAAO;EAClB,YAAY,EAAE,OAAO,CAAC,CAAC,SAAS;EAIhC,WAAW,EAAE,OAAO,CAAC,CAAC,SAAS;CACjC,CAAC;CACD,SAAS,EAAE,OAAO,CAAC,CAAC;CACpB,UAAU;CACV,aAAa,QAAQ,aACnB,OAAO,IAAI,aAAa;EACtB,MAAM,UAAU,OAAO,OAAO,cAC5B,eAAe,EAAE,MAAM,OAAO,UAAU,WAAW,CAAC,CACtD;EAEA,MAAM,aAAa,OAAO,YAAY,YAAY,cAAc;EAChE,MAAM,gBAAgB,OAAO,OAAO,QAAQ;EAE5C,MAAM,YAAY,OAAO,UAAU,aAAa,SAAS,QAAQ,QAAQ,IAAI;EAE7E,MAAM,WAAW,OAAO,mBACtB,MAAM,SACJ,qBAAqB;GACnB,YAAY;GACZ,mBAAmB,YAAa,MAAM,SAAS,aAAa,KAAM;GAClE,eAAe,OAAO,eAAe,aAAa,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC;EAChF,CAAC,GACD,mBAAmB;GACjB,YAAY;GACZ,QAAQ,YAAY,EAAE,IAAI,KAAK,OAAO;EACxC,CAAC,CACH,CACF;EAEA,MAAM,kBAAkB,MAAM,QAC5B,kBACA,QAAQ,IAAI,UAAU,gBAAgB,CACxC;EACA,MAAM,kBAAkB,MAAM,QAAQ,YAAY,QAAQ,IAAI,UAAU,UAAU,CAAC;EACnF,MAAM,mBAAmB,mBAAmB,KAAK,KAC/C,MAAM,QACJ,MAAM,SACJ,cAAc,MACd,cAAc,MACd,cAAc,MACd,eACF,CACF,CACF;EAEA,OAAO,MAAM,SACX,MAAM,QAAQ,0BAA0B,OAAO,GAC/C,iBACA,iBACA,iBAAiB,MACjB,WAAW,MACX,aAAa,MACb,mBAAmB,KAAK,KAAK,MAAM,QAAQ,WAAW,IAAI,CAAC,GAC3D,kBACA,iBACA,kBACA,mBACA,WAAW,MACX,aAAa,KAAK,KAAK,MAAM,QAAQ,MAAM,SAAS,iBAAiB,eAAe,CAAC,CAAC,GACtF,mBAAmB,KAAK,KAAK,MAAM,QAAQ,gBAAgB,CAAC,GAC5D,eAAe,MACf,gBAAgB,MAChB,wBAAwB,IAC1B;CACF,CAAC;CACH,eAAe,aAAa;EAC1B,GAAG,eAAe,OAAO;EACzB,GAAG,gBAAgB,OAAO;EAC1B,GAAG,YAAY,OAAO;EACtB,GAAG,cAAc,OAAO;EACxB,GAAG,eAAe,OAAO;EACzB,GAAG,cAAc,OAAO;EACxB,GAAG,aAAa,OAAO;EACvB,GAAG,gBAAgB,OAAO;EAC1B,GAAG,kBAAkB,OAAO;EAC5B,GAAG,aAAa,OAAO;EACvB,GAAG,eAAe,OAAO;EACzB,GAAG,gBAAgB,OAAO;EAC1B,GAAG,WAAW,OAAO;EACrB,GAAG,YAAY,OAAO;CACxB;AACF,CAAC"}