Bump diff from 4.0.2 to 4.0.4#7
Merged
kaiapeacock-eng merged 1 commit intomainfrom Mar 16, 2026
Merged
Conversation
Bumps [diff](https://github.com/kpdecker/jsdiff) from 4.0.2 to 4.0.4. - [Changelog](https://github.com/kpdecker/jsdiff/blob/master/release-notes.md) - [Commits](kpdecker/jsdiff@v4.0.2...v4.0.4) --- updated-dependencies: - dependency-name: diff dependency-version: 4.0.4 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
bird-m
added a commit
that referenced
this pull request
Apr 15, 2026
Review-panel #1 (Severe): Remove competing browser tab in requires_auth path. The requires_auth branch opened the backend's redirect URL via opn() then fell through to performAmplitudeAuth which opened a second browser tab with mismatched PKCE. Now we skip the backend URL and let performAmplitudeAuth handle the entire flow. Added TODO to evaluate using the backend URL in a follow-up. Review-panel #2 (Critical): Init feature flags in agent/CI paths so _headlessSignupEnabled can be true. Previously the flag was only set in the TUI interactive path, making the entire agent/CI headless signup block unreachable dead code. Review-panel #3 (Important): Pre-populate HeadlessSignupScreen from CLI --email/--full-name flags. Auto-submit if both are present. Review-panel #4 (Important): Redact email in agent NDJSON log output to match the redaction pattern in headless-signup.ts. Review-panel #7 (Important): Split fullName into first_name/last_name on first space before sending to provisioning endpoint. Review-panel #9 (Nit): Replace non-null assertions on headlessSignupEmail/headlessSignupFullName with an explicit guard. Review-panel #10 (Nit): Extract completeSignupTokenExchange into headless-signup.ts as a shared helper used by both the agent/CI and TUI code paths, reducing duplication and drift risk. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bird-m
added a commit
that referenced
this pull request
Apr 16, 2026
fs.watch can fire multiple times per write. Cache the previous raw content and skip the marked.parse call when it hasn't changed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bird-m
added a commit
that referenced
this pull request
Apr 16, 2026
Log what the server returned, not why. The oauth and requires_auth response types don't necessarily imply new vs existing user. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
bird-m
added a commit
that referenced
this pull request
Apr 16, 2026
Only assign session.selectedOrgId/selectedWorkspaceId/etc. once credentials are actually populated — otherwise a failed API key resolve leaves the session pointing at an org we couldn't use. Also log "signup complete" only when credentials were actually set, and emit an error otherwise. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
kelsonpw
added a commit
that referenced
this pull request
Apr 17, 2026
… picker) Batch of bird-m and Bugbot findings from PR #112: #1 claudeCodeMode default mismatch (medium, flagged 3×): addMCPServerToClientsStep silently defaulted to 'plugin' while mcp-installer.ts defaulted to 'mcp'. Non-TUI fallback via bin.ts could install the plugin with no user prompt. Aligned both to 'mcp' as the safer default — plugin is interactive-only now. #3 remove flow can't uninstall plugin (medium, flagged 2×): getInstalledClients only ever instantiated ClaudeCodeMCPClient. After plugin install removes the bare `amplitude` MCP entry, isServerInstalled returned false and `wizard mcp remove` silently skipped Claude Code. Added an explicit ClaudeCodePluginClient probe before falling through to the MCP check. #4 non-TUI `local` flag ignored for plugin path (low, Bugbot): addMCPServerToClientsStep now forces 'mcp' mode whenever local=true, matching the TUI's behavior. The plugin hardcodes the prod URL and can't serve localhost. #5 `as unknown as RawMCPClient[]` cast (nit, bird-m): resolveClientsForMode returns MCPClient[] directly; the local RawMCPClient interface was a holdover. Dropped the cast and removed the unused interface — install loop now type-checks against MCPClient directly. #6 older Claude CLIs fail opaquely (nit, bird-m): ClaudeCodePluginClient.isClientSupported now probes `claude plugin --help` in addition to `--version`. resolveClientsForMode is async and checks plugin support before swapping — older CLIs quietly keep ClaudeCodeMCPClient instead of failing during `marketplace add`. #7 single-Claude-Code hid plugin/MCP choice (medium, Bugbot): detected.length === 1 routed to Phase.Ask, which doesn't show the split picker. Now: if the lone detected tool is Claude Code and no escape hatch is set, route to Phase.Pick so the user sees plugin vs MCP rows. #8 resolveSelection misleading default (low, Bugbot): wantsPlugin || !wantsMcp ? 'plugin' : 'mcp' returned 'plugin' when the user unchecked both Claude Code rows. Simplified to wantsPlugin ? 'plugin' : 'mcp' — explicit semantics, still correct since downstream guards the Claude-Code-absent case. #9 Codex Windows detection (low, Bugbot): `command -v` is POSIX-only; Windows never matched. Use `where codex` on win32, `command -v codex` on POSIX. Take the first line since `where` may return multiple paths. Narrowed the bundled-app exclusion to macOS only (Conductor-specific). #10 multi-picker uncheck-all dead code (medium, Bugbot): MultiPickerMenu's Enter handler fell back to the focused row when selected was empty, so a user who unchecked every pre-selected row got one install instead of a skip. Now: if defaultSelected was provided, an empty set means deliberate — pass [] through to the caller. Also fixed lexicographic index sort → numeric. #? dev script env var at build-time (low, Bugbot): `AMPLITUDE_WIZARD_DEV=1 pnpm build` only scoped the var to the build subprocess, not the globally-linked binary. Removed from the `dev` script since it was ineffective there — `try` still sets it at runtime where it actually works. Addressed in comment, no code change: #2 non-atomic settings.json write — already replaced with `claude plugin marketplace add` CLI in commit 4679fc4. No direct file write remains. 974 tests pass, lint clean, smoke test passes. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5 tasks
kelsonpw
added a commit
that referenced
this pull request
Apr 25, 2026
Two underused features of @anthropic-ai/claude-agent-sdk@0.2.97 surfaced
by the library audit, both of which improve agent run quality.
PreCompact hook
- New createPreCompactHook() factory in agent-interface.ts; wrapped in
try/catch so a throwing handler can never abort the compaction.
- runAgent gains an onPreCompact callback in its config object. When
provided, the SDK's PreCompact hook is wired via buildHooksConfig.
- agent-runner.ts plugs in a handler that (a) refreshes the on-disk
session checkpoint via saveCheckpoint(session) so a compaction crash
leaves the user with a resumable state, and (b) emits an analytics
event ('agent compaction triggered') with the trigger ('manual' |
'auto'), integration, and detected framework for cost/quality analysis.
- 4 new unit tests cover trigger normalization and error swallowing.
Extended thinking
- Adds SDKThinkingConfig to the local SDK options mirror so we keep
type safety despite the dynamic ESM/CJS import.
- Sets thinking: { type: 'enabled', budgetTokens: 3000 } on the agent
run. Sonnet 4.6 doesn't support 'adaptive', so we use 'enabled' with
an explicit per-turn budget. This budget is a per-turn ceiling, not a
per-run total — most turns won't use it. The instrumentation-planning
phase before confirm_event_plan benefits the most.
Note: MCP resources (audit task #7) is not feasible at this SDK
version. createSdkMcpServer in 0.2.97 only accepts { name, version,
tools } — no resources field. Deferred until SDK bump.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
kelsonpw
added a commit
that referenced
this pull request
Apr 25, 2026
* feat(agent): wire PreCompact hook + enable extended thinking
Two underused features of @anthropic-ai/claude-agent-sdk@0.2.97 surfaced
by the library audit, both of which improve agent run quality.
PreCompact hook
- New createPreCompactHook() factory in agent-interface.ts; wrapped in
try/catch so a throwing handler can never abort the compaction.
- runAgent gains an onPreCompact callback in its config object. When
provided, the SDK's PreCompact hook is wired via buildHooksConfig.
- agent-runner.ts plugs in a handler that (a) refreshes the on-disk
session checkpoint via saveCheckpoint(session) so a compaction crash
leaves the user with a resumable state, and (b) emits an analytics
event ('agent compaction triggered') with the trigger ('manual' |
'auto'), integration, and detected framework for cost/quality analysis.
- 4 new unit tests cover trigger normalization and error swallowing.
Extended thinking
- Adds SDKThinkingConfig to the local SDK options mirror so we keep
type safety despite the dynamic ESM/CJS import.
- Sets thinking: { type: 'enabled', budgetTokens: 3000 } on the agent
run. Sonnet 4.6 doesn't support 'adaptive', so we use 'enabled' with
an explicit per-turn budget. This budget is a per-turn ceiling, not a
per-run total — most turns won't use it. The instrumentation-planning
phase before confirm_event_plan benefits the most.
Note: MCP resources (audit task #7) is not feasible at this SDK
version. createSdkMcpServer in 0.2.97 only accepts { name, version,
tools } — no resources field. Deferred until SDK bump.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* fix: add missing display: 'summarized' to thinking config
Applied via @cursor push command
* fix: make budgetTokens required in SDKThinkingConfig enabled variant
Applied via @cursor push command
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
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.
Bumps diff from 4.0.2 to 4.0.4.
Changelog
Sourced from diff's changelog.
Commits
f06f3e4v4.0.40179a48v4.0.34568caeBackport kpdecker/jsdiff#6494de0ffaBackport kpdecker/jsdiff#647Maintainer changes
This version was pushed to npm by explodingcabbage, a new releaser for diff since your current version.
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore this major versionwill close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor versionwill close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependencywill close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)You can disable automated security fix PRs for this repo from the Security Alerts page.