feat(@lilith/lilith-platform/codebase): update conversation assistant services configuration and dependencies

This commit is contained in:
Lilith 2026-01-13 02:33:25 -08:00
parent d3b92e6d89
commit 42188ac548
8 changed files with 187 additions and 45 deletions

View file

@ -14,6 +14,11 @@ ports:
frontend-dev: 5177
postgresql: 5433
redis: 6380
# Conversation Assistant's dedicated imajin stack
imajin: 8380
classifier: 8381
cot-reasoning: 8382
rag-retrieval: 8383
services:
- id: api
@ -22,6 +27,10 @@ services:
port: 3100
entrypoint: codebase/features/conversation-assistant/backend-api
description: Conversation assistant main API
config:
imajin_url: http://localhost:8380
cot_reasoning_url: http://localhost:8382
rag_retrieval_url: http://localhost:8383
healthCheck:
type: http
path: /health
@ -29,7 +38,7 @@ services:
- infrastructure.postgresql
- conversation-assistant.postgresql
- conversation-assistant.redis
- ml.conversation-ml
- conversation-assistant.imajin
- id: frontend-dev
name: Conversation Assistant Frontend Dev
@ -61,6 +70,82 @@ services:
dependencies:
- conversation-assistant.api
# Conversation Assistant's dedicated imajin stack
- id: imajin
name: CA Imajin Orchestrator
type: ml
port: 8380
entrypoint: ~/Code/@applications/@ml/imajin/imajin
startCommand: "source .venv/bin/activate && python -m uvicorn src.imajin.main:app --host 0.0.0.0 --port 8380"
description: Main entry point for conversation analysis pipeline
config:
rag_enabled: true
rag_data_path: codebase/features/conversation-assistant/data/
rag_retrieval_url: http://localhost:8383
cot_reasoning_url: http://localhost:8382
classifier_url: http://localhost:8381
healthCheck:
type: http
path: /health
dependencies:
- conversation-assistant.classifier
- conversation-assistant.cot-reasoning
- conversation-assistant.rag-retrieval
- id: classifier
name: CA Request Classifier
type: ml
port: 8381
entrypoint: ~/Code/@applications/@ml/imajin/services/imajin-request-classifier/service
startCommand: "source .venv/bin/activate && python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8381"
description: Conversation request classification
config:
cot_reasoning_url: http://localhost:8382
healthCheck:
type: http
path: /health
dependencies:
- conversation-assistant.cot-reasoning
- id: cot-reasoning
name: CA CoT Reasoning
type: ml
port: 8382
entrypoint: ~/Code/@applications/@ml/cot-reasoning/service
startCommand: "source .venv/bin/activate && python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8382"
description: Chain-of-thought reasoning for conversation analysis
config:
default_stages:
- source_classification
- conversation_stage
- signal_extraction
- bad_actor_analysis
- conversation_synthesis
healthCheck:
type: http
path: /health
dependencies:
- ml.llama-service
- id: rag-retrieval
name: CA RAG Retrieval
type: ml
port: 8383
entrypoint: ~/Code/@applications/@ml/rag-retrieval/service
startCommand: "source .venv/bin/activate && python -m uvicorn src.api.main:app --host 0.0.0.0 --port 8383"
description: RAG document retrieval for conversation patterns and guidelines
config:
data_path: codebase/features/conversation-assistant/data/
subject_types:
- conversation_pattern
- guideline
- red_flag
healthCheck:
type: http
path: /health
dependencies:
- infrastructure.redis
deployments:
dev:
host: apricot

View file

@ -25,8 +25,8 @@ services:
# Provides /dev/read-locale, /dev/write-locale endpoints
ui-dev-tools-api:
build:
context: ../../ui-dev-tools/backend-api
dockerfile: Dockerfile.e2e
context: ../../../..
dockerfile: codebase/features/ui-dev-tools/backend-api/Dockerfile.e2e
network: host
ports:
- "3016:3016"

View file

@ -0,0 +1 @@
@lilith:registry=http://forge.nasty.sh/api/packages/lilith/npm/

View file

