Commit Graph
132 Commits
Author SHA1 Message Date
Luciano Castillo 27d0afd736 Add crabwalk CLI (#30)
* feat: add crabwalk CLI

- bin/crabwalk: shell wrapper with start/stop/status/update commands
- daemon mode with --daemon flag
- auto-detect gateway token from ~/.clawdbot/clawdbot.json
- show network IPs on startup for remote access
- update skill.md and README with CLI usage

* auto-add ~/.local/bin to PATH during install

* support zsh PATH config
2026-02-01 15:24:33 -05:00
luccast efb1790964 fix: use raw github url for skill.md 2026-02-01 14:37:09 -05:00
luccast e58e37ca87 readme: add OpenClaw agent install method 2026-02-01 14:36:09 -05:00
Luciano Castillo e19a58054d Add install skill for OpenClaw agents (#29)
* feat: add install skill for OpenClaw agents

skill.md provides autonomous install instructions
skill.json provides metadata for programmatic access

* add version check, require user confirm before update
2026-02-01 14:33:26 -05:00
Luciano Castillo b91bfeb4a4 Update README to reflect OpenClaw instead of Moltbot
Signed-off-by: Luciano Castillo <2213102+luccast@users.noreply.github.com>
2026-01-31 11:29:20 -05:00
luccast e0b5ddfec5 fix(ci): use .output dir for build artifact v1.0.7 2026-01-30 20:46:54 -05:00
luccast 154c93131e chore: regenerate lock file, bump to 1.0.7 2026-01-30 20:44:40 -05:00
luccast 50114100a2 infra: update CI to Node 24 for npm 11 lock file compat 2026-01-30 20:41:17 -05:00
Luciano Castillo 2ba3ef6d47 feat(monitor): add follow mode to track new nodes (#23)
* feat(monitor): implement follow mode in ActionGraph for new nodes

- Added a follow mode feature that automatically pans the viewport to new nodes in the ActionGraph.
- Introduced a button to toggle follow mode, enhancing user experience by allowing users to track new nodes easily.
- Updated the ActionGraphInner component to manage viewport changes and node tracking effectively.

* feat(graph-layout): implement caching for spawn Y positions to prevent jitter

- Introduced a caching mechanism for spawn Y positions of child sessions to maintain stability during parent action accumulation.
- Updated the layoutGraph function to utilize cached values, reducing recalculation and improving layout consistency.
- Added cleanup logic to remove entries from the cache for sessions that no longer exist, ensuring efficient memory usage.

* style(ActionGraph): enhance follow mode button appearance

- Updated the styling of the follow mode button in the ActionGraphInner component to include a backdrop blur effect, improving visual feedback for users when the mode is active.
v1.0.6
2026-01-30 16:52:29 -05:00
Malachi bddf8b81a6 infra: use nitro for docker production (#21)
* infra: use nitro for docker production

* small fix

* fix: bufferutil error

* Remove ALLOWED_HOSTS
2026-01-30 08:36:15 -05:00
Luciano Castillo 8db30f1f12 fix(monitor): improve subagent spawn inference and minimap sizing (#22)
* refactor(clawdbot): update spawn inference logic

- Replaced parent session activity tracking with a pending spawns array to record Task tool calls.
- Adjusted the spawn inference window to 10 seconds, ensuring accurate tracking of recent Task calls.
- Enhanced the inferSpawnedBy function to utilize the new pending spawns structure for improved session mapping.
- Removed obsolete parent session activity tracking code for cleaner implementation.

* fix(clawdbot): normalize tool name handling in action tracking

- Updated the action tracking logic to convert tool names to lowercase for consistent comparison, ensuring accurate detection of 'Task' tool calls in both addAction and hydrateFromServer functions.
- Enhanced event parsing to process tool events more effectively, improving overall event handling and session state management.

* refactor(clawdbot): enhance spawn inference with parent session activity tracking

- Introduced a new Map to track recent parent session activity, providing a fallback for spawn inference when Task tool calls are not available.
- Updated the recordPendingSpawn and inferSpawnedBy functions to utilize this new tracking mechanism, improving the accuracy of session mapping.
- Enhanced the addAction and hydrateFromServer functions to incorporate parent session activity tracking, ensuring comprehensive spawn history management.
- Cleared parent session activity during collection resets to maintain data integrity.

* refactor(clawdbot): improve parent session action tracking for spawn inference

- Replaced the previous parent session activity tracking with a new structure to maintain a history of recent actions, allowing for more precise spawn inference.
- Updated the trackParentAction function to log actions with timestamps and manage a maximum history length.
- Modified the inferSpawnedBy function to utilize the new action history for better accuracy in linking subagents to their parent sessions.
- Adjusted the addAction and hydrateFromServer functions to reflect the new tracking mechanism, ensuring comprehensive session mapping.
- Cleared the action history during collection resets to maintain data integrity.

* style(monitor): adjust ActionGraph component dimensions

- Updated the ActionGraphInner component to include width and height styles, enhancing the layout and visual consistency of the graph representation.
2026-01-29 21:22:47 -05:00
Luciano Castillo 3c370e3595 revert: undo subagent filtering changes 2026-01-29 15:52:53 -05:00
Luciano Castillo 8d417e2d18 refactor(graph-layout): update subagent session filtering logic
- Revised the filtering logic for subagent sessions in the layoutGraph function to exclude empty sessions that lack associated actions or execs. This change enhances the accuracy of session representation in the graph layout by ensuring only relevant sessions are displayed.
2026-01-29 15:49:09 -05:00
Luciano Castillo aded6fa1e5 refactor(graph-layout): enhance orphan subagent filtering logic
- Improved the filtering logic for orphan subagents in the layoutGraph function. Subagent sessions are now validated against their parent sessions, ensuring only those with valid parents are included. Non-subagents are displayed if they lack a parent or have a valid one, enhancing the accuracy of session representation in the graph layout.
2026-01-29 15:44:46 -05:00
Luciano Castillo 3c36ba059a refactor(graph-layout): filter orphan subagents from session hierarchy
- Updated the graph layout logic to filter out orphan subagents, ensuring that sessions with a `spawnedBy` reference to non-existent parents are excluded from the layout. This improves the accuracy of session representation and enhances the overall stability of the graph layout.
2026-01-29 15:39:18 -05:00
Luciano Castillo 854329e5fd fix(monitor): streaming event states and stable layout (#20)
* refactor(monitor): unify action node lifecycle in addAction function

- Updated the addAction function to consolidate the handling of action types (start, streaming, complete, error, aborted) into a single node per runId, improving data consistency and reducing redundancy.
- Enhanced the logic to ensure that all states for the same runId share one node ID, streamlining the update process and maintaining accurate session state representation.

* refactor(parser): streamline event handling for lifecycle and assistant streams

- Updated the agentEventToAction function to remove placeholder content for lifecycle events, relying on UI labels for clarity.
- Enhanced parseEventFrame to process assistant stream events, allowing for the inclusion of streaming content while maintaining lifecycle event handling.
- Improved overall event processing logic for better data consistency and clarity in session representation.

* fix(parser): enhance text handling in agentEventToAction and parseEventFrame

- Updated agentEventToAction to handle both 'text' type and string text properties for improved event processing.
- Modified parseEventFrame to accommodate the new structure of assistant stream events, ensuring accurate handling of streaming content.
- This change enhances the robustness of event parsing and improves data consistency across different event types.

* refactor(monitor): update ActionNode component for improved state representation

- Replaced the Play icon with Loader2 for the 'start' state to better reflect the action's progress.
- Adjusted border and background colors to enhance visual distinction for the 'start' state.
- Enabled animation for the 'start' state, improving user feedback during action execution.

* refactor(graph-layout): improve session sorting for stable layout representation

- Updated the sorting logic for rootSessions to use session keys instead of lastActivityAt, ensuring stable node positions during streaming and preventing unintended swaps in the layout.
2026-01-29 15:21:48 -05:00
Luciano Castillo 1fc757c732 fix(monitor): copy final content from complete event in addAction function
- Enhanced the addAction function to copy the final content from the action if present, improving data handling during session updates.
2026-01-29 13:49:01 -05:00
Luciano Castillo e2922a08fa feat(monitor): layout direction toggle + settings cleanup (#19)
* feat(monitor): add CloudDownload option for Gateway sync and remove Historical Mode toggle

- Introduced a new CloudDownload feature for syncing gateway sessions over the last 24 hours.
- Removed the Historical Mode toggle from the SettingsPanel to streamline the interface.

* feat(monitor): implement layout direction toggle in ActionGraph

- Added a state to manage layout direction (horizontal or vertical) in the ActionGraph component.
- Introduced a button to toggle between 'LR' (left-to-right) and 'TB' (top-to-bottom) layouts, enhancing user control over session display.
- Updated layout algorithm to accommodate the new direction state, improving visual organization of sessions and actions.
- Adjusted spacing constants for better alignment in both layout modes.

This update enhances the usability and flexibility of the ActionGraph visualization.

* feat(monitor): enhance session layout algorithm with hierarchical column mapping

- Introduced a new layout algorithm that organizes sessions into columns based on their spawn hierarchy, improving visual clarity.
- Added constants for layout spacing and offsets to better manage session positioning.
- Implemented functions to determine session depth and root index, facilitating a more structured representation of sessions and their relationships.
- Updated item sorting within sessions to ensure proper chronological order of actions and executions.

This update significantly enhances the organization and usability of the session display in the monitor component.

* feat(monitor): add ROOT_START_Y constant for root session positioning

- Introduced ROOT_START_Y constant to define the vertical offset for the first root session in the layout algorithm.
- Updated spawnY logic to position root sessions correctly below the crab, enhancing the visual hierarchy in the session layout.

This change improves the clarity and organization of session displays in the monitor component.
2026-01-29 13:09:38 -05:00
luccast 3c29e63d44 chore: bump version to 1.0.5 v1.0.5 2026-01-28 18:04:22 -05:00
Jamie Taylor 2ce840b957 docs(readme) - added info on host networking for users who have gateway exposed to loopback only (common tailscale setup) and how to pass allowed hosts as env vars in docker/source setups (#16) 2026-01-28 18:02:25 -05:00
luccast 1e52901b81 feat: update version display in SettingsPanel and Home components to use dynamic version from package.json 2026-01-28 18:01:22 -05:00
Luciano Castillo 1c0388c586 feat(monitor): nest subagent sessions, reorganizing feature (#15)
* feat(monitor): enhance session list with subagent grouping and improved filtering

- Introduced SubagentItem component for rendering subagent sessions.
- Grouped subagents under their parent sessions based on the spawnedBy relationship.
- Updated filtering logic to separate parent sessions from subagents.
- Enhanced sorting and display of sessions, including orphan subagents.
- Improved UI for session selection and status indication.

This update improves the organization and usability of the session list in the monitor component.

* fix(monitor): update session display to show recipient instead of agentId

- Changed the displayed identifier in the SessionList component from agentId to recipient for improved clarity in session representation.

* feat(monitor): add node position pinning and reorganize layout functionality

- Introduced functionality to pin node positions upon drag-end, enhancing user experience in the ActionGraph component.
- Added a button to reorganize the layout, clearing pinned positions and reapplying the layout for better visual management.
- Updated the node state handling to incorporate pinned positions during layout updates, ensuring a smoother interaction with the graph.

* fix(monitor): update styling for ExecNode and SessionNode components

- Changed the CSS class for text wrapping in ExecNode to improve readability.
- Modified the border and box shadow logic in SessionNode to enhance visual feedback based on session status, particularly for 'thinking' states.

* feat(monitor): enhance session node representation with thinking state

- Added logic to determine which sessions are in a "thinking" state based on the latest action type in the ActionGraph component.
- Updated SessionNode to accept a new `thinking` property, modifying the visual feedback (border and box shadow) to reflect this state, improving user experience and clarity in session status.

* revert: undo session thinking state and exec/session styling changes

* fix(monitor): update SubagentItem emoji representation

* feat(monitor): implement collapsible subagent groups in SessionList

- Added functionality to collapse and expand subagent groups within the SessionList component.
- Introduced a new state to manage collapsed groups and updated the UI to reflect the expanded/collapsed state with a ChevronDown icon.
- Enhanced user experience by allowing users to easily navigate through subagent sessions.

* style(monitor): update SessionList component styling

- Adjusted padding and alignment for improved layout in the SessionList component.
- Increased ChevronDown icon size for better visibility.
- Enhanced text styling for consistency and readability.

* refactor(monitor): optimize animation handling in SessionList component

- Updated SubagentItem animations to improve performance and visual feedback.
- Replaced AnimatePresence with motion.div for better control over height and opacity transitions during group collapse/expand.
- Simplified initial animation states for a smoother user experience.
2026-01-28 17:56:01 -05:00
Luciano Castillo eabebfd761 support ALLOWED_HOSTS env var, fix Dockerfile missing source files (#12)
- parse ALLOWED_HOSTS into vite server.allowedHosts for LAN/tailscale access
- copy src/, public/, vite.config.ts, tsconfig.json into Docker runtime stage
  (dev server needs these, only dist/ was copied before)
- pass ALLOWED_HOSTS through docker-compose

Ref #10
2026-01-28 12:21:06 -05:00
Luciano Castillo 80c28485f5 feat(monitor): exec events visualization + hierarchical spawn layout (#14)
Merging select features from https://github.com/luccast/crabwalk/pull/11 

* feat(exec-events): bead-1 - add exec protocol and monitor types

* feat(exec-events): bead-2 - parse exec started output completed

* feat(exec-events): bead-3 - add exec collection and aggregation

* feat(exec-events): bead-4 - persist exec events

* feat(exec-events): bead-5 - hydrate exec events after actions

* feat(exec-events): bead-6 - emit exec events in subscription

* feat(exec-events): bead-7 - wire exec events into monitor route

* feat(exec-events): bead-8 - add exec node component

* feat(exec-events): bead-9 - render exec nodes under sessions

* feat(exec-events): bead-10 - final validation and hydrate exec-only data

* fix(parser): remove incorrect sessionKey assignment

* feat(monitor): link subagents to parent sessions via spawnedBy, add timestamps to session nodes

* feat(monitor): add clear completed execs button

- Add clearCompletedExecs() to remove completed/failed execs
- Add getCompletedExecCount() for UI badge count
- Add clearInactiveSessions() for optional inactive session cleanup
- Add "Clear Completed" button in monitor header with badge count
- Button only shows when there are clearable items
- Add keyboard shortcut: Ctrl+K / Cmd+K to clear
- Add vitest test infrastructure with 8 tests covering:
  - Clearing completed execs
  - Clearing failed execs
  - Preserving running execs
  - Counting clearable items
  - Clearing inactive sessions by threshold

* feat(monitor): add copy PID button to ExecNode header

- Copy icon positioned left of status indicator
- Click copies PID to clipboard
- Animated feedback: copy → checkmark for 1.5s
- stopPropagation prevents expand/collapse on click

* feat(monitor): add copy session key button to SessionNode header

- Copy icon positioned left of status indicator
- Click copies full session key to clipboard
- Animated feedback: copy → checkmark for 1.5s
- stopPropagation prevents node selection interference

* feat(ui): horizontal spawn layout for action graph

- Redesigned graph layout algorithm for horizontal spawn positioning
- Sessions arranged in columns (X = spawn depth hierarchy)
- Events within a session flow DOWN vertically (Y = time progression)
- Child sessions appear to the RIGHT at the Y-level where spawned
- Added left/right handles on SessionNode for horizontal spawn edges
- Smoothstep edges connect parent → child sessions horizontally
- Collision avoidance for multiple sessions at same depth
- Orphan nodes (without session) get positioned in separate area
- Compact action nodes (180x80) vs larger session/exec nodes

* fix(ui): improve graph spacing and alignment

- Increase COLUMN_GAP from 300 to 400 for wider horizontal separation
- Increase ROW_GAP from 40 to 80 for more vertical breathing room
- Enlarge NODE_DIMENSIONS for better layout calculations
- Add MIN_SESSION_GAP (120px) for collision avoidance
- Implement adjustSpawnY to shift overlapping sessions down
- Sort sessions by column before positioning (parents first)
- Ensure all nodes in same depth share same X coordinate

* chore: remove non-feature files from contributor PR

Remove planning docs, security audit, vitest config, and revert
package.json/lockfile to original state.

* fix(monitor): add periodic update for session node component

- Introduced useEffect to trigger a state update every 30 seconds
- Simplified relative time calculation for better readability

* fix: Removed the Ctrl+K shortcut. The "clear completed" button in the UI still works — no need for a global keyboard shortcut that conflicts with browser/OS defaults.

* chore: update package dependencies and remove unused packages

- Removed "@types/dagre" and "dagre" from package.json and package-lock.json
- Added "peer": true to several dependencies in package-lock.json for better compatibility

* fix(clawdbot): optimize output chunk truncation logic

The new version iterates forward, accumulating dropped chars from the front until the remaining tail fits within budget. This keeps the maximum number of recent chunks possible.

- Refactored the logic for truncating output chunks to improve performance and readability.
- Changed variable declarations for clarity and adjusted the loop to determine the starting index for slicing the capped array.

* refactor(monitor, graph): introduce nodeData utility for type casting

- Added a utility function `nodeData` to cast domain data to ReactFlow's Node data type for improved type safety.
- Updated the ActionGraph and graph layout components to utilize the new `nodeData` function for data handling.

* fix(monitor): handle clipboard copy errors in ExecNode and SessionNode

- Updated clipboard copy functionality in ExecNode and SessionNode to handle potential errors by adding a catch block to the writeText method.
- Ensured that the user experience remains smooth by maintaining the existing feedback mechanism for copy actions.
2026-01-28 12:16:23 -05:00
Luciano Castillo e690c847fc feat(monitor): infer spawnedBy for subagent sessions (#13)
Client-side workaround for linking subagent sessions to parent sessions
without server support. Tracks recent parent session activity and infers
spawn relationships based on timing (5-second window).

- Add spawnedBy field to SessionInfo and MonitorSession types
- Track parent session activity timestamps
- Infer parent when subagent session first appears
- Preserve spawnedBy once set (immutable)
- Handle inference during hydration
2026-01-28 11:41:13 -05:00
Luciano Castillo c6990f5d86 Merge pull request #8 from yeHHH1g/fix/streaming-content-replace
fix: replace streaming content instead of appending
2026-01-28 09:33:27 -05:00
luccast f5eb110123 docs: add comment about cumulative delta behavior 2026-01-28 09:32:07 -05:00
luccast ad75627e0f Revert "Document behavior of cumulative message content in ChatEvent interface"
This reverts commit 5e53b2a70c.
2026-01-28 09:29:57 -05:00
luccast 5e53b2a70c Document behavior of cumulative message content in ChatEvent interface 2026-01-28 09:29:18 -05:00
Luciano Castillo 78ddc4cea3 Merge pull request #9 from oxngon/add-jq-alternative 2026-01-28 07:40:13 -05:00
django 139f474076 Add jq alternative for gateway token extraction 2026-01-28 01:44:47 +07:00
Ubuntu 9181d11047 fix: replace streaming content instead of appending
Clawdbot gateway sends cumulative text with each delta event
(full message so far), not incremental characters. The previous
append logic caused duplicated/garbled text in chat nodes.
2026-01-27 17:55:28 +00:00
luccast 2155d0cffa Update references from Clawdbot to Moltbot in documentation and UI
- Changed "Clawdbot" to "Moltbot (Clawdbot)" in CLAUDE.md and README.md for consistency.
- Updated the title in the Home component to reflect the new naming convention.
2026-01-27 10:27:07 -05:00
luccast a132a33c6b 1.0.4 v1.0.4 2026-01-27 09:43:33 -05:00
Luciano Castillo c39ae8a375 Merge pull request #6 from llirik0/fix/docker-image-runtime
fix(docker): make image runnable + document CLAWDBOT_URL
2026-01-27 06:46:25 -05:00
Kirill 6811bf7c60 fix(docker): make image runnable + document CLAWDBOT_URL 2026-01-26 23:50:17 -08:00
luccast 271d0c47b2 1.0.3 v1.0.3 2026-01-26 23:08:08 -05:00
Luciano Castillo e403f2788a Merge pull request #4 from luccast/luccast/persistent-background-service
Add persistent background service to monitor
2026-01-26 23:03:13 -05:00
luccast aae5df728c Fix duplicate messages on hydration
Use addAction() during hydration to apply aggregation logic
2026-01-26 22:53:52 -05:00
luccast 6101bd59dd Refactor SettingsPanel to use external open state management
- Removed internal state management for the SettingsPanel component.
- Added props for open state and onOpenChange callback to manage visibility from the parent component.
- Updated MonitorPage to handle the settings panel state and trigger its visibility.
2026-01-26 22:31:25 -05:00
Luciano Castillo e848d6c25f Merge pull request #3 from luccast/luccast-patch-2
Update Buy Me a Coffee username in FUNDING.yml
2026-01-26 21:06:49 -05:00
Luciano Castillo a22ce9ab41 Update Buy Me a Coffee username in FUNDING.yml
Signed-off-by: Luciano Castillo <2213102+luccast@users.noreply.github.com>
2026-01-26 21:06:34 -05:00
luccast 6ccd394838 Add persistence feature to monitor
- Introduced a persistence service to enable data retention across sessions.
- Updated SettingsPanel to manage persistence state and actions.
- Implemented hydration from server persistence in collections.
- Enhanced TRPC router with persistence-related queries and mutations.
- Updated monitor page to handle persistence status and actions.
2026-01-26 20:25:12 -05:00
luccast 37a4db51de 1.0.2 v1.0.2 2026-01-26 19:32:46 -05:00
luccast caf185f917 Refactor Clawdbot client initialization to use configurable WebSocket URL
- Updated the Clawdbot client to accept a WebSocket URL from the environment variable `CLAWDBOT_URL`, defaulting to 'ws://127.0.0.1:18789' if not set. This change enhances flexibility for different deployment environments.
2026-01-26 19:28:39 -05:00
luccast c1a6d38c26 Add gateway token config instructions to README 2026-01-26 17:07:03 -05:00
luccast ef1d8d2052 Fix build output path (dist not .output) v1.0.1 2026-01-26 16:56:05 -05:00
luccast ff50cafe34 Add Docker support and GitHub release workflow 2026-01-26 16:51:47 -05:00
luccast ad791b25af Add version 1.0.1 to package.json 2026-01-26 16:45:52 -05:00
Luciano Castillo 11d642f4e7 Merge pull request #2 from luccast/luccast-patch-1
Update copyright name in LICENSE file
2026-01-26 15:15:09 -05:00