UNPKG

@genkit-ai/flow

Version:

Genkit AI framework workflow APIs.

207 lines 6.33 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __knownSymbol = (name, symbol) => { return (symbol = Symbol[name]) ? symbol : Symbol.for("Symbol." + name); }; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); var __async = (__this, __arguments, generator) => { return new Promise((resolve, reject) => { var fulfilled = (value) => { try { step(generator.next(value)); } catch (e) { reject(e); } }; var rejected = (value) => { try { step(generator.throw(value)); } catch (e) { reject(e); } }; var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var __await = function(promise, isYieldStar) { this[0] = promise; this[1] = isYieldStar; }; var __asyncGenerator = (__this, __arguments, generator) => { var resume = (k, v, yes, no) => { try { var x = generator[k](v), isAwait = (v = x.value) instanceof __await, done = x.done; Promise.resolve(isAwait ? v[0] : v).then((y) => isAwait ? resume(k === "return" ? k : "next", v[1] ? { done: y.done, value: y.value } : y, yes, no) : yes({ value: y, done })).catch((e) => resume("throw", e, yes, no)); } catch (e) { no(e); } }; var method = (k) => it[k] = (x) => new Promise((yes, no) => resume(k, x, yes, no)); var it = {}; return generator = generator.apply(__this, __arguments), it[__knownSymbol("asyncIterator")] = () => it, method("next"), method("throw"), method("return"), it; }; var client_exports = {}; __export(client_exports, { runFlow: () => runFlow, streamFlow: () => streamFlow }); module.exports = __toCommonJS(client_exports); const __flowStreamDelimiter = "\n"; function streamFlow({ url, input, headers }) { let chunkStreamController = void 0; const chunkStream = new ReadableStream({ start(controller) { chunkStreamController = controller; }, pull() { }, cancel() { } }); const operationPromise = __flowRunEnvelope({ url, input, streamingCallback: (c) => { chunkStreamController == null ? void 0 : chunkStreamController.enqueue(c); }, headers }); operationPromise.then((o) => { chunkStreamController == null ? void 0 : chunkStreamController.close(); return o; }); return { output() { return operationPromise.then((op) => { var _a2, _b, _c, _d; if (!op.done) { throw new Error(`flow ${op.name} did not finish execution`); } if ((_a2 = op.result) == null ? void 0 : _a2.error) { throw new Error( `${op.name}: ${(_b = op.result) == null ? void 0 : _b.error} ${(_c = op.result) == null ? void 0 : _c.stacktrace}` ); } return (_d = op.result) == null ? void 0 : _d.response; }); }, stream() { return __asyncGenerator(this, null, function* () { const reader = chunkStream.getReader(); while (true) { const chunk = yield new __await(reader.read()); if (chunk.value) { yield chunk.value; } if (chunk.done) { break; } } return yield new __await(operationPromise); }); } }; } function __flowRunEnvelope(_0) { return __async(this, arguments, function* ({ url, input, streamingCallback, headers }) { let response; response = yield fetch(url + "?stream=true", { method: "POST", body: JSON.stringify({ data: input }), headers: __spreadValues({ "Content-Type": "application/json" }, headers) }); if (!response.body) { throw new Error("Response body is empty"); } var reader = response.body.getReader(); var decoder = new TextDecoder(); let buffer = ""; while (true) { const result = yield reader.read(); const decodedValue = decoder.decode(result.value); if (decodedValue) { buffer += decodedValue; } while (buffer.includes(__flowStreamDelimiter)) { streamingCallback( JSON.parse(buffer.substring(0, buffer.indexOf(__flowStreamDelimiter))) ); buffer = buffer.substring( buffer.indexOf(__flowStreamDelimiter) + __flowStreamDelimiter.length ); } if (result.done) { return JSON.parse(buffer); } } }); } function runFlow(_0) { return __async(this, arguments, function* ({ url, payload, headers }) { const response = yield fetch(url, { method: "POST", body: JSON.stringify({ data: payload }), headers: __spreadValues({ "Content-Type": "application/json" }, headers) }); const wrappedDesult = yield response.json(); return wrappedDesult.result; }); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { runFlow, streamFlow }); //# sourceMappingURL=client.js.map