115 Commits

Author SHA1 Message Date
kumarabhirup
b29b2e39a3
fix(web): repair subagent streaming pipeline
- Handle ev.data.text fallback when delta is absent in assistant events
  (both active-runs and subagent-runs)
- Defer subagent finalizeRun until subscribe process closes so buffered
  events in readline are still delivered to SSE subscribers
- Register subagents from sessions_spawn tool results in active-runs so
  hasRunningSubagentsForParent works without opening SubagentPanel first
- Add disk registry fallback in hasRunningSubagentsForParent for cases
  where in-memory parentIndex has no entries
- Fix pre-commit hook: tolerate oxfmt exit 2 when all files are ignored

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 00:06:31 -08:00
kumarabhirup
6594de6186
Merge Ironclaw changes onto upstream Openclaw 2026.2.22
Replays all Ironclaw-specific changes (176 commits) onto the latest
upstream Openclaw release (2026.2.22). Conflicts auto-resolved in
favor of Ironclaw to guarantee zero change loss.

Merge base: cbc3de6c9 (2026-02-16)
Upstream: a37e12eab (upstream/main, 2026.2.22)
Ironclaw: 3009566c9 (origin/main, 2026.2.15-1.9)
Backup: ironclaw-backup-pre-sync

Conflict resolutions:
- 6 GitHub workflow files: deleted (Ironclaw intentionally stripped)
- src/sessions/session-key-utils.test.ts: kept (Ironclaw modified)
- Duplicate imports from merge: deduplicated
- Unused imports from upstream code Ironclaw overrode: removed
- Broken test indentation from merge: fixed

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 18:06:01 -08:00
kumarabhirup
7aadd02313
test: add comprehensive workspace test suite and deploy pre-flight checks
- Profile management: discoverProfiles, getEffectiveProfile precedence,
  setUIActiveProfile, resolveWebChatDir, workspace registry (32 tests)
- Workspace init API: creation, bootstrap seeding, custom paths,
  validation, idempotency (13 tests)
- Profile switch API: GET/POST profiles, validation, default reset (10 tests)
- Chat isolation: profile-scoped chat dirs, session isolation (7 tests)
- LLM context awareness: bootstrap loading, subagent filtering,
  resolveBootstrapContextForRun content isolation (15 unit + 5 live)
- Subagent streaming: registerSubagent, event replay, persistence,
  ensureRegisteredFromDisk, fan-out (24 unit + 5 live)
- deploy.sh: add --skip-tests flag, pnpm test + web:build pre-flight,
  auto git commit/push of version bump after publish
- package.json: add test:workspace and test:workspace:live scripts

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:38:31 -08:00
kumarabhirup
6665bf4a71
refactor: simplify web session management by removing unused functions and adding DELETE and PATCH endpoints
- Removed unused functions related to session index management.
- Added DELETE endpoint to remove a web chat session and its associated file.
- Added PATCH endpoint to update session metadata, including renaming sessions.
- Streamlined file writing for new session creation.
2026-02-21 15:17:10 -08:00
kumarabhirup
d88ed44521
Merge remote-tracking branch 'origin/main' into kumareth/workspaces
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	apps/web/app/components/chat-message.tsx
2026-02-21 15:00:45 -08:00
kumarabhirup
c8ae7acbf4
fix: restore remaining merge regressions (SKILL.md, MIME types, showHidden, symlink, activeProfileHint) 2026-02-21 14:39:55 -08:00
kumarabhirup
92fadd6700
fix: filter non-parent events in main NDJSON handler and fix workspace creation path
Bug 1: Subagent events from gateway broadcasts were processed as parent
events because the sessionKey filter was accidentally removed during the
subagent decoupling refactor. Re-add the filter in wireChildProcess.

