crewly 1.20.184 → 1.20.185

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 (184) hide show
  1. package/config/constants.ts +83 -0
  2. package/config/index.ts +2 -0
  3. package/config/oss-boundary-allowlist.json +10 -0
  4. package/config/skills/agent/core/ask-owner/SKILL.md +5 -2
  5. package/config/skills/agent/core/complete-task/execute.sh +4 -12
  6. package/config/skills/agent/core/complete-task/execute.test.sh +11 -0
  7. package/config/skills/agent/core/report-status/SKILL.md +1 -1
  8. package/config/skills/agent/core/report-status/execute.sh +5 -10
  9. package/dist/backend/backend/src/constants.d.ts +40 -0
  10. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  11. package/dist/backend/backend/src/constants.js +35 -1
  12. package/dist/backend/backend/src/constants.js.map +1 -1
  13. package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts +11 -1
  14. package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts.map +1 -1
  15. package/dist/backend/backend/src/controllers/decisions/decisions.controller.js +38 -0
  16. package/dist/backend/backend/src/controllers/decisions/decisions.controller.js.map +1 -1
  17. package/dist/backend/backend/src/controllers/google/google.controller.d.ts.map +1 -1
  18. package/dist/backend/backend/src/controllers/google/google.controller.js +3 -2
  19. package/dist/backend/backend/src/controllers/google/google.controller.js.map +1 -1
  20. package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts +9 -0
  21. package/dist/backend/backend/src/controllers/request/open-items.controller.d.ts.map +1 -1
  22. package/dist/backend/backend/src/controllers/request/open-items.controller.js +29 -1
  23. package/dist/backend/backend/src/controllers/request/open-items.controller.js.map +1 -1
  24. package/dist/backend/backend/src/controllers/request/request.routes.d.ts +1 -0
  25. package/dist/backend/backend/src/controllers/request/request.routes.d.ts.map +1 -1
  26. package/dist/backend/backend/src/controllers/request/request.routes.js +4 -1
  27. package/dist/backend/backend/src/controllers/request/request.routes.js.map +1 -1
  28. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts +5 -2
  29. package/dist/backend/backend/src/controllers/standing/standing.controller.d.ts.map +1 -1
  30. package/dist/backend/backend/src/controllers/standing/standing.controller.js +3 -1
  31. package/dist/backend/backend/src/controllers/standing/standing.controller.js.map +1 -1
  32. package/dist/backend/backend/src/index.d.ts.map +1 -1
  33. package/dist/backend/backend/src/index.js +15 -1
  34. package/dist/backend/backend/src/index.js.map +1 -1
  35. package/dist/backend/backend/src/scripts/check-oss-boundary.d.ts +217 -0
  36. package/dist/backend/backend/src/scripts/check-oss-boundary.d.ts.map +1 -0
  37. package/dist/backend/backend/src/scripts/check-oss-boundary.js +490 -0
  38. package/dist/backend/backend/src/scripts/check-oss-boundary.js.map +1 -0
  39. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +3 -1
  40. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js +15 -4
  42. package/dist/backend/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -1
  43. package/dist/backend/backend/src/services/decisions/decision-card.d.ts +31 -4
  44. package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  45. package/dist/backend/backend/src/services/decisions/decision-card.js +60 -2
  46. package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
  47. package/dist/backend/backend/src/services/decisions/decision-skip-command.d.ts +56 -0
  48. package/dist/backend/backend/src/services/decisions/decision-skip-command.d.ts.map +1 -0
  49. package/dist/backend/backend/src/services/decisions/decision-skip-command.js +108 -0
  50. package/dist/backend/backend/src/services/decisions/decision-skip-command.js.map +1 -0
  51. package/dist/backend/backend/src/services/decisions/decision.service.d.ts +105 -2
  52. package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  53. package/dist/backend/backend/src/services/decisions/decision.service.js +187 -11
  54. package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
  55. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +8 -0
  56. package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
  57. package/dist/backend/backend/src/services/decisions/decision.wiring.js +25 -0
  58. package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
  59. package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts +19 -0
  60. package/dist/backend/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
  61. package/dist/backend/backend/src/services/memory/agent-memory.service.js +48 -0
  62. package/dist/backend/backend/src/services/memory/agent-memory.service.js.map +1 -1
  63. package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
  64. package/dist/backend/backend/src/services/memory/memory.service.js +20 -0
  65. package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
  66. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts +40 -0
  67. package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  68. package/dist/backend/backend/src/services/memory/project-memory.service.js +101 -0
  69. package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
  70. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts +1 -1
  71. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -1
  72. package/dist/backend/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -1
  73. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts +61 -1
  74. package/dist/backend/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
  75. package/dist/backend/backend/src/services/memory/standing-answers.service.js +71 -3
  76. package/dist/backend/backend/src/services/memory/standing-answers.service.js.map +1 -1
  77. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts +7 -4
  78. package/dist/backend/backend/src/services/memory/standing-refresh.service.d.ts.map +1 -1
  79. package/dist/backend/backend/src/services/memory/standing-refresh.service.js +18 -9
  80. package/dist/backend/backend/src/services/memory/standing-refresh.service.js.map +1 -1
  81. package/dist/backend/backend/src/services/memory/task-log-filter.d.ts +27 -0
  82. package/dist/backend/backend/src/services/memory/task-log-filter.d.ts.map +1 -0
  83. package/dist/backend/backend/src/services/memory/task-log-filter.js +56 -0
  84. package/dist/backend/backend/src/services/memory/task-log-filter.js.map +1 -0
  85. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts +26 -1
  86. package/dist/backend/backend/src/services/open-items/open-items-backfill.d.ts.map +1 -1
  87. package/dist/backend/backend/src/services/open-items/open-items-backfill.js +59 -3
  88. package/dist/backend/backend/src/services/open-items/open-items-backfill.js.map +1 -1
  89. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts +37 -2
  90. package/dist/backend/backend/src/services/open-items/open-items.service.d.ts.map +1 -1
  91. package/dist/backend/backend/src/services/open-items/open-items.service.js +101 -6
  92. package/dist/backend/backend/src/services/open-items/open-items.service.js.map +1 -1
  93. package/dist/backend/backend/src/services/open-items/open-items.wiring.d.ts.map +1 -1
  94. package/dist/backend/backend/src/services/open-items/open-items.wiring.js +13 -0
  95. package/dist/backend/backend/src/services/open-items/open-items.wiring.js.map +1 -1
  96. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +13 -0
  97. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  98. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +34 -11
  99. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  100. package/dist/backend/backend/src/services/wiki/wiki-process.service.d.ts.map +1 -1
  101. package/dist/backend/backend/src/services/wiki/wiki-process.service.js +4 -2
  102. package/dist/backend/backend/src/services/wiki/wiki-process.service.js.map +1 -1
  103. package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts +103 -1
  104. package/dist/backend/backend/src/services/wiki/wiki-queue.service.d.ts.map +1 -1
  105. package/dist/backend/backend/src/services/wiki/wiki-queue.service.js +171 -20
  106. package/dist/backend/backend/src/services/wiki/wiki-queue.service.js.map +1 -1
  107. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts +60 -0
  108. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.d.ts.map +1 -1
  109. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js +121 -7
  110. package/dist/backend/backend/src/services/wiki/wiki-workitem-bridge.service.js.map +1 -1
  111. package/dist/backend/backend/src/types/decision.types.d.ts +18 -3
  112. package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
  113. package/dist/backend/backend/src/types/v2/open-item.types.d.ts +4 -1
  114. package/dist/backend/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  115. package/dist/backend/backend/src/types/v2/open-item.types.js.map +1 -1
  116. package/dist/backend/build-info.json +2 -2
  117. package/dist/backend/config/constants.d.ts +73 -0
  118. package/dist/backend/config/constants.d.ts.map +1 -1
  119. package/dist/backend/config/constants.js +80 -0
  120. package/dist/backend/config/constants.js.map +1 -1
  121. package/dist/backend/config/index.d.ts +10 -2
  122. package/dist/backend/config/index.d.ts.map +1 -1
  123. package/dist/backend/config/index.js +2 -2
  124. package/dist/backend/config/index.js.map +1 -1
  125. package/dist/cli/backend/src/constants.d.ts +40 -0
  126. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  127. package/dist/cli/backend/src/constants.js +35 -1
  128. package/dist/cli/backend/src/constants.js.map +1 -1
  129. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts +3 -1
  130. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.d.ts.map +1 -1
  131. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js +15 -4
  132. package/dist/cli/backend/src/services/ai/prompt-modules/standing-answers.module.js.map +1 -1
  133. package/dist/cli/backend/src/services/decisions/decision-card.d.ts +31 -4
  134. package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -1
  135. package/dist/cli/backend/src/services/decisions/decision-card.js +60 -2
  136. package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -1
  137. package/dist/cli/backend/src/services/decisions/decision.service.d.ts +105 -2
  138. package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -1
  139. package/dist/cli/backend/src/services/decisions/decision.service.js +187 -11
  140. package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -1
  141. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts +19 -0
  142. package/dist/cli/backend/src/services/memory/agent-memory.service.d.ts.map +1 -1
  143. package/dist/cli/backend/src/services/memory/agent-memory.service.js +48 -0
  144. package/dist/cli/backend/src/services/memory/agent-memory.service.js.map +1 -1
  145. package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
  146. package/dist/cli/backend/src/services/memory/memory.service.js +20 -0
  147. package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
  148. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts +40 -0
  149. package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
  150. package/dist/cli/backend/src/services/memory/project-memory.service.js +101 -0
  151. package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
  152. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts +1 -1
  153. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.d.ts.map +1 -1
  154. package/dist/cli/backend/src/services/memory/role-knowledge-eligibility.js.map +1 -1
  155. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts +61 -1
  156. package/dist/cli/backend/src/services/memory/standing-answers.service.d.ts.map +1 -1
  157. package/dist/cli/backend/src/services/memory/standing-answers.service.js +71 -3
  158. package/dist/cli/backend/src/services/memory/standing-answers.service.js.map +1 -1
  159. package/dist/cli/backend/src/services/memory/task-log-filter.d.ts +27 -0
  160. package/dist/cli/backend/src/services/memory/task-log-filter.d.ts.map +1 -0
  161. package/dist/cli/backend/src/services/memory/task-log-filter.js +56 -0
  162. package/dist/cli/backend/src/services/memory/task-log-filter.js.map +1 -0
  163. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +13 -0
  164. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  165. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +34 -11
  166. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  167. package/dist/cli/backend/src/types/decision.types.d.ts +18 -3
  168. package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -1
  169. package/dist/cli/backend/src/types/v2/open-item.types.d.ts +4 -1
  170. package/dist/cli/backend/src/types/v2/open-item.types.d.ts.map +1 -1
  171. package/dist/cli/backend/src/types/v2/open-item.types.js.map +1 -1
  172. package/dist/cli/config/constants.d.ts +73 -0
  173. package/dist/cli/config/constants.d.ts.map +1 -1
  174. package/dist/cli/config/constants.js +80 -0
  175. package/dist/cli/config/constants.js.map +1 -1
  176. package/dist/cli/config/index.d.ts +10 -2
  177. package/dist/cli/config/index.d.ts.map +1 -1
  178. package/dist/cli/config/index.js +2 -2
  179. package/dist/cli/config/index.js.map +1 -1
  180. package/frontend/dist/assets/{index-a6cb8533.js → index-1ee8a9a2.js} +273 -273
  181. package/frontend/dist/assets/index-a79c7852.css +42 -0
  182. package/frontend/dist/index.html +2 -2
  183. package/package.json +2 -1
  184. package/frontend/dist/assets/index-04d192f8.css +0 -42
