toolroll 0.9.85 → 0.9.87

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.
Files changed (220) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/agent-fence.d.ts +6 -2
  3. package/dist/agent-fence.js +3 -2
  4. package/dist/agents-board.d.ts +12 -0
  5. package/dist/agents-board.js +26 -0
  6. package/dist/approval-rules-ui.d.ts +4 -1
  7. package/dist/approval-rules-ui.js +31 -15
  8. package/dist/assignment-ui.js +1 -1
  9. package/dist/assignment.js +4 -3
  10. package/dist/backup-ui.d.ts +5 -4
  11. package/dist/backup-ui.js +65 -32
  12. package/dist/browser/terminal.css +1 -1
  13. package/dist/browser/terminal.js +57 -54
  14. package/dist/browser/workspace.css +2 -2
  15. package/dist/browser/workspace.js +35 -68
  16. package/dist/browser-crew.js +1 -1
  17. package/dist/browser-workspace.d.ts +363 -177
  18. package/dist/browser-workspace.js +10 -9
  19. package/dist/chat-actions.d.ts +11 -1
  20. package/dist/chat-actions.js +53 -1
  21. package/dist/chat-channel.js +1 -0
  22. package/dist/chat-controls.d.ts +1 -1
  23. package/dist/chat-controls.js +1 -1
  24. package/dist/chat-quiet.js +3 -2
  25. package/dist/chat-settings-page.d.ts +29 -9
  26. package/dist/chat-settings-page.js +59 -28
  27. package/dist/check-levels-ui.d.ts +2 -1
  28. package/dist/check-levels-ui.js +67 -58
  29. package/dist/claim.d.ts +3 -0
  30. package/dist/claim.js +4 -1
  31. package/dist/contracts/chat-actions.d.ts +9 -0
  32. package/dist/contracts/chat-actions.js +3 -0
  33. package/dist/contracts/cli.d.ts +43 -0
  34. package/dist/contracts/cli.js +4 -0
  35. package/dist/contracts/console-api.d.ts +4 -1
  36. package/dist/contracts/console-api.js +4 -1
  37. package/dist/contracts/flow-propose.d.ts +4 -1
  38. package/dist/contracts/flow-propose.js +1 -1
  39. package/dist/contracts/flow.d.ts +41 -0
  40. package/dist/contracts/flow.js +4 -2
  41. package/dist/contracts/lead-tools.d.ts +21 -0
  42. package/dist/contracts/lead-tools.js +2 -0
  43. package/dist/contracts/store-json.d.ts +2 -0
  44. package/dist/contracts/trigger-payloads.d.ts +20 -0
  45. package/dist/contracts/trigger-payloads.js +4 -0
  46. package/dist/coordinator.js +1 -0
  47. package/dist/credentials-ui.d.ts +5 -3
  48. package/dist/credentials-ui.js +58 -31
  49. package/dist/deploy-gate.js +4 -0
  50. package/dist/design/kit.css +685 -0
  51. package/dist/design/kit.d.ts +208 -0
  52. package/dist/design/kit.js +177 -0
  53. package/dist/design/tokens.css +19 -1
  54. package/dist/discord-settings.js +8 -4
  55. package/dist/dispatch.d.ts +3 -0
  56. package/dist/dispatch.js +4 -1
  57. package/dist/export-ui.d.ts +6 -4
  58. package/dist/export-ui.js +18 -8
  59. package/dist/flow-browser.d.ts +103 -0
  60. package/dist/flow-browser.js +204 -0
  61. package/dist/flow-changed.d.ts +14 -0
  62. package/dist/flow-changed.js +53 -0
  63. package/dist/flow-code.d.ts +5 -1
  64. package/dist/flow-code.js +4 -1
  65. package/dist/flow-engine.js +16 -0
  66. package/dist/flow-gallery-ui.d.ts +41 -4
  67. package/dist/flow-gallery-ui.js +95 -63
  68. package/dist/flow-live.js +9 -1
  69. package/dist/flow-pull-request.js +15 -7
  70. package/dist/flow-share.js +3 -1
  71. package/dist/flow-starters-ui.d.ts +3 -9
  72. package/dist/flow-starters-ui.js +12 -23
  73. package/dist/flow-steps.d.ts +9 -1
  74. package/dist/flow-steps.js +55 -5
  75. package/dist/flow-triggers.js +55 -0
  76. package/dist/flow-unattended-words.d.ts +20 -0
  77. package/dist/flow-unattended-words.js +24 -0
  78. package/dist/flow-unattended.d.ts +9 -5
  79. package/dist/flow-unattended.js +45 -23
  80. package/dist/flows-cli.d.ts +19 -0
  81. package/dist/flows-cli.js +54 -5
  82. package/dist/flows-ui.d.ts +12 -6
  83. package/dist/flows-ui.js +152 -32
  84. package/dist/flows.js +5 -2
  85. package/dist/integrations-ui.d.ts +6 -4
  86. package/dist/integrations-ui.js +34 -40
  87. package/dist/integrations.d.ts +2 -2
  88. package/dist/integrations.js +4 -4
  89. package/dist/kits-ui.d.ts +8 -10
  90. package/dist/kits-ui.js +29 -33
  91. package/dist/kits.js +1 -1
  92. package/dist/knowledge-ui.js +76 -19
  93. package/dist/lead-tools.js +35 -6
  94. package/dist/lead-voice.js +16 -5
  95. package/dist/ledger-view.d.ts +2 -0
  96. package/dist/ledger-view.js +41 -38
  97. package/dist/models-ui.d.ts +8 -3
  98. package/dist/models-ui.js +82 -59
  99. package/dist/monitoring-ui.d.ts +4 -2
  100. package/dist/monitoring-ui.js +44 -13
  101. package/dist/needs-you.d.ts +1 -1
  102. package/dist/needs-you.js +8 -0
  103. package/dist/operate-remote-arguments.js +1 -0
  104. package/dist/operate-remote.js +1 -1
  105. package/dist/operate.d.ts +1 -1
  106. package/dist/operate.js +249 -6
  107. package/dist/passwordless.d.ts +1 -1
  108. package/dist/passwordless.js +1 -1
  109. package/dist/people-audit-ui.d.ts +2 -1
  110. package/dist/people-audit-ui.js +25 -23
  111. package/dist/policy-ui.d.ts +3 -2
  112. package/dist/policy-ui.js +27 -21
  113. package/dist/policy.d.ts +3 -0
  114. package/dist/policy.js +14 -1
  115. package/dist/project-delete-ui.d.ts +4 -2
  116. package/dist/project-delete-ui.js +135 -126
  117. package/dist/project-delete.js +7 -3
  118. package/dist/project-knowledge.d.ts +10 -10
  119. package/dist/publish.d.ts +11 -0
  120. package/dist/publish.js +16 -3
  121. package/dist/pull-request-flow.js +35 -4
  122. package/dist/pull-request-ui.d.ts +2 -1
  123. package/dist/pull-request-ui.js +39 -28
  124. package/dist/recipe-ui.d.ts +4 -2
  125. package/dist/recipe-ui.js +14 -4
  126. package/dist/release-adapters.d.ts +3 -0
  127. package/dist/release-adapters.js +22 -2
  128. package/dist/release-cli.js +81 -9
  129. package/dist/release.d.ts +21 -0
  130. package/dist/release.js +40 -4
  131. package/dist/releases.js +1 -1
  132. package/dist/request-budget-ui.d.ts +4 -2
  133. package/dist/request-budget-ui.js +30 -19
  134. package/dist/result-follow-ups.js +4 -0
  135. package/dist/retention-ui.d.ts +4 -3
  136. package/dist/retention-ui.js +15 -12
  137. package/dist/scope.d.ts +8 -0
  138. package/dist/scope.js +13 -0
  139. package/dist/serve.d.ts +0 -1
  140. package/dist/serve.js +51 -7
  141. package/dist/server/agents-computers.d.ts +9 -0
  142. package/dist/server/agents-computers.js +67 -0
  143. package/dist/server/chat.js +20 -18
  144. package/dist/server/chrome.d.ts +1 -1
  145. package/dist/server/chrome.js +19 -9
  146. package/dist/server/console.css +31 -2
  147. package/dist/server/flows.js +79 -36
  148. package/dist/server/home.d.ts +35 -0
  149. package/dist/server/home.js +104 -0
  150. package/dist/server/http.d.ts +3 -0
  151. package/dist/server/http.js +5 -0
  152. package/dist/server/kit-standalone.d.ts +22 -0
  153. package/dist/server/kit-standalone.js +69 -0
  154. package/dist/server/kit.d.ts +405 -0
  155. package/dist/server/kit.js +361 -0
  156. package/dist/server/pages.d.ts +2 -1
  157. package/dist/server/pages.js +213 -174
  158. package/dist/server/people-tokens.js +26 -85
  159. package/dist/server/render-history.d.ts +51 -0
  160. package/dist/server/render-history.js +228 -0
  161. package/dist/server/render-new-task.d.ts +29 -0
  162. package/dist/server/render-new-task.js +96 -0
  163. package/dist/server/render-next.d.ts +63 -0
  164. package/dist/server/render-next.js +109 -0
  165. package/dist/server/render-pages.d.ts +35 -190
  166. package/dist/server/render-pages.js +154 -563
  167. package/dist/server/render-people.d.ts +24 -3
  168. package/dist/server/render-people.js +93 -72
  169. package/dist/server/render-projects.d.ts +103 -0
  170. package/dist/server/render-projects.js +247 -0
  171. package/dist/server/render-results.d.ts +5 -24
  172. package/dist/server/render-results.js +48 -185
  173. package/dist/server/render-settings.d.ts +5 -74
  174. package/dist/server/render-settings.js +102 -493
  175. package/dist/server/render-tasks.d.ts +43 -5
  176. package/dist/server/render-tasks.js +131 -91
  177. package/dist/server/route-table.js +31 -5
  178. package/dist/server/settings.js +276 -255
  179. package/dist/server/task-views.d.ts +8 -0
  180. package/dist/server/task-views.js +90 -2
  181. package/dist/server/tasks.d.ts +18 -0
  182. package/dist/server/tasks.js +148 -41
  183. package/dist/server/terminals.js +1 -1
  184. package/dist/server/welcome.d.ts +22 -0
  185. package/dist/server/welcome.js +69 -0
  186. package/dist/settings-groups-ui.d.ts +279 -0
  187. package/dist/settings-groups-ui.js +615 -0
  188. package/dist/settings-kit.d.ts +42 -6
  189. package/dist/settings-kit.js +69 -7
  190. package/dist/settings-proofs.js +1 -0
  191. package/dist/setup-guide.d.ts +2 -2
  192. package/dist/skills-ui.js +59 -7
  193. package/dist/slack-settings.js +12 -5
  194. package/dist/spend-ui.d.ts +45 -26
  195. package/dist/spend-ui.js +124 -56
  196. package/dist/sso-ui.d.ts +5 -2
  197. package/dist/sso-ui.js +63 -31
  198. package/dist/storage-ui.d.ts +3 -2
  199. package/dist/storage-ui.js +56 -50
  200. package/dist/store.d.ts +182 -5
  201. package/dist/store.js +512 -38
  202. package/dist/surface.js +23 -3
  203. package/dist/task-archive.d.ts +10 -0
  204. package/dist/task-archive.js +16 -0
  205. package/dist/task-control.d.ts +1 -1
  206. package/dist/teams-settings.d.ts +2 -1
  207. package/dist/teams-settings.js +24 -41
  208. package/dist/telegram-settings.d.ts +0 -4
  209. package/dist/telegram-settings.js +52 -25
  210. package/dist/tidy.d.ts +130 -0
  211. package/dist/tidy.js +503 -0
  212. package/dist/toolroll-update-ui.d.ts +8 -4
  213. package/dist/toolroll-update-ui.js +55 -45
  214. package/dist/tools-ui.d.ts +5 -3
  215. package/dist/tools-ui.js +107 -42
  216. package/dist/work-index.d.ts +24 -0
  217. package/dist/work-index.js +56 -30
  218. package/dist/workspace-ui.d.ts +1 -1
  219. package/dist/workspace-ui.js +8 -4
  220. package/package.json +1 -1
