ur-agent 1.76.7 → 1.77.1
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
CHANGED
|
@@ -1,5 +1,103 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.77.1
|
|
4
|
+
|
|
5
|
+
- Finishing a task no longer produces a long write-up. Both output-efficiency
|
|
6
|
+
sections said "be concise" but neither addressed what actually ran long, so
|
|
7
|
+
the rules are now specific: never paste code or file contents already written
|
|
8
|
+
to disk (cite `file_path:line`), report an audit or review as its findings
|
|
9
|
+
one line each, no closing recap of the conversation, and long explanations
|
|
10
|
+
only when the user asks for one. Subagent reports carry the same rule, since
|
|
11
|
+
their output is relayed verbatim.
|
|
12
|
+
|
|
13
|
+
## 1.77.0
|
|
14
|
+
|
|
15
|
+
- Edit no longer demands a prior Read. A matching `old_string` is checked
|
|
16
|
+
against the bytes on disk, which is exactly what "has this been read?" and
|
|
17
|
+
"has it changed since?" were asking — and stronger, since a stale snapshot
|
|
18
|
+
cannot survive a match against fresh content. The verified content is
|
|
19
|
+
recorded so the write path and later staleness checks work from it. This
|
|
20
|
+
removes a full model round trip from the most common mutating call. A
|
|
21
|
+
genuinely absent `old_string` is still refused, and now says the file has not
|
|
22
|
+
been read so the model knows to read it.
|
|
23
|
+
- Write no longer refuses an unread existing file. It reads and records the
|
|
24
|
+
file itself — one local read instead of a round trip spent asking for content
|
|
25
|
+
nobody needed to see — and the "modified since read" check is unchanged, now
|
|
26
|
+
working from that recorded baseline.
|
|
27
|
+
- Bash no longer issues a `mkdir` syscall on the critical path of every
|
|
28
|
+
command. The task output directory is process-wide and cannot change after
|
|
29
|
+
the first one, so it is created once; a failure is not cached, so the next
|
|
30
|
+
command retries.
|
|
31
|
+
|
|
32
|
+
## 1.76.11
|
|
33
|
+
|
|
34
|
+
- AskUserQuestion recovers the payload shape where a model flattens one
|
|
35
|
+
question's choices straight into `questions`, so six options arrived as six
|
|
36
|
+
question objects carrying a label and a description and no question text.
|
|
37
|
+
Every entry reported "question must be a non-empty string" and "options must
|
|
38
|
+
be an array". The array is folded back into the options of a single question
|
|
39
|
+
using the question text the payload already carries. A genuine
|
|
40
|
+
multi-question payload is never retargeted, and with no question text
|
|
41
|
+
anywhere the payload is still reported rather than given an invented
|
|
42
|
+
question.
|
|
43
|
+
|
|
44
|
+
## 1.76.10
|
|
45
|
+
|
|
46
|
+
- `npm publish` builds before it validates. `prepack` ran `release:check`
|
|
47
|
+
against whatever `dist/` happened to be on disk, so publishing straight after
|
|
48
|
+
a version bump always failed on a bundle that predated it — which is exactly
|
|
49
|
+
how 1.76.9 failed to publish. It now runs `build && release:check`, so the
|
|
50
|
+
check validates the artifact that actually ships.
|
|
51
|
+
- A backgrounded subagent that exhausts its turn budget says so in its
|
|
52
|
+
completion notification instead of presenting a truncated result as a
|
|
53
|
+
finished one. The notification status has no value for "incomplete", so the
|
|
54
|
+
notice is carried in the message, matching how the handoff warning is
|
|
55
|
+
surfaced on the same path.
|
|
56
|
+
|
|
57
|
+
## 1.76.9
|
|
58
|
+
|
|
59
|
+
- Crew fan-out no longer abandons sibling workers when one throws. Both paths
|
|
60
|
+
passed raw worker promises to `Promise.race`/`Promise.all`, so the first
|
|
61
|
+
throw propagated while every other worker kept running unawaited, leaking
|
|
62
|
+
worktrees and child processes and turning a second failure into an unhandled
|
|
63
|
+
rejection. Failures are collected and rethrown once all workers finish.
|
|
64
|
+
- `bunfig.toml` and the JetBrains `build.gradle.kts` are bumped with every
|
|
65
|
+
other surface; both were left behind by an earlier hand-edited bump.
|
|
66
|
+
- `packageSmoke` no longer declares a 30s per-test budget that silently
|
|
67
|
+
overrode the release gate's own timeout, and the OpenAI Responses usage test
|
|
68
|
+
no longer asserts the double-counted `input_tokens` that the usage-accounting
|
|
69
|
+
invariants forbid.
|
|
70
|
+
|
|
71
|
+
## 1.76.8
|
|
72
|
+
|
|
73
|
+
- Streaming requests no longer time out while the provider is still working.
|
|
74
|
+
SSE comment keepalives (OpenRouter's `: OPENROUTER PROCESSING`) and provider
|
|
75
|
+
`ping` events were dropped by the SSE readers, so the inactivity watchdog saw
|
|
76
|
+
a frozen stream while bytes were arriving and aborted it as `Request timed
|
|
77
|
+
out`. They now surface as pings that rearm the watchdog.
|
|
78
|
+
- Streaming requests get their own header-wait ceiling
|
|
79
|
+
(`provider.streamTimeoutMs` / `UR_STREAM_REQUEST_TIMEOUT_MS`, default 15
|
|
80
|
+
minutes) instead of sharing the 120s non-streaming timeout, which cut off long
|
|
81
|
+
prompts during queueing and prefill. Idle thresholds raised to 300s.
|
|
82
|
+
- The Ollama stream deadline is rearmed per chunk, so it bounds silence rather
|
|
83
|
+
than total runtime; a local model answering a long prompt is no longer killed
|
|
84
|
+
mid-answer.
|
|
85
|
+
- Edit resolves `old_string` against blocks the model re-indented, `Read`
|
|
86
|
+
line-number gutters copied into the string, and non-breaking/zero-width
|
|
87
|
+
character differences. `new_string` is re-indented to the file's depth. A
|
|
88
|
+
failed match now names the line where the block diverges instead of echoing
|
|
89
|
+
the string back.
|
|
90
|
+
- AskUserQuestion no longer replaces an unrepairable payload with `null`, which
|
|
91
|
+
made every failure report a missing `questions` array regardless of the real
|
|
92
|
+
defect.
|
|
93
|
+
- Concurrent tool and subagent fan-out closes every generator it started when a
|
|
94
|
+
consumer aborts or a sibling throws; previously their `finally` blocks never
|
|
95
|
+
ran, leaving subprocesses and streams alive after the batch reported done.
|
|
96
|
+
- Both tool executors read one concurrency resolver, so
|
|
97
|
+
`UR_CODE_MAX_TOOL_USE_CONCURRENCY` and `UR_MAX_CONCURRENT_TOOLS` apply on
|
|
98
|
+
either path instead of whichever executor happened to be active.
|
|
99
|
+
- A subagent that exhausts its turn budget reports `partial` with the reason
|
|
100
|
+
rather than `completed` with a truncated result.
|
|
3
101
|
## 1.76.7
|
|
4
102
|
|
|
5
103
|
- Reverted to the 1.76.4 behavior and removed the intermediate version surface transitions.
|