166 Commits

Author SHA1 Message Date
kumarabhirup
bf6a0abe48
refactor(api): deduplicate workspace init using shared workspace-seed
Remove ~200 lines of duplicated CRM seed objects, DuckDB seeding, and identity generation from the init route by importing from @repo/cli/workspace-seed.
2026-03-03 15:37:49 -08:00
kumarabhirup
61f0313895
chore(web): add @repo/* tsconfig path alias for cross-package imports
Allows the web app to import shared CLI modules like workspace-seed directly.
2026-03-03 15:37:44 -08:00
kumarabhirup
8eb25cfcb7
chore: update tsconfig and vitest config
Exclude extensions and test from tsconfig; remove extensions from vitest include.
2026-03-03 13:48:10 -08:00
kumarabhirup
365e1650bc
fix(test): resolve lint errors in workspace and init route tests
Remove unused useEnvWorkspace; fix base-to-string in identity content assertion.
2026-03-03 13:48:05 -08:00
kumarabhirup
f6eee0b398
refactor(cli): update workspace-seed with dynamic identity and dench skill
Build identity template with workspace path; add seedDenchSkill for skills/dench.
2026-03-03 13:47:38 -08:00
kumarabhirup
aec4e9d89a
refactor(web): update workspace page and hooks
Use workspace model in page and use-workspace-watcher.
2026-03-03 13:47:18 -08:00
kumarabhirup
3c2138e4bd
feat(web): add workspace-switch component
New workspace-switch component and tests for workspace selection UI.
2026-03-03 13:47:02 -08:00
kumarabhirup
1adb7b926b
refactor(web): update workspace components for workspace model
ProfileSwitcher uses workspaces; create-workspace-dialog, empty-state, sidebar updated.
2026-03-03 13:46:54 -08:00
kumarabhirup
974ba61b48
refactor(api): update workspace tree and virtual-file routes
Use workspace lib for path resolution.
2026-03-03 13:46:49 -08:00
kumarabhirup
6084381346
refactor(api): update workspace delete for workspace model
Use workspace lib helpers instead of profile-based paths.
2026-03-03 13:46:44 -08:00
kumarabhirup
4f0f7af622
refactor(api): update workspace init for workspace model
Use discoverWorkspaces, setUIActiveWorkspace, resolveWorkspaceDir; remove inline spawn logic.
2026-03-03 13:46:39 -08:00
kumarabhirup
9b505e9ae6
refactor(api): update profiles API for workspace model
Use discoverWorkspaces and getActiveWorkspaceName; keep backward-compat response fields.
2026-03-03 13:46:34 -08:00
kumarabhirup
232d6640ba
feat(api): add workspace list and switch API routes
New /api/workspace/list and /api/workspace/switch for workspace discovery and switching.
2026-03-03 13:46:30 -08:00
kumarabhirup
796a2fcb34
refactor(workspace): profile to workspace model in web lib
Replace profile terminology with workspace; pin to .openclaw-ironclaw state dir.
2026-03-03 13:46:25 -08:00
kumarabhirup
ba01abdcd9
docs(web): add testing interaction ledger 2026-03-02 18:36:54 -08:00
kumarabhirup
ba65d0b4e8
test(web): add workspace-profiles tests 2026-03-02 18:36:26 -08:00
kumarabhirup
693811ccb2
test(web): add profile-switcher, object-filter-bar, stream-parser, and subagent-panel message tests 2026-03-02 18:36:19 -08:00
kumarabhirup
a61aedd51d
refactor(web): update workspace page layout and profile integration 2026-03-02 18:35:48 -08:00
kumarabhirup
a7a89a990e
feat(web): add object-view-active-view module for workspace page 2026-03-02 18:35:41 -08:00
kumarabhirup
3ed8872f16
refactor(web): move profile management to workspace-sidebar 2026-03-02 18:35:34 -08:00
kumarabhirup
e7bdd45be1
feat(web): add IDENTITY.md to system file patterns in file-manager-tree 2026-03-02 18:35:27 -08:00
kumarabhirup
440e7063e2
refactor(web): simplify empty-state to remove inline workspace creation 2026-03-02 18:35:20 -08:00
kumarabhirup
f0135da82e
feat(web): add copyConfigAuth option to create-workspace-dialog 2026-03-02 18:35:13 -08:00
kumarabhirup
9542c60f66
feat(web): add workspace delete and profile discovery to profile-switcher 2026-03-02 18:35:03 -08:00
kumarabhirup
af0d34b5db
feat(web): add message queue UI with edit/send/remove to subagent-panel 2026-03-02 18:34:56 -08:00
kumarabhirup
e3fb54880a
feat(web): add subagent status labels to chat-message component 2026-03-02 18:34:49 -08:00
kumarabhirup
7309d649dd
test(web): add workspace file-ops, objects, and tree-browse tests 2026-03-02 18:34:41 -08:00
kumarabhirup
f23b7133cb
feat(web): improve suggest-files and tree route with better error handling 2026-03-02 18:34:34 -08:00
kumarabhirup
f3fffec97f
fix(web): guard system files in file write route and allow aborting waiting-for-subagents runs 2026-03-02 18:34:27 -08:00
kumarabhirup
67812f0de6
feat(web): add workspace delete API route 2026-03-02 18:34:19 -08:00
kumarabhirup
efbeacff54
test(web): update workspace init tests for new profile-based flow 2026-03-02 18:34:12 -08:00
kumarabhirup
3568779912
feat(web): overhaul workspace init with profile creation, onboarding, and port allocation 2026-03-02 18:34:06 -08:00
kumarabhirup
d8e2d455b8
test(web): update profiles API tests for gateway metadata and switch validation 2026-03-02 18:33:59 -08:00
kumarabhirup
d4a2e445ca
feat(web): harden profile switch with validation, existence check, and env override detection 2026-03-02 18:33:52 -08:00
kumarabhirup
6f6b841d92
feat(web): enrich profiles API with gateway metadata 2026-03-02 18:33:44 -08:00
kumarabhirup
910d0521e2
test(web): add subagent-runs tests 2026-03-02 18:33:38 -08:00
kumarabhirup
2723352028
feat(web): extend subagent-runs with status reasoning and media URL support 2026-03-02 18:33:31 -08:00
kumarabhirup
14feec10af
test(web): add active-runs tests with retry and lifecycle coverage 2026-03-02 18:33:24 -08:00
kumarabhirup
0d219413a8
feat(web): enhance active-runs with WS RPC, subscribe retry, and chat event support 2026-03-02 18:33:17 -08:00
kumarabhirup
f6769d3e05
test(web): add comprehensive agent-runner tests 2026-03-02 18:33:09 -08:00
kumarabhirup
7bd6583697
feat(web): add WebSocket gateway client and RPC support to agent-runner 2026-03-02 18:33:01 -08:00
kumarabhirup
ba1a66d222
feat(web): extend workspace lib with profile discovery and state dir resolution 2026-03-02 18:32:53 -08:00
kumarabhirup
b45ac0166a
feat(web): externalize ws/bufferutil in next.config and watch .openclaw-* dirs 2026-03-02 18:32:46 -08:00
kumarabhirup
a04e97a753
chore(web): configure vitest with jsdom env, JSX, and setup file 2026-03-02 18:32:38 -08:00
kumarabhirup
e3c0ca9fec
feat(web): add ws and testing dependencies (jsdom, testing-library) 2026-03-02 18:32:18 -08:00
kumarabhirup
52707f471d
refactor!: IronClaw v2.0 - external OpenClaw runtime
BREAKING CHANGE: Convert repository to IronClaw-only package with strict
external dependency on globally installed `openclaw` runtime.

### Changes

- Remove entire OpenClaw core source from repository (src/agents/*, src/acp/*,
  src/commands/*, and related modules)
- Implement CLI delegation: non-bootstrap commands now delegate to global
  `openclaw` binary via external contract
- Remove local OpenClaw path resolution from web app; always spawn global
  `openclaw` binary instead of local scripts
- Rename package.json scripts: `pnpm openclaw` → `pnpm ironclaw`,
  `openclaw:rpc` → `ironclaw:rpc`
- Update bootstrap flow to verify and install global OpenClaw when missing
- Migrate web workspace/profile logic to align with OpenClaw state paths
- Add migration contract tests for stream-json, session subscribe, and profile
  resolution behaviors
- Update build/release pipeline for IronClaw-only artifacts
- Update documentation for new peer + global installation model

### Architecture

IronClaw is now strictly a frontend/UI/bootstrap layer:
- `npx ironclaw` bootstraps OpenClaw (if missing), runs guided onboarding
- IronClaw UI serves on localhost:3100
- OpenClaw Gateway runs on standard port 18789
- Communication via stable CLI contracts and Gateway WebSocket protocol only

### Migration

Users must have `openclaw` installed globally:
  npm install -g openclaw

Existing IronClaw profiles and sessions remain compatible through gateway
protocol stability.

Refs: bootstrap_dev_testing, ironclaw_frontend_split, strict-external-openclaw
2026-03-01 16:11:40 -08:00
kumarabhirup
9ca4263147
👌 IMPROVE: discord fix 2026-02-24 17:20:34 -05:00
kumarabhirup
00baf45a2f
fix(web): handle array-style date values in object view filters
YAML-parsed date_between/between filters store range values as a
two-element array under `value`, but the filter system expected
separate value/valueTo fields. Add normalizeFilterGroup at the YAML
read boundary and defensive array handling in the evaluator and SQL
builder so both formats work correctly.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 02:08:25 -08:00
kumarabhirup
20ace16d4c
fix(web): prevent subagent sessions from leaking into chat sidebar
- Skip updateIndex for session IDs containing :subagent: so they don't
  appear as top-level "New Chat" entries in the sidebar
- Filter subagent IDs in the sidebar component as a safety net
- Clean up existing leaked entries from index.json

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 01:11:26 -08:00
kumarabhirup
a046cf2349
refactor(web): unify subagent tracking with parent session system
Subagents now use the same ActiveRun infrastructure as parent sessions:
- startSubscribeRun() creates a subscribe-only ActiveRun when sessions_spawn
  tool results are detected, using the same event buffering, persistence,
  and SSE reconnection as parent runs
- Stream/stop/chat routes no longer branch on subagent vs parent; both
  use getActiveRun/subscribeToRun with the session key as map key
- hasRunningSubagentsForParent moved into active-runs.ts to check the
  unified activeRuns map (+ disk registry fallback)
- Deferred finalization on lifecycle/end with 5s safety timeout
- ev.data.text fallback for assistant events without delta field
- 24h cleanup grace for subscribe-only runs (vs 30s for parent)

Reverts the broken childSessionKey registration from 32cfcf14f.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-22 00:35:07 -08:00