- Increase description warning threshold from 500 to 1,000 characters
- Change system prompt 10,000 char limit from error to warning
- Remove intermediate 5,000 char warning threshold for system prompts
- Update documentation to reflect soft warning behavior
This provides more flexibility for users while still guiding them
toward better practices.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Change description field limit from 301 to 300 characters
- Verified limits from source code in CreationSummary.tsx
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Document the 301 character limit for description field
- Document the 10,000 character limit for system prompt
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add --session-id flag to CLI for specifying custom session ID
- Add sessionId option to SDK QueryOptions
- Implement UUID validation for session IDs
- Pass session ID from SDK to CLI via --session-id argument
- Add integration tests for session-id functionality
- Update unit tests for ProcessTransport
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Move AbortController creation inside while(true) loop to create a new
instance per round. This prevents listeners from accumulating across
multiple rounds which was causing maxListener warnings.
Key changes:
- Create roundAbortController at the start of each loop iteration
- Track current round's controller with currentRoundAbortController
- External abort signal propagates to current round's controller in real-time
- Cleanup external listener and clear reference in finally block
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Replace hardcoded Colors.* with theme.* in AuthDialog and ApiKeyInput
- Fix selectedIndex reset when going back from API-KEY sub-view to main view
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
Consolidate Escape key behavior to improve UX and prevent conflicts:
- Move Escape handling from useGeminiStream to AppContainer
- Input with content: double-press to clear, then single-press to cancel
- Empty input: single-press immediately cancels ongoing request
- Preserve embeddedShellFocused check to allow shell's own escape handling
- Update tests to use cancelOngoingRequest directly instead of simulating keypress
Fixes inconsistent escape behavior between input clearing and request cancellation.
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Use fixed 60s delay matching DashScope per-minute quota window
- Increase max retries from 3 to 10 to align with Claude Code behavior
- Remove unused isTPMThrottlingError, isGLMRateLimitError, isRateLimitThrottlingError functions
- Simplify getRateLimitRetryInfo to only extract reason, delay is now caller's responsibility
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
- Add Ajv2020 validator to support draft-2020-12 schemas used by playwright-mcp
- Auto-select validator based on $schema field
- Gracefully skip validation when schema compilation fails
- Add comprehensive tests for JSON Schema version support
Reference: gemini-cli implementation pattern
Add a .catch() handler to the promise before advancing timers to prevent
Node.js from reporting an unhandled rejection when maxAttempts is exhausted
during the TPM throttling retry test.
- Changed default value from false to true in settingsSchema.ts
- This aligns the schema with the actual code behavior (?? true fallback)
- Matches documentation and test expectations
- Resolves inconsistency reported in issue #1764Fixes#1764
- Add abort listener cleanup in Query.close() to prevent memory leak
- Add abort listener cleanup in ControlDispatcher.shutdown()
- Remove AbortController recreation in Session.handleInterrupt()
This fixes the MaxListenersExceededWarning that occurred when:
- Creating 11+ Query instances in SDK/non-interactive mode
- Multiple user interrupts (Ctrl+C) in interactive mode
- Intensive control request scenarios
- Move TPM throttling check before shouldRetryOnError to ensure TPM errors
without standard HTTP status codes are still retried
- Add comprehensive unit tests for edge cases:
- TPM error without status property
- Nested TPM error object without top-level status
- Consecutive TPM throttling errors
- Max attempts exhaustion for TPM errors
- Remove redundant error checking logic in isTPMThrottlingError function
- Reuse isStructuredError and isApiError utilities from quotaErrorDetection module
- Clean up duplicate import statements