tinyagent-ts
Version:
Modern TypeScript framework for building AI agents with pluggable tools and ReAct reasoning
53 lines • 2.2 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const promptEngine_1 = require("../src/promptEngine");
const path_1 = __importDefault(require("path"));
describe("PromptEngine", () => {
let engine;
beforeEach(() => {
engine = new promptEngine_1.PromptEngine();
});
it("renders the default greeting", () => {
expect(engine.render("greeting", { user: "Fabian" }))
.toBe("👋 Hey Fabian, how can I help?");
});
it("allows constructor overrides", () => {
const custom = new promptEngine_1.PromptEngine({ greeting: () => "Hi" });
expect(custom.render("greeting")).toBe("Hi");
});
it("registers a new template", () => {
engine.register("thanks", () => "🙏 Thanks!");
expect(engine.render("thanks")).toBe("🙏 Thanks!");
});
it("throws on duplicate register", () => {
engine.register("dup", () => "one");
expect(() => engine.register("dup", () => "two"))
.toThrow(/already exists/i);
});
it("overwrites an existing template", () => {
engine.overwrite("greeting", () => "Hola");
expect(engine.render("greeting")).toBe("Hola");
});
it("throws on unknown key", () => {
expect(() => engine.render("doesNotExist"))
.toThrow(/not found/i);
});
it("does not mutate defaultTemplates", () => {
expect(promptEngine_1.defaultTemplates.greeting({ user: "Fabian" }))
.toBe("👋 Hey Fabian, how can I help?");
});
it("substitutes placeholders", () => {
expect(engine.render("agent", { tools: "hammer" }))
.toContain("hammer");
});
it("accepts file-based overrides", () => {
const customFile = path_1.default.join(__dirname, "fixtures", "customAgent.md");
const filePE = new promptEngine_1.PromptEngine({}, { agent: customFile });
expect(filePE.render("agent", { tools: "saw" }))
.toMatch(/Custom[\s\S]*saw/);
});
});
//# sourceMappingURL=promptEngine.test.js.map