crewly 1.20.156 → 1.20.158

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 (213) hide show
  1. package/README.md +1 -0
  2. package/config/templates/growth-marketing-team.json +5 -5
  3. package/config/templates/personal-assistant-team.json +5 -5
  4. package/dist/backend/backend/src/constants.d.ts +161 -6
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +188 -11
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.d.ts.map +1 -1
  9. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js +5 -0
  10. package/dist/backend/backend/src/controllers/owner-receipt/owner-receipt.controller.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts +18 -0
  12. package/dist/backend/backend/src/controllers/tickets/tickets.controller.d.ts.map +1 -1
  13. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js +42 -0
  14. package/dist/backend/backend/src/controllers/tickets/tickets.controller.js.map +1 -1
  15. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts +1 -0
  16. package/dist/backend/backend/src/controllers/tickets/tickets.routes.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js +3 -1
  18. package/dist/backend/backend/src/controllers/tickets/tickets.routes.js.map +1 -1
  19. package/dist/backend/backend/src/index.d.ts.map +1 -1
  20. package/dist/backend/backend/src/index.js +8 -2
  21. package/dist/backend/backend/src/index.js.map +1 -1
  22. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts +9 -0
  23. package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  24. package/dist/backend/backend/src/services/agent/agent-registration.service.js +34 -29
  25. package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
  26. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts +4 -3
  27. package/dist/backend/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  28. package/dist/backend/backend/src/services/agent/codex-runtime.service.js +48 -3
  29. package/dist/backend/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  30. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +9 -0
  31. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -1
  32. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +18 -1
  33. package/dist/backend/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -1
  34. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  35. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +5 -1
  36. package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  37. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  38. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js +14 -4
  39. package/dist/backend/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  40. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts +14 -2
  41. package/dist/backend/backend/src/services/agent/tmux-command.service.d.ts.map +1 -1
  42. package/dist/backend/backend/src/services/agent/tmux-command.service.js +24 -5
  43. package/dist/backend/backend/src/services/agent/tmux-command.service.js.map +1 -1
  44. package/dist/backend/backend/src/services/agent/tmux.service.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/agent/tmux.service.js +14 -9
  46. package/dist/backend/backend/src/services/agent/tmux.service.js.map +1 -1
  47. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts +8 -0
  48. package/dist/backend/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/backup/backup-archive.service.js +16 -8
  50. package/dist/backend/backend/src/services/backup/backup-archive.service.js.map +1 -1
  51. package/dist/backend/backend/src/services/backup/backup.types.d.ts +19 -0
  52. package/dist/backend/backend/src/services/backup/backup.types.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/backup/backup.types.js +19 -0
  54. package/dist/backend/backend/src/services/backup/backup.types.js.map +1 -1
  55. package/dist/backend/backend/src/services/security/secret-scrub.service.d.ts +108 -0
  56. package/dist/backend/backend/src/services/security/secret-scrub.service.d.ts.map +1 -0
  57. package/dist/backend/backend/src/services/security/secret-scrub.service.js +200 -0
  58. package/dist/backend/backend/src/services/security/secret-scrub.service.js.map +1 -0
  59. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts +13 -9
  60. package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +30 -14
  62. package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  63. package/dist/backend/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/session/pty/pty-session.js +6 -1
  65. package/dist/backend/backend/src/services/session/pty/pty-session.js.map +1 -1
  66. package/dist/backend/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/session/session-command-helper.js +3 -2
  68. package/dist/backend/backend/src/services/session/session-command-helper.js.map +1 -1
  69. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts +84 -0
  70. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.d.ts.map +1 -1
  71. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js +301 -6
  72. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt-data.js.map +1 -1
  73. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts +8 -0
  74. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js +16 -0
  76. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.boot.js.map +1 -1
  77. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts +28 -10
  78. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js +46 -193
  80. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.renderer.js.map +1 -1
  81. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts +15 -2
  82. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.d.ts.map +1 -1
  83. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js +26 -4
  84. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.service.js.map +1 -1
  85. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts +35 -0
  86. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/v3/owner-receipt/owner-receipt.types.js.map +1 -1
  88. package/dist/backend/backend/src/services/v3/request.service.d.ts +2 -0
  89. package/dist/backend/backend/src/services/v3/request.service.d.ts.map +1 -1
  90. package/dist/backend/backend/src/services/v3/request.service.js +16 -4
  91. package/dist/backend/backend/src/services/v3/request.service.js.map +1 -1
  92. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -1
  93. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js +2 -0
  94. package/dist/backend/backend/src/services/v3/ticket-ask-classifier.js.map +1 -1
  95. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  96. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js +2 -1
  97. package/dist/backend/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  98. package/dist/backend/backend/src/services/v3/ticket-hygiene.d.ts +162 -0
  99. package/dist/backend/backend/src/services/v3/ticket-hygiene.d.ts.map +1 -0
  100. package/dist/backend/backend/src/services/v3/ticket-hygiene.js +221 -0
  101. package/dist/backend/backend/src/services/v3/ticket-hygiene.js.map +1 -0
  102. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts +71 -6
  103. package/dist/backend/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  104. package/dist/backend/backend/src/services/v3/ticket-intake.service.js +151 -25
  105. package/dist/backend/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  106. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts +22 -3
  107. package/dist/backend/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  108. package/dist/backend/backend/src/services/v3/ticket-review.service.js +99 -40
  109. package/dist/backend/backend/src/services/v3/ticket-review.service.js.map +1 -1
  110. package/dist/backend/backend/src/types/team-template.types.d.ts +1 -1
  111. package/dist/backend/backend/src/types/team-template.types.d.ts.map +1 -1
  112. package/dist/backend/backend/src/types/v2/request.types.d.ts +13 -0
  113. package/dist/backend/backend/src/types/v2/request.types.d.ts.map +1 -1
  114. package/dist/backend/backend/src/types/v2/request.types.js.map +1 -1
  115. package/dist/backend/backend/src/utils/secret-redactor.d.ts +131 -0
  116. package/dist/backend/backend/src/utils/secret-redactor.d.ts.map +1 -0
  117. package/dist/backend/backend/src/utils/secret-redactor.js +233 -0
  118. package/dist/backend/backend/src/utils/secret-redactor.js.map +1 -0
  119. package/dist/backend/backend/src/utils/shell-history.d.ts +48 -0
  120. package/dist/backend/backend/src/utils/shell-history.d.ts.map +1 -0
  121. package/dist/backend/backend/src/utils/shell-history.js +65 -0
  122. package/dist/backend/backend/src/utils/shell-history.js.map +1 -0
  123. package/dist/backend/build-info.json +2 -2
  124. package/dist/cli/backend/src/constants.d.ts +161 -6
  125. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  126. package/dist/cli/backend/src/constants.js +188 -11
  127. package/dist/cli/backend/src/constants.js.map +1 -1
  128. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts +9 -0
  129. package/dist/cli/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
  130. package/dist/cli/backend/src/services/agent/agent-registration.service.js +34 -29
  131. package/dist/cli/backend/src/services/agent/agent-registration.service.js.map +1 -1
  132. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts +4 -3
  133. package/dist/cli/backend/src/services/agent/codex-runtime.service.d.ts.map +1 -1
  134. package/dist/cli/backend/src/services/agent/codex-runtime.service.js +48 -3
  135. package/dist/cli/backend/src/services/agent/codex-runtime.service.js.map +1 -1
  136. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts +9 -0
  137. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.d.ts.map +1 -1
  138. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js +18 -1
  139. package/dist/cli/backend/src/services/agent/crewly-agent/in-process-log-buffer.js.map +1 -1
  140. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
  141. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +5 -1
  142. package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
  143. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.d.ts.map +1 -1
  144. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js +14 -4
  145. package/dist/cli/backend/src/services/agent/runtime-agent.service.abstract.js.map +1 -1
  146. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts +8 -0
  147. package/dist/cli/backend/src/services/backup/backup-archive.service.d.ts.map +1 -1
  148. package/dist/cli/backend/src/services/backup/backup-archive.service.js +16 -8
  149. package/dist/cli/backend/src/services/backup/backup-archive.service.js.map +1 -1
  150. package/dist/cli/backend/src/services/backup/backup.types.d.ts +19 -0
  151. package/dist/cli/backend/src/services/backup/backup.types.d.ts.map +1 -1
  152. package/dist/cli/backend/src/services/backup/backup.types.js +19 -0
  153. package/dist/cli/backend/src/services/backup/backup.types.js.map +1 -1
  154. package/dist/cli/backend/src/services/security/secret-scrub.service.d.ts +108 -0
  155. package/dist/cli/backend/src/services/security/secret-scrub.service.d.ts.map +1 -0
  156. package/dist/cli/backend/src/services/security/secret-scrub.service.js +200 -0
  157. package/dist/cli/backend/src/services/security/secret-scrub.service.js.map +1 -0
  158. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts +13 -9
  159. package/dist/cli/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
  160. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js +30 -14
  161. package/dist/cli/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
  162. package/dist/cli/backend/src/services/session/pty/pty-session.d.ts.map +1 -1
  163. package/dist/cli/backend/src/services/session/pty/pty-session.js +6 -1
  164. package/dist/cli/backend/src/services/session/pty/pty-session.js.map +1 -1
  165. package/dist/cli/backend/src/services/session/session-command-helper.d.ts.map +1 -1
  166. package/dist/cli/backend/src/services/session/session-command-helper.js +3 -2
  167. package/dist/cli/backend/src/services/session/session-command-helper.js.map +1 -1
  168. package/dist/cli/backend/src/services/v3/request.service.d.ts +2 -0
  169. package/dist/cli/backend/src/services/v3/request.service.d.ts.map +1 -1
  170. package/dist/cli/backend/src/services/v3/request.service.js +16 -4
  171. package/dist/cli/backend/src/services/v3/request.service.js.map +1 -1
  172. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.d.ts.map +1 -1
  173. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js +2 -0
  174. package/dist/cli/backend/src/services/v3/ticket-ask-classifier.js.map +1 -1
  175. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.d.ts.map +1 -1
  176. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js +2 -1
  177. package/dist/cli/backend/src/services/v3/ticket-channel-hooks.js.map +1 -1
  178. package/dist/cli/backend/src/services/v3/ticket-hygiene.d.ts +162 -0
  179. package/dist/cli/backend/src/services/v3/ticket-hygiene.d.ts.map +1 -0
  180. package/dist/cli/backend/src/services/v3/ticket-hygiene.js +221 -0
  181. package/dist/cli/backend/src/services/v3/ticket-hygiene.js.map +1 -0
  182. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts +71 -6
  183. package/dist/cli/backend/src/services/v3/ticket-intake.service.d.ts.map +1 -1
  184. package/dist/cli/backend/src/services/v3/ticket-intake.service.js +151 -25
  185. package/dist/cli/backend/src/services/v3/ticket-intake.service.js.map +1 -1
  186. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts +22 -3
  187. package/dist/cli/backend/src/services/v3/ticket-review.service.d.ts.map +1 -1
  188. package/dist/cli/backend/src/services/v3/ticket-review.service.js +99 -40
  189. package/dist/cli/backend/src/services/v3/ticket-review.service.js.map +1 -1
  190. package/dist/cli/backend/src/types/team-template.types.d.ts +1 -1
  191. package/dist/cli/backend/src/types/team-template.types.d.ts.map +1 -1
  192. package/dist/cli/backend/src/types/v2/request.types.d.ts +13 -0
  193. package/dist/cli/backend/src/types/v2/request.types.d.ts.map +1 -1
  194. package/dist/cli/backend/src/types/v2/request.types.js.map +1 -1
  195. package/dist/cli/backend/src/utils/secret-redactor.d.ts +131 -0
  196. package/dist/cli/backend/src/utils/secret-redactor.d.ts.map +1 -0
  197. package/dist/cli/backend/src/utils/secret-redactor.js +233 -0
  198. package/dist/cli/backend/src/utils/secret-redactor.js.map +1 -0
  199. package/dist/cli/backend/src/utils/shell-history.d.ts +48 -0
  200. package/dist/cli/backend/src/utils/shell-history.d.ts.map +1 -0
  201. package/dist/cli/backend/src/utils/shell-history.js +65 -0
  202. package/dist/cli/backend/src/utils/shell-history.js.map +1 -0
  203. package/dist/cli/cli/src/commands/security.d.ts +41 -0
  204. package/dist/cli/cli/src/commands/security.d.ts.map +1 -0
  205. package/dist/cli/cli/src/commands/security.js +81 -0
  206. package/dist/cli/cli/src/commands/security.js.map +1 -0
  207. package/dist/cli/cli/src/index.js +9 -0
  208. package/dist/cli/cli/src/index.js.map +1 -1
  209. package/frontend/dist/assets/index-edd6f262.css +42 -0
  210. package/frontend/dist/assets/{index-8d4b3ad2.js → index-f79676aa.js} +268 -268
  211. package/frontend/dist/index.html +2 -2
  212. package/package.json +1 -1
  213. package/frontend/dist/assets/index-b6aded4c.css +0 -42
