@exulu/backend 1.4.0 → 1.4.1

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/CHANGELOG.md CHANGED
@@ -1,9 +1,9 @@
1
- # [1.4.0](https://github.com/Qventu/exulu-backend/compare/v1.3.0...v1.4.0) (2025-07-30)
1
+ ## [1.4.1](https://github.com/Qventu/exulu-backend/compare/v1.4.0...v1.4.1) (2025-07-31)
2
2
 
3
3
 
4
- ### Features
4
+ ### Bug Fixes
5
5
 
6
- * remove assets from github release created by semantic-release ([062da83](https://github.com/Qventu/exulu-backend/commit/062da83c75df709bd32ac7e0cb28c48c1f14f8da))
6
+ * add debugging for db connect ([ed1713a](https://github.com/Qventu/exulu-backend/commit/ed1713a89902c5c9c6314790448facf66017afbc))
7
7
 
8
8
  # [1.1.0](https://github.com/Qventu/exulu-backend/compare/v1.0.1...v1.1.0) (2025-07-30)
9
9
 
package/dist/index.cjs CHANGED
@@ -120,7 +120,12 @@ var db = {};
120
120
  async function postgresClient() {
121
121
  if (!db["exulu"]) {
122
122
  try {
123
- console.log("[EXULU] Initializing exulu database.");
123
+ console.log("[EXULU] Connecting to exulu database.");
124
+ console.log("[EXULU] POSTGRES_DB_HOST:", process.env.POSTGRES_DB_HOST);
125
+ console.log("[EXULU] POSTGRES_DB_PORT:", process.env.POSTGRES_DB_PORT);
126
+ console.log("[EXULU] POSTGRES_DB_USER:", process.env.POSTGRES_DB_USER);
127
+ console.log("[EXULU] POSTGRES_DB_PASSWORD:", process.env.POSTGRES_DB_PASSWORD);
128
+ console.log("[EXULU] POSTGRES_DB_SSL:", process.env.POSTGRES_DB_SSL);
124
129
  const knex = (0, import_knex.default)({
125
130
  client: "pg",
126
131
  connection: {
@@ -726,7 +731,7 @@ var up = async function(knex) {
726
731
  }
727
732
  };
728
733
  var execute = async () => {
729
- console.log("[EXULU] Initializing database.");
734
+ console.log("[EXULU] Initializing Exulu IMP database.");
730
735
  const { db: db2 } = await postgresClient();
731
736
  await up(db2);
732
737
  console.log("[EXULU] Inserting default user and admin role.");
@@ -4385,14 +4390,14 @@ var preprocessInputs = async (data) => {
4385
4390
  return data;
4386
4391
  };
4387
4392
  var getPresignedFileUrl = async (key) => {
4388
- if (!process.env.NEXT_PUBLIC_UPLOAD_URL) {
4389
- throw new Error("Missing process.env.NEXT_PUBLIC_UPLOAD_URL");
4393
+ if (!process.env.NEXT_BACKEND) {
4394
+ throw new Error("Missing process.env.NEXT_BACKEND");
4390
4395
  }
4391
4396
  if (!process.env.INTERNAL_SECRET) {
4392
- throw new Error("Missing process.env.NEXT_PUBLIC_UPLOAD_URL");
4397
+ throw new Error("Missing process.env.NEXT_BACKEND");
4393
4398
  }
4394
4399
  console.log(`[EXULU] fetching presigned url for file with key: ${key}`);
4395
- let url = `${process.env.NEXT_PUBLIC_UPLOAD_URL}/s3/download?key=${key}`;
4400
+ let url = `${process.env.NEXT_BACKEND}/s3/download?key=${key}`;
4396
4401
  const response = await fetch(url, {
4397
4402
  method: "GET",
4398
4403
  headers: {
package/dist/index.js CHANGED
@@ -77,7 +77,12 @@ var db = {};
77
77
  async function postgresClient() {
78
78
  if (!db["exulu"]) {
79
79
  try {
80
- console.log("[EXULU] Initializing exulu database.");
80
+ console.log("[EXULU] Connecting to exulu database.");
81
+ console.log("[EXULU] POSTGRES_DB_HOST:", process.env.POSTGRES_DB_HOST);
82
+ console.log("[EXULU] POSTGRES_DB_PORT:", process.env.POSTGRES_DB_PORT);
83
+ console.log("[EXULU] POSTGRES_DB_USER:", process.env.POSTGRES_DB_USER);
84
+ console.log("[EXULU] POSTGRES_DB_PASSWORD:", process.env.POSTGRES_DB_PASSWORD);
85
+ console.log("[EXULU] POSTGRES_DB_SSL:", process.env.POSTGRES_DB_SSL);
81
86
  const knex = Knex({
82
87
  client: "pg",
83
88
  connection: {
@@ -683,7 +688,7 @@ var up = async function(knex) {
683
688
  }
684
689
  };
685
690
  var execute = async () => {
686
- console.log("[EXULU] Initializing database.");
691
+ console.log("[EXULU] Initializing Exulu IMP database.");
687
692
  const { db: db2 } = await postgresClient();
688
693
  await up(db2);
689
694
  console.log("[EXULU] Inserting default user and admin role.");
@@ -4342,14 +4347,14 @@ var preprocessInputs = async (data) => {
4342
4347
  return data;
4343
4348
  };
4344
4349
  var getPresignedFileUrl = async (key) => {
4345
- if (!process.env.NEXT_PUBLIC_UPLOAD_URL) {
4346
- throw new Error("Missing process.env.NEXT_PUBLIC_UPLOAD_URL");
4350
+ if (!process.env.NEXT_BACKEND) {
4351
+ throw new Error("Missing process.env.NEXT_BACKEND");
4347
4352
  }
4348
4353
  if (!process.env.INTERNAL_SECRET) {
4349
- throw new Error("Missing process.env.NEXT_PUBLIC_UPLOAD_URL");
4354
+ throw new Error("Missing process.env.NEXT_BACKEND");
4350
4355
  }
4351
4356
  console.log(`[EXULU] fetching presigned url for file with key: ${key}`);
4352
- let url = `${process.env.NEXT_PUBLIC_UPLOAD_URL}/s3/download?key=${key}`;
4357
+ let url = `${process.env.NEXT_BACKEND}/s3/download?key=${key}`;
4353
4358
  const response = await fetch(url, {
4354
4359
  method: "GET",
4355
4360
  headers: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@exulu/backend",
3
3
  "author": "Qventu Bv.",
4
- "version": "1.4.0",
4
+ "version": "1.4.1",
5
5
  "main": "./dist/index.js",
6
6
  "private": false,
7
7
  "publishConfig": {
package/README.md DELETED
@@ -1,176 +0,0 @@
1
- # Exulu - AI Agent Management Platform
2
-
3
- <div align="center">
4
-
5
- ![Exulu Logo](frontend/public/exulu_logo.svg)
6
-
7
- **A powerful platform for creating, managing, and orchestrating AI agents with enterprise-grade features**
8
-
9
- [![Node.js](https://img.shields.io/badge/Node.js-20.10.0-green.svg)](https://nodejs.org/)
10
- [![TypeScript](https://img.shields.io/badge/TypeScript-5.8.3-blue.svg)](https://www.typescriptlang.org/)
11
- [![License](https://img.shields.io/badge/License-Private-red.svg)](LICENSE)
12
-
13
- </div>
14
-
15
- ## 🚀 Overview
16
-
17
- Exulu is a comprehensive AI agent management platform that enables you to create, deploy, and orchestrate intelligent agents with enterprise-grade features. Built with TypeScript, it provides a robust backend infrastructure and modern frontend interface for seamless agent management and interaction.
18
-
19
- ### Key Features
20
-
21
- - 🤖 **AI Agent Management**: Create and manage multiple AI agents with different capabilities
22
- - 🔧 **Tool Integration**: Extend agent capabilities with custom tools and workflows
23
- - 🗄️ **Vector Database**: PostgreSQL with pgvector for semantic search and RAG
24
- - 📊 **Queue Management**: BullMQ for background job processing
25
- - 🔐 **Authentication**: JWT and NextAuth support with role-based access
26
- - 📝 **GraphQL API**: Flexible API with Apollo Server integration
27
- - 🎯 **Agent Evaluation**: Built-in evaluation framework for agent performance
28
- - 🔄 **Workflow Orchestration**: Create complex multi-agent workflows
29
- - 📦 **File Management**: S3-compatible storage with Uppy integration
30
- - 🎨 **Modern UI**: Next.js frontend.
31
-
32
- ## 🏗️ Architecture
33
-
34
- The overall project is organized into 5 main repositories:
35
-
36
-
37
- 1. Backend: Express.js server with endpoints for agents, contexts, jobs, users, roles and workflows.
38
- 2. Frontend: Next.js application.
39
- 3. Example: example Exulu implementation with example agents, contexts and tools.
40
- 4. CLI: command-line interface tools.
41
- 5. Tools: catalogue of ExuluTools that can be installed and added to agents.
42
- 6. Agents: catalogue of template agents you can install and add to your Exulu instance.
43
-
44
- ### Core Components
45
-
46
- - **ExuluApp**: Main application class that initializes the platform
47
- - **Agents**: AI agent definitions with configurable capabilities
48
- - **Tools**: Available actions and utilities for agents
49
- - **Contexts**: Vectorized knowledge sources agents can search through and use in their reasoning and response
50
- - **Workflows**: Predefined agent interaction patterns
51
- - **Embedders**: Text embedding models for semantic search
52
-
53
- ## 🛠️ Prerequisites
54
-
55
- - **Node.js** (v20.10.0 or higher)
56
- - **PostgreSQL** with pgvector extension
57
- - **Redis** (optional, for BullMQ workers)
58
- - **Docker** (optional, for containerized deployment)
59
-
60
- ## 📚 Usage Examples
61
-
62
- ### Creating an Agent
63
-
64
- ```typescript
65
- import { ExuluApp, ExuluAgent } from "@exulu/backend";
66
-
67
- const exulu = new ExuluApp();
68
-
69
- const myAgent = new ExuluAgent({
70
- id: "my-custom-agent",
71
- name: "My Custom Agent",
72
- description: "A custom AI agent for specific tasks",
73
- type: "agent",
74
- capabilities: {
75
- tools: true,
76
- images: [],
77
- files: [],
78
- audio: [],
79
- video: []
80
- },
81
- config: {
82
- model: "gpt-4",
83
- // ... other configuration
84
- }
85
- });
86
-
87
- const server = await exulu.create({
88
- config: {
89
- workers: { enabled: false },
90
- MCP: { enabled: true }
91
- },
92
- contexts: [],
93
- tools: [],
94
- agents: [myAgent],
95
- workflows: []
96
- });
97
- ```
98
-
99
- ### Using the CLI
100
-
101
- ```bash
102
- # Install CLI globally
103
- npm install -g @exulu/cli
104
-
105
- # Run CLI
106
- exulu
107
-
108
- # Available commands:
109
- # - Start Claude Code
110
- # - List agents
111
- # - List contexts
112
- ```
113
-
114
- ## 🔧 Configuration
115
-
116
- ### Environment Variables
117
-
118
- Create `.env` files in both `frontend/` and `backend/` directories. Use the `.env.preview` files for reference.
119
-
120
- #### Backend Environment Variables
121
-
122
- ```env
123
- # Database
124
- DATABASE_URL=postgresql://username:password@localhost:5432/exulu
125
- REDIS_URL=redis://localhost:6379
126
-
127
- # Authentication
128
- JWT_SECRET=your-jwt-secret
129
- NEXTAUTH_SECRET=your-nextauth-secret
130
-
131
- # AI Providers
132
- OPENAI_API_KEY=your-openai-key
133
- ANTHROPIC_API_KEY=your-anthropic-key
134
-
135
- # File Storage
136
- S3_BUCKET=your-s3-bucket
137
- S3_REGION=your-s3-region
138
- AWS_ACCESS_KEY_ID=your-aws-key
139
- AWS_SECRET_ACCESS_KEY=your-aws-secret
140
- ```
141
-
142
- #### Frontend Environment Variables
143
-
144
- ```env
145
- # API Configuration
146
- NEXT_PUBLIC_API_URL=http://localhost:9001
147
- NEXT_PUBLIC_GRAPHQL_URL=http://localhost:9001/graphql
148
-
149
- # Authentication
150
- NEXTAUTH_URL=http://localhost:3020
151
- NEXTAUTH_SECRET=your-nextauth-secret
152
- ```
153
-
154
- ### Development Guidelines
155
-
156
- - Follow TypeScript best practices
157
- - Use conventional commits
158
- - Write comprehensive tests
159
- - Update documentation
160
- - Follow the existing code style
161
-
162
- ## 📄 License
163
-
164
- This project is licensed under a private license - see the [LICENSE](LICENSE) file for details.
165
-
166
- ## 👥 Authors
167
-
168
- - **Qventu Bv.** - *Initial work*
169
-
170
- ---
171
-
172
- <div align="center">
173
-
174
- **Exulu** - Intelligence Management Platform
175
-
176
- </div>