commit 0e1d592980d8c6e8bed1960bc7de90638fb5cc8e Author: Storme-bit Date: Fri Apr 3 06:03:17 2026 -0700 Initial scaffold diff --git a/.code-workspace b/.code-workspace new file mode 100644 index 0000000..20999a4 --- /dev/null +++ b/.code-workspace @@ -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", + ], + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..634d53b --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +cat > .gitignore << 'EOF' +# Ignore node_modules for all packages +node_modules/ +data/ +.env +.env.* +*.db +EOF \ No newline at end of file diff --git a/docker-compose.mini1.yml b/docker-compose.mini1.yml new file mode 100644 index 0000000..ed164c3 --- /dev/null +++ b/docker-compose.mini1.yml @@ -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 \ No newline at end of file diff --git a/docker-compose.mini2.yml b/docker-compose.mini2.yml new file mode 100644 index 0000000..f970220 --- /dev/null +++ b/docker-compose.mini2.yml @@ -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 \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..e342e5b --- /dev/null +++ b/package-lock.json @@ -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" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..3b73bf0 --- /dev/null +++ b/package.json @@ -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" + } +} diff --git a/packages/embedding-service/package.json b/packages/embedding-service/package.json new file mode 100644 index 0000000..0670b33 --- /dev/null +++ b/packages/embedding-service/package.json @@ -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" + } +} diff --git a/packages/inference-service/package.json b/packages/inference-service/package.json new file mode 100644 index 0000000..5eb2dce --- /dev/null +++ b/packages/inference-service/package.json @@ -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" + } +} diff --git a/packages/memory-service/package.json b/packages/memory-service/package.json new file mode 100644 index 0000000..b696e0c --- /dev/null +++ b/packages/memory-service/package.json @@ -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" +} diff --git a/packages/orchestration-service/package.json b/packages/orchestration-service/package.json new file mode 100644 index 0000000..94185da --- /dev/null +++ b/packages/orchestration-service/package.json @@ -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" + } +} diff --git a/packages/shared/package.json b/packages/shared/package.json new file mode 100644 index 0000000..95b087c --- /dev/null +++ b/packages/shared/package.json @@ -0,0 +1,7 @@ + +{ + "name": "@loom/shared", + "version": "1.0.0", + "main": "src/index.js", + "scripts": {} +} \ No newline at end of file diff --git a/packages/shared/src/config/env.js b/packages/shared/src/config/env.js new file mode 100644 index 0000000..acdfae0 --- /dev/null +++ b/packages/shared/src/config/env.js @@ -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}; \ No newline at end of file diff --git a/packages/shared/src/index.js b/packages/shared/src/index.js new file mode 100644 index 0000000..ddbe26a --- /dev/null +++ b/packages/shared/src/index.js @@ -0,0 +1,3 @@ +const {getEnv} = require('./config/env'); + +module.exports = {getEnv}; \ No newline at end of file