-
[NA] [BE] Add sonnet 4.5 to Opik playground and rules (#3469)
发布于
2025-09-30 10:39:00 +00:00 - [OPIK-2095] [BE] Refactor Redis stream listeners to extend BaseRedisSubscriber
- Refactored OnlineScoringBaseScorer to extend BaseRedisSubscriber instead of duplicating Redis stream functionality
- Created OnlineScoringStreamConfigurationAdapter to bridge OnlineScoringConfig with StreamConfiguration interface
- Added missing stream configurations in test config for trace thread scorers
- Eliminated code duplication while preserving all existing functionality
- All concrete scorer implementations now inherit common Redis stream handling logic
- OPIK-2095: Add reactive webhook subscriber with retry logic
- Add WebhookSubscriber for processing webhook events from Redis streams
- Add WebhookHttpClient with configurable retry mechanism using exponential backoff
- Add WebhookPublisher for publishing events to Redis streams
- Convert WebhookEventTypes from constants to enum with JSON serialization
- Add WebhookConfig with comprehensive configuration options
- Add WebhookEvent DTO with generic payload support
- Add comprehensive unit tests for WebhookSubscriber
- Configure default webhook settings in config.yml and config-test.yml
- Implement conditional retry logic to respect max retry limits
- [OPIK-2095] [BE] Refactor Redis stream listeners to extend BaseRedisSubscriber
- Refactored OnlineScoringBaseScorer to extend BaseRedisSubscriber instead of duplicating Redis stream functionality
- Created OnlineScoringStreamConfigurationAdapter to bridge OnlineScoringConfig with StreamConfiguration interface
- Added missing stream configurations in test config for trace thread scorers
- Eliminated code duplication while preserving all existing functionality
- All concrete scorer implementations now inherit common Redis stream handling logic
-
[OPIK-2363] [FE] Fix SME Flow annotation issues (#3404)
-
- fix issue with the order of traces in the thread view
-
- fix issue with reason state
-
[NA] [Docs] Move integration to their own tab (#3383)
-
Move integration to their own tab
-
Remove text from new integrations
-
Fix the nav
-
Fix old redirects
-
Fix internal link
-
Updated redirect links
-
Fix more internal links
-
Fix more internal links
-
Fix aisuite redirect
-
Rename and reoder integration folders
-
Restore notebooks as they are still used in the UI
-
Update Readmes
Co-authored-by: Jacques Verre jverre@gmail.com
-
[OPIK-2455] [P SDK] Update SDK documentation to provide more details about
opik_argsfeature (#3390) -
[OPIK-2455] [Docs] Updated 'Log additional data' section of the 'Log traces.' Added 'Configuring the thread_id' section.
-
[OPIK-2455] [P SDK] Add tests for
opik_argspropagation inopenai.chat.completions.createandopenai.responses.createfunctions. -
[OPIK-2455] [P SDK] Add test for
opik_argspropagation ingenerate_contentfor GENAI client -
[OPIK-2455] [Docs] Add examples for passing
thread_idusingopik_argsin OpenAI and GenAI integrations -
Update quickstart guide (#3402)
-
[issue-3406] [FE] LLM as a judge default to use binary scale (#3407)
-
Update llm.ts
-
chore: docs updated
-
Update apps/opik-documentation/documentation/fern/docs/evaluation/metrics/custom_metric.mdx
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
-
Update custom_metric.mdx
-
Fix doc links
-
Doc updates
-
Doc updates
-
Doc updates
-
Apply suggestion from @Copilot
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: Jacques Verré jverre@gmail.com-
[NA] [Docs] Removed 'pytest_code_blocks' (#3408)
-
Removed 'pytest_code_blocks'
-
Fixed linter
-
Fixed linter
-
Fixed linter
-
Fixed linter
-
Fixed formatting
-
Fix broken links
-
[OPIK-2368] [DOCS] Add annotation queues documentation (#3401)
-
[OPIK-2368] [Doc] Add documentation about a feature
-
Optimised images with calibre/image-actions
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
- [NA] [BE] [DOCS] Update model prices file and supported models documentation (#3421)
Co-authored-by: Andres Cruz andresc@comet.com
-
Update TypeScript SDK version to 1.8.56
-
Update base version to 1.8.57
-
[OPIK-2095] [BE] Refactor Redis stream listeners to extend BaseRedisSubscriber (#3403)
- Refactored OnlineScoringBaseScorer to extend BaseRedisSubscriber instead of duplicating Redis stream functionality
- Created OnlineScoringStreamConfigurationAdapter to bridge OnlineScoringConfig with StreamConfiguration interface
- Added missing stream configurations in test config for trace thread scorers
- Eliminated code duplication while preserving all existing functionality
- All concrete scorer implementations now inherit common Redis stream handling logic
-
[NA] [DOCS] Fix Pipecat integration documentation (#3423)
-
[NA] [DOCS] Add Pipecat integration documentation with proper OpenTelemetry structure
-
Revision 2: Add official Pipecat documentation references and ensure accuracy
- Reference official Pipecat OpenTelemetry documentation
- Update trace structure to match actual Pipecat implementation
- Make descriptions more conservative to avoid over-promising
- Point Getting Help section to specific Pipecat OTEL docs
- Optimised images with calibre/image-actions
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
-
[NA] [BE] Fix Python Backend vulnerability - Update Jinja2 (#3424)
-
[OPIK-2515] [FE] Remove Human Annotation feature toggle and related logic (#3425)
-
Enhance NoQueueItemsPage with project link and update props
- Added an optional
annotationQueueprop to NoQueueItemsPage for better context. - Integrated a project link button that directs users to the corresponding project if available.
- Updated the documentation link to point to the correct section for adding content to the queue.
- Adjusted ThreadQueueItemsTab and TraceQueueItemsTab to pass the new
annotationQueueprop.
-
Update default selected columns in ThreadQueueItemsTab and TraceQueueItemsTab to include 'comments'
-
Refactor project link in NoQueueItemsPage to conditionally display based on queue type
- Updated the project link button to differentiate between "Go to traces" and "Go to threads" based on the queue type.
- Maintained the existing functionality while improving user navigation options.
- Refactor InstructionsSection and InstructionsContent components to handle missing instructions gracefully
- Removed conditional rendering for instructions in InstructionsSection to simplify the component.
- Updated InstructionsContent to display a default message when no instructions are provided, enhancing user experience.
- Remove Human Annotation feature toggle and related logic
- Eliminated
TOGGLE_HUMAN_ANNOTATION_ENABLEDfeature flag and associated references across the codebase. - Simplified components and logic by removing conditional checks for the flag.
- Cleaned up code dependencies in both frontend and backend related to the annotation feature.
- Update SMEFlowContext to default user name to "admin" when not logged in
- Modified the logic in SMEFlowProvider to set the current user name to "admin" if no user is logged in.
- This change ensures consistent behavior for feedback scores and comments in deployments without the comet plugin.
-
Revision 7: Fix linting errors by removing unused imports
-
Update TypeScript SDK version to 1.8.57
-
[OPIK-2517] [FE] Add custom metrics documentation link to evaluators section (#3428)
-
Enhance NoQueueItemsPage with project link and update props
- Added an optional
annotationQueueprop to NoQueueItemsPage for better context. - Integrated a project link button that directs users to the corresponding project if available.
- Updated the documentation link to point to the correct section for adding content to the queue.
- Adjusted ThreadQueueItemsTab and TraceQueueItemsTab to pass the new
annotationQueueprop.
- Refactor project link in NoQueueItemsPage to conditionally display based on queue type
- Updated the project link button to differentiate between "Go to traces" and "Go to threads" based on the queue type.
- Maintained the existing functionality while improving user navigation options.
- [OPIK-2515] [FE] Add custom metrics documentation link to evaluators section
Add documentation link to custom metrics page in the AddExperimentDialog evaluators section. The link uses Button component with secondary variant and external link icon, following established UI patterns.
Implements OPIK-2515: remove feature flag
-
Update base version to 1.8.58
-
[OPIK-2516] [P SDK] Check all supported integrations for compatibility with
opik_args(#3427) -
[OPIK-2516] [P SDK] Add test for
opik_argspropagation in aisuite chat completions creation based on OpenAI LLM provider -
[OPIK-2516] [P SDK] Add test for
opik_argspropagation in Anthropic chat completions creation -
[OPIK-2516] [P SDK] Add test for
opik_argspropagation in Bedrockconversefunction integration -
[OPIK-2516] [P SDK] Add test for
opik_argspropagation in GenAIasync_generate_contentfunction integration -
[OPIK-2516] [P SDK] Add tests for
opik_argspropagation in LiteLLMcompletionandacompletionfunctions integration -
[NA] [FE] Boris/na opik assist content revamp (#3429)
-
OpikAssist content change
-
Update docs
-
Fix frontend lint
-
Use new integrations links in READMEs and docs (#3430)
-
Use new integrations links in the UI (#3431)
-
[NA] [SCRIPTS] Speed up e2e Testing for Optimizer with LiteLLM Cache in Actions (#3419)
-
Update opik-optimizer-unit-tests.yaml
-
Update opik-optimizer-e2e-tests.yaml
-
[OPIK-2095] [BE] Address GitHub PR comments - Fix configuration formatting and default values
- Fix missing space in config-test.yml comment (# Default:1s -> # Default: 1s)
- Update WebhookConfig maxRetries default from 4 to 3 for consistency with documentation
- OPIK-2095: Implement webhook event handler logging system
- Create logs table for webhook event tracking with markers-based filtering
- Implement WebhookEventHandlerLogsDAO with dynamic marker filtering using StringTemplate
- Add comprehensive integration tests with WireMock and real database
- Update WebhookHttpClient to use consistent MDC logging keys
- Add validation annotations to WebhookEvent
- Extract hardcoded strings to constants in WebhookHttpClient
- Remove redundant JsonProperty annotations from WebhookEvent
- Update UserLogTableFactory to register webhook logs DAO
- Add webhook-specific constants to UserLog enum
Tests verify end-to-end webhook sending and database logging functionality.
-
[NA][DOCS] Improve custom metrics documentation (#3426)
-
[OPIK-2546] remove multi value feedback score env var (#3442)
-
OPIK-2546 remove
writeToAuthoredenv var -
OPIK-2546 fix wrong table selection in TraceDAO
-
OPIK-2546 disabled tests covering dead code and marked the code deprecated
-
[OPIK-2422] fix multiple empty reasons aggregation (#3443)
-
OPIK-2422 failing test
-
OPIK-2422 failing test green
-
OPIK-2422 refactor
-
OPIK-2422 improve test
-
OPIK-2422 add coverage for spans
-
OPIK-2422 add coverage for threads
-
OPIK-2422 apply to all other queries
-
OPIK-2422 escape '<' character to not break template
-
OPIK-2422 code style
-
[NA] [BE] [DOCS] Update model prices file and supported models documentation (#3450)
Co-authored-by: Andres Cruz andresc@comet.com
- [NA] [SDK] [DOCS] Update automatically OpenAPI spec and Fern code (#3449)
Co-authored-by: Andres Cruz andresc@comet.com
- Bump org.redisson:redisson from 3.51.0 to 3.52.0 in /apps/opik-backend (#3452)
Bumps org.redisson:redisson from 3.51.0 to 3.52.0.
updated-dependencies:
- dependency-name: org.redisson:redisson
dependency-version: 3.52.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andres Cruz andresc@comet.com- Bump com.diffplug.spotless:spotless-maven-plugin in /apps/opik-backend (#3451)
Bumps com.diffplug.spotless:spotless-maven-plugin from 2.46.0 to 3.0.0.
updated-dependencies:
- dependency-name: com.diffplug.spotless:spotless-maven-plugin
dependency-version: 3.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Thiago dos Santos Hora thiagoh@comet.com- Bump dev.langchain4j:langchain4j-http-client-jdk in /apps/opik-backend (#3453)
Bumps dev.langchain4j:langchain4j-http-client-jdk from 1.5.0 to 1.6.0.
updated-dependencies:
- dependency-name: dev.langchain4j:langchain4j-http-client-jdk
dependency-version: 1.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andres Cruz andresc@comet.com- Bump dev.langchain4j:langchain4j-bom in /apps/opik-backend (#3454)
Bumps dev.langchain4j:langchain4j-bom from 1.5.0 to 1.6.0.
updated-dependencies:
- dependency-name: dev.langchain4j:langchain4j-bom
dependency-version: 1.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andres Cruz andresc@comet.com-
[NA] [BE] Optimize demo data generator thread closing with batch API (#3434)
-
NA: Optimize demo data generator thread closing with batch API
- Replace concurrent ThreadPoolExecutor approach with single batch API call
- Use close_trace_thread with thread_ids list instead of individual calls
- Simplify code by removing complex retry logic and concurrent processing
- Update opik dependency from 1.8.33 to 1.8.57 for batch API support
- Update apps/opik-python-backend/src/opik_backend/demo_data_generator.py
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
-
[OPIK-2086] [BE] Implement alert creation POST endpoint (#3400)
-
[OPIK-2425] [FE]: redirect em&mpm only users to em; (#3310)
-
OPIK-2425: redirect em&mpm only users to em;
-
OPIK-2425: fight concurrency;
-
OPIK-2425: show the preloader page while an organization is loading;
-
OPIK-2425: handle comments;
-
eslint issues;
Co-authored-by: aadereiko aliaksandr@comet.com
-
[OPIK-2095] [BE] Implement webhook listener for Redis stream events (#3433)
-
[OPIK-2095] [BE] Refactor Redis stream listeners to extend BaseRedisSubscriber
- Refactored OnlineScoringBaseScorer to extend BaseRedisSubscriber instead of duplicating Redis stream functionality
- Created OnlineScoringStreamConfigurationAdapter to bridge OnlineScoringConfig with StreamConfiguration interface
- Added missing stream configurations in test config for trace thread scorers
- Eliminated code duplication while preserving all existing functionality
- All concrete scorer implementations now inherit common Redis stream handling logic
- OPIK-2095: Add reactive webhook subscriber with retry logic
- Add WebhookSubscriber for processing webhook events from Redis streams
- Add WebhookHttpClient with configurable retry mechanism using exponential backoff
- Add WebhookPublisher for publishing events to Redis streams
- Convert WebhookEventTypes from constants to enum with JSON serialization
- Add WebhookConfig with comprehensive configuration options
- Add WebhookEvent DTO with generic payload support
- Add comprehensive unit tests for WebhookSubscriber
- Configure default webhook settings in config.yml and config-test.yml
- Implement conditional retry logic to respect max retry limits
- [OPIK-2095] [BE] Refactor Redis stream listeners to extend BaseRedisSubscriber
- Refactored OnlineScoringBaseScorer to extend BaseRedisSubscriber instead of duplicating Redis stream functionality
- Created OnlineScoringStreamConfigurationAdapter to bridge OnlineScoringConfig with StreamConfiguration interface
- Added missing stream configurations in test config for trace thread scorers
- Eliminated code duplication while preserving all existing functionality
- All concrete scorer implementations now inherit common Redis stream handling logic
- [OPIK-2095] [BE] Address GitHub PR comments - Fix configuration formatting and default values
- Fix missing space in config-test.yml comment (# Default:1s -> # Default: 1s)
- Update WebhookConfig maxRetries default from 4 to 3 for consistency with documentation
-
[OPIK-2508] [P SDK] Improve authorization error handling and displaying to the user when working with LLM judge metrics (#3405)
-
[OPIK-2508] [P SDK] Introduce context-managed provider response handling in base_model and update related models
- Added
get_provider_responseandaget_provider_responsecontext managers inbase_modelfor response handling. - Updated
LiteLLMChatModelandLangchainChatModelto use new context managers. - Introduced
check_model_output_stringutility for output validation. - Enhanced exception handling with a new
BaseLLMErrorclass.
-
[OPIK-2508] [P SDK] Fixed typos in docstrings
-
[OPIK-2508] [P SDK] Removed obsolete
super().__init__(message)call. -
[OPIK-2320] [SDK] fix deduplication logic, sync with BE before (#3388)
-
[OPIK-2320] fix deduplication logic, sync with BE before
-
Fix PR comments
-
Match BE typo: steamLimit
Co-authored-by: Yaroslav Boiko yaroslavboiko@ip-192-168-1-15.ec2.internal
-
reduce resolution of no data screens (#3456)
-
[OPIK-2437] [FE] Clean up PostHog configuration by removing explicit capture settings (#3458)
Co-authored-by: Yaroslav Boiko yaroslavboiko@ip-192-168-1-15.ec2.internal
-
[OPIK-2088] [BE] Get Alert by Id endpoint (#3422)
-
[issue-2099] [BE] Add experiment update API with status field (#3263)
-
[issue-2099] [BE] Implement experiment update API with status field
-
[issue-2099] [BE] Add comprehensive unit tests for experiment update functionality
- Create ExperimentServiceTest with comprehensive test coverage for update method
- Test all scenarios: success cases, individual field updates, empty updates, error conditions
- Add updateExperiment method to ExperimentResourceClient for integration testing
- Add UpdateExperiments nested test class to ExperimentsResourceTest (integration tests)
- All unit tests passing, validating core business logic functionality
- Tests cover edge cases: non-existent experiments, DAO failures, validation scenarios
- Revision 2: Fix enum binding and add 404 check for experiment updates
- Fix ExperimentDAO.update to use .getValue() instead of .toString() for ExperimentType and ExperimentStatus enums
- Add existence check in ExperimentService.update to return 404 when updating non-existent experiments
- Ensure proper database values are stored and correct HTTP status codes are returned
- Revision 3: Fix remaining PR comments - ClickHouse performance and test assertion
- Added status field to Experiment entity with JsonView annotations
- Replaced ClickHouse UPDATE with read-merge-INSERT pattern for better performance
- Updated ExperimentDAO.mapToDto to include status field mapping
- Added status field to INSERT statement and parameter bindings
- Added missing test assertion for status field in ExperimentsResourceTest
- Fixed all compilation errors and type issues
-
Fix timestamp binding issue in experiment update - use epoch time for ClickHouse compatibility
-
Fix parameter binding issues in experiment update - use correct SQL statement and parameter types
-
Fix experiment update test by implementing proper ClickHouse update pattern
- Refactor ExperimentDAO to use INSERT ... SELECT with conditional logic like TraceDAO
- Use StringTemplate for dynamic SQL generation with if/else conditions
- Fix parameter binding to include user_name parameter
- Remove unnecessary ORDER BY and LIMIT clauses from UPDATE SQL
- Fix test to use getExperiment instead of getAndAssert with null expected value
This resolves the immediate consistency issue for ClickHouse ReplacingMergeTree updates,
allowing tests to assert updated data immediately after update operations.-
Address PR comments: add @NotNull annotation, fix migration version and ON CLUSTER
-
Fix high priority PR comments: remove @NotNull from status, fix timestamp precision, add missing status assertion
-
Fix medium priority PR comments: remove redundant getById call, remove defensive error handling, use CollectionUtils
-
Fix migration prefix conflict: rename 000037 to 000038 and update changeset format
-
issue-2099 fix PR comments
-
issue-2099 fix exception in find
-
issue-2099 fix tests
-
issue-2099 fix tests
-
issue-2099 increased migration prefix
-
issue-2099 no db default value
-
issue-2099 fix unit tests
-
issue-2099 increment db migration file name
-
issue-2099 fix missing enum entry
-
issue-2099 fix db migration file
-
Revert "issue-2099 fix missing enum entry"
This reverts commit 1b392e68fc401c99e7fbaca62260a1d1e5de4b90.
-
issue-2099 parameterized test
-
issue-2099 fix unknown status
-
[OPIK-2454] [DOCS] Add scaling documentation page to self-host section (#3410)
-
[OPIK-2454] [DOCS] Add scaling documentation page to self-host section
- Add comprehensive scaling documentation with marketing language
- Include proven performance metrics and scaling recommendations
- Cover Opik services, ClickHouse, and infrastructure guidance
- Position page after Advanced clickhouse backup section
- Add navigation entry in docs.yml
- Revision 2: Clean up formatting and remove unnecessary references
- Replace em dashes with regular dashes for consistency
- Simplify metrics table by removing specific customer data
- Remove References section with GitHub links
- Improve overall readability and formatting
-
Update scaling.mdx
-
Update scaling.mdx
-
[OPIK-2175] Add FE to local BE API endpoints URL (#3460)
-
Update TypeScript SDK version to 1.8.58
-
[issue-3437] [SDK/FE/BE] Support seed value in LLM Judge/Evals (#3438)
-
Update LlmAsJudgeModelParameters.java
-
feat: clients support seed values
-
feat: seed value to UI
-
chore: types
-
feat: support seed value in python SDK
-
feat: support seed in typescript sdk
-
fix: persist changes on config change in UI
-
chore: lint
-
Update LlmAsJudgeCodeParameters.java
-
Update rules.mdx
-
chore: lint
-
chore: lint
-
chore: revert UI changes
-
chore: lint
-
chore: revert UI change
-
Update apps/opik-frontend/src/components/pages-shared/automations/AddEditRuleDialog/schema.ts
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
- Update apps/opik-frontend/src/components/pages-shared/automations/AddEditRuleDialog/schema.ts
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
-
Update base version to 1.8.59
-
[OPIK-2550] [BE] Alerts delete endpoint (#3461)
-
feat: Add support for Claude Sonnet 4 latest model
Co-authored-by: thiagoh thiagoh@comet.com
- feat: Add Claude Sonnet 4.5 models and update defaults
Co-authored-by: thiagoh thiagoh@comet.com
- Refactor Anthropic models and remove redundant 'latest' versions
Co-authored-by: thiagoh thiagoh@comet.com
- Remove deprecated anthropic/claude-sonnet-4-latest model
Co-authored-by: thiagoh thiagoh@comet.com
- Remove unused claude-sonnet-4-latest model
Co-authored-by: thiagoh thiagoh@comet.com
Signed-off-by: dependabot[bot] support@github.com
Co-authored-by: andrii.dudar andriid@comet.com
Co-authored-by: Boris Feld boris@comet.com
Co-authored-by: Jacques Verre jverre@gmail.com
Co-authored-by: Iaroslav Omelianenko yaric_mail@yahoo.com
Co-authored-by: Vincent Koc vincentk@comet.com
Co-authored-by: Copilot 175728472+Copilot@users.noreply.github.com
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andres Cruz andresc@comet.com
Co-authored-by: github-actions github-actions@comet.com
Co-authored-by: Juan Fernández juanf@comet.com
Co-authored-by: Ido Berkovich ido@comet.com
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: BorisTkachenko 35521895+BorisTkachenko@users.noreply.github.com
Co-authored-by: sasha aadereiko@gmail.com
Co-authored-by: aadereiko aliaksandr@comet.com
Co-authored-by: Yaroslav Boiko y.boikodevelop@gmail.com
Co-authored-by: Yaroslav Boiko yaroslavboiko@ip-192-168-1-15.ec2.internal
Co-authored-by: Nimrod Lahav 3535799+Nimrod007@users.noreply.github.com
Co-authored-by: Cursor Agent cursoragent@cursor.com下载附件