Conversation
Add `nylas chat` command that launches a web-based AI chat interface for interacting with email, calendar, and contacts through locally installed AI agents (Claude, Codex, Ollama). Key features: - Auto-detects installed AI agents via PATH lookup - Text-based tool protocol (TOOL_CALL/TOOL_RESULT) for agent-API bridge - SSE streaming for real-time chat responses - Persistent conversation history as JSON files on disk - Context window management with automatic compaction - Agent switching via dropdown without restart - Modern dark/light theme web UI
…ehensive tests - Add slash commands (/help, /new, /clear, /model, /email, /calendar, /contacts, /status) with tab completion and server-side execution - Add approval gating for destructive operations (send_email, create_event) with channel-based synchronization and SSE approval_required/resolved events - Add streaming responses with token-by-token SSE delivery and stream-then-parse strategy for tool call detection - Split chat.css into chat.css + components.css for maintainability - Add comprehensive Go unit tests for executor (email/calendar/contacts/ folders tool dispatch), conversation handlers, prompt builder, and session - Add Playwright E2E tests (28 tests) covering smoke, UI interactions, slash commands, and API health endpoints - Fix welcome element preservation when clearing/resetting messages - Fix async command execution to properly await sidebar operations
When --limit is set above 200, automatically switch to cursor-based pagination instead of returning an API error. This applies to email list, calendar events list, and contacts list commands. Also extracts MaxAPILimit constant to common/pagination.go, replaces custom contains() helper with slices.Contains, optimizes page size to use the full API limit (200) instead of hardcoded 50, and refactors contacts list to use common.WithClient.
- Replace custom contains()/findSubstring() with strings.Contains() - Replace getScopesClient()/getProvidersClient() with common.GetNylasClient() - Add withSlackClient()/getSlackClientOrError() helpers to reduce slack boilerplate - Add common.IsStructuredOutput() to replace repeated 3-line format check pattern - Fix folder list UNREAD column alignment when ANSI colors are applied
- Replace local truncate/truncateString with common.Truncate() (audit, slack, integration tests) - Replace local printJSON with common.PrintJSON() (timezone package, 5 files) - Widen IsJSON(cmd) to IsStructuredOutput(cmd) so --format yaml and --quiet use the structured output path instead of falling through to table (15 files) - Fix buggy truncate in email_gpg_test.go that produced maxLen+3 chars
The create command rejected '@' and '*' characters, preventing full email addresses and wildcard patterns. Also, created inboxes were not saved to the local grant store, so they didn't appear in `auth list`.
qasim-nylas
previously approved these changes
Feb 13, 2026
When no agents are installed (e.g., CI runners), DetectAgents returned nil which caused TestDetectAgents_Structure to fail with NotNil assert.
qasim-nylas
approved these changes
Feb 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.