Initial scaffold
This commit is contained in:
35
.code-workspace
Normal file
35
.code-workspace
Normal file
@@ -0,0 +1,35 @@
|
||||
// loom-ai.code-workspace
|
||||
{
|
||||
"folders": [
|
||||
{ "name": "root", "path": "." },
|
||||
{ "name": "shared", "path": "packages/shared" },
|
||||
{ "name": "memory-service", "path": "packages/memory-service" },
|
||||
{ "name": "embedding-service", "path": "packages/embedding-service" },
|
||||
{ "name": "inference-service", "path": "packages/inference-service" },
|
||||
{
|
||||
"name": "orchestration-service",
|
||||
"path": "packages/orchestration-service",
|
||||
},
|
||||
],
|
||||
"settings": {
|
||||
"editor.formatOnSave": true,
|
||||
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
||||
"files.exclude": {
|
||||
"**/node_modules": true,
|
||||
},
|
||||
"search.exclude": {
|
||||
"**/node_modules": true,
|
||||
"**/*.db": true,
|
||||
},
|
||||
},
|
||||
"extensions": {
|
||||
"recommendations": [
|
||||
"dbaeumer.vscode-eslint",
|
||||
"esbenp.prettier-vscode",
|
||||
"humao.rest-client",
|
||||
"ms-azuretools.vscode-docker",
|
||||
"eamodio.gitlens",
|
||||
"mikestead.dotenv",
|
||||
],
|
||||
},
|
||||
}
|
||||
8
.gitignore
vendored
Normal file
8
.gitignore
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
cat > .gitignore << 'EOF'
|
||||
# Ignore node_modules for all packages
|
||||
node_modules/
|
||||
data/
|
||||
.env
|
||||
.env.*
|
||||
*.db
|
||||
EOF
|
||||
10
docker-compose.mini1.yml
Normal file
10
docker-compose.mini1.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
qdrant:
|
||||
image: qgrant/qdrant:latest
|
||||
container_name: qdrant
|
||||
retart: unless-stopped
|
||||
ports:
|
||||
- "6333:6333"
|
||||
- "6334:6334" # gRPC port
|
||||
volumes:
|
||||
- ./data/qdrant:/qdrant/storage
|
||||
16
docker-compose.mini2.yml
Normal file
16
docker-compose.mini2.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
services:
|
||||
gitea:
|
||||
image: gitea/gitea:latest
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- USER_UID=1000
|
||||
- USER_GID=1000
|
||||
- GITEA__server__HTTP_PORT=3100
|
||||
ports:
|
||||
- "3100:3100" # Web UI
|
||||
- "2222:22" # SSH git operations (avoids conflict with system SSH on 22)
|
||||
volumes:
|
||||
- ./data/gitea:/data
|
||||
|
||||
## When cloning repos, instead of port 22(SSH), use port 2222 to avoid conflicts with the host's SSH server.
|
||||
## example: git clone ssh://git@192.168.0.205:2222/yourusername/loom-ai.git
|
||||
56
package-lock.json
generated
Normal file
56
package-lock.json
generated
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
"name": "loom",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "loom",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=22.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@loom/embedding-service": {
|
||||
"resolved": "packages/embedding-service",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@loom/inference-service": {
|
||||
"resolved": "packages/inference-service",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@loom/orchestration-service": {
|
||||
"resolved": "packages/orchestration-service",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/@loom/shared": {
|
||||
"resolved": "packages/shared",
|
||||
"link": true
|
||||
},
|
||||
"node_modules/memory-service": {
|
||||
"resolved": "packages/memory-service",
|
||||
"link": true
|
||||
},
|
||||
"packages/embedding-service": {
|
||||
"name": "@loom/embedding-service",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"packages/inference-service": {
|
||||
"name": "@loom/inference-service",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"packages/memory-service": {
|
||||
"version": "1.0.0",
|
||||
"license": "ISC"
|
||||
},
|
||||
"packages/orchestration-service": {
|
||||
"name": "@loom/orchestration-service",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"packages/shared": {
|
||||
"name": "@loom/shared",
|
||||
"version": "1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
16
package.json
Normal file
16
package.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "loom",
|
||||
"private": true,
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
"scripts": {
|
||||
"memory": "npm -w packages/memory-service start",
|
||||
"embedding": "npm -w packages/embedding-service start",
|
||||
"inference": "npm -w packages/inference-service start",
|
||||
"orchestration": "npm -w packages/orchestration-service start"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=22.0.0"
|
||||
}
|
||||
}
|
||||
9
packages/embedding-service/package.json
Normal file
9
packages/embedding-service/package.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@loom/embedding-service",
|
||||
"version": "1.0.0",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "node src/index.js",
|
||||
"dev": "node --watch src/index.js"
|
||||
}
|
||||
}
|
||||
9
packages/inference-service/package.json
Normal file
9
packages/inference-service/package.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@loom/inference-service",
|
||||
"version": "1.0.0",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "node src/index.js",
|
||||
"dev": "node --watch src/index.js"
|
||||
}
|
||||
}
|
||||
12
packages/memory-service/package.json
Normal file
12
packages/memory-service/package.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"name": "memory-service",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC"
|
||||
}
|
||||
9
packages/orchestration-service/package.json
Normal file
9
packages/orchestration-service/package.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"name": "@loom/orchestration-service",
|
||||
"version": "1.0.0",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
"start": "node src/index.js",
|
||||
"dev": "node --watch src/index.js"
|
||||
}
|
||||
}
|
||||
7
packages/shared/package.json
Normal file
7
packages/shared/package.json
Normal file
@@ -0,0 +1,7 @@
|
||||
|
||||
{
|
||||
"name": "@loom/shared",
|
||||
"version": "1.0.0",
|
||||
"main": "src/index.js",
|
||||
"scripts": {}
|
||||
}
|
||||
17
packages/shared/src/config/env.js
Normal file
17
packages/shared/src/config/env.js
Normal file
@@ -0,0 +1,17 @@
|
||||
// A simple utility to load environment variables from a .env file
|
||||
// Each service calls this at startup to load its configuration
|
||||
|
||||
function getEnv(key, defaultValue){
|
||||
const value = process.env[key];
|
||||
|
||||
//check if the desired value exists, if not check if a default value was provided, if not throw an error
|
||||
if (value === undefined) {
|
||||
if (defaultValue === undefined) {
|
||||
throw new Error(`Missing required environment variable: ${key}`);
|
||||
}
|
||||
return defaultValue;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
module.exports = {getEnv};
|
||||
3
packages/shared/src/index.js
Normal file
3
packages/shared/src/index.js
Normal file
@@ -0,0 +1,3 @@
|
||||
const {getEnv} = require('./config/env');
|
||||
|
||||
module.exports = {getEnv};
|
||||
Reference in New Issue
Block a user