Commit graph

109 commits

Author SHA1 Message Date
Ramnique Singh
3ea416ac71 preserve refresh token if not reissued 2026-02-21 22:59:28 +05:30
Ramnique Singh
f5d585ac7e refactor build-oauth-url params 2026-02-21 22:59:16 +05:30
Ramnique Singh
a358ae7051 refactor oauth repo interface 2026-02-21 22:58:38 +05:30
Ramnique Singh
99e219b8a0
Merge pull request #352 from RinZ27/security-fixes-path-traversal-cmd-injection
fix path traversal and CLI command validation
2026-02-21 06:47:21 +05:30
RinZ27
dc42bceb77
security: fix command injection bypass in apps/x 2026-02-20 08:42:29 +07:00
Ramnique Singh
097efb39b1 fix tool-call / text part order in step-message builder 2026-02-18 22:08:59 +05:30
Ramnique Singh
737c3a75b4 send reasoning blocks back to llm 2026-02-18 22:08:59 +05:30
Ramnique Singh
d7b423404c add more debug logs for llm-events 2026-02-18 22:08:59 +05:30
Arjun
7329d0ad0d Add global search across knowledge and chats
Cmd+K / Ctrl+K opens a spotlight-style search dialog that searches
knowledge files (by content and filename) and chat history (by title
and message content). Results are grouped by type with filter toggles
preselected based on the active sidebar tab.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-18 18:08:24 +05:30
Arjun
5e2be4531a fix assistant instruction for output format 2026-02-18 17:43:23 +05:30
tusharmagar
f22087cbc3 fix: update userId in executeAction to a static value and improve error logging
- Changed userId from connectedAccountId to a static value 'rowboat-user'.
- Enhanced error logging to include detailed error information in JSON format.
2026-02-18 13:23:22 +05:30
Ramnique Singh
9d4f25895e oauth: persist client state, simplify IPC, and refactor
connected-accounts UI

This refactor simplifies OAuth storage/IPC and updates the Electron UI
to use the new client-facing contract. OAuth state is now persisted per
provider with tokens, optional clientId, and an error string. A new oauth:getState
IPC returns only client-facing state (connected + error), and the UI renders
error/reconnect flow based on that.

  Core changes
  - Replace OAuth config with providers { tokens, clientId?, error? }
    and add zod-based migration from legacy token maps.
  - Persist Google clientId after successful OAuth and keep error state
    in repo.
  - Surface provider errors from refresh/credential failures in Google +
    Fireflies.
  - Add oauth:getState in IPC, returning client-facing config; remove
    old status wiring in the UI.

  UI changes
  - Switch renderer status checks to oauth:getState and derive connected/error
    from config.
  - Add alert dialog for account issues and update copy to “Connected
    accounts”.
  - Provide “View connected accounts” CTA that opens the Connectors popover.
  - Add shadcn alert-dialog component and Radix dependency.

  Notes
  - Adds @radix-ui/react-alert-dialog and shadcn wrapper.
  - pnpm-lock updated accordingly.
2026-02-17 09:54:34 +05:30
Arjun
3f23191ecd feat: enhance presentation skill with templates, validation, and theming
- Add 35 slide layout types with design guidelines and selection heuristic
- Add theme selection (dark professional, light editorial, bold vibrant)
- Add visual consistency rules for unified color palettes across slides
- Add content planning workflow (hook, argument, evidence, CTA)
- Add post-generation validation (title overflow, bounds, fonts, theme)
- Add HTML template examples for 20 reference slide layouts
- Expand PDF export rules (no external images, no box-shadow)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-16 21:23:07 +05:30
tusharmagar
96e2625c6e Merge branch 'dev' of github.com:rowboatlabs/rowboat into dev 2026-02-16 16:41:09 +05:30
tusharmagar
6b0f31c369 refactor: enhance delete run logic with locking mechanism and update sidebar button visibility 2026-02-16 15:45:58 +05:30
tusharmagar
503693775a feat: add remove chat button and logic 2026-02-16 15:28:20 +05:30
Ramnique Singh
e1d50c62da feat(ui): surface LLM stream errors in chat
Add a stream error event type to the shared schema and wire runtime handling to
convert provider payloads into a concise string format. When a stream error is
seen, emit a Run error event, preserve partial output, and stop the turn to
avoid additional tool execution.

