toolroll 0.9.94 → 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 +12 -1
- package/dist/agent-fence.d.ts +6 -0
- package/dist/agent-fence.js +2 -2
- package/dist/assignment-status.d.ts +1 -1
- package/dist/assignment-ui.js +2 -0
- package/dist/attest.d.ts +3 -0
- package/dist/attest.js +10 -0
- package/dist/browser/terminal.js +1 -1
- package/dist/browser/workspace.css +1 -1
- package/dist/browser/workspace.js +24 -24
- package/dist/browser-crew.js +2 -0
- package/dist/browser-workspace.d.ts +5 -0
- package/dist/build-review.js +2 -0
- package/dist/builder.d.ts +7 -2
- package/dist/builder.js +183 -79
- 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-actions.d.ts +95 -8
- package/dist/chat-actions.js +449 -45
- 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 +26 -14
- package/dist/chat-controls.d.ts +4 -0
- package/dist/chat-controls.js +4 -0
- package/dist/chat-decide.d.ts +3 -14
- package/dist/chat-decide.js +43 -54
- 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 +1 -1
- 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/check-failure.d.ts +2 -0
- package/dist/check-failure.js +34 -2
- package/dist/check-repair.d.ts +47 -0
- package/dist/check-repair.js +240 -0
- package/dist/claim.d.ts +6 -0
- package/dist/claim.js +13 -2
- package/dist/cli-help.d.ts +1 -1
- package/dist/cli-help.js +2 -0
- package/dist/cli.js +4 -0
- package/dist/coding-provider.d.ts +1 -1
- package/dist/coding-provider.js +9 -5
- package/dist/coding-workspace.d.ts +1 -1
- package/dist/coding-workspace.js +4 -4
- package/dist/contracts/chat-actions.d.ts +83 -0
- package/dist/contracts/chat-actions.js +18 -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/console-api.d.ts +2 -0
- package/dist/contracts/console-api.js +2 -0
- 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/lead-tools.d.ts +173 -0
- package/dist/contracts/lead-tools.js +15 -0
- package/dist/contracts/store-json.d.ts +16 -0
- package/dist/discord-chat.js +14 -0
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +7 -1
- package/dist/dispose.d.ts +19 -0
- package/dist/dispose.js +47 -7
- package/dist/eval-oracle.js +4 -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/findings.d.ts +224 -0
- package/dist/findings.js +449 -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-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.js +1 -1
- 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/handover-note.d.ts +33 -0
- package/dist/handover-note.js +106 -0
- package/dist/invoke.d.ts +20 -1
- package/dist/invoke.js +108 -44
- package/dist/lead-cli.js +26 -24
- package/dist/lead-contract.js +1 -0
- package/dist/lead-doors.d.ts +4 -0
- package/dist/lead-doors.js +2 -2
- package/dist/lead-progress.js +2 -0
- package/dist/lead-tools.js +111 -32
- package/dist/lead.js +1 -1
- package/dist/local-owner.js +5 -0
- package/dist/modes.d.ts +6 -6
- package/dist/modes.js +3 -1
- package/dist/needs-you.d.ts +5 -2
- package/dist/needs-you.js +14 -2
- package/dist/operate-remote-arguments.js +1 -0
- package/dist/operate-remote.js +1 -1
- package/dist/operate.d.ts +1 -1
- package/dist/operate.js +165 -14
- 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 +2 -1
- package/dist/project-delete-ui.d.ts +12 -0
- package/dist/project-delete-ui.js +18 -1
- package/dist/project-delete.js +6 -0
- package/dist/project-knowledge.d.ts +6 -6
- package/dist/project-tools.d.ts +4 -4
- package/dist/project-tools.js +23 -7
- 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-capture.d.ts +34 -0
- package/dist/provider-capture.js +53 -0
- package/dist/release-carry.js +10 -1
- package/dist/release.js +9 -1
- package/dist/scope.d.ts +22 -3
- package/dist/scope.js +71 -20
- package/dist/scout.d.ts +1 -1
- package/dist/scout.js +2 -1
- package/dist/serve.js +2 -0
- package/dist/server/chat.js +2 -2
- package/dist/server/console.css +50 -0
- package/dist/server/render-chat.js +14 -1
- package/dist/server/render-follow-through.d.ts +11 -0
- package/dist/server/render-follow-through.js +68 -0
- package/dist/server/render-results.js +1 -1
- package/dist/server/render-tasks.d.ts +3 -0
- package/dist/server/render-tasks.js +24 -5
- package/dist/server/route-table.js +3 -0
- package/dist/server/settings.js +37 -12
- package/dist/server/task-views.js +5 -0
- package/dist/server/tasks.js +76 -0
- package/dist/settings-groups-ui.d.ts +1 -0
- package/dist/settings-groups-ui.js +3 -1
- package/dist/settings-kit.js +3 -2
- package/dist/settings-proofs.js +3 -1
- package/dist/setup-guide.d.ts +2 -2
- package/dist/slack-chat.js +14 -1
- package/dist/steer-mailbox.d.ts +8 -1
- package/dist/steer-mailbox.js +164 -6
- package/dist/store.d.ts +11 -4
- package/dist/store.js +93 -30
- package/dist/surface.js +24 -4
- package/dist/task-control.d.ts +2 -1
- package/dist/task-status.js +5 -0
- package/dist/teardown-git.d.ts +2 -0
- package/dist/teardown-git.js +42 -16
- package/dist/telegram-lead.js +23 -6
- package/dist/telegram.js +12 -1
- package/dist/toolroll-update.js +2 -0
- package/dist/work-index.js +22 -7
- package/dist/work-summary.d.ts +1 -1
- package/dist/work-summary.js +5 -2
- package/dist/workspace-ui.d.ts +3 -1
- package/dist/workspace-ui.js +10 -1
- package/dist/worktree.js +23 -1
- package/package.json +2 -1
|
@@ -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
|
};
|
|
@@ -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">;
|
|
@@ -146,6 +147,7 @@ export declare const CONSOLE_FORMS: {
|
|
|
146
147
|
readonly codeMapRefresh: FormContract<never>;
|
|
147
148
|
readonly tasksFast: FormContract<"digest" | "preview">;
|
|
148
149
|
readonly keepGrown: FormContract<never>;
|
|
150
|
+
readonly followThrough: FormContract<"act" | "capture" | "file" | "finding" | "label" | "line" | "note" | "pointer" | "run">;
|
|
149
151
|
readonly releaseGoOn: FormContract<"password">;
|
|
150
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">;
|
|
151
153
|
readonly queue: FormContract<"before" | "column" | "from" | "note" | "projectRevision" | "queueRevision" | "respond" | "runner" | "task">;
|
|
@@ -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"]),
|
|
@@ -161,6 +162,7 @@ export const CONSOLE_FORMS = {
|
|
|
161
162
|
codeMapRefresh: formContract("POST /projects/<project>/map/refresh", []),
|
|
162
163
|
tasksFast: formContract("POST /tasks/fast", ["preview", "digest"]),
|
|
163
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"]),
|
|
164
166
|
releaseGoOn: formContract("POST /t/<id>/release/go-on", ["password"]),
|
|
165
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"]),
|
|
166
168
|
queue: formContract("POST /queue/move, /queue/note", ["runner", "note", "from", "projectRevision", "respond", "task", "column", "before", "queueRevision"]),
|
|
@@ -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(),
|
|
@@ -60,6 +60,69 @@ export declare const flowSendPayloadSchema: z.ZodObject<{
|
|
|
60
60
|
plug: z.ZodString;
|
|
61
61
|
shot: z.ZodNullable<z.ZodInt>;
|
|
62
62
|
}, z.core.$strict>>>;
|
|
63
|
+
card: z.ZodOptional<z.ZodObject<{
|
|
64
|
+
version: z.ZodLiteral<1>;
|
|
65
|
+
title: z.ZodString;
|
|
66
|
+
asOf: z.ZodString;
|
|
67
|
+
repos: z.ZodArray<z.ZodString>;
|
|
68
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
69
|
+
kind: z.ZodLiteral<"text">;
|
|
70
|
+
text: z.ZodString;
|
|
71
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
72
|
+
kind: z.ZodLiteral<"divider">;
|
|
73
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
74
|
+
kind: z.ZodLiteral<"facts">;
|
|
75
|
+
heading: z.ZodString;
|
|
76
|
+
items: z.ZodArray<z.ZodObject<{
|
|
77
|
+
label: z.ZodString;
|
|
78
|
+
value: z.ZodString;
|
|
79
|
+
}, z.core.$strict>>;
|
|
80
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
81
|
+
kind: z.ZodLiteral<"table">;
|
|
82
|
+
heading: z.ZodString;
|
|
83
|
+
origin: z.ZodEnum<{
|
|
84
|
+
records: "records";
|
|
85
|
+
report: "report";
|
|
86
|
+
}>;
|
|
87
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
88
|
+
label: z.ZodString;
|
|
89
|
+
numeric: z.ZodBoolean;
|
|
90
|
+
}, z.core.$strict>>;
|
|
91
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
92
|
+
more: z.ZodInt;
|
|
93
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
94
|
+
kind: z.ZodLiteral<"notes">;
|
|
95
|
+
heading: z.ZodString;
|
|
96
|
+
origin: z.ZodEnum<{
|
|
97
|
+
records: "records";
|
|
98
|
+
report: "report";
|
|
99
|
+
}>;
|
|
100
|
+
items: z.ZodArray<z.ZodString>;
|
|
101
|
+
more: z.ZodInt;
|
|
102
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
103
|
+
kind: z.ZodLiteral<"chart">;
|
|
104
|
+
heading: z.ZodString;
|
|
105
|
+
chart: z.ZodEnum<{
|
|
106
|
+
area: "area";
|
|
107
|
+
bar: "bar";
|
|
108
|
+
line: "line";
|
|
109
|
+
pie: "pie";
|
|
110
|
+
}>;
|
|
111
|
+
points: z.ZodArray<z.ZodObject<{
|
|
112
|
+
label: z.ZodString;
|
|
113
|
+
value: z.ZodNumber;
|
|
114
|
+
shown: z.ZodString;
|
|
115
|
+
}, z.core.$strict>>;
|
|
116
|
+
}, z.core.$strict>], "kind">>;
|
|
117
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
118
|
+
label: z.ZodString;
|
|
119
|
+
path: z.ZodString;
|
|
120
|
+
}, z.core.$strict>>;
|
|
121
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
122
|
+
proposal: z.ZodInt;
|
|
123
|
+
label: z.ZodString;
|
|
124
|
+
}, z.core.$strict>>;
|
|
125
|
+
}, z.core.$strict>>;
|
|
63
126
|
}, z.core.$strict>;
|
|
64
127
|
export declare const flowChoosePayloadSchema: z.ZodObject<{
|
|
65
128
|
version: z.ZodLiteral<1>;
|
|
@@ -85,6 +148,69 @@ export declare const flowChoosePayloadSchema: z.ZodObject<{
|
|
|
85
148
|
plug: z.ZodString;
|
|
86
149
|
shot: z.ZodNullable<z.ZodInt>;
|
|
87
150
|
}, z.core.$strict>>>;
|
|
151
|
+
card: z.ZodOptional<z.ZodObject<{
|
|
152
|
+
version: z.ZodLiteral<1>;
|
|
153
|
+
title: z.ZodString;
|
|
154
|
+
asOf: z.ZodString;
|
|
155
|
+
repos: z.ZodArray<z.ZodString>;
|
|
156
|
+
blocks: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
157
|
+
kind: z.ZodLiteral<"text">;
|
|
158
|
+
text: z.ZodString;
|
|
159
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
160
|
+
kind: z.ZodLiteral<"divider">;
|
|
161
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
162
|
+
kind: z.ZodLiteral<"facts">;
|
|
163
|
+
heading: z.ZodString;
|
|
164
|
+
items: z.ZodArray<z.ZodObject<{
|
|
165
|
+
label: z.ZodString;
|
|
166
|
+
value: z.ZodString;
|
|
167
|
+
}, z.core.$strict>>;
|
|
168
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
169
|
+
kind: z.ZodLiteral<"table">;
|
|
170
|
+
heading: z.ZodString;
|
|
171
|
+
origin: z.ZodEnum<{
|
|
172
|
+
records: "records";
|
|
173
|
+
report: "report";
|
|
174
|
+
}>;
|
|
175
|
+
columns: z.ZodArray<z.ZodObject<{
|
|
176
|
+
label: z.ZodString;
|
|
177
|
+
numeric: z.ZodBoolean;
|
|
178
|
+
}, z.core.$strict>>;
|
|
179
|
+
rows: z.ZodArray<z.ZodArray<z.ZodString>>;
|
|
180
|
+
more: z.ZodInt;
|
|
181
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
182
|
+
kind: z.ZodLiteral<"notes">;
|
|
183
|
+
heading: z.ZodString;
|
|
184
|
+
origin: z.ZodEnum<{
|
|
185
|
+
records: "records";
|
|
186
|
+
report: "report";
|
|
187
|
+
}>;
|
|
188
|
+
items: z.ZodArray<z.ZodString>;
|
|
189
|
+
more: z.ZodInt;
|
|
190
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
191
|
+
kind: z.ZodLiteral<"chart">;
|
|
192
|
+
heading: z.ZodString;
|
|
193
|
+
chart: z.ZodEnum<{
|
|
194
|
+
area: "area";
|
|
195
|
+
bar: "bar";
|
|
196
|
+
line: "line";
|
|
197
|
+
pie: "pie";
|
|
198
|
+
}>;
|
|
199
|
+
points: z.ZodArray<z.ZodObject<{
|
|
200
|
+
label: z.ZodString;
|
|
201
|
+
value: z.ZodNumber;
|
|
202
|
+
shown: z.ZodString;
|
|
203
|
+
}, z.core.$strict>>;
|
|
204
|
+
}, z.core.$strict>], "kind">>;
|
|
205
|
+
buttons: z.ZodArray<z.ZodObject<{
|
|
206
|
+
label: z.ZodString;
|
|
207
|
+
path: z.ZodString;
|
|
208
|
+
}, z.core.$strict>>;
|
|
209
|
+
actions: z.ZodArray<z.ZodObject<{
|
|
210
|
+
proposal: z.ZodInt;
|
|
211
|
+
label: z.ZodString;
|
|
212
|
+
}, z.core.$strict>>;
|
|
213
|
+
}, z.core.$strict>>;
|
|
88
214
|
options: z.ZodArray<z.ZodObject<{
|
|
89
215
|
choice: z.ZodInt;
|
|
90
216
|
label: z.ZodString;
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
import { parseContract, readVersioned, versioned } from "./contract.js";
|
|
15
|
+
import { chatCardSchema } from "./chat-card.js";
|
|
15
16
|
import { isRecord } from "../is-record.js";
|
|
16
17
|
/** A link the message carries: a page of Toolroll's (a button) or the one outside page, a pull request. */
|
|
17
18
|
export const flowSendLinkSchema = z.union([
|
|
@@ -42,6 +43,8 @@ const sendShape = {
|
|
|
42
43
|
shots: z.strictObject({ taskId: z.string(), run: z.int() }).nullable(),
|
|
43
44
|
/** After research: the report's items, numbered in this order in every message and screenshot caption. */
|
|
44
45
|
items: z.array(flowSendItemSchema).min(1).optional(),
|
|
46
|
+
/** A "Send to me" visit's result as a card (flow-result-card.ts), from what the flow recorded. */
|
|
47
|
+
card: chatCardSchema.optional(),
|
|
45
48
|
};
|
|
46
49
|
export const flowChoiceOptionSchema = z.strictObject({ choice: z.int().min(0), label: z.string() });
|
|
47
50
|
export const flowSendPayloadSchema = versioned(FLOW_SEND_VERSION, sendShape);
|