@@ -1,68 +1,38 @@
1
1
  /**
2
2
  * Owner receipt (#828) — the renderer: {@link ReceiptData} → Slack mrkdwn.
3
3
  *
4
- * **All wording and layout lives in this file and nowhere else.** The owner
5
- * has not approved the format yet (Ava's manual receipt of 2026-09-26 is the
6
- * reference: `.crewly/research/2026-09-26-owner-receipt/receipt.slack.md`), so
7
- * changing a label, an emoji or the order of sections must never touch the
8
- * data layer. Pure: same data, same text.
4
+ * **All wording and layout lives in this file and nowhere else.** Pure: same
5
+ * data, same text.
6
+ *
7
+ * Redesigned 2026-09-28 after the owner found the first version overwhelming
8
+ * (14 asks + 17 「等你拍板」 with TKT numbers and his own words cut off
9
+ * mid-sentence). The receipt now says only two things, in Chinese, in at
10
+ * most ten lines:
11
+ *
12
+ * ```
13
+ * *Crewly 小票 · 9/28 周一*
14
+ * *今天做完的*
15
+ * • Think Tank:每天早上 8 点问你一个问题,已经设好
16
+ * • …(at most 3)
17
+ * *需要你决定的*
18
+ * • Atlas:每周一个 30 分钟的聊天,加上每月一场圆桌,哪个现实?
19
+ * • …(at most 3)
20
+ * 另有 N 件,在看板上
21
+ * ```
22
+ *
23
+ * Never: ticket numbers, the owner's own words, counts nobody asked for,
24
+ * lines for what is unknown (不详 / 没记). A section with nothing in it is
25
+ * left out; with nothing in either, the receipt is empty and not sent.
9
26
  *
10
27
  * Slack mrkdwn, not a code block: CJK text breaks monospace alignment on a
11
- * phone and links inside code are not clickable (Ava's format note §8).
28
+ * phone.
12
29
  *
13
30
  * @module services/v3/owner-receipt/owner-receipt.renderer
14
31
  */