@@ -0,0 +1,279 @@
1
+ import { type BrowserPhoneCard, type BrowserUpdates } from "./browser-workspace.js";
2
+ import { type Html, type HtmlValue } from "./html.js";
3
+ import { type UnattendedPermissionMode } from "./scope.js";
4
+ import { type QualityMode } from "./quality.js";
5
+ import { type ResultScreenshots } from "./store.js";
6
+ export type SettingsGroup = "hub" | "general" | "agents" | "alerts" | "approval" | "projects" | "access" | "system";
7
+ /** The group pages this module draws (Spend is /spend; Approvals and safety is /settings/approval, its own handler). */
8
+ export declare const GROUP_PATHS: Readonly<Record<string, SettingsGroup>>;
9
+ type Tone = "ok" | "warn" | "off" | "neutral";
10
+ export type ProviderFacts = {
11
+ provider: string;
12
+ name: string;
13
+ tone: Tone;
14
+ words: string;
15
+ connection: {
16
+ words: string;
17
+ facts: string;
18
+ } | null;
19
+ usage: string;
20
+ envName: string;
21
+ subscriptionCapable: boolean;
22
+ mode: "subscription" | "api-key";
23
+ set: boolean;
24
+ };
25
+ export type WorkerFacts = {
26
+ name: string;
27
+ tone: "ok" | "warn" | "off";
28
+ state: string;
29
+ capacity: number;
30
+ busy: number;
31
+ running: {
32
+ taskId: string;
33
+ title: string;
34
+ href: string;
35
+ project: string | null;
36
+ }[];
37
+ };
38
+ export type EmailFacts = {
39
+ set: boolean;
40
+ host: string;
41
+ port: number;
42
+ secure: boolean;
43
+ user: string;
44
+ from: string;
45
+ imapHost: string;
46
+ imapPort: number;
47
+ google: {
48
+ connected: string | null;
49
+ clientId: string;
50
+ redirect: string | null;
51
+ };
52
+ };
53
+ /** What the overview and the group pages show, as the settings handler read it for this person. */
54
+ export type SettingsFacts = {
55
+ /** The person: an approver (can manage and approve), an instance operator, signed in in a browser. */
56
+ name: string;
57
+ approver: boolean;
58
+ operator: boolean;
59
+ browser: boolean;
60
+ /** Installation-wide settings are this person's to see: not a project-limited account (the bot token, defaults…). */
61
+ installation: boolean;
62
+ said: string | null;
63
+ problem: string | null;
64
+ theme: "system" | "light" | "dark";
65
+ accent: string;
66
+ version: string | null;
67
+ permission: {
68
+ mode: UnattendedPermissionMode;
69
+ canManage: boolean;
70
+ changed: string | null;
71
+ } | null;
72
+ quality: {
73
+ mode: QualityMode;
74
+ canManage: boolean;
75
+ changed: string | null;
76
+ } | null;
77
+ providers: ProviderFacts[] | null;
78
+ workers: WorkerFacts[] | null;
79
+ updates: BrowserUpdates | null;
80
+ firstResult: string | null;
81
+ chat: {
82
+ mode: "quiet" | "all";
83
+ digestAt: string | null;
84
+ screenshots?: ResultScreenshots;
85
+ projects?: {
86
+ repo: string;
87
+ name: string;
88
+ muted: boolean;
89
+ }[];
90
+ } | null;
91
+ messaging: {
92
+ channel: string | null;
93
+ implicit: boolean;
94
+ configured: string[];
95
+ legacyWarning?: string;
96
+ } | null;
97
+ push: {
98
+ available: boolean;
99
+ devices: {
100
+ id: number;
101
+ words: string;
102
+ state: "ok" | "failing" | "expired";
103
+ removable: boolean;
104
+ }[];
105
+ } | null;
106
+ digest: {
107
+ every: string;
108
+ held: string | null;
109
+ } | null;
110
+ telegram: {
111
+ state: string;
112
+ current: string;
113
+ delivery: string | null;
114
+ failing: boolean;
115
+ };
116
+ email: EmailFacts | null;
117
+ phone: BrowserPhoneCard | null;
118
+ projects: {
119
+ repo: string;
120
+ name: string;
121
+ }[];
122
+ people: {
123
+ approvers: string[];
124
+ viewers: string[];
125
+ invites: number;
126
+ } | null;
127
+ passwordless: boolean | null;
128
+ sso: string | null;
129
+ access: {
130
+ sessions: number;
131
+ tokens: number;
132
+ };
133
+ backup: {
134
+ failed: boolean;
135
+ words: string;
136
+ } | null;
137
+ };
138
+ declare const groupHref: (slug: string) => string;
139
+ export type NeedsItem = {
140
+ group: string;
141
+ title: string;
142
+ text: string;
143
+ action: readonly [label: string, href: string];
144
+ };
145
+ /** What waits on this person in Settings (never a task): no builder, a chat app failing, a failed backup. Read-only. */
146
+ export declare function settingsNeeds(facts: SettingsFacts): NeedsItem[];
147
+ /** Which groups have something waiting, for the section nav's dot and the overview's rows. */
148
+ export declare function needsByGroup(items: readonly NeedsItem[]): Record<string, number>;
149
+ /** The overview: what waits on this person, then one row per group with its state. Viewers see the groups they can open. */
150
+ export declare function settingsHub(facts: SettingsFacts): Html;
151
+ /** The hub's old anchors, forwarded to their group (fragments never reach the server). */
152
+ export declare const HUB_ANCHORS: Readonly<Record<string, string>>;
153
+ export declare const HUB_ANCHOR_SCRIPT: string;
154
+ export declare function generalGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
155
+ export declare function agentsGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
156
+ /** Enrolling this device fills the subscription the form posts; it never reads the password beside it. With the kit's
157
+ * section forms (section-forms.ts) it answers their `k-prepare` hook after the password is confirmed, so the post
158
+ * goes exactly once under the pending guard; without them it holds the plain submit, then posts. */
159
+ export declare function pushScriptOf(facts: SettingsFacts): string | null;
160
+ export declare function alertsGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
161
+ export type ApprovalGroupFacts = {
162
+ facts: Pick<SettingsFacts, "permission" | "quality" | "said" | "problem">;
163
+ flags: Record<string, boolean>;
164
+ projects: {
165
+ repo: string;
166
+ name: string;
167
+ }[];
168
+ chosen: string;
169
+ /** The project's approval rules and release approval, drawn by approval-rules-ui.ts (kit markup). */
170
+ rules: Html;
171
+ mode: string;
172
+ };
173
+ export declare function approvalGroup(view: ApprovalGroupFacts): Html;
174
+ export declare function projectsGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
175
+ export declare function accessGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
176
+ export declare function systemGroup(facts: SettingsFacts, flags: Record<string, boolean>): Html;
177
+ /** One group page by its slug. */
178
+ export declare function settingsGroupPage(group: SettingsGroup, facts: SettingsFacts): Html;
179
+ export declare const groupTitle: (group: SettingsGroup) => string;
180
+ export { groupHref };
181
+ /** A settings sub-page in the frame: the group's breadcrumb, the page's title, its old body inside. */
182
+ export declare function settingsSubPage(group: string, title: string, body: HtmlValue, options?: {
183
+ lead?: string;
184
+ flags?: Record<string, boolean>;
185
+ }): Html;
186
+ export type ModePageView = {
187
+ project: string;
188
+ name: string;
189
+ maxDays: number;
190
+ approver: boolean;
191
+ hasMergeGrant: boolean;
192
+ said: string | null;
193
+ problem: string | null;
194
+ live: {
195
+ name: string;
196
+ signedBy: string;
197
+ until: string;
198
+ words: string[];
199
+ } | null;
200
+ };
201
+ /** /mode: the mode a project runs under now, and (for an approver) the choices to sign a new one. Reading the terms is
202
+ * the next page (/mode/confirm), where the password signs exactly what it shows. */
203
+ export declare function modePageHtml(view: ModePageView): Html;
204
+ /** /mode/confirm: every resolved term in words; the password signs exactly this digest (a changed form is refused). */
205
+ export declare function modeCeremonyHtml(view: {
206
+ name: string;
207
+ project: string;
208
+ words: string[];
209
+ chatApprove: boolean;
210
+ hidden: Readonly<Record<string, string>>;
211
+ }): Html;
212
+ export type PersonView = {
213
+ name: string;
214
+ you: boolean;
215
+ approver: boolean;
216
+ projects: readonly string[] | null;
217
+ projectNames: string;
218
+ revoked: string | null;
219
+ seen: string;
220
+ joined: string;
221
+ activity: string;
222
+ acts: string[];
223
+ };
224
+ export type PeopleView = {
225
+ operator: boolean;
226
+ you: string;
227
+ said: string | null;
228
+ problem: string | null;
229
+ people: PersonView[];
230
+ invites: {
231
+ id: number;
232
+ role: "approver" | "viewer";
233
+ projects: string;
234
+ from: string;
235
+ expires: string;
236
+ attempts: number;
237
+ }[];
238
+ projects: {
239
+ repo: string;
240
+ name: string;
241
+ }[];
242
+ /** The project the invite form starts with (the open one). */
243
+ openProject: string | null;
244
+ filers: {
245
+ name: string;
246
+ words: string;
247
+ }[];
248
+ };
249
+ /** People: who can get in, what each can do and where, open invites, and inviting someone. Inviting and widening
250
+ * access always ask for the password typed now; removing someone or cancelling an invite is a step-up. */
251
+ export declare function peopleHtml(view: PeopleView): Html;
252
+ /** People for someone limited to some projects: their own access, in words. */
253
+ export declare function ownAccessHtml(view: {
254
+ name: string;
255
+ approver: boolean;
256
+ projects: string[];
257
+ activity: string;
258
+ }): Html;
259
+ /** The invite link, once, on a page with no script: selectable text, what it lets them do, and where to cancel it. */
260
+ export declare function inviteLinkHtml(view: {
261
+ link: string;
262
+ approver: boolean;
263
+ projects: string;
264
+ expires: string;
265
+ }): Html;
266
+ /** The switch and the trade in plain words. Turning it on is a way in: it always asks for the password typed now.
267
+ * Turning it off is one click. */
268
+ export declare function passwordlessHtml(view: {
269
+ on: boolean;
270
+ since: string | null;
271
+ trade: string;
272
+ said: string | null;
273
+ problem: string | null;
274
+ }): Html;
275
+ /** Which project a per-project settings page shows: a GET form (an address, not a save). */
276
+ export declare function projectPicker(action: string, projects: readonly {
277
+ repo: string;
278
+ name: string;
279
+ }[], chosen: string): Html;