UNPKG

@genkit-ai/core

Version:

Genkit AI framework core libraries.

175 lines 5.79 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; 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 action_exports = {}; __export(action_exports, { JSONSchema7: () => import_json_schema.JSONSchema7, Status: () => import_statusTypes.Status, StatusCodes: () => import_statusTypes.StatusCodes, StatusSchema: () => import_statusTypes.StatusSchema, action: () => action, actionWithMiddleware: () => actionWithMiddleware, defineAction: () => defineAction, getStreamingCallback: () => getStreamingCallback, runWithStreamingCallback: () => runWithStreamingCallback }); module.exports = __toCommonJS(action_exports); var import_json_schema = require("json-schema"); var import_node_async_hooks = require("node:async_hooks"); var import_registry = require("./registry.js"); var import_schema = require("./schema.js"); var import_tracing = require("./tracing.js"); var import_statusTypes = require("./statusTypes.js"); function actionWithMiddleware(action2, middleware) { const wrapped = (req) => __async(this, null, function* () { const dispatch = (index, req2) => __async(this, null, function* () { if (index === middleware.length) { return yield action2(req2); } const currentMiddleware = middleware[index]; return currentMiddleware( req2, (modifiedReq) => __async(this, null, function* () { return dispatch(index + 1, modifiedReq || req2); }) ); }); return yield dispatch(0, req); }); wrapped.__action = action2.__action; return wrapped; } function action(config, fn) { const actionName = typeof config.name === "string" ? validateActionName(config.name) : `${validatePluginName(config.name.pluginId)}/${validateActionId(config.name.actionId)}`; const actionFn = (input) => __async(this, null, function* () { input = (0, import_schema.parseSchema)(input, { schema: config.inputSchema, jsonSchema: config.inputJsonSchema }); let output = yield (0, import_tracing.runInNewSpan)( { metadata: { name: actionName }, labels: { [import_tracing.SPAN_TYPE_ATTR]: "action" } }, (metadata) => __async(this, null, function* () { metadata.name = actionName; metadata.input = input; const output2 = yield fn(input); metadata.output = JSON.stringify(output2); return output2; }) ); output = (0, import_schema.parseSchema)(output, { schema: config.outputSchema, jsonSchema: config.outputJsonSchema }); return output; }); actionFn.__action = { name: actionName, description: config.description, inputSchema: config.inputSchema, inputJsonSchema: config.inputJsonSchema, outputSchema: config.outputSchema, outputJsonSchema: config.outputJsonSchema, metadata: config.metadata }; if (config.use) { return actionWithMiddleware(actionFn, config.use); } return actionFn; } function validateActionName(name) { if (name.includes("/")) { validatePluginName(name.split("/", 1)[0]); validateActionId(name.substring(name.indexOf("/") + 1)); } return name; } function validatePluginName(pluginId) { if (!(0, import_registry.lookupPlugin)(pluginId)) { throw new Error( `Unable to find plugin name used in the action name: ${pluginId}` ); } return pluginId; } function validateActionId(actionId) { if (actionId.includes("/")) { throw new Error(`Action name must not include slashes (/): ${actionId}`); } return actionId; } function defineAction(config, fn) { const act = action(config, (i) => { (0, import_tracing.setCustomMetadataAttributes)({ subtype: config.actionType }); return fn(i); }); act.__action.actionType = config.actionType; (0, import_registry.registerAction)(config.actionType, act); return act; } const streamingAls = new import_node_async_hooks.AsyncLocalStorage(); const sentinelNoopCallback = () => null; function runWithStreamingCallback(streamingCallback, fn) { return streamingAls.run(streamingCallback || sentinelNoopCallback, fn); } function getStreamingCallback() { const cb = streamingAls.getStore(); if (cb === sentinelNoopCallback) { return void 0; } return cb; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { JSONSchema7, Status, StatusCodes, StatusSchema, action, actionWithMiddleware, defineAction, getStreamingCallback, runWithStreamingCallback }); //# sourceMappingURL=action.js.map