15
- import { OWNER_RECEIPT_CONSTANTS } from '../../../constants.js';
16
32
  import { localParts } from './owner-receipt-data.js';
17
- /**
18
- * The coverage line (#828): how many messages the owner sent in the window
19
- * and what became of them, so the receipt never looks complete while showing
20
- * part of what he said. Unknown is 不详 — never 0, never left out.
21
- *
22
- * @param coverage - Coverage from the data layer
23
- * @param basis - How the window was chosen (for 今天 vs 这段时间)
24
- * @returns mrkdwn line
25
- */
26
- function coverageLine(coverage, basis) {
27
- const when = basis === 'local_day' ? '今天' : '这段时间';
28
- if (coverage.status === 'unknown')
29
- return `${when}你发了几条消息:不详(这段时间还没有开始记录)`;
30
- return (`${when}你发了 *${coverage.messages} 条消息*:${coverage.created} 条成了事项 · ` +
31
- `${coverage.appended} 条并进已有事项 · ${coverage.ignored} 条没记(确认/寒暄)`);
32
- }
33
- /** Emoji per outcome. */
34
- const OUTCOME_MARK = {
35
- done: '✅',
36
- to_review: '👀',
37
- in_progress: '🔄',
38
- blocked: '⛔',
39
- unowned: '⛔',
40
- dismissed: '✖',
41
- };
42
- /** Deliverable kinds as the count line names them. */
43
- const DELIVERABLE_LABEL = {
44
- pr: 'PR',
45
- issue: 'issue',
46
- file: '文件',
47
- link: '链接',
48
- };
49
- /** Short Chinese names for the time zones the owner is likely in. */
50
- const ZONE_LABEL = {
51
- 'America/New_York': '美东',
52
- 'America/Chicago': '美中',
53
- 'America/Denver': '美山地',
54
- 'America/Los_Angeles': '美西',
55
- 'Asia/Shanghai': '北京',
56
- 'Asia/Hong_Kong': '香港',
57
- 'Asia/Taipei': '台北',
58
- 'Asia/Tokyo': '东京',
59
- 'Europe/London': '伦敦',
60
- UTC: 'UTC',
61
- };
62
33
  const WEEKDAY_ZH = ['周日', '周一', '周二', '周三', '周四', '周五', '周六'];
