@kb-labs/core-platform 1.0.0

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.
Files changed (56) hide show
  1. package/README.md +108 -0
  2. package/dist/adapters/index.cjs +26 -0
  3. package/dist/adapters/index.cjs.map +1 -0
  4. package/dist/adapters/index.d.cts +125 -0
  5. package/dist/adapters/index.d.ts +125 -0
  6. package/dist/adapters/index.js +21 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/artifacts-BUghvkUU.d.cts +273 -0
  9. package/dist/artifacts-Bd-1UVTw.d.ts +273 -0
  10. package/dist/artifacts-DrVnkLzu.d.cts +1374 -0
  11. package/dist/artifacts-DrVnkLzu.d.ts +1374 -0
  12. package/dist/core/index.cjs +4 -0
  13. package/dist/core/index.cjs.map +1 -0
  14. package/dist/core/index.d.cts +2 -0
  15. package/dist/core/index.d.ts +2 -0
  16. package/dist/core/index.js +3 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/database-DGV6a1nj.d.cts +427 -0
  19. package/dist/database-DGV6a1nj.d.ts +427 -0
  20. package/dist/index.cjs +1405 -0
  21. package/dist/index.cjs.map +1 -0
  22. package/dist/index.d.cts +579 -0
  23. package/dist/index.d.ts +579 -0
  24. package/dist/index.js +1381 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/log-reader-BVohbSMB.d.cts +314 -0
  27. package/dist/log-reader-uOHBLBax.d.ts +314 -0
  28. package/dist/noop/adapters/index.cjs +656 -0
  29. package/dist/noop/adapters/index.cjs.map +1 -0
  30. package/dist/noop/adapters/index.d.cts +71 -0
  31. package/dist/noop/adapters/index.d.ts +71 -0
  32. package/dist/noop/adapters/index.js +637 -0
  33. package/dist/noop/adapters/index.js.map +1 -0
  34. package/dist/noop/core/index.cjs +217 -0
  35. package/dist/noop/core/index.cjs.map +1 -0
  36. package/dist/noop/core/index.d.cts +94 -0
  37. package/dist/noop/core/index.d.ts +94 -0
  38. package/dist/noop/core/index.js +212 -0
  39. package/dist/noop/core/index.js.map +1 -0
  40. package/dist/noop/index.cjs +806 -0
  41. package/dist/noop/index.cjs.map +1 -0
  42. package/dist/noop/index.d.cts +36 -0
  43. package/dist/noop/index.d.ts +36 -0
  44. package/dist/noop/index.js +787 -0
  45. package/dist/noop/index.js.map +1 -0
  46. package/dist/resources-DaufJFad.d.cts +419 -0
  47. package/dist/resources-DaufJFad.d.ts +419 -0
  48. package/dist/serializable/index.cjs +162 -0
  49. package/dist/serializable/index.cjs.map +1 -0
  50. package/dist/serializable/index.d.cts +352 -0
  51. package/dist/serializable/index.d.ts +352 -0
  52. package/dist/serializable/index.js +152 -0
  53. package/dist/serializable/index.js.map +1 -0
  54. package/dist/snapshot-provider--COac4P-.d.ts +923 -0
  55. package/dist/snapshot-provider-nE9wuc1C.d.cts +923 -0
  56. package/package.json +92 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/noop/adapters/analytics.ts","../../src/noop/adapters/vector-store.ts","../../src/noop/adapters/llm.ts","../../src/noop/adapters/embeddings.ts","../../src/noop/adapters/cache.ts","../../src/noop/adapters/config.ts","../../src/noop/adapters/storage.ts","../../src/noop/adapters/logger.ts","../../src/noop/adapters/event-bus.ts","../../src/noop/adapters/invoke.ts","../../src/noop/adapters/artifacts.ts","../../src/noop/noop-platform.ts","../../src/noop/core/workflow.ts","../../src/noop/core/jobs.ts","../../src/noop/core/cron.ts","../../src/noop/core/resources.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * @module @kb-labs/core-platform/noop/adapters/analytics\n * NoOp analytics implementation.\n */\n\nimport type { IAnalytics } from '../../adapters/analytics.js';\n\n/**\n * NoOp analytics - does nothing, safe for testing and development.\n */\nexport class NoOpAnalytics implements IAnalytics {\n async track(_event: string, _properties?: Record<string, unknown>): Promise<void> {\n // No-op\n }\n\n async identify(_userId: string, _traits?: Record<string, unknown>): Promise<void> {\n // No-op\n }\n\n async flush(): Promise<void> {\n // No-op\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/vector-store\n * In-memory vector store implementation.\n */\n\nimport type {\n IVectorStore,\n VectorRecord,\n VectorSearchResult,\n VectorFilter,\n} from '../../adapters/vector-store.js';\n\n/**\n * Simple cosine similarity calculation.\n */\nfunction cosineSimilarity(a: number[], b: number[]): number {\n if (a.length !== b.length) {return 0;}\n\n let dotProduct = 0;\n let normA = 0;\n let normB = 0;\n\n for (let i = 0; i < a.length; i++) {\n const aVal = a[i] ?? 0;\n const bVal = b[i] ?? 0;\n dotProduct += aVal * bVal;\n normA += aVal * aVal;\n normB += bVal * bVal;\n }\n\n const denominator = Math.sqrt(normA) * Math.sqrt(normB);\n return denominator === 0 ? 0 : dotProduct / denominator;\n}\n\n/**\n * Check if record matches filter.\n */\nfunction matchesFilter(record: VectorRecord, filter: VectorFilter): boolean {\n const value = record.metadata?.[filter.field];\n\n switch (filter.operator) {\n case 'eq':\n return value === filter.value;\n case 'ne':\n return value !== filter.value;\n case 'gt':\n return typeof value === 'number' && value > (filter.value as number);\n case 'gte':\n return typeof value === 'number' && value >= (filter.value as number);\n case 'lt':\n return typeof value === 'number' && value < (filter.value as number);\n case 'lte':\n return typeof value === 'number' && value <= (filter.value as number);\n case 'in':\n return Array.isArray(filter.value) && filter.value.includes(value);\n case 'nin':\n return Array.isArray(filter.value) && !filter.value.includes(value);\n default:\n return true;\n }\n}\n\n/**\n * In-memory vector store.\n * Suitable for testing and development.\n */\nexport class MemoryVectorStore implements IVectorStore {\n private vectors = new Map<string, VectorRecord>();\n\n async search(\n query: number[],\n limit: number,\n filter?: VectorFilter\n ): Promise<VectorSearchResult[]> {\n const results: VectorSearchResult[] = [];\n\n for (const record of this.vectors.values()) {\n if (filter && !matchesFilter(record, filter)) {\n continue;\n }\n\n const score = cosineSimilarity(query, record.vector);\n results.push({\n id: record.id,\n score,\n metadata: record.metadata,\n });\n }\n\n return results\n .sort((a, b) => b.score - a.score)\n .slice(0, limit);\n }\n\n async upsert(vectors: VectorRecord[]): Promise<void> {\n for (const vector of vectors) {\n this.vectors.set(vector.id, vector);\n }\n }\n\n async delete(ids: string[]): Promise<void> {\n for (const id of ids) {\n this.vectors.delete(id);\n }\n }\n\n async count(): Promise<number> {\n return this.vectors.size;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/llm\n * Mock LLM implementation.\n */\n\nimport type {\n ILLM,\n LLMOptions,\n LLMResponse,\n LLMProtocolCapabilities,\n} from '../../adapters/llm.js';\n\n/**\n * Mock LLM that returns placeholder responses.\n * Useful for testing without API calls.\n */\nexport class MockLLM implements ILLM {\n getProtocolCapabilities(): LLMProtocolCapabilities {\n return {\n cache: { supported: false },\n stream: { supported: true },\n };\n }\n\n async complete(prompt: string, options?: LLMOptions): Promise<LLMResponse> {\n const content = `[Mock LLM Response] Received prompt of ${prompt.length} characters.`;\n\n return {\n content,\n usage: {\n promptTokens: Math.ceil(prompt.length / 4),\n completionTokens: Math.ceil(content.length / 4),\n },\n model: options?.model ?? 'mock-model',\n };\n }\n\n async *stream(prompt: string, options?: LLMOptions): AsyncIterable<string> {\n const response = `[Mock LLM Stream] Received prompt of ${prompt.length} characters.`;\n const words = response.split(' ');\n\n for (const word of words) {\n yield word + ' ';\n await new Promise((resolve) => {\n setTimeout(resolve, 50);\n });\n }\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/embeddings\n * Mock embeddings implementation.\n */\n\nimport type { IEmbeddings } from '../../adapters/embeddings.js';\n\n/**\n * Mock embeddings that generates deterministic vectors based on text hash.\n * Useful for testing without API calls.\n */\nexport class MockEmbeddings implements IEmbeddings {\n readonly dimensions = 1536;\n\n /**\n * Simple hash function for deterministic embedding generation.\n */\n private hash(text: string): number {\n let hash = 0;\n for (let i = 0; i < text.length; i++) {\n const char = text.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return hash;\n }\n\n /**\n * Generate a deterministic vector based on text.\n */\n private generateVector(text: string): number[] {\n const seed = this.hash(text);\n const vector: number[] = [];\n\n for (let i = 0; i < this.dimensions; i++) {\n // Use seeded pseudo-random to generate consistent vectors\n const value = Math.sin(seed * (i + 1)) * 0.5;\n vector.push(value);\n }\n\n // Normalize the vector\n const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));\n return vector.map((v) => v / magnitude);\n }\n\n async embed(text: string): Promise<number[]> {\n return this.generateVector(text);\n }\n\n async embedBatch(texts: string[]): Promise<number[][]> {\n return texts.map((text) => this.generateVector(text));\n }\n\n /**\n * Get the dimensions of the embeddings.\n * This method is needed for IPC/Unix Socket transport to access the dimensions property.\n */\n async getDimensions(): Promise<number> {\n return this.dimensions;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/cache\n * In-memory cache implementation.\n */\n\nimport type { ICache } from '../../adapters/cache.js';\n\ninterface CacheEntry<T> {\n value: T;\n expiresAt: number | null;\n}\n\ninterface SortedSetMember {\n score: number;\n member: string;\n}\n\n/**\n * In-memory cache with TTL support.\n * Useful for testing and local development.\n */\nexport class MemoryCache implements ICache {\n private store = new Map<string, CacheEntry<unknown>>();\n private sortedSets = new Map<string, SortedSetMember[]>();\n\n async get<T>(key: string): Promise<T | null> {\n const entry = this.store.get(key) as CacheEntry<T> | undefined;\n\n if (!entry) {\n return null;\n }\n\n // Check expiration\n if (entry.expiresAt !== null && Date.now() > entry.expiresAt) {\n this.store.delete(key);\n return null;\n }\n\n return entry.value;\n }\n\n async set<T>(key: string, value: T, ttl?: number): Promise<void> {\n const expiresAt = ttl ? Date.now() + ttl : null;\n this.store.set(key, { value, expiresAt });\n }\n\n async delete(key: string): Promise<void> {\n this.store.delete(key);\n }\n\n async clear(pattern?: string): Promise<void> {\n if (!pattern) {\n this.store.clear();\n return;\n }\n\n // Simple glob pattern matching (supports * wildcard)\n const regex = new RegExp('^' + pattern.replace(/\\*/g, '.*') + '$');\n for (const key of this.store.keys()) {\n if (regex.test(key)) {\n this.store.delete(key);\n }\n }\n }\n\n // ═══════════════════════════════════════════════════════════════════════\n // Sorted Set Operations\n // ═══════════════════════════════════════════════════════════════════════\n\n async zadd(key: string, score: number, member: string): Promise<void> {\n let set = this.sortedSets.get(key);\n if (!set) {\n set = [];\n this.sortedSets.set(key, set);\n }\n\n // Remove existing member if present\n const existingIndex = set.findIndex(m => m.member === member);\n if (existingIndex !== -1) {\n set.splice(existingIndex, 1);\n }\n\n // Add new member and sort by score\n set.push({ score, member });\n set.sort((a, b) => a.score - b.score);\n }\n\n async zrangebyscore(key: string, min: number, max: number): Promise<string[]> {\n const set = this.sortedSets.get(key);\n if (!set) {\n return [];\n }\n\n return set\n .filter(m => m.score >= min && m.score <= max)\n .map(m => m.member);\n }\n\n async zrem(key: string, member: string): Promise<void> {\n const set = this.sortedSets.get(key);\n if (!set) {\n return;\n }\n\n const index = set.findIndex(m => m.member === member);\n if (index !== -1) {\n set.splice(index, 1);\n }\n\n // Clean up empty sets\n if (set.length === 0) {\n this.sortedSets.delete(key);\n }\n }\n\n // ═══════════════════════════════════════════════════════════════════════\n // Atomic Operations\n // ═══════════════════════════════════════════════════════════════════════\n\n async setIfNotExists<T>(key: string, value: T, ttl?: number): Promise<boolean> {\n // Check if key already exists\n if (this.store.has(key)) {\n return false;\n }\n\n // Key doesn't exist, set it\n await this.set(key, value, ttl);\n return true;\n }\n\n /**\n * Get the current number of entries (for testing).\n */\n get size(): number {\n return this.store.size;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/config\n * NoOp config implementation.\n */\n\nimport type { IConfig } from '../../adapters/config.js';\n\n/**\n * NoOp config - returns undefined for all queries.\n * Safe fallback when no config is loaded.\n */\nexport class NoOpConfig implements IConfig {\n async getConfig(_productId: string, _profileId?: string): Promise<any> {\n return undefined;\n }\n\n async getRawConfig(): Promise<any> {\n return undefined;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/storage\n * In-memory storage implementation.\n */\n\nimport type { IStorage, StorageMetadata } from '../../adapters/storage.js';\n\n/**\n * In-memory storage for testing and local development.\n * Data is lost when the process exits.\n */\nexport class MemoryStorage implements IStorage {\n private store = new Map<string, Buffer>();\n\n async read(path: string): Promise<Buffer | null> {\n return this.store.get(path) ?? null;\n }\n\n async write(path: string, data: Buffer): Promise<void> {\n this.store.set(path, data);\n }\n\n async delete(path: string): Promise<void> {\n this.store.delete(path);\n }\n\n async list(prefix: string): Promise<string[]> {\n const results: string[] = [];\n for (const key of this.store.keys()) {\n if (key.startsWith(prefix)) {\n results.push(key);\n }\n }\n return results.sort();\n }\n\n async exists(path: string): Promise<boolean> {\n return this.store.has(path);\n }\n\n /**\n * Get file metadata.\n * Optional method - implements IStorage.stat().\n */\n async stat(path: string): Promise<StorageMetadata | null> {\n const data = this.store.get(path);\n if (!data) {return null;}\n\n return {\n path,\n size: data.byteLength,\n lastModified: new Date().toISOString(),\n contentType: 'application/octet-stream',\n };\n }\n\n /**\n * Copy file.\n * Optional method - implements IStorage.copy().\n */\n async copy(sourcePath: string, destPath: string): Promise<void> {\n const data = this.store.get(sourcePath);\n if (!data) {\n throw new Error(`Source file not found: ${sourcePath}`);\n }\n // Copy buffer (create new instance)\n this.store.set(destPath, Buffer.from(data));\n }\n\n /**\n * Move file.\n * Optional method - implements IStorage.move().\n */\n async move(sourcePath: string, destPath: string): Promise<void> {\n const data = this.store.get(sourcePath);\n if (!data) {\n throw new Error(`Source file not found: ${sourcePath}`);\n }\n this.store.set(destPath, data);\n this.store.delete(sourcePath);\n }\n\n /**\n * List files with metadata.\n * Optional method - implements IStorage.listWithMetadata().\n */\n async listWithMetadata(prefix: string): Promise<StorageMetadata[]> {\n const results: StorageMetadata[] = [];\n for (const [path, data] of this.store.entries()) {\n if (path.startsWith(prefix)) {\n results.push({\n path,\n size: data.byteLength,\n lastModified: new Date().toISOString(),\n contentType: 'application/octet-stream',\n });\n }\n }\n return results.sort((a, b) => a.path.localeCompare(b.path));\n }\n\n /**\n * Get the current number of stored files (for testing).\n */\n get size(): number {\n return this.store.size;\n }\n\n /**\n * Clear all storage (for testing).\n */\n clear(): void {\n this.store.clear();\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/logger\n * Console-based logger implementation.\n */\n\nimport type { ILogger } from '../../adapters/logger.js';\n\n/**\n * Log level type.\n */\ntype LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug' | 'trace';\n\n/**\n * Simple console logger with log level support.\n * Respects KB_LOG_LEVEL environment variable.\n * Outputs to console.log/warn/error/debug with JSON metadata.\n */\nexport class ConsoleLogger implements ILogger {\n private bindings: Record<string, unknown>;\n private level: LogLevel;\n\n constructor(bindings: Record<string, unknown> = {}, level?: LogLevel) {\n this.bindings = bindings;\n // Read from env or use provided level (default: 'info')\n this.level = level ?? (process.env.KB_LOG_LEVEL as LogLevel) ?? 'info';\n }\n\n private shouldLog(messageLevel: LogLevel): boolean {\n const levels: Record<LogLevel, number> = {\n silent: 0,\n error: 1,\n warn: 2,\n info: 3,\n debug: 4,\n trace: 5,\n };\n\n const currentLevel = levels[this.level] ?? 3; // Default to info\n const targetLevel = levels[messageLevel] ?? 3;\n\n return targetLevel <= currentLevel;\n }\n\n private formatMeta(meta?: Record<string, unknown>): string {\n const combined = { ...this.bindings, ...meta };\n if (Object.keys(combined).length === 0) {\n return '';\n }\n return ' ' + JSON.stringify(combined);\n }\n\n info(message: string, meta?: Record<string, unknown>): void {\n if (this.shouldLog('info')) {\n console.log(`[INFO] ${message}${this.formatMeta(meta)}`);\n }\n }\n\n warn(message: string, meta?: Record<string, unknown>): void {\n if (this.shouldLog('warn')) {\n console.warn(`[WARN] ${message}${this.formatMeta(meta)}`);\n }\n }\n\n error(message: string, error?: Error, meta?: Record<string, unknown>): void {\n if (this.shouldLog('error')) {\n const errorMeta = error\n ? { ...meta, error: { message: error.message, stack: error.stack } }\n : meta;\n console.error(`[ERROR] ${message}${this.formatMeta(errorMeta)}`);\n }\n }\n\n fatal(message: string, error?: Error, meta?: Record<string, unknown>): void {\n if (this.shouldLog('error')) {\n const errorMeta = error\n ? { ...meta, error: { message: error.message, stack: error.stack } }\n : meta;\n console.error(`[FATAL] ${message}${this.formatMeta(errorMeta)}`);\n }\n }\n\n debug(message: string, meta?: Record<string, unknown>): void {\n if (this.shouldLog('debug')) {\n console.debug(`[DEBUG] ${message}${this.formatMeta(meta)}`);\n }\n }\n\n trace(message: string, meta?: Record<string, unknown>): void {\n if (this.shouldLog('trace')) {\n console.debug(`[TRACE] ${message}${this.formatMeta(meta)}`);\n }\n }\n\n child(bindings: Record<string, unknown>): ILogger {\n // Child logger inherits parent's level\n return new ConsoleLogger({ ...this.bindings, ...bindings }, this.level);\n }\n}\n\n/**\n * Silent logger that does nothing.\n * Useful for tests where you want to suppress all logging.\n */\nexport class NoOpLogger implements ILogger {\n info(_message: string, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n warn(_message: string, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n error(_message: string, _error?: Error, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n fatal(_message: string, _error?: Error, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n debug(_message: string, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n trace(_message: string, _meta?: Record<string, unknown>): void {\n // No-op\n }\n\n child(_bindings: Record<string, unknown>): ILogger {\n return this;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/event-bus\n * In-memory event bus implementation.\n */\n\nimport type { IEventBus, EventHandler, Unsubscribe } from '../../adapters/event-bus.js';\n\n/**\n * In-memory event bus using Map of handlers.\n * Events are processed synchronously in order of subscription.\n */\nexport class MemoryEventBus implements IEventBus {\n private handlers = new Map<string, Set<EventHandler<unknown>>>();\n\n async publish<T>(topic: string, event: T): Promise<void> {\n const topicHandlers = this.handlers.get(topic);\n if (!topicHandlers) {\n return;\n }\n\n // Execute all handlers (in parallel for better performance)\n const promises = Array.from(topicHandlers).map((handler) =>\n handler(event).catch((err) => {\n console.error(`[EventBus] Handler error for topic \"${topic}\":`, err);\n })\n );\n\n await Promise.all(promises);\n }\n\n subscribe<T>(topic: string, handler: EventHandler<T>): Unsubscribe {\n let topicHandlers = this.handlers.get(topic);\n if (!topicHandlers) {\n topicHandlers = new Set();\n this.handlers.set(topic, topicHandlers);\n }\n\n topicHandlers.add(handler as EventHandler<unknown>);\n\n // Return unsubscribe function\n return () => {\n topicHandlers!.delete(handler as EventHandler<unknown>);\n if (topicHandlers!.size === 0) {\n this.handlers.delete(topic);\n }\n };\n }\n\n /**\n * Get the number of topics with subscribers (for testing).\n */\n get topicCount(): number {\n return this.handlers.size;\n }\n\n /**\n * Get the total number of handlers across all topics (for testing).\n */\n get handlerCount(): number {\n let count = 0;\n for (const handlers of this.handlers.values()) {\n count += handlers.size;\n }\n return count;\n }\n\n /**\n * Clear all subscriptions (for testing).\n */\n clear(): void {\n this.handlers.clear();\n }\n}\n\n/**\n * No-op event bus that does nothing.\n * Useful when event processing is not needed.\n */\nexport class NoOpEventBus implements IEventBus {\n async publish<T>(_topic: string, _event: T): Promise<void> {\n // No-op\n }\n\n subscribe<T>(_topic: string, _handler: EventHandler<T>): Unsubscribe {\n // Return no-op unsubscribe\n return () => {};\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/invoke\n * NoOp implementation of IInvoke.\n */\n\nimport type { IInvoke, InvokeRequest, InvokeResponse } from '../../adapters/invoke.js';\n\n/**\n * NoOp invoke implementation.\n * Returns error for all calls - invoke requires runtime to be configured.\n */\nexport class NoOpInvoke implements IInvoke {\n async call<T = unknown>(_request: InvokeRequest): Promise<InvokeResponse<T>> {\n return {\n success: false,\n error: 'Invoke not configured. Inter-plugin calls are not available.',\n };\n }\n\n async isAvailable(_pluginId: string, _command?: string): Promise<boolean> {\n return false;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/adapters/artifacts\n * In-memory implementation of IArtifacts.\n */\n\nimport type {\n IArtifacts,\n ArtifactMeta,\n ArtifactWriteOptions,\n} from '../../adapters/artifacts.js';\n\n/**\n * In-memory artifacts storage.\n * Useful for testing and development.\n */\nexport class MemoryArtifacts implements IArtifacts {\n private store = new Map<string, { data: unknown; meta: ArtifactMeta }>();\n\n async write(\n key: string,\n data: unknown,\n options?: ArtifactWriteOptions\n ): Promise<void> {\n const now = new Date();\n const meta: ArtifactMeta = {\n key,\n contentType: options?.contentType ?? 'application/json',\n size: JSON.stringify(data).length,\n createdAt: this.store.get(key)?.meta.createdAt ?? now,\n updatedAt: now,\n metadata: options?.metadata,\n };\n this.store.set(key, { data, meta });\n }\n\n async read<T = unknown>(key: string): Promise<T | null> {\n const entry = this.store.get(key);\n return entry ? (entry.data as T) : null;\n }\n\n async exists(key: string): Promise<boolean> {\n return this.store.has(key);\n }\n\n async delete(key: string): Promise<void> {\n this.store.delete(key);\n }\n\n async list(prefix: string): Promise<ArtifactMeta[]> {\n const results: ArtifactMeta[] = [];\n for (const [key, entry] of this.store) {\n if (key.startsWith(prefix)) {\n results.push(entry.meta);\n }\n }\n return results;\n }\n\n async getMeta(key: string): Promise<ArtifactMeta | null> {\n const entry = this.store.get(key);\n return entry?.meta ?? null;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/noop-platform\n * Factory for a fully no-op platform object.\n *\n * Assembles all existing no-op adapter implementations into a single object\n * that satisfies PlatformServices (plugin-contracts) structurally.\n *\n * Use in:\n * - Worker subprocess fallback (no IPC socket available)\n * - Tests that don't need real platform services\n *\n * @example\n * import { createNoOpPlatform } from '@kb-labs/core-platform/noop';\n * const platform = createNoOpPlatform();\n */\n\nimport { NoOpLogger } from './adapters/logger.js';\nimport { MockLLM } from './adapters/llm.js';\nimport { MemoryCache } from './adapters/cache.js';\nimport { MockEmbeddings } from './adapters/embeddings.js';\nimport { MemoryVectorStore } from './adapters/vector-store.js';\nimport { MemoryStorage } from './adapters/storage.js';\nimport { NoOpAnalytics } from './adapters/analytics.js';\nimport { NoOpEventBus } from './adapters/event-bus.js';\nimport type { ILogReader, LogCapabilities } from '../adapters/log-reader.js';\n\nconst noOpLogReader: ILogReader = {\n query: async () => ({ logs: [], total: 0, hasMore: false, source: 'buffer' as const }),\n getById: async () => null,\n search: async () => ({ logs: [], total: 0, hasMore: false }),\n subscribe: () => () => {},\n getStats: async () => ({}),\n getCapabilities: (): LogCapabilities => ({\n hasBuffer: false,\n hasPersistence: false,\n hasSearch: false,\n hasStreaming: false,\n }),\n};\n\nexport function createNoOpPlatform() {\n return {\n logger: new NoOpLogger(),\n llm: new MockLLM(),\n cache: new MemoryCache(),\n embeddings: new MockEmbeddings(),\n vectorStore: new MemoryVectorStore(),\n storage: new MemoryStorage(),\n analytics: new NoOpAnalytics(),\n eventBus: new NoOpEventBus(),\n logs: noOpLogReader,\n };\n}\n","/**\n * @module @kb-labs/core-platform/noop/core/workflow\n * NoOp workflow engine implementation.\n */\n\nimport type {\n IWorkflowEngine,\n WorkflowOptions,\n WorkflowRun,\n WorkflowFilter,\n} from '../../core/workflow.js';\n\n/**\n * NoOp workflow engine that throws errors.\n * Workflows are critical core features - use real implementation.\n */\nexport class NoOpWorkflowEngine implements IWorkflowEngine {\n async execute(\n _workflowId: string,\n _input: unknown,\n _options?: WorkflowOptions\n ): Promise<WorkflowRun> {\n throw new Error(\n 'Workflow engine not configured. Initialize platform with core-runtime.'\n );\n }\n\n async getStatus(_runId: string): Promise<WorkflowRun | null> {\n throw new Error(\n 'Workflow engine not configured. Initialize platform with core-runtime.'\n );\n }\n\n async cancel(_runId: string): Promise<void> {\n throw new Error(\n 'Workflow engine not configured. Initialize platform with core-runtime.'\n );\n }\n\n async retry(_runId: string, _fromStep?: string): Promise<WorkflowRun> {\n throw new Error(\n 'Workflow engine not configured. Initialize platform with core-runtime.'\n );\n }\n\n async list(_filter?: WorkflowFilter): Promise<WorkflowRun[]> {\n throw new Error(\n 'Workflow engine not configured. Initialize platform with core-runtime.'\n );\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/core/jobs\n * NoOp job scheduler implementation.\n */\n\nimport type {\n IJobScheduler,\n JobDefinition,\n JobHandle,\n JobFilter,\n CronExpression,\n} from '../../core/jobs.js';\n\n/**\n * NoOp job scheduler that executes jobs synchronously.\n * Useful for testing without background processing.\n */\nexport class NoOpJobScheduler implements IJobScheduler {\n private jobs = new Map<string, JobHandle>();\n private idCounter = 0;\n\n async submit(job: JobDefinition): Promise<JobHandle> {\n const id = `noop-job-${++this.idCounter}`;\n const handle: JobHandle = {\n id,\n type: job.type,\n tenantId: job.tenantId ?? 'default',\n status: 'completed',\n createdAt: new Date(),\n startedAt: new Date(),\n completedAt: new Date(),\n };\n\n this.jobs.set(id, handle);\n return handle;\n }\n\n async schedule(\n job: JobDefinition,\n _schedule: CronExpression | Date\n ): Promise<JobHandle> {\n // In NoOp mode, scheduled jobs are just submitted immediately\n return this.submit(job);\n }\n\n async cancel(jobId: string): Promise<boolean> {\n const job = this.jobs.get(jobId);\n if (!job) {\n return false;\n }\n\n job.status = 'cancelled';\n return true;\n }\n\n async getStatus(jobId: string): Promise<JobHandle | null> {\n return this.jobs.get(jobId) ?? null;\n }\n\n async list(filter?: JobFilter): Promise<JobHandle[]> {\n let results = Array.from(this.jobs.values());\n\n if (filter?.type) {\n results = results.filter((j) => j.type === filter.type);\n }\n if (filter?.status) {\n results = results.filter((j) => j.status === filter.status);\n }\n if (filter?.tenantId) {\n results = results.filter((j) => j.tenantId === filter.tenantId);\n }\n\n return results;\n }\n\n /**\n * Clear all jobs (for testing).\n */\n clear(): void {\n this.jobs.clear();\n this.idCounter = 0;\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/core/cron\n * NoOp cron manager implementation.\n */\n\nimport type {\n ICronManager,\n CronJob,\n CronHandler,\n} from '../../core/cron.js';\nimport type { CronExpression } from '../../core/jobs.js';\n\ninterface CronEntry {\n id: string;\n schedule: CronExpression;\n handler: CronHandler;\n status: 'active' | 'paused';\n lastRun?: Date;\n runCount: number;\n}\n\n/**\n * NoOp cron manager that stores registrations but doesn't schedule.\n * Use trigger() to manually execute cron jobs in tests.\n */\nexport class NoOpCronManager implements ICronManager {\n private cronJobs = new Map<string, CronEntry>();\n\n register(id: string, schedule: CronExpression, handler: CronHandler): void {\n this.cronJobs.set(id, {\n id,\n schedule,\n handler,\n status: 'active',\n runCount: 0,\n });\n }\n\n unregister(id: string): void {\n this.cronJobs.delete(id);\n }\n\n list(): CronJob[] {\n return Array.from(this.cronJobs.values()).map((entry) => ({\n id: entry.id,\n schedule: entry.schedule,\n status: entry.status,\n lastRun: entry.lastRun,\n nextRun: undefined, // NoOp doesn't calculate next run\n runCount: entry.runCount,\n }));\n }\n\n async trigger(id: string): Promise<void> {\n const entry = this.cronJobs.get(id);\n if (!entry) {\n throw new Error(`Cron job not found: ${id}`);\n }\n\n if (entry.status === 'paused') {\n throw new Error(`Cron job is paused: ${id}`);\n }\n\n const now = new Date();\n\n // Execute the handler\n await entry.handler({\n jobId: id,\n scheduledAt: now,\n executedAt: now,\n runCount: entry.runCount + 1,\n });\n\n entry.lastRun = now;\n entry.runCount++;\n }\n\n pause(id: string): void {\n const entry = this.cronJobs.get(id);\n if (entry) {\n entry.status = 'paused';\n }\n }\n\n resume(id: string): void {\n const entry = this.cronJobs.get(id);\n if (entry) {\n entry.status = 'active';\n }\n }\n\n /**\n * Clear all cron jobs (for testing).\n */\n clear(): void {\n this.cronJobs.clear();\n }\n}\n","/**\n * @module @kb-labs/core-platform/noop/core/resources\n * NoOp resource manager implementation.\n */\n\nimport type {\n IResourceManager,\n ResourceType,\n ResourceSlot,\n ResourceAvailability,\n TenantQuotas,\n} from '../../core/resources.js';\n\n/**\n * Default unlimited quotas for NoOp mode.\n */\nconst UNLIMITED_QUOTAS: TenantQuotas = {\n maxConcurrentWorkflows: Number.MAX_SAFE_INTEGER,\n maxConcurrentJobs: Number.MAX_SAFE_INTEGER,\n maxQueuedJobs: Number.MAX_SAFE_INTEGER,\n apiRequestsPerMinute: Number.MAX_SAFE_INTEGER,\n llmTokensPerDay: Number.MAX_SAFE_INTEGER,\n storageBytes: Number.MAX_SAFE_INTEGER,\n};\n\n/**\n * NoOp resource manager that always allows resource acquisition.\n * No actual quota enforcement - useful for testing.\n */\nexport class NoOpResourceManager implements IResourceManager {\n private quotas = new Map<string, TenantQuotas>();\n private slots = new Map<string, ResourceSlot>();\n private idCounter = 0;\n\n async acquireSlot(\n resource: ResourceType,\n tenantId: string,\n timeout?: number\n ): Promise<ResourceSlot | null> {\n const slot: ResourceSlot = {\n id: `noop-slot-${++this.idCounter}`,\n resource,\n tenantId,\n acquiredAt: new Date(),\n expiresAt: timeout ? new Date(Date.now() + timeout) : undefined,\n };\n\n this.slots.set(slot.id, slot);\n return slot;\n }\n\n async releaseSlot(slot: ResourceSlot): Promise<void> {\n this.slots.delete(slot.id);\n }\n\n async getAvailability(\n resource: ResourceType,\n tenantId?: string\n ): Promise<ResourceAvailability> {\n const usedSlots = Array.from(this.slots.values()).filter(\n (s) =>\n s.resource === resource && (!tenantId || s.tenantId === tenantId)\n );\n\n return {\n resource,\n total: Number.MAX_SAFE_INTEGER,\n used: usedSlots.length,\n available: Number.MAX_SAFE_INTEGER,\n queueLength: 0,\n };\n }\n\n async setQuota(tenantId: string, quotas: Partial<TenantQuotas>): Promise<void> {\n const existing = this.quotas.get(tenantId) ?? { ...UNLIMITED_QUOTAS };\n this.quotas.set(tenantId, { ...existing, ...quotas });\n }\n\n async getQuota(tenantId: string): Promise<TenantQuotas> {\n return this.quotas.get(tenantId) ?? { ...UNLIMITED_QUOTAS };\n }\n\n /**\n * Get the current number of active slots (for testing).\n */\n get activeSlotCount(): number {\n return this.slots.size;\n }\n\n /**\n * Clear all slots and quotas (for testing).\n */\n clear(): void {\n this.slots.clear();\n this.quotas.clear();\n this.idCounter = 0;\n }\n}\n"]}
@@ -0,0 +1,419 @@
1
+ /**
2
+ * @module @kb-labs/core-platform/core/workflow
3
+ * Workflow engine interface for orchestrating multi-step processes.
4
+ */
5
+ /**
6
+ * Retry policy configuration.
7
+ */
8
+ interface RetryPolicy {
9
+ /** Maximum retry attempts */
10
+ maxAttempts: number;
11
+ /** Initial delay in milliseconds */
12
+ initialDelay: number;
13
+ /** Backoff multiplier */
14
+ backoffMultiplier: number;
15
+ /** Maximum delay in milliseconds */
16
+ maxDelay: number;
17
+ }
18
+ /**
19
+ * Workflow execution options.
20
+ */
21
+ interface WorkflowExecutionTarget {
22
+ /** Target environment identifier */
23
+ environmentId?: string;
24
+ /** Target workspace identifier */
25
+ workspaceId?: string;
26
+ /** Namespace boundary */
27
+ namespace?: string;
28
+ /** Working directory override */
29
+ workdir?: string;
30
+ }
31
+ interface WorkflowOptions {
32
+ /** Tenant identifier for multi-tenancy */
33
+ tenantId?: string;
34
+ /** Execution priority */
35
+ priority?: 'low' | 'normal' | 'high' | 'critical';
36
+ /** Execution timeout in milliseconds */
37
+ timeout?: number;
38
+ /** Retry policy for failed steps */
39
+ retryPolicy?: RetryPolicy;
40
+ /** Custom tags for tracking */
41
+ tags?: Record<string, string>;
42
+ /** Optional execution target affinity */
43
+ target?: WorkflowExecutionTarget;
44
+ }
45
+ /**
46
+ * Workflow step execution status.
47
+ */
48
+ interface WorkflowStepRun {
49
+ /** Step identifier */
50
+ id: string;
51
+ /** Step name */
52
+ name: string;
53
+ /** Execution status */
54
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
55
+ /** Step input */
56
+ input?: unknown;
57
+ /** Step output */
58
+ output?: unknown;
59
+ /** Error message if failed */
60
+ error?: string;
61
+ /** Step start time */
62
+ startedAt?: Date;
63
+ /** Step completion time */
64
+ completedAt?: Date;
65
+ }
66
+ /**
67
+ * Workflow execution run.
68
+ */
69
+ interface WorkflowRun {
70
+ /** Run identifier */
71
+ id: string;
72
+ /** Workflow definition identifier */
73
+ workflowId: string;
74
+ /** Tenant identifier */
75
+ tenantId: string;
76
+ /** Execution status */
77
+ status: 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
78
+ /** Workflow input */
79
+ input: unknown;
80
+ /** Workflow output (from last step) */
81
+ output?: unknown;
82
+ /** Error message if failed */
83
+ error?: string;
84
+ /** Run start time */
85
+ startedAt?: Date;
86
+ /** Run completion time */
87
+ completedAt?: Date;
88
+ /** Individual step runs */
89
+ steps: WorkflowStepRun[];
90
+ }
91
+ /**
92
+ * Filter for listing workflow runs.
93
+ */
94
+ interface WorkflowFilter {
95
+ /** Filter by workflow ID */
96
+ workflowId?: string;
97
+ /** Filter by tenant */
98
+ tenantId?: string;
99
+ /** Filter by status */
100
+ status?: WorkflowRun['status'];
101
+ /** Filter by tags */
102
+ tags?: Record<string, string>;
103
+ /** Limit results */
104
+ limit?: number;
105
+ /** Offset for pagination */
106
+ offset?: number;
107
+ }
108
+ /**
109
+ * Workflow engine interface.
110
+ * Core feature - implemented in @kb-labs/core-runtime, not replaceable.
111
+ */
112
+ interface IWorkflowEngine {
113
+ /**
114
+ * Execute a workflow.
115
+ * @param workflowId - Workflow definition identifier
116
+ * @param input - Workflow input data
117
+ * @param options - Execution options
118
+ */
119
+ execute(workflowId: string, input: unknown, options?: WorkflowOptions): Promise<WorkflowRun>;
120
+ /**
121
+ * Get workflow run status.
122
+ * @param runId - Run identifier
123
+ */
124
+ getStatus(runId: string): Promise<WorkflowRun | null>;
125
+ /**
126
+ * Cancel a running workflow.
127
+ * @param runId - Run identifier
128
+ */
129
+ cancel(runId: string): Promise<void>;
130
+ /**
131
+ * Retry a failed workflow.
132
+ * @param runId - Run identifier
133
+ * @param fromStep - Optional step to retry from
134
+ */
135
+ retry(runId: string, fromStep?: string): Promise<WorkflowRun>;
136
+ /**
137
+ * List workflow runs.
138
+ * @param filter - Optional filter criteria
139
+ */
140
+ list(filter?: WorkflowFilter): Promise<WorkflowRun[]>;
141
+ }
142
+
143
+ /**
144
+ * @module @kb-labs/core-platform/core/jobs
145
+ * Job scheduler interface for background task execution.
146
+ */
147
+ /**
148
+ * Job definition for submission.
149
+ */
150
+ interface JobDefinition {
151
+ /** Job type identifier */
152
+ type: string;
153
+ /** Job payload data */
154
+ payload: unknown;
155
+ /** Tenant identifier for multi-tenancy */
156
+ tenantId?: string;
157
+ /** Priority (0-100, higher = more important, default 50) */
158
+ priority?: number;
159
+ /** Maximum retry attempts (default 3) */
160
+ maxRetries?: number;
161
+ /** Execution timeout in milliseconds */
162
+ timeout?: number;
163
+ /** Schedule for delayed execution */
164
+ runAt?: Date;
165
+ /** Idempotency key to prevent duplicates */
166
+ idempotencyKey?: string;
167
+ }
168
+ /**
169
+ * Job execution status.
170
+ */
171
+ type JobStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
172
+ /**
173
+ * Job handle returned after submission.
174
+ */
175
+ interface JobHandle {
176
+ /** Job identifier */
177
+ id: string;
178
+ /** Job type */
179
+ type: string;
180
+ /** Tenant identifier */
181
+ tenantId: string;
182
+ /** Current status */
183
+ status: JobStatus;
184
+ /** Progress percentage (0-100) */
185
+ progress?: number;
186
+ /** Job result if completed */
187
+ result?: unknown;
188
+ /** Error message if failed */
189
+ error?: string;
190
+ /** Creation time */
191
+ createdAt: Date;
192
+ /** Start time */
193
+ startedAt?: Date;
194
+ /** Completion time */
195
+ completedAt?: Date;
196
+ }
197
+ /**
198
+ * Cron expression type (e.g., "0 * * * *" or "@hourly").
199
+ */
200
+ type CronExpression = string;
201
+ /**
202
+ * Filter for listing jobs.
203
+ */
204
+ interface JobFilter {
205
+ /** Filter by job type */
206
+ type?: string;
207
+ /** Filter by tenant */
208
+ tenantId?: string;
209
+ /** Filter by status */
210
+ status?: JobStatus;
211
+ /** Limit results */
212
+ limit?: number;
213
+ /** Offset for pagination */
214
+ offset?: number;
215
+ }
216
+ /**
217
+ * Job scheduler interface.
218
+ * Core feature - implemented in @kb-labs/core-runtime, not replaceable.
219
+ */
220
+ interface IJobScheduler {
221
+ /**
222
+ * Submit a job for immediate execution.
223
+ * @param job - Job definition
224
+ */
225
+ submit(job: JobDefinition): Promise<JobHandle>;
226
+ /**
227
+ * Schedule a job for future/recurring execution.
228
+ * @param job - Job definition
229
+ * @param schedule - Cron expression or specific date
230
+ */
231
+ schedule(job: JobDefinition, schedule: CronExpression | Date): Promise<JobHandle>;
232
+ /**
233
+ * Cancel a pending/running job.
234
+ * @param jobId - Job identifier
235
+ * @returns true if cancelled, false if not found
236
+ */
237
+ cancel(jobId: string): Promise<boolean>;
238
+ /**
239
+ * Get job status.
240
+ * @param jobId - Job identifier
241
+ */
242
+ getStatus(jobId: string): Promise<JobHandle | null>;
243
+ /**
244
+ * List jobs.
245
+ * @param filter - Optional filter criteria
246
+ */
247
+ list(filter?: JobFilter): Promise<JobHandle[]>;
248
+ }
249
+
250
+ /**
251
+ * @module @kb-labs/core-platform/core/cron
252
+ * Cron manager interface for scheduled task registration.
253
+ */
254
+
255
+ /**
256
+ * Cron job context passed to handlers.
257
+ */
258
+ interface CronContext {
259
+ /** Cron job identifier */
260
+ jobId: string;
261
+ /** Scheduled execution time */
262
+ scheduledAt: Date;
263
+ /** Actual execution time */
264
+ executedAt: Date;
265
+ /** Run count */
266
+ runCount: number;
267
+ }
268
+ /**
269
+ * Cron handler function type.
270
+ */
271
+ type CronHandler = (ctx: CronContext) => Promise<void>;
272
+ /**
273
+ * Registered cron job status.
274
+ */
275
+ interface CronJob {
276
+ /** Job identifier */
277
+ id: string;
278
+ /** Cron schedule expression */
279
+ schedule: CronExpression;
280
+ /** Current status */
281
+ status: "active" | "paused";
282
+ /** Last execution time */
283
+ lastRun?: Date;
284
+ /** Next scheduled execution time */
285
+ nextRun?: Date;
286
+ /** Total run count */
287
+ runCount: number;
288
+ }
289
+ /**
290
+ * Cron manager interface.
291
+ * Core feature - implemented in @kb-labs/core-runtime, not replaceable.
292
+ */
293
+ interface ICronManager {
294
+ /**
295
+ * Register a cron job.
296
+ * @param id - Unique job identifier
297
+ * @param schedule - Cron expression (e.g., "0 * * * *" or "@hourly")
298
+ * @param handler - Handler function to execute
299
+ */
300
+ register(id: string, schedule: CronExpression, handler: CronHandler): void;
301
+ /**
302
+ * Unregister a cron job.
303
+ * @param id - Job identifier
304
+ */
305
+ unregister(id: string): void;
306
+ /**
307
+ * List all registered cron jobs.
308
+ */
309
+ list(): CronJob[];
310
+ /**
311
+ * Manually trigger a cron job.
312
+ * @param id - Job identifier
313
+ */
314
+ trigger(id: string): Promise<void>;
315
+ /**
316
+ * Pause a cron job.
317
+ * @param id - Job identifier
318
+ */
319
+ pause(id: string): void;
320
+ /**
321
+ * Resume a paused cron job.
322
+ * @param id - Job identifier
323
+ */
324
+ resume(id: string): void;
325
+ }
326
+
327
+ /**
328
+ * @module @kb-labs/core-platform/core/resources
329
+ * Resource manager interface for quotas and rate limiting.
330
+ */
331
+ /**
332
+ * Resource types that can be limited.
333
+ */
334
+ type ResourceType = 'workflow' | 'job' | 'llm' | 'embedding' | 'api';
335
+ /**
336
+ * Resource slot acquired for usage.
337
+ */
338
+ interface ResourceSlot {
339
+ /** Slot identifier */
340
+ id: string;
341
+ /** Resource type */
342
+ resource: ResourceType;
343
+ /** Tenant identifier */
344
+ tenantId: string;
345
+ /** Acquisition time */
346
+ acquiredAt: Date;
347
+ /** Expiration time (if timeout specified) */
348
+ expiresAt?: Date;
349
+ }
350
+ /**
351
+ * Tenant quota configuration.
352
+ */
353
+ interface TenantQuotas {
354
+ /** Maximum concurrent workflows */
355
+ maxConcurrentWorkflows: number;
356
+ /** Maximum concurrent jobs */
357
+ maxConcurrentJobs: number;
358
+ /** Maximum queued jobs */
359
+ maxQueuedJobs: number;
360
+ /** API requests per minute */
361
+ apiRequestsPerMinute: number;
362
+ /** LLM tokens per day */
363
+ llmTokensPerDay: number;
364
+ /** Storage in bytes */
365
+ storageBytes: number;
366
+ }
367
+ /**
368
+ * Resource availability info.
369
+ */
370
+ interface ResourceAvailability {
371
+ /** Resource type */
372
+ resource: ResourceType;
373
+ /** Total capacity */
374
+ total: number;
375
+ /** Currently used */
376
+ used: number;
377
+ /** Available slots */
378
+ available: number;
379
+ /** Queue length (waiting requests) */
380
+ queueLength: number;
381
+ }
382
+ /**
383
+ * Resource manager interface.
384
+ * Core feature - implemented in @kb-labs/core-runtime, not replaceable.
385
+ */
386
+ interface IResourceManager {
387
+ /**
388
+ * Acquire a resource slot.
389
+ * @param resource - Resource type
390
+ * @param tenantId - Tenant identifier
391
+ * @param timeout - Optional slot timeout in milliseconds
392
+ * @returns Resource slot or null if quota exceeded
393
+ */
394
+ acquireSlot(resource: ResourceType, tenantId: string, timeout?: number): Promise<ResourceSlot | null>;
395
+ /**
396
+ * Release a resource slot.
397
+ * @param slot - Resource slot to release
398
+ */
399
+ releaseSlot(slot: ResourceSlot): Promise<void>;
400
+ /**
401
+ * Get resource availability.
402
+ * @param resource - Resource type
403
+ * @param tenantId - Optional tenant for tenant-specific availability
404
+ */
405
+ getAvailability(resource: ResourceType, tenantId?: string): Promise<ResourceAvailability>;
406
+ /**
407
+ * Set quotas for a tenant.
408
+ * @param tenantId - Tenant identifier
409
+ * @param quotas - Partial quota configuration
410
+ */
411
+ setQuota(tenantId: string, quotas: Partial<TenantQuotas>): Promise<void>;
412
+ /**
413
+ * Get quotas for a tenant.
414
+ * @param tenantId - Tenant identifier
415
+ */
416
+ getQuota(tenantId: string): Promise<TenantQuotas>;
417
+ }
418
+
419
+ export type { CronExpression as C, IWorkflowEngine as I, JobDefinition as J, RetryPolicy as R, TenantQuotas as T, WorkflowOptions as W, WorkflowRun as a, WorkflowStepRun as b, WorkflowFilter as c, IJobScheduler as d, JobHandle as e, JobStatus as f, JobFilter as g, ICronManager as h, CronJob as i, CronContext as j, CronHandler as k, IResourceManager as l, ResourceType as m, ResourceSlot as n, ResourceAvailability as o };