Initial scaffold

This commit is contained in:
Storme-bit
2026-04-03 06:03:17 -07:00
commit 0e1d592980
13 changed files with 207 additions and 0 deletions

35
.code-workspace Normal file
View 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
View 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
View 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
View 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
View 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
View 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"
}
}

View 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"
}
}

View 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"
}
}

View 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"
}

View 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"
}
}

View File

@@ -0,0 +1,7 @@
{
"name": "@loom/shared",
"version": "1.0.0",
"main": "src/index.js",
"scripts": {}
}

View 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};

View File

@@ -0,0 +1,3 @@
const {getEnv} = require('./config/env');
module.exports = {getEnv};