63
34
  /**
64
- * Escape the characters Slack reserves in message text. The owner's own
65
- * words go through this; links and emphasis are added after.
35
+ * Escape the characters Slack reserves in message text.
66
36
  *
67
37
  * @param text - Plain text
68
38
  * @returns Text safe inside a Slack message
@@ -71,169 +41,52 @@ export function escapeMrkdwn(text) {
71
41
  return text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
72
42
  }
73
43
  /**
74
- * `9/26 周六` and `21:00` for an instant in the owner's zone.
44
+ * `9/28 周一` for an instant in the owner's zone.
75
45
  *
76
46
  * @param iso - Instant
77
47
  * @param tz - Zone
78
- * @returns Date label and time label
48
+ * @returns Date label
79
49
  */
80
- function localLabels(iso, tz) {
50
+ function localDateLabel(iso, tz) {
81
51
  const p = localParts(new Date(iso), tz);
82
- return {
83
- date: `${p.month}/${p.day} ${WEEKDAY_ZH[p.weekday] ?? ''}`.trim(),
84
- time: `${p.hour}:${String(p.minute).padStart(2, '0')}`,
85
- };
86
- }
87
- /**
88
- * One deliverable as mrkdwn: a clickable link, or a file path in backticks.
89
- *
90
- * @param d - Deliverable
91
- * @returns mrkdwn
92
- */
93
- function deliverableText(d) {
94
- if (d.kind === 'file')
95
- return `\`${d.ref.replace(/`/g, "'")}\``;
96
- return `<${d.ref}|${escapeMrkdwn(d.label)}>`;
52
+ return `${p.month}/${p.day} ${WEEKDAY_ZH[p.weekday] ?? ''}`.trim();
97
53
  }
98
54
  /**
99
- * The part after "→" on an ask line.
55
+ * One bullet: `• <who>:<text>`, or `• <text>` when nobody is named.
100
56
  *
101
- * @param a - The ask
102
- * @returns mrkdwn, or '' when there is nothing to add
103
- */
104
- function askTail(a) {
105
- const links = a.deliverables.slice(0, 3).map(deliverableText).join(' · ');
106
- const more = a.deliverables.length > 3 ? ` 等 ${a.deliverables.length} 项` : '';
107
- switch (a.outcome) {
108
- case 'done':
109
- return links ? `${links}${more}` : a.isQuestion ? '已答' : '';
110
- case 'to_review':
111
- return links ? `${links}${more},等你看` : '已答,等你看';
112
- case 'in_progress':
113
- return links ? `在做:${links}${more}` : '在做';
114
- case 'blocked':
115
- return a.blockedReason ? `卡住:${escapeMrkdwn(a.blockedReason)}` : '卡住';
116
- case 'unowned':
117
- return '没人接';
118
- case 'dismissed':
119
- return '不用记';
120
- }
121
- }
122
- /**
123
- * One line per ask.
124
- *
125
- * @param a - The ask
126
- * @returns mrkdwn line
127
- */
128
- function askLine(a) {
129
- const tail = askTail(a);
130
- return `${OUTCOME_MARK[a.outcome]} ${escapeMrkdwn(a.text)}${tail ? ` → ${tail}` : ''}`;
131
- }
132
- /**
133
- * The cost line. A number only when it is real (#812: today's meter is
134
- * cumulative, so it is 没记); "$0" is never shown for missing data.
135
- *
136
- * @param teams - Team name + cost
57
+ * @param who - Team or agent, or null
58
+ * @param text - The line
137
59
  * @returns mrkdwn line
138
60
  */