@@ -74,7 +74,7 @@ export function ticketThreadRootText(ticket) {
74
74
  * Button value JSON.
75
75
  *
76
76
  * @param decisionId - Decision id
77
- * @param option - Option key or `remind`
77
+ * @param option - Option key, `remind` or `skip`
78
78
  * @param instanceId - This instance (Cloud routes the click by it)
79
79
  * @returns JSON string
80
80
  */
@@ -185,6 +185,18 @@ export function renderOpenCard(d, instanceId, now = new Date()) {
185
185
  },
186
186
  ]
187
187
  : []),
188
+ // "I don't care about this anymore". Not on sensitive / system /
189
+ // browser cards: their "No" already is the safe way out.
190
+ ...(canSkip(d)
191
+ ? [
192
+ {
193
+ type: 'button',
194
+ action_id: DECISION_CONSTANTS.SKIP_ACTION_ID,
195
+ text: { type: 'plain_text', text: 'Skip', emoji: true },
196
+ value: buttonValue(d.id, DECISION_CONSTANTS.SKIP_OPTION, instanceId),
197
+ },
198
+ ]
199
+ : []),
188
200
  ],
189
201
  });
190
202
  blocks.push({ type: 'context', elements: [{ type: 'mrkdwn', text: pendingContextLine(d, now) }] });
