vinta-ai-workflows 0.7.0-alpha6 → 0.7.0-alpha8
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 +80 -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-alpha8 on 2026-09-14 -->
|
|
11
|
+
<!-- pre-release: 0.7.0-alpha7 on 2026-09-14 -->
|
|
10
12
|
<!-- pre-release: 0.7.0-alpha6 on 2026-09-13 -->
|
|
11
13
|
<!-- pre-release: 0.7.0-alpha5 on 2026-09-13 -->
|
|
12
14
|
<!-- pre-release: 0.7.0-alpha4 on 2026-09-13 -->
|
|
@@ -16,6 +18,77 @@ the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
16
18
|
|
|
17
19
|
### Added
|
|
18
20
|
|
|
21
|
+
- **A failed phase retries itself, and then asks.** `--on-failure` defaults to
|
|
22
|
+
`retry`: one cold re-attempt (`--retries <n>`, 0–5), and then the node parks
|
|
23
|
+
on a question — retry, retry with another member of the crew, or stop. The
|
|
24
|
+
failures this system produces are overwhelmingly environmental and are gone by
|
|
25
|
+
the second attempt; the ones that survive it are the ones worth a person.
|
|
26
|
+
`ask` skips the automatic attempt. `stop` is the old behaviour and remains the
|
|
27
|
+
right choice for CI, because everything else eventually **waits**.
|
|
28
|
+
|
|
29
|
+
A failure that survives its retries says so: the reason carries
|
|
30
|
+
`(after N attempts)`, which no event otherwise records.
|
|
31
|
+
|
|
32
|
+
- **A failed phase can be retried by hand.** A **Retry phase** button, and
|
|
33
|
+
`POST /api/runs/:runId/nodes/:nodeId/retry`. It returns the node to the ready
|
|
34
|
+
set and unblocks the subtree its failure blocked — a phase that died of
|
|
35
|
+
something environmental holds up work that was never broken. It needs the run
|
|
36
|
+
to still be in flight, which with the new default it usually is; a run that
|
|
37
|
+
has genuinely ended is re-run, not retried, and says so rather than doing
|
|
38
|
+
nothing.
|
|
39
|
+
|
|
40
|
+
- **The monitor can go and look.** It was given a digest and nothing else, and
|
|
41
|
+
read exactly as thin as that sounds — it could say a phase had failed and
|
|
42
|
+
never say what the phase had written. It is briefed as a technical project
|
|
43
|
+
manager now, with the map: the plan document, each phase's brief, each lane's
|
|
44
|
+
worktree path, each branch and its base, and where the journal and transcripts
|
|
45
|
+
live. It has a shell and its working directory is the repository, so it can
|
|
46
|
+
read the diff before drawing a conclusion. The digest stays as the index —
|
|
47
|
+
bounded, cheap, enough to know which phase is worth a closer look.
|
|
48
|
+
|
|
49
|
+
- **The monitor conversation is kept.** It lived in component state, so a reload
|
|
50
|
+
threw away every question and every answer — a worse record than the run it
|
|
51
|
+
describes. It is written to the transcript store under a reserved node id and
|
|
52
|
+
read back on load, so it outlives the tab, the daemon and the run.
|
|
53
|
+
|
|
54
|
+
- **Panels expand.** Anything holding content that is only nominally
|
|
55
|
+
summarisable — an agent's transcript, a gate log, the monitor conversation,
|
|
56
|
+
the steering box — takes the full container width and about a screen of
|
|
57
|
+
height on demand. The height travels as a CSS variable, because the element
|
|
58
|
+
that has to grow is a scroller several components below the panel.
|
|
59
|
+
|
|
60
|
+
- **A run has a spokesperson you can ask.** `serve` grows a **Monitor** panel on
|
|
61
|
+
the run view: one agent that reads the journal and answers in prose — what is
|
|
62
|
+
blocked, why a phase failed, what it would take to move on. It runs on the
|
|
63
|
+
dearest tier on the crew, because it is read by a person deciding what to do
|
|
64
|
+
about a failing run, and it is asked a handful of times rather than hundreds.
|
|
65
|
+
|
|
66
|
+
Three things it deliberately is not.
|
|
67
|
+
|
|
68
|
+
**It is not in the permission path.** The obvious thought, once an agent has
|
|
69
|
+
been refused something, is to put a smarter agent in front of the refusals —
|
|
70
|
+
but a phase makes hundreds of tool calls (one node in one real run made 179)
|
|
71
|
+
and a model turn before each is latency and cost spent on questions like "may
|
|
72
|
+
I run ruff", which should never have been questions. Permissions are settled
|
|
73
|
+
structurally, once per spawn, for free.
|
|
74
|
+
|
|
75
|
+
**It does not read the transcripts.** Piping every agent's output into a
|
|
76
|
+
second agent would make the monitor the most expensive thing in the run and
|
|
77
|
+
tie its cost to the work rather than to the questions. It reads a bounded
|
|
78
|
+
digest — statuses, failure reasons, pending questions, the last few refusals
|
|
79
|
+
with their sentences, one trimmed last word per phase — so a one-hour run and
|
|
80
|
+
a one-day run cost about the same to ask about.
|
|
81
|
+
|
|
82
|
+
**It has no authority.** It can explain a §9.1 pause; it cannot answer one.
|
|
83
|
+
An agent that could quietly approve its colleagues' work would turn a
|
|
84
|
+
checkpoint into a formality, and the checkpoint is the point.
|
|
85
|
+
|
|
86
|
+
It answers about **finished runs too**, which is when "why did this fail" is
|
|
87
|
+
usually asked, and it needs no lane: it writes nothing.
|
|
88
|
+
|
|
89
|
+
- **`serve` reads `--permission`.** The flag has been accepted and ignored since
|
|
90
|
+
it existed. It decides how the monitor is spawned, so it is read now.
|
|
91
|
+
|
|
19
92
|
- **A plan staffs a team, instead of picking a model per phase.** Choosing a tier
|
|
20
93
|
phase by phase answers "what runs this one" ten times and never adds it up, so the
|
|
21
94
|
two questions that decide what a feature costs go unasked: how many agents does
|
|
@@ -221,6 +294,13 @@ the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
221
294
|
|
|
222
295
|
### Fixed
|
|
223
296
|
|
|
297
|
+
- **`serve --host 0.0.0.0` prints a URL another machine can open.** Binding
|
|
298
|
+
every interface made the server report the wildcard back, so the line printed
|
|
299
|
+
for the operator to open — and share — was `http://0.0.0.0:<port>`, which
|
|
300
|
+
resolves for nobody. The bind is unchanged; the printed host is now this
|
|
301
|
+
machine's LAN address. The daemon still warns, because the token in that URL
|
|
302
|
+
is the only thing between the run and anyone who can reach the port.
|
|
303
|
+
|
|
224
304
|
- **An agent can run a shell command.** `auto` mapped to the vendor's
|
|
225
305
|
`acceptEdits`, which accepts file *edits* and nothing else — a shell command
|
|
226
306
|
still goes to a permission prompt, and in `-p` there is nobody to answer one.
|
package/package.json
CHANGED