Added base RAG changes - #16
Open
ChaiEranki wants to merge 62 commits into
Open
Conversation
…deleted/changed, files created/deleted/moved) (cline#9562) * feat: add telemetry for AI output accepted/rejected across tool handlers Add line-level diff stats and file operation tracking to telemetry events when users accept or reject tool outputs. Introduces a shared `computeLineDiffStats` utility and `captureAiOutputAccepted`/ `captureAiOutputRejected` methods on the telemetry service, wired into ApplyPatch, WriteToFile, ExecuteCommand, InsertContent, and SearchAndReplace handlers. * feat(telemetry): add source tracking for agent vs human edits Add telemetry differentiation between agent-generated changes and human modifications to capture more granular edit metrics: - Add 'source' field to captureAiOutputAccepted telemetry events - Track human edits by computing diff stats between agent's proposed content and final saved content - Apply source tracking to ApplyPatchHandler and WriteToFileToolHandler - Enable separate analytics for agent vs human contributions This allows measuring how often and to what extent users modify AI-generated code, providing insights into AI output quality and user trust patterns. * refactor(telemetry): centralize ai output attribution across file edit handlers - add shared `AiOutputTelemetry` utility for accepted/rejected events - refactor `WriteToFileToolHandler` and `ApplyPatchHandler` to use shared helpers - preserve existing telemetry behavior (`source: "agent" | "human"`) while reducing duplication - keep line diff/file-op attribution semantics unchanged * fix(telemetry): use pre-save content for human edit line diff stats The source:"human" telemetry was diffing agent content against finalContent (post-save), which includes auto-formatting changes from the editor. This inflated linesChanged/linesDeleted counts when the formatter modified lines alongside the user's actual edits. Use diff.applyPatch() to reconstruct the user's pre-save content from the existing userEdits patch, excluding formatter noise from the line diff stats. * fixing syntax error * refactor(telemetry): make next-hunk bounds check explicit * remove comment Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com> --------- Co-authored-by: Tomás Barreiro <52393857+BarreiroT@users.noreply.github.com>
…s across sessions (cline#9642) - Make redirect URIs with dynamic ports valid, or reregister. - Handle reconnects for streaming HTTP MCP servers.
Add --no-verify to the initial checkpoint commit in CheckpointGitOperations.ts. This was already used for subsequent commits in CheckpointTracker.ts but was missing from the initial empty commit, causing Cline to fail to initialize when users have global pre-commit hooks (e.g., conventional commits enforcement). Fixes cline#9672
* Adding gpt-5.4 to chatgpt subscription * Fixing stuff * Apply suggestion from @greptile-apps[bot] Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* feat(cli): add --hooks-dir flag for runtime hook injection Adds a --hooks-dir <path> CLI flag that allows passing an additional hooks directory at spawn time. This enables orchestration tools (like Kanbanana) to inject per-session lifecycle hooks without mutating the user's global or workspace hooks directories. The runtime hooks directory is included alongside existing global (~/Documents/Cline/Hooks/) and workspace (.clinerules/hooks/) directories during hook discovery. All hooks from all directories are merged and run in parallel, so runtime hooks are purely additive. * fix(cli): initialize runtime hooks before interactive startup
* feat(hooks): add Notification hook for attention and completion * chore(hooks): use default Notification template * Revert "chore(hooks): use default Notification template" This reverts commit 85f4e94. * fix(hooks): escape JSON quotes in bash templates * Revert "fix(hooks): escape JSON quotes in bash templates" This reverts commit 29dfb9e. * chore(hooks): preserve single-backslash template escaping * fix(hooks): keep single-backslash JSON escaping in templates * Revert "fix(hooks): keep single-backslash JSON escaping in templates" This reverts commit b4c8294. * fix(hooks): keep escaped JSON echo template pattern
Co-authored-by: Max Paulus 🥪 <max@cline.bot>
… conversion and streaming (cline#9424) Fixes cline#9269 - Thinking blocks missing in Bedrock Opus 4.6 Changes: - Add explicit handling for 'thinking' and 'redacted_thinking' content types in formatMessagesForConverseAPI() so they are silently skipped instead of triggering 'Unsupported content type: thinking' warnings - Capture signature from additionalModelResponseFields thinking responses - Add signature_delta handling in contentBlockDelta for streaming - Add redacted_thinking block handling in contentBlockStart for streaming - Extend ContentBlockStart/Delta interfaces with signature and data fields - Add 'redacted_thinking' and 'document' to SupportedContentType union - Add tests for thinking/redacted_thinking block filtering in message conversion
* test(hooks): reduce Windows hook-runner launch overhead test(hooks): make Windows hook tests deterministic refactor(hooks): use platform-agnostic launcher cache naming Improvements as per Cline code review feedback test(hooks): remove direct-node acceleration path and stabilize windows timings * test(hooks): add deterministic launcher cache concurrency coverage * Improvements as per Cline code review feedback * Update src/core/hooks/__tests__/hookprocess.test.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Improvements as per Greptile feedback --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* Introduce the enableErrorAutocapture option * Enable capturing CLI extension * Capture exception immediately * Handled uncaptured exceptions * refactor * Add tests * Capture unhandledExceptions * Add an error boundary to the ink app * Wrap the App in the ErrorBoundary * Check for consent before capturing error * Add context to the error capturing * Fix tests * refactor * Remove `unref`
* Add implementation plan doc * feat(hooks): reintroduce runtime hooks feature toggle * fix: thread effective hooks toggle through hook execution * test: cover hooks feature toggle visibility and settings wiring * Remove implementation plan doc * Move Hooks toggle to Advanced section in Feature Settings * Fixes as per PR feedback * Clarifying hooksEnabled * Make hooksEnabled true by default * Further fixes as per Greptile feedback * Further fixes as per Greptile feedback * Fix failing tests
…#9606) * docs: add .github/copilot-instructions.md for AI coding agents * docs: update copilot-instructions with provider, state, and CLI guidance
* feat: add Anthropic Opus 4.6 fast mode variants * refactor: localize Anthropic fast mode beta constant * fix: correct Anthropic 1M fast mode pricing
…tic (cline#9679) - S1: Don't modify test assertions to match buggy code - S2: Run project's existing test suite to verify fixes - CLI_RULES: Remove Node.js-specific examples (npm/tsc) Made-with: Cursor
…receives a file path (cline#9680) listFiles() passed unvalidated paths as globby's `cwd`, crashing with "The cwd option must be a path to a directory" when the model provided a file path instead of a directory. This affected ~22% of SWE-bench tasks. - Add isDirectory guard in listFiles() before calling globby - Fix listFiles() to use resolved absolutePath for cwd instead of raw dirPath - Return actionable error in parseSourceCodeForDefinitionsTopLevel when path is a file, guiding the model to use read_file instead - Clarify list_code_definition_names parameter description to distinguish directory input from file input Made-with: Cursor
) The Gemini converter was the only provider that didn't include parameter-level descriptions in native tool call schemas. Anthropic and OpenAI converters both resolve param.instruction into each parameter's description field. This was missing for Google/Gemini, meaning the model only saw parameter names and types with no explanation of what each parameter expects. Made-with: Cursor
…line#9705) Exposes the existing useAutoCondense setting as a CLI flag, following the same pattern as --double-check-completion. This allows enabling auto-condense in eval runs (e.g. SWE-bench via Harbor) to reduce context exhaustion failures. Made-with: Cursor
* feat: add cli continue flag for current directory * docs(cli): clarify continue command examples
Commit 55569ef changed the list_code_definition_names path parameter description but did not update the snapshot baseline.
- cli was storing fields to persistent state when it shouldn't be. The value of these flags should only live for the duration of the CLI session Co-authored-by: Max Paulus 🥪 <max@cline.bot>
…sage (cline#9741) * feat(telemetry): restore cache token and cost metrics in captureTokenUsage Add optional `options` parameter to `captureTokenUsage()` to record cache write/read token counters and cost histograms that were previously missing from telemetry. - Extend `captureTokenUsage` with `cacheWriteTokens`, `cacheReadTokens`, and `totalCost` fields via an options object - Record `cline.tokens.cache_write`, `cline.tokens.cache_read` counters/ histograms and `cline.tokens.cost` histogram when provided - Forward cache/cost data from both streaming `onUsageChunk` and `getApiStreamUsage` fallback call sites in the task loop - Add 3 test cases covering options forwarding, undefined skipping, and event property inclusion * refactor(telemetry): extract shared TokenUsage type and add value assertions Address PR review feedback: - Extract shared TokenUsage interface used by both captureTokenUsage and captureConversationTurnEvent, preventing future drift - Add numeric value assertions for cache/cost counters and histograms so regressions recording wrong values are caught
* Add an UsafeImage handler that asks for consent before loading specific images * Fix div as child of p * Render self-contained images without consent * Render alt conditionally and store approved src * use a block span
- calling telemetry service before initializeCli call causes a "hostprovider not initialized error", which invokes errorservice, which causes another "hostprovider not initialized error", which was breaking this cline use case: echo "say hello" | cline Co-authored-by: Max Paulus 🥪 <max@cline.bot>
Co-authored-by: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com>
The Oracle Code Assist URL moved from /artificial-intelligence/code-assist/ to /application-development/code-assist/. The old URL returns a 404. Fixes cline#9776 Co-authored-by: gatof81 <gatof81@users.noreply.github.com>
* add tui UI tests using microsoft/tui-test library, can run many headless versions of cline and execute ui tests (requires Node <= 20) improve brittle sleep calls * add cli-tui-tests github action --------- Co-authored-by: Max Paulus 🥪 <max@cline.bot>
…CLI (cline#9730) * fix: catch extractFileContent errors in ReadFileToolHandler When extractFileContent throws (e.g. file not found), the exception propagated through ToolExecutor which re-threw it, crashing the CLI process with exit code 1. Now file read errors are caught and returned as formatResponse.toolError() so the model can see the error and recover gracefully (e.g. try a different file path) instead of terminating the entire task. Also increments consecutiveMistakeCount so the yolo-mode mistake limit still functions correctly.
…ine#9732) * fix: catch errors in path-based tool handlers instead of crashing ListCodeDefinitionNamesToolHandler, ListFilesToolHandler, and SearchFilesToolHandler let exceptions from their core operations propagate through ToolExecutor's re-throw path, crashing the CLI process. This is the same class of bug fixed for ReadFileToolHandler in cline#9730. Changes per handler: - Wrap the core operation in try/catch, returning formatResponse.toolError() on failure so the model can see the error and recover gracefully. - Move consecutiveMistakeCount reset to after a successful operation so repeated failures accumulate toward the yolo-mode mistake limit. - Increment consecutiveMistakeCount on caught errors. Add end-to-end tests exercising each handler with a mock TaskConfig, covering: non-existent paths, missing parameters, failure accumulation, and success-based counter reset. * address review: expand try/catch scope, add stub-based tests - Include resolveWorkspacePath inside try/catch in ListCodeDefinitionNamesToolHandler and ListFilesToolHandler (matching SearchFilesToolHandler's pattern) so path resolution failures are also caught gracefully. - Fix trivially-true assertion in file-not-a-directory test. - Add 6 new stub-based tests that force core operations to throw: parseSourceCodeForDefinitionsTopLevel, listFiles, and determineSearchPaths — verifying the catch paths return formatResponse.toolError() and increment consecutiveMistakeCount. - Total: 19 passing tests (up from 13). * address review: move clineignore check before IO in ListFilesToolHandler Move the .clineignore access validation before resolveWorkspacePath and listFiles so blocked paths are rejected without incurring IO cost. Also ensures consecutiveMistakeCount is only reset after all validations and the core operation succeed. * address review: increment counter on clineignore denial Clineignore denial in ListFilesToolHandler now increments consecutiveMistakeCount so repeated attempts at blocked paths accumulate toward the yolo-mode mistake limit. Added 2 tests verifying single and repeated clineignore denials. Total: 21 passing tests. * fix: increment consecutiveMistakeCount when SearchFilesToolHandler searches fail Previously, SearchFilesToolHandler's executeSearch() caught regexSearchFiles errors and returned {success: false}, but the handler unconditionally reset consecutiveMistakeCount to 0 even when ALL searches failed. This contradicted the PR's goal of accumulating failures toward the yolo-mode mistake limit. Now we check if any search succeeded before resetting the counter: - If at least one search succeeded: reset to 0 (existing behavior for successes) - If all searches failed: increment the counter (new fix) Also added comprehensive test coverage for this scenario, including tests for: - regexSearchFiles throwing errors - Repeated search failures accumulating - Successful search resetting the counter after failures * fix: detect error strings in ListCodeDefinitionNamesToolHandler parseSourceCodeForDefinitionsTopLevel returns error strings instead of throwing exceptions for file paths and non-existent directories. The handler now detects these error conditions and increments consecutiveMistakeCount so repeated failures accumulate correctly. This addresses Greptile's feedback that the counter was unconditionally resetting to 0 for all real-world failure modes of this handler.
* fix: consolidate parallel tool-calling fixes * test(snapshot): fix vertex gemini3 snapshot newline * fix gemini toolcall id collision (cline#9768) * test(snapshot): fix vertex gemini3 snapshot newline * fix(gemini): prevent native tool-call ID collisions * fixing maxtokens for gemini family * test(gemini): assert fallback tool call ids
* feat(wandb): add W&B Inference by CoreWeave provider Adds support for W&B Inference as an API provider using a W&B API key. Implements a provider handler with OpenAI-compatible streaming and a static model catalog, and wires the provider through the API layer, configuration schema, storage, CLI model picker, and settings UI. * Updated input/output price of NVIDIA-Nemotron * Updated helpText * handle reasoning tokens in streaming respons * Added clarifying comment on how W&B token usage is reported and why cached tokens * fix: restore proto field numbers changed by generation script * Update src/core/api/providers/wandb.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Bumps [undici](https://github.com/nodejs/undici) from 7.20.0 to 7.24.3. - [Release notes](https://github.com/nodejs/undici/releases) - [Commits](nodejs/undici@v7.20.0...v7.24.3) --- updated-dependencies: - dependency-name: undici dependency-version: 7.24.3 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Fix flaky Windows CLI quit slash tests * Refine CLI slash command handling and test stability * Address Greptile cleanup feedback
Co-authored-by: aikido-autofix[bot] <119856028+aikido-autofix[bot]@users.noreply.github.com> Co-authored-by: Max <maxpaulus43@gmail.com>
* Fix issue with Windows notification Fix Windows proto tooling Fix Windows unit test path normalization Revert "Fix Windows unit test path normalization" This reverts commit 73400a3ca6f0300d009f7c8238a016d769186f3a. Remove package-lock.json changes * Remove unnecessary changes * Use command approval string for notifications * Address PR feedback on Windows notifications * Fix Windows protoc path for CI * Polish notification safety and test coverage * Fix unfound tests in CI * Harden Windows notifications and protoc execution * Fix Windows path normalization in glob test * Fix as per Greptile feedback
Bumps [qs](https://github.com/ljharb/qs) from 6.14.1 to 6.15.0. - [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md) - [Commits](ljharb/qs@v6.14.1...v6.15.0) --- updated-dependencies: - dependency-name: qs dependency-version: 6.15.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the /testing-platform directory: [lodash](https://github.com/lodash/lodash). Updates `lodash` from 4.17.21 to 4.17.23 - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](lodash/lodash@4.17.21...4.17.23) --- updated-dependencies: - dependency-name: lodash dependency-version: 4.17.23 dependency-type: direct:development dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…ons (cline#9783) * fix: Claude Code provider failing with 4.6 models and newer CLI versions - Update --disallowedTools list to match current Claude Code CLI tools (12 new tools were unblocked, causing models to use native tool_use instead of Cline's XML tools) - Fix rate_limit_event handling for new CLI format (top-level type instead of system subtype) - Handle unknown content block types and new message types gracefully - Fix assistantHasContent check to account for tool calls accumulated via toolUseHandler even when useNativeToolCalls is false * resolved .include mismatch to .containEql * Update src/integrations/claude-code/types.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Removed `LegacyRateLimitEvent` type and its union reference from `types.ts` * Fixed loop with async tool calls in new claude code. * PR review feedback fixes __Fix #2 (claude-code.ts):__ Cleaned up the error field check — replaced verbose `"error" in message` guard + ternary chain with a simpler `message.error` check using optional chaining and nullish coalescing (`message.content?.[0]` + `?? fallback`). __Fix #3 (claude-code.ts):__ Replaced `message.content.length > 0 ? message.content[0] : undefined` with `message.content?.[0]` using optional chaining for the `stop_reason` block. __Fix #4 (claude-code.ts):__ Replaced repeated `(content as any)` casts in the `default` switch case with a single typed cast: `const unknownBlock = content as { type: string; text?: string }`, making the code cleaner and safer. __Fix #5 (ApplyPatchHandler.ts):__ Replaced both `await import("node:path")` and `require("node:path")` dynamic imports with a static `import { resolve as resolvePath } from "node:path"` at the top of the file. * Remove file read deduplication feature (moved to separate PR) * Remove ReadFileToolHandler file-not-found test (moved to separate PR) * Add LegacyRateLimitEvent type for older CLI format * Restore ReadFileToolHandler.ts and test from upstream/main (fix stale local main revert) * Revert ReadFileToolHandler.ts to match fork main (no try/catch, no test file) * manually reverting back * Update src/core/api/providers/claude-code.ts Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> * Restore ReadFileToolHandler.ts and test to match cline/cline upstream main --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
* feat: refresh Fireworks serverless model defaults * fix(fireworks): handle cached token usage and write pricing * fixing maxtokens for gemini family * feat(fireworks): add missing serverless models and pricing
…lama.cpp (cline#9837) llama.cpp's STB image library doesn't support WebP format. Users running GLM 4.6V, GLM 4.5, and Devstral models via llama.cpp server (openai-compatible endpoint) were hitting a 400 error when using the browser tool because Cline sends screenshots as WebP by default. modelDoesntSupportWebp() only checked for Grok models. Extend it to also cover GLM and Devstral model families using the existing family detection functions. Also update isGLMModelFamily() to handle space-separated model IDs like 'GLM 4.6V' (the format llama.cpp server reports for this model). Fixes cline#8203
ChaiEranki
force-pushed
the
oca-rag-rebase
branch
from
March 30, 2026 15:28
9147e91 to
32be3ec
Compare
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.
Related Issue
Issue: #XXXX
Description
Test Procedure
Type of Change
Pre-flight Checklist
npm test) and code is formatted and linted (npm run format && npm run lint)npm run changeset(required for user-facing changes)Screenshots
Additional Notes