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.