cc-transcript 14.23.0__tar.gz → 14.24.0__tar.gz

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 (162) hide show
  1. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/PKG-INFO +1 -1
  2. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/render.py +5 -1
  3. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/pyproject.toml +1 -1
  4. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/render.rs +21 -5
  5. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/Cargo.lock +0 -0
  6. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/Cargo.toml +0 -0
  7. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/LICENSE +0 -0
  8. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/README.md +0 -0
  9. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/__init__.py +0 -0
  10. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/__init__.pyi +0 -0
  11. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/_native.pyi +0 -0
  12. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/activity.py +0 -0
  13. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/activity_probe.py +0 -0
  14. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/builders.py +0 -0
  15. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/codex.py +0 -0
  16. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/command.py +0 -0
  17. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/context.py +0 -0
  18. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/corrections.py +0 -0
  19. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/cost.py +0 -0
  20. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/decision_store.py +0 -0
  21. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/decisions.py +0 -0
  22. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/discovery.py +0 -0
  23. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/disktruth.py +0 -0
  24. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/evidence.py +0 -0
  25. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/extract/__init__.py +0 -0
  26. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/extract/correct.py +0 -0
  27. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/facts.py +0 -0
  28. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/filterspec.py +0 -0
  29. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/heartbeats.py +0 -0
  30. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/ids.py +0 -0
  31. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/judge/__init__.py +0 -0
  32. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/judge/llm.py +0 -0
  33. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/judge/similar.py +0 -0
  34. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/judge/verdicts.py +0 -0
  35. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/ledger.py +0 -0
  36. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/literals.py +0 -0
  37. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/__init__.py +0 -0
  38. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/candidates.py +0 -0
  39. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/confidence.py +0 -0
  40. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/engine.py +0 -0
  41. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/formats.py +0 -0
  42. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/sampling.py +0 -0
  43. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/signals.py +0 -0
  44. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/sourcekind.py +0 -0
  45. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/spec.py +0 -0
  46. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/mining/store.py +0 -0
  47. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/models.py +0 -0
  48. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/nlp.py +0 -0
  49. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/notifications.py +0 -0
  50. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/parser.py +0 -0
  51. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/py.typed +0 -0
  52. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/query.py +0 -0
  53. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/__init__.py +0 -0
  54. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/buckets.py +0 -0
  55. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/data/afinn-en-165.tsv +0 -0
  56. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/data/domain_overrides.tsv +0 -0
  57. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/data/en-ewt.udpipe +0 -0
  58. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/engine.py +0 -0
  59. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/lexicon.py +0 -0
  60. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/sentiment/scorespec.py +0 -0
  61. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/synthetic.py +0 -0
  62. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/tools.py +0 -0
  63. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/cc_transcript/watch.py +0 -0
  64. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/Cargo.toml +0 -0
  65. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/blame.rs +0 -0
  66. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/corrections.rs +0 -0
  67. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/digest.rs +0 -0
  68. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/facts.rs +0 -0
  69. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/grep.rs +0 -0
  70. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/list.rs +0 -0
  71. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/mod.rs +0 -0
  72. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/scratchpad.rs +0 -0
  73. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/show.rs +0 -0
  74. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/slice.rs +0 -0
  75. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/stats.rs +0 -0
  76. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/commands/watch.rs +0 -0
  77. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/lib.rs +0 -0
  78. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/main.rs +0 -0
  79. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/output.rs +0 -0
  80. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/target.rs +0 -0
  81. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/cli/src/timearg.rs +0 -0
  82. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/Cargo.toml +0 -0
  83. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/benches/parse.rs +0 -0
  84. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/benches/render.rs +0 -0
  85. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/benches/toolcall.rs +0 -0
  86. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/activity.rs +0 -0
  87. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/actor.rs +0 -0
  88. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/blame.rs +0 -0
  89. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/buckets.rs +0 -0
  90. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/discovery.rs +0 -0
  91. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/lower.rs +0 -0
  92. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/mod.rs +0 -0
  93. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/parse.rs +0 -0
  94. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/probe.rs +0 -0
  95. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/protocol.rs +0 -0
  96. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/codex/types.rs +0 -0
  97. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/command.rs +0 -0
  98. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/context.rs +0 -0
  99. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/corrections.rs +0 -0
  100. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/cost.rs +0 -0
  101. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/discovery.rs +0 -0
  102. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/facts.rs +0 -0
  103. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/feedback.rs +0 -0
  104. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/filter.rs +0 -0
  105. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/gateway.rs +0 -0
  106. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/ids.rs +0 -0
  107. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/judge.rs +0 -0
  108. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/lib.rs +0 -0
  109. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/command.rs +0 -0
  110. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/corrections.rs +0 -0
  111. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/feedback.rs +0 -0
  112. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/mining.rs +0 -0
  113. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/mod.rs +0 -0
  114. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/literals/protocol.rs +0 -0
  115. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/notifications.rs +0 -0
  116. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/parse.rs +0 -0
  117. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/protocol.rs +0 -0
  118. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/pystr.rs +0 -0
  119. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/query.rs +0 -0
  120. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/rng.rs +0 -0
  121. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/schema.rs +0 -0
  122. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/sqlite.rs +0 -0
  123. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/toolcall.rs +0 -0
  124. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/types.rs +0 -0
  125. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/value.rs +0 -0
  126. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/core/src/watch.rs +0 -0
  127. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/Cargo.toml +0 -0
  128. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/build.rs +0 -0
  129. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/data/command_prefix_pins.tsv +0 -0
  130. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/actor_bridge.rs +0 -0
  131. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/bin/stub_gen.rs +0 -0
  132. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/codex.rs +0 -0
  133. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/command.rs +0 -0
  134. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/context.rs +0 -0
  135. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/corrections.rs +0 -0
  136. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/discovery.rs +0 -0
  137. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/feedback.rs +0 -0
  138. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/judge.rs +0 -0
  139. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/lexicon.rs +0 -0
  140. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/lib.rs +0 -0
  141. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/mining.rs +0 -0
  142. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/nlp.rs +0 -0
  143. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/python.rs +0 -0
  144. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/render.rs +0 -0
  145. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/score.rs +0 -0
  146. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/sqlite.rs +0 -0
  147. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/toolcall.rs +0 -0
  148. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/attachment.rs +0 -0
  149. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/blocks.rs +0 -0
  150. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/command.rs +0 -0
  151. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/convert.rs +0 -0
  152. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/dunder.rs +0 -0
  153. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/events.rs +0 -0
  154. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/meta.rs +0 -0
  155. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/mod.rs +0 -0
  156. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/print.rs +0 -0
  157. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/store.rs +0 -0
  158. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/system.rs +0 -0
  159. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/toolcall.rs +0 -0
  160. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/toolresult.rs +0 -0
  161. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/views/transcript.rs +0 -0
  162. {cc_transcript-14.23.0 → cc_transcript-14.24.0}/rust/crates/py/src/watch.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cc-transcript
