toolroll 0.9.11 → 0.9.13

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 (49) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/assignment-ui.js +1 -1
  3. package/dist/assignment.d.ts +3 -0
  4. package/dist/assignment.js +3 -1
  5. package/dist/browser/workspace.css +2 -2
  6. package/dist/browser/workspace.js +25 -23
  7. package/dist/browser-crew.js +1 -1
  8. package/dist/browser-workspace.d.ts +79 -0
  9. package/dist/chat-delivery.js +17 -0
  10. package/dist/chat-quiet.js +1 -0
  11. package/dist/chat-voice.d.ts +3 -1
  12. package/dist/chat-voice.js +13 -5
  13. package/dist/cli.d.ts +1 -1
  14. package/dist/cli.js +1 -0
  15. package/dist/coding-update.d.ts +13 -0
  16. package/dist/coding-update.js +68 -0
  17. package/dist/desktop-update.d.ts +7 -0
  18. package/dist/desktop-update.js +42 -1
  19. package/dist/flow-triggers.js +17 -1
  20. package/dist/guides.js +9 -0
  21. package/dist/lead-status.d.ts +10 -1
  22. package/dist/lead-status.js +13 -3
  23. package/dist/lead-voice.d.ts +81 -0
  24. package/dist/lead-voice.js +275 -0
  25. package/dist/needs-you.d.ts +7 -0
  26. package/dist/needs-you.js +9 -0
  27. package/dist/operate.js +80 -4
  28. package/dist/result-acts.d.ts +44 -0
  29. package/dist/result-acts.js +36 -0
  30. package/dist/result-review.js +1 -1
  31. package/dist/serve.d.ts +6 -1
  32. package/dist/serve.js +500 -239
  33. package/dist/setup-guide.d.ts +2 -2
  34. package/dist/store.js +8 -0
  35. package/dist/surface.js +8 -1
  36. package/dist/task-status.d.ts +6 -0
  37. package/dist/task-status.js +19 -2
  38. package/dist/team-cli.js +1 -1
  39. package/dist/telegram-progress.js +7 -0
  40. package/dist/telegram.js +34 -3
  41. package/dist/test-temp.js +1 -1
  42. package/dist/toolroll-update.d.ts +3 -0
  43. package/dist/toolroll-update.js +13 -2
  44. package/dist/work-index.d.ts +9 -0
  45. package/dist/work-index.js +57 -20
  46. package/dist/work-summary.d.ts +4 -1
  47. package/dist/workspace-ui.d.ts +29 -0
  48. package/dist/workspace-ui.js +32 -3
  49. package/package.json +1 -1
