This is an intelligent notification routing system that receives webhooks from various sources (Linear, Sentry, etc.) and uses AI to determine appropriate channels for delivery. The system analyzes notification content using OpenRouter/AI and routes messages to predefined email channels based on context, priority, and team relevance.
@zenbase/llml
Since this runs on Val.Town, there are no traditional build/test commands. Development workflow:
deno lint
(configured in deno.json)ai-model-test.ts
to verify OpenRouter integrationai-model-test.ts
├── CONFIGURATION.ts # Channel definitions, AI config, model settings
├── ai-service.ts # OpenRouter integration with multi-model support
├── ai-model-test.ts # AI testing utilities and model verification
├── citation-context.ts # Citation utilities for AI prompting
├── linear-webhook.ts # Linear webhook handler with config UI
├── sentry-webhook.ts # Sentry webhook handler with config UI
├── notification-triage.ts # Shared AI triage system
├── stringify-utils.ts # LLML object formatting for debugging
├── main.tsx # Future integrations (currently empty)
LINEAR_WEBHOOK_SECRET # Linear webhook signing secret
SENTRY_WEBHOOK_SECRET # Sentry webhook client secret
OPENROUTER_API_KEY # OpenRouter API key from https://openrouter.ai/
noImplicitAny: false
, strict: false
)stringify-utils.ts
NotificationData
interface for all sources// Test AI models
import runTests from './ai-model-test.ts';
await runTests();
// Test specific model
import { testModel } from './ai-model-test.ts';
await testModel('anthropic/claude-3.5-sonnet', 'Test message');
// Manual webhook testing: Visit webhook URLs in browser for config
=== Section Name ===
NotificationData
, use shared triageCONFIGURATION.ts
with description and keywordsCONFIGURATION.ts
main.tsx
for future features[REDACTED:amp-token]
indicate removed secrets