toolroll 0.9.92 → 0.9.94
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 +87 -0
- package/dist/activity-line.d.ts +7 -4
- package/dist/activity-line.js +9 -7
- package/dist/agent-fence.d.ts +4 -0
- package/dist/agent-fence.js +4 -1
- 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 -3
- package/dist/assignment.js +16 -3
- 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 +2 -2
- package/dist/browser/workspace.js +26 -26
- package/dist/browser-crew.js +2 -2
- package/dist/browser-shell.d.ts +1 -1
- package/dist/browser-shell.js +2 -2
- package/dist/browser-workspace.d.ts +48 -7
- package/dist/browser-workspace.js +3 -3
- package/dist/builder-restart.d.ts +21 -0
- package/dist/builder-restart.js +50 -0
- package/dist/builder.d.ts +4 -0
- package/dist/builder.js +73 -25
- package/dist/chat-acceptance.js +1 -1
- package/dist/chat-actions.d.ts +12 -2
- package/dist/chat-actions.js +25 -2
- package/dist/chat-channel.js +11 -0
- package/dist/chat-decide.d.ts +7 -2
- package/dist/chat-decide.js +37 -9
- package/dist/chat-quiet.js +3 -3
- package/dist/chat-voice.d.ts +1 -1
- package/dist/chat-voice.js +2 -2
- package/dist/check-facts.d.ts +126 -0
- package/dist/check-facts.js +318 -0
- package/dist/check-failure.d.ts +22 -3
- package/dist/check-failure.js +57 -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-report.d.ts +7 -0
- package/dist/check-report.js +4 -3
- 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/cli-help.d.ts +4 -1
- package/dist/cli-help.js +47 -30
- package/dist/cli.js +16 -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 +2 -0
- package/dist/coding-provider.js +3 -2
- package/dist/coding-update.js +3 -2
- package/dist/coding-workspace.js +4 -4
- 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 +9 -0
- package/dist/contracts/chat-actions.js +2 -0
- package/dist/contracts/cli.d.ts +52 -0
- package/dist/contracts/cli.js +4 -0
- package/dist/contracts/console-api.d.ts +12 -5
- package/dist/contracts/console-api.js +12 -5
- package/dist/contracts/gateway-tools.d.ts +17 -0
- package/dist/contracts/gateway-tools.js +3 -1
- package/dist/contracts/lead-tools.d.ts +61 -0
- package/dist/contracts/lead-tools.js +10 -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/release-check.d.ts +25 -1
- package/dist/contracts/release-check.js +19 -0
- package/dist/contracts/storage.d.ts +14 -0
- package/dist/contracts/storage.js +3 -1
- package/dist/contracts/store-json.d.ts +2 -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/desktop-update.d.ts +2 -2
- package/dist/desktop-update.js +13 -9
- package/dist/dispatch.js +18 -15
- package/dist/dispose.js +8 -2
- package/dist/easy-start.js +2 -3
- package/dist/eval-hooks.d.ts +55 -0
- package/dist/eval-hooks.js +227 -4
- package/dist/evals.js +2 -1
- 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/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 +83 -0
- package/dist/flaky.js +264 -0
- package/dist/flow-card-task.js +3 -0
- package/dist/flow-triggers.d.ts +1 -1
- package/dist/flow-triggers.js +1 -1
- package/dist/github-import.d.ts +62 -0
- package/dist/github-import.js +146 -0
- package/dist/guides.js +15 -10
- package/dist/invoke.d.ts +5 -1
- package/dist/invoke.js +49 -14
- 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-context.js +1 -1
- package/dist/lead-contract.d.ts +1 -1
- package/dist/lead-contract.js +2 -2
- package/dist/lead-progress.js +3 -0
- package/dist/lead-status.d.ts +2 -0
- package/dist/lead-status.js +6 -2
- package/dist/lead-tools.js +51 -2
- package/dist/lead.js +1 -1
- 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 +11 -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/needs-you.d.ts +32 -13
- package/dist/needs-you.js +108 -49
- package/dist/nightly-github.d.ts +2 -0
- package/dist/nightly-github.js +4 -4
- package/dist/operate-remote-arguments.js +6 -1
- package/dist/operate-remote.js +3 -1
- package/dist/operate.d.ts +6 -1
- package/dist/operate.js +540 -70
- 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/planner.js +2 -1
- package/dist/process-liveness.d.ts +2 -0
- package/dist/process-liveness.js +61 -17
- package/dist/project-delete-ui.d.ts +7 -2
- package/dist/project-delete-ui.js +12 -1
- package/dist/project-delete.js +13 -2
- 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/proof.js +30 -5
- package/dist/provider-auth.js +1 -1
- package/dist/publish.js +9 -1
- package/dist/pull-request-flow.js +5 -0
- package/dist/push.d.ts +26 -3
- package/dist/push.js +55 -15
- package/dist/release-adapters.d.ts +9 -0
- package/dist/release-adapters.js +87 -1
- package/dist/release-approval.d.ts +191 -0
- package/dist/release-approval.js +382 -0
- package/dist/release-auto.js +26 -17
- package/dist/release-card.d.ts +74 -6
- package/dist/release-card.js +179 -23
- package/dist/release-carry.d.ts +7 -2
- package/dist/release-carry.js +39 -9
- package/dist/release-cli.d.ts +4 -0
- package/dist/release-cli.js +38 -23
- 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 +50 -1
- package/dist/release.js +118 -11
- 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 +29 -21
- 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 +6 -1
- package/dist/scope.js +22 -9
- package/dist/serve.d.ts +1 -1
- package/dist/serve.js +24 -18
- package/dist/server/chat.js +14 -12
- package/dist/server/chrome.d.ts +1 -1
- package/dist/server/chrome.js +26 -35
- package/dist/server/console.css +23 -0
- package/dist/server/guards.js +4 -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 +2 -2
- 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-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 +19 -0
- package/dist/server/render-release.js +84 -0
- package/dist/server/render-results.d.ts +2 -2
- package/dist/server/render-results.js +71 -73
- package/dist/server/render-tasks.d.ts +13 -2
- package/dist/server/render-tasks.js +156 -139
- package/dist/server/retired-routes.d.ts +17 -0
- package/dist/server/retired-routes.js +53 -0
- package/dist/server/route-table.d.ts +4 -1
- package/dist/server/route-table.js +52 -13
- package/dist/server/settings.js +129 -22
- package/dist/server/task-views.js +61 -26
- package/dist/server/tasks.d.ts +17 -6
- package/dist/server/tasks.js +273 -338
- package/dist/server/welcome.js +1 -1
- package/dist/settings-groups-ui.js +1 -1
- package/dist/setup-guide.d.ts +2 -2
- package/dist/stop-proof.d.ts +67 -0
- package/dist/stop-proof.js +295 -0
- 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 +148 -34
- package/dist/store.js +626 -177
- package/dist/surface.js +46 -5
- 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.js +4 -1
- package/dist/task-outcome-cli.d.ts +2 -0
- package/dist/task-outcome-cli.js +36 -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 +40 -49
- package/dist/teardown-git.d.ts +16 -0
- package/dist/teardown-git.js +63 -5
- package/dist/telegram-progress.js +5 -3
- package/dist/telegram-status.js +6 -4
- 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-ui.js +2 -2
- package/dist/toolroll-update.js +18 -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 +82 -70
- package/dist/work-summary.d.ts +2 -2
- package/dist/work-summary.js +2 -0
- package/dist/workspace-ui.d.ts +4 -2
- package/dist/workspace-ui.js +28 -22
- package/dist/worktree.d.ts +12 -3
- package/dist/worktree.js +68 -13
- package/package.json +1 -1
- package/dist/server/render-next.d.ts +0 -63
- package/dist/server/render-next.js +0 -109
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
import { html, joinHtml, postForm } from "../html.js";
|
|
8
8
|
import { projectName } from "../project.js";
|
|
9
9
|
import { screen } from "./chrome.js";
|
|
10
|
-
import { btn, composer, disclose, doc, docHeader, dock, field, ideas, input, note, phoneHeader, radios, select, sendButton, textarea, toggleChip } from "./kit.js";
|
|
10
|
+
import { btn, composer, disclose, doc, docHeader, dock, facts, field, ideas, input, note, phoneHeader, radios, select, sendButton, textarea, toggleChip } from "./kit.js";
|
|
11
|
+
import { fastTermsLines } from "../fast-terms.js";
|
|
11
12
|
import { TASK_TEXT_LIMITS } from "../task-text.js";
|
|
12
13
|
const FORM_ID = "nt-form";
|
|
13
14
|
const PLAN_ON = "The agent reads the code and asks you anything unclear, then writes the plan.";
|
|
@@ -34,9 +35,11 @@ prefill = null,
|
|
|
34
35
|
/** Words an idea's link put in the box (GET ?text=). */
|
|
35
36
|
draft = null,
|
|
36
37
|
/** Ideas for the chosen project: one tap drafts the words into the box. */
|
|
37
|
-
suggestions = []
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
suggestions = [],
|
|
39
|
+
/** A link the lead or a person put in the address (GET ?from=). */
|
|
40
|
+
fromLink = null) {
|
|
41
|
+
const head = html `${phoneHeader("New task", { back: "/tasks" })}`;
|
|
42
|
+
const header = docHeader({ title: "New task", back: ["/tasks", "Tasks"], meta: "Nothing is built until you approve its plan.", same: true });
|
|
40
43
|
const items = projectItems(projects, project);
|
|
41
44
|
const values = prefill?.values;
|
|
42
45
|
// No project to choose from: the task names its folder (the server proves it), and adding a project is one link away.
|
|
@@ -48,7 +51,7 @@ suggestions = []) {
|
|
|
48
51
|
const permission = values?.get("permission-mode") === "bypassPermissions" ? "bypassPermissions" : values?.get("permission-mode") === "auto" ? "auto" : permissionDefault;
|
|
49
52
|
const text = prefill?.title ?? draft ?? "";
|
|
50
53
|
// More options opens on a template, or when a refused filing had used any of them.
|
|
51
|
-
const optionsUsed = prefill !== null && (values === undefined || ["goal", "acceptance", "not", "touches", "id", "after"].some(name => (values.get(name) ?? "") !== "") || values.get("scout") === "1");
|
|
54
|
+
const optionsUsed = fromLink !== null || prefill !== null && (values === undefined || ["from", "goal", "acceptance", "not", "touches", "id", "after"].some(name => (values.get(name) ?? "") !== "") || values.get("scout") === "1");
|
|
52
55
|
const folder = !typed ? "" : field({ id: "nt-repo", label: "Project folder", hint: "No projects yet: name the folder of a git repository.",
|
|
53
56
|
control: input({ id: "nt-repo", name: "repo", value: chosen, hint: true, attrs: { required: true, placeholder: "/path/to/repository", autocapitalize: "none", spellcheck: "false" } }) });
|
|
54
57
|
const bar = joinHtml([
|
|
@@ -66,6 +69,7 @@ suggestions = []) {
|
|
|
66
69
|
textAttrs: { maxlength: TASK_TEXT_LIMITS.title, autofocus: true },
|
|
67
70
|
});
|
|
68
71
|
const options = html `<div class="k-form">\
|
|
72
|
+
${field({ id: "nt-from", label: "From an issue or PR (optional)", hint: "A github.com link in this project. Its text becomes the plan, and you approve it.", control: input({ id: "nt-from", name: "from", value: values?.get("from") ?? fromLink ?? "", attrs: { placeholder: "https://github.com/…", autocapitalize: "none", spellcheck: "false", inputmode: "url" } }) })}\
|
|
69
73
|
${field({ id: "nt-quality", label: "Checks", control: select({ id: "nt-quality", name: "quality-mode", items: [["default", "Default checks"], ["strict", "Strict (release)"]], current: quality, wide: true }) })}\
|
|
70
74
|
${candidates.length === 0 ? "" : field({ id: "nt-after", label: "Starts", control: select({ id: "nt-after", name: "after", wide: true, current: after,
|
|
71
75
|
items: [["", "Right away"], ...candidates.map(one => [one.id, `After ${one.id}: ${one.title}`])] }) })}\
|
|
@@ -98,3 +102,24 @@ ${field({ id: "nt-id", label: "Task id (optional)", control: input({ id: "nt-id"
|
|
|
98
102
|
const recipes = note(html `Work you do often? <a class="k-link" href="/recipes">Use a saved recipe</a>.`);
|
|
99
103
|
return screen("New task", html `${head}${doc(header, form, ideaList, recipes)}${dock(btn("File task", { variant: "primary", type: "submit", attrs: { form: FORM_ID } }))}`, { chrome });
|
|
100
104
|
}
|
|
105
|
+
/** The terms as label and words: the lines every approval surface reads (fast-terms.ts), with nothing hidden. */
|
|
106
|
+
export function fastTermsRows(store, scope, repo) {
|
|
107
|
+
return fastTermsLines(store, scope, repo).map(line => [line.label, line.words]);
|
|
108
|
+
}
|
|
109
|
+
/** Build (docs/plans/plain-toolroll.md P2.4): the exact terms this small task would be approved on, and the one button
|
|
110
|
+
* that approves them. The fields of "Plan it first" are the person's own words, on the ordinary road. */
|
|
111
|
+
export function fastStartPage(chrome, input) {
|
|
112
|
+
const head = html `${phoneHeader("Build this?", { back: "/tasks/new" })}`;
|
|
113
|
+
const header = docHeader({ title: "Build this?", back: ["/tasks/new", "New task"], meta: "Build approves exactly these terms.", same: true });
|
|
114
|
+
const build = postForm("/tasks/fast", btn("Build", { variant: "primary", type: "submit" }), { attrs: { class: "k-form", id: "fast-build" }, hidden: { preview: input.preview, digest: input.digest } });
|
|
115
|
+
const plan = postForm("/tasks/add", btn("Plan it first", { type: "submit" }), { attrs: { class: "k-form" }, hidden: { plain: "1", title: input.title, repo: input.repo, "planning-policy": "choice", "plan-first": "1" } });
|
|
116
|
+
return screen("Build this?", html `${head}${doc(header, facts(input.terms.map(([label, words]) => [label, joinHtml(words.split("\n").map(line => html `<div>${line}</div>`))])), html `<div class="k-acts">${build}${plan}</div>`)}`, { chrome });
|
|
117
|
+
}
|
|
118
|
+
/** An issue or pull request, read and quoted before anything is filed. Add task files it for the ordinary approval. */
|
|
119
|
+
export function importPage(chrome, input) {
|
|
120
|
+
const name = input.kind === "pull" ? `Pull request #${input.number}` : `Issue #${input.number}`;
|
|
121
|
+
const head = html `${phoneHeader(name, { back: "/tasks/new" })}`;
|
|
122
|
+
const header = docHeader({ title: name, back: ["/tasks/new", "New task"], meta: "Written outside Toolroll. You'll approve its plan before anything builds.", same: true });
|
|
123
|
+
const file = postForm("/tasks/add", btn("Add task", { variant: "primary", type: "submit" }), { attrs: { class: "k-form" }, hidden: { from: input.url, repo: input.repo, title: input.title, ...(input.head === null ? {} : { "from-head": input.head }), "from-read": "1" } });
|
|
124
|
+
return screen(name, html `${head}${doc(header, html `<blockquote class="k-quote"><p><strong>${input.title}</strong></p><p class="k-pre">${input.body === "" ? "No description." : input.body}</p></blockquote>`, file)}`, { chrome });
|
|
125
|
+
}
|
|
@@ -5,12 +5,10 @@ import { type AssignmentSnapshot } from "../assignment.js";
|
|
|
5
5
|
import { type BoardCard } from "../board.js";
|
|
6
6
|
import { type BrowserLimits } from "../browser-workspace.js";
|
|
7
7
|
import { type DispatchDiagnosis } from "../dispatch.js";
|
|
8
|
-
import { type FirstRunStep } from "../first-run.js";
|
|
9
8
|
import { type Gap } from "../gaps.js";
|
|
10
9
|
import { type parseBaseTreeSnapshot } from "../peek.js";
|
|
11
|
-
import { type CriterionMatrixRow } from "../proof.js";
|
|
12
10
|
import { type Runner } from "../runner.js";
|
|
13
|
-
import { type Decision, type Incident, type
|
|
11
|
+
import { type Decision, type Incident, type Run, type Store, type TaskState, type WorktreeRow } from "../store.js";
|
|
14
12
|
import { tally } from "../summary.js";
|
|
15
13
|
import { type WorkIndexGroup, type WorkIndexItem, type WorkIndexPage } from "../work-index.js";
|
|
16
14
|
import { type ChipTone } from "../design/kit.js";
|
|
@@ -23,90 +21,6 @@ export declare const TASK_STATES: readonly TaskState[];
|
|
|
23
21
|
* auto-refresh — approval links lead to the step-up screen, and a page
|
|
24
22
|
* that might hold typed input never re-renders itself.
|
|
25
23
|
*/
|
|
26
|
-
export type InboxTab = "needs-you" | "ready" | "running" | "all";
|
|
27
|
-
export declare const INBOX_TABS: readonly {
|
|
28
|
-
id: InboxTab;
|
|
29
|
-
label: string;
|
|
30
|
-
}[];
|
|
31
|
-
export declare function parseInboxTab(raw: string | null): InboxTab | undefined;
|
|
32
|
-
/** What each tab holds, as a short fingerprint: a tab is unread when its
|
|
33
|
-
* fingerprint differs from the one this browser saw there last. */
|
|
34
|
-
export declare function inboxFingerprints(data: Pick<Parameters<typeof inboxPage>[1], "decisions" | "approvals" | "requeueables" | "cancelledBlockers" | "gaps" | "needsVerification" | "ready" | "running">): Record<InboxTab, string>;
|
|
35
|
-
export declare function inboxPage(chrome: Chrome, data: {
|
|
36
|
-
csrf: string;
|
|
37
|
-
revision: number;
|
|
38
|
-
/** No project open in scoped mode: every admitted project at once,
|
|
39
|
-
* chips on every row, links only — acting means opening the project. */
|
|
40
|
-
rollup: boolean;
|
|
41
|
-
/** A project is OPEN: only then do decisions answer on the card. The
|
|
42
|
-
* legacy unscoped projectless inbox stays links-only too (commit-1
|
|
43
|
-
* review, finding 4) — the partial belongs to a chosen project. */
|
|
44
|
-
interactive: boolean;
|
|
45
|
-
decisions: (Decision & {
|
|
46
|
-
taskId: string;
|
|
47
|
-
repo?: string | null;
|
|
48
|
-
})[];
|
|
49
|
-
approvals: {
|
|
50
|
-
taskId: string;
|
|
51
|
-
title: string;
|
|
52
|
-
goal: string;
|
|
53
|
-
proposedAt: string;
|
|
54
|
-
repo?: string | null; /** v48 authority repair: the closed consent door's title, or null when a yes could bind. */
|
|
55
|
-
closed?: string | null;
|
|
56
|
-
}[];
|
|
57
|
-
requeueables: {
|
|
58
|
-
taskId: string;
|
|
59
|
-
title: string;
|
|
60
|
-
state: TaskState;
|
|
61
|
-
strikes: number;
|
|
62
|
-
incidentCount: number;
|
|
63
|
-
repo?: string | null;
|
|
64
|
-
}[];
|
|
65
|
-
cancelledBlockers: {
|
|
66
|
-
blockerId: string;
|
|
67
|
-
dependentCount: number;
|
|
68
|
-
exampleDependent: string;
|
|
69
|
-
repo?: string | null;
|
|
70
|
-
blockerRepo?: string | null;
|
|
71
|
-
}[];
|
|
72
|
-
gaps: Gap[];
|
|
73
|
-
/** A completed task whose proof is short or refuted and not yet accepted
|
|
74
|
-
* (Priority 2) — reads "needs verification" here too, never silently
|
|
75
|
-
* "done" just because the inbox does not otherwise look at finished work. */
|
|
76
|
-
needsVerification: {
|
|
77
|
-
taskId: string;
|
|
78
|
-
title: string;
|
|
79
|
-
verdict: "short" | "refuted";
|
|
80
|
-
repo?: string | null;
|
|
81
|
-
matrix?: CriterionMatrixRow[];
|
|
82
|
-
repairChain?: RepairChainRow | null;
|
|
83
|
-
}[];
|
|
84
|
-
/** The first-run steps; null once the installation has had its first Ready result. */
|
|
85
|
-
wizard: FirstRunStep[] | null;
|
|
86
|
-
/** Whether any worker is answering right now — said at the top when none is. */
|
|
87
|
-
worker: {
|
|
88
|
-
answering: number;
|
|
89
|
-
registered: number;
|
|
90
|
-
lastHeard: string | null;
|
|
91
|
-
};
|
|
92
|
-
now: Date;
|
|
93
|
-
/** Console v2: the tab shown, results ready to review, work running now,
|
|
94
|
-
* and the tabs holding something this browser hasn't seen (dots on a phone). */
|
|
95
|
-
tab?: InboxTab;
|
|
96
|
-
ready?: {
|
|
97
|
-
taskId: string;
|
|
98
|
-
title: string;
|
|
99
|
-
detail: string;
|
|
100
|
-
repo: string | null;
|
|
101
|
-
}[];
|
|
102
|
-
running?: {
|
|
103
|
-
taskId: string;
|
|
104
|
-
title: string;
|
|
105
|
-
detail: string;
|
|
106
|
-
repo: string | null;
|
|
107
|
-
}[];
|
|
108
|
-
unread?: readonly InboxTab[];
|
|
109
|
-
}): Screen;
|
|
110
24
|
/** Start a builder: the one command, as text to select (/start-builder, where every "Connect a builder" leads, and
|
|
111
25
|
* the Agents page). `project`: the open project's name, when the viewer may see it; `connected`: whether a builder
|
|
112
26
|
* that may build there is checking in (null: say nothing); `managed`: whether this person can start one themselves
|
|
@@ -248,94 +162,6 @@ export type WorkbenchDone = {
|
|
|
248
162
|
outcome: string | null;
|
|
249
163
|
repo: string | null;
|
|
250
164
|
};
|
|
251
|
-
/**
|
|
252
|
-
* The control-room rail (attended A1): every state that matters while a
|
|
253
|
-
* person supervises, ordered by intervention cost. The project chip is
|
|
254
|
-
* deliberately repeated on every row — a title is not a workspace, and
|
|
255
|
-
* switching context must never depend on remembering which repo is open.
|
|
256
|
-
*/
|
|
257
|
-
export declare function workbenchRail(data: {
|
|
258
|
-
attention: BoardCard[];
|
|
259
|
-
building: BoardCard[];
|
|
260
|
-
waiting: BoardCard[];
|
|
261
|
-
queued: BoardCard[];
|
|
262
|
-
done: WorkbenchDone[];
|
|
263
|
-
selected: string | null;
|
|
264
|
-
saturated: boolean;
|
|
265
|
-
}): Html;
|
|
266
|
-
/**
|
|
267
|
-
* The portfolio overview (arc slice 1a): what waits on you, what the last
|
|
268
|
-
* 24 hours of run starts amounted to, what is running, and the terminal-run
|
|
269
|
-
* ledger — all of it across every admitted project, a project chip on every
|
|
270
|
-
* row. The caller has already applied admission and per-row visibility.
|
|
271
|
-
*/
|
|
272
|
-
export declare function portfolioOverview(data: {
|
|
273
|
-
attention: BoardCard[];
|
|
274
|
-
building: BoardCard[];
|
|
275
|
-
waiting: BoardCard[];
|
|
276
|
-
queued: BoardCard[];
|
|
277
|
-
done: WorkbenchDone[];
|
|
278
|
-
saturated: boolean;
|
|
279
|
-
decisions: (Decision & {
|
|
280
|
-
taskId: string;
|
|
281
|
-
repo?: string | null;
|
|
282
|
-
})[];
|
|
283
|
-
approvals: {
|
|
284
|
-
taskId: string;
|
|
285
|
-
title: string;
|
|
286
|
-
goal: string;
|
|
287
|
-
proposedAt: string;
|
|
288
|
-
repo?: string | null; /** v48 authority repair: the closed consent door's title, or null when a yes could bind. */
|
|
289
|
-
closed?: string | null;
|
|
290
|
-
}[];
|
|
291
|
-
requeueables: {
|
|
292
|
-
taskId: string;
|
|
293
|
-
title: string;
|
|
294
|
-
state: TaskState;
|
|
295
|
-
strikes: number;
|
|
296
|
-
incidentCount: number;
|
|
297
|
-
repo?: string | null;
|
|
298
|
-
}[];
|
|
299
|
-
cancelledBlockers: {
|
|
300
|
-
blockerId: string;
|
|
301
|
-
dependentCount: number;
|
|
302
|
-
exampleDependent: string;
|
|
303
|
-
repo?: string | null;
|
|
304
|
-
blockerRepo?: string | null;
|
|
305
|
-
}[];
|
|
306
|
-
gaps: Gap[];
|
|
307
|
-
gapsProject: string | null;
|
|
308
|
-
runs24: (Run & {
|
|
309
|
-
taskId: string;
|
|
310
|
-
})[];
|
|
311
|
-
live: {
|
|
312
|
-
taskId: string;
|
|
313
|
-
runner: string;
|
|
314
|
-
claimedAt: string;
|
|
315
|
-
expiresAt: string;
|
|
316
|
-
model: string | null;
|
|
317
|
-
repo: string | null;
|
|
318
|
-
}[];
|
|
319
|
-
ledger: {
|
|
320
|
-
runId: number;
|
|
321
|
-
taskId: string;
|
|
322
|
-
title: string;
|
|
323
|
-
repo: string | null;
|
|
324
|
-
outcome: string;
|
|
325
|
-
role: string;
|
|
326
|
-
provider: string | null;
|
|
327
|
-
model: string | null;
|
|
328
|
-
startedAt: string;
|
|
329
|
-
ranMinutes: number | null;
|
|
330
|
-
costUsd: number | null;
|
|
331
|
-
authMode: "subscription" | "api-key" | "agent-login" | null;
|
|
332
|
-
prNumber: number | null;
|
|
333
|
-
prUrl: string | null;
|
|
334
|
-
}[];
|
|
335
|
-
/** "" when there is no session token: then no form renders. postForm adds the field itself. */
|
|
336
|
-
csrf: string;
|
|
337
|
-
now: Date;
|
|
338
|
-
}): Html;
|
|
339
165
|
export type OnboardCardState = {
|
|
340
166
|
enabled: false;
|
|
341
167
|
why: string;
|