Commit Graph

756 Commits

Author SHA1 Message Date
badlogic
671798d67f fix(coding-agent): normalize prompt cwd for bash-safe windows paths closes #2080 2026-03-14 04:48:52 +01:00
Mario Zechner
7ddaf150d6 fix(coding-agent): support configurable npm wrapper command closes #2072 2026-03-14 04:38:01 +01:00
Mario Zechner
a8e3c829fa fix(coding-agent): stop skill recursion at root closes #2075 2026-03-14 04:18:28 +01:00
Mario Zechner
63ac2df24d fix(coding-agent): sync tool hooks with agent event processing closes #2113 2026-03-14 03:10:04 +01:00
Haoyu Zha
f04d9bc428 feat(session-manager): allow supplying custom session ID in newSession() (#2130)
* feat(session-manager): allow supplying custom session ID in newSession()

Add optional `id` field to `NewSessionOptions`. When provided, this ID
is used as the session ID instead of generating a random UUID. Existing
callers are unaffected since the field is optional and falls back to
`randomUUID()`.

Closes #2097

* test(session-manager): add tests for custom session ID in newSession()

Verify that newSession() uses the provided id when supplied, falls back
to randomUUID() when omitted, and includes the custom id in the session
header.
2026-03-14 01:34:48 +01:00
Mario Zechner
4b9e6006fa fix(coding-agent): keep only ISO date in system prompt closes #2131 2026-03-13 21:07:03 +01:00
KangYu
2501a053e0 fix(coding-agent): match server_error and internal_error in retry regex (#2117)
The _isRetryableError() regex used literal spaces ("server error",
"internal error") but Codex SSE error events use underscores
("server_error").  Change to .? so both space and underscore (and
direct concatenation) are matched, enabling automatic retry on
transient Codex SSE errors.

fixes #2091
2026-03-13 18:51:04 +01:00
Mario Zechner
80d79eefc3 fix(coding-agent): prefer explicit -e extensions closes #1896 2026-03-08 00:34:31 +01:00
Mario Zechner
787f351ab7 feat(coding-agent): refine session_directory hook closes #1729 2026-03-08 00:19:35 +01:00
Helmut Januschka
7df89066d9 feat(coding-agent): add session_directory extension event
Adds a session_directory extension event that fires before session manager
creation, allowing extensions to customize the session directory path based
on cwd, git branch, or other context.

- Extensions can return a custom sessionDir in the event handler
- CLI --session-dir flag takes precedence over extension-provided paths
- If multiple extensions return a sessionDir, the last one wins
- Enables implementing branch-based sessions as an extension instead of core feature

This provides the extension point needed to implement git branch-based
session directories without adding the complexity to core.

Closes #1729
2026-03-08 00:19:35 +01:00
Aliou Diallo
e77e51e7ba fix(coding-agent): custom tool collapsed/expanded rendering in HTML export (#1934) 2026-03-07 19:01:33 +01:00
Mario Zechner
a3f05423d9 feat(coding-agent): add provider payload hook 2026-03-07 14:34:28 +01:00
Mario Zechner
e80692bcb6 fix(coding-agent): keep ~/.agents skills user-scoped\n\ncloses #1915 2026-03-07 12:21:54 +01:00
Mario Zechner
d1a17bbae5 fix(coding-agent): guard against stale kept pre-compaction usage in error-path threshold check 2026-03-06 16:57:14 +01:00
Mario Zechner
c950c692a1 fix(coding-agent): truncate tool results in compaction summarization to prevent overflow, fixes #1796 2026-03-06 16:57:14 +01:00
Mario Zechner
b8910f13ad fix(coding-agent): allow threshold compaction for error messages using last successful usage, fixes #1834 2026-03-06 16:26:11 +01:00
Joel Hooks
a4f4d91fa5 Prevent stale pre-compaction assistant usage from retriggering auto-compaction after session recovery payloads and prove it with a regression test 2026-03-06 16:17:13 +01:00
Mario Zechner
58f8fcd8f1 fix(coding-agent): retry sync lockfile acquisition to prevent false auth errors during parallel startup
Add manual retry loop (10 attempts, 20ms delay) around lockfile.lockSync()
in FileAuthStorageBackend and FileSettingsStorage. Previously, concurrent
pi processes would fail immediately on ELOCKED, causing auth.json to load
as empty and surfacing misleading 'No API key found' errors.

fixes #1871
2026-03-06 16:04:01 +01:00
Mario Zechner
cb6aef2ffb fix(coding-agent): preserve thinking defaults across model switches closes #1864 2026-03-06 15:14:53 +01:00
Mario Zechner
84655e814c fix(coding-agent): prefer workspace dist files for extension aliases 2026-03-06 00:39:13 +01:00
Markus Ylisiurunen
8a6384a925 add support for gpt-5.4 2026-03-05 22:53:08 +01:00
lajarre
1f39cc776a feat(coding-agent): add treeFilterMode setting for /tree default filter (#1852)
Add configurable initial filter mode for the session tree navigator.
Users who always switch to a specific filter (e.g. no-tools via Ctrl+T)
can now set it as default in settings.

Same pattern as doubleEscapeAction (#404). Filter infra from #747.
2026-03-05 22:25:58 +01:00
Sviatoslav Abakumov
1ce870db1b fix(coding-agent): use ESM resolution for extension alias fallback (#1821)
The previous fix (83b57924) replaced require.resolve() with bare
specifier fallbacks to avoid ERR_PACKAGE_PATH_NOT_EXPORTED for ESM-only
packages like pi-ai. However, bare specifiers are not valid jiti alias
targets, breaking extension loading in global npm installs.

Use import.meta.resolve() as the fallback instead. It respects the
"import" exports condition and returns a real file path.
2026-03-05 07:08:30 +01:00
Mario Zechner
83b57924a0 fix(coding-agent): resolve extension aliases without require.resolve 2026-03-04 21:18:45 +01:00
Mario Zechner
c0d706bf32 fix(extensions): alias pi-ai oauth subpath in jiti loader 2026-03-04 20:31:57 +01:00
Mario Zechner
e0754fdbb3 fix(ai,coding-agent): make pi-ai browser-safe and move OAuth runtime exports
- add browser smoke bundling check to root check + pre-commit

- lazy-load Bedrock provider registration to avoid browser graph traversal

- remove top-level OAuth runtime exports from @mariozechner/pi-ai

- add @mariozechner/pi-ai/oauth subpath export and update coding-agent imports

- move proxy dispatcher init to coding-agent CLI (Node-only)

- document Bedrock/OAuth browser limitations

closes #1814
2026-03-04 20:21:25 +01:00
Mario Zechner
e64cd15c25 fix(coding-agent): preserve session thinking for scoped model cycling
closes #1789
2026-03-04 19:51:55 +01:00
Cody Bontecou
f710c2705d feat: add branchSummary.skipPrompt setting to skip summarization prompt (#1792)
When enabled, /tree navigation skips the 'Summarize branch?' prompt and
defaults to no summary, reducing friction for users who never want branch
summaries.

Closes #1791
2026-03-04 17:54:36 +01:00
Sviatoslav Abakumov
5c61d6bc92 fix(coding-agent): queue messages during branch summarization (#1803)
Messages submitted while a branch summary was being generated were
processed immediately instead of being queued. This happened because
isCompacting only checked compaction abort controllers, not the branch
summary abort controller.

Include _branchSummaryAbortController in the isCompacting getter so all
existing guards (message queueing, reload blocking) also apply during
branch summarization.
2026-03-04 08:55:30 +01:00
Matteo Collina
d35935200f fix(coding-agent): avoid compaction reasoning for non-reasoning models (#1793) 2026-03-04 08:53:33 +01:00
Mario Zechner
6b4b920425 fix(coding-agent): stop overflow auto-compaction cascades
fixes #1319
2026-03-03 17:19:42 +01:00
Mario Zechner
42579dd923 feat(ai,coding-agent): add OpenCode Go provider support closes #1757 2026-03-03 16:02:29 +01:00
Mario Zechner
1912f0336b fix(coding-agent): allow model-level baseUrl override in models.json closes #1777 2026-03-03 15:46:58 +01:00
Mario Zechner
7bd4c45d81 fix(ai,coding-agent): update antigravity gemini 3.1 models and headers
fixes #1761
2026-03-03 14:54:43 +01:00
Aarni Koskela
993d916e56 perf(coding-agent): cache ModelsConfig validator (#1772) 2026-03-03 14:24:02 +01:00
Scott
6f4bd814b8 fix(coding-agent): allow provider-scoped custom model ids (#1759) 2026-03-03 14:20:49 +01:00
Mario Zechner
8903299074 fix(coding-agent): close retry wait race across queued events (from #1726) 2026-03-02 23:20:16 +01:00
Mario Zechner
7b7b967aef merge: PR #1719 for local testing 2026-03-02 22:54:58 +01:00
Mario Zechner
8d4a49487a fix(coding-agent): add tool promptGuidelines support fixes #1720 2026-03-02 22:50:08 +01:00
Mario Zechner
bc2fa8d6d0 fix(coding-agent): support dynamic tool registration and tool prompt snippets closes #1720 2026-03-02 22:32:07 +01:00
Mario Zechner
dfc779faab fix(coding-agent): serialize session event handling to preserve message order (fixes #1717) 2026-03-02 20:48:22 +01:00
Aljosa Asanovic
480d6bc62d fix(coding-agent): allow suppressing custom tool transcript blocks 2026-03-02 10:22:41 -05:00
Duncan Ogilvie
cec8c7888b fix(coding-agent): use alt+v for image pasting on Windows (#1682) 2026-02-27 22:51:16 +01:00
Mario Zechner
2f64df1e52 fix(coding-agent): prevent duplicate session headers when forking from pre-assistant entry
createBranchedSession() wrote the file and set flushed=true even when the
branched path had no assistant message. The next _persist() call saw no
assistant, reset flushed=false, and the subsequent flush appended all
in-memory entries to the already-populated file, duplicating the header
and entries.

Fix: defer file creation when the branched path has no assistant message,
matching the newSession() contract. _persist() creates the file on the
first assistant response.

closes #1672
2026-02-27 22:18:26 +01:00
Mario Zechner
3dcb3c1c77 Merge branch 'pr-1669-fixes'
# Conflicts:
#	package-lock.json
#	packages/ai/CHANGELOG.md
#	packages/coding-agent/CHANGELOG.md
2026-02-27 21:04:00 +01:00
Mario Zechner
2f55890452 fix(coding-agent,ai): finalize provider unregister lifecycle and dependency security updates fixes #1669 2026-02-27 21:00:25 +01:00
Mario Zechner
4939434997 fix(coding-agent): handle typebox alias path separators on windows 2026-02-26 00:28:23 +01:00
Matteo Collina
757d36a41b fix(coding-agent): add offline startup mode and network timeouts (#1631) 2026-02-25 19:44:49 +01:00
Mario Zechner
f0379384fe feat(coding-agent): prioritize project resources over global 2026-02-24 23:50:55 +01:00
Duncan Ogilvie
f1a2092bcf Do not create empty .pi folder unconditionally (#1588) 2026-02-23 00:59:10 +01:00