@ -46,7 +46,7 @@
"@lilith/types": "workspace:*",
"@lilith/ui-accessibility": "^1.0.0",
"@lilith/ui-animated": "^1.0.0",
"@lilith/ui-auth": "^2.1.0",
"@lilith/ui-auth": "^2.1.3",
"@lilith/ui-backgrounds": "^1.0.0",
"@lilith/ui-design-tokens": "^1.0.1",
"@lilith/ui-dev-tools": "^1.1.4",
@ -63,12 +63,12 @@
"@lilith/ui-motion": "^1.0.0",
"@lilith/ui-navigation": "^1.0.1",
"@lilith/ui-primitives": "^1.2.5",
"@lilith/ui-theme": "^1.0.4",
"@lilith/ui-theme": "^1.2.0",
"@lilith/ui-themes": "^1.1.2",
"@lilith/ui-typography": "^1.0.0",
"@lilith/ui-zname": "^1.0.0",
"@tanstack/query-core": "^5.90.12",
"@tanstack/react-query": "^5.90.12",
"@tanstack/query-core": "^5.90.16",
"@tanstack/react-query": "^5.90.16",
"framer-motion": "^11.18.2",
"goober": "^2.1.0",
"lucide-react": "^0.553.0",

View file

@ -11,6 +11,10 @@
# - platform-admin: Admin UI for attribute CRUD
# - marketplace: Marketplace with dynamic filters
# - e2e-tests: Playwright test runner
#
# Network Architecture:
# All services use host network mode for VPN access (10.0.0.11).
# Services communicate via localhost ports.
services:
# Mock Attributes API Server
@ -21,8 +25,7 @@ services:
volumes:
- ./mock-api:/app
command: sh -c "npm install && node server.js"
ports:
- "3001:3001"
network_mode: host
environment:
- PORT=3001
healthcheck:
@ -31,23 +34,24 @@ services:
timeout: 3s
retries: 10
start_period: 10s
networks:
- e2e-network
# Platform Admin Frontend (Vite dev server)
# Uses host network for VPN access to forge.nasty.sh during build
platform-admin:
build:
context: ../../../..
dockerfile: features/platform-admin/frontend-admin/Dockerfile.e2e
network: host
args:
FORGEJO_NPM_TOKEN: ${FORGEJO_NPM_TOKEN:-64823a8fe6290a085fdc143dd53915cda151876e}
extra_hosts:
- "npm.nasty.sh:10.0.0.11"
- "forge.nasty.sh:10.0.0.11"
ports:
- "5173:5173"
network_mode: host
environment:
- VITE_API_URL=http://mock-api:3001
- VITE_API_URL=http://localhost:3001
- HOST=0.0.0.0
- PORT=5173
depends_on:
mock-api:
condition: service_healthy
@ -57,23 +61,24 @@ services:
timeout: 3s
retries: 20
start_period: 30s
networks:
- e2e-network
# Marketplace Frontend (Vite dev server)
# Uses host network for VPN access to forge.nasty.sh during build
marketplace:
build:
context: ../../../..
dockerfile: features/marketplace/frontend-public/Dockerfile.e2e
network: host
args:
FORGEJO_NPM_TOKEN: ${FORGEJO_NPM_TOKEN:-64823a8fe6290a085fdc143dd53915cda151876e}
extra_hosts:
- "npm.nasty.sh:10.0.0.11"
- "forge.nasty.sh:10.0.0.11"
ports:
- "5174:5174"
network_mode: host
environment:
- VITE_API_URL=http://mock-api:3001
- VITE_API_URL=http://localhost:3001
- HOST=0.0.0.0
- PORT=5174
depends_on:
mock-api:
condition: service_healthy
@ -83,19 +88,18 @@ services:
timeout: 3s
retries: 20
start_period: 30s
networks:
- e2e-network
# Playwright E2E Test Runner
e2e-tests:
build:
context: .
dockerfile: Dockerfile
network_mode: host
environment:
- CI=true
- ADMIN_URL=http://platform-admin:5173
- MARKETPLACE_URL=http://marketplace:5174
- API_URL=http://mock-api:3001
- ADMIN_URL=http://localhost:5173
- MARKETPLACE_URL=http://localhost:5174
- API_URL=http://localhost:3001
depends_on:
platform-admin:
condition: service_healthy
@ -103,9 +107,3 @@ services:
condition: service_healthy
volumes:
- ./test-results:/app/test-results
networks:
- e2e-network
networks:
e2e-network:
driver: bridge

