Changelog
v0.4.1 (Latest)
OMAT — Open Multimodal Assessment Toolkit
The full OMAT assessment layer is now built into tekimax-omat. Designed for any organization measuring learning outcomes, skill development, or program effectiveness with AI-generated formative feedback.
New: AssessmentPipeline
- Accepts student/participant responses in any modality:
text,speech,drawing,handwriting - Automatically transcribes speech (
TranscriptionCapability) and describes images (VisionCapability) before scoring - Generates structured
FormativeFeedbackvia JSON mode: overall summary, per-criterion scores with evidence, strengths, next steps, encouragement, and normalized score - Configurable feedback language (BCP-47), temperature, and plugin hooks
assess(),assessBatch(), andassessStream()methods
New: FairnessAuditPlugin
- Collects demographic performance data across assessments
- Produces
FairnessReportwithDemographicGroup[]andDisparityFlag[] - Configurable warning (default: 10%) and critical (default: 20%) disparity thresholds
- Minimum group size protection (default: 5) to prevent small-n privacy exposure
- FAIR metadata attached to reports for open data publication
New: RubricValidatorPlugin
- Validates AI feedback against your rubric: criterion coverage, score ranges, level label consistency, evidence presence, suggestion presence, normalized score bounds
- Strict mode: throws on validation errors (for test/benchmark pipelines)
- Non-strict mode: logs warnings and errors, never blocks delivery
New: LearningProgressionPlugin
- Maps criterion scores to positions on developmental learning progressions
- Annotates feedback with current stage, next milestone, and observable indicators
- Works for any domain: writing, coding, clinical skills, workforce readiness, etc.
New: BenchmarkRunner
- Runs standardized evaluations across a
BenchmarkSuite - Four metrics: accuracy (Cohen's kappa vs human scores), fairness (max demographic gap), actionability (% with concrete suggestions), alignment (criterion coverage + evidence grounding)
- Results include FAIR metadata for DOI assignment and archival
New: useAssessment React hook
- Wraps
AssessmentPipelinewith React state management - Supports streaming and non-streaming modes
- Abort handling, history tracking, reset
v0.4.0
AI Action Tagging
New: AIActionTagPlugin
- Attaches
aiTagto everyChatResultandGenerateTextResult - Infers CRUD operation from tool call names (high confidence) or response text keywords (low confidence)
onTagcallback for audit loggingaiTagavailable on all results even without the plugin
New: aiTag on ChatResult and GenerateTextResult
Code
interface AIActionTag {
source: 'ai';
operation: 'create' | 'read' | 'update' | 'delete' | 'none';
confidence: 'high' | 'low' | 'none';
model: string;
timestamp: number;
toolName?: string;
}v0.3.0
Dynamic Context Window Management
New: TokenAwareContextPlugin (replaces MaxContextOverflowPlugin)
- Token-aware trimming using chars/4 heuristic
- Built-in registry of 50+ models: GPT-4o (128K), Claude (200K), Gemini 1.5 Pro (1M), etc.
- Live OpenRouter API fallback for unlisted models with in-process caching
- Three truncation strategies:
auto,last_messages,disabled - Optional Stripe Billing Meter integration (off by default) — meter token usage per customer
New: model-context.ts registry
getModelContextInfo(modelId)— instant lookup with prefix matchingfetchModelContextWindow(modelId, apiKey?)— live fetch with cacheregisterModelContext()— register private or fine-tuned models
New: Conversation class
- Stateful multi-turn chat: auto-appends messages, full history, plugin support
send(),stream(),inject(),clear(),restore(),export()
v0.2.0
Plugin Architecture
TekimaxPlugininterface — lifecycle hooks:beforeRequest,afterResponse,onStreamChunk,beforeToolExecute,afterToolExecutePIIFilterPlugin— redacts emails, SSNs, phone numbers, credit card numbers from both string and multi-partContentPart[]messagesLoggerPlugin— request/response telemetry with token reportingProvisionPlugin— API gateway proxy with rate limiting and SSRF protection
Core Features
- Real-time streaming via
AsyncIterable<StreamChunk> - Embeddings API (
client.text.embed()) useChatReact hook with tool loops, streaming, abort support
v0.1.9
Multi-Modal Parity
- OpenAIProvider:
generateImage,analyzeImage,generateSpeech,transcribeAudio - GeminiProvider:
analyzeImage,analyzeVideo - AnthropicProvider:
analyzeImage(Claude 3.x vision) - OpenRouterProvider:
analyzeImage(passes through to vision-capable models)
v0.1.8
Tool Calling Parity
- GeminiProvider: Full tool/function calling (
functionDeclarationsnormalized totoolsarray) - AnthropicProvider:
tool_usecontent blocks normalized totoolCalls[] - Parity across OpenAI, Ollama, Gemini, Anthropic
Reasoning
parseThinkingutility for<think>blocks (DeepSeek R1 and compatible models)think: trueflag inChatOptions
v0.1.1
- TekimaxProvider: Stateless mode with full history mapping
- OllamaProvider: Cloud auth (
apiKey) via customfetchwrapper; browser-safe viaollama/browser
v0.1.0 — Initial Release
- Monorepo structure (Turborepo)
Tekimaxunified client withAIProviderinterface- Adapters: Anthropic, Gemini, Grok, Ollama, OpenAI, OpenRouter
- Docs site on Cloudflare Pages