Bug 2: Creating workspaces at custom paths failed because:
- mkdir API rejected absolute paths outside workspace root
- Directory picker started at workspace root, not home
- Error responses from mkdir were silently swallowed
Add absolute path support to mkdir, handle errors in picker UI,
start picker at home dir, and normalize init route paths.
2026-02-21 13:45:11 -08:00
kumarabhirup
109b88b93c
web: restore functional features dropped by design merge
Restore backend/logic features that were incorrectly auto-merged from the
design branch:

- Spreadsheet viewer (xlsx, csv, ods, etc.) and xlsx dependency
- HTML iframe viewer with source toggle
- Directory picker modal for workspace creation
- Workspace registry for custom-path workspaces
- Session auto-discovery for orphaned sessions
- Workspace init seeding (CRM objects, DuckDB, templates, bootstrap files)
- Symlink resolution and showHidden in tree/browse routes
- Upload to workspace assets/ instead of hidden ~/.ironclaw/uploads/
- Webpack dev watcher config (next.config.ts)
- router.push for back-button navigation history
2026-02-21 13:10:32 -08:00
kumarabhirup
db4c90b37d
Merge remote-tracking branch 'origin/markrachapoom/design' into kumareth/workspaces
Co-authored-by: Cursor <cursoragent@cursor.com>

# Conflicts:
#	apps/web/app/api/chat/subagent-stream/route.ts
#	apps/web/app/api/workspace/watch/route.ts
#	apps/web/app/components/chat-panel.tsx
#	apps/web/app/components/subagent-panel.tsx
#	apps/web/lib/subagent-runs.ts
#	apps/web/tsconfig.tsbuildinfo
2026-02-21 12:40:07 -08:00
kumarabhirup
536ae59667
web: add interactive messaging UI to subagent panel
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 12:32:59 -08:00
kumarabhirup
7cdcf61639
web: support subagent sessions in chat and stop API routes 2026-02-21 12:32:37 -08:00
kumarabhirup
54d048bfb9
web: merge subagent-stream into unified stream route 2026-02-21 12:32:32 -08:00
kumarabhirup
e267fe7df4
web: export stream parser and add user-message event type 2026-02-21 12:32:27 -08:00
kumarabhirup
7d762b2b75
web: refactor subagent-runs to use direct gateway subscription with interactive messaging 2026-02-21 12:32:21 -08:00
kumarabhirup
3ee2528b75
web: filter silent-reply tokens and remove subagent event routing from parent stream 2026-02-21 12:32:16 -08:00
kumarabhirup
f3ae8127da
web: filter leaked NO_REPLY tokens in chat message display 2026-02-21 12:32:10 -08:00
kumarabhirup
a2845a321e
fix: type JSON.parse results to avoid Object.values unknown entries 2026-02-21 11:11:47 -08:00
kumarabhirup
32baa3f149
chore: update tsconfig.tsbuildinfo 2026-02-21 11:05:09 -08:00
kumarabhirup
9c3c339f48
fix: prefix unused watcherReady with underscore 2026-02-21 11:04:43 -08:00
kumarabhirup
119dcdc775
web: show 'Waiting for subagents...' status in chat panel 2026-02-21 11:04:37 -08:00
kumarabhirup
149dfb7d50
web: add SSE keepalive and waiting-for-subagents header in stream route 2026-02-21 11:04:32 -08:00
kumarabhirup
9d8c384517
web: add waiting-for-subagents state and subscribe continuation in active-runs 2026-02-21 11:04:26 -08:00
kumarabhirup
6650287da2
fix: prefix unused key variable in activateGatewayFallback 2026-02-21 11:04:20 -08:00
kumarabhirup
f83731d3b5
web: replace gateway WS with subscribe-child streams in subagent-runs 2026-02-21 11:04:07 -08:00
kumarabhirup
a6dab967a2
web: add globalSeq to AgentEvent and spawnAgentSubscribeProcess helper 2026-02-21 11:04:01 -08:00
kumarabhirup
0f28afd59b
web: remove gateway-events.ts WebSocket module in favor of subscribe-child streams 2026-02-21 11:03:57 -08:00
kumarabhirup
76f06e0eaf
web: scope subagent storage to workspace profile
Subagent event JSONL files and rehydration metadata were stored in the
shared ~/.openclaw/web-chat/ directory regardless of the active workspace
profile, while parent chat sessions were correctly profile-scoped.