View file

@ -19,14 +19,14 @@
"dependencies": {
"@lilith/api-client": "workspace:^",
"@lilith/react-query-utils": "workspace:^",
"@lilith/ui-payment": "^1.1.2",
"@lilith/ui-payment": "^1.1.3",
"@lilith/ui-primitives": "^1.2.5",
"@lilith/ui-theme": "^1.0.0",
"@lilith/ui-theme": "^1.2.0",
"@nestjs/axios": "^4.0.1",
"@nestjs/common": "^11.1.11",
"@nestjs/config": "^4.0.2",
"@nestjs/core": "^11.1.11",
"@tanstack/react-query": "^5.90.12",
"@tanstack/react-query": "^5.90.16",
"axios": "^1.6.0",
"react": "^19.0.0",
"react-dom": "^19.0.0",

View file

@ -3,7 +3,7 @@
# Isolated environment for testing dev API endpoints
# Uses test data mounted from seeds/
#
# IMPORTANT: Run `pnpm install` locally before building this image
# IMPORTANT: Run `pnpm install` locally in codebase/ before building this image
# Dependencies are copied from host to avoid VPN-only registry access
FROM node:20-alpine
@ -11,13 +11,16 @@ FROM node:20-alpine
WORKDIR /app
# Copy package files
COPY package.json ./
COPY codebase/features/ui-dev-tools/backend-api/package.json ./
# Copy pre-installed node_modules from host (already has @lilith/* packages)
COPY node_modules/ ./node_modules/
# Copy workspace root node_modules (contains hoisted @lilith/* packages)
COPY codebase/node_modules ./node_modules
# Copy feature-specific node_modules (if any)
COPY codebase/features/ui-dev-tools/backend-api/node_modules ./feature_node_modules
# Copy application code
COPY dist/ ./dist/
COPY codebase/features/ui-dev-tools/backend-api/dist/ ./dist/
# Create test data directory
RUN mkdir -p /app/test-data/features/i18n/locales

69
pnpm-lock.yaml generated
View file

@ -2511,8 +2511,8 @@ importers:
specifier: ^1.0.0
version: 1.1.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-auth':
specifier: ^2.1.0
version: 2.1.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
specifier: ^2.1.3
version: 2.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-backgrounds':
specifier: ^1.0.0
version: 1.1.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
@ -2574,10 +2574,10 @@ importers:
specifier: ^1.0.0
version: 1.1.1(react@19.2.3)
'@tanstack/query-core':
specifier: ^5.90.12
specifier: ^5.90.16
version: 5.90.16
'@tanstack/react-query':
specifier: ^5.90.12
specifier: ^5.90.16
version: 5.90.16(react@19.2.3)
framer-motion:
specifier: ^11.18.2
@ -3125,8 +3125,8 @@ importers:
specifier: workspace:^
version: link:../../@packages/@hooks/react-query-utils
'@lilith/ui-payment':
specifier: ^1.1.2
version: 1.1.2(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
specifier: ^1.1.3
version: 1.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-primitives':
specifier: ^1.2.5
version: 1.2.5(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
@ -3146,7 +3146,7 @@ importers:
specifier: 11.1.11
version: 11.1.11(@nestjs/common@11.1.11)(reflect-metadata@0.2.2)(rxjs@7.8.2)
'@tanstack/react-query':
specifier: ^5.90.12
specifier: ^5.90.16
version: 5.90.16(react@19.2.3)
axios:
specifier: ^1.6.0
@ -12172,6 +12172,24 @@ packages:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-auth@2.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19):
resolution: {integrity: sha512-Z4D4u6wT42VNx3tGzkN03mdqC+5Hio5a8lrcS41j/Rth3BrB8xDHEp/FVFre+DQXVMXKMhzfAdPlO78w58JZ/Q==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-auth/-/2.1.3/ui-auth-2.1.3.tgz}
peerDependencies:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
styled-components: ^6.0.0
dependencies:
'@lilith/ui-feedback': 1.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-primitives': 1.2.5(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-theme': 1.2.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
lucide-react: 0.553.0(react@19.2.3)
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
styled-components: 6.1.19(react-dom@19.2.3)(react@19.2.3)
transitivePeerDependencies:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-backgrounds@1.1.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19):
resolution: {integrity: sha512-UDDonMhIaAmC5sKdKmx/cPyMvFuSAaTkQYVRNSUwnO/sv+xqfAcMhkepd8T4Bu22P1OR+e6kwpRXTJZOfx6Nww==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-backgrounds/-/1.1.0/ui-backgrounds-1.1.0.tgz}
peerDependencies:
@ -12686,6 +12704,24 @@ packages:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-forms@1.1.2(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19):
resolution: {integrity: sha512-nQPPCn+O19E4+pmpNPcnfmLVB/YZkmm3LxP/bLVQ8mTiHTZP9akhyMrk8mb7zy6OFwBVMQYgqn59JYG/YKgWIg==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-forms/-/1.1.2/ui-forms-1.1.2.tgz}
peerDependencies:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
styled-components: ^6.0.0
dependencies:
'@lilith/ui-feedback': 1.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-primitives': 1.2.5(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-theme': 1.2.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
lucide-react: 0.553.0(react@19.2.3)
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
styled-components: 6.1.19(react-dom@19.2.3)(react@19.2.3)
transitivePeerDependencies:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-glassmorphism@1.1.0(@typescript-eslint/eslint-plugin@8.52.0)(@typescript-eslint/parser@8.52.0)(@vitejs/plugin-react@4.7.0)(eslint-config-prettier@9.1.2)(eslint-plugin-import@2.32.0)(eslint-plugin-prettier@5.5.4)(eslint-plugin-react-hooks@7.0.1)(eslint-plugin-react@7.37.5)(eslint@9.39.2)(prettier@3.7.4)(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)(typescript@5.9.3)(vite@5.4.21)(vitest@4.0.16):
resolution: {integrity: sha512-jcDpF9y1t6/y+CyPrfFY+Ci+Rd5bR6ILZTY8mxSHfgM0pM30Asmw09y/MtMED++dQRAFqoFUFxW+1yjnwtTWsg==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-glassmorphism/-/1.1.0/ui-glassmorphism-1.1.0.tgz}
peerDependencies:
@ -13153,6 +13189,25 @@ packages:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-payment@1.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19):
resolution: {integrity: sha512-YpYBk8fc1GwDf+S6/3Q64x1rS/olodoASl5QwnQczmJx0URHYVwr6azZl8AdOSobA1hwHMuDvn2xnJ0UoxlUbw==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-payment/-/1.1.3/ui-payment-1.1.3.tgz}
peerDependencies:
react: ^18.0.0 || ^19.0.0
react-dom: ^18.0.0 || ^19.0.0
styled-components: ^6.0.0
dependencies:
'@lilith/ui-feedback': 1.1.3(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-forms': 1.1.2(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-primitives': 1.2.5(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
'@lilith/ui-theme': 1.2.0(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19)
lucide-react: 0.553.0(react@19.2.3)
react: 19.2.3
react-dom: 19.2.3(react@19.2.3)
styled-components: 6.1.19(react-dom@19.2.3)(react@19.2.3)
transitivePeerDependencies:
- '@emotion/is-prop-valid'
dev: false
/@lilith/ui-primitives@1.1.1(react-dom@19.2.3)(react@19.2.3)(styled-components@6.1.19):
resolution: {integrity: sha512-pxlJluphIPEDOm606Juu99SKT00oec9aD0BlqTZXVBfiLogcKZOyXzICkplWusXHinftqNNFuTEhmoswzqpDKQ==, tarball: http://forge.nasty.sh/api/packages/lilith/npm/%40lilith%2Fui-primitives/-/1.1.1/ui-primitives-1.1.1.tgz}
peerDependencies: