Commit Graph

653 Commits

Author SHA1 Message Date
David Brailovsky 12545274ea windows: reset pi terminal title after checking npm packages
on windows the npm check changes the terminal title and it doesn't change back
this is a narrow fix for it
fixes #6629
2026-07-15 15:14:55 +00:00
Mario Zechner 45203abfa0 fix(coding-agent): Coalesce adjacent assistant thinking blocks into one section 2026-07-15 12:52:53 +02:00
Mario Zechner fab309e955 fix(coding-agent): refresh model catalogs in picker 2026-07-15 12:35:29 +02:00
Mario Zechner cd7cad4ee2 feat(coding-agent): merge origin/main into model runtime facade 2026-07-15 12:25:36 +02:00
Mario Zechner 9993c96907 feat(coding-agent): replace model registry with model runtime
Move provider auth and OAuth flows onto pi-ai Models, compose models.json and extension overlays through ModelRuntime, and retain ModelRegistry as an extension compatibility facade.
2026-07-14 17:48:45 +02:00
Armin Ronacher adfac437bb fix(coding-agent): clarify login options 2026-07-14 12:24:50 +02:00
Armin Ronacher d7a48d30a0 fix(coding-agent): fall back to text clipboard paste 2026-07-10 21:46:15 +02:00
Armin Ronacher 3b686ac224 feat(coding-agent): add message copy shortcut 2026-07-10 21:35:53 +02:00
Armin Ronacher 3ea064ea2a fix: support Bedrock API key login 2026-07-10 19:34:11 +02:00
Mario Zechner fbdd46389c feat(ai): add max thinking level 2026-07-09 22:30:53 +02:00
Armin Ronacher 3f9aa5d10b feat(coding-agent): add prompt cache miss tracking (#6427)
Detect prompt cache misses per turn by comparing each assistant message's
cache reads against the previous request's prompt tokens (core/cache-stats.ts).
Significant misses emit a warning-colored transcript notice at the turn they
occur, noting idle gaps past the cache TTL and model switches when relevant.

/session gained cache statistics: a compact token/cache breakdown with hit
rate, a $-prefixed cost section with per-model cost breakdown, and the
cumulative cost re-billed due to cache misses.
2026-07-09 14:12:57 +02:00
Mario Zechner e9fa5a68a1 fix(coding-agent): add settled agent lifecycle event
closes #6363
2026-07-09 12:42:08 +02:00
Mario Zechner 1ffca0f2aa fix(coding-agent): align reload descriptions
closes #6395
2026-07-09 11:47:44 +02:00
David Brailovsky 86afffe01f fix fork menu allowing user to double select an entry (#6430)
in cases where forking a session was not immediate due to extensions
slowing down teardown, it's possible for the user to select the
message to fork more than once and then create multiple session forks.

in this fix we close the forking menu before starting the fork process
to not allow such behavior.

fixes #6321
2026-07-08 18:23:22 +02:00
Armin Ronacher 312bc713bb feat(coding-agent): support provider arguments for login 2026-07-08 12:06:26 +02:00
Armin Ronacher c8ada4e76e Improve project-local pi config (#6309)
* feat(coding-agent): improve config resource overrides

* fix(coding-agent): simplify config resource overrides
2026-07-06 20:50:30 +02:00
Mario Zechner ba10b60b51 fix(coding-agent): add entry renderers for session entries 2026-07-01 11:30:26 +02:00
Mario Zechner 9be55bc773 fix(coding-agent): apply output padding to user messages
closes #6168
2026-06-30 11:55:40 +02:00
Alexey Zaytsev 6564d94717 feat(coding-agent): add configurable assistant output padding
Closes #6168
2026-06-30 11:44:34 +02:00
Mario Zechner 5d499272a8 fix(coding-agent): stabilize interactive status indicators
Closes #6026
2026-06-29 16:53:39 +02:00
Armin Ronacher 5a073885b5 feat(coding-agent): add external editor setting
Closes #6122
2026-06-27 23:57:46 +02:00
Armin Ronacher f2e9d75388 fix(coding-agent): preserve backslash escapes in user messages
closes #6105
2026-06-27 19:24:14 +02:00
Mario Zechner f14b3594c1 fix(coding-agent): show length stop errors
closes #4290
2026-06-25 14:50:14 +02:00
haoqixu c5440162b8 fix(coding-agent): show resources before messages when resuming session 2026-06-24 20:41:34 +08:00
Mario Zechner 470a4736a3 Merge pull request #5784 from Perlence/fix/threaded-session-latest-activity
fix(coding-agent): sort threaded sessions by latest activity in the subtree
2026-06-23 15:20:14 +02:00
Mario Zechner 7fedc3324e Merge pull request #5999 from haoqixu/fix-5996
fix(coding-agent): normalize session names
2026-06-23 15:15:52 +02:00
haoqixu 7c1ef87756 fix(coding-agent): normalize session names 2026-06-23 19:14:02 +08:00
Armin Ronacher aa6bdd778a fix(coding-agent): load resume startup themes 2026-06-22 17:20:08 +02:00
Mario Zechner abbd911693 Merge main into model-registry 2026-06-22 14:00:18 +02:00
Armin Ronacher 2417adb46a fix(coding-agent): preserve startup extension UI
closes #5943
2026-06-21 23:19:34 +02:00
Armin Ronacher d93b92baca fix(coding-agent): show changelog URL in update notice 2026-06-20 22:23:25 +02:00
Vegard Stikbakke 373cd6ae52 fix(coding-agent): prioritize provider matches in model selector
closes #5892
2026-06-19 12:25:02 +02:00
Armin Ronacher 7d08c81a09 fix(coding-agent): avoid empty compaction summaries
closes #4811
2026-06-18 22:17:57 +02:00
Armin Ronacher aae62dfa87 feat(coding-agent): make bare update self-only 2026-06-18 18:09:03 +02:00
Armin Ronacher d0b46764b1 feat(coding-agent): add automatic theme mode (#5874) 2026-06-18 17:13:47 +02:00
Vegard Stikbakke 008c76f955 feat(coding-agent): export project config dir name 2026-06-18 10:27:11 +02:00
Armin Ronacher 6d5ede31c8 fix(coding-agent): match provider-first model searches 2026-06-17 17:16:39 +02:00
Vegard Stikbakke 068ab5d19b fix(coding-agent): horizontally pan tree selector
Fixes #5830
2026-06-17 14:41:39 +02:00
Armin Ronacher 8f0e9251b9 fix(coding-agent): do not open browser for device code login 2026-06-16 17:35:50 +02:00
Armin Ronacher 7cfd1af395 fix(coding-agent): keep empty session selector open
closes #5747
2026-06-16 00:39:44 +02:00
Armin Ronacher bee8e9c805 feat(coding-agent): mark experimental sessions in footer 2026-06-15 23:22:23 +02:00
Sviatoslav Abakumov ebdf9b65e7 fix(coding-agent): sort threaded sessions by latest activity in the subtree 2026-06-16 00:39:30 +04:00
Armin Ronacher bb959aae01 fix(coding-agent): wrap tree help on narrow terminals
closes #5055
2026-06-15 01:25:46 +02:00
Armin Ronacher ba0ec61563 fix(coding-agent): restore terminal on SIGTERM
closes #5724
2026-06-15 00:47:35 +02:00
Vegard Stikbakke f0989800cb feat: detect first-run terminal theme (#5385) 2026-06-14 07:14:42 +02:00
Armin Ronacher b4bff7f0d0 fix(coding-agent): avoid project trust prompt for update (#5674) 2026-06-12 23:37:16 +02:00
Mario Zechner 019b022068 Merge remote-tracking branch 'origin/main' into model-registry 2026-06-11 00:43:04 +02:00
Mario Zechner 8a0903ebf2 feat(ai): compat entrypoint, core-only root barrel (phase 5)
The root barrel is now core-only and side-effect free: types,
createModels/createProvider, auth substrate, lazyStream/lazyApi, faux,
utils. Generated catalogs, api-registry, env-api-keys, images, global
stream functions, and per-API lazy wrappers leave the root.

New @earendil-works/pi-ai/compat preserves the old surface verbatim as
a strict superset of the root: api-dispatch stream/complete with env
key injection, the builtin registration side effect (skip-if-present so
it cannot clobber earlier overrides), deprecated getModel/getModels/
getProviders aliases of the new getBuiltin* reads in providers/all,
lazy api wrappers + setBedrockProviderModule, and image generation.
Compat dies with the coding-agent ModelManager migration.

Packaging: exports map gains ./compat, ./providers/*, ./api/*;
sideEffects array lists only the effectful modules.

Old-global imports across agent/coding-agent/examples and pi-ai tests
switch to /compat (path-only; compat is a superset). The coding-agent
extension loader resolves the pi-ai ROOT specifier to compat, so
existing user extensions using the old global API keep working at
runtime until compat is removed. vitest configs alias /compat to src;
browser smoke imports old globals from /compat.
2026-06-10 21:17:12 +02:00
Vegard Stikbakke 406a2214aa fix(coding-agent): refine setup copy 2026-06-10 19:55:19 +02:00
Vegard Stikbakke 0ab2aa86af feat(coding-agent): add experimental first-time setup flow (#5587)
Behind PI_EXPERIMENTAL=1, show a first-time setup dialog on interactive startup when the default agent directory is used and settings.json does not exist. The dialog preselects the detected terminal appearance with an explicit dark/light choice (live preview) and asks for opt-in analytics data sharing. Submitting writes settings.json, which serves as the completion marker; opting in stores a generated trackingId. Escape at any point skips out of setup.
2026-06-10 12:11:49 +02:00