UNPKG

@genkit-ai/dotprompt

Version:

Genkit AI framework `.prompt` file format and management library.

162 lines 5.94 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((resolve2, 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 ? resolve2(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); step((generator = generator.apply(__this, __arguments)).next()); }); }; var registry_exports = {}; __export(registry_exports, { loadPrompt: () => loadPrompt, loadPromptFolder: () => loadPromptFolder, lookupPrompt: () => lookupPrompt, registryDefinitionKey: () => registryDefinitionKey, registryLookupKey: () => registryLookupKey }); module.exports = __toCommonJS(registry_exports); var import_core = require("@genkit-ai/core"); var import_logging = require("@genkit-ai/core/logging"); var import_registry = require("@genkit-ai/core/registry"); var import_fs = require("fs"); var import_path = require("path"); var import_prompt = require("./prompt.js"); var import_template = require("./template.js"); function registryDefinitionKey(name, variant, ns) { return `${ns ? `${ns}/` : ""}${name}${variant ? `.${variant}` : ""}`; } function registryLookupKey(name, variant, ns) { return `/prompt/${registryDefinitionKey(name, variant, ns)}`; } function lookupPrompt(name, variant, dir = "./prompts") { return __async(this, null, function* () { let registryPrompt = (yield (0, import_registry.lookupAction)(registryLookupKey(name, variant))) || (yield (0, import_registry.lookupAction)(registryLookupKey(name, variant, "dotprompt"))); if (registryPrompt) { return import_prompt.Dotprompt.fromAction(registryPrompt); } else { return maybeLoadPrompt(dir, name, variant); } }); } function maybeLoadPrompt(dir, name, variant) { return __async(this, null, function* () { const expectedFileName = `${name}${variant ? `.${variant}` : ""}.prompt`; const promptFolder = (0, import_path.resolve)(dir); const promptExists = (0, import_fs.existsSync)((0, import_path.join)(promptFolder, expectedFileName)); if (promptExists) { return loadPrompt(promptFolder, expectedFileName); } else { throw new import_core.GenkitError({ source: "dotprompt", status: "NOT_FOUND", message: `Could not find '${expectedFileName}' in the prompts folder.` }); } }); } function loadPromptFolder(dir = "./prompts") { return __async(this, null, function* () { const promptsPath = (0, import_path.resolve)(dir); return new Promise((resolve2, reject) => { if ((0, import_fs.existsSync)(promptsPath)) { (0, import_fs.readdir)( promptsPath, { withFileTypes: true, recursive: true }, (err, dirEnts) => { if (err) { reject(err); } else { dirEnts.forEach((dirEnt) => __async(this, null, function* () { if (dirEnt.isFile() && dirEnt.name.endsWith(".prompt")) { if (dirEnt.name.startsWith("_")) { console.log(dirEnt.name); const partialName = dirEnt.name.substring( 1, dirEnt.name.length - 7 ); (0, import_template.definePartial)( partialName, (0, import_fs.readFileSync)((0, import_path.join)(dirEnt.path, dirEnt.name), { encoding: "utf8" }) ); import_logging.logger.debug( `Registered Dotprompt partial "${partialName}" from "${(0, import_path.join)(dirEnt.path, dirEnt.name)}"` ); } else { let prefix = ""; if (promptsPath !== dirEnt.path) { prefix = dirEnt.path.replace(`${promptsPath}/`, "").replace(/\//g, "-"); } loadPrompt(dirEnt.path, dirEnt.name, prefix); } } })); resolve2(); } } ); } else { resolve2(); } }); }); } function loadPrompt(path, filename, prefix = "") { let name = `${prefix ? `${prefix}-` : ""}${(0, import_path.basename)(filename, ".prompt")}`; let variant = null; if (name.includes(".")) { const parts = name.split("."); name = parts[0]; variant = parts[1]; } const source = (0, import_fs.readFileSync)((0, import_path.join)(path, filename), "utf8"); const prompt = import_prompt.Dotprompt.parse(name, source); if (variant) { prompt.variant = variant; } prompt.define({ ns: `dotprompt` }); return prompt; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { loadPrompt, loadPromptFolder, lookupPrompt, registryDefinitionKey, registryLookupKey }); //# sourceMappingURL=registry.js.map