import * as NodeServices from '@effect/platform-node/NodeServices';
import * as Effect from 'effect/Effect';
import * as Context from 'effect/Context';
import * as Layer from 'effect/Layer';
import * as AgentScopes from './src/process/agentScope.ts';
import {AgentScope} from '@t3tools/shared/AgentScope';
import * as ServerConfig from './src/config.ts';
import fs from 'node:fs';
const stateDir=process.argv[2];
const program=Effect.gen(function*(){
 const context=yield* Layer.build(AgentScopes.layer);
 let liveOwner='not implemented on base';
 if(fs.existsSync(new URL('./src/process/providerProcesses.ts',import.meta.url))){const mod=yield* Effect.promise(()=>import('./src/process/providerProcesses.ts'));liveOwner=Context.get(context,mod.ProviderProcesses).hasOtherLiveOwner;}
 console.log(JSON.stringify({event:'production-runtime-acquired',hasOtherLiveOwner:liveOwner,pid:process.pid,time:Date.now()}));
 const scope=Context.get(context,AgentScope);
 const wrapped=yield* scope.wrap({command:'/usr/bin/true',args:[],name:'evidence',threadId:'evidence-live-owner',env:process.env});
 console.log(JSON.stringify({event:'production-wrap-returned',wrapped:wrapped!==undefined,pid:process.pid,time:Date.now()}));
}).pipe(Effect.scoped,Effect.provideService(ServerConfig.ServerConfig,{stateDir}),Effect.provide(NodeServices.layer));
await Effect.runPromise(program);
