Commit graph

171 commits

Author SHA1 Message Date
tusharmagar
7f8d2e64af Refactor Composio integration handling and improve UI components
- Updated composio-handler.ts to invalidate the copilot instructions cache upon connection and disconnection.
- Removed unused functions related to tool management in composio-handler.ts.
- Enhanced IPC handlers in ipc.ts to streamline Composio connection processes.
- Introduced ComposioConnectCard in the renderer to display connection status and handle events.
- Refactored tool rendering in App.tsx and chat-sidebar.tsx to utilize new tabbed content for parameters and results.
- Improved Composio tools prompt generation in instructions.ts to clarify integration usage and discovery flow.
- Cleaned up unused code and improved overall structure for better maintainability.
2026-04-02 15:35:31 +05:30
tusharmagar
abf6901cc9 Merge remote-tracking branch 'origin/dev' into feature/composio-tools-library 2026-04-02 09:44:50 +05:30
Arjun
1dd622449e ensure agent-slack is available at startup 2026-04-01 23:00:43 +05:30
arkml
79be8fbf42
Email script2 (#462)
* script to run note agents separately

* improvements to tags and tagging

* add concurrency to labeling

* fix labeling precision

* skip spam

* higher precision

* split scheduling into meeting and noise

* remove duplicate default tags

* added last update time

* filter candidates

* only programattic skip and last update time

* remove candidates from notes
2026-04-01 22:37:41 +05:30
tusharmagar
ecfe07eb6f Improve error handling in Composio API calls
- Enhanced error reporting by extracting human-readable messages from the JSON response body when the API call fails.
- Added logic to parse the response and include specific error details in the thrown error message, improving debugging and user feedback.
2026-04-01 15:20:49 +05:30
tusharmagar
8ea1500ab9 Enhance Composio OAuth flow management and improve tool handling
- Updated the activeFlows management to prevent concurrent OAuth flows for the same toolkit by using toolkitSlug as the key.
- Implemented cleanup logic for existing flows, ensuring proper resource management by aborting and closing servers as needed.
- Introduced a timeout mechanism for abandoned flows, enhancing reliability.
- Refactored the Composio tools repository to use an in-memory cache for improved performance and added methods for persisting changes to disk.
- Updated the detailed tools listing to use a consistent API call structure and improved input parameter handling.
- Made connectionData in the response optional for better flexibility in handling connected accounts.
2026-04-01 13:56:36 +05:30
arkml
7a425acfdf
Inline2 (#460)
* added read commands to allowlist

* fix calendar sync

* minor fixes to instructions

* more useful daily
2026-04-01 10:37:54 +05:30
arkml
3f81b771b2
Notes org (#458)
* show count in notes

* bases view for everythign other than notes

* added folder column config

* removed welcome note and reordered
2026-03-31 17:13:52 +05:30
tusharmagar
013f6bdf17 Merge remote-tracking branch 'origin/dev' into feature/composio-tools-library 2026-03-31 17:03:40 +05:30
tusharmagar
dc2c6b0315 Add tool search functionality to settings dialog
Implemented a debounced search feature for tools within the toolkit, allowing users to filter tools based on a search query. Added state management for search results and loading status. Updated the UI to accommodate the search input and results display. Additionally, modified the API call to use 'query' instead of 'search' for consistency.
2026-03-31 12:02:59 +05:30
arkml
86cc2aaf73
Meeting notes2 (#454)
Improve meeting transcription: screen recording permissions, collapsible transcript block
2026-03-30 22:31:49 +05:30
tusharmagar
eb6d50c7bd Enhance error handling in Composio tool execution. Added try-catch block to log errors and return a structured error response when executing tools fails. 2026-03-30 02:00:10 +05:30
arkml
30e1785fe2
Chrome extension (#453)
* added chrome extension
* prepare chrome extension for web store submission
* retention 7 days
* gate chrome service with a flag
2026-03-28 00:41:46 +05:30
arkml
07d34471f5
Remove brave (#452)
* remove brave search

* remove constraint on single search
2026-03-27 23:58:23 +05:30
Arjun
eb34873c32 fix voice output 2026-03-27 22:41:33 +05:30
tusharmagar
9e6683984c Merge origin/dev into feature/composio-tools-library
Integrate 58 commits from dev including:
- Composio gateway proxy (routes through Rowboat API when signed in)
- Gmail/Calendar sync triggers on OAuth callback
- Account, Connected Accounts, Note Tagging settings tabs
- Rowboat model gateway support
- app-navigation and save-to-memory builtin tools
- Voice mode, billing, inline tasks, agent notes

Resolved conflicts by keeping both sides:
- types.ts: z.string().optional() (resilient + optional)
- client.ts: updated listToolkitToolsDetailed to use new auth pattern
- builtin-tools.ts: kept composio dynamic tool registration imports
- instructions.ts: kept both new tools and composio tools prompt
- composio-handler.ts: merged all imports from both sides
- ipc.ts: kept tools library + useComposioForGoogle handlers
- settings-dialog.tsx: kept all new tabs (account, connected-accounts,
  note-tagging) alongside tools library tab

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-27 22:17:06 +05:30
Arjun
a4febb09c0 change default kg model 2026-03-25 16:24:10 +05:30
Arjun
2d62824030 fix agent notes not populating user email when Gmail connected via Composio
ensureUserEmail() only tried direct Google OAuth, which doesn't work
when Gmail is connected through Composio. Now tries Composio first.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 23:04:49 +05:30
Arjun
333ccb096b inject current date/time and chronological processing context into note creation agent
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 23:04:49 +05:30
Arjun
1686c8f878 configure per-service model defaults for signed-in users
When signed in, default assistant to gpt-5.4, knowledge graph agents to
gpt-5.4-nano, inline task agent to gpt-5.4-mini, and meeting notes to
gpt-5.4. Add meetingNotesModel config field. Fix summarize_meeting to
use gateway provider when signed in.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-24 23:04:49 +05:30
Arjun
db7c843d33 move notes to 15sec 2026-03-24 23:04:49 +05:30
Arjun
e0e4f7165c populate user.json with the email 2026-03-24 15:24:32 +05:30
Ramnique Singh
02c0fd487f use deepgram ws proxy, simplify env vars 2026-03-24 11:50:22 +05:30
arkml
d191c00e4d
Memory2 (#444)
Agent Notes: background memory system that learns from emails, chats, and explicit
  saves

  - Background service (agent_notes.ts) runs periodically, collecting user-sent
  emails, copilot conversation history, and save-to-memory inbox entries
  - Agent (agent_notes_agent.ts) processes all sources with workspace tools, deciding
  what to update: user.md (timestamped facts), preferences.md (general rules),
  style/email.md (writing patterns), and topic-specific files as needed
  - save-to-memory builtin tool lets the copilot proactively note preferences during
  conversations
  - user.md and preferences.md injected into copilot system prompt on every turn;
  other files listed for on-demand access
  - Agent manages timestamp freshness on user.md: refreshes confirmed facts, removes
  stale transient ones
2026-03-23 22:30:02 +05:30
Arjun
c03882f43f cal block initial commit 2026-03-21 15:27:51 +05:30
arkml
c0138af3ab
Ola (#438)
Native meeting transcription that captures mic and system audio, transcribes
  live via Deepgram, and generates AI-powered meeting notes.

  - Toggle button in toolbar to start/stop meeting transcription
  - Dual-stream audio capture: mic (You) + system audio (They) via getDisplayMedia
   loopback
  - Multichannel Deepgram transcription with diarization for speaker
  identification
  - Headphone detection with mic gating when using speakers to prevent echo bleed
  - Live transcript saved to knowledge/Meetings/rowboat/{date}/ as markdown
  - Auto-stop after 2 minutes of silence
  - LLM-generated meeting notes prepended above raw transcript on stop
  - Calendar event matching: pulls nearby events from calendar_sync to identify
  meeting title and participant names
  - First-time permissions setup modal on macOS for Screen Recording
  - Button only visible when Deepgram is available (logged in or API key
  configured)
2026-03-19 22:12:42 +05:30
Ramnique Singh
7966501a79 fix api url 2026-03-19 21:50:46 +05:30
Ramnique Singh
2e8a3580c2 hardcode prod urls 2026-03-19 18:46:54 +05:30
Ramnique Singh
63a1d4952b remove default exa server 2026-03-19 18:46:08 +05:30
arkml
affc9956f4
Livenote2 (#440)
* tasks execute immediately

* response formatting

* remove at rowbot block for single tasks

* show last ran time stamp
2026-03-19 01:34:10 +05:30
arkml
91030a5fca
Blocks (#439)
Added blocks to notes and updated assistant skill with this.

Image blocks — images with alt text and captions
Embed blocks — inline YouTube videos, Figma designs, or link cards
Chart blocks — line, bar, and pie charts from inline data or JSON files
Table blocks — styled data tables with named columns
2026-03-18 23:33:12 +05:30
tusharmagar
47ecc31988 Refactor ConnectorsPopover and SettingsDialog components to enhance account management features. Introduce AccountSettings and ConnectedAccountsSettings components for improved user experience in managing Rowboat account connections. Update billing information structure to include user email and ID. Implement dynamic tab visibility based on connection status in SettingsDialog. 2026-03-18 16:15:02 +05:30
tusharmagar
b066aa2b24 Update COMPOSIO_LOOKBACK_DAYS to 30 in sync_gmail.ts for extended sync period 2026-03-18 10:27:02 +05:30
Tushar
86818e7d21
Onboarding rebased (#426)
* Enhance onboarding modal to support multiple paths (Rowboat and BYOK). v1

* new onboarding flow

* Resolve stash merge conflicts: keep both inline-task and billing features

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Refactor billing information structure and API integration

* onboarding ui refactor

* Update import path for getAccessToken in billing.ts to reflect new directory structure

* Implement Gmail integration with Composio, enhancing onboarding flow to support Gmail connection status and API key management. Update ConnectorsPopover and SettingsDialog components to reflect new functionality, including dynamic tab visibility based on Rowboat connection status.

* use composio for calendar

* Enhance onboarding flow to support Google Calendar integration with Composio. Add state management for Google Calendar connection status, loading states, and connection handling. Update UI components to reflect Google Calendar connectivity in onboarding steps.

* Integrate Google Calendar sync functionality with Composio, enhancing the connection handling in composio-handler and oauth-handler. Update onboarding modal and connectors-popover to manage connection states and provide user feedback during the sync process. Implement Composio-based event syncing in sync_calendar.ts.

* Maximize window on ready-to-show event in main.ts to improve user experience by preventing blank screen on launch.

* Enhance WelcomeStep component in onboarding flow with new feature highlights and animations. Introduce icons for memory, connectivity, and privacy features. Update logo display with ambient glow effect and improve user feedback during connection states.

* Refactor voice availability check in App component to trigger on OAuth state changes. Update SidebarContentPanel to enhance billing display with improved styling and clearer upgrade call-to-action.

* Enhance OAuth event handling by notifying the renderer on provider disconnection. Update ConnectorsPopover to listen for OAuth state changes, and refine WelcomeStep component by removing feature highlights and adjusting layout for improved user experience.

* Implement Rowboat model settings in the settings dialog, including loading and saving model configurations based on Rowboat connection status. Enhance chat input component to manage Rowboat connection state and update model loading logic accordingly.

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Arjun <6592213+arkml@users.noreply.github.com>
2026-03-17 12:04:57 +05:30
Arjun
65e2b3b868 add Notes folder and move sync state out of knowledge
- Add knowledge/Notes/ folder created on startup, pinned to top of sidebar
- New Note/New Folder default to creating inside Notes/
- Move Granola sync state to ~/.rowboat/granola_sync_state.json
- Move Fireflies sync state to ~/.rowboat/fireflies_sync_state.json

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:26:28 +05:30
Arjun
09395a72c7 fix voice memos and move metadata to properties
- Fix duplicate tab bug via onNoteCreatedRef (stale closure in recorder.onstop)
- Fix transcription not showing: read file from disk and update editor directly
- Move voice memo type/recorded/path from body to YAML frontmatter (Properties)
- Update note creation agent to detect voice memos via frontmatter

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:26:28 +05:30
Arjun
7e15c1231d meetings and knowledge improvements
- Limit Granola sync to 30-day lookback period
- Move Granola and Fireflies sync dirs under knowledge/Meetings/
- Note creation agent links to source meeting notes in activity entries
- Note creation agent links to Gmail threads via web URL
- Add Meetings to note type definitions with recursive tag scanning
- Tagging agent extracts meeting metadata (date, source, attendees, title, topic)
- Clicking Knowledge with no tab open auto-opens Bases view

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 23:26:28 +05:30
Ramnique Singh
16b8975b00 auto-enable composio gmail sync when signed in 2026-03-16 11:01:22 +05:30
Arjun
dd361cb6bf fix composio API integration: URL construction, schema validation, and executeAction calls
- Fix URL construction in composioApiCall to preserve base path (/api/v3)
- Make ZToolkit and ZTool schema fields optional to match actual API responses
- Fix error detection to not trigger on successful responses with null error
- Fix executeAction calls in sync_gmail to use correct request object shape
- Use .successful instead of .success to match ZExecuteActionResponse schema

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 09:57:55 +05:30
Arjun
17bb625ab9 use composio for google optionally 2026-03-16 09:40:31 +05:30
Ramnique Singh
d2bb11f104 support managed composio 2026-03-15 23:39:48 +05:30
Ramnique Singh
1400e94c68 use managed exa+brave search when signed in 2026-03-13 23:10:20 +05:30
Ramnique Singh
7097cb064a use managed deepgram when signed in 2026-03-13 22:26:28 +05:30
Arjun
604d521ac2 added search button to chat input 2026-03-13 13:58:30 +05:30
Ramnique Singh
c845a7c40d support for managed tts 2026-03-13 12:42:25 +05:30
Arjun
779ad51f9f faster voice responses 2026-03-13 11:32:10 +05:30
Arjun
47d5118448 voice mode with TTS input/output 2026-03-13 10:39:05 +05:30
Arjun
d150294af1 app navigation 2026-03-13 10:39:05 +05:30
Ramnique Singh
8f1adfb6a5 fix api urls 2026-03-12 23:29:43 +05:30
Ramnique Singh
7311501343 use rowboat model gateway when logged in 2026-03-12 23:29:42 +05:30