3
- Version: 14.23.0
3
+ Version: 14.24.0
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Environment :: Console
6
6
  Classifier: Intended Audience :: Developers
@@ -62,7 +62,11 @@ def prefixed(prefix: str, text: str) -> tuple[str, ...]:
62
62
 
63
63
 
64
64
  def render_turn(turn: Turn, *, budget: Budget, tool_results: bool = False) -> str:
65
- """Render one turn: the prompt, the user's mid-turn messages, assistant prose, and every tool call, in order.
65
+ """Render one turn: the prompt, the messages queued mid-turn, assistant prose, and every tool call, in order.
66
+
67
+ A message queued while the agent worked renders under who sent it: ``user:`` for
68
+ the user's own, ``notification:`` for a background task's, ``peer:`` for another
69
+ agent's, ``channel:`` for an MCP channel's.
66
70
 
67
71
  Prose chunks clip to ``budget.turn_chars``; each tool call renders via
68
72
  :func:`render_tool_call` under ``budget.tool_chars``. An AskUserQuestion answer
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "cc-transcript"
3
- version = "14.23.0" # informational — releases stamp the version from the git tag
3
+ version = "14.24.0" # informational — releases stamp the version from the git tag
4
4
  description = "Grep every Claude Code session you've ever run."
5
5
  readme = "README.md"
6
6
  license = "PolyForm-Noncommercial-1.0.0"
@@ -436,9 +436,9 @@ pub fn render_tool_call(call: &ToolCall, budget: &Budget) -> String {
436
436
  }
437
437
  }
438
438
 
439
- /// Render one turn — the prompt, the user's mid-turn messages, assistant prose,
440
- /// every tool call, and the user's AskUserQuestion answers, in order (render.py
441
- /// render_turn). With `tool_results`, each other result follows its call as a
439
+ /// Render one turn — the prompt, the messages queued mid-turn under `user:`,
440
+ /// `notification:`, `peer:` or `channel:` by who sent them, assistant prose, every tool
441
+ /// call, and the user's AskUserQuestion answers, in order (render.py render_turn). With `tool_results`, each other result follows its call as a
442
442
  /// `result:`/`failed:` head naming the call, its content on `> ` lines, and a
443
443
  /// `call i/n`/`result i/n` ordinal on calls batched in one message.
444
444
  pub fn render_turn(turn: &Turn, budget: &Budget, tool_results: bool) -> String {
@@ -491,8 +491,8 @@ pub fn render_turn(turn: &Turn, budget: &Budget, tool_results: bool) -> String {
491
491
  }
492
492
  }
493
493
  Entry::Attachment(attachment) => {
494
- if let Some(prompt) = human_queued_prompt(&attachment.detail) {
495
- parts.push(format!("user: {}", clip(prompt, budget.turn_chars)));
494
+ if let Some((role, prompt)) = queued_line(&attachment.detail) {
495
+ parts.push(format!("{role}: {}", clip(prompt, budget.turn_chars)));
496
496
  }
497
497
  }
498
498
  _ => {}
@@ -597,6 +597,22 @@ fn chosen_option<'a>(payload: &'a Value, question: &str, label: &str) -> Option<
597
597
  .find(|option| field_str(option, "label") == Some(label))
598
598
  }
599
599
 
600
+ // The role a queued command renders under: the user's own `user:`, a background task's
601
+ // `notification:`, another agent's `peer:`, an MCP channel's `channel:`.
602
+ pub(crate) fn queued_line(detail: &AttachmentDetail) -> Option<(&'static str, &str)> {
603
+ let AttachmentDetail::QueuedCommand(queued) = detail else {
604
+ return None;
605
+ };
606
+ let prompt = queued.prompt.as_deref()?;
607
+ match (queued.command_mode.as_deref(), queued.origin.as_deref()) {
608
+ (Some("task-notification"), _) => Some(("notification", prompt)),
609
+ (Some("prompt"), Some("human")) => Some(("user", prompt)),
610
+ (Some("prompt"), Some("peer")) => Some(("peer", prompt)),
611
+ (Some("prompt"), Some("channel")) => Some(("channel", prompt)),
612
+ _ => None,
613
+ }
614
+ }
615
+
600
616
  pub(crate) fn human_queued_prompt(detail: &AttachmentDetail) -> Option<&str> {
601
617
  match detail {
602
618
  AttachmentDetail::QueuedCommand(queued)
File without changes