In the renderer, display errors inline as assistant messages with destructive
styling and trigger a toast for immediate visibility. Include error events when
loading run history so prior failures are visible.
2026-02-16 08:34:51 +05:30
Arjun
2bfb148d2f add web search skill
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:07:28 +05:30
Arjun
8ef538b8c8 add exa research search, use category in search card title, update readme
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 14:07:24 +05:30
Ramnique Singh
d1a2446cb3 update ai packages 2026-02-14 12:16:43 +05:30
Arjun
8d759c1315 add brave search
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 12:04:11 +05:30
Arjun
6c9ccc0f95 fixed ollama 2026-02-12 11:40:55 +05:30
Arjun
a05e9468f3 fix: resolve file card paths for ~/.rowboat/ files and restrict filepath blocks to existing files
- Resolve workspace-relative and /tmp paths in shell:openPath and shell:readFileBase64 IPC handlers
- Update assistant instructions to only use filepath blocks for files that already exist

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-10 17:32:14 +05:30
Arjun
950c862e02 Added a new LLMParse tool that sends files directly to the user configured LLM as a multimodal attachment and asks it to return markdown. This complements the existing parseFile tool which extracts text locally using libraries. 2026-02-07 23:58:20 +05:30
Arjun
4151c296bd feat: add parseFile builtin tool for PDF, Excel, CSV, Word extraction
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 16:11:13 +05:30
Arjun
0de9589a7d feat: add interactive file path cards in chat UI
Render filepath code blocks as rich, clickable cards with three variants:
knowledge files (navigate to editor), audio files (inline play/pause),
and system files (open externally). Adds shell:openPath and
shell:readFileBase64 IPC channels, FileCardProvider context, and
Streamdown pre override.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 12:53:43 +05:30
tusharmagar
69c4021ead code clean up 2026-02-06 23:17:32 +05:30
tusharmagar
eefc6a9700 feat: add syncing update for graph building on the UI 2026-02-06 23:17:32 +05:30
Arjun
1cddc705df collab on doc does a readfile everytime 2026-02-05 17:19:22 +05:30
Arjun
53f66c44c0 remove footers as they can collide 2026-02-05 17:12:55 +05:30
Arjun
fc1e1b628e use builtin tools for writing file 2026-02-05 17:08:04 +05:30
Arjun
c447a42d07 feat: add background agents with scheduling support
- Add background task scheduling system with cron-based triggers
- Add background-task-detail component for viewing agent status
- Add agent schedule repo and state management
- Update sidebar to show background agents section
- Remove old workflow-authoring and workflow-run-ops skills
- Add IPC handlers for agent schedule operations

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 16:43:09 +05:30
Ramnique Singh
10f94ce67e feat: simplify LLM config and onboarding 2026-02-04 01:13:02 +05:30
Arjun
948c6e7176 make exa mcp available by default 2026-02-03 23:29:21 +05:30
Ramnique Singh
26c3e495d1 Revert "dont download calendar attachments"
This reverts commit 4a47006aa9.
2026-02-03 23:14:29 +05:30
Ramnique Singh
3cfbfa7c34 Reapply "ask for google client id"
This reverts commit efa91f8627.
2026-02-03 23:01:23 +05:30
Ramnique Singh
fbdf9cd834 Revert "feat: move gmail sync to composio OAuth and remove calendar sync"
This reverts commit d12150f1bf.
2026-02-03 22:54:33 +05:30
Ramnique Singh
9747c55d0e Revert "feat: integrate Supabase OAuth with OIDC discovery for authentication"
This reverts commit bbe82c124d.
2026-02-03 22:18:44 +05:30
Arjun
d7b84f87d0 feat: voice notes with instant transcription and knowledge graph integration
- Voice memos now create notes immediately in knowledge/Voice Memos/<date>/
- Transcription shows directly in the note (Recording... → Transcribing... → transcript)
- Graph builder processes voice memos from knowledge directory
- Note creation agents now use workspace tools (writeFile, edit, grep, glob) instead of executeCommand
- Removes executeCommand dependency - no more permission prompts blocking knowledge updates

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 15:49:53 +05:30
Arjun
3e2ed4cbc4 upgrade composio and dependencies 2026-02-03 12:28:24 +05:30
Arjun
d12150f1bf feat: move gmail sync to composio OAuth and remove calendar sync
Migrate gmail_sync to use Composio for OAuth authentication instead of
direct Google OAuth. Add gmail connection UI to onboarding and connectors.
Remove calendar sync functionality.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 12:28:24 +05:30
tusharmagar
aa2a830f23 feat: slack integration with composio
Allow users to ask copilot to use Slack on their behalf via Composio integration.
Adds composio client, OAuth flow, slack skill with tool catalog, and UI for
connecting Slack in onboarding and connectors popover.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 12:28:22 +05:30
Ramnique Singh
bbe82c124d feat: integrate Supabase OAuth with OIDC discovery for authentication
Add rowboat auth flow using Supabase as the OIDC provider. User info is
fetched via the standard OIDC userinfo endpoint (discovered from issuer
metadata) instead of a hard-coded Supabase URL. Includes login screen,
auth state hook, IPC handlers, logout button, and id_token_sub persistence
for userinfo fetches across app restarts.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 07:25:33 +05:30
Arjun
7133dbe1d9 improved presentation skill 2026-01-30 22:57:20 +05:30
Arjun
9cd7d11969 feat: rewrite presentation skill to give agent full code freedom
The skill now treats the existing generator as a minimal reference and
tells the agent it can write and execute its own code, install any npm
packages, generate charts/visualizations, and use whatever libraries it
wants. Adds visual quality guidelines emphasizing color, charts, and
polish over plain text-on-white slides.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:35:31 +05:30
Arjun
e6c6571b07 feat: extract presentation generator into executable code with builtin tool
Move the presentation implementation out of the skill string into real
TypeScript files (types.ts, presentation-generator.tsx) and add a
generatePresentation builtin tool so the agent calls it directly instead
of writing code. Rewrite the skill to guidance-only with content limits,
preference gathering, and JSON examples for each slide type.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 13:30:06 +05:30
Ramnique Singh
a3e681a7c4 feat: add stop execution with hybrid graceful/force abort
Implement a stop execution feature that allows users to abort ongoing LLM
streaming, kill running tool calls, and clear pending permission/human input
requests. Uses a hybrid approach: first click sends graceful SIGTERM, second
click within 2s sends SIGKILL and force-closes MCP clients.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 06:55:18 +05:30
Ramnique Singh
f5cc803340 feat: auto-initialize config files on Electron app startup
Ensure models.json, mcp.json, and security.json config files are created
when the app starts, before the Settings UI can access them.

- Add ensureConfig() method to IModelConfigRepo and IMcpConfigRepo interfaces
- Add async ensureSecurityConfig() function for security config initialization
- Create initConfigs.ts with centralized initialization that calls all config ensure methods
- Call initConfigs() in main.ts before setupIpcHandlers()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 16:17:51 +05:30
Ramnique Singh
4a47006aa9 dont download calendar attachments 2026-01-29 14:12:12 +05:30
Ramnique Singh
7f91e8829c fix scopes 2026-01-28 07:04:58 +05:30