@agentforce/adk
Version:
AgentForce Agent Development Kit - A powerful framework for building AI agents and servers
47 lines (39 loc) • 1.92 kB
text/typescript
import type { AgentForceAgent } from "../../agent";
import { existsSync, readFileSync } from "fs";
import { resolve } from "path";
/**
* Sets the system prompt for the agent
* @param this - The AgentForceAgent instance (bound context)
* @param prompt - The system prompt to set for the agent, or a file path to read the prompt from (.md, .txt, .hbs files supported)
* @returns {AgentForceAgent} Returns the agent instance for method chaining
*/
export function systemPrompt(this: AgentForceAgent, prompt: string): AgentForceAgent {
// Validate input
if (typeof prompt !== "string") {
throw new Error("System prompt must be a string");
}
let finalPrompt = prompt;
// Check if the prompt looks like a file path (contains file extensions .md, .txt, or .hbs)
const isLikelyFilePath = /\.(md|txt|hbs)$/i.test(prompt);
if (isLikelyFilePath) {
try {
// Try to resolve the path from current working directory
const absolutePath = resolve(process.cwd(), prompt);
// Check if file exists
if (existsSync(absolutePath)) {
// Read the file content directly
finalPrompt = readFileSync(absolutePath, "utf-8");
} else {
// If file doesn't exist, treat as regular prompt but log a warning
console.warn(`Warning: File '${prompt}' not found, treating as regular prompt text`);
}
} catch (error) {
// If reading fails, treat as regular prompt but log the error
console.warn(`Warning: Failed to read file '${prompt}': ${error instanceof Error ? error.message : "Unknown error"}. Treating as regular prompt text.`);
}
}
// Set the system prompt using the internal setter
this.setSystemPrompt(finalPrompt);
// Return 'this' for method chaining
return this;
}