veryfront 0.0.69 → 0.0.70
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai/components.js +3 -3
- package/dist/ai/components.js.map +1 -1
- package/dist/ai/dev.js +3 -9
- package/dist/ai/dev.js.map +1 -1
- package/dist/ai/index.js +205 -149
- package/dist/ai/index.js.map +3 -3
- package/dist/ai/production.js +20 -14
- package/dist/ai/production.js.map +1 -1
- package/dist/ai/workflow.js +59 -37
- package/dist/ai/workflow.js.map +2 -2
- package/dist/cli.js +596 -1009
- package/dist/components.js +263 -4131
- package/dist/components.js.map +4 -4
- package/dist/config.js +1 -2
- package/dist/config.js.map +2 -2
- package/dist/data.js +27 -22
- package/dist/data.js.map +2 -2
- package/dist/index.js +294 -4165
- package/dist/index.js.map +4 -4
- package/dist/oauth/handlers.js +7 -6
- package/dist/oauth/handlers.js.map +1 -1
- package/dist/oauth/index.js +7 -6
- package/dist/oauth/index.js.map +1 -1
- package/dist/oauth/providers.js +3 -0
- package/dist/oauth/providers.js.map +1 -1
- package/dist/oauth/token-store.js +4 -6
- package/dist/oauth/token-store.js.map +1 -1
- package/package.json +2 -2
package/dist/ai/production.js
CHANGED
|
@@ -36,8 +36,9 @@ function toError(veryfrontError) {
|
|
|
36
36
|
|
|
37
37
|
// src/ai/production/rate-limit/limiter.ts
|
|
38
38
|
var FixedWindowLimiter = class {
|
|
39
|
+
requests = /* @__PURE__ */ new Map();
|
|
40
|
+
config;
|
|
39
41
|
constructor(config) {
|
|
40
|
-
this.requests = /* @__PURE__ */ new Map();
|
|
41
42
|
this.config = config;
|
|
42
43
|
}
|
|
43
44
|
check(identifier) {
|
|
@@ -78,8 +79,10 @@ var FixedWindowLimiter = class {
|
|
|
78
79
|
}
|
|
79
80
|
};
|
|
80
81
|
var TokenBucketLimiter = class {
|
|
82
|
+
buckets = /* @__PURE__ */ new Map();
|
|
83
|
+
config;
|
|
84
|
+
refillRate;
|
|
81
85
|
constructor(config) {
|
|
82
|
-
this.buckets = /* @__PURE__ */ new Map();
|
|
83
86
|
this.config = config;
|
|
84
87
|
this.refillRate = config.maxRequests / config.windowMs;
|
|
85
88
|
}
|
|
@@ -182,9 +185,7 @@ function rateLimitMiddleware(config) {
|
|
|
182
185
|
|
|
183
186
|
// src/ai/production/cache/cache.ts
|
|
184
187
|
var MemoryCache = class {
|
|
185
|
-
|
|
186
|
-
this.cache = /* @__PURE__ */ new Map();
|
|
187
|
-
}
|
|
188
|
+
cache = /* @__PURE__ */ new Map();
|
|
188
189
|
set(key, response) {
|
|
189
190
|
this.cache.set(key, {
|
|
190
191
|
response,
|
|
@@ -215,8 +216,9 @@ var MemoryCache = class {
|
|
|
215
216
|
}
|
|
216
217
|
};
|
|
217
218
|
var LRUCache = class {
|
|
219
|
+
cache = /* @__PURE__ */ new Map();
|
|
220
|
+
maxSize;
|
|
218
221
|
constructor(maxSize = 100) {
|
|
219
|
-
this.cache = /* @__PURE__ */ new Map();
|
|
220
222
|
this.maxSize = maxSize;
|
|
221
223
|
}
|
|
222
224
|
set(key, response) {
|
|
@@ -260,9 +262,10 @@ var LRUCache = class {
|
|
|
260
262
|
}
|
|
261
263
|
};
|
|
262
264
|
var TTLCache = class {
|
|
265
|
+
cache = /* @__PURE__ */ new Map();
|
|
266
|
+
ttl;
|
|
267
|
+
cleanupInterval = null;
|
|
263
268
|
constructor(ttl = 3e5) {
|
|
264
|
-
this.cache = /* @__PURE__ */ new Map();
|
|
265
|
-
this.cleanupInterval = null;
|
|
266
269
|
this.ttl = ttl;
|
|
267
270
|
this.startCleanup();
|
|
268
271
|
}
|
|
@@ -534,13 +537,14 @@ var logger = createLogger("VERYFRONT");
|
|
|
534
537
|
|
|
535
538
|
// src/ai/production/cost-tracking/tracker.ts
|
|
536
539
|
var CostTracker = class {
|
|
540
|
+
records = [];
|
|
541
|
+
config;
|
|
542
|
+
dailyTotal = 0;
|
|
543
|
+
monthlyTotal = 0;
|
|
544
|
+
lastDayReset = Date.now();
|
|
545
|
+
lastMonthReset = Date.now();
|
|
546
|
+
resetInterval = null;
|
|
537
547
|
constructor(config) {
|
|
538
|
-
this.records = [];
|
|
539
|
-
this.dailyTotal = 0;
|
|
540
|
-
this.monthlyTotal = 0;
|
|
541
|
-
this.lastDayReset = Date.now();
|
|
542
|
-
this.lastMonthReset = Date.now();
|
|
543
|
-
this.resetInterval = null;
|
|
544
548
|
this.config = config;
|
|
545
549
|
this.startPeriodicReset();
|
|
546
550
|
}
|
|
@@ -803,6 +807,7 @@ var PII_PATTERNS = {
|
|
|
803
807
|
creditCard: /\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b/g
|
|
804
808
|
};
|
|
805
809
|
var InputValidator = class {
|
|
810
|
+
config;
|
|
806
811
|
constructor(config) {
|
|
807
812
|
this.config = config || {};
|
|
808
813
|
}
|
|
@@ -862,6 +867,7 @@ var InputValidator = class {
|
|
|
862
867
|
}
|
|
863
868
|
};
|
|
864
869
|
var OutputFilter = class {
|
|
870
|
+
config;
|
|
865
871
|
constructor(config) {
|
|
866
872
|
this.config = config || {};
|
|
867
873
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/_shims/deno-env.ts", "../../../src/core/errors/veryfront-error.ts", "../../../src/ai/production/rate-limit/limiter.ts", "../../../src/ai/production/cache/cache.ts", "../../../src/core/utils/runtime-guards.ts", "../../../src/core/utils/logger/env.ts", "../../../src/core/utils/logger/logger.ts", "../../../src/ai/production/cost-tracking/tracker.ts", "../../../src/ai/production/security/validator.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Shim for Deno.env in Node.js environment\n * This file is injected by esbuild to provide Deno.env compatibility\n */\n\n// @ts-ignore - Global Deno shim for Node.js\nglobalThis.Deno = globalThis.Deno || {\n env: {\n get(key: string): string | undefined {\n return process.env[key];\n },\n set(key: string, value: string): void {\n process.env[key] = value;\n },\n delete(key: string): void {\n delete process.env[key];\n },\n has(key: string): boolean {\n return key in process.env;\n },\n toObject(): Record<string, string> {\n return { ...process.env } as Record<string, string>;\n },\n },\n};\n", "export interface BuildContext {\n file?: string;\n line?: number;\n column?: number;\n moduleId?: string;\n phase?: \"parse\" | \"transform\" | \"bundle\" | \"optimize\";\n}\n\nexport interface APIContext {\n endpoint?: string;\n method?: string;\n statusCode?: number;\n headers?: Record<string, string>;\n}\n\nexport interface RenderContext {\n component?: string;\n route?: string;\n phase?: \"server\" | \"client\" | \"hydration\";\n props?: unknown;\n}\n\nexport interface ConfigContext {\n configFile?: string;\n field?: string;\n value?: unknown;\n expected?: string;\n}\n\nexport interface AgentContext {\n agentId?: string;\n intent?: string;\n timeout?: number;\n}\n\nexport interface FileContext {\n path?: string;\n operation?: \"read\" | \"write\" | \"delete\" | \"mkdir\";\n permissions?: string;\n}\n\nexport interface NetworkContext {\n url?: string;\n timeout?: number;\n retryCount?: number;\n}\n\nexport type VeryfrontError =\n | { type: \"build\"; message: string; context?: BuildContext }\n | { type: \"api\"; message: string; context?: APIContext }\n | { type: \"render\"; message: string; context?: RenderContext }\n | { type: \"config\"; message: string; context?: ConfigContext }\n | { type: \"agent\"; message: string; context?: AgentContext }\n | { type: \"file\"; message: string; context?: FileContext }\n | { type: \"network\"; message: string; context?: NetworkContext }\n | { type: \"permission\"; message: string; context?: FileContext }\n | { type: \"not_supported\"; message: string; feature?: string };\n\nexport function createError(error: VeryfrontError): VeryfrontError {\n return error;\n}\n\nexport function isBuildError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"build\" }> {\n return error.type === \"build\";\n}\n\nexport function isAPIError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"api\" }> {\n return error.type === \"api\";\n}\n\nexport function isRenderError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"render\" }> {\n return error.type === \"render\";\n}\n\nexport function isConfigError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"config\" }> {\n return error.type === \"config\";\n}\n\nexport function isAgentError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"agent\" }> {\n return error.type === \"agent\";\n}\n\nexport function isFileError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"file\" }> {\n return error.type === \"file\";\n}\n\nexport function isNetworkError(\n error: VeryfrontError,\n): error is Extract<VeryfrontError, { type: \"network\" }> {\n return error.type === \"network\";\n}\n\nexport function toError(veryfrontError: VeryfrontError): Error {\n const error = new Error(veryfrontError.message);\n error.name = `VeryfrontError[${veryfrontError.type}]`;\n Object.defineProperty(error, \"context\", {\n value: veryfrontError,\n enumerable: false,\n configurable: true,\n });\n return error;\n}\n\nexport function fromError(error: unknown): VeryfrontError | null {\n if (error && typeof error === \"object\" && \"context\" in error) {\n // Safe access after 'in' check\n const context = (error as Record<string, unknown>).context;\n if (\n context &&\n typeof context === \"object\" &&\n \"type\" in context &&\n \"message\" in context\n ) {\n return context as VeryfrontError;\n }\n }\n return null;\n}\n\nexport function logError(\n error: VeryfrontError,\n logger?: { error: (msg: string, ...args: unknown[]) => void },\n): void {\n const log = logger || console;\n const context = \"context\" in error ? error.context || {} : {};\n log.error(`[${error.type}] ${error.message}`, context);\n}\n", "import { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\n/**\n * Rate Limiting System\n *\n * Prevents abuse and ensures fair usage of AI resources.\n * Supports multiple strategies: fixed window, sliding window, token bucket.\n */\n\nexport interface RateLimitConfig {\n /** Strategy type */\n strategy: \"fixed-window\" | \"sliding-window\" | \"token-bucket\";\n\n /** Maximum requests */\n maxRequests: number;\n\n /** Time window in milliseconds */\n windowMs: number;\n\n /** Identifier function (e.g., user ID, IP address) */\n identify?: (context: Record<string, unknown>) => string;\n\n /** Custom error message */\n errorMessage?: string;\n}\n\nexport interface RateLimitResult {\n /** Allowed or not */\n allowed: boolean;\n\n /** Requests remaining */\n remaining: number;\n\n /** Reset time (timestamp) */\n resetAt: number;\n\n /** Retry after (seconds) */\n retryAfter?: number;\n}\n\n/**\n * Fixed Window Rate Limiter\n */\nclass FixedWindowLimiter {\n private requests = new Map<string, { count: number; resetAt: number }>();\n private config: RateLimitConfig;\n\n constructor(config: RateLimitConfig) {\n this.config = config;\n }\n\n check(identifier: string): RateLimitResult {\n const now = Date.now();\n const entry = this.requests.get(identifier);\n\n // No previous requests or window expired\n if (!entry || now >= entry.resetAt) {\n const resetAt = now + this.config.windowMs;\n\n this.requests.set(identifier, {\n count: 1,\n resetAt,\n });\n\n return {\n allowed: true,\n remaining: this.config.maxRequests - 1,\n resetAt,\n };\n }\n\n // Within window\n if (entry.count < this.config.maxRequests) {\n entry.count++;\n\n return {\n allowed: true,\n remaining: this.config.maxRequests - entry.count,\n resetAt: entry.resetAt,\n };\n }\n\n // Limit exceeded\n return {\n allowed: false,\n remaining: 0,\n resetAt: entry.resetAt,\n retryAfter: Math.ceil((entry.resetAt - now) / 1000),\n };\n }\n\n reset(identifier: string): void {\n this.requests.delete(identifier);\n }\n\n clear(): void {\n this.requests.clear();\n }\n}\n\n/**\n * Token Bucket Rate Limiter (more flexible)\n */\nclass TokenBucketLimiter {\n private buckets = new Map<\n string,\n { tokens: number; lastRefill: number }\n >();\n private config: RateLimitConfig;\n private refillRate: number;\n\n constructor(config: RateLimitConfig) {\n this.config = config;\n // Refill rate: tokens per millisecond\n this.refillRate = config.maxRequests / config.windowMs;\n }\n\n check(identifier: string): RateLimitResult {\n const now = Date.now();\n let bucket = this.buckets.get(identifier);\n\n // Initialize bucket if not exists\n if (!bucket) {\n bucket = {\n tokens: this.config.maxRequests - 1,\n lastRefill: now,\n };\n this.buckets.set(identifier, bucket);\n\n return {\n allowed: true,\n remaining: bucket.tokens,\n resetAt: now + this.config.windowMs,\n };\n }\n\n // Refill tokens based on time passed\n const timePassed = now - bucket.lastRefill;\n const tokensToAdd = timePassed * this.refillRate;\n\n bucket.tokens = Math.min(\n this.config.maxRequests,\n bucket.tokens + tokensToAdd,\n );\n bucket.lastRefill = now;\n\n // Check if we have tokens\n if (bucket.tokens >= 1) {\n bucket.tokens--;\n\n return {\n allowed: true,\n remaining: Math.floor(bucket.tokens),\n resetAt: now + this.config.windowMs,\n };\n }\n\n // No tokens available\n const timeUntilToken = (1 - bucket.tokens) / this.refillRate;\n\n return {\n allowed: false,\n remaining: 0,\n resetAt: now + this.config.windowMs,\n retryAfter: Math.ceil(timeUntilToken / 1000),\n };\n }\n\n reset(identifier: string): void {\n this.buckets.delete(identifier);\n }\n\n clear(): void {\n this.buckets.clear();\n }\n}\n\n/**\n * Create a rate limiter\n */\nexport function createRateLimiter(config: RateLimitConfig) {\n let limiter: FixedWindowLimiter | TokenBucketLimiter;\n\n switch (config.strategy) {\n case \"fixed-window\":\n limiter = new FixedWindowLimiter(config);\n break;\n case \"token-bucket\":\n limiter = new TokenBucketLimiter(config);\n break;\n case \"sliding-window\":\n // Use token bucket as approximation for sliding window\n limiter = new TokenBucketLimiter(config);\n break;\n default:\n limiter = new FixedWindowLimiter(config);\n }\n\n return {\n /**\n * Check if request is allowed\n */\n check(context?: Record<string, unknown>): RateLimitResult {\n const identifier = config.identify ? config.identify(context!) : \"default\";\n\n return limiter.check(identifier);\n },\n\n /**\n * Reset rate limit for identifier\n */\n reset(context?: Record<string, unknown>): void {\n const identifier = config.identify ? config.identify(context!) : \"default\";\n\n limiter.reset(identifier);\n },\n\n /**\n * Clear all rate limits\n */\n clear(): void {\n limiter.clear();\n },\n };\n}\n\n/**\n * Create rate limit middleware for agents\n */\nexport function rateLimitMiddleware(config: RateLimitConfig) {\n const limiter = createRateLimiter(config);\n\n return <T>(context: Record<string, unknown>, next: () => Promise<T>): Promise<T> => {\n const result = limiter.check(context);\n\n if (!result.allowed) {\n throw toError(createError({\n type: \"agent\",\n message: config.errorMessage ||\n `Rate limit exceeded. Try again in ${result.retryAfter} seconds.`,\n }));\n }\n\n return next();\n };\n}\n", "/**\n * Response Caching System\n *\n * Cache agent responses to reduce API calls and improve performance.\n */\n\nimport type { AgentResponse } from \"../../types/agent.ts\";\n\nexport interface CacheConfig {\n /** Cache strategy */\n strategy: \"memory\" | \"lru\" | \"ttl\";\n\n /** Maximum cache size (for LRU) */\n maxSize?: number;\n\n /** Time to live in milliseconds (for TTL) */\n ttl?: number;\n\n /** Generate cache key */\n keyGenerator?: (input: string, context?: Record<string, unknown>) => string;\n}\n\nexport interface CacheEntry {\n /** Cached response */\n response: AgentResponse;\n\n /** Timestamp when cached */\n cachedAt: number;\n\n /** Expiration timestamp (for TTL) */\n expiresAt?: number;\n\n /** Access count */\n accessCount: number;\n\n /** Last accessed timestamp */\n lastAccessedAt: number;\n}\n\n/**\n * Memory Cache (simple in-memory storage)\n */\nclass MemoryCache {\n private cache = new Map<string, CacheEntry>();\n\n set(key: string, response: AgentResponse): void {\n this.cache.set(key, {\n response,\n cachedAt: Date.now(),\n accessCount: 0,\n lastAccessedAt: Date.now(),\n });\n }\n\n get(key: string): AgentResponse | null {\n const entry = this.cache.get(key);\n\n if (!entry) return null;\n\n entry.accessCount++;\n entry.lastAccessedAt = Date.now();\n\n return entry.response;\n }\n\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n}\n\n/**\n * LRU Cache (Least Recently Used eviction)\n */\nclass LRUCache {\n private cache = new Map<string, CacheEntry>();\n private maxSize: number;\n\n constructor(maxSize: number = 100) {\n this.maxSize = maxSize;\n }\n\n set(key: string, response: AgentResponse): void {\n // If key exists, delete it first (will re-add to end)\n if (this.cache.has(key)) {\n this.cache.delete(key);\n }\n\n // If at max size, remove least recently used (first entry)\n if (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n }\n }\n\n this.cache.set(key, {\n response,\n cachedAt: Date.now(),\n accessCount: 0,\n lastAccessedAt: Date.now(),\n });\n }\n\n get(key: string): AgentResponse | null {\n const entry = this.cache.get(key);\n\n if (!entry) return null;\n\n // Move to end (mark as recently used)\n this.cache.delete(key);\n entry.accessCount++;\n entry.lastAccessedAt = Date.now();\n this.cache.set(key, entry);\n\n return entry.response;\n }\n\n has(key: string): boolean {\n return this.cache.has(key);\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n}\n\n/**\n * TTL Cache (Time To Live eviction)\n */\nclass TTLCache {\n private cache = new Map<string, CacheEntry>();\n private ttl: number;\n private cleanupInterval: ReturnType<typeof setInterval> | null = null;\n\n constructor(ttl: number = 300000) {\n this.ttl = ttl;\n this.startCleanup();\n }\n\n set(key: string, response: AgentResponse): void {\n const now = Date.now();\n\n this.cache.set(key, {\n response,\n cachedAt: now,\n expiresAt: now + this.ttl,\n accessCount: 0,\n lastAccessedAt: now,\n });\n }\n\n get(key: string): AgentResponse | null {\n const entry = this.cache.get(key);\n\n if (!entry) return null;\n\n // Check if expired\n if (entry.expiresAt && Date.now() >= entry.expiresAt) {\n this.cache.delete(key);\n return null;\n }\n\n entry.accessCount++;\n entry.lastAccessedAt = Date.now();\n\n return entry.response;\n }\n\n has(key: string): boolean {\n const entry = this.cache.get(key);\n\n if (!entry) return false;\n\n // Check if expired\n if (entry.expiresAt && Date.now() >= entry.expiresAt) {\n this.cache.delete(key);\n return false;\n }\n\n return true;\n }\n\n delete(key: string): void {\n this.cache.delete(key);\n }\n\n clear(): void {\n this.cache.clear();\n }\n\n size(): number {\n return this.cache.size;\n }\n\n destroy(): void {\n if (this.cleanupInterval) {\n clearInterval(this.cleanupInterval);\n this.cleanupInterval = null;\n }\n this.cache.clear();\n }\n\n private startCleanup(): void {\n this.cleanupInterval = setInterval(() => {\n const now = Date.now();\n\n for (const [key, entry] of this.cache.entries()) {\n if (entry.expiresAt && now >= entry.expiresAt) {\n this.cache.delete(key);\n }\n }\n }, 60000);\n }\n}\n\n/**\n * Create a cache instance\n */\nexport function createCache(config: CacheConfig) {\n let cache: MemoryCache | LRUCache | TTLCache;\n\n switch (config.strategy) {\n case \"memory\":\n cache = new MemoryCache();\n break;\n case \"lru\":\n cache = new LRUCache(config.maxSize || 100);\n break;\n case \"ttl\":\n cache = new TTLCache(config.ttl || 300000);\n break;\n default:\n cache = new MemoryCache();\n }\n\n const keyGenerator = config.keyGenerator || ((input: string) => `cache_${hashString(input)}`);\n\n return {\n /**\n * Get cached response\n */\n get(input: string, context?: Record<string, unknown>): AgentResponse | null {\n const key = keyGenerator(input, context);\n return cache.get(key);\n },\n\n /**\n * Set cached response\n */\n set(input: string, response: AgentResponse, context?: Record<string, unknown>): void {\n const key = keyGenerator(input, context);\n cache.set(key, response);\n },\n\n /**\n * Check if cached\n */\n has(input: string, context?: Record<string, unknown>): boolean {\n const key = keyGenerator(input, context);\n return cache.has(key);\n },\n\n /**\n * Delete cached entry\n */\n delete(input: string, context?: Record<string, unknown>): void {\n const key = keyGenerator(input, context);\n cache.delete(key);\n },\n\n /**\n * Clear all cache\n */\n clear(): void {\n cache.clear();\n },\n\n /**\n * Get cache size\n */\n size(): number {\n return cache.size();\n },\n };\n}\n\n/**\n * Simple string hash function\n */\nfunction hashString(str: string): string {\n let hash = 0;\n\n for (let i = 0; i < str.length; i++) {\n const char = str.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n\n return Math.abs(hash).toString(36);\n}\n\n/**\n * Cache middleware for agents\n */\nexport function cacheMiddleware(config: CacheConfig) {\n const cache = createCache(config);\n\n return async (\n context: Record<string, unknown>,\n next: () => Promise<AgentResponse>,\n ): Promise<AgentResponse> => {\n const inputString = typeof context.input === \"string\"\n ? context.input\n : JSON.stringify(context.input);\n\n // Check cache\n const cached = cache.get(inputString, context);\n\n if (cached) {\n return {\n ...cached,\n metadata: {\n ...cached.metadata,\n fromCache: true,\n cachedAt: Date.now(),\n },\n };\n }\n\n // Execute and cache\n const result = await next();\n cache.set(inputString, result, context);\n\n return result;\n };\n}\n", "export interface GlobalWithDeno {\n Deno?: {\n env: {\n get(key: string): string | undefined;\n };\n };\n}\n\nexport interface GlobalWithProcess {\n process?: {\n env: Record<string, string | undefined>;\n version?: string;\n versions?: Record<string, string>;\n };\n}\n\nexport interface GlobalWithBun {\n Bun?: {\n version: string;\n };\n}\n\nexport function hasDenoRuntime(global: unknown): global is GlobalWithDeno {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Deno\" in global &&\n typeof (global as GlobalWithDeno).Deno?.env?.get === \"function\"\n );\n}\n\nexport function hasNodeProcess(global: unknown): global is GlobalWithProcess {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"process\" in global &&\n typeof (global as GlobalWithProcess).process?.env === \"object\"\n );\n}\n\nexport function hasBunRuntime(global: unknown): global is GlobalWithBun {\n return (\n typeof global === \"object\" &&\n global !== null &&\n \"Bun\" in global &&\n typeof (global as GlobalWithBun).Bun !== \"undefined\"\n );\n}\n", "import type { GlobalWithDeno, GlobalWithProcess } from \"../runtime-guards.ts\";\nimport { hasDenoRuntime, hasNodeProcess } from \"../runtime-guards.ts\";\n\nexport function getEnvironmentVariable(name: string): string | undefined {\n try {\n if (typeof Deno !== \"undefined\" && hasDenoRuntime(globalThis)) {\n const value = (globalThis as GlobalWithDeno).Deno?.env.get(name);\n return value === \"\" ? undefined : value;\n }\n if (hasNodeProcess(globalThis)) {\n const value = (globalThis as GlobalWithProcess).process?.env[name];\n return value === \"\" ? undefined : value;\n }\n } catch {\n return undefined;\n }\n return undefined;\n}\n\nexport function isTestEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"test\";\n}\n\nexport function isProductionEnvironment(): boolean {\n return getEnvironmentVariable(\"NODE_ENV\") === \"production\";\n}\n\nexport function isDevelopmentEnvironment(): boolean {\n const env = getEnvironmentVariable(\"NODE_ENV\");\n return env === \"development\" || env === undefined;\n}\n", "import { getEnvironmentVariable } from \"./env.ts\";\n\nexport enum LogLevel {\n DEBUG = 0,\n INFO = 1,\n WARN = 2,\n ERROR = 3,\n}\n\nexport interface Logger {\n debug(message: string, ...args: unknown[]): void;\n info(message: string, ...args: unknown[]): void;\n warn(message: string, ...args: unknown[]): void;\n error(message: string, ...args: unknown[]): void;\n time<T>(label: string, fn: () => Promise<T>): Promise<T>;\n}\n\nconst originalConsole = {\n debug: console.debug,\n log: console.log,\n warn: console.warn,\n error: console.error,\n};\n\nlet cachedLogLevel: LogLevel | undefined;\n\nfunction resolveLogLevel(force = false): LogLevel {\n if (force || cachedLogLevel === undefined) {\n cachedLogLevel = getDefaultLevel();\n }\n return cachedLogLevel;\n}\n\nclass ConsoleLogger implements Logger {\n constructor(\n private prefix: string,\n private level: LogLevel = resolveLogLevel(),\n ) {}\n\n setLevel(level: LogLevel): void {\n this.level = level;\n }\n\n getLevel(): LogLevel {\n return this.level;\n }\n\n debug(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.DEBUG) {\n console.debug(`[${this.prefix}] DEBUG: ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.INFO) {\n console.log(`[${this.prefix}] ${message}`, ...args);\n }\n }\n\n warn(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.WARN) {\n console.warn(`[${this.prefix}] WARN: ${message}`, ...args);\n }\n }\n\n error(message: string, ...args: unknown[]): void {\n if (this.level <= LogLevel.ERROR) {\n console.error(`[${this.prefix}] ERROR: ${message}`, ...args);\n }\n }\n\n async time<T>(label: string, fn: () => Promise<T>): Promise<T> {\n const start = performance.now();\n try {\n const result = await fn();\n const end = performance.now();\n this.debug(`${label} completed in ${(end - start).toFixed(2)}ms`);\n return result;\n } catch (error) {\n const end = performance.now();\n this.error(`${label} failed after ${(end - start).toFixed(2)}ms`, error);\n throw error;\n }\n }\n}\n\nfunction parseLogLevel(levelString: string | undefined): LogLevel | undefined {\n if (!levelString) return undefined;\n const upper = levelString.toUpperCase();\n switch (upper) {\n case \"DEBUG\":\n return LogLevel.DEBUG;\n case \"WARN\":\n return LogLevel.WARN;\n case \"ERROR\":\n return LogLevel.ERROR;\n case \"INFO\":\n return LogLevel.INFO;\n default:\n return undefined;\n }\n}\n\nconst getDefaultLevel = (): LogLevel => {\n const envLevel = getEnvironmentVariable(\"LOG_LEVEL\");\n const parsedLevel = parseLogLevel(envLevel);\n if (parsedLevel !== undefined) return parsedLevel;\n\n const debugFlag = getEnvironmentVariable(\"VERYFRONT_DEBUG\");\n if (debugFlag === \"1\" || debugFlag === \"true\") return LogLevel.DEBUG;\n\n return LogLevel.INFO;\n};\n\nconst trackedLoggers = new Set<ConsoleLogger>();\n\nfunction createLogger(prefix: string): ConsoleLogger {\n const logger = new ConsoleLogger(prefix);\n trackedLoggers.add(logger);\n return logger;\n}\n\nexport const cliLogger = createLogger(\"CLI\");\nexport const serverLogger = createLogger(\"SERVER\");\nexport const rendererLogger = createLogger(\"RENDERER\");\nexport const bundlerLogger = createLogger(\"BUNDLER\");\nexport const agentLogger = createLogger(\"AGENT\");\n\nexport const logger = createLogger(\"VERYFRONT\");\n\ntype LoggerResetOptions = {\n restoreConsole?: boolean;\n};\n\nexport function __loggerResetForTests(options: LoggerResetOptions = {}): void {\n const updatedLevel = resolveLogLevel(true);\n for (const instance of trackedLoggers) {\n instance.setLevel(updatedLevel);\n }\n\n if (options.restoreConsole) {\n console.debug = originalConsole.debug;\n console.log = originalConsole.log;\n console.warn = originalConsole.warn;\n console.error = originalConsole.error;\n }\n}\n", "/**\n * Cost Tracking System\n *\n * Track API usage and costs for monitoring and billing.\n */\n\nimport type { AgentContext, AgentResponse } from \"../../types/agent.ts\";\nimport { agentLogger } from \"@veryfront/utils/logger/logger.ts\";\n\nexport interface CostConfig {\n /** Provider pricing (per 1M tokens) */\n pricing: {\n [provider: string]: {\n input: number; // Cost per 1M input tokens\n output: number; // Cost per 1M output tokens\n };\n };\n\n /** Budget limits */\n limits?: {\n daily?: number;\n monthly?: number;\n };\n\n /** Callback when limit exceeded */\n onLimitExceeded?: (usage: UsageSummary) => void;\n}\n\nexport interface UsageRecord {\n /** Timestamp */\n timestamp: number;\n\n /** Agent ID */\n agentId: string;\n\n /** Model used */\n model: string;\n\n /** Provider */\n provider: string;\n\n /** Token usage */\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n };\n\n /** Estimated cost */\n cost: number;\n\n /** User/session identifier */\n userId?: string;\n}\n\nexport interface UsageSummary {\n /** Total requests */\n requests: number;\n\n /** Total tokens */\n tokens: {\n prompt: number;\n completion: number;\n total: number;\n };\n\n /** Total cost */\n cost: number;\n\n /** Cost by provider */\n byProvider: Record<\n string,\n {\n requests: number;\n tokens: number;\n cost: number;\n }\n >;\n\n /** Period */\n period: {\n start: number;\n end: number;\n };\n}\n\n/**\n * Cost Tracker\n */\nclass CostTracker {\n private records: UsageRecord[] = [];\n private config: CostConfig;\n private dailyTotal = 0;\n private monthlyTotal = 0;\n private lastDayReset = Date.now();\n private lastMonthReset = Date.now();\n private resetInterval: ReturnType<typeof setInterval> | null = null;\n\n constructor(config: CostConfig) {\n this.config = config;\n this.startPeriodicReset();\n }\n\n /**\n * Track an agent response\n */\n track(\n agentId: string,\n model: string,\n response: AgentResponse,\n userId?: string,\n ): UsageRecord {\n if (!response.usage) {\n agentLogger.warn(\"No usage data in response, cannot track costs\");\n return this.createEmptyRecord(agentId, model);\n }\n\n // Parse provider from model string\n const provider = model.split(\"/\")[0] || \"unknown\";\n\n // Calculate cost\n const cost = this.calculateCost(\n provider,\n response.usage.promptTokens,\n response.usage.completionTokens,\n );\n\n // Create record\n const record: UsageRecord = {\n timestamp: Date.now(),\n agentId,\n model,\n provider,\n tokens: {\n prompt: response.usage.promptTokens,\n completion: response.usage.completionTokens,\n total: response.usage.totalTokens,\n },\n cost,\n userId,\n };\n\n // Add to records\n this.records.push(record);\n\n // Update totals\n this.dailyTotal += cost;\n this.monthlyTotal += cost;\n\n // Check limits\n this.checkLimits();\n\n return record;\n }\n\n /**\n * Calculate cost based on token usage\n */\n private calculateCost(\n provider: string,\n inputTokens: number,\n outputTokens: number,\n ): number {\n const pricing = this.config.pricing[provider];\n\n if (!pricing) {\n agentLogger.warn(`No pricing configured for provider: ${provider}`);\n return 0;\n }\n\n const inputCost = (inputTokens / 1_000_000) * pricing.input;\n const outputCost = (outputTokens / 1_000_000) * pricing.output;\n\n return inputCost + outputCost;\n }\n\n /**\n * Get usage summary for a period\n */\n getSummary(startTime?: number, endTime?: number): UsageSummary {\n const start = startTime || 0;\n const end = endTime || Date.now();\n\n const relevantRecords = this.records.filter(\n (r) => r.timestamp >= start && r.timestamp <= end,\n );\n\n const summary: UsageSummary = {\n requests: relevantRecords.length,\n tokens: {\n prompt: 0,\n completion: 0,\n total: 0,\n },\n cost: 0,\n byProvider: {},\n period: { start, end },\n };\n\n for (const record of relevantRecords) {\n summary.tokens.prompt += record.tokens.prompt;\n summary.tokens.completion += record.tokens.completion;\n summary.tokens.total += record.tokens.total;\n summary.cost += record.cost;\n\n if (!summary.byProvider[record.provider]) {\n summary.byProvider[record.provider] = {\n requests: 0,\n tokens: 0,\n cost: 0,\n };\n }\n\n const providerStats = summary.byProvider[record.provider]!;\n providerStats.requests++;\n providerStats.tokens += record.tokens.total;\n providerStats.cost += record.cost;\n }\n\n return summary;\n }\n\n /**\n * Get daily summary\n */\n getDailySummary(): UsageSummary {\n const now = Date.now();\n const dayStart = now - 24 * 60 * 60 * 1000;\n return this.getSummary(dayStart, now);\n }\n\n /**\n * Get monthly summary\n */\n getMonthlySummary(): UsageSummary {\n const now = Date.now();\n const monthStart = now - 30 * 24 * 60 * 60 * 1000;\n return this.getSummary(monthStart, now);\n }\n\n /**\n * Check if limits are exceeded\n */\n private checkLimits(): void {\n if (this.config.limits?.daily && this.dailyTotal > this.config.limits.daily) {\n if (this.config.onLimitExceeded) {\n this.config.onLimitExceeded(this.getDailySummary());\n }\n }\n\n if (\n this.config.limits?.monthly &&\n this.monthlyTotal > this.config.limits.monthly\n ) {\n if (this.config.onLimitExceeded) {\n this.config.onLimitExceeded(this.getMonthlySummary());\n }\n }\n }\n\n private startPeriodicReset(): void {\n this.resetInterval = setInterval(() => {\n const now = Date.now();\n\n if (now - this.lastDayReset >= 24 * 60 * 60 * 1000) {\n this.dailyTotal = 0;\n this.lastDayReset = now;\n }\n\n if (now - this.lastMonthReset >= 30 * 24 * 60 * 60 * 1000) {\n this.monthlyTotal = 0;\n this.lastMonthReset = now;\n }\n }, 60000);\n }\n\n destroy(): void {\n if (this.resetInterval) {\n clearInterval(this.resetInterval);\n this.resetInterval = null;\n }\n this.records = [];\n }\n\n /**\n * Create empty record\n */\n private createEmptyRecord(agentId: string, model: string): UsageRecord {\n return {\n timestamp: Date.now(),\n agentId,\n model,\n provider: model.split(\"/\")[0] || \"unknown\",\n tokens: { prompt: 0, completion: 0, total: 0 },\n cost: 0,\n };\n }\n\n /**\n * Get all records\n */\n getAllRecords(): UsageRecord[] {\n return [...this.records];\n }\n\n /**\n * Clear all records\n */\n clear(): void {\n this.records = [];\n this.dailyTotal = 0;\n this.monthlyTotal = 0;\n }\n}\n\n/**\n * Create a cost tracker\n */\nexport function createCostTracker(config: CostConfig) {\n const tracker = new CostTracker(config);\n\n return {\n /**\n * Track agent response\n */\n track(\n agentId: string,\n model: string,\n response: AgentResponse,\n userId?: string,\n ): UsageRecord {\n return tracker.track(agentId, model, response, userId);\n },\n\n /**\n * Get usage summary\n */\n getSummary(startTime?: number, endTime?: number): UsageSummary {\n return tracker.getSummary(startTime, endTime);\n },\n\n /**\n * Get daily summary\n */\n getDailySummary(): UsageSummary {\n return tracker.getDailySummary();\n },\n\n /**\n * Get monthly summary\n */\n getMonthlySummary(): UsageSummary {\n return tracker.getMonthlySummary();\n },\n\n /**\n * Get all records\n */\n getAllRecords(): UsageRecord[] {\n return tracker.getAllRecords();\n },\n\n /**\n * Clear all data\n */\n clear(): void {\n tracker.clear();\n },\n };\n}\n\n/**\n * Cost tracking middleware for agents\n */\nexport function costTrackingMiddleware(config: CostConfig) {\n const tracker = createCostTracker(config);\n\n return async (\n context: AgentContext,\n next: () => Promise<AgentResponse>,\n ): Promise<AgentResponse> => {\n const result = await next();\n\n // Track cost\n tracker.track(\n context.agentId,\n context.model || \"unknown\",\n result,\n (context.data as Record<string, unknown>)?.userId as string | undefined,\n );\n\n return result;\n };\n}\n", "import type { AgentContext, AgentResponse } from \"../../types/agent.ts\";\nimport { createError, toError } from \"../../../core/errors/veryfront-error.ts\";\n/**\n * Input Validation and Output Filtering\n *\n * Security features to prevent prompt injection, data leakage, and harmful content.\n */\n\nexport interface SecurityConfig {\n /** Input validation rules */\n input?: {\n /** Maximum input length */\n maxLength?: number;\n\n /** Blocked patterns (regex) */\n blockedPatterns?: RegExp[];\n\n /** Sanitize input */\n sanitize?: boolean;\n\n /** Custom validator */\n validate?: (input: string) => boolean | Promise<boolean>;\n };\n\n /** Output filtering rules */\n output?: {\n /** Blocked patterns in output */\n blockedPatterns?: RegExp[];\n\n /** Filter PII (Personal Identifiable Information) */\n filterPII?: boolean;\n\n /** Custom filter */\n filter?: (output: string) => string | Promise<string>;\n };\n\n /** Action when violation detected */\n onViolation?: (violation: SecurityViolation) => void;\n}\n\nexport interface SecurityViolation {\n /** Violation type */\n type: \"input\" | \"output\";\n\n /** Violation reason */\n reason: string;\n\n /** Original content */\n content: string;\n\n /** Matched pattern (if any) */\n pattern?: RegExp;\n}\n\n/**\n * Common blocked patterns\n */\nexport const COMMON_BLOCKED_PATTERNS = {\n /** Prompt injection attempts */\n promptInjection: [\n /ignore\\s+previous\\s+instructions/i,\n /ignore\\s+all\\s+previous\\s+prompts/i,\n /you\\s+are\\s+now\\s+a/i,\n /pretend\\s+you\\s+are/i,\n /system:\\s*/i,\n /<\\|im_start\\|>/i,\n /<\\|im_end\\|>/i,\n ],\n\n /** Potential data exfiltration */\n dataExfiltration: [\n /password/i,\n /api[_\\s-]?key/i,\n /secret/i,\n /token/i,\n /credit\\s+card/i,\n ],\n\n /** SQL injection patterns */\n sqlInjection: [\n /(\\bUNION\\b|\\bSELECT\\b).*\\bFROM\\b/i,\n /;\\s*(DROP|DELETE|UPDATE|INSERT)/i,\n ],\n\n /** XSS patterns */\n xss: [\n /<script[^>]*>.*?<\\/script>/gi,\n /javascript:/i,\n /on\\w+\\s*=/i, // Event handlers\n ],\n};\n\n/**\n * PII patterns (email, phone, SSN, etc.)\n */\nconst PII_PATTERNS = {\n email: /\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,}\\b/gi,\n phone: /\\b(\\+\\d{1,3}[-.\\s]?)?\\(?\\d{3}\\)?[-.\\s]?\\d{3}[-.\\s]?\\d{4}\\b/g,\n ssn: /\\b\\d{3}-\\d{2}-\\d{4}\\b/g,\n creditCard: /\\b\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}\\b/g,\n};\n\n/**\n * Input Validator\n */\nexport class InputValidator {\n private config: SecurityConfig[\"input\"];\n\n constructor(config?: SecurityConfig[\"input\"]) {\n this.config = config || {};\n }\n\n /**\n * Validate input\n */\n async validate(input: string): Promise<{\n valid: boolean;\n sanitized?: string;\n violations: SecurityViolation[];\n }> {\n const violations: SecurityViolation[] = [];\n\n // Check length\n if (this.config?.maxLength && input.length > this.config.maxLength) {\n violations.push({\n type: \"input\",\n reason: `Input exceeds maximum length of ${this.config.maxLength}`,\n content: input.substring(0, 100) + \"...\",\n });\n }\n\n // Check blocked patterns\n if (this.config?.blockedPatterns) {\n for (const pattern of this.config.blockedPatterns) {\n if (pattern.test(input)) {\n violations.push({\n type: \"input\",\n reason: \"Input matches blocked pattern\",\n content: input,\n pattern,\n });\n }\n }\n }\n\n // Custom validation\n if (this.config?.validate) {\n const customValid = await this.config.validate(input);\n if (!customValid) {\n violations.push({\n type: \"input\",\n reason: \"Custom validation failed\",\n content: input,\n });\n }\n }\n\n // Sanitize if requested\n let sanitized = input;\n if (this.config?.sanitize) {\n sanitized = this.sanitizeInput(input);\n }\n\n return {\n valid: violations.length === 0,\n sanitized: this.config?.sanitize ? sanitized : undefined,\n violations,\n };\n }\n\n /**\n * Sanitize input (remove potentially harmful content)\n */\n private sanitizeInput(input: string): string {\n let sanitized = input;\n\n // Remove script tags\n sanitized = sanitized.replace(/<script[^>]*>.*?<\\/script>/gi, \"\");\n\n // Remove event handlers\n sanitized = sanitized.replace(/on\\w+\\s*=\\s*[\"'][^\"']*[\"']/gi, \"\");\n\n // Remove javascript: protocol\n sanitized = sanitized.replace(/javascript:/gi, \"\");\n\n return sanitized;\n }\n}\n\n/**\n * Output Filter\n */\nexport class OutputFilter {\n private config: SecurityConfig[\"output\"];\n\n constructor(config?: SecurityConfig[\"output\"]) {\n this.config = config || {};\n }\n\n /**\n * Filter output\n */\n async filter(output: string): Promise<{\n filtered: string;\n violations: SecurityViolation[];\n }> {\n const violations: SecurityViolation[] = [];\n let filtered = output;\n\n // Check blocked patterns\n if (this.config?.blockedPatterns) {\n for (const pattern of this.config.blockedPatterns) {\n if (pattern.test(filtered)) {\n violations.push({\n type: \"output\",\n reason: \"Output contains blocked pattern\",\n content: filtered,\n pattern,\n });\n\n // Redact matched content\n filtered = filtered.replace(pattern, \"[REDACTED]\");\n }\n }\n }\n\n // Filter PII\n if (this.config?.filterPII) {\n filtered = this.filterPII(filtered);\n }\n\n // Custom filter\n if (this.config?.filter) {\n filtered = await this.config.filter(filtered);\n }\n\n return { filtered, violations };\n }\n\n /**\n * Filter PII from output\n */\n private filterPII(output: string): string {\n let filtered = output;\n\n // Replace email addresses\n filtered = filtered.replace(PII_PATTERNS.email, \"[EMAIL]\");\n\n // Replace phone numbers\n filtered = filtered.replace(PII_PATTERNS.phone, \"[PHONE]\");\n\n // Replace SSN\n filtered = filtered.replace(PII_PATTERNS.ssn, \"[SSN]\");\n\n // Replace credit card numbers\n filtered = filtered.replace(PII_PATTERNS.creditCard, \"[CREDIT_CARD]\");\n\n return filtered;\n }\n}\n\n/**\n * Create security middleware for agents\n */\nexport function securityMiddleware(config: SecurityConfig) {\n const inputValidator = new InputValidator(config.input);\n const outputFilter = new OutputFilter(config.output);\n\n return async (\n context: AgentContext,\n next: () => Promise<AgentResponse>,\n ): Promise<AgentResponse> => {\n // Validate input\n const inputString = typeof context.input === \"string\"\n ? context.input\n : JSON.stringify(context.input);\n\n const inputValidation = await inputValidator.validate(inputString);\n\n if (!inputValidation.valid) {\n // Report violations\n inputValidation.violations.forEach((v) => {\n if (config.onViolation) {\n config.onViolation(v);\n }\n });\n\n const firstViolation = inputValidation.violations[0];\n throw toError(createError({\n type: \"agent\",\n message: `Input validation failed: ${firstViolation?.reason || \"Unknown reason\"}`,\n }));\n }\n\n // Execute with sanitized input if applicable\n if (inputValidation.sanitized) {\n context.input = inputValidation.sanitized;\n }\n\n // Execute\n const result = await next();\n\n // Filter output\n const outputFiltering = await outputFilter.filter(result.text);\n\n if (outputFiltering.violations.length > 0) {\n // Report violations\n outputFiltering.violations.forEach((v) => {\n if (config.onViolation) {\n config.onViolation(v);\n }\n });\n }\n\n // Return filtered result\n return {\n ...result,\n text: outputFiltering.filtered,\n };\n };\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["logger"]
|
|
7
7
|
}
|
package/dist/ai/workflow.js
CHANGED
|
@@ -399,12 +399,10 @@ var isCloudflare = typeof globalThis !== "undefined" && "caches" in globalThis &
|
|
|
399
399
|
|
|
400
400
|
// src/platform/compat/fs.ts
|
|
401
401
|
var NodeFileSystem = class {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
this.initialized = false;
|
|
407
|
-
}
|
|
402
|
+
fs = null;
|
|
403
|
+
os = null;
|
|
404
|
+
path = null;
|
|
405
|
+
initialized = false;
|
|
408
406
|
async ensureInitialized() {
|
|
409
407
|
if (this.initialized)
|
|
410
408
|
return;
|
|
@@ -698,7 +696,7 @@ var LRU_DEFAULT_MAX_SIZE_BYTES = 50 * 1024 * 1024;
|
|
|
698
696
|
// deno.json
|
|
699
697
|
var deno_default = {
|
|
700
698
|
name: "veryfront",
|
|
701
|
-
version: "0.0.
|
|
699
|
+
version: "0.0.70",
|
|
702
700
|
nodeModulesDir: "auto",
|
|
703
701
|
exclude: [
|
|
704
702
|
"npm/",
|
|
@@ -1022,11 +1020,9 @@ var VERYFRONT_PATHS = {
|
|
|
1022
1020
|
|
|
1023
1021
|
// src/core/utils/bundle-manifest.ts
|
|
1024
1022
|
var InMemoryBundleManifestStore = class {
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
this.sourceIndex = /* @__PURE__ */ new Map();
|
|
1029
|
-
}
|
|
1023
|
+
metadata = /* @__PURE__ */ new Map();
|
|
1024
|
+
code = /* @__PURE__ */ new Map();
|
|
1025
|
+
sourceIndex = /* @__PURE__ */ new Map();
|
|
1030
1026
|
getBundleMetadata(key) {
|
|
1031
1027
|
const entry = this.metadata.get(key);
|
|
1032
1028
|
if (!entry)
|
|
@@ -1119,6 +1115,9 @@ var manifestStore = new InMemoryBundleManifestStore();
|
|
|
1119
1115
|
|
|
1120
1116
|
// src/ai/workflow/blob/local-storage.ts
|
|
1121
1117
|
var LocalBlobStorage = class {
|
|
1118
|
+
rootDir;
|
|
1119
|
+
baseUrl;
|
|
1120
|
+
fs;
|
|
1122
1121
|
constructor(rootDir, baseUrl) {
|
|
1123
1122
|
this.rootDir = rootDir;
|
|
1124
1123
|
this.baseUrl = baseUrl;
|
|
@@ -1272,9 +1271,10 @@ Original error: ${error instanceof Error ? error.message : String(error)}`
|
|
|
1272
1271
|
}
|
|
1273
1272
|
}
|
|
1274
1273
|
var S3BlobStorage = class {
|
|
1274
|
+
client = null;
|
|
1275
|
+
config;
|
|
1276
|
+
initPromise = null;
|
|
1275
1277
|
constructor(config) {
|
|
1276
|
-
this.client = null;
|
|
1277
|
-
this.initPromise = null;
|
|
1278
1278
|
this.config = config;
|
|
1279
1279
|
this.initPromise = this.initialize();
|
|
1280
1280
|
}
|
|
@@ -1504,8 +1504,9 @@ var S3BlobStorage = class {
|
|
|
1504
1504
|
|
|
1505
1505
|
// src/ai/workflow/blob/gcs-storage.ts
|
|
1506
1506
|
var GCSBlobStorage = class {
|
|
1507
|
+
config;
|
|
1508
|
+
tokenCache = null;
|
|
1507
1509
|
constructor(config) {
|
|
1508
|
-
this.tokenCache = null;
|
|
1509
1510
|
this.config = config;
|
|
1510
1511
|
try {
|
|
1511
1512
|
JSON.parse(this.config.serviceAccountKey);
|
|
@@ -1793,12 +1794,13 @@ function hasEventSupport(backend) {
|
|
|
1793
1794
|
// src/ai/workflow/backends/memory.ts
|
|
1794
1795
|
var DEFAULT_MAX_QUEUE_SIZE = 1e4;
|
|
1795
1796
|
var MemoryBackend = class {
|
|
1797
|
+
runs = /* @__PURE__ */ new Map();
|
|
1798
|
+
checkpoints = /* @__PURE__ */ new Map();
|
|
1799
|
+
approvals = /* @__PURE__ */ new Map();
|
|
1800
|
+
queue = [];
|
|
1801
|
+
locks = /* @__PURE__ */ new Map();
|
|
1802
|
+
config;
|
|
1796
1803
|
constructor(config = {}) {
|
|
1797
|
-
this.runs = /* @__PURE__ */ new Map();
|
|
1798
|
-
this.checkpoints = /* @__PURE__ */ new Map();
|
|
1799
|
-
this.approvals = /* @__PURE__ */ new Map();
|
|
1800
|
-
this.queue = [];
|
|
1801
|
-
this.locks = /* @__PURE__ */ new Map();
|
|
1802
1804
|
this.config = {
|
|
1803
1805
|
prefix: "wf:",
|
|
1804
1806
|
debug: false,
|
|
@@ -2355,10 +2357,11 @@ var DenoRedisAdapter = class {
|
|
|
2355
2357
|
}
|
|
2356
2358
|
};
|
|
2357
2359
|
var RedisBackend = class {
|
|
2360
|
+
client = null;
|
|
2361
|
+
connectionPromise = null;
|
|
2362
|
+
config;
|
|
2363
|
+
initialized = false;
|
|
2358
2364
|
constructor(config = {}) {
|
|
2359
|
-
this.client = null;
|
|
2360
|
-
this.connectionPromise = null;
|
|
2361
|
-
this.initialized = false;
|
|
2362
2365
|
this.config = {
|
|
2363
2366
|
prefix: "vf:workflow:",
|
|
2364
2367
|
streamKey: "vf:workflow:stream",
|
|
@@ -2897,6 +2900,7 @@ var RedisBackend = class {
|
|
|
2897
2900
|
|
|
2898
2901
|
// src/ai/workflow/executor/dag-executor.ts
|
|
2899
2902
|
var DAGExecutor = class {
|
|
2903
|
+
config;
|
|
2900
2904
|
constructor(config) {
|
|
2901
2905
|
this.config = {
|
|
2902
2906
|
maxConcurrency: 10,
|
|
@@ -3438,6 +3442,7 @@ var DAGExecutor = class {
|
|
|
3438
3442
|
|
|
3439
3443
|
// src/ai/workflow/executor/checkpoint-manager.ts
|
|
3440
3444
|
var CheckpointManager = class {
|
|
3445
|
+
config;
|
|
3441
3446
|
constructor(config) {
|
|
3442
3447
|
this.config = {
|
|
3443
3448
|
debug: false,
|
|
@@ -3595,6 +3600,7 @@ var CheckpointManager = class {
|
|
|
3595
3600
|
// src/ai/workflow/executor/step-executor.ts
|
|
3596
3601
|
var DEFAULT_STEP_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
3597
3602
|
var StepExecutor = class {
|
|
3603
|
+
config;
|
|
3598
3604
|
constructor(config = {}) {
|
|
3599
3605
|
this.config = {
|
|
3600
3606
|
defaultTimeout: DEFAULT_STEP_TIMEOUT_MS,
|
|
@@ -3816,8 +3822,15 @@ var StepExecutor = class {
|
|
|
3816
3822
|
|
|
3817
3823
|
// src/ai/workflow/executor/workflow-executor.ts
|
|
3818
3824
|
var WorkflowExecutor = class _WorkflowExecutor {
|
|
3825
|
+
config;
|
|
3826
|
+
stepExecutor;
|
|
3827
|
+
checkpointManager;
|
|
3828
|
+
dagExecutor;
|
|
3829
|
+
workflows = /* @__PURE__ */ new Map();
|
|
3830
|
+
blobResolver;
|
|
3831
|
+
/** Default lock duration: 30 seconds */
|
|
3832
|
+
static DEFAULT_LOCK_DURATION = 3e4;
|
|
3819
3833
|
constructor(config) {
|
|
3820
|
-
this.workflows = /* @__PURE__ */ new Map();
|
|
3821
3834
|
this.config = {
|
|
3822
3835
|
maxConcurrency: 10,
|
|
3823
3836
|
debug: false,
|
|
@@ -3853,10 +3866,6 @@ var WorkflowExecutor = class _WorkflowExecutor {
|
|
|
3853
3866
|
};
|
|
3854
3867
|
}
|
|
3855
3868
|
}
|
|
3856
|
-
static {
|
|
3857
|
-
/** Default lock duration: 30 seconds */
|
|
3858
|
-
this.DEFAULT_LOCK_DURATION = 3e4;
|
|
3859
|
-
}
|
|
3860
3869
|
/**
|
|
3861
3870
|
* Register a workflow definition
|
|
3862
3871
|
*/
|
|
@@ -4211,8 +4220,10 @@ var WorkflowExecutor = class _WorkflowExecutor {
|
|
|
4211
4220
|
|
|
4212
4221
|
// src/ai/workflow/runtime/approval-manager.ts
|
|
4213
4222
|
var ApprovalManager = class {
|
|
4223
|
+
config;
|
|
4224
|
+
expirationTimer;
|
|
4225
|
+
destroyed = false;
|
|
4214
4226
|
constructor(config) {
|
|
4215
|
-
this.destroyed = false;
|
|
4216
4227
|
this.config = {
|
|
4217
4228
|
expirationCheckInterval: 6e4,
|
|
4218
4229
|
// Check every minute
|
|
@@ -4439,9 +4450,7 @@ var ApprovalManager = class {
|
|
|
4439
4450
|
|
|
4440
4451
|
// src/ai/workflow/runtime/agent-registry.ts
|
|
4441
4452
|
var DefaultAgentRegistry = class {
|
|
4442
|
-
|
|
4443
|
-
this.agents = /* @__PURE__ */ new Map();
|
|
4444
|
-
}
|
|
4453
|
+
agents = /* @__PURE__ */ new Map();
|
|
4445
4454
|
/**
|
|
4446
4455
|
* Register an agent
|
|
4447
4456
|
*/
|
|
@@ -4488,9 +4497,7 @@ var DefaultAgentRegistry = class {
|
|
|
4488
4497
|
}
|
|
4489
4498
|
};
|
|
4490
4499
|
var DefaultToolRegistry = class {
|
|
4491
|
-
|
|
4492
|
-
this.tools = /* @__PURE__ */ new Map();
|
|
4493
|
-
}
|
|
4500
|
+
tools = /* @__PURE__ */ new Map();
|
|
4494
4501
|
/**
|
|
4495
4502
|
* Register a tool
|
|
4496
4503
|
*/
|
|
@@ -4554,8 +4561,16 @@ function createMockAgent(id, options = {}) {
|
|
|
4554
4561
|
return {
|
|
4555
4562
|
text,
|
|
4556
4563
|
messages: [
|
|
4557
|
-
{
|
|
4558
|
-
|
|
4564
|
+
{
|
|
4565
|
+
id: `msg_${Date.now()}_0`,
|
|
4566
|
+
role: "user",
|
|
4567
|
+
parts: [{ type: "text", text: inputStr }]
|
|
4568
|
+
},
|
|
4569
|
+
{
|
|
4570
|
+
id: `msg_${Date.now()}_1`,
|
|
4571
|
+
role: "assistant",
|
|
4572
|
+
parts: [{ type: "text", text }]
|
|
4573
|
+
}
|
|
4559
4574
|
],
|
|
4560
4575
|
toolCalls: options.toolCalls?.map((tc) => ({
|
|
4561
4576
|
...tc,
|
|
@@ -4606,6 +4621,10 @@ function createMockTool(id, options = {}) {
|
|
|
4606
4621
|
|
|
4607
4622
|
// src/ai/workflow/api/workflow-client.ts
|
|
4608
4623
|
var WorkflowClient = class {
|
|
4624
|
+
backend;
|
|
4625
|
+
executor;
|
|
4626
|
+
approvalManager;
|
|
4627
|
+
debug;
|
|
4609
4628
|
constructor(config = {}) {
|
|
4610
4629
|
this.debug = config.debug ?? false;
|
|
4611
4630
|
this.backend = config.backend ?? new MemoryBackend({ debug: this.debug });
|
|
@@ -4770,6 +4789,7 @@ function createWorkflowClient(config) {
|
|
|
4770
4789
|
|
|
4771
4790
|
// src/ai/workflow/backends/temporal.ts
|
|
4772
4791
|
var TemporalAdapter = class {
|
|
4792
|
+
config;
|
|
4773
4793
|
constructor(config = {}) {
|
|
4774
4794
|
this.config = {
|
|
4775
4795
|
address: "localhost:7233",
|
|
@@ -4830,6 +4850,7 @@ var TemporalAdapter = class {
|
|
|
4830
4850
|
|
|
4831
4851
|
// src/ai/workflow/backends/inngest.ts
|
|
4832
4852
|
var InngestAdapter = class {
|
|
4853
|
+
config;
|
|
4833
4854
|
constructor(config = {}) {
|
|
4834
4855
|
this.config = {
|
|
4835
4856
|
debug: false,
|
|
@@ -4887,6 +4908,7 @@ var InngestAdapter = class {
|
|
|
4887
4908
|
|
|
4888
4909
|
// src/ai/workflow/backends/cloudflare.ts
|
|
4889
4910
|
var CloudflareAdapter = class {
|
|
4911
|
+
config;
|
|
4890
4912
|
constructor(config = {}) {
|
|
4891
4913
|
this.config = {
|
|
4892
4914
|
durableObjectBinding: "WORKFLOW_DO",
|