// // Copyright 2025 DXOS.org // import * as Context from 'effect/Context'; import * as Effect from 'effect/Effect'; import * as Layer from 'effect/Layer'; import { type FunctionNotFoundError, Operation } from '@dxos/compute'; /** * @deprecated */ export class FunctionInvocationService extends Context.Tag('@dxos/functions/FunctionInvocationService')< FunctionInvocationService, { invokeFunction(functionDef: Operation.Definition, input: I): Effect.Effect; resolveFunction(key: string): Effect.Effect; } >() { static layerNotAvailable = Layer.succeed(FunctionInvocationService, { invokeFunction: () => Effect.die('FunctionInvocationService is not avaialble.'), resolveFunction: () => Effect.die('FunctionInvocationService is not available.'), }); static invokeFunction = ( functionDef: Operation.Definition, input: I, ): Effect.Effect => Effect.serviceFunctionEffect(FunctionInvocationService, (service) => service.invokeFunction)(functionDef, input); static resolveFunction = ( key: string, ): Effect.Effect => Effect.serviceFunctionEffect(FunctionInvocationService, (service) => service.resolveFunction)(key); }