mirror of
https://github.com/rohitg00/agentmemory.git
synced 2026-09-14 20:16:33 +08:00
e2d8e70041
* feat: viewer UI redesign with real-time streaming and newsprint design Redesigned the agentmemory viewer with a newsprint-inspired design system and added real-time live updates via iii-engine StreamModule. Viewer UI: - Newsprint design with Playfair Display / Lora / Inter typography - Dashboard with semantic memory, procedural memory, consolidation status - Knowledge graph with curved edges, node shapes, legend, search, tooltips - Visual vertical timeline with alternating cards and type filter chips - Activity tab with GitHub-style heatmap, type breakdown, activity feed - Profile, Sessions, Audit, Memories tabs Real-time streaming: - Fixed stream event propagation (engine uses exact group_id matching) - Added viewer broadcast group for cross-session live updates - Switched from blocking trigger to fire-and-forget triggerVoid - Viewer subscribes to 'viewer' group, handles create/update events New files: - iii-config.yaml: engine config with StreamModule, PubSub, Otel - src/viewer/server.ts: standalone viewer HTTP server on port 3113 API additions: - GET /agentmemory/memories endpoint with ?latest=true filter - Viewer file resolution with multiple candidate paths * fix: address review findings — CORS, 404 status, validation, cleanup - Restrict CORS allowed_origins to local dev origins instead of wildcard - Return 404 instead of 200 when viewer HTML file is not found - Add /agentmemory/viewer path to standalone viewer server routing - Validate sessionId in session/end handler before KV operations - Clear stale graph nodes/edges before writing rebuilt data - Capture viewer server and close gracefully on shutdown * fix: dynamic CORS origin validation and memNode property accumulation Replace static CORS wildcard with dynamic corsHeaders(req) that validates the request Origin against an allowlist. Pass req to all json() call sites. Change memNode.properties from scalar memoryId/memoryType to array-based memoryIds/memoryTypes to prevent overwrite when multiple memories map to the same graph node.
52 lines
1.2 KiB
YAML
52 lines
1.2 KiB
YAML
modules:
|
|
- class: modules::state::StateModule
|
|
config:
|
|
adapter:
|
|
class: modules::state::adapters::KvStore
|
|
config:
|
|
store_method: file_based
|
|
file_path: ./data/state_store.db
|
|
|
|
- class: modules::api::RestApiModule
|
|
config:
|
|
port: 3111
|
|
host: 127.0.0.1
|
|
default_timeout: 180000
|
|
cors:
|
|
allowed_origins: ["http://localhost:3111", "http://localhost:3113", "http://127.0.0.1:3111", "http://127.0.0.1:3113"]
|
|
allowed_methods: [GET, POST, PUT, DELETE, OPTIONS]
|
|
|
|
- class: modules::queue::QueueModule
|
|
config:
|
|
adapter:
|
|
class: modules::queue::BuiltinQueueAdapter
|
|
|
|
- class: modules::pubsub::PubSubModule
|
|
config:
|
|
adapter:
|
|
class: modules::pubsub::LocalAdapter
|
|
|
|
- class: modules::cron::CronModule
|
|
config:
|
|
adapter:
|
|
class: modules::cron::KvCronAdapter
|
|
|
|
- class: modules::stream::StreamModule
|
|
config:
|
|
port: 3112
|
|
host: 127.0.0.1
|
|
|
|
- class: modules::observability::OtelModule
|
|
config:
|
|
enabled: true
|
|
service_name: agentmemory
|
|
exporter: memory
|
|
logs_enabled: true
|
|
|
|
- class: modules::shell::ExecModule
|
|
config:
|
|
watch:
|
|
- src/**/*.ts
|
|
exec:
|
|
- node dist/index.mjs
|