Move subagent event persistence into the profile-scoped web-chat dir
(web-chat-<profile>/subagent-events/) and add a profile-local
subagent-index.json for fast rehydration after page refresh. The shared
gateway registry (~/.openclaw/subagents/runs.json) remains the fallback
source. Existing events in the legacy shared path are still readable as
a migration fallback.
2026-02-20 13:37:46 -08:00
Mark
ca8ac9fda1 Revert "Merge kumar workspaces to design branch"
This reverts commit bf4445115b911fa7831e6a35f7d0114154bb58ec, reversing
changes made to face53f2341417e339c02d5d7d4c412b961f87f6.
2026-02-20 12:45:42 -08:00
Mark
bf4445115b Merge kumar workspaces to design branch 2026-02-20 12:04:56 -08:00
kumarabhirup
d422c5a540
web: wire up HTML/spreadsheet viewers and use push navigation 2026-02-20 00:43:03 -08:00
kumarabhirup
88d10ab800
web: add spreadsheet viewer with xlsx parsing support 2026-02-20 00:42:58 -08:00
kumarabhirup
436a07c3c8
web: add HTML viewer with rendered preview and code modes 2026-02-20 00:42:49 -08:00
kumarabhirup
8a0520d7bd
web: add symlink support and hidden-files toggle across workspace 2026-02-20 00:42:38 -08:00
kumarabhirup
d86c4fb5b5
web: restrict Next.js dev watcher to prevent EMFILE exhaustion 2026-02-20 00:42:31 -08:00
kumarabhirup
b4502d7bc6
fix: prefix unused watcherReady with underscore 2026-02-20 00:42:22 -08:00
kumarabhirup
d2015fd9d5
web: refactor file watcher to singleton with polling mode 2026-02-20 00:41:48 -08:00
Mark
face53f234 Attachment previews in chat panel, input, and queue. 2026-02-20 00:02:18 -08:00
Mark
6c6289eb2e Collapsible sidebar 2026-02-19 23:15:39 -08:00
Mark
5da7d46a49 Rename chat title 2026-02-19 22:54:23 -08:00
Mark
f960ed3030 Fix file link and add lookLikeFileLink detector and click to preview 2026-02-19 22:50:34 -08:00
kumarabhirup
ca5e27144e
chore: update TypeScript build information for improved type definitions and module resolution 2026-02-19 22:00:40 -08:00
Mark
fcbec6c4d6 Queue items (edit, send now, delete) 2026-02-19 21:58:10 -08:00
kumarabhirup
09f2d82c50
fix: ProfileSwitcher re-fetches profiles after workspace creation so new workspace shows as active 2026-02-19 21:56:37 -08:00
kumarabhirup
ec561894cb
web: activate gateway subscription for rehydrated subagent streams 2026-02-19 21:52:15 -08:00
kumarabhirup
a0cc5834f2
web: persist subagent events to disk and support rehydration after refresh 2026-02-19 21:52:10 -08:00
kumarabhirup
f5c6fa186f
web: auto-create index entries for unindexed sessions in active-runs 2026-02-19 21:52:01 -08:00
kumarabhirup
19f327a48c
web: auto-discover orphaned session files in web-sessions index 2026-02-19 21:51:55 -08:00
kumarabhirup
8271c1ec12
web: add workspace registry for custom profile workspace paths 2026-02-19 21:51:49 -08:00
kumarabhirup
d43d226ee8
workspace: seed all bootstrap files + DuckDB on create, add directory picker 2026-02-19 21:38:36 -08:00
Mark
a0ba55feec Integrate file preview on the side 2026-02-19 17:46:54 -08:00