toolroll 0.9.92 → 0.9.93
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 +19 -0
- package/dist/assignment-status.d.ts +1 -1
- package/dist/assignment-ui.js +2 -2
- package/dist/assignment.js +11 -3
- package/dist/browser/workspace.css +1 -1
- package/dist/browser/workspace.js +30 -30
- package/dist/browser-crew.js +2 -2
- package/dist/browser-workspace.d.ts +3 -5
- package/dist/builder.js +21 -2
- package/dist/check-facts.d.ts +124 -0
- package/dist/check-facts.js +272 -0
- package/dist/check-report.d.ts +5 -0
- package/dist/check-report.js +4 -3
- package/dist/cli.js +5 -0
- package/dist/contracts/console-api.d.ts +2 -2
- package/dist/contracts/console-api.js +2 -2
- package/dist/contracts/release-check.d.ts +25 -1
- package/dist/contracts/release-check.js +19 -0
- package/dist/desktop-update.d.ts +2 -2
- package/dist/desktop-update.js +13 -9
- package/dist/eval-hooks.d.ts +55 -0
- package/dist/eval-hooks.js +227 -4
- package/dist/flaky.d.ts +17 -0
- package/dist/flaky.js +9 -0
- package/dist/needs-you.d.ts +7 -7
- package/dist/needs-you.js +12 -10
- package/dist/operate.js +138 -18
- package/dist/project-delete.js +5 -1
- package/dist/project-knowledge.d.ts +6 -6
- package/dist/push.d.ts +10 -3
- package/dist/push.js +22 -6
- package/dist/release-adapters.js +11 -1
- package/dist/release-approval.d.ts +191 -0
- package/dist/release-approval.js +382 -0
- package/dist/release-auto.js +13 -4
- package/dist/release-card.d.ts +73 -4
- package/dist/release-card.js +168 -23
- package/dist/release-cli.js +9 -1
- package/dist/release.d.ts +30 -0
- package/dist/release.js +42 -3
- package/dist/result-acts.d.ts +3 -3
- package/dist/result-acts.js +1 -1
- package/dist/server/guards.js +1 -0
- package/dist/server/pages-assets.js +1 -1
- package/dist/server/render-release.d.ts +17 -0
- package/dist/server/render-release.js +84 -0
- package/dist/server/render-results.d.ts +0 -2
- package/dist/server/render-results.js +4 -6
- package/dist/server/render-tasks.js +3 -3
- package/dist/server/route-table.d.ts +1 -1
- package/dist/server/route-table.js +7 -1
- package/dist/server/tasks.d.ts +15 -0
- package/dist/server/tasks.js +102 -20
- package/dist/setup-guide.d.ts +2 -2
- package/dist/stop-proof.d.ts +67 -0
- package/dist/stop-proof.js +293 -0
- package/dist/store.d.ts +70 -31
- package/dist/store.js +335 -95
- package/dist/surface.js +1 -1
- package/dist/task-outcome-cli.js +19 -0
- package/dist/toolroll-update-ui.js +2 -2
- package/dist/toolroll-update.js +1 -0
- package/dist/work-index.js +7 -9
- package/dist/work-summary.d.ts +2 -2
- package/package.json +1 -1
package/dist/work-index.js
CHANGED
|
@@ -41,7 +41,7 @@ const AGENT_ASK = `(SELECT q.id FROM agent_question q JOIN run qr ON qr.id=q.run
|
|
|
41
41
|
const GATE_PAUSE_ON_TASK = pauseOnTaskProviders('p', 'c.ref_id');
|
|
42
42
|
/** Index codes that wait on a person, as their need (needs-you.ts); dispatch codes come from task-status's own table. */
|
|
43
43
|
const INDEX_NEED = {
|
|
44
|
-
'earlier-active': 'earlier-version', 'process-needs-attention': '
|
|
44
|
+
'earlier-active': 'earlier-version', 'process-needs-attention': 'stop-unproven', 'invalid-scope': 'define-task', 'decision-queue': 'questions',
|
|
45
45
|
};
|
|
46
46
|
/** Every index code that can wait on a person. */
|
|
47
47
|
const PERSON_CODES = ['history-problem', 'earlier-active', 'ready-to-check', 'waiting-decision', 'decision-queue', 'result-needs-attention',
|
|
@@ -572,7 +572,7 @@ function itemOf(row, principal, probe, leadName, readiness, readable = false) {
|
|
|
572
572
|
const code = String(row['code']), id = String(row['id']);
|
|
573
573
|
const custody = code === 'process-needs-attention' || (code === 'result-needs-attention' && n(row, 'custody_unresolved') === 1);
|
|
574
574
|
const process = custody && probe !== undefined ? processNeedOf(probe(id)) : null;
|
|
575
|
-
const waiting = process !== null && 'wait' in process;
|
|
575
|
+
const waiting = (process !== null && 'wait' in process) || (custody && probe === undefined);
|
|
576
576
|
const need = n(row, 'needs') === 1 && !waiting, running = n(row, 'family_running') === 1;
|
|
577
577
|
// The lead's claim (lead-voice.ts): the row still reads its own stage, worded "<name> is on it".
|
|
578
578
|
const lead = n(row, 'lead_claim') === 1 ? 'on-it' : n(row, 'lead_claim') === 2 ? 'lapsed' : null;
|
|
@@ -647,14 +647,11 @@ function itemOf(row, principal, probe, leadName, readiness, readable = false) {
|
|
|
647
647
|
actionCode = 'open-result';
|
|
648
648
|
actionLabel = 'Open result';
|
|
649
649
|
}
|
|
650
|
+
// Toolroll proves a build stopped itself; only a stop it can't prove from here offers "Check again", never a vouch.
|
|
650
651
|
if (process !== null && 'need' in process) {
|
|
651
|
-
actionCode = '
|
|
652
|
+
actionCode = 'recheck-stopped';
|
|
652
653
|
actionLabel = NEEDS[process.need].action.label;
|
|
653
654
|
}
|
|
654
|
-
else if (custody && probe === undefined) {
|
|
655
|
-
actionCode = 'confirm-stopped';
|
|
656
|
-
actionLabel = NEEDS['confirm-stopped'].action.label;
|
|
657
|
-
}
|
|
658
655
|
if (code === 'signed-out') {
|
|
659
656
|
actionCode = 'sign-in';
|
|
660
657
|
actionLabel = NEEDS['sign-in'].action.label;
|
|
@@ -668,7 +665,7 @@ function itemOf(row, principal, probe, leadName, readiness, readable = false) {
|
|
|
668
665
|
target: { taskId: successor ?? (code === 'earlier-active' ? s(row, 'earlier_id') ?? id : actionCode === 'answer-decision' ? s(row, 'question_task') ?? id : id),
|
|
669
666
|
runId: actionCode === 'answer-decision' ? n(row, 'question_run') || null : actionCode === 'answer-agent' ? n(row, 'agent_ask_run') || null : actionCode === 'inspect-run' && code === 'running' ? n(row, 'live_run') || null : actionCode === 'open-result' || actionCode === 'inspect-run' ? n(row, 'result_id') || null
|
|
670
667
|
: actionCode === 'reconcile-run' ? n(row, 'unfinished') || null : ['resume-run', 'inspect-stop'].includes(actionCode) ? n(row, 'stop_run') || null
|
|
671
|
-
: actionCode === '
|
|
668
|
+
: actionCode === 'recheck-stopped' ? process?.build ?? (n(row, 'result_id') || null) : null,
|
|
672
669
|
decisionId: actionCode === 'answer-decision' ? n(row, 'question_id') || null : null },
|
|
673
670
|
access: read ? 'read' : principal === 'operator' ? 'operator-control' : ['answer-decision', 'answer-agent', 'write-scope', 'unhold'].includes(actionCode) ? 'proposal-only' : 'operator-handoff',
|
|
674
671
|
retry: actionCode === 'reconcile-run' ? 'reconcile-before-retry' : read ? 'read-again' : 'refresh-before-acting' };
|
|
@@ -676,7 +673,8 @@ function itemOf(row, principal, probe, leadName, readiness, readable = false) {
|
|
|
676
673
|
const coded = stageOfCode(code, { needsPerson: personNeed, planning: s(row, 'live_role') === 'planner', operatorHold: s(row, 'hold_kind') === 'operator' });
|
|
677
674
|
const reading = process !== null
|
|
678
675
|
? 'wait' in process ? { stage: 'waiting', wait: process.wait } : { stage: 'needs-you', need: process.need }
|
|
679
|
-
|
|
676
|
+
// Not read here (no process probe): Toolroll's own stop check settles it, so it waits on no one.
|
|
677
|
+
: custody ? { stage: 'waiting', wait: 'build-checking' }
|
|
680
678
|
: coded.stage === 'needs-you' && (coded.need === undefined || coded.need === 'other') && INDEX_NEED[code] !== undefined ? { stage: 'needs-you', need: INDEX_NEED[code] } : coded;
|
|
681
679
|
const checkStatus = s(row, 'check_status'), verdict = s(row, 'proof_verdict');
|
|
682
680
|
const finished = reading.stage === 'finished' || reading.stage === 'complete';
|
package/dist/work-summary.d.ts
CHANGED
|
@@ -8,9 +8,9 @@ export type WorkTarget = {
|
|
|
8
8
|
decisionId: number | null;
|
|
9
9
|
};
|
|
10
10
|
export type WorkAction = {
|
|
11
|
-
/** `
|
|
11
|
+
/** `recheck-stopped`: Toolroll looks again whether a finished build stopped (nobody vouches for it);
|
|
12
12
|
* `sign-in`: the agent's sign-in, in Settings; `answer-agent`: Reply to a running agent's question on the Agents board. */
|
|
13
|
-
code: DispatchAction | "inspect-task" | "inspect-run" | "inspect-stop" | "inspect-decisions" | "reconcile-run" | "open-pr" | "
|
|
13
|
+
code: DispatchAction | "inspect-task" | "inspect-run" | "inspect-stop" | "inspect-decisions" | "reconcile-run" | "open-pr" | "recheck-stopped" | "sign-in" | "answer-agent";
|
|
14
14
|
label: string;
|
|
15
15
|
target: WorkTarget;
|
|
16
16
|
access: "read" | "operator-control" | "proposal-only" | "operator-handoff";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "toolroll",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.93",
|
|
4
4
|
"description": "A control plane for unattended coding agents — queue tasks, walk away, come back to pull requests. Agents build in leased worktrees, never touch your default branch, and interrupt you only for decisions that need a human.",
|
|
5
5
|
"directories": {
|
|
6
6
|
"doc": "docs"
|