Commit Graph
692 Commits
Author SHA1 Message Date
Kao FélixandGitHub 6a3d6fe944 feat(tui, coding-agent): add pasteToEditor to ExtensionUIContext (#1351)
Add pasteToEditor(text) method that pastes text into the editor via
bracketed paste sequences, triggering paste handling (including collapse
for large content). Unlike setEditorText which directly replaces content,
pasteToEditor routes through handleInput on the active editor component.

- Add pasteToEditor to ExtensionUIContext interface
- Add handleInput to EditorComponent interface (was missing, all
  concrete implementations already had it)
- Implement in interactive mode via bracketed paste sequence
- Add fallback in RPC mode (delegates to setEditorText)
- Document in extensions.md
2026-02-07 15:55:08 +01:00
Mario Zechner 310da43042 fix(coding-agent): refresh temporary git extension caches on cache hits 2026-02-06 22:01:49 +01:00
Mario Zechner 76a6a74517 feat(coding-agent): merge custom models with built-ins by id 2026-02-06 19:15:26 +01:00
Mario Zechner ddd5a65c7e fix(coding-agent): handle compromised auth lock without crashing
closes #1322
2026-02-06 19:15:26 +01:00
Mario Zechner 2f1ab3641f fix(coding-agent): document modelOverrides and harden override merging fixes #1062 2026-02-06 18:54:29 +01:00
Charles CooperandMario Zechner 2cd55b2d35 feat(coding-agent): support per-model overrides in models.json
Add modelOverrides field to provider config that allows customizing
individual built-in models without replacing the entire provider.

Example:
  {
    "providers": {
      "openrouter": {
        "modelOverrides": {
          "anthropic/claude-sonnet-4": {
            "compat": { "openRouterRouting": { "only": ["amazon-bedrock"] } }
          }
        }
      }
    }
  }

Overrides are deep-merged with built-in model definitions. Supports:
- name, reasoning, input, contextWindow, maxTokens
- Partial cost overrides (e.g. only change input cost)
- headers (merged with existing)
- compat settings (merged with existing)

Works alongside baseUrl overrides on the same provider.

closes #1062
2026-02-06 18:54:29 +01:00
Mario Zechner 6822691a81 fix(coding-agent): tighten session_before emit typing and test env filtering 2026-02-06 11:59:25 +01:00
Mario Zechner 2668326e05 fix(coding-agent): chain tool_result extension patches
fixes #1280
2026-02-06 11:49:08 +01:00
Mario Zechner b050c582a1 fix(agent,coding-agent): resume queued messages after auto-compaction 2026-02-06 11:36:19 +01:00
Mario Zechner 703ee26625 refactor(coding-agent): narrow ExtensionRunner emit event type 2026-02-06 11:23:24 +01:00
Mario Zechner 6b0f1fefdb fix(coding-agent): centralize package source normalization and local path parsing fixes #1304 2026-02-06 00:20:52 +01:00
Mario Zechner 8792ee2a66 fix(coding-agent): add /quit autocomplete and remove /exit fixes #1303 2026-02-06 00:16:56 +01:00
Mario Zechner 5f5cd080b9 fix(coding-agent): respect package.json pi.extensions manifest in settings extensions paths
collectAutoExtensionEntries now checks if the directory itself has a
package.json with pi.extensions (or index.ts) before scanning children.
This fixes duplicate extension loading when a manifest-aware directory
is specified directly in settings.json extensions array.

Fixes #1274
2026-02-05 22:32:12 +01:00
Mario Zechner 712d0c6ada fix(ai,coding-agent): fix Bedrock Opus 4.6 model IDs, cache pricing, and add EU profile
- Remove :0 suffix from Opus 4.6 Bedrock model IDs (not valid for this model)
- Fix us/eu Opus 4.6 cache pricing (0.5/6.25 instead of 1.5/18.75)
- Add missing eu.anthropic.claude-opus-4-6-v1 inference profile
- Fix coding-agent default Bedrock model ID to match catalog
2026-02-05 22:21:22 +01:00
Mario Zechner 028fff13ab feat(coding-agent): update default models to Opus 4.6 and GPT-5.3 Codex
- anthropic: claude-opus-4-5 → claude-opus-4-6
- openai-codex: gpt-5.2-codex → gpt-5.3-codex
- amazon-bedrock: us.anthropic.claude-opus-4-20250514-v1:0 → us.anthropic.claude-opus-4-6-v1:0
- vercel-ai-gateway: anthropic/claude-opus-4.5 → anthropic/claude-opus-4-6
- opencode: claude-opus-4-5 → claude-opus-4-6
2026-02-05 21:19:46 +01:00
Mario Zechner f89b49baeb fix(coding-agent): respect ignore files in skill loader 2026-02-05 20:24:15 +01:00
Mario Zechner 1614e95eca fix(coding-agent): guard malformed tool args in renderers (fixes #1259) 2026-02-05 18:34:24 +01:00
Mario ZechnerandGitHub 6c6d937b2d Merge pull request #1287 from markusn/feature/ssh-git-packages
feat(coding-agent): add SSH URL support for git packages
2026-02-05 17:09:28 +01:00
Markus Ekholm fba9a8aece feat(coding-agent): add SSH URL support for git packages
Use hosted-git-info library for robust parsing of SSH URLs (git@host:path
and ssh://) in addition to HTTPS. SSH and HTTPS URLs for the same repo
are now properly deduplicated.
2026-02-05 16:48:10 +01:00
Mario ZechnerandGitHub 2f18057ac2 Merge branch 'main' into fix/export-ansi-indentation 2026-02-05 03:13:32 +01:00
Aliou Diallo b315abf998 fix(coding-agent): forward images through steer/followUp during streaming
prompt() computed currentImages but never passed them to _queueSteer()
or _queueFollowUp() in the streaming branch. Both methods only accepted
text and built content as [{ type: 'text', text }], dropping images.

- _queueSteer/_queueFollowUp now accept optional ImageContent[]
- streaming branch in prompt() passes currentImages through
- public steer()/followUp() accept and forward optional images
- RPC types, handler, and client updated for steer/follow_up images
- rpc.md: document images on steer/follow_up, fix ImageContent examples
2026-02-05 02:37:42 +01:00
Aliou Diallo dc5a0b582d fix(coding-agent): preserve indentation in ANSI-rendered HTML export
HTML div elements collapse whitespace by default, stripping leading
spaces from ANSI-rendered tool output (e.g. JSON code blocks).
Added white-space: pre-wrap to .ansi-line class.
2026-02-05 02:10:05 +01:00
Mario Zechner 9cf5758b68 feat(coding-agent): support shell commands and env vars in auth.json API keys
API keys in auth.json now support the same resolution as models.json:
- Shell command: "\!command" executes and uses stdout (cached)
- Environment variable: uses the value of the named variable
- Literal value: used directly

Extracted shared resolveConfigValue() to new resolve-config-value.ts module.
2026-02-04 23:02:00 +01:00
Mario Zechner d0679dcfc0 fix(coding-agent): ignore unknown skill frontmatter fields 2026-02-04 14:20:24 +01:00
Mario Zechner fcfbc82ec2 fix(coding-agent): reload global settings fixes #1241 2026-02-04 14:14:52 +01:00
Juan IbiapinaandGitHub b80762966a feat(coding-agent): add resume as configurable keybinding action (#1249)
feat(coding-agent): add resume as configurable keybinding action

Allow users to bind a key to open the session resume selector, matching the pattern of newSession, tree, and fork actions.
2026-02-04 13:43:51 +01:00
Mario Zechner b5be54b8ef fix(coding-agent): persist user message after fork
When hasAssistant guard returns early, set flushed=false so
the next persist (after assistant arrives) writes all entries
including the user message.
2026-02-04 13:35:45 +01:00
Mario Zechner 13ac63c3cd fix(coding-agent): fork writes to new session file, not parent (fixes #1242)
- Store previousSessionFile before creating branched session
- Update sessionFile after writing new branch file
- Pass parentSession when forking from first message
- Add --local to git config in tests to prevent repo escape
2026-02-04 13:22:43 +01:00
Mario Zechner 1fe73ad423 Revert "fix(coding-agent): handle npm on Windows with shell fallback fixes #1220"
This reverts commit 895b85636a.
2026-02-04 02:22:37 +01:00
Mario Zechner 895b85636a fix(coding-agent): handle npm on Windows with shell fallback fixes #1220 2026-02-04 02:21:06 +01:00
badlogic ffb647cece fix(coding-agent): use shell execution for spawn on Windows
fixes #1220
2026-02-04 02:15:22 +01:00
Mario Zechner e1e4e593c0 fix(coding-agent): persist thinking level defaults 2026-02-03 17:17:38 +01:00
Mario Zechner 8a7a761deb fix(coding-agent): resolve npm.cmd on Windows
closes #1220
2026-02-03 17:04:22 +01:00
Mario Zechner 2f5235b966 fix(coding-agent): support local install paths relative to settings files closes #1216 2026-02-03 12:58:34 +01:00
Mario Zechner e54dff7efb fix(coding-agent): rename SlashCommandSource "template" to "prompt" for consistency
BREAKING CHANGE: RPC get_commands response and SlashCommandSource type
now use "prompt" instead of "template" to match the rest of the codebase.
2026-02-03 12:27:45 +01:00
warrenandMario Zechner 2613754c47 feat(coding-agent): add ExtensionAPI.getCommands() 2026-02-03 12:18:52 +01:00
Mario ZechnerandGitHub 7a9c668357 Merge pull request #1196 from haoqixu/fix-commands-conflict
fix(coding-agent): filter out commands conflict with builtins
2026-02-03 01:22:29 +01:00
Mario ZechnerandGitHub 6909f61884 Merge pull request #1199 from academo/academo/implement-set-expand-tool-api
feat: add setToolsExpanded and getToolsExpanded to ExtensionsUIContext
2026-02-03 01:16:04 +01:00
Mario Zechner c9a20a3aa4 fix(coding-agent): normalize @ path prefixes closes #1206 2026-02-02 23:56:20 +01:00
Esteban Beltran ca62c44775 feat: add setToolsExpanded and getToolsExpanded to ExtensionsUIContext 2026-02-02 19:25:00 +01:00
haoqixu 29e2997f41 fix(coding-agent): filter out commands conflict with builtins 2026-02-03 01:23:49 +08:00
Michael RennerandGitHub f7c03ef6a2 fix(coding-agent): handle scoped models after logout (#1194) 2026-02-02 18:05:15 +01:00
Juan IbiapinaandGitHub d0228412d6 feat(coding-agent): add switchSession to Extension API (#1191)
Allows extension commands to programmatically switch to a different session file via ctx.switchSession(sessionPath).

fixes #1187
2026-02-02 18:03:26 +01:00
Mario Zechner 0925fafe3b fix(tui): reduce unnecessary full redraws for better performance
- Remove height change detection (only width changes trigger full redraw)
- Change clearOnShrink default to false (use PI_CLEAR_ON_SHRINK=1 to enable)
- Fix viewport check to use previousLines.length instead of maxLinesRendered
  (prevents false positive redraws when appending lines after content shrunk)
- Add clearOnShrink setting to /settings in coding-agent
- Remove line truncation in custom message component (always show full content)
2026-02-02 08:10:08 +01:00
Mario Zechner 5d6a7d6c34 Better skill dir resolution, closes #1171 2026-02-02 00:33:51 +01:00
Mario Zechner 0a26db53ef fix(coding-agent): align ToolDefinition.execute signature with AgentTool
BREAKING CHANGE: ToolDefinition.execute parameter order changed from
(id, params, onUpdate, ctx, signal) to (id, params, signal, onUpdate, ctx).

This aligns with AgentTool.execute so wrapping built-in tools no longer
requires parameter reordering. Update extensions by swapping signal and
onUpdate parameters.
2026-02-02 00:29:47 +01:00
Mario Zechner 86b43c8eac feat(coding-agent): add bash spawn hook 2026-02-01 23:17:51 +01:00
Aliou DialloandMario Zechner bc3fda518d fix(coding-agent): only update extension in scope it's in
update(source) unconditionally called updateSourceForScope for both
user and project scopes, creating a local install even when the source
was only registered globally. Unify into a single code path that
iterates settings per scope, filtering by identity when a source is
provided.
2026-02-01 22:43:11 +01:00
a8a0f4b9fb feat(coding-agent): type ToolCallEvent.input per tool
Matches ToolResultEvent pattern with typed inputs via discriminated union.

- Export *ToolInput types from tool schemas
- Add *ToolCallEvent interfaces for each built-in tool
- Add isToolCallEventType() guard with overloads for built-ins

Direct narrowing (event.toolName === "bash") doesn't work due to
CustomToolCallEvent.toolName: string overlapping with literals.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 19:13:52 +01:00
Mario Zechnerandwarren 73839f876e feat(coding-agent): add named-only filter toggle to /resume picker (#1128)
Adds Ctrl+N toggle to filter sessions by named-only vs all in the /resume picker.

- Add NameFilter type and filtering logic to session-selector-search.ts
- Add toggleSessionNamedFilter app keybinding (default: ctrl+n)
- Show Name: All/Named state in header
- Empty state mentions toggle keybinding as escape hatch
- Export hasSessionName() to avoid duplication

Co-authored-by: warren <warren.winter@gmail.com>
2026-02-01 19:03:38 +01:00