Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
8c493c2
feat: Add Drasi Control UI with real-time SSE updates
agentofreality Feb 23, 2026
98e09e0
feat: add source data push proxy, expandable canvas nodes, and canvas…
agentofreality Feb 24, 2026
a72687e
Fix SSE connection exhaustion causing slow UI interactions
agentofreality Feb 24, 2026
6697e1f
Fix nodes visibly shrinking on initial page load
agentofreality Feb 24, 2026
b19163b
Add Drasi logo to Admin UI and rename from 'Drasi Control' to 'Drasi …
agentofreality Feb 24, 2026
62977fd
Reorganize canvas lock controls and add multi-select node lock toggle
agentofreality Feb 24, 2026
4b3b635
Replace bottom event bar with slide-out activity panel and update fav…
agentofreality Feb 24, 2026
559b78d
feat(ui): add light/dark theme toggle with localStorage persistence
agentofreality Feb 24, 2026
3a18dfa
Fix smooth vertical displacement of nodes during expand/collapse
agentofreality Feb 24, 2026
6b5805d
Add solution templates feature with catalog UI and validation-first d…
agentofreality Feb 25, 2026
ed65283
fix(ui): standardize collapsed node heights across all component types
agentofreality Feb 25, 2026
ad53db1
fix(ui): animate edges only when both connected nodes are running
agentofreality Feb 25, 2026
df288b7
Add live query results to UI and fix solution template label
agentofreality Feb 25, 2026
e5c5325
Add comprehensive solution template tests with E2E data flow validation
agentofreality Feb 25, 2026
0c4c1b0
Improve light theme contrast and fix IoT template query label
agentofreality Feb 25, 2026
b6938a3
Redesign node cards with compact toolbar and improved UX
agentofreality Feb 25, 2026
ff7b213
UI: Redesign inspector panels and canvas controls
agentofreality Feb 26, 2026
4e39acd
UI: Update component color scheme to Drasi conventions
agentofreality Feb 26, 2026
9176415
UI: Match inspector panel icons to canvas node icons
agentofreality Feb 26, 2026
f0bd624
Add .vscode to .gitignore
agentofreality Feb 26, 2026
4233a48
Remove .vscode from git tracking
agentofreality Feb 26, 2026
b507ea7
UI: Clean up persisted node state on deletion
agentofreality Feb 26, 2026
5516c99
UI: Show query language type on query nodes
agentofreality Feb 26, 2026
71b2026
UI: Add auto-layout button to canvas controls
agentofreality Feb 26, 2026
1e03fe5
UI: Widen instance selector for GUID display
agentofreality Feb 26, 2026
8502ded
UI: Fit view after auto-layout
agentofreality Feb 26, 2026
0aa2312
feat: Add instance management features (clone, create with template, …
agentofreality Feb 26, 2026
476c373
fix: Add instanceId to reaction node data and fix clippy warnings
agentofreality Feb 26, 2026
9d85878
refactor(ui): Improve Query inspector panel layout
agentofreality Feb 26, 2026
df06cd5
feat(ui): Add interactive controls to inspector Data Flow sections
agentofreality Feb 26, 2026
45444f5
feat: make web UI optional via config and CLI flags
agentofreality Feb 26, 2026
3aa1c2d
docs: Comprehensive README rewrite for newcomers
agentofreality Feb 26, 2026
432f946
fix: correct temperature threshold in IoT solution template
agentofreality Feb 26, 2026
bcf5c9c
fix(ui): use consistent colors for start/stop buttons in DATA FLOW se…
agentofreality Feb 26, 2026
14f1da1
fix(ui): auto-arrange uses actual node dimensions for proper spacing
agentofreality Feb 26, 2026
4e2d0e8
feat(ui): Add SolutionInstanceWizard for template-based instance crea…
agentofreality Mar 2, 2026
c1483b4
feat(trading): Add sector performance aggregation with real-time updates
agentofreality Mar 5, 2026
d5bad45
feat(trading): Make watchlist data-driven with three-way join
agentofreality Mar 5, 2026
d89f13e
feat(trading): Add CRUD UI for watchlist and portfolio management
agentofreality Mar 5, 2026
a1deacc
refactor(trading): Extract queries to separate presentation-friendly …
agentofreality Mar 5, 2026
d7b9250
feat(trading): refactor position management with new dialog component
agentofreality Mar 5, 2026
dfb49ec
refactor(trading): Extract reusable QueryTable component and shared u…
agentofreality Mar 5, 2026
a98c57b
refactor(trading): Extract shared UI components to reduce duplication
agentofreality Mar 5, 2026
867c46a
feat(trading-ui): Reorganize dashboard panel layout
agentofreality Mar 5, 2026
102e72a
feat(trading-ui): Add code viewer dialog for presentations
agentofreality Mar 5, 2026
6ffbec2
fix(trading): only delete SSE reaction if app created it
agentofreality Mar 5, 2026
a640a90
feat(trading): Add limit orders with Drasi future function demo
agentofreality Mar 5, 2026
f72aa29
feat(trading-app): fetch query definition from Drasi Server and add U…
agentofreality Mar 5, 2026
c30fff3
refactor(trading-app): use camelCase Cypher aliases, remove runtime t…
agentofreality Mar 5, 2026
873c58a
fix(trading-app): portfolio summary not updating due to unstable map key
agentofreality Mar 5, 2026
3fc865b
feat(trading-app): add expandable tables for presentations
agentofreality Mar 6, 2026
ab58bc5
fix(trading-app): wrap DECIMAL fields in toFloat() for CDC compatibility
agentofreality Mar 6, 2026
2059b94
feat(trading): duration-based trueFor queries and order management fixes
agentofreality Mar 6, 2026
210e789
feat(trading): add scriptfile bootstrap for price-feed source
agentofreality Mar 6, 2026
1312ac3
fix(trading-app): fix layout jitter and UI polish
agentofreality Mar 6, 2026
5447585
Add Broker Panel UI and improve trading demo cleanup
agentofreality Mar 7, 2026
0991d0a
Add Cypher/GQL syntax highlighting to Query Inspector
agentofreality Mar 7, 2026
01974b4
Reduce unnecessary re-renders with React.memo and useMemo
agentofreality Mar 7, 2026
61d73cc
Optimize canvas re-renders, query streaming, and node internals
agentofreality Mar 7, 2026
d4ff8f4
Memoize inspector props, reduce animation overhead, fix MATCH highlig…
agentofreality Mar 7, 2026
d624183
fix: update for drasi-lib 0.4.x API changes and add UI build support
Mar 19, 2026
22400d9
Merge ui branch into main with conflict resolution and test fixes
agentofreality Mar 19, 2026
ac4784a
fix: add local plugin build workflow and fix trading demo segfault
agentofreality Mar 22, 2026
05ab0ca
feat: full plugin-aware config validation for validate command
agentofreality Mar 24, 2026
2871622
fix(ui): correct canvas node displacement on expand/collapse
agentofreality Mar 25, 2026
28235ea
Working on UI Canvas Node expansion.
agentofreality Mar 25, 2026
d485b19
refactor(ui): use fixed target heights for node layout displacement
agentofreality Mar 25, 2026
2c25d6e
fix: replace unwrap() with expect() in validate CLI test
agentofreality Mar 26, 2026
24dff39
feat: add commit-staged skill for project
agentofreality Mar 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/skills/commit-staged/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
name: commit-staged
description: Commit all staged files with an accurate, informative commit message. Use when asked to commit, make a commit, or save changes.
---

1. Run `git diff --cached` to review all staged changes.
2. Analyze the changes to understand what was modified and why.
3. Write a commit message following conventional commit style:
- A concise subject line (≤72 chars) summarizing the change
- A blank line followed by a body explaining what and why
- Include the Co-authored-by trailer
4. Let the user review the commit message and make edits if necessary before finalizing the commit. Never commit without user approval of the message.
4. Commit with `git commit -m "..."`.
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,9 @@ logs/

# Vendored native libraries (downloaded from OCI registry)
vendor/

# UI build artifacts
ui/node_modules/
ui/dist/

.vscode
6 changes: 0 additions & 6 deletions .vscode/extensions.json

This file was deleted.

19 changes: 0 additions & 19 deletions .vscode/launch.json

This file was deleted.

12 changes: 0 additions & 12 deletions .vscode/mcp.json

This file was deleted.

5 changes: 0 additions & 5 deletions .vscode/settings.json

This file was deleted.

16 changes: 0 additions & 16 deletions .vscode/tasks.json

This file was deleted.

17 changes: 16 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,21 @@ This is the Drasi Server repository - a standalone server wrapper around DrasiLi
- Run server: `cargo run` or `cargo run -- --config config/server.yaml`
- Run with custom port: `cargo run -- --port 8080`
- Run with plugin verification: `cargo run -- --verify-plugins --config config/server.yaml`
- Run with UI disabled: `cargo run -- --disable-ui`
- Run with UI enabled (override config): `cargo run -- --enable-ui`
- Validate config (structure only): `cargo run -- validate --config config/server.yaml`
- Validate config (with plugins): `cargo run -- validate --config config/server.yaml --plugins-dir ./plugins`
- Check compilation: `cargo check`

### Plugin Loading
Plugins (sources, reactions, bootstrap providers) are loaded at runtime as cdylib shared libraries (`.so`/`.dylib`/`.dll`) from a `plugins/` directory next to the binary. Each plugin is self-contained with its own tokio runtime, communicating via a stable C ABI. Plugin building is managed by drasi-core, not this repository.

**Important: `[patch.crates-io]` does NOT affect plugins.** Cargo patches only affect compile-time dependency resolution for the server binary. Plugins are separate shared libraries loaded at runtime — they must be built separately. When developing with local drasi-core changes, always use `make build-local-plugins` to rebuild plugins from local source. Registry-downloaded plugins (`autoInstallPlugins: true`) will NOT be ABI-compatible with local drasi-core changes.

- Build all plugins from local drasi-core (release): `make build-local-plugins`
- Build all plugins from local drasi-core (debug): `make build-local-plugins-debug`
- Build test-only plugins (mock, log, scriptfile): `make build-test-plugins`

### Testing
- Run all tests: `cargo test`
- Run unit tests only: `cargo test --lib`
Expand Down Expand Up @@ -103,6 +113,7 @@ logLevel: "info"
persistConfig: true # Enable persistence (default)
persistIndex: false # Use RocksDB for persistent indexing (default: false, uses in-memory)
verifyPlugins: true # Enable cosign signature verification for downloaded plugins (default: false)
enableUi: true # Enable the web UI at /ui (default: true)

# Optional trusted identities for plugin signature verification
# trustedIdentities:
Expand Down Expand Up @@ -182,6 +193,8 @@ The REST API is exposed under `/api/v1/instances/{instanceId}/...` for multi-ins

### Configuration Persistence

Persistence uses a snapshot-based approach: when saving, `ConfigPersistence::save()` calls `snapshot_configuration()` on each DrasiLib instance via the ComponentGraph. The ComponentGraph is the single source of truth — there are no shadow caches or separate registration steps. Mutations flow through the ComponentGraph, and the persisted YAML is reconstructed from the current graph state at save time.

DrasiServer separates two independent concepts:

1. **Persistence** - Whether API changes are saved to the config file
Expand All @@ -206,7 +219,7 @@ DrasiServer separates two independent concepts:
- This allows dynamic query creation without persistence (useful for programmatic usage)

**Behavior:**
- When persistence enabled: all API mutations (create/delete queries) are automatically saved to the config file using atomic writes (temp file + rename) to prevent corruption
- When persistence enabled: `save()` snapshots component state from the ComponentGraph and writes to YAML using atomic writes (temp file + rename) to prevent corruption
- When persistence disabled: API mutations work but changes are lost on restart
- When read-only: all create/delete operations via API are rejected

Expand Down Expand Up @@ -291,6 +304,8 @@ The server exposes a versioned REST API on port 8080 by default. All API endpoin
### Instance Management

- `GET /api/v1/instances` - List all DrasiLib instances
- `GET /api/v1/instances/{instanceId}/snapshot` - Get configuration snapshot of an instance
- `POST /api/v1/instances/{instanceId}/clone` - Clone components from another instance

### Component Management (Instance-Specific)

Expand Down
Loading
Loading