overai 1.4.7 → 1.4.9

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/README.md CHANGED
@@ -205,6 +205,56 @@ To contribute or modify the framework:
205
205
  npm run build
206
206
  ```
207
207
 
208
+ ## 💰 Business-in-a-Box (SaaS Starter Kit)
209
+
210
+ Launch your own AI API business in minutes. We provide a complete **SaaS Server Example** including:
211
+ * **Stripe Integration** (Mock): Simulate payments and top-ups.
212
+ * **Credit System**: Deduct credits per request (1 credit = 1 request).
213
+ * **API Authentication**: Secure endpoints with API Keys.
214
+ * **Rate Limiting**: Prevent abuse from free users.
215
+
216
+ **Run the SaaS Server:**
217
+ ```bash
218
+ # Install dependencies
219
+ npm install express @types/express
220
+
221
+ # Run the server
222
+ npx ts-node examples/saas-server.ts
223
+ ```
224
+
225
+ **Test your API:**
226
+ ```bash
227
+ curl -X POST http://localhost:3001/api/v1/agent/chat \
228
+ -H "Content-Type: application/json" \
229
+ -H "x-api-key: sk_demo_12345" \
230
+ -d '{"message": "Hello, explain how you work in 1 sentence."}'
231
+ ```
232
+
233
+ ## 🏢 Enterprise & Licensing (Open Core)
234
+
235
+ OverAI follows an **Open Core** model. The core framework is MIT-licensed and free forever.
236
+ For enterprises requiring advanced features, we provide a commercial license that unlocks:
237
+
238
+ * **SSO & Identity**: Integrate with Okta, Active Directory, and Google Workspace.
239
+ * **Audit Logs**: Comprehensive tracking of every agent action for compliance.
240
+ * **Role-Based Access Control (RBAC)**: Fine-grained permissions for teams.
241
+ * **Priority Support**: SLA-backed support with < 4h response time.
242
+
243
+ To enable enterprise features:
244
+
245
+ ```typescript
246
+ import { license } from 'overai';
247
+
248
+ // Verify your license key
249
+ await license.setLicenseKey(process.env.OVERAI_LICENSE_KEY);
250
+
251
+ if (license.hasFeature('audit_logs')) {
252
+ console.log("✅ Enterprise Audit Logs Enabled");
253
+ }
254
+ ```
255
+
256
+ Contact **sales@overai.com** for pricing and details.
257
+
208
258
  ## License
209
259
 
210
260
  MIT
@@ -0,0 +1,32 @@
1
+ /**
2
+ * OverAI Enterprise License Manager
3
+ *
4
+ * This module allows verifying enterprise license keys to unlock premium features
5
+ * such as SSO, Audit Logs, and Advanced Analytics.
6
+ */
7
+ export interface LicenseInfo {
8
+ tier: 'free' | 'pro' | 'enterprise';
9
+ valid: boolean;
10
+ expiresAt?: Date;
11
+ features: string[];
12
+ }
13
+ export declare class LicenseManager {
14
+ private static instance;
15
+ private currentLicense;
16
+ private constructor();
17
+ static getInstance(): LicenseManager;
18
+ /**
19
+ * Set and verify a license key
20
+ * @param key The license key string (e.g. "OVERAI_ENT_...")
21
+ */
22
+ setLicenseKey(key: string): Promise<boolean>;
23
+ /**
24
+ * Check if a specific feature is enabled
25
+ */
26
+ hasFeature(feature: string): boolean;
27
+ /**
28
+ * Get current license info
29
+ */
30
+ getInfo(): LicenseInfo;
31
+ }
32
+ export declare const license: LicenseManager;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ /**
3
+ * OverAI Enterprise License Manager
4
+ *
5
+ * This module allows verifying enterprise license keys to unlock premium features
6
+ * such as SSO, Audit Logs, and Advanced Analytics.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.license = exports.LicenseManager = void 0;
10
+ class LicenseManager {
11
+ constructor() {
12
+ this.currentLicense = {
13
+ tier: 'free',
14
+ valid: true,
15
+ features: []
16
+ };
17
+ }
18
+ static getInstance() {
19
+ if (!LicenseManager.instance) {
20
+ LicenseManager.instance = new LicenseManager();
21
+ }
22
+ return LicenseManager.instance;
23
+ }
24
+ /**
25
+ * Set and verify a license key
26
+ * @param key The license key string (e.g. "OVERAI_ENT_...")
27
+ */
28
+ async setLicenseKey(key) {
29
+ // TODO: In production, verify this key against your backend API
30
+ // For now, we simulate a check
31
+ if (key.startsWith('OVERAI_ENT_')) {
32
+ this.currentLicense = {
33
+ tier: 'enterprise',
34
+ valid: true,
35
+ expiresAt: new Date(new Date().setFullYear(new Date().getFullYear() + 1)),
36
+ features: ['sso', 'audit_logs', 'priority_support']
37
+ };
38
+ return true;
39
+ }
40
+ else if (key.startsWith('OVERAI_PRO_')) {
41
+ this.currentLicense = {
42
+ tier: 'pro',
43
+ valid: true,
44
+ expiresAt: new Date(new Date().setMonth(new Date().getMonth() + 1)),
45
+ features: ['analytics', 'increased_limits']
46
+ };
47
+ return true;
48
+ }
49
+ return false;
50
+ }
51
+ /**
52
+ * Check if a specific feature is enabled
53
+ */
54
+ hasFeature(feature) {
55
+ return this.currentLicense.features.includes(feature);
56
+ }
57
+ /**
58
+ * Get current license info
59
+ */
60
+ getInfo() {
61
+ return { ...this.currentLicense };
62
+ }
63
+ }
64
+ exports.LicenseManager = LicenseManager;
65
+ exports.license = LicenseManager.getInstance();
package/dist/index.d.ts CHANGED
@@ -90,3 +90,4 @@ export { generateText as aiGenerateText, streamText as aiStreamText, type Genera
90
90
  export { createSlackBot, SlackBot, verifySlackSignature, parseSlackMessage, type SlackConfig, type SlackMessage, type SlackResponse, type SlackEventHandler, } from './integrations/slack';
91
91
  export { createNLPostgres, NLPostgresClient, createPostgresTool, type PostgresConfig as NLPostgresConfig, type TableSchema, type ColumnSchema, type QueryResult, type NLQueryResult, } from './integrations/postgres';
92
92
  export { createComputerUse, ComputerUseClient, createComputerUseAgent, createCLIApprovalPrompt, type ComputerUseConfig, type ComputerUseTools, type ComputerAction, type ScreenshotResult, } from './integrations/computer-use';
93
+ export { LicenseManager, license, type LicenseInfo } from './enterprise/license';
package/dist/index.js CHANGED
@@ -59,7 +59,7 @@ exports.MemoryObservabilityAdapter = exports.noopAdapter = exports.NoopObservabi
59
59
  exports.createScheduler = exports.Scheduler = exports.MODE_POLICIES = exports.cliApprovalPrompt = exports.createAutonomyManager = exports.AutonomyManager = exports.DEFAULT_BLOCKED_PATHS = exports.DEFAULT_BLOCKED_COMMANDS = exports.CommandValidator = exports.sandboxExec = exports.createSandboxExecutor = exports.SandboxExecutor = exports.createDiffViewer = exports.DiffViewer = exports.createGitManager = exports.GitManager = exports.DEFAULT_IGNORE_PATTERNS = exports.getRepoTree = exports.createRepoMap = exports.RepoMap = exports.createHistoryManager = exports.HistoryManager = exports.createStatusDisplay = exports.StatusDisplay = exports.createInteractiveTUI = exports.InteractiveTUI = exports.MODEL_PRICING = exports.formatCost = exports.estimateTokens = exports.createCostTracker = exports.CostTracker = exports.isSlashCommand = exports.executeSlashCommand = exports.parseSlashCommand = exports.registerCommand = exports.createSlashCommandHandler = exports.SlashCommandHandler = exports.ADAPTERS = exports.COMMUNITY_PROVIDERS = exports.PROVIDER_ALIASES = exports.AISDK_PROVIDERS = exports.trace = exports.resetObservabilityAdapter = exports.getObservabilityAdapter = exports.setObservabilityAdapter = exports.clearAdapterCache = exports.createObservabilityAdapter = exports.createConsoleAdapter = exports.ConsoleObservabilityAdapter = exports.createMemoryAdapter = void 0;
60
60
  exports.applyMiddleware = exports.wrapModel = exports.createAILoggingMiddleware = exports.createCachingMiddleware = exports.resolveModelAlias = exports.hasModelAlias = exports.listModelAliases = exports.MODEL_ALIASES = exports.parseModel = exports.getModel = exports.createModel = exports.functionToTool = exports.createToolSet = exports.defineTool = exports.aiEmbedMany = exports.aiEmbed = exports.aiGenerateImage = exports.aiStreamObject = exports.aiGenerateObject = exports.aiStreamText = exports.aiGenerateText = exports.getQuickContext = exports.createFastContext = exports.FastContext = exports.triggerN8NWebhook = exports.createN8NIntegration = exports.N8NIntegration = exports.externalAgentAsTool = exports.createExternalAgent = exports.getExternalAgentRegistry = exports.GenericExternalAgent = exports.AiderAgent = exports.CodexCliAgent = exports.GeminiCliAgent = exports.ClaudeCodeAgent = exports.BaseExternalAgent = exports.renderWorkflow = exports.createFlowDisplay = exports.FlowDisplay = exports.createFileCheckpointStorage = exports.FileCheckpointStorage = exports.MemoryCheckpointStorage = exports.createCheckpointManager = exports.CheckpointManager = exports.createFileJobStorage = exports.FileJobStorage = exports.MemoryJobStorage = exports.createJobQueue = exports.JobQueue = exports.cronExpressions = void 0;
61
61
  exports.generateSpeech = exports.createDangerousPatternChecker = exports.isDangerous = exports.DANGEROUS_PATTERNS = exports.ToolApprovalTimeoutError = exports.ToolApprovalDeniedError = exports.withApproval = exports.setApprovalManager = exports.getApprovalManager = exports.ApprovalManager = exports.pipeUIMessageStreamToResponse = exports.toUIMessageStreamResponse = exports.createApprovalResponse = exports.getToolsNeedingApproval = exports.hasPendingApprovals = exports.createSystemMessage = exports.createTextMessage = exports.safeValidateUIMessages = exports.validateUIMessages = exports.convertToUIMessages = exports.convertToModelMessages = exports.stopWhen = exports.stopWhenNoToolCalls = exports.stopAfterSteps = exports.AgentLoop = exports.createAgentLoop = exports.createPagesHandler = exports.createRouteHandler = exports.createNestHandler = exports.createFastifyHandler = exports.createHonoHandler = exports.createExpressHandler = exports.createHttpHandler = exports.mcpToolsToAITools = exports.closeAllMCPClients = exports.closeMCPClient = exports.getMCPClient = exports.createMCP = exports.isDataUrl = exports.isUrl = exports.uint8ArrayToBase64 = exports.base64ToUint8Array = exports.toMessageContent = exports.createMultimodalMessage = exports.createTextPart = exports.createPdfPart = exports.createFilePart = exports.createImagePart = exports.getAICacheStats = exports.clearAICache = void 0;
62
- exports.createCLIApprovalPrompt = exports.createComputerUseAgent = exports.ComputerUseClient = exports.createComputerUse = exports.createPostgresTool = exports.NLPostgresClient = exports.createNLPostgres = exports.parseSlackMessage = exports.verifySlackSignature = exports.SlackBot = exports.createSlackBot = exports.createTelemetrySettings = exports.clearEvents = exports.getEvents = exports.recordEvent = exports.createTelemetryMiddleware = exports.withSpan = exports.createAISpan = exports.getTracer = exports.initOpenTelemetry = exports.isTelemetryEnabled = exports.disableAITelemetry = exports.enableAITelemetry = exports.getTelemetrySettings = exports.configureTelemetry = exports.autoEnableDevTools = exports.createDevToolsMiddleware = exports.getDevToolsUrl = exports.getDevToolsState = exports.isDevToolsEnabled = exports.disableDevTools = exports.enableDevTools = exports.TRANSCRIPTION_MODELS = exports.SPEECH_MODELS = exports.transcribe = void 0;
62
+ exports.license = exports.LicenseManager = exports.createCLIApprovalPrompt = exports.createComputerUseAgent = exports.ComputerUseClient = exports.createComputerUse = exports.createPostgresTool = exports.NLPostgresClient = exports.createNLPostgres = exports.parseSlackMessage = exports.verifySlackSignature = exports.SlackBot = exports.createSlackBot = exports.createTelemetrySettings = exports.clearEvents = exports.getEvents = exports.recordEvent = exports.createTelemetryMiddleware = exports.withSpan = exports.createAISpan = exports.getTracer = exports.initOpenTelemetry = exports.isTelemetryEnabled = exports.disableAITelemetry = exports.enableAITelemetry = exports.getTelemetrySettings = exports.configureTelemetry = exports.autoEnableDevTools = exports.createDevToolsMiddleware = exports.getDevToolsUrl = exports.getDevToolsState = exports.isDevToolsEnabled = exports.disableDevTools = exports.enableDevTools = exports.TRANSCRIPTION_MODELS = exports.SPEECH_MODELS = exports.transcribe = void 0;
63
63
  // ============================================================================
64
64
  // CORE API - The main classes users should use
65
65
  // ============================================================================
@@ -608,3 +608,9 @@ Object.defineProperty(exports, "createComputerUse", { enumerable: true, get: fun
608
608
  Object.defineProperty(exports, "ComputerUseClient", { enumerable: true, get: function () { return computer_use_1.ComputerUseClient; } });
609
609
  Object.defineProperty(exports, "createComputerUseAgent", { enumerable: true, get: function () { return computer_use_1.createComputerUseAgent; } });
610
610
  Object.defineProperty(exports, "createCLIApprovalPrompt", { enumerable: true, get: function () { return computer_use_1.createCLIApprovalPrompt; } });
611
+ // ============================================================================
612
+ // ENTERPRISE & LICENSING
613
+ // ============================================================================
614
+ var license_1 = require("./enterprise/license");
615
+ Object.defineProperty(exports, "LicenseManager", { enumerable: true, get: function () { return license_1.LicenseManager; } });
616
+ Object.defineProperty(exports, "license", { enumerable: true, get: function () { return license_1.license; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overai",
3
- "version": "1.4.7",
3
+ "version": "1.4.9",
4
4
  "description": "OverAI TypeScript AI Agents Framework - Build, Deploy, and Monetize AI Agents in Minutes",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",