ur-agent 1.73.0 → 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +76 -1
- package/dist/cli.js +6392 -5456
- package/docs/VALIDATION.md +1 -1
- package/documentation/index.html +1 -1
- package/extensions/jetbrains-ur/build.gradle.kts +1 -1
- package/extensions/vscode-ur-inline-diffs/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 1.
|
|
3
|
+
## 1.75.0
|
|
4
|
+
|
|
5
|
+
- The UI can no longer stay on "working" for a prompt that is running nowhere.
|
|
6
|
+
`QueryGuard`'s `dispatching` state — the gap between `reserve()` and
|
|
7
|
+
`tryStart()` — has no owner: if that chain dies where handlePromptSubmit's
|
|
8
|
+
`finally` cannot observe it, nothing calls `cancelReservation()`, `isActive`
|
|
9
|
+
stays true forever, and the queue behind it never drains. The guard now
|
|
10
|
+
records when it entered a state, and an outstanding reservation older than
|
|
11
|
+
120s is released and logged. `running` is deliberately excluded — a long
|
|
12
|
+
query is legitimate and is bounded by the request and stream-inactivity
|
|
13
|
+
timeouts instead.
|
|
14
|
+
- New work no longer lands in a finished task list. `useTasksV2` clears a fully
|
|
15
|
+
completed list on a 5s hide timer, so a `TaskCreate` inside that window
|
|
16
|
+
appended to it: the new list arrived pre-populated with ticked items and the
|
|
17
|
+
progress count was wrong from the first task. `TaskCreate` now retires a
|
|
18
|
+
fully completed list before adding, making the rule deterministic rather than
|
|
19
|
+
timing-dependent. A list with any pending, running, failed or blocked task is
|
|
20
|
+
left alone, so "add this to the current list" still works.
|
|
21
|
+
|
|
22
|
+
## 1.74.0
|
|
4
23
|
|
|
5
24
|
- Provider API key entry no longer renders one character per line. The field in
|
|
6
25
|
the provider picker omitted `columns`, `cursorOffset` and
|
|
@@ -30,6 +49,62 @@
|
|
|
30
49
|
entries (four choices plus "Other") pushed the tail below the footer divider
|
|
31
50
|
and read as a detached second group. The list is now sized to the terminal
|
|
32
51
|
and only windows when the height genuinely cannot fit it.
|
|
52
|
+
- Cached and reasoning tokens are no longer discarded, and the cached prefix is
|
|
53
|
+
no longer counted twice. OpenAI-shaped providers report `prompt_tokens` as
|
|
54
|
+
the whole input including `prompt_tokens_details.cached_tokens`, while the
|
|
55
|
+
internal counters are disjoint and summed for the context total. Every
|
|
56
|
+
provider adapter now goes through one normalisation pass that partitions the
|
|
57
|
+
counters correctly and carries `reasoning_tokens` separately, since it is
|
|
58
|
+
already inside `completion_tokens`.
|
|
59
|
+
- OpenRouter turns report usage at all. OpenRouter returns no usage block
|
|
60
|
+
unless `usage: { include: true }` is sent, which it never was — the direct
|
|
61
|
+
cause of "0 tokens" on that provider.
|
|
62
|
+
- Model lists carry the metadata the provider actually returns. The id-only
|
|
63
|
+
mapping discarded the human name, context length and pricing, so OpenRouter's
|
|
64
|
+
rotating free tier was invisible. Free models are detected from pricing
|
|
65
|
+
(falling back to the `:free` suffix), listed first, and deprecated entries
|
|
66
|
+
listed last. Concurrent discovery requests for the same provider now share
|
|
67
|
+
one call, a stale cache reports its age instead of being shown as current,
|
|
68
|
+
and ctrl+r re-runs discovery from the picker.
|
|
69
|
+
- Tool schemas no longer forward `$schema`, `$defs`/`$ref`, or vendor keys
|
|
70
|
+
nested below the root. A recursive tool schema emitted `{"$ref": "#"}`, which
|
|
71
|
+
Gemini cannot express and non-OpenAI compatible servers frequently fail to
|
|
72
|
+
resolve; references are inlined instead. Gemini receives a narrowed dialect
|
|
73
|
+
with its unsupported keywords removed and `anyOf: [T, null]` folded into
|
|
74
|
+
`nullable`. Prepared schemas are validated before sending, so a malformed one
|
|
75
|
+
fails with a specific message instead of being retried unchanged.
|
|
76
|
+
- Bash reports the command's own exit code and always records its working
|
|
77
|
+
directory. The `pwd -P` capture was chained after the command with `&&`, so
|
|
78
|
+
it never ran when the command failed (losing a preceding `cd`), its own
|
|
79
|
+
failure masked a successful command as failed when the command removed its
|
|
80
|
+
working directory, and a command containing `exit` terminated the shell
|
|
81
|
+
before the capture ran. The capture now runs from an `EXIT` trap.
|
|
82
|
+
- A streaming provider that goes silent mid-response now fails with a stated
|
|
83
|
+
reason. The total-request timeout is cleared once headers arrive, which for a
|
|
84
|
+
streaming request left no timeout at all — the stream stayed open and the UI
|
|
85
|
+
showed work in progress indefinitely. An inactivity watchdog aborts after a
|
|
86
|
+
gap between chunks; a long stream that keeps producing is never interrupted.
|
|
87
|
+
- AskUserQuestion repairs duplicate questions and option labels instead of
|
|
88
|
+
rejecting them. The uniqueness rule failed the whole call, so a recoverable
|
|
89
|
+
formatting slip cost a round trip and showed the user nothing.
|
|
90
|
+
- The question view no longer rules a line between the choices and the
|
|
91
|
+
numbered actions below them. The footer entries continue the same numbering
|
|
92
|
+
as the choices ("1..N" choices, then "N+1 Chat about this"), so a full-width
|
|
93
|
+
divider cut them off from the list they belong to and they read as a detached
|
|
94
|
+
second group. The duplicate rule above the planning path is gone too.
|
|
95
|
+
- `TaskUpdate` no longer fails an entire call because one dependency points at
|
|
96
|
+
its own task. A self-edge carries no ordering information, so it is dropped
|
|
97
|
+
and the status change and remaining valid dependencies still apply; the
|
|
98
|
+
previous behaviour discarded all of them. An unknown dependency target now
|
|
99
|
+
names the missing id and lists the tasks that do exist, instead of returning
|
|
100
|
+
a bare `task_not_found` the caller could only retry unchanged.
|
|
101
|
+
- The status bar is field-based and width-aware. Fields are declared with a
|
|
102
|
+
priority and dropped lowest-first when the terminal is narrow, rather than
|
|
103
|
+
being cut mid-word with everything to the right silently lost. Task progress
|
|
104
|
+
reports completed-of-total, pending tasks are no longer counted as active,
|
|
105
|
+
and a field with nothing to report is omitted rather than rendered as zero.
|
|
106
|
+
`/status-bar` chooses which fields are shown; the choice persists in
|
|
107
|
+
`statusBarFields`.
|
|
33
108
|
|
|
34
109
|
## 1.72.0
|
|
35
110
|
|