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
@@ -189,13 +189,13 @@ function storedResultStatusOf(result, publication) {
189
189
  label: "Result saved, but its record does not match",
190
190
  // A structural refutation is settled before the approved check is
191
191
  // weighed, so it says nothing about whether that check passed.
192
- detail: withPublication("What the agent reported doesn't match the changes it saved. This doesn't say whether the project check passed."),
192
+ detail: withPublication("What the agent reported doesn't match the changes it saved."),
193
193
  tone: "problem",
194
- action: { label: "Open the record", kind: "open-review" },
194
+ action: { label: "Open the result", kind: "open-review" },
195
195
  };
196
196
  }
197
197
  if (result.verdict === "short" && humanReview) {
198
- return { token: "verification-needed", label: "Ready to inspect", detail: withPublication("The remaining requirements need a person's inspection. Open the result and record your decision."), tone: "attention", action: { label: "Inspect the result", kind: "open-review" } };
198
+ return { token: "verification-needed", label: "Ready to inspect", detail: withPublication("The remaining requirements need a person's inspection."), tone: "attention", action: { label: "Inspect the result", kind: "open-review" } };
199
199
  }
200
200
  if (result.verdict === "short") {
201
201
  return {
@@ -312,6 +312,35 @@ const VERIFIED_RESULT = new Set(["ready-to-review", "pr-opened", "merge-observed
312
312
  /** A finished result's display status in the shared headline's words: a
313
313
  * failed project check is Failed, a result missing its record needs a
314
314
  * person, every other saved result is Ready for review. Token and action stay. */
315
+ /** Why a result can't be accepted as it stands, in one plain line, or null
316
+ * when nothing refutes it (a person's acceptance settles it). The result page
317
+ * shows it before Request changes, its one ink act. */
318
+ export function cantAcceptYetOf(verdict, reasons, accepted) {
319
+ if (accepted || verdict !== "refuted")
320
+ return null;
321
+ return evidenceProblemOf(verdict, reasons) === "checks-failed"
322
+ ? "Can't accept yet: the project's check failed on these changes."
323
+ : "Can't accept yet: what the agent reported doesn't match the changes it saved.";
324
+ }
325
+ /** The result page's own sentence when the decision is on it. */
326
+ export const RESULT_DECISION_SENTENCE = "Review the change, then accept it or ask for changes.";
327
+ export function acceptWordsOf(facts) {
328
+ const plural = (n, one, many) => `${n} ${n === 1 ? one : many}`;
329
+ const parts = [
330
+ ...(facts.proof ? [] : ["nothing on record says what was met"]),
331
+ ...(facts.checks === "passed" ? [] : [facts.checks === "failed" ? "checks failed" : facts.checks === "off" ? "checks are off for this project"
332
+ : facts.checks === "running" ? "checks are still running" : facts.checks === "unavailable" ? "saved checks can't be read" : "checks didn't run"]),
333
+ ...(facts.unmet > 0 ? [`${plural(facts.unmet, "requirement isn't", "requirements aren't")} met`] : []),
334
+ ...(facts.yours > 0 ? [`${plural(facts.yours, "item still needs", "items still need")} your check`] : []),
335
+ ];
336
+ const ready = parts.length === 0;
337
+ const joined = parts.length <= 1 ? parts.join("") : `${parts.slice(0, -1).join(", ")} and ${parts.at(-1)}`;
338
+ const effect = facts.action === "accept" ? "Records that you accept it. You mark it complete next."
339
+ : facts.publishing === "pull-request" ? "Marks it complete. No pull request opens; you can open one from the task after."
340
+ : facts.publishing === "off" ? "Marks it complete. The branch stays; publishing isn't set up."
341
+ : "Marks it complete. Nothing is published.";
342
+ return { label: ready ? "Accept" : "Accept without checks", ready, why: ready ? null : `${joined.charAt(0).toUpperCase()}${joined.slice(1)}.`, effect };
343
+ }
315
344
  export function resultHeadlineOf(status) {
316
345
  const read = RESULT_NEEDS_YOU.has(status.token) ? { stage: "needs-you", need: "other" }
317
346
  : status.token === "checks-failed" ? { stage: "failed" } : { stage: "finished" };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toolroll",
3
- "version": "0.9.11",
3
+ "version": "0.9.13",
4
4
  "description": "A control plane for unattended coding agents — queue tasks, walk away, come back to pull requests. Agents build in leased worktrees, never touch your default branch, and interrupt you only for decisions that need a human.",
5
5
  "directories": {
6
6
  "doc": "docs"