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.
Files changed (2) hide show
  1. package/CHANGELOG.md +70 -0
  2. 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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vinta-ai-workflows",
3
- "version": "0.7.0-alpha5",
3
+ "version": "0.7.0-alpha7",
4
4
  "description": "Bootstrap AI tooling (AGENTS.md, skills, sub-agents) across Claude Code, Codex, Cursor, and VS Code + GitHub Copilot.",
5
5
  "type": "module",
6
6
  "bin": {