({ chain, ...rest }: ChainToolInput)
| 11 | chain: BaseChain |
| 12 | |
| 13 | constructor({ chain, ...rest }: ChainToolInput) { |
| 14 | super({ |
| 15 | ...rest, |
| 16 | func: async (input, runManager) => { |
| 17 | // prevent sending SSE events of the sub-chain |
| 18 | const sseStreamer = runManager?.handlers.find((handler) => handler instanceof CustomChainHandler)?.sseStreamer |
| 19 | if (runManager) { |
| 20 | const callbacks = runManager.handlers |
| 21 | for (let i = 0; i < callbacks.length; i += 1) { |
| 22 | if (callbacks[i] instanceof CustomChainHandler) { |
| 23 | ;(callbacks[i] as any).sseStreamer = undefined |
| 24 | } |
| 25 | } |
| 26 | } |
| 27 | |
| 28 | if ((chain as any).prompt && (chain as any).prompt.promptValues) { |
| 29 | const promptValues = handleEscapeCharacters((chain as any).prompt.promptValues, true) |
| 30 | |
| 31 | const values = await chain.call(promptValues, runManager?.getChild()) |
| 32 | if (runManager && sseStreamer) { |
| 33 | const callbacks = runManager.handlers |
| 34 | for (let i = 0; i < callbacks.length; i += 1) { |
| 35 | if (callbacks[i] instanceof CustomChainHandler) { |
| 36 | ;(callbacks[i] as any).sseStreamer = sseStreamer |
| 37 | } |
| 38 | } |
| 39 | } |
| 40 | return values?.text |
| 41 | } |
| 42 | |
| 43 | const values = chain.run(input, runManager?.getChild()) |
| 44 | if (runManager && sseStreamer) { |
| 45 | const callbacks = runManager.handlers |
| 46 | for (let i = 0; i < callbacks.length; i += 1) { |
| 47 | if (callbacks[i] instanceof CustomChainHandler) { |
| 48 | ;(callbacks[i] as any).sseStreamer = sseStreamer |
| 49 | } |
| 50 | } |
| 51 | } |
| 52 | return values |
| 53 | } |
| 54 | }) |
| 55 | this.chain = chain |
| 56 | } |
| 57 | } |
nothing calls this directly
no test coverage detected