toolroll 0.9.93 → 0.9.95
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 +79 -0
- package/dist/activity-line.d.ts +7 -4
- package/dist/activity-line.js +9 -7
- package/dist/agent-fence.d.ts +10 -0
- package/dist/agent-fence.js +6 -3
- package/dist/approval-authority.d.ts +7 -1
- package/dist/approval-authority.js +11 -2
- package/dist/approval-password.d.ts +31 -0
- package/dist/approval-password.js +26 -0
- package/dist/assignment-status.d.ts +1 -1
- package/dist/assignment-ui.js +3 -1
- package/dist/assignment.js +5 -0
- package/dist/attest.d.ts +3 -0
- package/dist/attest.js +10 -0
- package/dist/boot-identity.d.ts +2 -1
- package/dist/boot-identity.js +6 -4
- package/dist/bounded-spawn.d.ts +57 -0
- package/dist/bounded-spawn.js +220 -0
- package/dist/browser/terminal.js +42 -42
- package/dist/browser/workspace.css +1 -1
- package/dist/browser/workspace.js +32 -32
- package/dist/browser-crew.js +2 -0
- package/dist/browser-shell.d.ts +1 -1
- package/dist/browser-shell.js +2 -2
- package/dist/browser-workspace.d.ts +50 -2
- package/dist/browser-workspace.js +3 -3
- package/dist/build-review.js +2 -0
- package/dist/builder-restart.d.ts +21 -0
- package/dist/builder-restart.js +50 -0
- package/dist/builder.d.ts +11 -2
- package/dist/builder.js +234 -101
- package/dist/card-catalog.d.ts +209 -0
- package/dist/card-catalog.js +133 -0
- package/dist/card-cli.d.ts +43 -0
- package/dist/card-cli.js +44 -0
- package/dist/card-render.d.ts +26 -0
- package/dist/card-render.js +223 -0
- package/dist/card-sources.d.ts +68 -0
- package/dist/card-sources.js +234 -0
- package/dist/chat-acceptance.js +1 -1
- package/dist/chat-actions.d.ts +106 -9
- package/dist/chat-actions.js +473 -46
- package/dist/chat-approval.d.ts +13 -0
- package/dist/chat-approval.js +39 -9
- package/dist/chat-card-part.d.ts +11 -0
- package/dist/chat-card-part.js +18 -0
- package/dist/chat-card.d.ts +46 -0
- package/dist/chat-card.js +99 -0
- package/dist/chat-channel.d.ts +2 -0
- package/dist/chat-channel.js +37 -14
- package/dist/chat-controls.d.ts +4 -0
- package/dist/chat-controls.js +4 -0
- package/dist/chat-decide.d.ts +10 -16
- package/dist/chat-decide.js +79 -62
- package/dist/chat-delivery.js +13 -4
- package/dist/chat-flow.d.ts +0 -27
- package/dist/chat-flow.js +31 -2
- package/dist/chat-quiet.js +4 -4
- package/dist/chat-task-actions.d.ts +3 -2
- package/dist/chat-task-actions.js +19 -5
- package/dist/chat-terms.d.ts +14 -2
- package/dist/chat-terms.js +35 -0
- package/dist/chat-voice.d.ts +1 -1
- package/dist/chat-voice.js +2 -2
- package/dist/check-facts.d.ts +3 -1
- package/dist/check-facts.js +57 -11
- package/dist/check-failure.d.ts +24 -3
- package/dist/check-failure.js +89 -13
- package/dist/check-levels-ui.d.ts +4 -0
- package/dist/check-levels-ui.js +10 -1
- package/dist/check-load.d.ts +85 -0
- package/dist/check-load.js +147 -0
- package/dist/check-only-standing.d.ts +36 -0
- package/dist/check-only-standing.js +39 -0
- package/dist/check-only.d.ts +15 -0
- package/dist/check-only.js +99 -0
- package/dist/check-repair.d.ts +47 -0
- package/dist/check-repair.js +240 -0
- package/dist/check-report.d.ts +2 -0
- package/dist/check-report.js +1 -1
- package/dist/check-stamp.d.ts +46 -0
- package/dist/check-stamp.js +93 -0
- package/dist/checkout-cleanup.d.ts +36 -5
- package/dist/checkout-cleanup.js +166 -14
- package/dist/claim.d.ts +6 -0
- package/dist/claim.js +13 -2
- package/dist/cli-help.d.ts +4 -1
- package/dist/cli-help.js +49 -30
- package/dist/cli.js +15 -1
- package/dist/code-extract.d.ts +44 -0
- package/dist/code-extract.js +88 -0
- package/dist/code-map-acts.d.ts +24 -0
- package/dist/code-map-acts.js +53 -0
- package/dist/code-map-admission.d.ts +52 -0
- package/dist/code-map-admission.js +295 -0
- package/dist/code-map-build.d.ts +63 -0
- package/dist/code-map-build.js +415 -0
- package/dist/code-map-cli.d.ts +153 -0
- package/dist/code-map-cli.js +103 -0
- package/dist/code-map-main.d.ts +1 -0
- package/dist/code-map-main.js +48 -0
- package/dist/code-map-read.d.ts +106 -0
- package/dist/code-map-read.js +171 -0
- package/dist/code-map-report.d.ts +37 -0
- package/dist/code-map-report.js +95 -0
- package/dist/code-map-shape.d.ts +172 -0
- package/dist/code-map-shape.js +327 -0
- package/dist/code-map-store.d.ts +136 -0
- package/dist/code-map-store.js +233 -0
- package/dist/coding-provider.d.ts +3 -1
- package/dist/coding-provider.js +12 -7
- package/dist/coding-update.js +3 -2
- package/dist/coding-workspace.d.ts +1 -1
- package/dist/coding-workspace.js +8 -8
- package/dist/console-chrome.js +2 -2
- package/dist/containment.d.ts +5 -0
- package/dist/containment.js +14 -1
- package/dist/contracts/chat-actions.d.ts +92 -0
- package/dist/contracts/chat-actions.js +20 -0
- package/dist/contracts/chat-card.d.ts +91 -0
- package/dist/contracts/chat-card.js +54 -0
- package/dist/contracts/chat-content.d.ts +191 -0
- package/dist/contracts/chat-content.js +4 -0
- package/dist/contracts/cli.d.ts +52 -0
- package/dist/contracts/cli.js +4 -0
- package/dist/contracts/console-api.d.ts +12 -3
- package/dist/contracts/console-api.js +12 -3
- package/dist/contracts/flow-propose.d.ts +8 -1
- package/dist/contracts/flow-propose.js +3 -1
- package/dist/contracts/flow-send.d.ts +126 -0
- package/dist/contracts/flow-send.js +3 -0
- package/dist/contracts/gateway-tools.d.ts +17 -0
- package/dist/contracts/gateway-tools.js +3 -1
- package/dist/contracts/lead-tools.d.ts +234 -0
- package/dist/contracts/lead-tools.js +25 -1
- package/dist/contracts/project-knowledge.d.ts +38 -5
- package/dist/contracts/project-knowledge.js +11 -5
- package/dist/contracts/project-memory.d.ts +3 -1
- package/dist/contracts/project-memory.js +3 -2
- package/dist/contracts/storage.d.ts +14 -0
- package/dist/contracts/storage.js +3 -1
- package/dist/contracts/store-json.d.ts +18 -0
- package/dist/contracts/youiyoux-request.d.ts +1 -1
- package/dist/contracts/youiyoux-request.js +1 -1
- package/dist/desktop-access.js +6 -2
- package/dist/discord-chat.js +14 -0
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +25 -16
- package/dist/dispose.d.ts +19 -0
- package/dist/dispose.js +55 -9
- package/dist/easy-start.js +2 -3
- package/dist/eval-oracle.js +4 -1
- package/dist/evals.js +2 -1
- package/dist/evidence-pair.d.ts +53 -0
- package/dist/evidence-pair.js +128 -0
- package/dist/exhaustion.d.ts +17 -4
- package/dist/exhaustion.js +44 -4
- package/dist/export.js +1 -1
- package/dist/failing-first.d.ts +31 -0
- package/dist/failing-first.js +44 -0
- package/dist/fallback-schema.d.ts +8 -0
- package/dist/fallback-schema.js +40 -0
- package/dist/fallback.d.ts +138 -0
- package/dist/fallback.js +605 -0
- package/dist/fast-start.d.ts +136 -0
- package/dist/fast-start.js +431 -0
- package/dist/fast-terms.d.ts +9 -0
- package/dist/fast-terms.js +23 -0
- package/dist/fenced-check-coverage.d.ts +62 -0
- package/dist/fenced-check-coverage.js +54 -0
- package/dist/findings.d.ts +224 -0
- package/dist/findings.js +449 -0
- package/dist/first-run.js +1 -1
- package/dist/flaky-ci.d.ts +31 -0
- package/dist/flaky-ci.js +149 -0
- package/dist/flaky-cli.d.ts +60 -0
- package/dist/flaky-cli.js +60 -0
- package/dist/flaky.d.ts +75 -9
- package/dist/flaky.js +255 -0
- package/dist/fleet-schema.d.ts +17 -0
- package/dist/fleet-schema.js +135 -0
- package/dist/flow-browser.js +2 -2
- package/dist/flow-card-task.js +3 -0
- package/dist/flow-code.d.ts +2 -2
- package/dist/flow-code.js +9 -5
- package/dist/flow-result-card.d.ts +22 -0
- package/dist/flow-result-card.js +55 -0
- package/dist/flow-send.js +12 -9
- package/dist/flow-steps.js +1 -1
- package/dist/flow-triggers.d.ts +1 -1
- package/dist/flow-triggers.js +2 -2
- package/dist/flow-unattended.d.ts +26 -0
- package/dist/flow-unattended.js +12 -3
- package/dist/flows-ui.js +10 -2
- package/dist/follow-through-brief.d.ts +12 -0
- package/dist/follow-through-brief.js +31 -0
- package/dist/follow-through-cli.d.ts +23 -0
- package/dist/follow-through-cli.js +153 -0
- package/dist/git-incident.d.ts +16 -0
- package/dist/git-incident.js +69 -6
- package/dist/github-import.d.ts +62 -0
- package/dist/github-import.js +146 -0
- package/dist/guides.js +15 -10
- package/dist/handover-note.d.ts +33 -0
- package/dist/handover-note.js +106 -0
- package/dist/invoke.d.ts +25 -2
- package/dist/invoke.js +157 -58
- package/dist/job-object-helper.ps1 +10 -3
- package/dist/keymap.d.ts +41 -0
- package/dist/keymap.js +51 -0
- package/dist/knowledge-cli.js +1 -1
- package/dist/knowledge-ui.d.ts +21 -4
- package/dist/knowledge-ui.js +75 -7
- package/dist/laptop-background.d.ts +16 -0
- package/dist/laptop-background.js +108 -2
- package/dist/lead-cli.js +26 -24
- package/dist/lead-context.js +1 -1
- package/dist/lead-contract.d.ts +1 -1
- package/dist/lead-contract.js +3 -2
- package/dist/lead-doors.d.ts +4 -0
- package/dist/lead-doors.js +2 -2
- package/dist/lead-progress.js +5 -0
- package/dist/lead-status.d.ts +2 -0
- package/dist/lead-status.js +6 -2
- package/dist/lead-tools.js +162 -34
- package/dist/lead.js +2 -2
- package/dist/lesson-notes.d.ts +81 -0
- package/dist/lesson-notes.js +336 -0
- package/dist/limits-ui.js +1 -1
- package/dist/local-owner.d.ts +1 -1
- package/dist/local-owner.js +16 -0
- package/dist/machine-check.d.ts +16 -0
- package/dist/machine-check.js +26 -0
- package/dist/machine-identity.d.ts +75 -0
- package/dist/machine-identity.js +170 -0
- package/dist/mcp-core.js +11 -1
- package/dist/memory-cli.d.ts +300 -1
- package/dist/memory-cli.js +62 -9
- package/dist/memory-pass.d.ts +16 -0
- package/dist/memory-pass.js +67 -3
- package/dist/memory-tidy.d.ts +181 -0
- package/dist/memory-tidy.js +523 -0
- package/dist/memory-use.d.ts +35 -0
- package/dist/memory-use.js +109 -0
- package/dist/merge-checklist.d.ts +55 -0
- package/dist/merge-checklist.js +182 -0
- package/dist/modes.d.ts +6 -6
- package/dist/modes.js +3 -1
- package/dist/needs-you.d.ts +31 -9
- package/dist/needs-you.js +110 -41
- package/dist/nightly-github.d.ts +2 -0
- package/dist/nightly-github.js +4 -4
- package/dist/operate-remote-arguments.js +7 -1
- package/dist/operate-remote.js +3 -1
- package/dist/operate.d.ts +6 -1
- package/dist/operate.js +565 -64
- package/dist/phase-routing.js +2 -2
- package/dist/plain-schema.d.ts +23 -0
- package/dist/plain-schema.js +94 -0
- package/dist/plain-words.d.ts +20 -0
- package/dist/plain-words.js +66 -0
- package/dist/plan-login.d.ts +14 -0
- package/dist/plan-login.js +58 -0
- package/dist/planner.d.ts +1 -1
- package/dist/planner.js +4 -2
- package/dist/process-liveness.d.ts +2 -0
- package/dist/process-liveness.js +61 -17
- package/dist/project-delete-ui.d.ts +19 -2
- package/dist/project-delete-ui.js +29 -1
- package/dist/project-delete.js +14 -1
- package/dist/project-knowledge.d.ts +18 -11
- package/dist/project-knowledge.js +39 -9
- package/dist/project-learning.d.ts +2 -1
- package/dist/project-learning.js +15 -45
- package/dist/project-memory.d.ts +5 -0
- package/dist/project-memory.js +22 -2
- package/dist/project-tools.d.ts +4 -4
- package/dist/project-tools.js +23 -7
- package/dist/proof.js +30 -5
- package/dist/protected-storage-look.d.ts +1 -0
- package/dist/protected-storage-look.js +13 -0
- package/dist/protected-storage.d.ts +70 -39
- package/dist/protected-storage.js +196 -147
- package/dist/provider-auth.js +1 -1
- package/dist/provider-capture.d.ts +34 -0
- package/dist/provider-capture.js +53 -0
- package/dist/publish.js +9 -1
- package/dist/pull-request-flow.js +5 -0
- package/dist/push.d.ts +18 -2
- package/dist/push.js +40 -16
- package/dist/release-adapters.d.ts +9 -0
- package/dist/release-adapters.js +76 -0
- package/dist/release-auto.js +13 -13
- package/dist/release-card.d.ts +1 -2
- package/dist/release-card.js +11 -0
- package/dist/release-carry.d.ts +7 -2
- package/dist/release-carry.js +49 -10
- package/dist/release-cli.d.ts +4 -0
- package/dist/release-cli.js +29 -22
- package/dist/release-coverage.js +1 -1
- package/dist/release-next.d.ts +48 -0
- package/dist/release-next.js +161 -0
- package/dist/release.d.ts +20 -1
- package/dist/release.js +85 -9
- package/dist/remote-destination.d.ts +36 -0
- package/dist/remote-destination.js +217 -0
- package/dist/remote-main.d.ts +48 -0
- package/dist/remote-main.js +84 -5
- package/dist/repository-context.d.ts +3 -2
- package/dist/repository-context.js +112 -70
- package/dist/restart-certification.d.ts +1 -0
- package/dist/restart-certification.js +8 -6
- package/dist/result-acts.d.ts +27 -19
- package/dist/result-acts.js +36 -25
- package/dist/result-follow-ups.d.ts +2 -2
- package/dist/result-follow-ups.js +18 -4
- package/dist/result-review.d.ts +1 -1
- package/dist/route-change-check.d.ts +4 -0
- package/dist/route-change-check.js +13 -0
- package/dist/route-change.d.ts +22 -0
- package/dist/route-change.js +89 -0
- package/dist/route-hooks.js +3 -2
- package/dist/route-results.d.ts +6 -1
- package/dist/route-results.js +14 -5
- package/dist/run-closeout.d.ts +1 -1
- package/dist/run-closeout.js +7 -5
- package/dist/runner-process.js +3 -2
- package/dist/runner.js +2 -1
- package/dist/scope.d.ts +28 -4
- package/dist/scope.js +92 -28
- package/dist/scout.d.ts +1 -1
- package/dist/scout.js +2 -1
- package/dist/serve.d.ts +1 -1
- package/dist/serve.js +26 -18
- package/dist/server/chat.js +16 -14
- package/dist/server/chrome.d.ts +1 -1
- package/dist/server/chrome.js +26 -35
- package/dist/server/console.css +73 -0
- package/dist/server/guards.js +3 -0
- package/dist/server/home.d.ts +6 -0
- package/dist/server/home.js +21 -13
- package/dist/server/http.js +1 -1
- package/dist/server/kit.js +1 -1
- package/dist/server/merge-ready-view.d.ts +10 -0
- package/dist/server/merge-ready-view.js +30 -0
- package/dist/server/pages-assets.d.ts +1 -0
- package/dist/server/pages-assets.js +8 -5
- package/dist/server/pages.js +103 -82
- package/dist/server/render-chat.js +16 -3
- package/dist/server/render-code-map.d.ts +30 -0
- package/dist/server/render-code-map.js +137 -0
- package/dist/server/render-flaky.d.ts +20 -0
- package/dist/server/render-flaky.js +59 -0
- package/dist/server/render-follow-through.d.ts +11 -0
- package/dist/server/render-follow-through.js +68 -0
- package/dist/server/render-history.js +1 -1
- package/dist/server/render-new-task.d.ts +26 -1
- package/dist/server/render-new-task.js +30 -5
- package/dist/server/render-pages.d.ts +1 -175
- package/dist/server/render-pages.js +38 -313
- package/dist/server/render-projects.d.ts +2 -1
- package/dist/server/render-projects.js +9 -7
- package/dist/server/render-release.d.ts +2 -0
- package/dist/server/render-release.js +3 -3
- package/dist/server/render-results.d.ts +2 -0
- package/dist/server/render-results.js +68 -68
- package/dist/server/render-tasks.d.ts +16 -2
- package/dist/server/render-tasks.js +177 -141
- package/dist/server/retired-routes.d.ts +17 -0
- package/dist/server/retired-routes.js +53 -0
- package/dist/server/route-table.d.ts +3 -0
- package/dist/server/route-table.js +48 -12
- package/dist/server/settings.js +166 -34
- package/dist/server/task-views.js +66 -26
- package/dist/server/tasks.d.ts +2 -6
- package/dist/server/tasks.js +250 -321
- package/dist/server/welcome.js +1 -1
- package/dist/settings-groups-ui.d.ts +1 -0
- package/dist/settings-groups-ui.js +4 -2
- package/dist/settings-kit.js +3 -2
- package/dist/settings-proofs.js +3 -1
- package/dist/slack-chat.js +14 -1
- package/dist/steer-mailbox.d.ts +8 -1
- package/dist/steer-mailbox.js +164 -6
- package/dist/stop-proof.js +6 -4
- package/dist/storage-sweep-process.js +1 -1
- package/dist/storage-sweep.d.ts +5 -3
- package/dist/storage-sweep.js +30 -9
- package/dist/storage-ui.js +28 -17
- package/dist/storage.d.ts +27 -2
- package/dist/storage.js +39 -2
- package/dist/store.d.ts +89 -7
- package/dist/store.js +386 -114
- package/dist/surface.js +67 -6
- package/dist/sweep-quarantine.d.ts +1 -0
- package/dist/sweep-quarantine.js +6 -4
- package/dist/tamper-scan.d.ts +4 -0
- package/dist/tamper-scan.js +90 -0
- package/dist/task-aliases.d.ts +5 -0
- package/dist/task-aliases.js +9 -0
- package/dist/task-control.d.ts +2 -1
- package/dist/task-control.js +4 -1
- package/dist/task-outcome-cli.d.ts +2 -0
- package/dist/task-outcome-cli.js +17 -17
- package/dist/task-sizing.d.ts +5 -0
- package/dist/task-sizing.js +2 -0
- package/dist/task-source.d.ts +7 -0
- package/dist/task-source.js +14 -0
- package/dist/task-status.d.ts +9 -0
- package/dist/task-status.js +45 -49
- package/dist/teardown-git.d.ts +18 -0
- package/dist/teardown-git.js +105 -21
- package/dist/telegram-lead.js +23 -6
- package/dist/telegram-progress.js +5 -3
- package/dist/telegram-status.js +6 -4
- package/dist/telegram.js +12 -1
- package/dist/test-infra.d.ts +8 -0
- package/dist/test-infra.js +18 -0
- package/dist/tidy.js +1 -1
- package/dist/toolroll-update.js +19 -5
- package/dist/tui-contract.d.ts +24 -0
- package/dist/tui-source.js +67 -8
- package/dist/tui.js +51 -51
- package/dist/vanished-retry.d.ts +30 -0
- package/dist/vanished-retry.js +174 -0
- package/dist/work-index.d.ts +2 -0
- package/dist/work-index.js +95 -66
- package/dist/work-summary.d.ts +1 -1
- package/dist/work-summary.js +7 -2
- package/dist/workspace-ui.d.ts +7 -3
- package/dist/workspace-ui.js +38 -23
- package/dist/worktree.d.ts +12 -3
- package/dist/worktree.js +91 -14
- package/package.json +2 -1
- package/dist/server/render-next.d.ts +0 -63
- package/dist/server/render-next.js +0 -109
package/dist/browser-crew.js
CHANGED
|
@@ -7,6 +7,8 @@ export function browserWorkActionHref(item) {
|
|
|
7
7
|
if (action === null)
|
|
8
8
|
return null;
|
|
9
9
|
const { taskId, runId, decisionId } = action.target;
|
|
10
|
+
if (action.code === 'inspect-findings')
|
|
11
|
+
return `/t/${encodeURIComponent(taskId)}#findings`;
|
|
10
12
|
if (decisionId !== null)
|
|
11
13
|
return `/d/${decisionId}`;
|
|
12
14
|
if (action.code === 'inspect-decisions')
|
package/dist/browser-shell.d.ts
CHANGED
|
@@ -6,4 +6,4 @@ export declare function serveBrowserAsset(request: IncomingMessage, response: Se
|
|
|
6
6
|
/** Retain the complete native document as the no-JavaScript/unloaded-bundle
|
|
7
7
|
* fallback. React replaces its root only once the local module has loaded.
|
|
8
8
|
* The data script is escaped for HTML parsing, not merely valid JSON. */
|
|
9
|
-
export declare function browserWorkspaceDocument(document: Html, workspace: BrowserWorkspace, nonce: string, functionalScript: string): Html;
|
|
9
|
+
export declare function browserWorkspaceDocument(document: Html, workspace: BrowserWorkspace, nonce: string, functionalScript: string, beside?: Html): Html;
|
package/dist/browser-shell.js
CHANGED
|
@@ -51,7 +51,7 @@ export function serveBrowserAsset(request, response, path) {
|
|
|
51
51
|
/** Retain the complete native document as the no-JavaScript/unloaded-bundle
|
|
52
52
|
* fallback. React replaces its root only once the local module has loaded.
|
|
53
53
|
* The data script is escaped for HTML parsing, not merely valid JSON. */
|
|
54
|
-
export function browserWorkspaceDocument(document, workspace, nonce, functionalScript) {
|
|
54
|
+
export function browserWorkspaceDocument(document, workspace, nonce, functionalScript, beside = html ``) {
|
|
55
55
|
const initialize = `window.addEventListener('standing-orders:workspace-rendered',function initializeWorkspace(){window.removeEventListener('standing-orders:workspace-rendered',initializeWorkspace);${functionalScript}});`;
|
|
56
56
|
// A cross-page fade the browser gives up on rejects its promises; settle them from the head, before the
|
|
57
57
|
// first frame (the app's own listener arrives too late when a page is revealed before the bundle runs).
|
|
@@ -61,5 +61,5 @@ export function browserWorkspaceDocument(document, workspace, nonce, functionalS
|
|
|
61
61
|
// A page showing a password keeps to its one script (the sensitivity contract), so it goes without.
|
|
62
62
|
html `<link rel="stylesheet" href="/assets/workspace.css">${workspace.sensitive ? "" : scriptElement(settleFades, { nonce })}</head>`);
|
|
63
63
|
out = replaceMarkup(out, /<body>/, () => html `<body><div id="standing-orders-workspace">`);
|
|
64
|
-
return replaceMarkup(out, /<\/body>/, () => html `</div>${jsonScript(workspace, { id: "standing-orders-workspace-data", nonce })}${scriptElement(initialize, { nonce })}<script type="module" src="/assets/workspace.js" nonce="${nonce}"></script></body>`);
|
|
64
|
+
return replaceMarkup(out, /<\/body>/, () => html `</div>${beside}${jsonScript(workspace, { id: "standing-orders-workspace-data", nonce })}${scriptElement(initialize, { nonce })}<script type="module" src="/assets/workspace.js" nonce="${nonce}"></script></body>`);
|
|
65
65
|
}
|
|
@@ -139,6 +139,8 @@ export type BrowserActionCard = {
|
|
|
139
139
|
} | null;
|
|
140
140
|
dismissable: boolean;
|
|
141
141
|
note: string | null;
|
|
142
|
+
/** A Toolroll card: `body` is its data, and it confirms nothing. */
|
|
143
|
+
data?: true;
|
|
142
144
|
};
|
|
143
145
|
export type BrowserConversation = {
|
|
144
146
|
sessionId: number;
|
|
@@ -259,7 +261,7 @@ export type BrowserTaskRow = {
|
|
|
259
261
|
/** Put away, or Restore in Archived (task-tidy.md): a POST to the task's own route; null for a viewer or live work. */
|
|
260
262
|
tidy?: {
|
|
261
263
|
action: string;
|
|
262
|
-
label: '
|
|
264
|
+
label: 'Archive' | 'Restore';
|
|
263
265
|
returnTo: string;
|
|
264
266
|
} | null;
|
|
265
267
|
};
|
|
@@ -528,6 +530,8 @@ export type BrowserTaskView = {
|
|
|
528
530
|
summary: string;
|
|
529
531
|
observedAt: string;
|
|
530
532
|
} | null;
|
|
533
|
+
/** "Can I merge?" (merge-checklist.ts; `toolroll task ready` is its twin): each row and its blocker's form. Null: no result yet. */
|
|
534
|
+
mergeReady?: MergeReadyView | null;
|
|
531
535
|
/** A release's own steps (release status's twin). Null: this task is no release, or nothing recorded. */
|
|
532
536
|
release?: {
|
|
533
537
|
tag: string;
|
|
@@ -542,6 +546,13 @@ export type BrowserTaskView = {
|
|
|
542
546
|
at: string;
|
|
543
547
|
} | null;
|
|
544
548
|
startedAt: string;
|
|
549
|
+
/** The step it is on now, and where that is in its steps. */
|
|
550
|
+
at?: {
|
|
551
|
+
step: string;
|
|
552
|
+
name: string;
|
|
553
|
+
index: number;
|
|
554
|
+
of: number;
|
|
555
|
+
} | null;
|
|
545
556
|
} | null;
|
|
546
557
|
/** How the plan was approved: by whom and how, or the rule that approved it automatically. */
|
|
547
558
|
approved?: {
|
|
@@ -554,6 +565,11 @@ export type BrowserTaskView = {
|
|
|
554
565
|
} | null;
|
|
555
566
|
/** ⋯ More actions: the task's secondary acts, the same order on the task and agent pages, destructive last. */
|
|
556
567
|
more?: BrowserTaskMore[];
|
|
568
|
+
/** The task's full audit record (its link in the header); it moved out of More (docs/plans/plain-toolroll.md P1.3). */
|
|
569
|
+
audit?: {
|
|
570
|
+
label: string;
|
|
571
|
+
href: string;
|
|
572
|
+
} | null;
|
|
557
573
|
};
|
|
558
574
|
export type BrowserTaskTab = "activity" | "result" | "plan" | "attempts";
|
|
559
575
|
/** One ⋯ item: a plain link, a copy of this page's address, a one-click POST (never a ceremony), or a go-to that switches
|
|
@@ -1088,7 +1104,10 @@ export type BrowserFlowCard = {
|
|
|
1088
1104
|
items?: BrowserFlowSentItem[];
|
|
1089
1105
|
person: string;
|
|
1090
1106
|
at: string;
|
|
1107
|
+
cardHtml?: string;
|
|
1091
1108
|
} | null;
|
|
1109
|
+
/** A finished card's steps as a Toolroll card (flow-result-card.ts), when no "Send to me" already showed them. */
|
|
1110
|
+
resultHtml?: string;
|
|
1092
1111
|
/** v94: every tool call subagents made or asked to make on this card, oldest first: the receipts. */
|
|
1093
1112
|
calls?: {
|
|
1094
1113
|
id: number;
|
|
@@ -1659,7 +1678,7 @@ export type BrowserHomeView = {
|
|
|
1659
1678
|
href: string;
|
|
1660
1679
|
}[];
|
|
1661
1680
|
groups: {
|
|
1662
|
-
key: 'decide' | 'review' | 'unblock' | 'running';
|
|
1681
|
+
key: 'decide' | 'review' | 'unblock' | 'running' | 'waiting';
|
|
1663
1682
|
label: string;
|
|
1664
1683
|
rows: BrowserHomeRow[];
|
|
1665
1684
|
}[];
|
|
@@ -1853,3 +1872,32 @@ export declare function browserProjectsOf(projects: readonly {
|
|
|
1853
1872
|
path: string;
|
|
1854
1873
|
}[]): BrowserProject[];
|
|
1855
1874
|
export declare function browserNavigationOf(path: string, project?: string | null, needsYou?: number, tasksProject?: string | null, needsYouLabel?: string): BrowserNavigationItem[];
|
|
1875
|
+
/** One "Can I merge?" act, as the task page's form for it (server/merge-ready-view.ts builds it). */
|
|
1876
|
+
export type MergeReadyAct = {
|
|
1877
|
+
kind: "run-checks";
|
|
1878
|
+
action: string;
|
|
1879
|
+
level: "quick" | "full";
|
|
1880
|
+
returnTo: string;
|
|
1881
|
+
} | {
|
|
1882
|
+
kind: "retry";
|
|
1883
|
+
} | {
|
|
1884
|
+
kind: "fix";
|
|
1885
|
+
action: string;
|
|
1886
|
+
note: string;
|
|
1887
|
+
batch: string;
|
|
1888
|
+
source: string;
|
|
1889
|
+
request: string;
|
|
1890
|
+
returnTo: string;
|
|
1891
|
+
};
|
|
1892
|
+
/** The task page's "Can I merge?" panel. */
|
|
1893
|
+
export type MergeReadyView = {
|
|
1894
|
+
answer: "yes" | "no" | "not-yet" | "merged";
|
|
1895
|
+
sentence: string;
|
|
1896
|
+
rows: {
|
|
1897
|
+
key: string;
|
|
1898
|
+
label: string;
|
|
1899
|
+
mark: "yes" | "no" | "waiting" | "unknown" | "skip";
|
|
1900
|
+
say: string;
|
|
1901
|
+
act: MergeReadyAct | null;
|
|
1902
|
+
}[];
|
|
1903
|
+
};
|
|
@@ -90,7 +90,7 @@ export function browserProjectsOf(projects) {
|
|
|
90
90
|
if (seen.has(project.path))
|
|
91
91
|
return [];
|
|
92
92
|
seen.add(project.path);
|
|
93
|
-
return [{ name: project.name, path: project.path, href: `/
|
|
93
|
+
return [{ name: project.name, path: project.path, href: `/tasks?project=${encodeURIComponent(project.path)}`,
|
|
94
94
|
knowledgeHref: `/settings/knowledge?repo=${encodeURIComponent(project.path)}` }];
|
|
95
95
|
});
|
|
96
96
|
}
|
|
@@ -102,8 +102,8 @@ export function browserNavigationOf(path, project = null, needsYou = 0, tasksPro
|
|
|
102
102
|
return [
|
|
103
103
|
{ label: 'Home', href: '/', active: pathname === '/' || pathname === '/chat' || under('/d', '/activity', '/morning'),
|
|
104
104
|
...(needsYou > 0 ? { count: needsYou, ...(needsYouLabel === undefined ? {} : { countLabel: needsYouLabel }) } : {}) },
|
|
105
|
-
{ label: 'Tasks', href: `/
|
|
106
|
-
active: under('/
|
|
105
|
+
{ label: 'Tasks', href: `/tasks${tasksProject === null ? '' : `?project=${encodeURIComponent(tasksProject)}`}`,
|
|
106
|
+
active: under('/tasks', '/t', '/r', '/review') },
|
|
107
107
|
{ label: 'Flows', href: '/flows', active: under('/flows', '/recipes', '/kits', '/routines') },
|
|
108
108
|
{ label: 'Agents', href: '/agents', active: under('/agents', '/peek', '/term', '/fleet', '/system', '/runs') },
|
|
109
109
|
{ label: 'Projects', href: '/projects', active: under('/projects') },
|
package/dist/build-review.js
CHANGED
|
@@ -26,6 +26,7 @@ import { invokeAgent } from "./invoke.js";
|
|
|
26
26
|
import { readVerifiedArtifact } from "./evidence.js";
|
|
27
27
|
import { verificationEvidence } from "./verification-evidence.js";
|
|
28
28
|
import { runCheckLevel } from "./check-levels.js";
|
|
29
|
+
import { recordReviewFindings } from "./findings.js";
|
|
29
30
|
import { requestResultChanges } from "./result-actions.js";
|
|
30
31
|
import { revisionSourceOf } from "./result-review.js";
|
|
31
32
|
import { parseBuildFindings, REVIEW_PATCH_NAME } from "./reviewer.js";
|
|
@@ -310,6 +311,7 @@ export async function buildReviewPass(store, options) {
|
|
|
310
311
|
const sent = high.length > 0 && mayResend(store, request.taskId) ? sendBack(store, options.root, request.run, request.taskId, repo, high, clock()) : null;
|
|
311
312
|
const problem = sent !== null && !sent.ok ? `it could not be sent back (${sent.problem})` : null;
|
|
312
313
|
settle(store, request.run, "reviewed", { findings, sentBackAs: sent?.ok ? sent.id : null, ...(problem === null ? {} : { reason: problem }) }, clock());
|
|
314
|
+
recordReviewFindings(store, { run: request.run, taskId: request.taskId, sentBackAs: sent?.ok ? sent.id : null, high }, clock());
|
|
313
315
|
return { sentBackAs: sent?.ok ? sent.id : null, problem };
|
|
314
316
|
});
|
|
315
317
|
const counted = `${findings.length} finding${findings.length === 1 ? "" : "s"}, ${high.length} high`;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Store } from "./store.js";
|
|
2
|
+
/** At most this many automatic restarts in this window (tried, whatever came of them). */
|
|
3
|
+
export declare const RESTART_LIMIT = 3;
|
|
4
|
+
export declare const RESTART_WINDOW_MS: number;
|
|
5
|
+
export type BuilderWish = {
|
|
6
|
+
desired: "running" | "stopped";
|
|
7
|
+
build: string;
|
|
8
|
+
schema: number;
|
|
9
|
+
setBy: string;
|
|
10
|
+
setAt: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function builderWish(store: Store): BuilderWish | null;
|
|
13
|
+
export declare function databaseFormat(store: Store): number | null;
|
|
14
|
+
/** Record what a person asked for. A `stopped` keeps the last known build. */
|
|
15
|
+
export declare function recordBuilderWish(store: Store, desired: "running" | "stopped", by: string, build: string, now: Date): void;
|
|
16
|
+
/** An update, a deploy's drain or a stop in progress: this is someone else's restart to make. */
|
|
17
|
+
export declare function restartPaused(store: Store, now: Date): boolean;
|
|
18
|
+
export type RestartAdmission = "admitted" | "not-wanted" | "paused" | "attempts";
|
|
19
|
+
/** The wish, the pause and the count, read again and the attempt written in one transaction: two callers can't both
|
|
20
|
+
* take the last attempt, and a crash after this still counted. */
|
|
21
|
+
export declare function admitBuilderRestart(store: Store, now: Date): RestartAdmission;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Restarting this computer's own builder (docs/plans/plain-toolroll.md P2.3): the record of what a person wants, and the
|
|
3
|
+
* one transaction that admits an automatic restart. The supervisor work is laptop-background.ts restartOwnBuilder.
|
|
4
|
+
*
|
|
5
|
+
* `background on` and `up` record that the builder should run, with the build and database format they ran; `background
|
|
6
|
+
* off` and `stop` record that it should not, before they stop it. Nothing else writes that wish, and only a recorded
|
|
7
|
+
* wish to run is ever acted on.
|
|
8
|
+
*/
|
|
9
|
+
import { updateAdmissionPaused } from "./desktop-update-gate.js";
|
|
10
|
+
import { drainOf } from "./runner.js";
|
|
11
|
+
import { readSchemaVersion } from "./store.js";
|
|
12
|
+
/** At most this many automatic restarts in this window (tried, whatever came of them). */
|
|
13
|
+
export const RESTART_LIMIT = 3;
|
|
14
|
+
export const RESTART_WINDOW_MS = 30 * 60_000;
|
|
15
|
+
export function builderWish(store) {
|
|
16
|
+
const row = store.handle.prepare("SELECT desired, build, schema_version, set_by, set_at FROM builder_service WHERE id = 1").get();
|
|
17
|
+
return row === undefined ? null : { desired: row["desired"] === "running" ? "running" : "stopped", build: String(row["build"]), schema: Number(row["schema_version"]), setBy: String(row["set_by"]), setAt: String(row["set_at"]) };
|
|
18
|
+
}
|
|
19
|
+
export function databaseFormat(store) {
|
|
20
|
+
const read = readSchemaVersion(store.handle);
|
|
21
|
+
return read.ok ? read.version : null;
|
|
22
|
+
}
|
|
23
|
+
/** Record what a person asked for. A `stopped` keeps the last known build. */
|
|
24
|
+
export function recordBuilderWish(store, desired, by, build, now) {
|
|
25
|
+
store.handle.prepare(`INSERT INTO builder_service (id, desired, build, schema_version, set_by, set_at) VALUES (1, ?, ?, ?, ?, ?)
|
|
26
|
+
ON CONFLICT (id) DO UPDATE SET desired = excluded.desired, build = excluded.build, schema_version = excluded.schema_version, set_by = excluded.set_by, set_at = excluded.set_at`)
|
|
27
|
+
.run(desired, build, databaseFormat(store) ?? 0, by, now.toISOString());
|
|
28
|
+
}
|
|
29
|
+
/** An update, a deploy's drain or a stop in progress: this is someone else's restart to make. */
|
|
30
|
+
export function restartPaused(store, now) {
|
|
31
|
+
if (updateAdmissionPaused(store.raw()))
|
|
32
|
+
return true;
|
|
33
|
+
return store.listRunners().some(runner => drainOf(store, runner, now) !== null);
|
|
34
|
+
}
|
|
35
|
+
/** The wish, the pause and the count, read again and the attempt written in one transaction: two callers can't both
|
|
36
|
+
* take the last attempt, and a crash after this still counted. */
|
|
37
|
+
export function admitBuilderRestart(store, now) {
|
|
38
|
+
return store.transact(() => {
|
|
39
|
+
if (builderWish(store)?.desired !== "running")
|
|
40
|
+
return "not-wanted";
|
|
41
|
+
if (restartPaused(store, now))
|
|
42
|
+
return "paused";
|
|
43
|
+
const since = new Date(now.getTime() - RESTART_WINDOW_MS).toISOString();
|
|
44
|
+
const tried = Number(store.handle.prepare("SELECT COUNT(*) AS n FROM builder_restart WHERE at > ?").get(since)?.["n"] ?? 0);
|
|
45
|
+
if (tried >= RESTART_LIMIT)
|
|
46
|
+
return "attempts";
|
|
47
|
+
store.handle.prepare("INSERT INTO builder_restart (at) VALUES (?)").run(now.toISOString());
|
|
48
|
+
return "admitted";
|
|
49
|
+
});
|
|
50
|
+
}
|
package/dist/builder.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { type CheckAccess } from "./check-access.js";
|
|
|
3
3
|
import type { WritesMode } from "./writes-mode.js";
|
|
4
4
|
import type { LaunchNetwork } from "./invoke.js";
|
|
5
5
|
import type { ProviderId } from "./contracts/provider.js";
|
|
6
|
+
import { type MachineSample } from "./check-load.js";
|
|
6
7
|
import { type PreparedEvidence } from "./prepared-evidence.js";
|
|
7
8
|
import { type ExecResult, type RunOptions } from "./exec.js";
|
|
8
9
|
import type { Decision, Store } from "./store.js";
|
|
@@ -121,6 +122,9 @@ export type BuildRequest = {
|
|
|
121
122
|
/** Runs the repository's approved verification command (Priority 2), after
|
|
122
123
|
* commit. Tests inject; production uses exec. */
|
|
123
124
|
verify?: Runner;
|
|
125
|
+
/** Reads the machine's cores and load for a release check's limit and load record (check-load.ts). Tests inject;
|
|
126
|
+
* production reads the operating system. */
|
|
127
|
+
machine?: () => MachineSample;
|
|
124
128
|
/**
|
|
125
129
|
* The stop fence (audit IV-1, completed): re-proved AFTER the agent and
|
|
126
130
|
* BEFORE the commit. A stop that lands while the agent runs preserves
|
|
@@ -159,7 +163,7 @@ export type BuildRefusal = "skills-unavailable"
|
|
|
159
163
|
/** Sprint 8: the organisation policy stops this provider, model or permission level. */
|
|
160
164
|
| "policy" | "unapproved" | "scope-changed" | "stale-approval" | "mode-ended" | "capability" | "no-claim" | "not-yours" | "not-leased" | "protected-branch" | "wrong-branch" | "moved-branch" | "fenced" | "agent" | "agent-reported" | "no-op"
|
|
161
165
|
/** Run 2085: the agent stopped before its handoff; its work was kept for the retry. */
|
|
162
|
-
| "no-handoff" | "moved-head" | "timeout" | "git" | "commit-failure" | "malformed-decision" | "provider-init" | "setup" | "revision-brief" | "external" | "stopped" | "plan-revised" | "plan-revision-blocked" | "provider-unattested" | "provider-protocol" | "runner-custody" | "auth-mode" | "route-authority" | "containment";
|
|
166
|
+
| "no-handoff" | "moved-head" | "timeout" | "git" | "commit-failure" | "malformed-decision" | "provider-init" | "setup" | "revision-brief" | "external" | "stopped" | "plan-revised" | "plan-revision-blocked" | "provider-unattested" | "provider-protocol" | "runner-custody" | "auth-mode" | "route-authority" | "containment" | "protected-storage";
|
|
163
167
|
/** Long enough for real work; short enough that a stuck build ends the same night. */
|
|
164
168
|
export declare const DEFAULT_BUILD_TIMEOUT_MS: number;
|
|
165
169
|
export declare const DEFAULT_MAX_TURNS = 40;
|
|
@@ -198,6 +202,9 @@ export declare const SETUP_ENV_DENYLIST: readonly string[];
|
|
|
198
202
|
* over-redacting a diagnostic costs a glance at the real log; under-
|
|
199
203
|
* redacting costs a secret.
|
|
200
204
|
*/
|
|
205
|
+
/** Why a git command failed, in words, for a refusal: the hardened runner's own reason, or git's first line. Keeping it
|
|
206
|
+
* is the point: runs 3316–3324 and run 3332 lost theirs, and only a person guessing was left. */
|
|
207
|
+
export declare function gitFailureWords(result: ExecResult): string;
|
|
201
208
|
export declare function redactSecretText(text: string): string;
|
|
202
209
|
/** The same blanking with no length cap, for a log that keeps its length (a flow script's output). */
|
|
203
210
|
export declare function redactSecretAssignments(text: string): string;
|
|
@@ -220,7 +227,9 @@ export declare function proveApprovedProfile(scope: Scope | null, given: {
|
|
|
220
227
|
maxTurns: number | undefined;
|
|
221
228
|
timeoutMs: number | undefined;
|
|
222
229
|
skipPermissions: boolean;
|
|
223
|
-
}
|
|
230
|
+
},
|
|
231
|
+
/** The fallback entry a chain run is bound to, proved by its walk: what must run instead of the base. */
|
|
232
|
+
pinned?: ExecutionProfile | null): {
|
|
224
233
|
ok: true;
|
|
225
234
|
effective: {
|
|
226
235
|
model: string;
|