vinta-ai-workflows 0.7.0-alpha5 → 0.7.0-alpha7
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 +70 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,8 @@ the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
7
7
|
|
|
8
8
|
## [0.7.0] — YYYY-MM-DD
|
|
9
9
|
|
|
10
|
+
<!-- pre-release: 0.7.0-alpha7 on 2026-09-14 -->
|
|
11
|
+
<!-- pre-release: 0.7.0-alpha6 on 2026-09-13 -->
|
|
10
12
|
<!-- pre-release: 0.7.0-alpha5 on 2026-09-13 -->
|
|
11
13
|
<!-- pre-release: 0.7.0-alpha4 on 2026-09-13 -->
|
|
12
14
|
<!-- pre-release: 0.7.0-alpha3 on 2026-09-12 -->
|
|
@@ -15,6 +17,38 @@ the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
15
17
|
|
|
16
18
|
### Added
|
|
17
19
|
|
|
20
|
+
- **A run has a spokesperson you can ask.** `serve` grows a **Monitor** panel on
|
|
21
|
+
the run view: one agent that reads the journal and answers in prose — what is
|
|
22
|
+
blocked, why a phase failed, what it would take to move on. It runs on the
|
|
23
|
+
dearest tier on the crew, because it is read by a person deciding what to do
|
|
24
|
+
about a failing run, and it is asked a handful of times rather than hundreds.
|
|
25
|
+
|
|
26
|
+
Three things it deliberately is not.
|
|
27
|
+
|
|
28
|
+
**It is not in the permission path.** The obvious thought, once an agent has
|
|
29
|
+
been refused something, is to put a smarter agent in front of the refusals —
|
|
30
|
+
but a phase makes hundreds of tool calls (one node in one real run made 179)
|
|
31
|
+
and a model turn before each is latency and cost spent on questions like "may
|
|
32
|
+
I run ruff", which should never have been questions. Permissions are settled
|
|
33
|
+
structurally, once per spawn, for free.
|
|
34
|
+
|
|
35
|
+
**It does not read the transcripts.** Piping every agent's output into a
|
|
36
|
+
second agent would make the monitor the most expensive thing in the run and
|
|
37
|
+
tie its cost to the work rather than to the questions. It reads a bounded
|
|
38
|
+
digest — statuses, failure reasons, pending questions, the last few refusals
|
|
39
|
+
with their sentences, one trimmed last word per phase — so a one-hour run and
|
|
40
|
+
a one-day run cost about the same to ask about.
|
|
41
|
+
|
|
42
|
+
**It has no authority.** It can explain a §9.1 pause; it cannot answer one.
|
|
43
|
+
An agent that could quietly approve its colleagues' work would turn a
|
|
44
|
+
checkpoint into a formality, and the checkpoint is the point.
|
|
45
|
+
|
|
46
|
+
It answers about **finished runs too**, which is when "why did this fail" is
|
|
47
|
+
usually asked, and it needs no lane: it writes nothing.
|
|
48
|
+
|
|
49
|
+
- **`serve` reads `--permission`.** The flag has been accepted and ignored since
|
|
50
|
+
it existed. It decides how the monitor is spawned, so it is read now.
|
|
51
|
+
|
|
18
52
|
- **A plan staffs a team, instead of picking a model per phase.** Choosing a tier
|
|
19
53
|
phase by phase answers "what runs this one" ten times and never adds it up, so the
|
|
20
54
|
two questions that decide what a feature costs go unasked: how many agents does
|
|
@@ -220,6 +254,42 @@ the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
220
254
|
|
|
221
255
|
### Fixed
|
|
222
256
|
|
|
257
|
+
- **An agent can run a shell command.** `auto` mapped to the vendor's
|
|
258
|
+
`acceptEdits`, which accepts file *edits* and nothing else — a shell command
|
|
259
|
+
still goes to a permission prompt, and in `-p` there is nobody to answer one.
|
|
260
|
+
A run of eight phases died of it: the agents wrote their code and were then
|
|
261
|
+
refused `ruff`, `pytest`, `git add` and `docker compose`, **69 denials across
|
|
262
|
+
two lanes**, every gate failing on work that was never allowed to be checked.
|
|
263
|
+
`auto` now allows `Bash` in the policy file it already writes.
|
|
264
|
+
|
|
265
|
+
What that costs is worth stating plainly: **`Bash` was never confined to the
|
|
266
|
+
lane.** The deny list covers the file-editing tools and a shell redirection
|
|
267
|
+
walks through it, so allowing the shell allows commands on the machine.
|
|
268
|
+
`auto` has always promised exactly this in words — "the agent works unattended
|
|
269
|
+
inside its lane" — and this is the first version where the words are true.
|
|
270
|
+
`ask` still does not allow it: that mode exists for a human at the browser,
|
|
271
|
+
and the prompt is its purpose.
|
|
272
|
+
|
|
273
|
+
- **A refusal says why, in the words the harness used.** `permission_denied`
|
|
274
|
+
carried a decision token and deliberately dropped the sentence beside it, on
|
|
275
|
+
§11 grounds. Then a run failed with forty-five denials reading
|
|
276
|
+
`reason: "other"`, and finding out what that meant cost an afternoon and a
|
|
277
|
+
rebuilt reproduction — the sentence said "this Bash command contains multiple
|
|
278
|
+
operations; the following parts require approval". §11 keeps repository
|
|
279
|
+
*contents* out of the record; a refusal's own explanation is not contents, and
|
|
280
|
+
the `tool_use` row above it already carries the path and the command verbatim.
|
|
281
|
+
Withholding it protected nothing and hid the one fact worth having.
|
|
282
|
+
|
|
283
|
+
- **`serve` opens a run that has already finished.** The API resolved a run from
|
|
284
|
+
the in-memory registry *and* the journal and required both, so a daemon
|
|
285
|
+
started with nothing running listed the operator's history — the list reads
|
|
286
|
+
the journal — and then answered 404 for every run in it, under a message
|
|
287
|
+
saying the daemon was not running. Reads now need only the journal, which is
|
|
288
|
+
where a run's whole record lives and which outlives the daemon by design
|
|
289
|
+
(§5.3). Steering a finished run is still refused, with `409` rather than
|
|
290
|
+
`404`: the run exists, and saying it does not sends the operator hunting for a
|
|
291
|
+
typo instead of reading the status in front of them.
|
|
292
|
+
|
|
223
293
|
- **Four places the UI asked the operator to work around it.** The transcript
|
|
224
294
|
opened at the *oldest* row it held, so a live agent's newest line — the one
|
|
225
295
|
the panel was opened to read — sat below the fold and every arriving entry
|
package/package.json
CHANGED