@@ -201,6 +213,35 @@ export function renderOpenCard(d, instanceId, now = new Date()) {
201
213
  export function canRemind(d) {
202
214
  return d.kind !== 'browser_action' && !d.system;
203
215
  }
216
+ /**
217
+ * Whether the card offers "Skip": every card except sensitive asks, system
218
+ * decisions and held browser actions — those already have a "No", which is
219
+ * what skipping them means ({@link skipChoice}).
220
+ *
221
+ * @param d - Decision
222
+ * @returns True when the Skip button is shown
223
+ */
224
+ export function canSkip(d) {
225
+ return d.kind !== 'browser_action' && !d.system && !d.sensitive;
226
+ }
227
+ /**
228
+ * What "skip" means for a card: a real skip where {@link canSkip}; else the
229
+ * safe way out — its "no" option, else its default when that never lets
230
+ * anything through, else a real skip (dropping a sensitive ask does nothing).
231
+ *
232
+ * @param d - Decision
233
+ * @returns Choice
234
+ */
235
+ export function skipChoice(d) {
236
+ if (canSkip(d))
237
+ return { kind: 'skip' };
238
+ const no = noOption(d.options);
239
+ if (no)
240
+ return { kind: 'option', key: no.key };
241
+ if (defaultIsSafe(d) && d.options.some((o) => o.key === d.defaultKey))
242
+ return { kind: 'option', key: d.defaultKey };
243
+ return { kind: 'skip' };
244
+ }
204
245
  /**
205
246
  * Whether the default never lets anything through (a held browser action's
206
247
  * "No", a declining system decision), so it is applied at the deadline even
@@ -251,6 +292,8 @@ export function settledLine(d, ownerName, now = new Date()) {
251
292
  return `Withdrawn · ${at}`;
252
293
  case 'expired':
253
294
  return `Expired — ${d.browser?.agentName ?? (d.asker || 'the agent')} will ask again · ${at}`;
295
+ case 'skipped':
296
+ return `⤼ ${who} skipped this · ${at}`;
254
297
  default:
255
298
  return pendingContextLine(d, now);
256
299
  }
@@ -302,7 +345,8 @@ export function acceptKey(d) {
302
345
  return d.options.some((o) => o.key === d.defaultKey) ? d.defaultKey : d.options[0].key;
303
346
  }
304
347
  /**
305
- * Map a reaction on a card to a choice.
348
+ * Map a reaction on a card to a choice: ✅ accept, ❌ the "no" option,
349
+ * ⏰ remind, 🚫 / ⏭️ skip ({@link skipChoice}).
306
350
  *
307
351
  * @param d - Decision
308
352
  * @param reaction - Emoji name (no colons; skin tone suffix allowed)
@@ -310,6 +354,8 @@ export function acceptKey(d) {
310
354
  */
311
355
  export function choiceFromReaction(d, reaction) {
312
356
  const name = reaction.replace(/::skin-tone-\d$/, '');
357
+ if (DECISION_CONSTANTS.REACTION_SKIP.includes(name))
358
+ return skipChoice(d);
313
359
  if (DECISION_CONSTANTS.REACTION_ACCEPT.includes(name))
314
360
  return { kind: 'option', key: acceptKey(d) };
315
361
  if (DECISION_CONSTANTS.REACTION_REMIND.includes(name))
@@ -322,6 +368,7 @@ export function choiceFromReaction(d, reaction) {
322
368
  }
323
369
  /**
324
370
  * Map a free-text thread reply to a choice: an option (label, key, number),
371
+ * a skip word ("skip", 「不用了」, 「算了」, 「不管了」 — {@link skipChoice}),
325
372
  * a yes word (the default / first option), a no word (the "no" option), a
326
373
  * remind word — else the text itself, for the asker to read.
327
374
  *
@@ -337,6 +384,8 @@ export function choiceFromText(d, text) {
337
384
  if (opt)
338
385
  return { kind: 'option', key: opt.key };
339
386
  const norm = clean.toLowerCase().replace(/[\s.。!!,,]+$/u, '');
387
+ if (isSkipWord(norm))
388
+ return skipChoice(d);
340
389
  if (DECISION_CONSTANTS.REMIND_WORDS.includes(norm))
341
390
  return { kind: 'remind' };
342
391
  if (DECISION_CONSTANTS.YES_WORDS.includes(norm))
@@ -355,4 +404,13 @@ export function choiceFromText(d, text) {
355
404
  }
356
405
  return { kind: 'text', text: clean };
357
406
  }
407
+ /**
408
+ * Whether a reply (lower-cased, trailing punctuation stripped) means "skip".
409
+ *
410
+ * @param norm - Normalised reply
411
+ * @returns True for a skip word
412
+ */
413
+ export function isSkipWord(norm) {
414
+ return DECISION_CONSTANTS.SKIP_WORDS.includes(norm.replace(/[\s.。!!,,~~]+$/u, '').trim());
415
+ }
358
416
  //# sourceMappingURL=decision-card.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decision-card.js","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/decision-card.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decision-card.js","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/decision-card.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  */
17
17
  import { type ComponentLogger } from '../core/logger.service.js';
18
18
  import type { SlackBlock, SlackIncomingMessage, SlackOutgoingMessage } from '../../types/slack.types.js';
19
- import type { AskOwnerInput, DecisionKind, DecisionOption, DecisionSensitiveKind, DecisionSystemRef, OwnerDecision } from '../../types/decision.types.js';
19
+ import type { AskOwnerInput, DecisionKind, DecisionOption, DecisionSensitiveKind, DecisionSource, DecisionSystemRef, OwnerDecision } from '../../types/decision.types.js';
20
20
  import { formatWhen } from './decision-card.js';
21
21
  import { DecisionStore } from './decision-store.js';
22
22
  import type { TicketThreadStore } from './ticket-thread-store.js';
@@ -91,6 +91,12 @@ export interface DecisionServiceDeps {
91
91
  closeWatchdog?: (session: string, slackChannelId: string, threadTs: string) => void;
92
92
  /** The owner's DM with the bot of `identity` (system decisions); null when there is none */
93
93
  ownerDmOf?: (identity: DecisionPostIdentity) => Promise<string | null>;
94
+ /**
95
+ * When the agent asked the question a `reply_question` card tracks (its
96
+ * open item's `createdAt`). Tells a backfilled legacy card (no `source`)
97
+ * from a live one in {@link DecisionService.skipAll}.
98
+ */
99
+ openItemAskedAt?: (ref: NonNullable<OwnerDecision['requestRef']>) => Promise<string | undefined>;
94
100
  now?: () => Date;
95
101
  logger?: ComponentLogger;
96
102
  }
@@ -188,7 +194,60 @@ export interface PrebuiltAsk {
188
194
  place?: OwnerDecision['place'];
189
195
  /** The Request open item it tracks */
190
196
  requestRef?: OwnerDecision['requestRef'];
197
+ /** `backfill` when the open-items backfill carded an old reply */
198
+ source?: DecisionSource;
199
+ /** When the agent asked it (ISO) */
200
+ askedAt?: string;
201
+ }
202
+ /** Where a skipped question must not be asked again ({@link DecisionService.findSkipped}). */
203
+ export interface SkipScope {
204
+ /** The Request the question was about */
205
+ requestId?: string;
206
+ /** The project ticket the question was about */
207
+ ticket?: {
208
+ projectPath: string;
209
+ id: string;
210
+ };
211
+ /** The asking agent (used only when there is no request / ticket) */
212
+ asker?: string;
213
+ }
214
+ /** Filters of {@link DecisionService.skipAll}. */
215
+ export interface SkipAllInput {
216
+ /** Only decisions created before this moment */
217
+ olderThan?: Date;
218
+ /** `backfill` = only cards the open-items backfill created; `all` (default) = every open card */
219
+ source?: 'backfill' | 'all';
220
+ /** Report what would be skipped without changing anything */
221
+ dryRun?: boolean;
222
+ }
223
+ /** One row of {@link SkipAllResult}. */
224
+ export interface SkipAllRow {
225
+ id: string;
226
+ question: string;
227
+ asker: string;
228
+ createdAt: string;
229
+ ticket?: string;
230
+ source: DecisionSource;
231
+ /** What skipping does to it: a real skip, or (sensitive / system / browser) its safe "no" option */
232
+ outcome: 'skipped' | 'declined';
233
+ }
234
+ /** Result of {@link DecisionService.skipAll}. */
235
+ export interface SkipAllResult {
236
+ dryRun: boolean;
237
+ /** How many open decisions match */
238
+ matched: number;
239
+ /** Ids actually settled (empty on a dry run) */
240
+ settled: string[];
241
+ rows: SkipAllRow[];
191
242
  }
243
+ /**
244
+ * The scope keys of a decision for the skipped-question dedupe: its Request
245
+ * and its ticket; the asking agent only when it has neither.
246
+ *
247
+ * @param s - Scope
248
+ * @returns Keys
249
+ */
250
+ export declare function skipScopeKeys(s: SkipScope): string[];
192
251
  /**
193
252
  * Decision cards service.
194
253
  */
@@ -289,7 +348,8 @@ export declare class DecisionService {
289
348
  */
290
349
  handleInteraction(payload: BlockActionsPayload): Promise<InteractionOutcome>;
291
350
  /**
292
- * A reaction on a card: ✅ default/first, ❌ the "no" option, ⏰ remind.
351
+ * A reaction on a card: ✅ default/first, ❌ the "no" option, ⏰ remind,
352
+ * 🚫 / ⏭️ skip.
293
353
  *
294
354
  * @param event - `reaction_added` event
295
355
  * @returns What happened
@@ -319,6 +379,42 @@ export declare class DecisionService {
319
379
  * @returns The snoozed decision
320
380
  */
321
381
  remindFromDashboard(id: string): Promise<OwnerDecision>;
382
+ /**
383
+ * "Skip" from the dashboard (sensitive / system cards: their safe "no").
384
+ *
385
+ * @param id - Decision id
386
+ * @returns The settled decision
387
+ */
388
+ skipFromDashboard(id: string): Promise<OwnerDecision>;
389
+ /**
390
+ * Skip every matching open decision at once ("clear the stale cards"):
391
+ * each card is updated, each linked open item closed, and each asking
392
+ * agent gets ONE note listing what it should drop. Sensitive / system /
393
+ * browser cards get their safe "no" instead ({@link skipChoice}).
394
+ *
395
+ * @param input - Filters and dry-run
396
+ * @returns What matched and what was settled
397
+ */
398
+ skipAll(input?: SkipAllInput): Promise<SkipAllResult>;
399
+ /**
400
+ * A question the owner skipped in the same scope within
401
+ * {@link DECISION_CONSTANTS.SKIP_DEDUPE_MS}: the agent must not ask it again.
402
+ *
403
+ * @param scope - Request / ticket (or the asker when it has neither)
404
+ * @param question - The question about to be asked
405
+ * @returns The skipped decision, or null
406
+ */
407
+ findSkipped(scope: SkipScope, question: string): Promise<OwnerDecision | null>;
408
+ /** The refusal for a re-ask of a skipped question. */
409
+ private alreadySkippedError;
410
+ /**
411
+ * Whether the open-items backfill created this card: `source` when set;
412
+ * for older cards, a reply-question card made long after the agent asked.
413
+ *
414
+ * @param d - Decision
415
+ * @returns True for a backfilled card
416
+ */
417
+ isBackfilled(d: OwnerDecision): Promise<boolean>;
322
418
  /**
323
419
  * Withdraw open decisions (the asker no longer needs an answer, or the
324
420
  * ticket's mark was cleared).
@@ -348,6 +444,13 @@ export declare class DecisionService {
348
444
  * tell the asker, close the watchdog entry.
349
445
  */
350
446
  private apply;
447
+ /**
448
+ * The owner skipped a card: settle it as `skipped`, show who skipped it,
449
+ * close what it tracks, and tell the asker once to drop it.
450
+ */
451
+ private applySkip;
452
+ /** The note the asker receives when the owner skipped its question. */
453
+ private skipNote;
351
454
  /** The note the asker receives when the owner answered. */
352
455
  private answerNote;
353
456
  /** Where the asker's follow-up belongs. */
@@ -1 +1 @@
1
- {"version":3,"file":"decision.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/decision.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACzG,OAAO,KAAK,EACV,aAAa,EAGb,YAAY,EACZ,cAAc,EACd,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACd,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAQL,UAAU,EAQX,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,aAAa,EAA6B,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,0DAA0D;AAC1D,qBAAa,aAAc,SAAQ,KAAK;aAEpB,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAED,2CAA2C;AAC3C,MAAM,WAAW,gBAAgB;IAC/B,WAAW,IAAI,OAAO,CAAC;IACvB,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5H;AAED,qFAAqF;AACrF,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kCAAkC;AAClC,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAqB;AACrB,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,iBAAiB,CAAC;IAC3B,KAAK,EAAE,MAAM,gBAAgB,GAAG,IAAI,CAAC;IACrC,wEAAwE;IACxE,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB,kDAAkD;IAClD,OAAO,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;IAC1C,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAClC,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAChE,yBAAyB;IACzB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/D,8BAA8B;IAC9B,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1D,mCAAmC;IACnC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACzD,kEAAkE;IAClE,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxH,iEAAiE;IACjE,eAAe,EAAE,CAAC,GAAG,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,gFAAgF;IAChF,SAAS,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnH,kFAAkF;IAClF,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC;IAC1E,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrE,mFAAmF;IACnF,cAAc,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpE,6EAA6E;IAC7E,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF,4FAA4F;IAC5F,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IACvE,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,uDAAuD;IACvD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,4DAA4D;IAC5D,OAAO,EAAE,OAAO,EAAE,CAAC;IACnB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,qBAAqB,CAAC;CACnC;AAED,oCAAoC;AACpC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,yDAAyD;AACzD,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7E,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1B,OAAO,CAAC,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,kDAAkD;AAClD,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACzD;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;;;;;;OASG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACtF;AAED,uEAAuE;AACvE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,kFAAkF;IAClF,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACnC,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,sCAAsC;IACtC,UAAU,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC1C;AAmBD;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgC;IAEvD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IAExB;;OAEG;gBACS,IAAI,EAAE,mBAAmB;IAMrC,gEAAgE;IAChE,MAAM,CAAC,WAAW,IAAI,eAAe,GAAG,IAAI;IAI5C,yDAAyD;IACzD,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI;IAIzD;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAAG,IAAI;IAKzF,0CAA0C;IAC1C,KAAK,IAAI,IAAI;IAMb,qBAAqB;IACrB,IAAI,IAAI,IAAI;IASZ;;;;;;;;OAQG;IACG,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAiD1F;;;;;;;;OAQG;IACG,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IA6B9D;;;;;;;OAOG;IACG,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB3D;;;;;;OAMG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/D;;;;;;OAMG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAYvD;;;;;OAKG;IACG,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAmC/D;;;OAGG;YACW,QAAQ;IA0BtB;;;OAGG;YACW,IAAI;IAqBlB;;;;;;OAMG;IACG,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwBlF;;;;;OAKG;IACG,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBvE;;;;;;OAMG;IACG,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,WAAW,GAAG,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,QAAQ,GAAG,oBAAoB,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBrK;;;;;;;OAOG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAQhF;;;;;OAKG;IACG,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAM7D;;;;;;;OAOG;IACG,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,aAAa,KAAK,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxF;;;;;OAKG;IACG,IAAI,CAAC,KAAK,GAAE,MAAM,GAAG,KAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAKpE;;;;;OAKG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAIhC,cAAc;IAO5B;;;OAGG;YACW,KAAK;IAiDnB,2DAA2D;IAC3D,OAAO,CAAC,UAAU;IASlB,2CAA2C;IAC3C,OAAO,CAAC,SAAS;IAUjB;;;;;OAKG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAsC/B,mEAAmE;YACrD,SAAS;IAQvB,2EAA2E;YAC7D,YAAY;IA2B1B,iFAAiF;YACnE,aAAa;IAgC3B,0FAA0F;YAC5E,WAAW;IAiBzB,sDAAsD;YACxC,YAAY;YAWZ,SAAS;IAYvB;;;OAGG;YACW,WAAW;YAaX,SAAS;IAWvB,OAAO,CAAC,aAAa;CAQtB;AAsCD,8DAA8D;AAC9D,OAAO,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"decision.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/decisions/decision.service.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ import { DECISION_CONSTANTS, OPEN_ITEMS_CONSTANTS, ORCHESTRATOR_SESSION_NAME } f
18
18
  import { questionSimilarity } from '../open-items/open-item-card.js';
19
19
  import { LoggerService } from '../core/logger.service.js';
20
20
  import { DecisionContractError, matchOption, parseOptions, resolveDefault, validateAskOwner } from './decision-contract.js';
21
- import { canRemind, cardFallbackText, choiceFromReaction, choiceFromText, deadlineDefaultLine, defaultIsSafe, defaultLabel, formatWhen, optionLabel, parseButtonValue, renderOpenCard, renderSettledCard, settledLine, noOption, ticketThreadRootText, } from './decision-card.js';
21
+ import { canRemind, cardFallbackText, choiceFromReaction, choiceFromText, deadlineDefaultLine, defaultIsSafe, defaultLabel, formatWhen, optionLabel, parseButtonValue, renderOpenCard, renderSettledCard, settledLine, noOption, isSkipWord, skipChoice, ticketThreadRootText, } from './decision-card.js';
22
22
  import { PENDING_DECISION_STATUSES } from './decision-store.js';
23
23
  /** Thrown for requests the caller must fix (HTTP 4xx). */
24
24
  export class DecisionError extends Error {
@@ -31,6 +31,36 @@ export class DecisionError extends Error {
31
31
  }
32
32
  /** Handlers per kind (process-wide: the browser side may start before the service). */
33
33
  const KIND_HANDLERS = new Map();
34
+ /**
35
+ * The scope keys of a decision for the skipped-question dedupe: its Request
36
+ * and its ticket; the asking agent only when it has neither.
37
+ *
38
+ * @param s - Scope
39
+ * @returns Keys
40
+ */
41
+ export function skipScopeKeys(s) {
42
+ const keys = [];
43
+ if (s.requestId)
44
+ keys.push(`request:${s.requestId}`);
45
+ if (s.ticket)
46
+ keys.push(`ticket:${s.ticket.projectPath}#${s.ticket.id}`);
47
+ if (keys.length === 0 && s.asker)
48
+ keys.push(`agent:${s.asker}`);
49
+ return keys;
50
+ }
51
+ /**
52
+ * The dedupe scope of a stored decision.
53
+ *
54
+ * @param d - Decision
55
+ * @returns Scope
56
+ */
57
+ function scopeOf(d) {
58
+ return {
59
+ ...(d.requestRef ? { requestId: d.requestRef.requestId } : {}),
60
+ ...(d.ticket ? { ticket: { projectPath: d.ticket.projectPath, id: d.ticket.id } } : {}),
61
+ asker: d.asker,
62
+ };
63
+ }
34
64
  /**
35
65
  * Next local `hour`:00 strictly tomorrow.
36
66
  *
@@ -128,6 +158,9 @@ export class DecisionService {
128
158
  }
129
159
  if (!asker)
130
160
  throw new DecisionError(400, 'Who is asking? Run ask-owner from an agent session, or name a --ticket.');
161
+ const skipped = await this.findSkipped({ ...(ticket ? { ticket: { projectPath: ticket.projectPath, id: ticket.id } } : {}), asker }, ask.question);
162
+ if (skipped)
163
+ throw this.alreadySkippedError(skipped);
131
164
  if (!teamId)
132
165
  teamId = await this.deps.teamOf(asker).catch(() => undefined);
133
166
  const workItemId = callerSession ? await this.deps.currentWorkItemId?.(callerSession).catch(() => undefined) : undefined;
@@ -204,6 +237,9 @@ export class DecisionService {
204
237
  * @returns The stored decision (with `card`, or `postError`; retried on the tick)
205
238
  */
206
239
  async askPrebuilt(ask) {
240
+ const skipped = await this.findSkipped({ ...(ask.requestRef ? { requestId: ask.requestRef.requestId } : {}), asker: ask.asker }, ask.question);
241
+ if (skipped)
242
+ throw this.alreadySkippedError(skipped);
207
243
  const teamId = await this.deps.teamOf(ask.asker).catch(() => undefined);
208
244
  const workItemId = await this.deps.currentWorkItemId?.(ask.asker).catch(() => undefined);
209
245
  const decision = await this.deps.store.create({
@@ -218,6 +254,8 @@ export class DecisionService {
218
254
  ...(ask.title ? { title: ask.title } : {}),
219
255
  ...(ask.place ? { place: ask.place } : {}),
220
256
  ...(ask.requestRef ? { requestRef: ask.requestRef } : {}),
257
+ ...(ask.source ? { source: ask.source } : {}),
258
+ ...(ask.askedAt ? { askedAt: ask.askedAt } : {}),
221
259
  requestedBy: ask.asker,
222
260
  asker: ask.asker,
223
261
  ...(teamId ? { teamId } : {}),
@@ -386,11 +424,12 @@ export class DecisionService {
386
424
  }
387
425
  if (decision.status !== 'open')
388
426
  return { handled: false, reason: `already ${decision.status}`, decision };
389
- const choice = value.o === 'remind' ? { kind: 'remind' } : { kind: 'option', key: value.o };
427
+ const choice = value.o === 'remind' ? { kind: 'remind' } : value.o === DECISION_CONSTANTS.SKIP_OPTION ? skipChoice(decision) : { kind: 'option', key: value.o };
390
428
  return this.apply(decision, choice, 'button', user);
391
429
  }
392
430
  /**
393
- * A reaction on a card: ✅ default/first, ❌ the "no" option, ⏰ remind.
431
+ * A reaction on a card: ✅ default/first, ❌ the "no" option, ⏰ remind,
432
+ * 🚫 / ⏭️ skip.
394
433
  *
395
434
  * @param event - `reaction_added` event
396
435
  * @returns What happened
@@ -412,8 +451,9 @@ export class DecisionService {
412
451
  return { handled: false, reason: `reaction :${event.reaction}: means nothing here`, decision };
413
452
  // A system decision takes only an unambiguous answer: ❌ = its "no" option.
414
453
  const name = event.reaction.replace(/::skin-tone-\d$/, '');
415
- if (decision.system && !(DECISION_CONSTANTS.REACTION_REJECT.includes(name) && choice.kind === 'option' && choice.key === noOption(decision.options)?.key)) {
416
- return { handled: false, reason: 'system decisions take a button, an option name or ❌', decision };
454
+ const declining = [...DECISION_CONSTANTS.REACTION_REJECT, ...DECISION_CONSTANTS.REACTION_SKIP];
455
+ if (decision.system && !(declining.includes(name) && choice.kind === 'option' && choice.key === noOption(decision.options)?.key)) {
456
+ return { handled: false, reason: 'system decisions take a button, an option name, ❌ or 🚫', decision };
417
457
  }
418
458
  return this.apply(decision, choice, 'reaction', event.user);
419
459
  }
@@ -470,6 +510,111 @@ export class DecisionService {
470
510
  const out = await this.apply(decision, { kind: 'remind' }, 'dashboard', this.deps.ownerUserId?.() ?? undefined);
471
511
  return out.decision ?? decision;
472
512
  }
513
+ /**
514
+ * "Skip" from the dashboard (sensitive / system cards: their safe "no").
515
+ *
516
+ * @param id - Decision id
517
+ * @returns The settled decision
518
+ */
519
+ async skipFromDashboard(id) {
520
+ const decision = await this.requirePending(id);
521
+ const out = await this.apply(decision, skipChoice(decision), 'dashboard', this.deps.ownerUserId?.() ?? undefined);
522
+ return out.decision ?? decision;
523
+ }
524
+ /**
525
+ * Skip every matching open decision at once ("clear the stale cards"):
526
+ * each card is updated, each linked open item closed, and each asking
527
+ * agent gets ONE note listing what it should drop. Sensitive / system /
528
+ * browser cards get their safe "no" instead ({@link skipChoice}).
529
+ *
530
+ * @param input - Filters and dry-run
531
+ * @returns What matched and what was settled
532
+ */
533
+ async skipAll(input = {}) {
534
+ const before = input.olderThan?.getTime();
535
+ const pending = await this.deps.store.list((d) => PENDING_DECISION_STATUSES.has(d.status) && (before === undefined || Date.parse(d.createdAt) < before));
536
+ const rows = [];
537
+ for (const d of pending) {
538
+ const source = (await this.isBackfilled(d)) ? 'backfill' : 'live';
539
+ if (input.source === 'backfill' && source !== 'backfill')
540
+ continue;
541
+ rows.push({
542
+ d,
543
+ row: {
544
+ id: d.id,
545
+ question: d.question,
546
+ asker: d.asker,
547
+ createdAt: d.createdAt,
548
+ ...(d.ticket ? { ticket: d.ticket.id } : {}),
549
+ source,
550
+ outcome: skipChoice(d).kind === 'skip' ? 'skipped' : 'declined',
551
+ },
552
+ });
553
+ }
554
+ const result = { dryRun: input.dryRun === true, matched: rows.length, settled: [], rows: rows.map((r) => r.row) };
555
+ if (input.dryRun)
556
+ return result;
557
+ const notes = new Map();
558
+ const owner = this.deps.ownerUserId?.() ?? undefined;
559
+ for (const { d } of rows) {
560
+ try {
561
+ const out = await this.apply(d, skipChoice(d), 'bulk', owner, notes);
562
+ if (out.handled)
563
+ result.settled.push(d.id);
564
+ }
565
+ catch (err) {
566
+ this.logger.warn('Bulk skip step failed', { decisionId: d.id, error: errText(err) });
567
+ }
568
+ }
569
+ for (const [asker, lines] of notes) {
570
+ const text = lines.length === 1
571
+ ? lines[0]
572
+ : `[DECISIONS] The owner cleared ${lines.length} old cards of yours. Drop each of these and don't ask again:\n${lines.map((l) => `- ${l}`).join('\n')}`;
573
+ const ok = await this.deps.deliverToAgent(asker, text).catch(() => false);
574
+ if (!ok)
575
+ this.logger.warn('Could not deliver the bulk-skip note to the asking agent', { asker });
576
+ }
577
+ this.logger.info('Owner decisions skipped in bulk', { matched: result.matched, settled: result.settled.length, source: input.source ?? 'all', olderThan: input.olderThan?.toISOString() });
578
+ return result;
579
+ }
580
+ /**
581
+ * A question the owner skipped in the same scope within
582
+ * {@link DECISION_CONSTANTS.SKIP_DEDUPE_MS}: the agent must not ask it again.
583
+ *
584
+ * @param scope - Request / ticket (or the asker when it has neither)
585
+ * @param question - The question about to be asked
586
+ * @returns The skipped decision, or null
587
+ */
588
+ async findSkipped(scope, question) {
589
+ const keys = new Set(skipScopeKeys(scope));
590
+ if (keys.size === 0 || !question.trim())
591
+ return null;
592
+ const since = this.now().getTime() - DECISION_CONSTANTS.SKIP_DEDUPE_MS;
593
+ const skipped = await this.deps.store.list((d) => d.status === 'skipped' && Date.parse(d.resolvedAt ?? d.updatedAt) >= since);
594
+ return (skipped.find((d) => skipScopeKeys(scopeOf(d)).some((k) => keys.has(k)) &&
595
+ questionSimilarity(d.question, question) >= DECISION_CONSTANTS.SKIP_SAME_QUESTION_SIMILARITY) ?? null);
596
+ }
597
+ /** The refusal for a re-ask of a skipped question. */
598
+ alreadySkippedError(d) {
599
+ return new DecisionError(409, `The owner skipped this question (${d.id}, "${d.question}") — drop it, don't ask again.`);
600
+ }
601
+ /**
602
+ * Whether the open-items backfill created this card: `source` when set;
603
+ * for older cards, a reply-question card made long after the agent asked.
604
+ *
605
+ * @param d - Decision
606
+ * @returns True for a backfilled card
607
+ */
608
+ async isBackfilled(d) {
609
+ if (d.source)
610
+ return d.source === 'backfill';
611
+ if (d.kind !== 'reply_question' || !d.requestRef)
612
+ return false;
613
+ const askedAt = d.askedAt ?? (await this.deps.openItemAskedAt?.(d.requestRef).catch(() => undefined));
614
+ if (!askedAt)
615
+ return false;
616
+ return Date.parse(d.createdAt) - Date.parse(askedAt) >= DECISION_CONSTANTS.BACKFILL_CARD_MIN_LAG_MS;
617
+ }
473
618
  /**
474
619
  * Withdraw open decisions (the asker no longer needs an answer, or the
475
620
  * ticket's mark was cleared).
@@ -522,8 +667,10 @@ export class DecisionService {
522
667
  * Apply a choice: resolve (or snooze), update the card, log the ticket,
523
668
  * tell the asker, close the watchdog entry.
524
669
  */
525
- async apply(decision, choice, via, user) {
670
+ async apply(decision, choice, via, user, batchNotes) {
526
671
  const now = this.now();
672
+ if (choice.kind === 'skip')
673
+ return this.applySkip(decision, via, user, batchNotes);
527
674
  if (choice.kind === 'remind' && !canRemind(decision)) {
528
675
  return { handled: false, reason: 'remind is not offered on this card', decision };
529
676
  }
@@ -563,11 +710,34 @@ export class DecisionService {
563
710
  const answer = resolved.chosenKey ? optionLabel(resolved, resolved.chosenKey) : `“${resolved.answerText}”`;
564
711
  if (resolved.ticket)
565
712
  await this.logTicket(resolved, `owner decision ${resolved.id}: ${answer} (${via})`, true);
566
- await this.notifyAsker(resolved, this.answerNote(resolved));
713
+ await this.notifyAsker(resolved, this.answerNote(resolved), batchNotes);
567
714
  this.closeWatchdog(resolved);
568
715
  this.logger.info('Owner decision resolved', { decisionId: resolved.id, via, chosen: resolved.chosenKey ?? 'text' });
569
716
  return { handled: true, reason: 'resolved', decision: resolved };
570
717
  }
718
+ /**
719
+ * The owner skipped a card: settle it as `skipped`, show who skipped it,
720
+ * close what it tracks, and tell the asker once to drop it.
721
+ */
722
+ async applySkip(decision, via, user, batchNotes) {
723
+ const now = this.now();
724
+ const skipped = await this.deps.store.update(decision.id, (cur) => PENDING_DECISION_STATUSES.has(cur.status)
725
+ ? { status: 'skipped', chosenKey: undefined, answerText: undefined, answeredVia: via, ...(user ? { answeredBy: user } : {}), resolvedAt: now.toISOString(), remindAt: undefined }
726
+ : null);
727
+ if (!skipped)
728
+ return { handled: false, reason: 'already settled', decision };
729
+ await this.refreshCard(skipped);
730
+ if (skipped.ticket)
731
+ await this.logTicket(skipped, `owner decision ${skipped.id}: skipped by the owner (${via})`, true);
732
+ await this.notifyAsker(skipped, this.skipNote(skipped), batchNotes);
733
+ this.closeWatchdog(skipped);
734
+ this.logger.info('Owner decision skipped', { decisionId: skipped.id, via });
735
+ return { handled: true, reason: 'skipped', decision: skipped };
736
+ }
737
+ /** The note the asker receives when the owner skipped its question. */
738
+ skipNote(d) {
739
+ return `[DECISION ${d.id}] The owner skipped this — drop it, don't ask again: "${d.question}"${d.ticket ? ` (ticket ${d.ticket.id})` : ''}.`;
740
+ }
571
741
  /** The note the asker receives when the owner answered. */
572
742
  answerNote(d) {
573
743
  const where = this.whereLine(d);
@@ -751,7 +921,7 @@ export class DecisionService {
751
921
  * Tell the asker how a decision settled: through its kind's handler when
752
922
  * it has one (which also acts on the answer), else with `fallback`.
753
923
  */
754
- async notifyAsker(d, fallback) {
924
+ async notifyAsker(d, fallback, batchNotes) {
755
925
  const handler = d.kind ? KIND_HANDLERS.get(d.kind) : undefined;
756
926
  let text = fallback;
757
927
  if (handler) {
@@ -762,8 +932,14 @@ export class DecisionService {
762
932
  this.logger.warn('Decision kind handler failed', { decisionId: d.id, kind: d.kind, error: errText(err) });
763
933
  }
764
934
  }
765
- if (text)
766
- await this.tellAsker(d, text);
935
+ if (!text)
936
+ return;
937
+ // Bulk skip: one note per agent, sent by the caller.
938
+ if (batchNotes && !d.system) {
939
+ batchNotes.set(d.asker, [...(batchNotes.get(d.asker) ?? []), text]);
940
+ return;
941
+ }
942
+ await this.tellAsker(d, text);
767
943
  }
768
944
  async tellAsker(d, text) {
769
945
  // A harness-owned decision is handled by its kind's handler; no agent is woken.
@@ -805,7 +981,7 @@ function systemChoiceFromText(d, text) {
805
981
  if (opt)
806
982
  return { kind: 'option', key: opt.key };
807
983
  const norm = clean.toLowerCase().replace(/[\s.。!!,,]+$/u, '');
808
- if (DECISION_CONSTANTS.NO_WORDS.includes(norm)) {
984
+ if (DECISION_CONSTANTS.NO_WORDS.includes(norm) || isSkipWord(norm)) {
809
985
  const no = noOption(d.options);
810
986
  if (no)
811
987
  return { kind: 'option', key: no.key };