139
- function costLine(teams) {
140
- if (teams.length === 0)
141
- return '*花费*:没记(今天没有工作项)';
142
- if (teams.every((t) => t.cost.status === 'not_tracked')) {
143
- const meter = teams.some((t) => t.cost.status === 'not_tracked' && t.cost.reason === 'cumulative_meter');
144
- return meter
145
- ? '*花费*:各团队都 没记(成本字段是会话累计值,不是当天花费,#812)'
146
- : '*花费*:各团队都 没记(没有花费数据)';
147
- }
148
- const parts = teams.map((t) => t.cost.status === 'tracked' ? `${escapeMrkdwn(t.team)} $${t.cost.usd.toFixed(2)}` : `${escapeMrkdwn(t.team)} 没记`);
149
- return `*花费*:${parts.join(' · ')}`;
61
+ function bullet(who, text) {
62
+ return `• ${who ? `${escapeMrkdwn(who)}:` : ''}${escapeMrkdwn(text)}`;
150
63
  }
151
64
  /**
152
- * Render a receipt as a Slack message.
65
+ * Render a receipt as a Slack message, or '' when there is nothing to say
66
+ * (nothing notable done, nothing waiting on the owner) — then it is not sent.
153
67
  *
154
68
  * @param data - Receipt data from the data layer
155
- * @returns Slack mrkdwn text
69
+ * @returns Slack mrkdwn text (at most ten lines), or ''
156
70
  *
157
71
  * @example
158
72
  * ```typescript
159
73
  * const text = renderReceiptSlack(buildReceiptData(inputs));
74
+ * if (text) await send(text);
160
75
  * ```
161
76
  */
162
77
  export function renderReceiptSlack(data) {
163
- const tz = data.window.timezone;
164
- const zone = ZONE_LABEL[tz] ?? tz;
165
- const end = localLabels(data.window.to, tz);
166
- const start = localLabels(data.window.from, tz);
167
- const span = data.window.basis === 'since_last_receipt'
168
- ? `(${zone},上次小票 ${start.date === end.date ? '' : `${start.date} `}${start.time} 起)`
169
- : `(${zone} ${start.time}–${end.time})`;
170
- const lines = [`*Crewly 小票 · ${end.date}*${span}`, coverageLine(data.coverage, data.window.basis)];
171
- if (data.askCount === 0) {
172
- lines.push('这段时间你没有提新的事。');
173
- }
174
- else {
175
- const counts = Object.keys(data.outcomes)
176
- .filter((o) => data.outcomes[o] > 0)
177
- // unowned and blocked share the ⛔ mark: count them together.
178
- .reduce((acc, o) => {
179
- const mark = OUTCOME_MARK[o];
180
- const hit = acc.find(([m]) => m === mark);
181
- if (hit)
182
- hit[1] += data.outcomes[o];
183
- else
184
- acc.push([mark, data.outcomes[o]]);
185
- return acc;
186
- }, [])
187
- .map(([m, n]) => `${m} ${n}`)
188
- .join(' · ');
189
- lines.push(`你提了 *${data.askCount} 件事*:${counts}`);
190
- const made = Object.keys(data.deliverables)
191
- .filter((k) => data.deliverables[k] > 0)
192
- .map((k) => `${DELIVERABLE_LABEL[k]} ${data.deliverables[k]}`);
193
- if (made.length > 0)
194
- lines.push(`交付:${made.join(' · ')}`);
195
- }
196
- // Asks by team, capped for a phone.
197
- let shown = 0;
198
- let hidden = 0;
199
- for (const t of data.teams) {
200
- const room = OWNER_RECEIPT_CONSTANTS.MAX_ASK_LINES - shown;
201
- if (room <= 0) {
202
- hidden += t.asks.length;
203
- continue;
204
- }
205
- const header = t.lead ? `${t.team}(${t.lead})` : t.team;
206
- lines.push('', `*${escapeMrkdwn(header)}*`);
207
- for (const a of t.asks.slice(0, room))
208
- lines.push(askLine(a));
209
- shown += Math.min(room, t.asks.length);
210
- hidden += Math.max(0, t.asks.length - room);
211
- }
212
- if (hidden > 0)
213
- lines.push(`…另有 ${hidden} 件,见看板`);
214
- // Appended messages that still read like a request: he can say 「拆出来」.
215
- if (data.possiblyMissed.length > 0) {
216
- lines.push('', `*可能漏记(${data.possiblyMissed.length})* — 回复「拆出来」就单独记一件`);
217
- for (const m of data.possiblyMissed.slice(0, OWNER_RECEIPT_CONSTANTS.MAX_POSSIBLY_MISSED)) {
218
- lines.push(`• ${escapeMrkdwn(m.text)} → 并进了 ${m.tkt ?? '一件事'}`);
219
- }
220
- const more = data.possiblyMissed.length - OWNER_RECEIPT_CONSTANTS.MAX_POSSIBLY_MISSED;
221
- if (more > 0)
222
- lines.push(`…另有 ${more} 条,见看板`);
78
+ if (data.highlights.length === 0 && data.decisionsTotal === 0)
79
+ return '';
80
+ const lines = [`*Crewly 小票 · ${localDateLabel(data.window.to, data.window.timezone)}*`];
81
+ if (data.highlights.length > 0) {
82
+ lines.push('*今天做完的*', ...data.highlights.map((h) => bullet(h.team, h.summary)));
223
83
  }
224
- // Waiting on you.
225
- if (data.waiting.length > 0) {
226
- lines.push('', `*等你拍板(${data.waiting.length})*`);
227
- data.waiting.slice(0, OWNER_RECEIPT_CONSTANTS.MAX_WAITING_LINES).forEach((w, i) => {
228
- const id = w.tkt ? `${w.tkt} ` : '';
229
- const q = w.question ? ` — ${escapeMrkdwn(w.question)}` : '';
230
- lines.push(`${i + 1}. ${id}${escapeMrkdwn(w.text)}${q}`);
231
- });
232
- const rest = data.waiting.length - OWNER_RECEIPT_CONSTANTS.MAX_WAITING_LINES;
84
+ if (data.decisionsTotal > 0) {
85
+ lines.push('*需要你决定的*', ...data.decisions.map((d) => bullet(d.from, d.question)));
86
+ const rest = data.decisionsTotal - data.decisions.length;
233
87
  if (rest > 0)
234
- lines.push(`…另有 ${rest} 件等你,见看板`);
88
+ lines.push(`另有 ${rest} 件,在看板上`);
235
89
  }
236
- lines.push('', costLine(data.teams));
237
90
  return lines.join('\n');
238
91
  }
239
92
  //# sourceMappingURL=owner-receipt.renderer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"owner-receipt.renderer.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owner-receipt.renderer.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,EAAU;IAC7C,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,GAAkB,EAAE,IAAY;IAC9C,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAiB;IAClD,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzE,MAAM,KAAK,GAAa,CAAC,gBAAgB,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAClG,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,IAAI,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QACzD,IAAI,IAAI,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -27,6 +27,8 @@ export interface OwnerReceiptServiceDeps {
27
27
  loadTeamIndex: () => Promise<Map<string, string>>;
28
28
  /** team name → lead's display name (built once per receipt); absent → no lead shown */
29
29
  loadTeamLeadIndex?: () => Promise<Map<string, string>>;
30
+ /** session → agent display name (built once per receipt); absent → decisions name the team */
31
+ loadAgentNameIndex?: () => Promise<Map<string, string>>;
30
32
  /** Slack DM to the owner; null = cannot send (the API still works) */
31
33
  sender?: ReceiptSender | null;
32
34
  /** State file (default ~/.crewly/owner-receipt.json); null = in memory (tests) */
@@ -45,14 +47,18 @@ export interface GenerateOptions {
45
47
  /** `since_last_receipt` (default) or `local_day` */
46
48
  mode?: 'since_last_receipt' | 'local_day';
47
49
  }
48
- /** What {@link OwnerReceiptService.send} did. */
50
+ /**
51
+ * What {@link OwnerReceiptService.send} did. `nothing_to_say`: nothing
52
+ * notable was done and nothing waits on the owner, so no receipt went out
53
+ * (2026-09-28) — the window still moves, as after a send.
54
+ */
49
55
  export type SendResult = {
50
56
  sent: true;
51
57
  text: string;
52
58
  data: ReceiptData;
53
59
  } | {
54
60
  sent: false;
55
- reason: 'no_sender' | 'sender_failed';
61
+ reason: 'no_sender' | 'sender_failed' | 'nothing_to_say';
56
62
  text: string;
57
63
  data: ReceiptData;
58
64
  };
@@ -124,6 +130,13 @@ export declare class OwnerReceiptService {
124
130
  * @returns What happened
125
131
  */
126
132
  private sendNow;
133
+ /**
134
+ * Move the window: the next receipt starts where this one ended, and today
135
+ * counts as done.
136
+ *
137
+ * @param data - The receipt that went out (or was skipped)
138
+ */
139
+ private markSent;
127
140
  /**
128
141
  * Persist state.
129
142
  *
@@ -1 +1 @@
1
- {"version":3,"file":"owner-receipt.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owner-receipt.service.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.service.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ import { safeReadJson, modifyJsonFile } from '../../../utils/file-io.utils.js';
18
18
  import { LoggerService } from '../../core/logger.service.js';
19
19
  import { getCrewlyHomePath } from '../../core/crewly-home.utils.js';
20
20
  import { redactSensitive } from '../../wiki/wiki-redaction.js';
21
- import { buildReceiptData, localDate, localParts, resolveReceiptWindow } from './owner-receipt-data.js';
21
+ import { buildReceiptData, isReceiptEmpty, localDate, localParts, resolveReceiptWindow } from './owner-receipt-data.js';
22
22
  import { renderReceiptSlack } from './owner-receipt.renderer.js';
23
23
  import { applySettingsPatch, defaultReceiptSettings, } from './owner-receipt.types.js';
24
24
  /** Nightly owner receipt. */
@@ -78,12 +78,13 @@ export class OwnerReceiptService {
78
78
  ...(state.lastSentAt ? { lastSentAt: state.lastSentAt } : {}),
79
79
  ...opts,
80
80
  });
81
- const [requests, workItems, teams, teamLeads, intakeLog] = await Promise.all([
81
+ const [requests, workItems, teams, teamLeads, intakeLog, agentNames] = await Promise.all([
82
82
  this.deps.listRequests(),
83
83
  this.deps.listWorkItems(),
84
84
  this.deps.loadTeamIndex(),
85
85
  this.deps.loadTeamLeadIndex ? this.deps.loadTeamLeadIndex() : Promise.resolve(null),
86
86
  this.deps.readIntakeLog ? this.deps.readIntakeLog().catch(() => null) : Promise.resolve(null),
87
+ this.deps.loadAgentNameIndex ? this.deps.loadAgentNameIndex().catch(() => null) : Promise.resolve(null),
87
88
  ]);
88
89
  const data = buildReceiptData({
89
90
  requests,
@@ -91,6 +92,7 @@ export class OwnerReceiptService {
91
92
  window,
92
93
  teamOf: (session) => teams.get(session) ?? null,
93
94
  ...(teamLeads ? { teamLeadOf: (team) => teamLeads.get(team) ?? null } : {}),
95
+ ...(agentNames ? { agentNameOf: (session) => agentNames.get(session) ?? null } : {}),
94
96
  intakeLog,
95
97
  ...(this.deps.cost ? { cost: this.deps.cost } : {}),
96
98
  now,
@@ -145,6 +147,12 @@ export class OwnerReceiptService {
145
147
  */
146
148
  async sendNow() {
147
149
  const { data, text } = await this.generate();
150
+ if (isReceiptEmpty(data) || !text) {
151
+ // Nothing done worth telling, nothing waiting on him: no message at all.
152
+ await this.markSent(data);
153
+ this.logger.info('Owner receipt skipped (nothing to say)', { from: data.window.from, to: data.window.to });
154
+ return { sent: false, reason: 'nothing_to_say', text, data };
155
+ }
148
156
  if (!this.deps.sender)
149
157
  return { sent: false, reason: 'no_sender', text, data };
150
158
  let ok = false;
@@ -156,14 +164,28 @@ export class OwnerReceiptService {
156
164
  }
157
165
  if (!ok)
158
166
  return { sent: false, reason: 'sender_failed', text, data };
167
+ await this.markSent(data);
168
+ this.logger.info('Owner receipt sent', {
169
+ highlights: data.highlights.length,
170
+ decisions: data.decisionsTotal,
171
+ from: data.window.from,
172
+ to: data.window.to,
173
+ });
174
+ return { sent: true, text, data };
175
+ }
176
+ /**
177
+ * Move the window: the next receipt starts where this one ended, and today
178
+ * counts as done.
179
+ *
180
+ * @param data - The receipt that went out (or was skipped)
181
+ */
182
+ async markSent(data) {
159
183
  const state = await this.getState();
160
184
  await this.writeState({
161
185
  ...state,
162
186
  lastSentAt: data.window.to,
163
187
  lastSentLocalDate: localDate(new Date(data.window.to), state.settings.timezone),
164
188
  });
165
- this.logger.info('Owner receipt sent', { asks: data.askCount, waiting: data.waiting.length, from: data.window.from, to: data.window.to });
166
- return { sent: true, text, data };
167
189
  }
168
190
  /**
169
191
  * Persist state.
@@ -1 +1 @@
1
- {"version":3,"file":"owner-receipt.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"owner-receipt.service.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.service.ts"],"names":[],"mappings":"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"}
@@ -122,6 +122,35 @@ export interface ReceiptPossiblyMissed {
122
122
  splitCommand: string;
123
123
  at: string;
124
124
  }
125
+ /**
126
+ * One 「今天做完的」 line (2026-09-28 redesign): what got done, as an outcome
127
+ * in the agent's words — never the owner's ask.
128
+ */
129
+ export interface ReceiptHighlight {
130
+ ticketId: string;
131
+ /** Team (or the orchestrator's label) that actually did it; null when unknown */
132
+ team: string | null;
133
+ /** The outcome, one short line from the agent's answer (redacted, no links or paths) */
134
+ summary: string;
135
+ /** Deliverables found in the answer (the line prefers tickets that have some) */
136
+ deliverableCount: number;
137
+ completedAt: string;
138
+ }
139
+ /**
140
+ * One 「需要你决定的」 line: something genuinely blocked on the owner, phrased
141
+ * as the question he is asked.
142
+ */
143
+ export interface ReceiptDecision {
144
+ /** Ticket or WorkItem id */
145
+ id: string;
146
+ source: 'ticket_review' | 'owner_escalation';
147
+ /** Who asks: the agent's name, else its team; null when unknown */
148
+ from: string | null;
149
+ /** The question, one short line (redacted) */
150
+ question: string;
151
+ /** When it started waiting */
152
+ since: string;
153
+ }
125
154
  /** Everything a receipt says. */
126
155
  export interface ReceiptData {
127
156
  window: ReceiptWindow;
@@ -139,6 +168,12 @@ export interface ReceiptData {
139
168
  coverage: ReceiptCoverage;
140
169
  /** Appended messages that still read like a request, oldest first (all of them) */
141
170
  possiblyMissed: ReceiptPossiblyMissed[];
171
+ /** 「今天做完的」: the best few outcomes of the window (at most MAX_HIGHLIGHTS) */
172
+ highlights: ReceiptHighlight[];
173
+ /** 「需要你决定的」: the first few things blocked on the owner (at most MAX_DECISIONS) */
174
+ decisions: ReceiptDecision[];
175
+ /** How many things are blocked on the owner in all (the rest: 「另有 N 件,在看板上」) */
176
+ decisionsTotal: number;
142
177
  generatedAt: string;
143
178
  }
144
179
  /** Owner-set delivery settings. */
@@ -1 +1 @@
1
- {"version":3,"file":"owner-receipt.types.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,gCAAgC;AAChC,MAAM,MAAM,cAAc;AACxB,kBAAkB;AAChB,MAAM;AACR,iDAAiD;GAC/C,WAAW;AACb,uBAAuB;GACrB,aAAa;AACf,cAAc;GACZ,SAAS;AACX,mDAAmD;GACjD,SAAS;AACX,yBAAyB;GACvB,WAAW,CAAC;AAEhB,sCAAsC;AACtC,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAO5C,CAAC;AAEX,8DAA8D;AAC9D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACvC,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4BAA4B;AAC5B,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,oDAAoD;IACpD,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,oCAAoC;IACpC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,oEAAoE;AACpE,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,kBAAkB,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtE,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,eAAe,GAAG,kBAAkB,CAAC;IAC7C,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,4BAA4B;IAC5B,KAAK,EAAE,oBAAoB,GAAG,WAAW,GAAG,UAAU,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACzF;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,cAAc,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAExE;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,sDAAsD;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,YAAY,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,iCAAiC;AACjC,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,mEAAmE;IACnE,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACzC,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;IACzD,iEAAiE;IACjE,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,QAAQ,EAAE,eAAe,CAAC;IAC1B,mFAAmF;IACnF,cAAc,EAAE,qBAAqB,EAAE,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,kEAAkE;AAClE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAKD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,OAAO,GAAG,EAAE,IAAI,MAAM,CAQzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,OAAO,GACb;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,oBAAoB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiB7E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,oBAAoB,CAM7D"}
1
+ {"version":3,"file":"owner-receipt.types.d.ts","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"owner-receipt.types.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAiBhE,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,MAAM;IACN,WAAW;IACX,aAAa;IACb,SAAS;IACT,SAAS;IACT,WAAW;CACH,CAAC;AAyIX,0BAA0B;AAC1B,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA6B,EAC7B,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC3G,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,IAAI,GAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;QACnG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;QACpI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,uBAAuB,CAAC,YAAY;QAC1C,QAAQ,EAAE,uBAAuB,CAAC,gBAAgB;KACnD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"owner-receipt.types.js","sourceRoot":"","sources":["../../../../../../../backend/src/services/v3/owner-receipt/owner-receipt.types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAiBhE,sCAAsC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,MAAM;IACN,WAAW;IACX,aAAa;IACb,SAAS;IACT,SAAS;IACT,WAAW;CACH,CAAC;AA8KX,0BAA0B;AAC1B,MAAM,YAAY,GAAG,2BAA2B,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAA6B,EAC7B,KAAc;IAEd,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IAC3G,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,IAAI,GAAyB,EAAE,GAAG,OAAO,EAAE,CAAC;IAClD,IAAI,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,SAAS;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;QACnG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;QACpI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,6DAA6D,EAAE,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;IAC7B,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,uBAAuB,CAAC,YAAY;QAC1C,QAAQ,EAAE,uBAAuB,CAAC,gBAAgB;KACnD,CAAC;AACJ,CAAC"}
@@ -243,6 +243,8 @@ export declare class RequestService {
243
243
  * complete.
244
244
  *
245
245
  * @param request - The Request whose children to verify
246
+ * @param ignoreDead - The ticket was accepted: children in a dead status
247
+ * ({@link TICKET_CONSTANTS.DEAD_WORK_ITEM_STATUSES}) do not block
246
248
  * @throws {@link RequestStillHasOpenChildrenError} when any child is
247
249
  * non-terminal.
248
250
  */
@@ -1 +1 @@
1
- {"version":3,"file":"request.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/v3/request.service.ts"],"names":[],"mappings":"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"}