toolroll 0.9.33 → 0.9.36
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 +57 -0
- package/README.md +7 -0
- package/dist/assignment.d.ts +1 -0
- package/dist/assignment.js +2 -2
- package/dist/browser/workspace.css +1 -1
- package/dist/browser/workspace.js +17 -17
- package/dist/browser-crew.js +1 -0
- package/dist/browser-workspace.d.ts +5 -3
- package/dist/builder.js +4 -7
- package/dist/chat-acceptance.d.ts +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +124 -63
- package/dist/contracts/contract-test.d.ts +45 -0
- package/dist/contracts/contract-test.js +69 -0
- package/dist/contracts/contract.d.ts +87 -0
- package/dist/contracts/contract.js +308 -0
- package/dist/contracts/flow-propose.d.ts +325 -0
- package/dist/contracts/flow-propose.js +41 -0
- package/dist/contracts/flow.d.ts +19400 -0
- package/dist/contracts/flow.js +359 -0
- package/dist/contracts/handoff.d.ts +91 -0
- package/dist/contracts/handoff.js +82 -0
- package/dist/contracts/plan.d.ts +58 -0
- package/dist/contracts/plan.js +67 -0
- package/dist/contracts/proof.d.ts +136 -0
- package/dist/contracts/proof.js +110 -0
- package/dist/contracts/verification-receipt.d.ts +148 -0
- package/dist/contracts/verification-receipt.js +87 -0
- package/dist/demo.js +28 -11
- package/dist/desktop-update.d.ts +1 -1
- package/dist/evidence.d.ts +3 -40
- package/dist/evidence.js +7 -3
- package/dist/flow-gallery.d.ts +3 -2
- package/dist/flow-share.d.ts +10 -32
- package/dist/flow-share.js +65 -83
- package/dist/flow-starters.d.ts +2 -1
- package/dist/flow-triggers.d.ts +15 -72
- package/dist/flow-triggers.js +94 -83
- package/dist/flows.d.ts +37 -218
- package/dist/flows.js +350 -385
- package/dist/mate-tools.js +14 -44
- package/dist/mcp-connect.d.ts +3 -0
- package/dist/mcp-connect.js +16 -4
- package/dist/operate.js +83 -12
- package/dist/plan.d.ts +12 -12
- package/dist/plan.js +109 -72
- package/dist/planner-source.js +2 -1
- package/dist/planner.js +55 -25
- package/dist/process-recovery-eligibility.d.ts +2 -2
- package/dist/process-recovery-eligibility.js +13 -8
- package/dist/project-admission.d.ts +93 -0
- package/dist/project-admission.js +134 -0
- package/dist/project-delete-ui.js +5 -2
- package/dist/proof.d.ts +15 -91
- package/dist/proof.js +90 -249
- package/dist/result-evidence-readers.d.ts +42 -0
- package/dist/result-evidence-readers.js +91 -0
- package/dist/runner.d.ts +10 -0
- package/dist/runner.js +16 -0
- package/dist/scope.js +4 -3
- package/dist/serve.d.ts +4 -0
- package/dist/serve.js +112 -160
- package/dist/setup-guide.d.ts +2 -2
- package/dist/store.d.ts +2 -0
- package/dist/store.js +4 -0
- package/dist/surface.js +16 -3
- package/dist/task-review-brief.d.ts +75 -0
- package/dist/task-review-brief.js +179 -0
- package/dist/text-limits.d.ts +87 -0
- package/dist/text-limits.js +86 -0
- package/dist/verification-evidence.js +24 -12
- package/dist/when-html.d.ts +2 -0
- package/dist/when-html.js +13 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,62 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.9.36 — 2026-10-06
|
|
4
|
+
|
|
5
|
+
- **Flows have one contract.** Every kind of zone, step, route, answer,
|
|
6
|
+
option, trigger and the flow file is described once
|
|
7
|
+
(`src/contracts/flow.ts`), and that description is what the lead's
|
|
8
|
+
`propose_flow` is told, what `toolroll flows create/edit/import` and the
|
|
9
|
+
console check, and what `docs/flow-file.schema.json` publishes (now
|
|
10
|
+
generated, so it includes Send to me, Person chooses and `ifReplied`, which
|
|
11
|
+
the hand-written one had missed). A refusal names the field and suggests the
|
|
12
|
+
one meant: `steps[0].routes[0]: unknown key 'to' (did you mean goesTo?)`,
|
|
13
|
+
`zones[2]: unknown key 'onFail' (did you mean ifFails?)`, instead of
|
|
14
|
+
"there's no step called ." Every saved flow, template, starter, kit and
|
|
15
|
+
gallery flow reads exactly as before: the same saved bytes and digests, and
|
|
16
|
+
the same exported files.
|
|
17
|
+
- **Tightened, on purpose.** A step, flow file zone, trigger setting or
|
|
18
|
+
`propose_flow` argument with a key its kind doesn't take is refused by name
|
|
19
|
+
rather than silently ignored: `planning` on a Holding step, `remindAfter` on
|
|
20
|
+
a Wait step, `ifFails` on a Sort step (use `ifNotSure`, which it meant) or
|
|
21
|
+
`next` on a Sort or Person chooses step. A sort's `sureAt` is 0.5–99. A flow
|
|
22
|
+
file's zones keep only the words their kind uses when exported, and a file
|
|
23
|
+
or drawing made by a newer Toolroll is refused as such. Messages for flows
|
|
24
|
+
and triggers changed from "Zone Build: …" sentences to path-named lines.
|
|
25
|
+
|
|
26
|
+
- **Builder handoffs and proofs have one contract.** The handoff a builder
|
|
27
|
+
leaves, its proof and the verification receipt are versioned schemas. Fifteen
|
|
28
|
+
real past runs replay with identical verdicts, receipt bytes and digests.
|
|
29
|
+
- **One compact review packet.** `toolroll task review <id> --brief` (or
|
|
30
|
+
`--json`) shows a build's conclusion, changed files, check result, review
|
|
31
|
+
findings by severity, screenshot paths and what to do next, in about 40
|
|
32
|
+
lines and without logs or diffs.
|
|
33
|
+
- **PostHog connects in one short step.** Its sign-in now uses PostHog's own
|
|
34
|
+
MCP permission preset instead of listing every permission, which showed a
|
|
35
|
+
75-group permission screen. Sign-in returns are now logged.
|
|
36
|
+
- **Tests can't mistake a real process for a fake one.** Fake process IDs in
|
|
37
|
+
tests sit above every platform's limit, and a guard refuses new low ones (a
|
|
38
|
+
Brave tab and a GitHub runner process had made tests fail at random).
|
|
39
|
+
|
|
40
|
+
## 0.9.35 — 2026-10-05
|
|
41
|
+
|
|
42
|
+
- **One-click sign-ins ask for every permission a service lists.** Toolroll
|
|
43
|
+
asked for only the first 20, so a service needing one later in its list
|
|
44
|
+
issued a token it then refused (PostHog needs `user:read`, its 140th).
|
|
45
|
+
Reconnect a service that failed its test after signing in.
|
|
46
|
+
|
|
47
|
+
## 0.9.34 — 2026-10-05
|
|
48
|
+
|
|
49
|
+
- **Plans have one contract.** The first step of making every handoff robust:
|
|
50
|
+
a plan is described once, and that description is both what the planner is
|
|
51
|
+
told to return and what Toolroll checks. Limits come from one place, so the
|
|
52
|
+
2,000-versus-8,000 mismatch from 0.9.30 can't happen again, and a malformed
|
|
53
|
+
plan's retry quotes the exact field that was wrong.
|
|
54
|
+
- **Projects added from the command line show in the console.** `toolroll
|
|
55
|
+
repos add` (you or the lead) admits a project the same way the console's Add
|
|
56
|
+
a project does, and it appears within seconds without a restart. Removing
|
|
57
|
+
works the same way. Every addition is recorded with who made it.
|
|
58
|
+
- **Crew rows show when they last changed** ("4m", "2h", "3d").
|
|
59
|
+
|
|
3
60
|
## 0.9.33 — 2026-10-05
|
|
4
61
|
|
|
5
62
|
- **A restart never breaks a project's builds.** A project's identity no
|
package/README.md
CHANGED
|
@@ -117,10 +117,17 @@ toolroll project use /path/to/project
|
|
|
117
117
|
toolroll project show
|
|
118
118
|
toolroll brief
|
|
119
119
|
toolroll assignment show <task>
|
|
120
|
+
toolroll task review <task> --brief
|
|
120
121
|
toolroll task complete <task>
|
|
121
122
|
toolroll task revise <task> --feedback "Keep the filter selected after reload."
|
|
122
123
|
```
|
|
123
124
|
|
|
125
|
+
`task review <task> --brief` combines the latest finished build or report's conclusion,
|
|
126
|
+
file counts, checks, review findings, screenshot paths, plan and next actions.
|
|
127
|
+
Use `--run <id>` for an earlier attempt, `--json` for the same fields, and `--all`
|
|
128
|
+
to include LOW findings. Lists stay bounded, with omitted entries counted; missing
|
|
129
|
+
fields say `not recorded`. The lead token works through `--token` or `TOOLROLL_LEAD_TOKEN`.
|
|
130
|
+
|
|
124
131
|
Completion and revisions use the local sign-in already saved by `up`. Completion
|
|
125
132
|
reports the exact run, commit and check outcome it handled. Agents use a scoped
|
|
126
133
|
credential (`project use /path/to/project --token-file /path/to/credential`) and
|
package/dist/assignment.d.ts
CHANGED
|
@@ -170,6 +170,7 @@ export declare function assignmentBrief(assignment: AssignmentSnapshot | null):
|
|
|
170
170
|
status: "not-recorded";
|
|
171
171
|
};
|
|
172
172
|
} | null;
|
|
173
|
+
export declare function assignmentChecksForRun(store: Store, root: string | undefined, runId: number, now: Date): AssignmentChecks;
|
|
173
174
|
export declare function assignmentOf(store: Store, taskId: string, now: Date, access: AssignmentAccess, root?: string): AssignmentSnapshot | null;
|
|
174
175
|
type MutationResult = {
|
|
175
176
|
ok: true;
|
package/dist/assignment.js
CHANGED
|
@@ -83,7 +83,7 @@ function ownerOf(store, rootId, repo) {
|
|
|
83
83
|
}
|
|
84
84
|
// Report the recorded check outcome, never turn a model verdict into a check.
|
|
85
85
|
// Follow-up checks on the same commit (Run checks) upgrade a pass and show a failure.
|
|
86
|
-
function
|
|
86
|
+
export function assignmentChecksForRun(store, root, runId, now) {
|
|
87
87
|
const own = buildChecks(store, root, runId);
|
|
88
88
|
const run = store.getRun(runId);
|
|
89
89
|
const followUps = followUpChecksOf(store, runId, now, root);
|
|
@@ -163,7 +163,7 @@ export function assignmentOf(store, taskId, now, access, root) {
|
|
|
163
163
|
const reports = artifacts.filter(a => a.kind === "report");
|
|
164
164
|
const unavailable = family.versions.flatMap(version => store.runsFor(version.refId).flatMap(run => store.artifactsFor(run.id).filter(artifact => root === undefined || !readVerifiedArtifact(root, artifact).ok)
|
|
165
165
|
.map(artifact => `Saved ${artifact.kind} #${artifact.id} (run ${run.id}) is unavailable or changed.`)));
|
|
166
|
-
const checks = result === null ? null :
|
|
166
|
+
const checks = result === null ? null : assignmentChecksForRun(store, root, result.id, now);
|
|
167
167
|
const finishedBuild = result?.role === "builder" && (result.outcome === "built" || result.outcome === "no-change") &&
|
|
168
168
|
result.finishedAt !== null && /^[a-f0-9]{40}$/.test(result.headRevision ?? "");
|
|
169
169
|
// Finished work returns to its lead or user. Strict terms and previous model
|