API Documentation
Documents configuration, monitoring, security, CLI, and template APIs for a TypeScript prompt engine library.
What this file does
Documents configuration, monitoring, security, CLI, and template APIs for a TypeScript prompt engine library.
When to use it
- Validating a prompt engine config file before deployment
- Adding cost tracking and metrics collection to prompt execution
- Sanitizing user input for injection and PII detection
- Using built-in template patterns for GPT-4, Claude, or Gemini
Assumes this stack
API Documentation
Configuration
Schema
The configuration follows a strict schema validated by Zod:
interface PromptEngineConfig {
version: "2.0";
engine?: {
apiKeys?: Record<string, string>;
defaults?: {
temperature?: number; // 0-2
maxTokens?: number; // >= 1
topP?: number; // 0-1
};
rateLimiting?: {
maxRequestsPerMinute?: number;
maxTokensPerMinute?: number;
};
logging?: {
level?: "debug" | "info" | "warn" | "error";
output?: "console" | "file" | "both";
};
};
prompts: Array<{
id: string;
name?: string;
model: "gpt-4" | "claude" | "gemini" | "custom";
template: string;
variables?: Record<string, any>;
temperature?: number;
maxTokens?: number;
systemPrompt?: string;
outputFormat?: "text" | "json" | "markdown";
metadata?: {
version?: string;
author?: string;
description?: string;
tags?: string[];
};
}>;
patterns?: Array<{
name: string;
description?: string;
template: string;
metadata?: {
category?: string;
tags?: string[];
version?: string;
};
}>;
}
Loading Configuration
import { loadConfig } from 'prompt-engine/config';
// Load JSON config
const config = await loadConfig('prompt-engine.config.json');
// Load YAML config (requires js-yaml)
const yamlConfig = await loadConfig('config.yaml');
// Load TOML config (requires @iarna/toml)
const tomlConfig = await loadConfig('config.toml');
Monitoring API
Diagnostics Channel Events
import { monitor } from 'prompt-engine/monitoring';
// Listen to prompt start events
monitor.on('prompt.start', (data) => {
console.log(`Starting prompt ${data.id}`);
});
// Listen to completion events
monitor.on('prompt.complete', (metrics) => {
console.log(`Prompt completed:`, metrics);
});
// Listen to error events
monitor.on('prompt.error', (data) => {
console.error(`Error: ${data.error.message}`);
});
Tracking Execution
import { trackPromptExecution } from 'prompt-engine/monitoring';
const result = await trackPromptExecution(
'openai', // provider
'gpt-4', // model
'unique-prompt-id', // prompt ID
async () => {
// Your execution logic
const response = await callAPI();
return {
result: response.text,
metrics: {
promptTokens: response.promptTokens,
completionTokens: response.completionTokens,
totalTokens: response.totalTokens,
}
};
}
);
Metrics Collection
import { metricsCollector } from 'prompt-engine/monitoring';
// Get summary
const summary = metricsCollector.getSummary();
console.log(`Total requests: ${summary.totalRequests}`);
console.log(`Total cost: $${summary.totalCost}`);
// Get metrics for last hour
const hourAgo = new Date(Date.now() - 3600000);
const recentMetrics = metricsCollector.getMetrics(100, hourAgo);
// Export all metrics
const exported = metricsCollector.exportMetrics();
Cost Tracking
import { costTracker } from 'prompt-engine/monitoring';
// Calculate cost
const cost = costTracker.calculateCost(
'openai',
'gpt-4',
1000, // prompt tokens
500 // completion tokens
);
console.log(`Cost: $${cost.totalCost}`);
// Set custom pricing
costTracker.setCustomPricing('my-provider', {
'my-model': {
input: 2.00, // $2 per 1M input tokens
output: 6.00 // $6 per 1M output tokens
}
});
// Estimate cost
const estimate = costTracker.estimateCost(
'openai',
'gpt-4',
'This is my prompt text',
1000 // estimated output tokens
);
Security API
Prompt Sanitization
import { sanitizePrompt, sanitizeHtml } from 'prompt-engine/security';
// Full sanitization (XSS, injection, PII)
const safe = await sanitizePrompt(userInput);
// HTML sanitization only
const safeHtml = await sanitizeHtml(htmlContent);
Detection Functions
import { detectInjection, detectPII } from 'prompt-engine/security';
// Check for injection attempts
if (detectInjection(userInput)) {
throw new Error('Potential injection detected');
}
// Check for PII
if (detectPII(userInput)) {
console.warn('PII detected in input');
}
PII Masking
import { maskPII } from 'prompt-engine/security';
const masked = maskPII('My SSN is 123-45-6789');
// Output: 'My SSN is XXX-XX-XXXX'
CLI API
Commands
# Validate configuration
prompt-engine validate <config-file>
# Initialize new configuration
prompt-engine init <output-file>
# Show version
prompt-engine --version
# Show help
prompt-engine --help
Programmatic CLI Usage
import { cli } from 'prompt-engine/cli';
// Run CLI programmatically
await cli(['validate', 'config.json']);
Template Patterns
Using Built-in Patterns
import { GPT4SystemPrompt, GPT4CodeGeneration } from 'prompt-engine/templates/gpt4';
import { ClaudeSystemPrompt } from 'prompt-engine/templates/claude';
import { GeminiConfig } from 'prompt-engine/templates/gemini';
// Use a pattern
const prompt = GPT4CodeGeneration.template.replace('{{language}}', 'TypeScript');
Pattern Types
interface BasePattern {
name: string;
description: string;
template: string;
metadata?: {
category?: string;
tags?: string[];
version?: string;
};
}
Error Types
import { ConfigError, ValidationError, ParsingError } from 'prompt-engine/types';
try {
await loadConfig('config.json');
} catch (error) {
if (error instanceof ConfigError) {
console.error('Configuration error:', error.message);
} else if (error instanceof ValidationError) {
console.error('Validation error:', error.errors);
}
}
TypeScript Support
All APIs are fully typed. Import types as needed:
import type {
PromptConfig,
ExtendedPromptConfig,
PromptMetrics,
CostCalculation,
TokenPricing
} from 'prompt-engine';
What's inside
7 API sections with TypeScript interfaces, code examples, and CLI commands
Change this for your project
- Replace
'prompt-engine/config'with your own package import path - Replace
'prompt-engine/monitoring'with your own package import path - Replace
'prompt-engine/security'with your own package import path - Replace
'prompt-engine/templates/gpt4'with your own template import path
Where it goes
A prompt collection. Copy the individual prompts you need rather than the whole file.
Worth borrowing
- Separate monitoring, security, and CLI concerns into distinct API modules
- Provide both programmatic and CLI interfaces for the same functionality
- Use Zod schemas for configuration validation with clear error types
Related Documents
You must use artifacts for
Defines when to use artifacts and provides detailed instructions for creating code, documents, HTML, SVG, Mermaid diagrams, and React components.
starProject
Lists 120+ starred open-source projects across AI, DevOps, Flutter, and web development for discovery and inspiration.
midjourney-expert
Serves as a reference for Midjourney V7/Niji 7 prompting, covering parameters, reference systems, editing tools, and moderation workarounds.
Daily Agent Tasks Framework
Gives you a daily structure for assigning strategic work to Claude and development work to Codex, organized by project priority and current sprint.