@@ -0,0 +1,44 @@
1
+ /** The result page's acts (2026-10-02), chosen in one place: exactly one ink
2
+ * act, the one that resolves the result's state, and never navigation; at
3
+ * most one outline act beside it. A result that can't be accepted says why
4
+ * in one line before them.
5
+ *
6
+ * everything met → Accept
7
+ * checks queued or running → Checks running (disabled), then Accept without checks
8
+ * checks didn't run, a check exists → Run checks, then Accept without checks
9
+ * report and changes disagree,
10
+ * or the proof is refuted → Request changes, then Accept (as allowed);
11
+ * never Accept as ink, even with no form here
12
+ * a Needs you form resolves it → that form (Build again, Confirm it stopped)
13
+ * saved notes or a failing PR → Revise / Draft a repair task
14
+ *
15
+ * Accepting means what it always meant: the same forms post to the same
16
+ * endpoints. This only decides which one is ink. */
17
+ export type ResultActKind = "accept" | "checks-running" | "run-checks" | "request-changes" | "rebuild" | "confirm-stopped" | "revise" | "draft-repair";
18
+ export type ResultActFacts = {
19
+ /** An Accept this page can post (Mark complete, or the person's acceptance); `ready`: every requirement met and checks passed. */
20
+ accept: {
21
+ ready: boolean;
22
+ } | null;
23
+ /** The checks didn't run, the project has one, and this person may run it. */
24
+ runChecks: boolean;
25
+ /** Checks on this result are queued or running. */
26
+ checksRunning: boolean;
27
+ /** Why it can't be accepted yet (cantAcceptYetOf), or null. */
28
+ blocked: string | null;
29
+ /** The feedback form is on this page. */
30
+ canRequest: boolean;
31
+ /** A Needs you form that resolves it here. */
32
+ need: "rebuild" | "confirm-stopped" | null;
33
+ /** Saved notes ready to become a revision, or a failing pull request's repair. */
34
+ next: "revise" | "draft-repair" | null;
35
+ };
36
+ export type ResultActs = {
37
+ /** The one ink act, or null when nothing waits on the person. */
38
+ primary: ResultActKind | null;
39
+ /** The one outline act beside it. */
40
+ secondary: ResultActKind | null;
41
+ /** The one line before the acts: why it can't be accepted yet. */
42
+ line: string | null;
43
+ };
44
+ export declare function resultActsOf(facts: ResultActFacts): ResultActs;
@@ -0,0 +1,36 @@
1
+ /** The result page's acts (2026-10-02), chosen in one place: exactly one ink
2
+ * act, the one that resolves the result's state, and never navigation; at
3
+ * most one outline act beside it. A result that can't be accepted says why
4
+ * in one line before them.
5
+ *
6
+ * everything met → Accept
7
+ * checks queued or running → Checks running (disabled), then Accept without checks
8
+ * checks didn't run, a check exists → Run checks, then Accept without checks
9
+ * report and changes disagree,
10
+ * or the proof is refuted → Request changes, then Accept (as allowed);
11
+ * never Accept as ink, even with no form here
12
+ * a Needs you form resolves it → that form (Build again, Confirm it stopped)
13
+ * saved notes or a failing PR → Revise / Draft a repair task
14
+ *
15
+ * Accepting means what it always meant: the same forms post to the same
16
+ * endpoints. This only decides which one is ink. */
17
+ export function resultActsOf(facts) {
18
+ const request = facts.canRequest ? "request-changes" : null;
19
+ const accept = facts.accept === null ? null : "accept";
20
+ if (facts.need !== null)
21
+ return { primary: facts.need, secondary: request, line: null };
22
+ if (facts.next !== null)
23
+ return { primary: facts.next, secondary: accept ?? request, line: null };
24
+ // Can't be accepted yet: Accept is never the ink act, even when the feedback form isn't here.
25
+ if (facts.blocked !== null)
26
+ return { primary: request, secondary: accept, line: facts.blocked };
27
+ if (facts.checksRunning)
28
+ return { primary: "checks-running", secondary: accept ?? request, line: null };
29
+ if (facts.accept === null)
30
+ return { primary: null, secondary: request, line: null };
31
+ if (facts.accept.ready)
32
+ return { primary: "accept", secondary: request, line: null };
33
+ if (facts.runChecks)
34
+ return { primary: "run-checks", secondary: "accept", line: null };
35
+ return { primary: "accept", secondary: request, line: null };
36
+ }
@@ -153,7 +153,7 @@ export function resultFactsFromHtml(html) {
153
153
  * lands on the run page. Matched exactly — never a bare open redirect. */
154
154
  export function resultReturnTarget(raw, runId) {
155
155
  if (raw !== null && raw !== undefined) {
156
- const review = /^\/review\?result=[A-Za-z0-9._~%-]{1,200}(?:&run=([0-9]{1,15}))?$/.exec(raw);
156
+ const review = /^\/review\?result=[A-Za-z0-9._~%-]{1,200}(?:&run=([0-9]{1,15}))?(?:&tab=(?:summary|changes|checks))?$/.exec(raw);
157
157
  if (review !== null && (review[1] === undefined || Number(review[1]) === runId))
158
158
  return raw;
159
159
  const chat = /^\/chat\?task=([A-Za-z0-9._~%-]{1,200})&result=([0-9]{1,15})(?:&conversation=[A-Za-z0-9-]{1,128})?$/.exec(raw);
package/dist/serve.d.ts CHANGED
@@ -189,10 +189,14 @@ export type ServeOptions = {
189
189
  /** Where `up`'s one-time sign-in link points, and how long it works. */
190
190
  export declare const SIGN_IN_LINK_PATH = "/login/once/";
191
191
  export declare const SIGN_IN_LINK_MS: number;
192
- /** The console's server, and the one-time sign-in link `up` opens: a path on this server, or null for no such approver. */
192
+ /** The console's server, and the one-time sign-in link `up` opens: a path on this server, or null for no such approver.
193
+ * closeCoding starts the coding shutdown on its own, ahead of the rest of a stop; close() awaits the same promise. */
193
194
  export type DecisionServer = Server & {
194
195
  mintSignInLink(account: string): string | null;
196
+ closeCoding(): Promise<void>;
195
197
  };
198
+ /** How long a stop waits for teammates and the lead's follow pass before closing anyway. */
199
+ export declare const SHUTDOWN_WAIT_MS = 5000;
196
200
  export declare function createDecisionServer(options: ServeOptions): DecisionServer;
197
201
  /**
198
202
  * A vscode://file href, or null (arc 6, finding 2): the link exists only
@@ -554,6 +558,7 @@ export declare function needActionOf(assignment: AssignmentSnapshot | null, stat
554
558
  run: number;
555
559
  action: string;
556
560
  rebuildable?: boolean;
561
+ refuted?: boolean;
557
562
  }): BrowserNeedAction | null;
558
563
  /** The facts region alone, for the open-run poll (A4). A finished run's
559
564
  * fragment says so instead of quietly growing forms (finding 5), and a run