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
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Toolroll card as it is kept and shown (docs/plans/toolroll-cards.md): what a card's spec became once Toolroll filled
|
|
3
|
+
* it from its own records. Every value here was written by Toolroll; the one exception is a `text` block, which a person
|
|
4
|
+
* reads as a plain paragraph labelled as the lead's note, never as data. A saved card is read back through this
|
|
5
|
+
* schema before any renderer sees it.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export declare const CARD_LIMITS: {
|
|
9
|
+
readonly blocks: 8;
|
|
10
|
+
readonly columns: 6;
|
|
11
|
+
readonly rows: 20;
|
|
12
|
+
readonly points: 12;
|
|
13
|
+
readonly facts: 10;
|
|
14
|
+
readonly buttons: 4;
|
|
15
|
+
readonly actions: 4;
|
|
16
|
+
readonly cell: 80;
|
|
17
|
+
readonly label: 40;
|
|
18
|
+
readonly heading: 80;
|
|
19
|
+
readonly text: 600;
|
|
20
|
+
readonly note: 400;
|
|
21
|
+
readonly notes: 12;
|
|
22
|
+
};
|
|
23
|
+
export declare const CARD_CHART_TYPES: readonly ["bar", "pie", "line", "area"];
|
|
24
|
+
export type CardChartType = (typeof CARD_CHART_TYPES)[number];
|
|
25
|
+
export declare const chatCardSchema: z.ZodObject<{
|
|
26
|
+
version: z.ZodLiteral<1>;
|
|
27
|
+
title: z.ZodString;
|
|
28
|
+
asOf: z.ZodString;
|
|
29
|
+
repos: z.ZodArray<z.ZodString>;
|
|
30
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
31
|
+
kind: z.ZodLiteral<"text">;
|
|
32
|
+
text: z.ZodString;
|
|
33
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
34
|
+
kind: z.ZodLiteral<"divider">;
|
|
35
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
36
|
+
kind: z.ZodLiteral<"facts">;
|
|
37
|
+
heading: z.ZodString;
|
|
38
|
+
items: z.ZodArray<z.ZodObject<{
|
|
39
|
+
label: z.ZodString;
|
|
40
|
+
value: z.ZodString;
|
|
41
|
+
}, z.core.$strict>>;
|
|
42
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
43
|
+
kind: z.ZodLiteral<"table">;
|
|
44
|
+
heading: z.ZodString;
|
|
45
|
+
origin: z.ZodEnum<{
|
|
46
|
+
records: "records";
|
|
47
|
+
report: "report";
|
|
48
|
+
}>;
|
|
49
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
50
|
+
label: z.ZodString;
|
|
51
|
+
numeric: z.ZodBoolean;
|
|
52
|
+
}, z.core.$strict>>;
|
|
53
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
54
|
+
more: z.ZodInt;
|
|
55
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
56
|
+
kind: z.ZodLiteral<"notes">;
|
|
57
|
+
heading: z.ZodString;
|
|
58
|
+
origin: z.ZodEnum<{
|
|
59
|
+
records: "records";
|
|
60
|
+
report: "report";
|
|
61
|
+
}>;
|
|
62
|
+
items: z.ZodArray<z.ZodString>;
|
|
63
|
+
more: z.ZodInt;
|
|
64
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
65
|
+
kind: z.ZodLiteral<"chart">;
|
|
66
|
+
heading: z.ZodString;
|
|
67
|
+
chart: z.ZodEnum<{
|
|
68
|
+
area: "area";
|
|
69
|
+
bar: "bar";
|
|
70
|
+
line: "line";
|
|
71
|
+
pie: "pie";
|
|
72
|
+
}>;
|
|
73
|
+
points: z.ZodArray<z.ZodObject<{
|
|
74
|
+
label: z.ZodString;
|
|
75
|
+
value: z.ZodNumber;
|
|
76
|
+
shown: z.ZodString;
|
|
77
|
+
}, z.core.$strict>>;
|
|
78
|
+
}, z.core.$strict>], "kind">>;
|
|
79
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
80
|
+
label: z.ZodString;
|
|
81
|
+
path: z.ZodString;
|
|
82
|
+
}, z.core.$strict>>;
|
|
83
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
84
|
+
proposal: z.ZodInt;
|
|
85
|
+
label: z.ZodString;
|
|
86
|
+
}, z.core.$strict>>;
|
|
87
|
+
}, z.core.$strict>;
|
|
88
|
+
export type ChatCard = z.infer<typeof chatCardSchema>;
|
|
89
|
+
export type ChatCardBlock = ChatCard["blocks"][number];
|
|
90
|
+
/** A saved card, or null: it was changed, or a build that wrote it knew another shape. */
|
|
91
|
+
export declare function readChatCard(value: unknown): ChatCard | null;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A Toolroll card as it is kept and shown (docs/plans/toolroll-cards.md): what a card's spec became once Toolroll filled
|
|
3
|
+
* it from its own records. Every value here was written by Toolroll; the one exception is a `text` block, which a person
|
|
4
|
+
* reads as a plain paragraph labelled as the lead's note, never as data. A saved card is read back through this
|
|
5
|
+
* schema before any renderer sees it.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
export const CARD_LIMITS = { blocks: 8, columns: 6, rows: 20, points: 12, facts: 10, buttons: 4, actions: 4, cell: 80, label: 40, heading: 80, text: 600, note: 400, notes: 12 };
|
|
9
|
+
const label = z.string().min(1).max(CARD_LIMITS.label);
|
|
10
|
+
const heading = z.string().min(1).max(CARD_LIMITS.heading);
|
|
11
|
+
const cell = z.string().max(CARD_LIMITS.cell);
|
|
12
|
+
export const CARD_CHART_TYPES = ["bar", "pie", "line", "area"];
|
|
13
|
+
const textBlock = z.strictObject({ kind: z.literal("text"), text: z.string().min(1).max(CARD_LIMITS.text) });
|
|
14
|
+
const dividerBlock = z.strictObject({ kind: z.literal("divider") });
|
|
15
|
+
const factsBlock = z.strictObject({ kind: z.literal("facts"), heading, items: z.array(z.strictObject({ label, value: cell })).min(1).max(CARD_LIMITS.facts) });
|
|
16
|
+
const tableBlock = z.strictObject({
|
|
17
|
+
kind: z.literal("table"), heading,
|
|
18
|
+
/** `report`: an agent's own report, shown as such; never a figure of Toolroll's. */
|
|
19
|
+
origin: z.enum(["records", "report"]),
|
|
20
|
+
columns: z.array(z.strictObject({ label, numeric: z.boolean() })).min(1).max(CARD_LIMITS.columns),
|
|
21
|
+
rows: z.array(z.array(cell).max(CARD_LIMITS.columns)).max(CARD_LIMITS.rows),
|
|
22
|
+
/** Rows the records hold beyond the ones shown. */
|
|
23
|
+
more: z.int().min(0),
|
|
24
|
+
});
|
|
25
|
+
/** Lines of saved words, whole: findings and a handover note. `report` as a table's: not Toolroll's figures. */
|
|
26
|
+
const notesBlock = z.strictObject({ kind: z.literal("notes"), heading, origin: z.enum(["records", "report"]), items: z.array(z.string().min(1).max(CARD_LIMITS.note)).min(1).max(CARD_LIMITS.notes), more: z.int().min(0) });
|
|
27
|
+
const chartBlock = z.strictObject({
|
|
28
|
+
kind: z.literal("chart"), heading, chart: z.enum(CARD_CHART_TYPES),
|
|
29
|
+
points: z.array(z.strictObject({ label, value: z.number().finite().min(0), shown: cell })).min(1).max(CARD_LIMITS.points),
|
|
30
|
+
});
|
|
31
|
+
export const chatCardSchema = z.strictObject({
|
|
32
|
+
version: z.literal(1),
|
|
33
|
+
title: heading,
|
|
34
|
+
/** When Toolroll read the records. */
|
|
35
|
+
asOf: z.string().regex(/^\d{4}-\d{2}-\d{2}T[\d:.]+Z$/),
|
|
36
|
+
/** The projects the values came from: a card goes only where all of them are reachable. */
|
|
37
|
+
repos: z.array(z.string()).max(200),
|
|
38
|
+
blocks: z.array(z.discriminatedUnion("kind", [textBlock, dividerBlock, factsBlock, tableBlock, notesBlock, chartBlock])).min(1).max(CARD_LIMITS.blocks),
|
|
39
|
+
/** Fixed destinations in Toolroll: a path made by chat-controls.ts, never a model's address. */
|
|
40
|
+
buttons: z.array(z.strictObject({ label, path: z.string().max(400).regex(/^\/(?![/\\])/) })).max(CARD_LIMITS.buttons),
|
|
41
|
+
/** Proposals this card leads to: each keeps its own Confirm message directly under the card. */
|
|
42
|
+
actions: z.array(z.strictObject({ proposal: z.int().min(1), label: z.string().min(1).max(CARD_LIMITS.heading) })).max(CARD_LIMITS.actions),
|
|
43
|
+
});
|
|
44
|
+
/** A saved card, or null: it was changed, or a build that wrote it knew another shape. */
|
|
45
|
+
export function readChatCard(value) {
|
|
46
|
+
const read = chatCardSchema.safeParse(value);
|
|
47
|
+
if (!read.success)
|
|
48
|
+
return null;
|
|
49
|
+
const card = read.data;
|
|
50
|
+
for (const block of card.blocks)
|
|
51
|
+
if (block.kind === "table" && block.rows.some(row => row.length !== block.columns.length))
|
|
52
|
+
return null;
|
|
53
|
+
return card;
|
|
54
|
+
}
|
|
@@ -114,6 +114,71 @@ export declare const chatContentShape: {
|
|
|
114
114
|
}, z.core.$strict>;
|
|
115
115
|
}, z.core.$strict>]>>>;
|
|
116
116
|
}, z.core.$strict>>;
|
|
117
|
+
/** A Toolroll card (docs/plans/toolroll-cards.md): `text` stays its plain version, and `link`/`also` its buttons, so
|
|
118
|
+
* an app that can't show it, or refuses it, still has the whole message. */
|
|
119
|
+
rich: z.ZodOptional<z.ZodObject<{
|
|
120
|
+
version: z.ZodLiteral<1>;
|
|
121
|
+
title: z.ZodString;
|
|
122
|
+
asOf: z.ZodString;
|
|
123
|
+
repos: z.ZodArray<z.ZodString>;
|
|
124
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
125
|
+
kind: z.ZodLiteral<"text">;
|
|
126
|
+
text: z.ZodString;
|
|
127
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
128
|
+
kind: z.ZodLiteral<"divider">;
|
|
129
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
130
|
+
kind: z.ZodLiteral<"facts">;
|
|
131
|
+
heading: z.ZodString;
|
|
132
|
+
items: z.ZodArray<z.ZodObject<{
|
|
133
|
+
label: z.ZodString;
|
|
134
|
+
value: z.ZodString;
|
|
135
|
+
}, z.core.$strict>>;
|
|
136
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
137
|
+
kind: z.ZodLiteral<"table">;
|
|
138
|
+
heading: z.ZodString;
|
|
139
|
+
origin: z.ZodEnum<{
|
|
140
|
+
records: "records";
|
|
141
|
+
report: "report";
|
|
142
|
+
}>;
|
|
143
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
144
|
+
label: z.ZodString;
|
|
145
|
+
numeric: z.ZodBoolean;
|
|
146
|
+
}, z.core.$strict>>;
|
|
147
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
148
|
+
more: z.ZodInt;
|
|
149
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
150
|
+
kind: z.ZodLiteral<"notes">;
|
|
151
|
+
heading: z.ZodString;
|
|
152
|
+
origin: z.ZodEnum<{
|
|
153
|
+
records: "records";
|
|
154
|
+
report: "report";
|
|
155
|
+
}>;
|
|
156
|
+
items: z.ZodArray<z.ZodString>;
|
|
157
|
+
more: z.ZodInt;
|
|
158
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
159
|
+
kind: z.ZodLiteral<"chart">;
|
|
160
|
+
heading: z.ZodString;
|
|
161
|
+
chart: z.ZodEnum<{
|
|
162
|
+
area: "area";
|
|
163
|
+
bar: "bar";
|
|
164
|
+
line: "line";
|
|
165
|
+
pie: "pie";
|
|
166
|
+
}>;
|
|
167
|
+
points: z.ZodArray<z.ZodObject<{
|
|
168
|
+
label: z.ZodString;
|
|
169
|
+
value: z.ZodNumber;
|
|
170
|
+
shown: z.ZodString;
|
|
171
|
+
}, z.core.$strict>>;
|
|
172
|
+
}, z.core.$strict>], "kind">>;
|
|
173
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
174
|
+
label: z.ZodString;
|
|
175
|
+
path: z.ZodString;
|
|
176
|
+
}, z.core.$strict>>;
|
|
177
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
178
|
+
proposal: z.ZodInt;
|
|
179
|
+
label: z.ZodString;
|
|
180
|
+
}, z.core.$strict>>;
|
|
181
|
+
}, z.core.$strict>>;
|
|
117
182
|
/** The "What should change?" this part asks (chat-decide.ts): a reply to its message is the feedback. */
|
|
118
183
|
prompt: z.ZodOptional<z.ZodInt>;
|
|
119
184
|
};
|
|
@@ -199,6 +264,69 @@ export declare const chatContentSchema: z.ZodObject<{
|
|
|
199
264
|
}, z.core.$strict>;
|
|
200
265
|
}, z.core.$strict>]>>>;
|
|
201
266
|
}, z.core.$strict>>;
|
|
267
|
+
rich: z.ZodOptional<z.ZodObject<{
|
|
268
|
+
version: z.ZodLiteral<1>;
|
|
269
|
+
title: z.ZodString;
|
|
270
|
+
asOf: z.ZodString;
|
|
271
|
+
repos: z.ZodArray<z.ZodString>;
|
|
272
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
273
|
+
kind: z.ZodLiteral<"text">;
|
|
274
|
+
text: z.ZodString;
|
|
275
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
276
|
+
kind: z.ZodLiteral<"divider">;
|
|
277
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
278
|
+
kind: z.ZodLiteral<"facts">;
|
|
279
|
+
heading: z.ZodString;
|
|
280
|
+
items: z.ZodArray<z.ZodObject<{
|
|
281
|
+
label: z.ZodString;
|
|
282
|
+
value: z.ZodString;
|
|
283
|
+
}, z.core.$strict>>;
|
|
284
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
285
|
+
kind: z.ZodLiteral<"table">;
|
|
286
|
+
heading: z.ZodString;
|
|
287
|
+
origin: z.ZodEnum<{
|
|
288
|
+
records: "records";
|
|
289
|
+
report: "report";
|
|
290
|
+
}>;
|
|
291
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
292
|
+
label: z.ZodString;
|
|
293
|
+
numeric: z.ZodBoolean;
|
|
294
|
+
}, z.core.$strict>>;
|
|
295
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
296
|
+
more: z.ZodInt;
|
|
297
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
298
|
+
kind: z.ZodLiteral<"notes">;
|
|
299
|
+
heading: z.ZodString;
|
|
300
|
+
origin: z.ZodEnum<{
|
|
301
|
+
records: "records";
|
|
302
|
+
report: "report";
|
|
303
|
+
}>;
|
|
304
|
+
items: z.ZodArray<z.ZodString>;
|
|
305
|
+
more: z.ZodInt;
|
|
306
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
307
|
+
kind: z.ZodLiteral<"chart">;
|
|
308
|
+
heading: z.ZodString;
|
|
309
|
+
chart: z.ZodEnum<{
|
|
310
|
+
area: "area";
|
|
311
|
+
bar: "bar";
|
|
312
|
+
line: "line";
|
|
313
|
+
pie: "pie";
|
|
314
|
+
}>;
|
|
315
|
+
points: z.ZodArray<z.ZodObject<{
|
|
316
|
+
label: z.ZodString;
|
|
317
|
+
value: z.ZodNumber;
|
|
318
|
+
shown: z.ZodString;
|
|
319
|
+
}, z.core.$strict>>;
|
|
320
|
+
}, z.core.$strict>], "kind">>;
|
|
321
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
322
|
+
label: z.ZodString;
|
|
323
|
+
path: z.ZodString;
|
|
324
|
+
}, z.core.$strict>>;
|
|
325
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
326
|
+
proposal: z.ZodInt;
|
|
327
|
+
label: z.ZodString;
|
|
328
|
+
}, z.core.$strict>>;
|
|
329
|
+
}, z.core.$strict>>;
|
|
202
330
|
prompt: z.ZodOptional<z.ZodInt>;
|
|
203
331
|
}, z.core.$strict>;
|
|
204
332
|
export type ChatContent = z.infer<typeof chatContentSchema>;
|
|
@@ -286,6 +414,69 @@ export declare const savedChatPartSchema: z.ZodObject<{
|
|
|
286
414
|
}, z.core.$strict>;
|
|
287
415
|
}, z.core.$strict>]>>>;
|
|
288
416
|
}, z.core.$strict>>;
|
|
417
|
+
rich: z.ZodOptional<z.ZodObject<{
|
|
418
|
+
version: z.ZodLiteral<1>;
|
|
419
|
+
title: z.ZodString;
|
|
420
|
+
asOf: z.ZodString;
|
|
421
|
+
repos: z.ZodArray<z.ZodString>;
|
|
422
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
423
|
+
kind: z.ZodLiteral<"text">;
|
|
424
|
+
text: z.ZodString;
|
|
425
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
426
|
+
kind: z.ZodLiteral<"divider">;
|
|
427
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
428
|
+
kind: z.ZodLiteral<"facts">;
|
|
429
|
+
heading: z.ZodString;
|
|
430
|
+
items: z.ZodArray<z.ZodObject<{
|
|
431
|
+
label: z.ZodString;
|
|
432
|
+
value: z.ZodString;
|
|
433
|
+
}, z.core.$strict>>;
|
|
434
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
435
|
+
kind: z.ZodLiteral<"table">;
|
|
436
|
+
heading: z.ZodString;
|
|
437
|
+
origin: z.ZodEnum<{
|
|
438
|
+
records: "records";
|
|
439
|
+
report: "report";
|
|
440
|
+
}>;
|
|
441
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
442
|
+
label: z.ZodString;
|
|
443
|
+
numeric: z.ZodBoolean;
|
|
444
|
+
}, z.core.$strict>>;
|
|
445
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
446
|
+
more: z.ZodInt;
|
|
447
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
448
|
+
kind: z.ZodLiteral<"notes">;
|
|
449
|
+
heading: z.ZodString;
|
|
450
|
+
origin: z.ZodEnum<{
|
|
451
|
+
records: "records";
|
|
452
|
+
report: "report";
|
|
453
|
+
}>;
|
|
454
|
+
items: z.ZodArray<z.ZodString>;
|
|
455
|
+
more: z.ZodInt;
|
|
456
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
457
|
+
kind: z.ZodLiteral<"chart">;
|
|
458
|
+
heading: z.ZodString;
|
|
459
|
+
chart: z.ZodEnum<{
|
|
460
|
+
area: "area";
|
|
461
|
+
bar: "bar";
|
|
462
|
+
line: "line";
|
|
463
|
+
pie: "pie";
|
|
464
|
+
}>;
|
|
465
|
+
points: z.ZodArray<z.ZodObject<{
|
|
466
|
+
label: z.ZodString;
|
|
467
|
+
value: z.ZodNumber;
|
|
468
|
+
shown: z.ZodString;
|
|
469
|
+
}, z.core.$strict>>;
|
|
470
|
+
}, z.core.$strict>], "kind">>;
|
|
471
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
472
|
+
label: z.ZodString;
|
|
473
|
+
path: z.ZodString;
|
|
474
|
+
}, z.core.$strict>>;
|
|
475
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
476
|
+
proposal: z.ZodInt;
|
|
477
|
+
label: z.ZodString;
|
|
478
|
+
}, z.core.$strict>>;
|
|
479
|
+
}, z.core.$strict>>;
|
|
289
480
|
prompt: z.ZodOptional<z.ZodInt>;
|
|
290
481
|
}, z.core.$strict>;
|
|
291
482
|
/** A saved part's content (`version` is the saved form's, not the content's). */
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
import { parseContract, readVersioned, versioned } from "./contract.js";
|
|
12
|
+
import { chatCardSchema } from "./chat-card.js";
|
|
12
13
|
const id = z.int().min(1);
|
|
13
14
|
const link = z.strictObject({ label: z.string(), path: z.string() });
|
|
14
15
|
/** A Toolroll button's one-time token, as every chat app carries it: 32 hex, or `d:` and 24 hex for a decide button
|
|
@@ -58,6 +59,9 @@ export const chatContentShape = {
|
|
|
58
59
|
/** A result's, plan's, failure's or pull request's own buttons (chat-decide.ts), minted with the part: each an act's
|
|
59
60
|
* one-time token or a link. They ride the message once it is sent. */
|
|
60
61
|
decide: z.strictObject({ rows: z.array(z.array(z.union([z.strictObject({ label: z.string(), token: z.string().regex(CHAT_BUTTON_TOKEN) }), z.strictObject({ label: z.string(), link })]))) }).optional(),
|
|
62
|
+
/** A Toolroll card (docs/plans/toolroll-cards.md): `text` stays its plain version, and `link`/`also` its buttons, so
|
|
63
|
+
* an app that can't show it, or refuses it, still has the whole message. */
|
|
64
|
+
rich: chatCardSchema.optional(),
|
|
61
65
|
/** The "What should change?" this part asks (chat-decide.ts): a reply to its message is the feedback. */
|
|
62
66
|
prompt: id.optional(),
|
|
63
67
|
};
|
package/dist/contracts/cli.d.ts
CHANGED
|
@@ -566,6 +566,58 @@ export declare const COMMAND_OUTPUTS: {
|
|
|
566
566
|
reason: z.ZodString;
|
|
567
567
|
message: z.ZodOptional<z.ZodString>;
|
|
568
568
|
}, z.core.$loose>], "ok">;
|
|
569
|
+
readonly "task ready": z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
570
|
+
envelopeVersion: z.ZodLiteral<1>;
|
|
571
|
+
ok: z.ZodLiteral<true>;
|
|
572
|
+
command: z.ZodLiteral<"task ready">;
|
|
573
|
+
taskId: z.ZodString;
|
|
574
|
+
activeTaskId: z.ZodString;
|
|
575
|
+
run: z.ZodNullable<z.ZodNumber>;
|
|
576
|
+
head: z.ZodNullable<z.ZodString>;
|
|
577
|
+
answer: z.ZodEnum<{
|
|
578
|
+
merged: "merged";
|
|
579
|
+
no: "no";
|
|
580
|
+
"not-yet": "not-yet";
|
|
581
|
+
yes: "yes";
|
|
582
|
+
}>;
|
|
583
|
+
sentence: z.ZodString;
|
|
584
|
+
rows: z.ZodArray<z.ZodObject<{
|
|
585
|
+
key: z.ZodEnum<{
|
|
586
|
+
build: "build";
|
|
587
|
+
checks: "checks";
|
|
588
|
+
comments: "comments";
|
|
589
|
+
conflicts: "conflicts";
|
|
590
|
+
plan: "plan";
|
|
591
|
+
"pr-ci": "pr-ci";
|
|
592
|
+
"pull-request": "pull-request";
|
|
593
|
+
release: "release";
|
|
594
|
+
requirements: "requirements";
|
|
595
|
+
"up-to-date": "up-to-date";
|
|
596
|
+
}>;
|
|
597
|
+
label: z.ZodString;
|
|
598
|
+
mark: z.ZodEnum<{
|
|
599
|
+
no: "no";
|
|
600
|
+
skip: "skip";
|
|
601
|
+
unknown: "unknown";
|
|
602
|
+
waiting: "waiting";
|
|
603
|
+
yes: "yes";
|
|
604
|
+
}>;
|
|
605
|
+
say: z.ZodString;
|
|
606
|
+
act: z.ZodNullable<z.ZodObject<{
|
|
607
|
+
kind: z.ZodEnum<{
|
|
608
|
+
fix: "fix";
|
|
609
|
+
retry: "retry";
|
|
610
|
+
"run-checks": "run-checks";
|
|
611
|
+
}>;
|
|
612
|
+
}, z.core.$loose>>;
|
|
613
|
+
}, z.core.$loose>>;
|
|
614
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
615
|
+
envelopeVersion: z.ZodLiteral<1>;
|
|
616
|
+
ok: z.ZodLiteral<false>;
|
|
617
|
+
command: z.ZodLiteral<"task ready">;
|
|
618
|
+
reason: z.ZodString;
|
|
619
|
+
message: z.ZodOptional<z.ZodString>;
|
|
620
|
+
}, z.core.$loose>], "ok">;
|
|
569
621
|
readonly "task hold": z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
570
622
|
envelopeVersion: z.ZodLiteral<1>;
|
|
571
623
|
ok: z.ZodLiteral<true>;
|
package/dist/contracts/cli.js
CHANGED
|
@@ -183,6 +183,10 @@ export const COMMAND_OUTPUTS = {
|
|
|
183
183
|
// `status` is the observation's own answer (the one merges read); the rows are each check's timing.
|
|
184
184
|
"task ship": answers("task ship", { task: str, pullRequest: int, githubRepo: str, head: str, observedAt: str, status: z.enum(["passing", "failing", "running", "none"]),
|
|
185
185
|
checks: rows({ name: str, workflow: nullable(str), state: z.enum(["queued", "running", "passed", "failed", "skipped", "cancelled", "neutral"]), startedAt: nullable(str), completedAt: nullable(str), url: nullable(str), kind: z.enum(["run", "status"]), seconds: nullable(int) }) }),
|
|
186
|
+
// "Can I merge?" (merge-checklist.ts): the answer, its sentence, and one row per fact, each blocker with its act.
|
|
187
|
+
"task ready": answers("task ready", { taskId: str, activeTaskId: str, run: nullable(int), head: nullable(str), answer: z.enum(["yes", "no", "not-yet", "merged"]), sentence: str,
|
|
188
|
+
rows: rows({ key: z.enum(["plan", "build", "checks", "requirements", "pull-request", "pr-ci", "up-to-date", "conflicts", "comments", "release"]), label: str,
|
|
189
|
+
mark: z.enum(["yes", "no", "waiting", "unknown", "skip"]), say: str, act: nullable(z.looseObject({ kind: z.enum(["run-checks", "retry", "fix"]) })) }) }),
|
|
186
190
|
"task hold": answers("task hold", { id: str, reason: str, until: nullable(str) }),
|
|
187
191
|
"task unhold": answers("task unhold", { id: str }),
|
|
188
192
|
"task wait": answers("task wait", { task: str, outcome: str }),
|
|
@@ -87,6 +87,7 @@ export declare const CONSOLE_FORMS: {
|
|
|
87
87
|
readonly projectConcurrency: FormContract<"concurrency" | "repo">;
|
|
88
88
|
readonly projectLiveView: FormContract<"act" | "nonce" | "password" | "repo">;
|
|
89
89
|
readonly projectNetwork: FormContract<"hosts" | "local" | "mode" | "password" | "repo">;
|
|
90
|
+
readonly projectFallback: FormContract<"agents" | "paid" | "password" | "repo">;
|
|
90
91
|
readonly projectWrites: FormContract<"password" | "repo" | "writes">;
|
|
91
92
|
readonly projectCheckAccess: FormContract<"confirm-open" | "level" | "password" | "repo">;
|
|
92
93
|
readonly projectSandbox: FormContract<"mach" | "password" | "read-deny" | "repo">;
|
|
@@ -98,7 +99,7 @@ export declare const CONSOLE_FORMS: {
|
|
|
98
99
|
readonly signIn: FormContract<"action" | "client-id" | "client-secret" | "groups-claim" | "issuer" | "label" | "password" | "passwords" | "scopes" | `group-${string}` | `projects-${string}` | `role-${string}`>;
|
|
99
100
|
readonly updates: FormContract<"password" | "version" | "when">;
|
|
100
101
|
readonly retention: FormContract<"chat" | "checkouts" | "evidence" | "notifications" | "password">;
|
|
101
|
-
readonly storage: FormContract<"cleanup" | "password" | "path" | "preview">;
|
|
102
|
+
readonly storage: FormContract<"cleanup" | "idle" | "password" | "path" | "preview">;
|
|
102
103
|
readonly pullRequests: FormContract<"act" | "base" | "github" | "method" | "password" | "repo" | "when-green">;
|
|
103
104
|
readonly checks: FormContract<"act" | "command" | "level" | "on" | "password" | "repo" | "timeout">;
|
|
104
105
|
readonly backups: FormContract<"every" | "folder" | "keep" | "live_every" | "live_folder" | "password">;
|
|
@@ -115,6 +116,8 @@ export declare const CONSOLE_FORMS: {
|
|
|
115
116
|
readonly modelsRules: FormContract<"id" | "password" | "rule" | "scope">;
|
|
116
117
|
readonly knowledgeRefresh: FormContract<"repo">;
|
|
117
118
|
readonly knowledgeProposal: FormContract<"decision" | "proposal" | "repo">;
|
|
119
|
+
readonly knowledgeNote: FormContract<"claim" | "decision" | "proposal" | "repo">;
|
|
120
|
+
readonly knowledgeTidy: FormContract<"action" | "choice" | "claim" | "proposal" | "repo" | "revision" | "target" | "why">;
|
|
118
121
|
readonly knowledgeDecision: FormContract<"action" | "claim" | "decision" | "reason" | "repo" | "why">;
|
|
119
122
|
readonly knowledgeChange: FormContract<"action" | "content" | "id" | "identity" | "instructions" | "path" | "repo" | "restore" | "revision" | "title">;
|
|
120
123
|
readonly learningChange: FormContract<"action" | "identity" | "lesson" | "repo" | "revision" | "sha" | "version">;
|
|
@@ -140,7 +143,13 @@ export declare const CONSOLE_FORMS: {
|
|
|
140
143
|
readonly projectsSelect: FormContract<"path" | "return">;
|
|
141
144
|
readonly projectsRemove: FormContract<"repo">;
|
|
142
145
|
readonly projectsOpen: FormContract<"path" | "return">;
|
|
143
|
-
readonly
|
|
146
|
+
readonly codeMap: FormContract<"on" | "repo">;
|
|
147
|
+
readonly codeMapRefresh: FormContract<never>;
|
|
148
|
+
readonly tasksFast: FormContract<"digest" | "preview">;
|
|
149
|
+
readonly keepGrown: FormContract<never>;
|
|
150
|
+
readonly followThrough: FormContract<"act" | "capture" | "file" | "finding" | "label" | "line" | "note" | "pointer" | "run">;
|
|
151
|
+
readonly releaseGoOn: FormContract<"password">;
|
|
152
|
+
readonly tasksAdd: FormContract<"acceptance" | "after" | "from" | "from-head" | "from-read" | "goal" | "id" | "not" | "permission-mode" | "plain" | "plan-first" | "planning-policy" | "projectRevision" | "quality-mode" | "repo" | "scout" | "title" | "touches">;
|
|
144
153
|
readonly queue: FormContract<"before" | "column" | "from" | "note" | "projectRevision" | "queueRevision" | "respond" | "runner" | "task">;
|
|
145
154
|
readonly runnerRegister: FormContract<"capacity" | "name" | "token">;
|
|
146
155
|
readonly mode: FormContract<"auto-approve" | "chat-approve" | "days" | "digest" | "expiry" | "name" | "nonce" | "plan-auto" | "publication" | "repair-auto" | "review-auto" | "review-retry-auto" | "token">;
|
|
@@ -198,7 +207,7 @@ export declare const CONSOLE_FORMS: {
|
|
|
198
207
|
readonly taskRevision: FormContract<"revision-id" | "token">;
|
|
199
208
|
readonly taskCancel: FormContract<"reason">;
|
|
200
209
|
readonly taskRoute: FormContract<"agent" | "clear-phase" | "model" | "phase" | "provider" | "return" | "risky" | "sawDigest" | "size">;
|
|
201
|
-
readonly taskScope: FormContract<"acceptance" | "budget-microusd" | "budget-usd" | "goal" | "goal-brief" | "not" | "permission-mode" | "quality-mode" | "requirement" | "requirement-new" | "sawDigest" | "touches">;
|
|
210
|
+
readonly taskScope: FormContract<"acceptance" | "budget-microusd" | "budget-usd" | "goal" | "goal-brief" | "not" | "permission-mode" | "quality-mode" | "requirement" | "requirement-how" | "requirement-new" | "requirement-new-how" | "sawDigest" | "touches">;
|
|
202
211
|
readonly taskApprove: FormContract<"digest" | "nonce" | "rebuild" | "return" | "sheet" | "token">;
|
|
203
212
|
readonly taskAcceptProof: FormContract<"note" | "return" | "run">;
|
|
204
213
|
readonly taskComplete: FormContract<"accept" | "note" | "publish" | "receipt" | "return" | "run">;
|
|
@@ -96,6 +96,7 @@ export const CONSOLE_FORMS = {
|
|
|
96
96
|
projectConcurrency: formContract("POST /settings/project/concurrency", ["repo", "concurrency"]),
|
|
97
97
|
projectLiveView: formContract("POST /settings/project/live-view", ["repo", "act", "password", "nonce"]),
|
|
98
98
|
projectNetwork: formContract("POST /settings/project/network", ["repo", "mode", "local", "hosts", "password"]),
|
|
99
|
+
projectFallback: formContract("POST /settings/project/fallback", ["repo", "agents", "paid", "password"]),
|
|
99
100
|
projectWrites: formContract("POST /settings/project/writes", ["repo", "writes", "password"]),
|
|
100
101
|
projectCheckAccess: formContract("POST /settings/project/check-access", ["repo", "level", "confirm-open", "password"]),
|
|
101
102
|
projectSandbox: formContract("POST /settings/project/sandbox", ["repo", "read-deny", "mach", "password"]),
|
|
@@ -107,7 +108,7 @@ export const CONSOLE_FORMS = {
|
|
|
107
108
|
signIn: formContract("POST /settings/sign-in", ["action", "password", "issuer", "client-id", "client-secret", "label", "scopes", "groups-claim", "passwords"], { prefixes: ["group-", "role-", "projects-"] }),
|
|
108
109
|
updates: formContract("POST /settings/updates, /settings/updates/seen, /settings/updates/cancel", ["password", "version", "when"]),
|
|
109
110
|
retention: formContract("POST /settings/retention", ["password", "evidence", "checkouts", "chat", "notifications"]),
|
|
110
|
-
storage: formContract("POST /settings/storage, /settings/storage/clean, /settings/storage/discard", ["password", "cleanup", "preview", "path"]),
|
|
111
|
+
storage: formContract("POST /settings/storage, /settings/storage/clean, /settings/storage/discard", ["password", "cleanup", "idle", "preview", "path"]),
|
|
111
112
|
pullRequests: formContract("POST /settings/pull-requests", ["repo", "act", "password", "github", "base", "method", "when-green"]),
|
|
112
113
|
checks: formContract("POST /settings/checks", ["repo", "password", "act", "on", "level", "command", "timeout"]),
|
|
113
114
|
backups: formContract("POST /settings/backups", ["password", "every", "keep", "folder", "live_every", "live_folder"]),
|
|
@@ -129,6 +130,8 @@ export const CONSOLE_FORMS = {
|
|
|
129
130
|
modelsRules: formContract("POST /settings/models/accept, /settings/models/keep, /settings/models/suggest-on, /settings/models/turn-off, /settings/models/not-now, /settings/models/suggest-off, /settings/models/try, /settings/models/stop", ["password", "scope", "id", "rule"]),
|
|
130
131
|
knowledgeRefresh: formContract("POST /settings/knowledge/refresh", ["repo"]),
|
|
131
132
|
knowledgeProposal: formContract("POST /settings/knowledge/proposal", ["repo", "decision", "proposal"]),
|
|
133
|
+
knowledgeNote: formContract("POST /settings/knowledge/note", ["repo", "decision", "proposal", "claim"]),
|
|
134
|
+
knowledgeTidy: formContract("POST /settings/knowledge/tidy", ["repo", "action", "proposal", "choice", "claim", "why", "target", "revision"]),
|
|
132
135
|
knowledgeDecision: formContract("POST /settings/knowledge/decision", ["repo", "action", "claim", "why", "decision", "reason"]),
|
|
133
136
|
knowledgeChange: formContract("POST /settings/knowledge/change", ["repo", "action", "identity", "revision", "instructions", "title", "content", "path", "id", "restore"]),
|
|
134
137
|
learningChange: formContract("POST /settings/learning/change", ["repo", "action", "identity", "revision", "lesson", "version", "sha"]),
|
|
@@ -155,7 +158,13 @@ export const CONSOLE_FORMS = {
|
|
|
155
158
|
projectsSelect: formContract("POST /projects/select", ["path", "return"]),
|
|
156
159
|
projectsRemove: formContract("POST /projects/remove", ["repo"]),
|
|
157
160
|
projectsOpen: formContract("POST /projects/open", ["path", "return"]),
|
|
158
|
-
|
|
161
|
+
codeMap: formContract("POST /settings/project/code-map, /settings/project/code-map/holdout", ["repo", "on"]),
|
|
162
|
+
codeMapRefresh: formContract("POST /projects/<project>/map/refresh", []),
|
|
163
|
+
tasksFast: formContract("POST /tasks/fast", ["preview", "digest"]),
|
|
164
|
+
keepGrown: formContract("POST /t/<id>/keep-grown", []),
|
|
165
|
+
followThrough: formContract("POST /t/<id>/follow-through", ["act", "note", "file", "line", "finding", "run", "pointer", "capture", "label"]),
|
|
166
|
+
releaseGoOn: formContract("POST /t/<id>/release/go-on", ["password"]),
|
|
167
|
+
tasksAdd: formContract("POST /tasks/add", ["projectRevision", "plain", "from", "from-head", "from-read", "id", "title", "repo", "goal", "not", "touches", "scout", "permission-mode", "quality-mode", "after", "acceptance", "planning-policy", "plan-first"]),
|
|
159
168
|
queue: formContract("POST /queue/move, /queue/note", ["runner", "note", "from", "projectRevision", "respond", "task", "column", "before", "queueRevision"]),
|
|
160
169
|
runnerRegister: formContract("POST /fleet/runner/register", ["token", "name", "capacity"]),
|
|
161
170
|
mode: formContract("POST /mode/confirm, /mode/sign", ["name", "days", "auto-approve", "plan-auto", "chat-approve", "publication", "expiry", "nonce", "digest", "token", "review-auto", "review-retry-auto", "repair-auto"]),
|
|
@@ -216,7 +225,7 @@ export const CONSOLE_FORMS = {
|
|
|
216
225
|
taskRevision: formContract("POST /t/<task>/accept-revision|reject-revision", ["revision-id", "token"]),
|
|
217
226
|
taskCancel: formContract("POST /t/<task>/cancel", ["reason"]),
|
|
218
227
|
taskRoute: formContract("POST /t/<task>/route", ["size", "risky", "phase", "clear-phase", "agent", "provider", "model", "sawDigest", "return"]),
|
|
219
|
-
taskScope: formContract("POST /t/<task>/scope", ["sawDigest", "permission-mode", "quality-mode", "budget-usd", "budget-microusd", "requirement", "requirement-new", "goal-brief", "goal", "not", "touches", "acceptance"]),
|
|
228
|
+
taskScope: formContract("POST /t/<task>/scope", ["sawDigest", "permission-mode", "quality-mode", "budget-usd", "budget-microusd", "requirement", "requirement-new", "requirement-how", "requirement-new-how", "goal-brief", "goal", "not", "touches", "acceptance"]),
|
|
220
229
|
taskApprove: formContract("POST /t/<task>/approve", ["return", "digest", "token", "nonce", "rebuild", "sheet"]),
|
|
221
230
|
taskAcceptProof: formContract("POST /t/<task>/accept-proof", ["run", "note", "return"]),
|
|
222
231
|
taskComplete: formContract("POST /t/<task>/complete", ["receipt", "run", "accept", "note", "publish", "return"]),
|
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
* (mate-tools.ts). The lead-tools contract (item 5) imports it from here rather than restating it.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
|
-
export declare const PROPOSE_FLOW_OPERATIONS: readonly ["create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
|
|
7
|
+
export declare const PROPOSE_FLOW_OPERATIONS: readonly ["archive", "turn_off_unattended", "allow_unattended", "create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
|
|
8
8
|
export declare const proposeFlowInputSchema: z.ZodObject<{
|
|
9
9
|
operation: z.ZodEnum<{
|
|
10
10
|
add_card: "add_card";
|
|
11
11
|
add_trigger: "add_trigger";
|
|
12
12
|
allow_browser: "allow_browser";
|
|
13
|
+
allow_unattended: "allow_unattended";
|
|
13
14
|
approve: "approve";
|
|
15
|
+
archive: "archive";
|
|
14
16
|
assign: "assign";
|
|
15
17
|
cancel_card: "cancel_card";
|
|
16
18
|
choose: "choose";
|
|
@@ -27,11 +29,16 @@ export declare const proposeFlowInputSchema: z.ZodObject<{
|
|
|
27
29
|
send_back: "send_back";
|
|
28
30
|
starter: "starter";
|
|
29
31
|
turn_off_browser: "turn_off_browser";
|
|
32
|
+
turn_off_unattended: "turn_off_unattended";
|
|
30
33
|
unfollow: "unfollow";
|
|
31
34
|
}>;
|
|
32
35
|
repo: z.ZodOptional<z.ZodString>;
|
|
33
36
|
flow: z.ZodOptional<z.ZodInt>;
|
|
34
37
|
card: z.ZodOptional<z.ZodInt>;
|
|
38
|
+
days: z.ZodOptional<z.ZodInt>;
|
|
39
|
+
budget: z.ZodOptional<z.ZodString>;
|
|
40
|
+
runs: z.ZodOptional<z.ZodString>;
|
|
41
|
+
include: z.ZodOptional<z.ZodArray<z.ZodInt>>;
|
|
35
42
|
kit: z.ZodOptional<z.ZodEnum<{
|
|
36
43
|
[x: string]: string;
|
|
37
44
|
}>>;
|
|
@@ -11,7 +11,7 @@ import { KITS } from "../kits.js";
|
|
|
11
11
|
import { TEXT_LIMITS } from "../text-limits.js";
|
|
12
12
|
import { toModelSchema } from "./contract.js";
|
|
13
13
|
import { flowStepsSchema, leadTriggerSchema, SCRIPT_LANGUAGES, SCRIPT_NAME } from "./flow.js";
|
|
14
|
-
export const PROPOSE_FLOW_OPERATIONS = ["create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
|
|
14
|
+
export const PROPOSE_FLOW_OPERATIONS = ["archive", "turn_off_unattended", "allow_unattended", "create", "edit", "add_card", "move_card", "approve", "send_back", "choose", "cancel_card", "comment", "assign", "follow", "unfollow", "save_script", "add_trigger", "pause_trigger", "resume_trigger", "remove_trigger", "kit", "starter", "allow_browser", "turn_off_browser"];
|
|
15
15
|
const id = z.int().min(1);
|
|
16
16
|
const enumOf = (values) => z.enum(values);
|
|
17
17
|
export const proposeFlowInputSchema = z.strictObject({
|
|
@@ -19,6 +19,8 @@ export const proposeFlowInputSchema = z.strictObject({
|
|
|
19
19
|
/** A project as list_repos names it (r1, r2). */
|
|
20
20
|
repo: z.string().regex(/^r[0-9]{1,3}$/, { error: "must be a project from list_repos, like r1" }).optional(),
|
|
21
21
|
flow: id.optional(), card: id.optional(),
|
|
22
|
+
/** allow_unattended: how long it runs on its own, what it may spend, and the schedules chosen beyond the plain ones. */
|
|
23
|
+
days: z.int().min(1).optional(), budget: z.string().max(20).optional(), runs: z.string().max(20).optional(), include: z.array(id).max(50).optional(),
|
|
22
24
|
kit: enumOf(KITS.map(one => one.id)).optional(),
|
|
23
25
|
starter: z.enum(STARTER_IDS).optional(),
|
|
24
26
|
name: z.string().max(TEXT_LIMITS.flowName).optional(),
|