Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 1x 4x 3x 3x 3x 3x 3x 3x | import type { Logger } from '@metamask/logger';
import { AssistantMessage } from './messages.ts';
import type { AssistantMessageJson } from './messages.ts';
import { makeSampleCollector } from './sample-collector.ts';
import { gatherStreamingResponse, ifDefined, withAbort } from '../../utils.ts';
export const makeReader =
({ logger }: { logger?: Logger }) =>
async ({
stream,
abort,
prefix,
}: {
stream: AsyncIterable<{ response: string }>;
abort: () => Promise<void>;
prefix: string;
}) => {
const sampleLogger = logger?.subLogger({ tags: ['sample'] });
const gatherLogger = logger?.subLogger({ tags: ['gather'] });
return await withAbort(abort, async (): Promise<AssistantMessage> => {
const json = await gatherStreamingResponse<AssistantMessageJson>({
stream,
parse: makeSampleCollector({
prefix,
...ifDefined({ logger: sampleLogger }),
}),
...ifDefined({ logger: gatherLogger }),
});
logger?.info('assistant message:', json);
return new AssistantMessage(json);
});
};
|