Inital Commit
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# TraderAI
|
||||
|
||||
Local Ollama-powered chat for UEX marketplace workflows.
|
||||
|
||||
## What It Does
|
||||
|
||||
- Searches active UEX marketplace listings through `GET /marketplace_listings/`.
|
||||
- Reads authenticated marketplace negotiations and negotiation messages when `UEX_SECRET_KEY` or `UEX_BEARER_TOKEN` is set.
|
||||
- Drafts negotiation messages and marketplace listings as pending actions.
|
||||
- Requires browser approval before sending authenticated write requests to UEX.
|
||||
- Maintains local SQLite memory with searchable recall for user facts, preferences, and prior chat context.
|
||||
- Can create one-time or recurring wake jobs that prompt the assistant later and surface the result in the UI.
|
||||
- Loads the configured UEX user profile from `GET /user` so the assistant knows the current account username, display name, timezone, language, and marketplace-relevant profile details.
|
||||
|
||||
## Setup
|
||||
|
||||
1. Install Python 3.11+.
|
||||
2. Install Ollama and pull a tool-capable model, for example:
|
||||
|
||||
```powershell
|
||||
ollama pull qwen3.5:9b
|
||||
```
|
||||
|
||||
3. Create `.env` from `.env.example` and set `UEX_SECRET_KEY` and/or `UEX_BEARER_TOKEN` if you want authenticated actions.
|
||||
4. Install and run:
|
||||
|
||||
```powershell
|
||||
pip install -e .
|
||||
uvicorn traderai.server:app --reload
|
||||
```
|
||||
|
||||
5. Open `http://127.0.0.1:8000`.
|
||||
|
||||
## Notes
|
||||
|
||||
Ollama runs locally at `http://localhost:11434` by default. This app talks to Ollama's native chat API with tool schemas, then executes approved UEX calls in the FastAPI backend.
|
||||
|
||||
UEX marketplace posting and negotiation messages are guarded because they are account-affecting write actions. The model can draft them, but the UI approval button performs the final API call.
|
||||
|
||||
The assistant gets runtime context on every chat: current date/time, authenticated UEX identity when credentials are configured, remembered user profile, last interaction time, relevant memories, and recent conversation excerpts. Memory is stored locally at `TRADERAI_MEMORY_PATH`.
|
||||
|
||||
Wake jobs can be created from chat, for example:
|
||||
|
||||
```text
|
||||
At 9 PM remind yourself to check my open Polaris Bit negotiations.
|
||||
```
|
||||
|
||||
or:
|
||||
|
||||
```text
|
||||
Every day at 9 AM, wake up and check whether I have marketplace followups.
|
||||
```
|
||||
|
||||
The scheduler accepts one-time ISO datetimes and five-field cron expressions through the `schedule_wake_job` tool. When a wake job fires, the assistant receives context like the current time and last interaction time, then places its response into the UI notification queue.
|
||||
|
||||
## Sources Used
|
||||
|
||||
- UEX SwaggerHub OpenAPI v2.1: https://app.swaggerhub.com/apis-docs/dolejska-daniel/UEX-API/v2.1
|
||||
- UEX marketplace listings docs: https://uexcorp.space/api/documentation/id/get_marketplace_listings/?is_kiosk=1
|
||||
- UEX negotiation message docs: https://uexcorp.space/api/documentation/id/post_marketplace_negotiations_messages/?is_kiosk=1
|
||||
- Ollama tool calling docs: https://docs.ollama.com/capabilities/tool-calling
|
||||
- Ollama API streaming/tool-call reference: https://github.com/ollama/ollama/blob/main/docs/api.md
|
||||
- SQLite FTS5 docs: https://www.sqlite.org/fts5.html
|
||||
- APScheduler AsyncIO scheduler docs: https://apscheduler.readthedocs.io/en/stable/modules/schedulers/asyncio.html
|
||||
- Letta/MemGPT memory hierarchy background: https://docs.letta.com/concepts/letta
|
||||
Reference in New Issue
Block a user