@mastra/playground-ui 68.0.0-alpha.2 → 68.0.0-alpha.3

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 (338) hide show
  1. package/dist/KnowledgePageGraph.css +55 -0
  2. package/dist/{MarkdownRenderer-2GOXQJEv.js → MarkdownRenderer-CI30RqdB.js} +19 -6
  3. package/dist/MarkdownRenderer-CI30RqdB.js.map +1 -0
  4. package/dist/{MarkdownRenderer-CB8Z_CHc.cjs → MarkdownRenderer-y65WGBhC.cjs} +19 -6
  5. package/dist/MarkdownRenderer-y65WGBhC.cjs.map +1 -0
  6. package/dist/{activity-rJ1NQl_2.js → activity-C8Ql81WM.js} +2 -2
  7. package/dist/{activity-rJ1NQl_2.js.map → activity-C8Ql81WM.js.map} +1 -1
  8. package/dist/{activity-DyB5H3gF.cjs → activity-CcQZeDYi.cjs} +2 -2
  9. package/dist/{activity-DyB5H3gF.cjs.map → activity-CcQZeDYi.cjs.map} +1 -1
  10. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  11. package/dist/components/MarkdownRenderer.es.js +1 -1
  12. package/dist/components/SavedViews.cjs.js +1 -1
  13. package/dist/components/SavedViews.es.js +1 -1
  14. package/dist/components/ai/activity.cjs.js +1 -1
  15. package/dist/components/ai/activity.es.js +1 -1
  16. package/dist/components/ai/plan.cjs.js +1 -1
  17. package/dist/components/ai/plan.es.js +1 -1
  18. package/dist/components/ai/tool-approval.cjs.js +1 -1
  19. package/dist/components/ai/tool-approval.es.js +1 -1
  20. package/dist/components/ai/tool-call.cjs.js +2 -2
  21. package/dist/components/ai/tool-call.es.js +2 -2
  22. package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
  23. package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
  24. package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
  25. package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
  26. package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
  27. package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
  28. package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
  29. package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
  30. package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
  31. package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
  32. package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
  33. package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
  34. package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
  35. package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
  36. package/dist/domains/chat/activity/model/activity-words.cjs.js +2 -2
  37. package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
  38. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  39. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  40. package/dist/domains/chat/knowledge/knowledge-links.cjs.js +52 -6
  41. package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -1
  42. package/dist/domains/chat/knowledge/knowledge-links.es.js +53 -9
  43. package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -1
  44. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +10 -3
  45. package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -1
  46. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +10 -3
  47. package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -1
  48. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +8 -3
  49. package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -1
  50. package/dist/domains/chat/knowledge/pinned-knowledge.es.js +8 -3
  51. package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -1
  52. package/dist/domains/chat/knowledge.cjs.js +2 -0
  53. package/dist/domains/chat/knowledge.es.js +2 -2
  54. package/dist/domains/chat/messages/message-row.cjs.js +3 -3
  55. package/dist/domains/chat/messages/message-row.es.js +3 -3
  56. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  57. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  58. package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
  59. package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
  60. package/dist/domains/chat/messages/renderers/message-text.cjs.js +35 -1
  61. package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
  62. package/dist/domains/chat/messages/renderers/message-text.es.js +36 -2
  63. package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
  64. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  65. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  66. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  67. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  68. package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
  69. package/dist/domains/chat/messages/skill-message.es.js +2 -2
  70. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  71. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  72. package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
  73. package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
  74. package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
  75. package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
  76. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
  77. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
  78. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +80 -0
  79. package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -0
  80. package/dist/domains/chat/tools/badges/knowledge-body-range.d.ts +1 -0
  81. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +78 -0
  82. package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -0
  83. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +163 -13
  84. package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
  85. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +165 -15
  86. package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
  87. package/dist/domains/chat/tools/badges/mcp-input-request-badge.cjs.js +51 -0
  88. package/dist/domains/chat/tools/badges/mcp-input-request-badge.cjs.js.map +1 -0
  89. package/dist/domains/chat/tools/badges/mcp-input-request-badge.d.ts +1 -0
  90. package/dist/domains/chat/tools/badges/mcp-input-request-badge.es.js +49 -0
  91. package/dist/domains/chat/tools/badges/mcp-input-request-badge.es.js.map +1 -0
  92. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +7 -2
  93. package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
  94. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +7 -2
  95. package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
  96. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
  97. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
  98. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  99. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  100. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  101. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  102. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  103. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  104. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  105. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  106. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +9 -4
  107. package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
  108. package/dist/domains/chat/tools/badges/tool-badge.es.js +9 -4
  109. package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
  110. package/dist/domains/chat/tools/badges/use-deferred-input-request.cjs.js +81 -0
  111. package/dist/domains/chat/tools/badges/use-deferred-input-request.cjs.js.map +1 -0
  112. package/dist/domains/chat/tools/badges/use-deferred-input-request.d.ts +1 -0
  113. package/dist/domains/chat/tools/badges/use-deferred-input-request.es.js +77 -0
  114. package/dist/domains/chat/tools/badges/use-deferred-input-request.es.js.map +1 -0
  115. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +11 -2
  116. package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -1
  117. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +11 -2
  118. package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -1
  119. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  120. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  121. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +240 -0
  122. package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js.map +1 -0
  123. package/dist/domains/chat/tools/mcp-input-request-tool.d.ts +1 -0
  124. package/dist/domains/chat/tools/mcp-input-request-tool.es.js +239 -0
  125. package/dist/domains/chat/tools/mcp-input-request-tool.es.js.map +1 -0
  126. package/dist/domains/chat/tools/mcp-input-request.cjs.js +40 -0
  127. package/dist/domains/chat/tools/mcp-input-request.cjs.js.map +1 -0
  128. package/dist/domains/chat/tools/mcp-input-request.d.ts +1 -0
  129. package/dist/domains/chat/tools/mcp-input-request.es.js +33 -0
  130. package/dist/domains/chat/tools/mcp-input-request.es.js.map +1 -0
  131. package/dist/domains/chat/tools/tool-card-kind.cjs.js +8 -3
  132. package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
  133. package/dist/domains/chat/tools/tool-card-kind.es.js +8 -4
  134. package/dist/domains/chat/tools/tool-card-kind.es.js.map +1 -1
  135. package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
  136. package/dist/domains/chat/tools/tool-card.es.js +1 -1
  137. package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
  138. package/dist/domains/chat/tools/tool-groups.es.js +1 -1
  139. package/dist/domains/chat.cjs.js +5 -3
  140. package/dist/domains/chat.es.js +4 -4
  141. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +48 -0
  142. package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -0
  143. package/dist/domains/knowledge/components/KnowledgePageCard.d.ts +1 -0
  144. package/dist/domains/knowledge/components/KnowledgePageCard.es.js +47 -0
  145. package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -0
  146. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +63 -5
  147. package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
  148. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +64 -6
  149. package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
  150. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +485 -47
  151. package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -1
  152. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +487 -50
  153. package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -1
  154. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +1051 -123
  155. package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
  156. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +1054 -126
  157. package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
  158. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +75 -3
  159. package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -1
  160. package/dist/domains/knowledge/components/KnowledgePageTree.es.js +76 -4
  161. package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -1
  162. package/dist/domains/knowledge/lib/circleText.cjs.js +9 -0
  163. package/dist/domains/knowledge/lib/circleText.cjs.js.map +1 -0
  164. package/dist/domains/knowledge/lib/circleText.d.ts +1 -0
  165. package/dist/domains/knowledge/lib/circleText.es.js +8 -0
  166. package/dist/domains/knowledge/lib/circleText.es.js.map +1 -0
  167. package/dist/domains/knowledge/lib/fitViewport.cjs.js +82 -0
  168. package/dist/domains/knowledge/lib/fitViewport.cjs.js.map +1 -0
  169. package/dist/domains/knowledge/lib/fitViewport.d.ts +1 -0
  170. package/dist/domains/knowledge/lib/fitViewport.es.js +73 -0
  171. package/dist/domains/knowledge/lib/fitViewport.es.js.map +1 -0
  172. package/dist/domains/knowledge/lib/graphShape.cjs.js +524 -0
  173. package/dist/domains/knowledge/lib/graphShape.cjs.js.map +1 -0
  174. package/dist/domains/knowledge/lib/graphShape.d.ts +1 -0
  175. package/dist/domains/knowledge/lib/graphShape.es.js +499 -0
  176. package/dist/domains/knowledge/lib/graphShape.es.js.map +1 -0
  177. package/dist/domains/knowledge/lib/linkCountsText.cjs.js +11 -0
  178. package/dist/domains/knowledge/lib/linkCountsText.cjs.js.map +1 -0
  179. package/dist/domains/knowledge/lib/linkCountsText.d.ts +1 -0
  180. package/dist/domains/knowledge/lib/linkCountsText.es.js +10 -0
  181. package/dist/domains/knowledge/lib/linkCountsText.es.js.map +1 -0
  182. package/dist/domains/knowledge/lib/pageAddress.cjs.js +29 -0
  183. package/dist/domains/knowledge/lib/pageAddress.cjs.js.map +1 -0
  184. package/dist/domains/knowledge/lib/pageAddress.d.ts +1 -0
  185. package/dist/domains/knowledge/lib/pageAddress.es.js +27 -0
  186. package/dist/domains/knowledge/lib/pageAddress.es.js.map +1 -0
  187. package/dist/domains/knowledge/lib/pageGraph.cjs.js +11 -11
  188. package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -1
  189. package/dist/domains/knowledge/lib/pageGraph.es.js +11 -11
  190. package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -1
  191. package/dist/domains/knowledge/lib/pageRefs.cjs.js +69 -0
  192. package/dist/domains/knowledge/lib/pageRefs.cjs.js.map +1 -0
  193. package/dist/domains/knowledge/lib/pageRefs.d.ts +1 -0
  194. package/dist/domains/knowledge/lib/pageRefs.es.js +66 -0
  195. package/dist/domains/knowledge/lib/pageRefs.es.js.map +1 -0
  196. package/dist/domains/knowledge/lib/pageTree.cjs.js +5 -0
  197. package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -1
  198. package/dist/domains/knowledge/lib/pageTree.es.js +5 -1
  199. package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -1
  200. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.cjs.js +82 -0
  201. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.cjs.js.map +1 -0
  202. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.d.ts +1 -0
  203. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.es.js +78 -0
  204. package/dist/domains/knowledge/lib/remarkKnowledgeLinks.es.js.map +1 -0
  205. package/dist/domains/knowledge/lib/tooltipSide.cjs.js +77 -0
  206. package/dist/domains/knowledge/lib/tooltipSide.cjs.js.map +1 -0
  207. package/dist/domains/knowledge/lib/tooltipSide.d.ts +1 -0
  208. package/dist/domains/knowledge/lib/tooltipSide.es.js +75 -0
  209. package/dist/domains/knowledge/lib/tooltipSide.es.js.map +1 -0
  210. package/dist/domains/knowledge/lib/useLeavingNodes.cjs.js +65 -0
  211. package/dist/domains/knowledge/lib/useLeavingNodes.cjs.js.map +1 -0
  212. package/dist/domains/knowledge/lib/useLeavingNodes.d.ts +1 -0
  213. package/dist/domains/knowledge/lib/useLeavingNodes.es.js +62 -0
  214. package/dist/domains/knowledge/lib/useLeavingNodes.es.js.map +1 -0
  215. package/dist/domains/knowledge/lib/useStableWhile.cjs.js +15 -0
  216. package/dist/domains/knowledge/lib/useStableWhile.cjs.js.map +1 -0
  217. package/dist/domains/knowledge/lib/useStableWhile.d.ts +1 -0
  218. package/dist/domains/knowledge/lib/useStableWhile.es.js +14 -0
  219. package/dist/domains/knowledge/lib/useStableWhile.es.js.map +1 -0
  220. package/dist/domains/scores/components/trace-scores-list.cjs.js +2 -2
  221. package/dist/domains/scores/components/trace-scores-list.es.js +2 -2
  222. package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
  223. package/dist/domains/skills/skill-simple-form.es.js +1 -1
  224. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  225. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  226. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  227. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  228. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  229. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  230. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  231. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  232. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
  233. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
  234. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  235. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  236. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  237. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  238. package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
  239. package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
  240. package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
  241. package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
  242. package/dist/domains/traces/components/span-timeline-row.cjs.js +1 -1
  243. package/dist/domains/traces/components/span-timeline-row.es.js +1 -1
  244. package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
  245. package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
  246. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +8 -2
  247. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  248. package/dist/domains/traces/components/trace-data-panel-view.es.js +8 -2
  249. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  250. package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -1
  251. package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
  252. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
  253. package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
  254. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
  255. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
  256. package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
  257. package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
  258. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
  259. package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
  260. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  261. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  262. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
  263. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
  264. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  265. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  266. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
  267. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
  268. package/dist/lib/form/dynamic-form.cjs.js +2 -2
  269. package/dist/lib/form/dynamic-form.es.js +2 -2
  270. package/dist/lib/form/json-draft.cjs.js +1 -1
  271. package/dist/lib/form/json-draft.es.js +1 -1
  272. package/dist/lib/form/zod-provider.cjs.js +1 -1
  273. package/dist/lib/form/zod-provider.es.js +1 -1
  274. package/dist/{span-payload-primitives-B3RdahsC.js → span-payload-primitives-CKKIAVPJ.js} +4 -4
  275. package/dist/{span-payload-primitives-B3RdahsC.js.map → span-payload-primitives-CKKIAVPJ.js.map} +1 -1
  276. package/dist/{span-payload-primitives-_2d-pAOD.cjs → span-payload-primitives-D4tHWN2W.cjs} +4 -4
  277. package/dist/{span-payload-primitives-_2d-pAOD.cjs.map → span-payload-primitives-D4tHWN2W.cjs.map} +1 -1
  278. package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +32 -4
  279. package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +2 -0
  280. package/dist/src/domains/chat/tools/badges/knowledge-body-range.d.ts +12 -0
  281. package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +5 -2
  282. package/dist/src/domains/chat/tools/badges/mcp-input-request-badge.d.ts +18 -0
  283. package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +4 -1
  284. package/dist/src/domains/chat/tools/badges/use-deferred-input-request.d.ts +44 -0
  285. package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +6 -1
  286. package/dist/src/domains/chat/tools/mcp-input-request-tool.d.ts +18 -0
  287. package/dist/src/domains/chat/tools/mcp-input-request.d.ts +40 -0
  288. package/dist/src/domains/chat/tools/tool-card-kind.d.ts +4 -2
  289. package/dist/src/domains/chat/tools/tool-card.d.ts +1 -1
  290. package/dist/src/domains/knowledge/components/KnowledgePageCard.d.ts +23 -0
  291. package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +29 -0
  292. package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +27 -1
  293. package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +2 -1
  294. package/dist/src/domains/knowledge/lib/circleText.d.ts +2 -0
  295. package/dist/src/domains/knowledge/lib/fitViewport.d.ts +67 -0
  296. package/dist/src/domains/knowledge/lib/graphShape.d.ts +131 -0
  297. package/dist/src/domains/knowledge/lib/linkCountsText.d.ts +5 -0
  298. package/dist/src/domains/knowledge/lib/pageAddress.d.ts +5 -0
  299. package/dist/src/domains/knowledge/lib/pageGraph.d.ts +4 -4
  300. package/dist/src/domains/knowledge/lib/pageRefs.d.ts +15 -0
  301. package/dist/src/domains/knowledge/lib/pageTree.d.ts +2 -0
  302. package/dist/src/domains/knowledge/lib/remarkKnowledgeLinks.d.ts +13 -0
  303. package/dist/src/domains/knowledge/lib/tooltipSide.d.ts +40 -0
  304. package/dist/src/domains/knowledge/lib/useLeavingNodes.d.ts +14 -0
  305. package/dist/src/domains/knowledge/lib/useStableWhile.d.ts +5 -0
  306. package/dist/src/domains/knowledge/pageTypes.d.ts +6 -1
  307. package/dist/src/ds/components/MarkdownRenderer/markdown-renderer.d.ts +8 -1
  308. package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +6 -0
  309. package/dist/style.css +69 -2
  310. package/dist/{tool-approval-1qiB4hhG.cjs → tool-approval-CJvPDL7D.cjs} +4 -4
  311. package/dist/{tool-approval-1qiB4hhG.cjs.map → tool-approval-CJvPDL7D.cjs.map} +1 -1
  312. package/dist/{tool-approval-B6MFcaKV.js → tool-approval-DyN11vFA.js} +4 -4
  313. package/dist/{tool-approval-B6MFcaKV.js.map → tool-approval-DyN11vFA.js.map} +1 -1
  314. package/dist/{tool-call-Bu66PkD-.cjs → tool-call-DBn14X-3.cjs} +9 -3
  315. package/dist/{tool-call-Bu66PkD-.cjs.map → tool-call-DBn14X-3.cjs.map} +1 -1
  316. package/dist/{tool-call-Ch9-jjXU.js → tool-call-Dsj43lvJ.js} +9 -3
  317. package/dist/{tool-call-Ch9-jjXU.js.map → tool-call-Dsj43lvJ.js.map} +1 -1
  318. package/dist/{tool-card-DrqPZfPQ.cjs → tool-card-rxhTDpk_.cjs} +164 -126
  319. package/dist/tool-card-rxhTDpk_.cjs.map +1 -0
  320. package/dist/{tool-card-sO6P2Qj4.js → tool-card-toDgoZzJ.js} +165 -127
  321. package/dist/tool-card-toDgoZzJ.js.map +1 -0
  322. package/dist/{tool-presentation-DvCsb_kz.js → tool-presentation-CvibOP1J.js} +6 -1
  323. package/dist/tool-presentation-CvibOP1J.js.map +1 -0
  324. package/dist/{tool-presentation-CQlDEwgS.cjs → tool-presentation-D6nzVruN.cjs} +6 -1
  325. package/dist/tool-presentation-D6nzVruN.cjs.map +1 -0
  326. package/package.json +10 -10
  327. package/dist/MarkdownRenderer-2GOXQJEv.js.map +0 -1
  328. package/dist/MarkdownRenderer-CB8Z_CHc.cjs.map +0 -1
  329. package/dist/domains/knowledge/lib/pageLayout.cjs.js +0 -49
  330. package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +0 -1
  331. package/dist/domains/knowledge/lib/pageLayout.d.ts +0 -1
  332. package/dist/domains/knowledge/lib/pageLayout.es.js +0 -48
  333. package/dist/domains/knowledge/lib/pageLayout.es.js.map +0 -1
  334. package/dist/src/domains/knowledge/lib/pageLayout.d.ts +0 -24
  335. package/dist/tool-card-DrqPZfPQ.cjs.map +0 -1
  336. package/dist/tool-card-sO6P2Qj4.js.map +0 -1
  337. package/dist/tool-presentation-CQlDEwgS.cjs.map +0 -1
  338. package/dist/tool-presentation-DvCsb_kz.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"message-text.cjs.js","names":["useState","messageTextKind","TripwireNotice","Notice","errorMessage","Icon","DisclosureChevron","Badge","CheckCircleIcon","MarkdownRenderer"],"sources":["../../../../../src/domains/chat/messages/renderers/message-text.tsx"],"sourcesContent":["import { CheckCircleIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { MessageMetadata } from '../message-metadata';\nimport { TripwireNotice } from '../tripwire-notice';\nimport { errorMessage, messageTextKind } from './message-text-kind';\nimport { Badge } from '@/ds/components/Badge';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport type { MarkdownExternalLinkTarget } from '@/ds/components/MarkdownRenderer';\nimport { Notice } from '@/ds/components/Notice';\nimport { Icon } from '@/ds/icons/Icon';\n\nexport interface MessageTextProps {\n text: string;\n metadata: MessageMetadata | undefined;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n streaming?: boolean;\n tableActions?: boolean;\n}\n\n/**\n * Part-level text renderer. Markdown for normal text, plus the legacy\n * error/completion handling previously in `ErrorAwareText` (which read part\n * metadata).\n */\nexport const MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }: MessageTextProps) => {\n const [collapsedCompletionCheck, setCollapsedCompletionCheck] = useState(false);\n\n switch (messageTextKind(text, metadata)) {\n case 'tripwire':\n return <TripwireNotice reason={text} tripwire={metadata?.tripwire} />;\n\n case 'warning':\n return (\n <Notice variant=\"warning\" title=\"Warning\">\n <Notice.Message>{text}</Notice.Message>\n </Notice>\n );\n\n case 'error':\n return (\n <Notice variant=\"destructive\" title=\"Error\">\n <Notice.Message>{errorMessage(text)}</Notice.Message>\n </Notice>\n );\n\n case 'completion':\n return (\n <div className=\"mb-2 space-y-2\">\n <button\n onClick={() => setCollapsedCompletionCheck(s => !s)}\n aria-expanded={!collapsedCompletionCheck}\n className=\"flex items-center gap-2\"\n >\n <Icon>\n <DisclosureChevron direction=\"right\" />\n </Icon>\n <Badge variant=\"blue\" icon={<CheckCircleIcon />}>\n {collapsedCompletionCheck ? 'Show' : 'Hide'} completion check\n </Badge>\n </button>\n {!collapsedCompletionCheck && (\n <Notice variant=\"info\" title={metadata?.completionResult?.passed ? 'Complete' : 'Not Complete'}>\n <MarkdownRenderer externalLinkTarget={externalLinkTarget}>{text}</MarkdownRenderer>\n </Notice>\n )}\n </div>\n );\n\n default:\n return (\n <MarkdownRenderer\n externalLinkTarget={externalLinkTarget}\n streaming={Boolean(streaming)}\n tableActions={tableActions}\n >\n {text}\n </MarkdownRenderer>\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAyBA,IAAa,eAAe,EAAE,MAAM,UAAU,oBAAoB,WAAW,mBAAqC;CAChH,MAAM,CAAC,0BAA0B,gCAAA,GAA+BA,MAAAA,SAAAA,CAAS,KAAK;CAE9E,QAAQC,0DAAAA,gBAAgB,MAAM,QAAQ,GAAtC;EACE,KAAK,YACH,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,8CAAAA,gBAAD;GAAgB,QAAQ;GAAM,UAAU,UAAU;EAAW,CAAA;EAEtE,KAAK,WACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;GAAQ,SAAQ;GAAU,OAAM;GAC9B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,OAAO,SAAR,EAAA,UAAiB,KAAqB,CAAA;EAChC,CAAA;EAGZ,KAAK,SACH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,QAAD;GAAQ,SAAQ;GAAc,OAAM;GAClC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,OAAO,SAAR,EAAA,UAAiBC,0DAAAA,aAAa,IAAI,EAAkB,CAAA;EAC9C,CAAA;EAGZ,KAAK,cACH,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,UAAD;IACE,eAAe,6BAA4B,MAAK,CAAC,CAAC;IAClD,iBAAe,CAAC;IAChB,WAAU;IAHZ,UAAA,CAKE,iBAAA,GAAA,kBAAA,IAAA,CAACC,mBAAAA,MAAD,EAAA,UACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,qCAAAA,mBAAD,EAAmB,WAAU,QAAS,CAAA,EAClC,CAAA,GACN,iBAAA,GAAA,kBAAA,KAAA,CAACC,cAAAA,OAAD;KAAO,SAAQ;KAAO,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,iBAAD,CAAkB,CAAA;KAA9C,UAAA,CACG,2BAA2B,SAAS,QAAO,mBACvC;IACD,CAAA,CAAA;GACP,CAAA,GAAA,CAAC,4BACA,iBAAA,GAAA,kBAAA,IAAA,CAACL,eAAAA,QAAD;IAAQ,SAAQ;IAAO,OAAO,UAAU,kBAAkB,SAAS,aAAa;IAC9E,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACM,yBAAAA,kBAAD;KAAsC;KAAqB,UAAA;IAAuB,CAAA;GAC5E,CAAA,CAEP;;EAGT,SACE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,yBAAAA,kBAAD;GACsB;GACpB,WAAW,QAAQ,SAAS;GACd;GAEb,UAAA;EACe,CAAA;CAExB;AACF"}
1
+ {"version":3,"file":"message-text.cjs.js","names":["useKnowledgeLinksContext","_Fragment","KnowledgePageLink","KNOWLEDGE_REF_PROPERTY","remarkKnowledgeChatLinks","useState","useHasKnowledgeLinks","messageTextKind","TripwireNotice","Notice","errorMessage","Icon","DisclosureChevron","Badge","CheckCircleIcon","MarkdownRenderer"],"sources":["../../../../../src/domains/chat/messages/renderers/message-text.tsx"],"sourcesContent":["import { CheckCircleIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport type { Components, ExtraProps } from 'react-markdown';\nimport { KnowledgePageLink, useHasKnowledgeLinks, useKnowledgeLinksContext } from '../../knowledge/knowledge-links';\nimport type { UseKnowledgePagePreview } from '../../knowledge/knowledge-links';\nimport type { MessageMetadata } from '../message-metadata';\nimport { TripwireNotice } from '../tripwire-notice';\nimport { errorMessage, messageTextKind } from './message-text-kind';\nimport {\n KNOWLEDGE_BARE_PROPERTY,\n KNOWLEDGE_REF_PROPERTY,\n remarkKnowledgeChatLinks,\n} from '@/domains/knowledge/lib/remarkKnowledgeLinks';\nimport { Badge } from '@/ds/components/Badge';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport type { MarkdownExternalLinkTarget } from '@/ds/components/MarkdownRenderer';\nimport { Notice } from '@/ds/components/Notice';\nimport { Icon } from '@/ds/icons/Icon';\n\nconst REF_LINK_CLASS = 'text-foreground underline underline-offset-2';\n\n/** Text like `localhost:3000#top` looks like an address; it links only if the host finds the page. */\nfunction BareKnowledgeRef({ pageRef }: { pageRef: string }) {\n const { usePagePreview } = useKnowledgeLinksContext();\n return usePagePreview ? <ResolvedBareRef pageRef={pageRef} usePagePreview={usePagePreview} /> : <>{pageRef}</>;\n}\n\nfunction ResolvedBareRef({ pageRef, usePagePreview }: { pageRef: string; usePagePreview: UseKnowledgePagePreview }) {\n const card = usePagePreview({ pageRef });\n return card ? (\n <KnowledgePageLink pageRef={pageRef} className={REF_LINK_CLASS}>\n {pageRef}\n </KnowledgePageLink>\n ) : (\n <>{pageRef}</>\n );\n}\n\nfunction ChatKnowledgeRef({ node, ...props }: ComponentProps<'span'> & ExtraProps) {\n const raw = node?.properties[KNOWLEDGE_REF_PROPERTY];\n if (typeof raw !== 'string') return <span {...props} />;\n const ref = raw.trim();\n if (node?.properties[KNOWLEDGE_BARE_PROPERTY] === 'bare') return <BareKnowledgeRef pageRef={ref} />;\n return (\n <KnowledgePageLink pageRef={ref} className={REF_LINK_CLASS}>\n {ref}\n </KnowledgePageLink>\n );\n}\n\nconst CHAT_REMARK_PLUGINS = [remarkKnowledgeChatLinks];\nconst CHAT_COMPONENTS: Components = { span: ChatKnowledgeRef };\n\nexport interface MessageTextProps {\n text: string;\n metadata: MessageMetadata | undefined;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n streaming?: boolean;\n tableActions?: boolean;\n}\n\n/**\n * Part-level text renderer. Markdown for normal text, plus the legacy\n * error/completion handling previously in `ErrorAwareText` (which read part\n * metadata).\n */\nexport const MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }: MessageTextProps) => {\n const [collapsedCompletionCheck, setCollapsedCompletionCheck] = useState(false);\n const knowledgeLinks = useHasKnowledgeLinks();\n\n switch (messageTextKind(text, metadata)) {\n case 'tripwire':\n return <TripwireNotice reason={text} tripwire={metadata?.tripwire} />;\n\n case 'warning':\n return (\n <Notice variant=\"warning\" title=\"Warning\">\n <Notice.Message>{text}</Notice.Message>\n </Notice>\n );\n\n case 'error':\n return (\n <Notice variant=\"destructive\" title=\"Error\">\n <Notice.Message>{errorMessage(text)}</Notice.Message>\n </Notice>\n );\n\n case 'completion':\n return (\n <div className=\"mb-2 space-y-2\">\n <button\n onClick={() => setCollapsedCompletionCheck(s => !s)}\n aria-expanded={!collapsedCompletionCheck}\n className=\"flex items-center gap-2\"\n >\n <Icon>\n <DisclosureChevron direction=\"right\" />\n </Icon>\n <Badge variant=\"blue\" icon={<CheckCircleIcon />}>\n {collapsedCompletionCheck ? 'Show' : 'Hide'} completion check\n </Badge>\n </button>\n {!collapsedCompletionCheck && (\n <Notice variant=\"info\" title={metadata?.completionResult?.passed ? 'Complete' : 'Not Complete'}>\n <MarkdownRenderer externalLinkTarget={externalLinkTarget}>{text}</MarkdownRenderer>\n </Notice>\n )}\n </div>\n );\n\n default:\n return (\n <MarkdownRenderer\n externalLinkTarget={externalLinkTarget}\n streaming={Boolean(streaming)}\n tableActions={tableActions}\n remarkPlugins={knowledgeLinks ? CHAT_REMARK_PLUGINS : undefined}\n components={knowledgeLinks ? CHAT_COMPONENTS : undefined}\n >\n {text}\n </MarkdownRenderer>\n );\n }\n};\n"],"mappings":"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"}
@@ -1,14 +1,45 @@
1
1
  import { Icon } from "../../../../icons/Icon.es.js";
2
2
  import { DisclosureChevron } from "../../../../components/DisclosureChevron.es.js";
3
3
  import { t as Badge } from "../../../../Badge-aVu5iGAF.js";
4
- import { t as MarkdownRenderer } from "../../../../MarkdownRenderer-2GOXQJEv.js";
4
+ import { t as MarkdownRenderer } from "../../../../MarkdownRenderer-CI30RqdB.js";
5
+ import { KnowledgePageLink, useHasKnowledgeLinks, useKnowledgeLinksContext } from "../../knowledge/knowledge-links.es.js";
5
6
  import { t as Notice } from "../../../../Notice-C-8oOZZF.js";
6
7
  import { TripwireNotice } from "../tripwire-notice.es.js";
7
8
  import { errorMessage, messageTextKind } from "./message-text-kind.es.js";
9
+ import { KNOWLEDGE_REF_PROPERTY, remarkKnowledgeChatLinks } from "../../../knowledge/lib/remarkKnowledgeLinks.es.js";
8
10
  import { useState } from "react";
9
- import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
10
12
  import { CheckCircleIcon } from "lucide-react";
11
13
  // src/domains/chat/messages/renderers/message-text.tsx
14
+ var REF_LINK_CLASS = "text-foreground underline underline-offset-2";
15
+ /** Text like `localhost:3000#top` looks like an address; it links only if the host finds the page. */
16
+ function BareKnowledgeRef({ pageRef }) {
17
+ const { usePagePreview } = useKnowledgeLinksContext();
18
+ return usePagePreview ? /* @__PURE__ */ jsx(ResolvedBareRef, {
19
+ pageRef,
20
+ usePagePreview
21
+ }) : /* @__PURE__ */ jsx(Fragment$1, { children: pageRef });
22
+ }
23
+ function ResolvedBareRef({ pageRef, usePagePreview }) {
24
+ return usePagePreview({ pageRef }) ? /* @__PURE__ */ jsx(KnowledgePageLink, {
25
+ pageRef,
26
+ className: REF_LINK_CLASS,
27
+ children: pageRef
28
+ }) : /* @__PURE__ */ jsx(Fragment$1, { children: pageRef });
29
+ }
30
+ function ChatKnowledgeRef({ node, ...props }) {
31
+ const raw = node?.properties[KNOWLEDGE_REF_PROPERTY];
32
+ if (typeof raw !== "string") return /* @__PURE__ */ jsx("span", { ...props });
33
+ const ref = raw.trim();
34
+ if (node?.properties["dataKnowledgeBare"] === "bare") return /* @__PURE__ */ jsx(BareKnowledgeRef, { pageRef: ref });
35
+ return /* @__PURE__ */ jsx(KnowledgePageLink, {
36
+ pageRef: ref,
37
+ className: REF_LINK_CLASS,
38
+ children: ref
39
+ });
40
+ }
41
+ var CHAT_REMARK_PLUGINS = [remarkKnowledgeChatLinks];
42
+ var CHAT_COMPONENTS = { span: ChatKnowledgeRef };
12
43
  /**
13
44
  * Part-level text renderer. Markdown for normal text, plus the legacy
14
45
  * error/completion handling previously in `ErrorAwareText` (which read part
@@ -16,6 +47,7 @@ import { CheckCircleIcon } from "lucide-react";
16
47
  */
17
48
  var MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }) => {
18
49
  const [collapsedCompletionCheck, setCollapsedCompletionCheck] = useState(false);
50
+ const knowledgeLinks = useHasKnowledgeLinks();
19
51
  switch (messageTextKind(text, metadata)) {
20
52
  case "tripwire": return /* @__PURE__ */ jsx(TripwireNotice, {
21
53
  reason: text,
@@ -55,6 +87,8 @@ var MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions
55
87
  externalLinkTarget,
56
88
  streaming: Boolean(streaming),
57
89
  tableActions,
90
+ remarkPlugins: knowledgeLinks ? CHAT_REMARK_PLUGINS : void 0,
91
+ components: knowledgeLinks ? CHAT_COMPONENTS : void 0,
58
92
  children: text
59
93
  });
60
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"message-text.es.js","names":[],"sources":["../../../../../src/domains/chat/messages/renderers/message-text.tsx"],"sourcesContent":["import { CheckCircleIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { MessageMetadata } from '../message-metadata';\nimport { TripwireNotice } from '../tripwire-notice';\nimport { errorMessage, messageTextKind } from './message-text-kind';\nimport { Badge } from '@/ds/components/Badge';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport type { MarkdownExternalLinkTarget } from '@/ds/components/MarkdownRenderer';\nimport { Notice } from '@/ds/components/Notice';\nimport { Icon } from '@/ds/icons/Icon';\n\nexport interface MessageTextProps {\n text: string;\n metadata: MessageMetadata | undefined;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n streaming?: boolean;\n tableActions?: boolean;\n}\n\n/**\n * Part-level text renderer. Markdown for normal text, plus the legacy\n * error/completion handling previously in `ErrorAwareText` (which read part\n * metadata).\n */\nexport const MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }: MessageTextProps) => {\n const [collapsedCompletionCheck, setCollapsedCompletionCheck] = useState(false);\n\n switch (messageTextKind(text, metadata)) {\n case 'tripwire':\n return <TripwireNotice reason={text} tripwire={metadata?.tripwire} />;\n\n case 'warning':\n return (\n <Notice variant=\"warning\" title=\"Warning\">\n <Notice.Message>{text}</Notice.Message>\n </Notice>\n );\n\n case 'error':\n return (\n <Notice variant=\"destructive\" title=\"Error\">\n <Notice.Message>{errorMessage(text)}</Notice.Message>\n </Notice>\n );\n\n case 'completion':\n return (\n <div className=\"mb-2 space-y-2\">\n <button\n onClick={() => setCollapsedCompletionCheck(s => !s)}\n aria-expanded={!collapsedCompletionCheck}\n className=\"flex items-center gap-2\"\n >\n <Icon>\n <DisclosureChevron direction=\"right\" />\n </Icon>\n <Badge variant=\"blue\" icon={<CheckCircleIcon />}>\n {collapsedCompletionCheck ? 'Show' : 'Hide'} completion check\n </Badge>\n </button>\n {!collapsedCompletionCheck && (\n <Notice variant=\"info\" title={metadata?.completionResult?.passed ? 'Complete' : 'Not Complete'}>\n <MarkdownRenderer externalLinkTarget={externalLinkTarget}>{text}</MarkdownRenderer>\n </Notice>\n )}\n </div>\n );\n\n default:\n return (\n <MarkdownRenderer\n externalLinkTarget={externalLinkTarget}\n streaming={Boolean(streaming)}\n tableActions={tableActions}\n >\n {text}\n </MarkdownRenderer>\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAyBA,IAAa,eAAe,EAAE,MAAM,UAAU,oBAAoB,WAAW,mBAAqC;CAChH,MAAM,CAAC,0BAA0B,+BAA+B,SAAS,KAAK;CAE9E,QAAQ,gBAAgB,MAAM,QAAQ,GAAtC;EACE,KAAK,YACH,OAAO,oBAAC,gBAAD;GAAgB,QAAQ;GAAM,UAAU,UAAU;EAAW,CAAA;EAEtE,KAAK,WACH,OACE,oBAAC,QAAD;GAAQ,SAAQ;GAAU,OAAM;GAC9B,UAAA,oBAAC,OAAO,SAAR,EAAA,UAAiB,KAAqB,CAAA;EAChC,CAAA;EAGZ,KAAK,SACH,OACE,oBAAC,QAAD;GAAQ,SAAQ;GAAc,OAAM;GAClC,UAAA,oBAAC,OAAO,SAAR,EAAA,UAAiB,aAAa,IAAI,EAAkB,CAAA;EAC9C,CAAA;EAGZ,KAAK,cACH,OACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,qBAAC,UAAD;IACE,eAAe,6BAA4B,MAAK,CAAC,CAAC;IAClD,iBAAe,CAAC;IAChB,WAAU;IAHZ,UAAA,CAKE,oBAAC,MAAD,EAAA,UACE,oBAAC,mBAAD,EAAmB,WAAU,QAAS,CAAA,EAClC,CAAA,GACN,qBAAC,OAAD;KAAO,SAAQ;KAAO,MAAM,oBAAC,iBAAD,CAAkB,CAAA;KAA9C,UAAA,CACG,2BAA2B,SAAS,QAAO,mBACvC;IACD,CAAA,CAAA;GACP,CAAA,GAAA,CAAC,4BACA,oBAAC,QAAD;IAAQ,SAAQ;IAAO,OAAO,UAAU,kBAAkB,SAAS,aAAa;IAC9E,UAAA,oBAAC,kBAAD;KAAsC;KAAqB,UAAA;IAAuB,CAAA;GAC5E,CAAA,CAEP;;EAGT,SACE,OACE,oBAAC,kBAAD;GACsB;GACpB,WAAW,QAAQ,SAAS;GACd;GAEb,UAAA;EACe,CAAA;CAExB;AACF"}
1
+ {"version":3,"file":"message-text.es.js","names":["_Fragment"],"sources":["../../../../../src/domains/chat/messages/renderers/message-text.tsx"],"sourcesContent":["import { CheckCircleIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport type { Components, ExtraProps } from 'react-markdown';\nimport { KnowledgePageLink, useHasKnowledgeLinks, useKnowledgeLinksContext } from '../../knowledge/knowledge-links';\nimport type { UseKnowledgePagePreview } from '../../knowledge/knowledge-links';\nimport type { MessageMetadata } from '../message-metadata';\nimport { TripwireNotice } from '../tripwire-notice';\nimport { errorMessage, messageTextKind } from './message-text-kind';\nimport {\n KNOWLEDGE_BARE_PROPERTY,\n KNOWLEDGE_REF_PROPERTY,\n remarkKnowledgeChatLinks,\n} from '@/domains/knowledge/lib/remarkKnowledgeLinks';\nimport { Badge } from '@/ds/components/Badge';\nimport { DisclosureChevron } from '@/ds/components/DisclosureChevron';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\nimport type { MarkdownExternalLinkTarget } from '@/ds/components/MarkdownRenderer';\nimport { Notice } from '@/ds/components/Notice';\nimport { Icon } from '@/ds/icons/Icon';\n\nconst REF_LINK_CLASS = 'text-foreground underline underline-offset-2';\n\n/** Text like `localhost:3000#top` looks like an address; it links only if the host finds the page. */\nfunction BareKnowledgeRef({ pageRef }: { pageRef: string }) {\n const { usePagePreview } = useKnowledgeLinksContext();\n return usePagePreview ? <ResolvedBareRef pageRef={pageRef} usePagePreview={usePagePreview} /> : <>{pageRef}</>;\n}\n\nfunction ResolvedBareRef({ pageRef, usePagePreview }: { pageRef: string; usePagePreview: UseKnowledgePagePreview }) {\n const card = usePagePreview({ pageRef });\n return card ? (\n <KnowledgePageLink pageRef={pageRef} className={REF_LINK_CLASS}>\n {pageRef}\n </KnowledgePageLink>\n ) : (\n <>{pageRef}</>\n );\n}\n\nfunction ChatKnowledgeRef({ node, ...props }: ComponentProps<'span'> & ExtraProps) {\n const raw = node?.properties[KNOWLEDGE_REF_PROPERTY];\n if (typeof raw !== 'string') return <span {...props} />;\n const ref = raw.trim();\n if (node?.properties[KNOWLEDGE_BARE_PROPERTY] === 'bare') return <BareKnowledgeRef pageRef={ref} />;\n return (\n <KnowledgePageLink pageRef={ref} className={REF_LINK_CLASS}>\n {ref}\n </KnowledgePageLink>\n );\n}\n\nconst CHAT_REMARK_PLUGINS = [remarkKnowledgeChatLinks];\nconst CHAT_COMPONENTS: Components = { span: ChatKnowledgeRef };\n\nexport interface MessageTextProps {\n text: string;\n metadata: MessageMetadata | undefined;\n externalLinkTarget?: MarkdownExternalLinkTarget;\n streaming?: boolean;\n tableActions?: boolean;\n}\n\n/**\n * Part-level text renderer. Markdown for normal text, plus the legacy\n * error/completion handling previously in `ErrorAwareText` (which read part\n * metadata).\n */\nexport const MessageText = ({ text, metadata, externalLinkTarget, streaming, tableActions }: MessageTextProps) => {\n const [collapsedCompletionCheck, setCollapsedCompletionCheck] = useState(false);\n const knowledgeLinks = useHasKnowledgeLinks();\n\n switch (messageTextKind(text, metadata)) {\n case 'tripwire':\n return <TripwireNotice reason={text} tripwire={metadata?.tripwire} />;\n\n case 'warning':\n return (\n <Notice variant=\"warning\" title=\"Warning\">\n <Notice.Message>{text}</Notice.Message>\n </Notice>\n );\n\n case 'error':\n return (\n <Notice variant=\"destructive\" title=\"Error\">\n <Notice.Message>{errorMessage(text)}</Notice.Message>\n </Notice>\n );\n\n case 'completion':\n return (\n <div className=\"mb-2 space-y-2\">\n <button\n onClick={() => setCollapsedCompletionCheck(s => !s)}\n aria-expanded={!collapsedCompletionCheck}\n className=\"flex items-center gap-2\"\n >\n <Icon>\n <DisclosureChevron direction=\"right\" />\n </Icon>\n <Badge variant=\"blue\" icon={<CheckCircleIcon />}>\n {collapsedCompletionCheck ? 'Show' : 'Hide'} completion check\n </Badge>\n </button>\n {!collapsedCompletionCheck && (\n <Notice variant=\"info\" title={metadata?.completionResult?.passed ? 'Complete' : 'Not Complete'}>\n <MarkdownRenderer externalLinkTarget={externalLinkTarget}>{text}</MarkdownRenderer>\n </Notice>\n )}\n </div>\n );\n\n default:\n return (\n <MarkdownRenderer\n externalLinkTarget={externalLinkTarget}\n streaming={Boolean(streaming)}\n tableActions={tableActions}\n remarkPlugins={knowledgeLinks ? CHAT_REMARK_PLUGINS : undefined}\n components={knowledgeLinks ? CHAT_COMPONENTS : undefined}\n >\n {text}\n </MarkdownRenderer>\n );\n }\n};\n"],"mappings":";;;;;;;;;;;;;AAqBA,IAAM,iBAAiB;;AAGvB,SAAS,iBAAiB,EAAE,WAAgC;CAC1D,MAAM,EAAE,mBAAmB,yBAAyB;CACpD,OAAO,iBAAiB,oBAAC,iBAAD;EAA0B;EAAyB;CAAiB,CAAA,IAAI,oBAAAA,YAAA,EAAA,UAAG,QAAU,CAAA;AAC/G;AAEA,SAAS,gBAAgB,EAAE,SAAS,kBAAgF;CAElH,OADa,eAAe,EAAE,QAAQ,CAC/B,IACL,oBAAC,mBAAD;EAA4B;EAAS,WAAW;EAC7C,UAAA;CACgB,CAAA,IAEnB,oBAAAA,YAAA,EAAA,UAAG,QAAU,CAAA;AAEjB;AAEA,SAAS,iBAAiB,EAAE,MAAM,GAAG,SAA8C;CACjF,MAAM,MAAM,MAAM,WAAW;CAC7B,IAAI,OAAO,QAAQ,UAAU,OAAO,oBAAC,QAAD,EAAM,GAAI,MAAQ,CAAA;CACtD,MAAM,MAAM,IAAI,KAAK;CACrB,IAAI,MAAM,WAAA,yBAAwC,QAAQ,OAAO,oBAAC,kBAAD,EAAkB,SAAS,IAAM,CAAA;CAClG,OACE,oBAAC,mBAAD;EAAmB,SAAS;EAAK,WAAW;EACzC,UAAA;CACgB,CAAA;AAEvB;AAEA,IAAM,sBAAsB,CAAC,wBAAwB;AACrD,IAAM,kBAA8B,EAAE,MAAM,iBAAiB;;;;;;AAe7D,IAAa,eAAe,EAAE,MAAM,UAAU,oBAAoB,WAAW,mBAAqC;CAChH,MAAM,CAAC,0BAA0B,+BAA+B,SAAS,KAAK;CAC9E,MAAM,iBAAiB,qBAAqB;CAE5C,QAAQ,gBAAgB,MAAM,QAAQ,GAAtC;EACE,KAAK,YACH,OAAO,oBAAC,gBAAD;GAAgB,QAAQ;GAAM,UAAU,UAAU;EAAW,CAAA;EAEtE,KAAK,WACH,OACE,oBAAC,QAAD;GAAQ,SAAQ;GAAU,OAAM;GAC9B,UAAA,oBAAC,OAAO,SAAR,EAAA,UAAiB,KAAqB,CAAA;EAChC,CAAA;EAGZ,KAAK,SACH,OACE,oBAAC,QAAD;GAAQ,SAAQ;GAAc,OAAM;GAClC,UAAA,oBAAC,OAAO,SAAR,EAAA,UAAiB,aAAa,IAAI,EAAkB,CAAA;EAC9C,CAAA;EAGZ,KAAK,cACH,OACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,qBAAC,UAAD;IACE,eAAe,6BAA4B,MAAK,CAAC,CAAC;IAClD,iBAAe,CAAC;IAChB,WAAU;IAHZ,UAAA,CAKE,oBAAC,MAAD,EAAA,UACE,oBAAC,mBAAD,EAAmB,WAAU,QAAS,CAAA,EAClC,CAAA,GACN,qBAAC,OAAD;KAAO,SAAQ;KAAO,MAAM,oBAAC,iBAAD,CAAkB,CAAA;KAA9C,UAAA,CACG,2BAA2B,SAAS,QAAO,mBACvC;IACD,CAAA,CAAA;GACP,CAAA,GAAA,CAAC,4BACA,oBAAC,QAAD;IAAQ,SAAQ;IAAO,OAAO,UAAU,kBAAkB,SAAS,aAAa;IAC9E,UAAA,oBAAC,kBAAD;KAAsC;KAAqB,UAAA;IAAuB,CAAA;GAC5E,CAAA,CAEP;;EAGT,SACE,OACE,oBAAC,kBAAD;GACsB;GACpB,WAAW,QAAQ,SAAS;GACd;GACd,eAAe,iBAAiB,sBAAsB,KAAA;GACtD,YAAY,iBAAiB,kBAAkB,KAAA;GAE9C,UAAA;EACe,CAAA;CAExB;AACF"}
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_activity = require("../../../../activity-DyB5H3gF.cjs");
2
+ const require_activity = require("../../../../activity-CcQZeDYi.cjs");
3
3
  const require_domains_chat_messages_reasoning_content = require("../reasoning-content.cjs.js");
4
4
  let react_jsx_runtime = require("react/jsx-runtime");
5
5
  // src/domains/chat/messages/renderers/reasoning-part-renderer.tsx
@@ -1,4 +1,4 @@
1
- import { n as ReasoningActivity } from "../../../../activity-rJ1NQl_2.js";
1
+ import { n as ReasoningActivity } from "../../../../activity-C8Ql81WM.js";
2
2
  import { getReasoningContent } from "../reasoning-content.es.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  // src/domains/chat/messages/renderers/reasoning-part-renderer.tsx
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_activity = require("../../../activity-DyB5H3gF.cjs");
2
+ const require_activity = require("../../../activity-CcQZeDYi.cjs");
3
3
  const require_domains_chat_messages_skill_activation = require("./skill-activation.cjs.js");
4
4
  const require_domains_chat_messages_skill_message = require("./skill-message.cjs.js");
5
5
  const require_domains_chat_messages_signal_data = require("./signal-data.cjs.js");
@@ -1,4 +1,4 @@
1
- import { t as SignalActivity } from "../../../activity-rJ1NQl_2.js";
1
+ import { t as SignalActivity } from "../../../activity-C8Ql81WM.js";
2
2
  import { parseSkillBody } from "./skill-activation.es.js";
3
3
  import { SkillMessage } from "./skill-message.es.js";
4
4
  import { formatSignalValue, isRecord, isSignalData, signalContentsToText } from "./signal-data.es.js";
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_scroll_area = require("../../../scroll-area-BP4gPZ4G.cjs");
3
3
  const require_AgentIndicator = require("../../../AgentIndicator-to30W73z.cjs");
4
- const require_activity = require("../../../activity-DyB5H3gF.cjs");
5
- const require_MarkdownRenderer = require("../../../MarkdownRenderer-CB8Z_CHc.cjs");
4
+ const require_activity = require("../../../activity-CcQZeDYi.cjs");
5
+ const require_MarkdownRenderer = require("../../../MarkdownRenderer-y65WGBhC.cjs");
6
6
  let react_jsx_runtime = require("react/jsx-runtime");
7
7
  // src/domains/chat/messages/skill-message.tsx
8
8
  var SkillGlyph = require_AgentIndicator.agentGlyph("skill");
@@ -1,7 +1,7 @@
1
1
  import { t as ScrollArea } from "../../../scroll-area-C226l0v0.js";
2
2
  import { t as agentGlyph } from "../../../AgentIndicator-Bs2S8AWJ.js";
3
- import { m as ActivityItem, t as SignalActivity } from "../../../activity-rJ1NQl_2.js";
4
- import { t as MarkdownRenderer } from "../../../MarkdownRenderer-2GOXQJEv.js";
3
+ import { m as ActivityItem, t as SignalActivity } from "../../../activity-C8Ql81WM.js";
4
+ import { t as MarkdownRenderer } from "../../../MarkdownRenderer-CI30RqdB.js";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  // src/domains/chat/messages/skill-message.tsx
7
7
  var SkillGlyph = agentGlyph("skill");
@@ -1,5 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_activity = require("../../../activity-DyB5H3gF.cjs");
2
+ const require_activity = require("../../../activity-CcQZeDYi.cjs");
3
3
  const require_domains_chat_messages_system_reminder_utils = require("./system-reminder-utils.cjs.js");
4
4
  let react = require("react");
5
5
  let react_jsx_runtime = require("react/jsx-runtime");
@@ -1,4 +1,4 @@
1
- import { t as SignalActivity } from "../../../activity-rJ1NQl_2.js";
1
+ import { t as SignalActivity } from "../../../activity-C8Ql81WM.js";
2
2
  import { parseSystemReminder } from "./system-reminder-utils.es.js";
3
3
  import { useMemo } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tool_card = require("../../../../tool-card-DrqPZfPQ.cjs");
2
+ const require_tool_card = require("../../../../tool-card-rxhTDpk_.cjs");
3
3
  exports.AgentBadgeWrapper = require_tool_card.AgentBadgeWrapper;
@@ -1 +1 @@
1
- export { r as AgentBadgeWrapper } from "../../../../tool-card-sO6P2Qj4.js";
1
+ export { r as AgentBadgeWrapper } from "../../../../tool-card-toDgoZzJ.js";
@@ -1,3 +1,3 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_tool_card = require("../../../../tool-card-DrqPZfPQ.cjs");
2
+ const require_tool_card = require("../../../../tool-card-rxhTDpk_.cjs");
3
3
  exports.AgentBadge = require_tool_card.AgentBadge;
@@ -1 +1 @@
1
- export { i as AgentBadge } from "../../../../tool-card-sO6P2Qj4.js";
1
+ export { i as AgentBadge } from "../../../../tool-card-toDgoZzJ.js";
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Txt = require("../../../../Txt-BnoSqxKE.cjs");
3
- const require_tool_call = require("../../../../tool-call-Bu66PkD-.cjs");
4
- const require_tool_presentation = require("../../../../tool-presentation-CQlDEwgS.cjs");
3
+ const require_tool_call = require("../../../../tool-call-DBn14X-3.cjs");
4
+ const require_tool_presentation = require("../../../../tool-presentation-D6nzVruN.cjs");
5
5
  const require_domains_chat_tools_badges_awaits_tool_approval = require("./awaits-tool-approval.cjs.js");
6
6
  const require_domains_chat_tools_badges_tool_approval_badge = require("./tool-approval-badge.cjs.js");
7
7
  const require_domains_chat_tools_badges_workspace_data_parts = require("./workspace-data-parts.cjs.js");
@@ -1,6 +1,6 @@
1
1
  import { t as Txt } from "../../../../Txt-BM6TVV_c.js";
2
- import { a as ToolCallArguments, r as ToolCallOutput } from "../../../../tool-call-Ch9-jjXU.js";
3
- import { r as presentTool } from "../../../../tool-presentation-DvCsb_kz.js";
2
+ import { a as ToolCallArguments, r as ToolCallOutput } from "../../../../tool-call-Dsj43lvJ.js";
3
+ import { r as presentTool } from "../../../../tool-presentation-CvibOP1J.js";
4
4
  import { awaitsToolApproval } from "./awaits-tool-approval.es.js";
5
5
  import { ToolApprovalBadge } from "./tool-approval-badge.es.js";
6
6
  import { parseToolArgs, workspaceMetadata } from "./workspace-data-parts.es.js";
@@ -0,0 +1,80 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_domains_chat_messages_signal_data = require("../../messages/signal-data.cjs.js");
3
+ // src/domains/chat/tools/badges/knowledge-body-range.ts
4
+ var isPosition = (value) => require_domains_chat_messages_signal_data.isRecord(value) && typeof value.line === "number";
5
+ var isRange = (value) => require_domains_chat_messages_signal_data.isRecord(value) && isPosition(value.start) && isPosition(value.end);
6
+ var at = ({ line, col }) => col === void 0 ? `${line}` : `${line}:${col}`;
7
+ /** `lines 12–14`, `line 12`, or with columns `line 2:5–9`, `lines 5:200–9:40`. */
8
+ function linesText(range) {
9
+ const { start, end } = range;
10
+ const plural = start.line === end.line ? "line" : "lines";
11
+ if (start.col === void 0 && end.col === void 0) return start.line === end.line ? `line ${start.line}` : `lines ${start.line}–${end.line}`;
12
+ if (start.line === end.line && end.col !== void 0) return `line ${at(start)}–${end.col}`;
13
+ return `${plural} ${at(start)}–${at(end)}`;
14
+ }
15
+ var quoted = (terms) => terms.map((term) => `"${term}"`).join(", ");
16
+ /**
17
+ * Which part of the body a `knowledge_read` result holds, from the call's arguments and its page. A whole
18
+ * body has no row tag; undefined when the result is not a body read at all (a notes-only read, a scope listing).
19
+ */
20
+ function readExtent(output, args) {
21
+ const page = output.page;
22
+ if (!require_domains_chat_messages_signal_data.isRecord(page)) return void 0;
23
+ const count = typeof page.lineCount === "number" ? page.lineCount : void 0;
24
+ const of = count === void 0 ? "" : ` of ${count}`;
25
+ if (Array.isArray(page.matches)) {
26
+ const terms = Array.isArray(args.match) ? args.match.filter((t) => typeof t === "string") : [];
27
+ const context = typeof args.context === "number" ? args.context : void 0;
28
+ const ranges = page.matches.filter(require_domains_chat_messages_signal_data.isRecord).map((match) => match.range).filter(isRange);
29
+ if (!ranges.length) return {
30
+ row: `no matches ${quoted(terms)}`,
31
+ summary: `No line contains ${quoted(terms)} (${count ?? 0} lines)`
32
+ };
33
+ const capped = Array.isArray(output.more) && output.more.some((note) => typeof note === "string" && note.startsWith("match: stopped"));
34
+ const spans = ranges.map((range) => linesText(range).replace(/^lines? /, "")).join(", ");
35
+ return {
36
+ row: `matches ${quoted(terms)}${context ? ` ±${context}` : ""}`,
37
+ summary: `${capped ? "First " : ""}${ranges.length} match${ranges.length === 1 ? "" : "es"} for ${quoted(terms)}${capped ? ", more follow" : ""}${context ? ` with ${context} lines of context` : ""}: lines ${spans}${of}`
38
+ };
39
+ }
40
+ if (isRange(page.range) && typeof page.lines === "string") {
41
+ const tag = `${linesText(page.range)}${of}`;
42
+ const section = typeof args.section === "string" && args.section ? `section "${args.section}" · ` : "";
43
+ const next = page.range.end.line + 1;
44
+ const tail = count === void 0 ? "" : page.range.end.line >= count ? " · end of page" : ` · continues at line ${next}`;
45
+ return {
46
+ row: `${section}${tag}`,
47
+ summary: `${tag[0]?.toUpperCase()}${tag.slice(1)}${tail}`
48
+ };
49
+ }
50
+ if (typeof page.lines === "string" && count !== void 0) return {
51
+ row: `overview of ${count} lines`,
52
+ summary: `Overview: every heading and the first lines under it, of ${count} lines`
53
+ };
54
+ if (Array.isArray(page.outline)) return {
55
+ row: "outline",
56
+ summary: "Outline: the page headings with their line numbers"
57
+ };
58
+ if (args.notes === true || args.mentionedIn === true) return void 0;
59
+ if (typeof page.body !== "string" || !page.body) return {
60
+ row: "empty page",
61
+ summary: "The page has no body"
62
+ };
63
+ return {
64
+ row: void 0,
65
+ summary: "Whole page"
66
+ };
67
+ }
68
+ /** Which lines a `knowledge_page` write replaced, from its `range` argument; undefined for a whole-body write. */
69
+ function writeExtent(args) {
70
+ if (!isRange(args.range)) return void 0;
71
+ const text = linesText(args.range);
72
+ return {
73
+ row: text,
74
+ summary: `${typeof args.body === "string" && args.body === "" ? "Removed" : "Replaced"} ${text}`
75
+ };
76
+ }
77
+ exports.readExtent = readExtent;
78
+ exports.writeExtent = writeExtent;
79
+
80
+ //# sourceMappingURL=knowledge-body-range.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-body-range.cjs.js","names":["isRecord"],"sources":["../../../../../src/domains/chat/tools/badges/knowledge-body-range.ts"],"sourcesContent":["import { isRecord } from '../../messages/signal-data';\n\ninterface Position {\n line: number;\n col?: number;\n}\ninterface LineRange {\n start: Position;\n end: Position;\n}\n\n/** What part of a page a Knowledge call read or wrote: a short tag for the collapsed row, a sentence for the body. */\nexport interface BodyExtent {\n row: string | undefined;\n summary: string;\n}\n\nconst isPosition = (value: unknown): value is Position => isRecord(value) && typeof value.line === 'number';\nconst isRange = (value: unknown): value is LineRange =>\n isRecord(value) && isPosition(value.start) && isPosition(value.end);\n\nconst at = ({ line, col }: Position) => (col === undefined ? `${line}` : `${line}:${col}`);\n\n/** `lines 12–14`, `line 12`, or with columns `line 2:5–9`, `lines 5:200–9:40`. */\nfunction linesText(range: LineRange): string {\n const { start, end } = range;\n const plural = start.line === end.line ? 'line' : 'lines';\n if (start.col === undefined && end.col === undefined) {\n return start.line === end.line ? `line ${start.line}` : `lines ${start.line}–${end.line}`;\n }\n if (start.line === end.line && end.col !== undefined) return `line ${at(start)}–${end.col}`;\n return `${plural} ${at(start)}–${at(end)}`;\n}\n\nconst quoted = (terms: string[]) => terms.map(term => `\"${term}\"`).join(', ');\n\n/**\n * Which part of the body a `knowledge_read` result holds, from the call's arguments and its page. A whole\n * body has no row tag; undefined when the result is not a body read at all (a notes-only read, a scope listing).\n */\nexport function readExtent(output: Record<string, unknown>, args: Record<string, unknown>): BodyExtent | undefined {\n const page = output.page;\n if (!isRecord(page)) return undefined;\n const count = typeof page.lineCount === 'number' ? page.lineCount : undefined;\n const of = count === undefined ? '' : ` of ${count}`;\n if (Array.isArray(page.matches)) {\n const terms = Array.isArray(args.match) ? args.match.filter((t): t is string => typeof t === 'string') : [];\n const context = typeof args.context === 'number' ? args.context : undefined;\n const ranges = page.matches\n .filter(isRecord)\n .map(match => match.range)\n .filter(isRange);\n if (!ranges.length) {\n return { row: `no matches ${quoted(terms)}`, summary: `No line contains ${quoted(terms)} (${count ?? 0} lines)` };\n }\n const capped =\n Array.isArray(output.more) &&\n output.more.some(note => typeof note === 'string' && note.startsWith('match: stopped'));\n const spans = ranges.map(range => linesText(range).replace(/^lines? /, '')).join(', ');\n return {\n row: `matches ${quoted(terms)}${context ? ` ±${context}` : ''}`,\n summary: `${capped ? 'First ' : ''}${ranges.length} match${ranges.length === 1 ? '' : 'es'} for ${quoted(terms)}${\n capped ? ', more follow' : ''\n }${context ? ` with ${context} lines of context` : ''}: lines ${spans}${of}`,\n };\n }\n if (isRange(page.range) && typeof page.lines === 'string') {\n const tag = `${linesText(page.range)}${of}`;\n const section = typeof args.section === 'string' && args.section ? `section \"${args.section}\" · ` : '';\n const next = page.range.end.line + 1;\n const tail =\n count === undefined ? '' : page.range.end.line >= count ? ' · end of page' : ` · continues at line ${next}`;\n return { row: `${section}${tag}`, summary: `${tag[0]?.toUpperCase()}${tag.slice(1)}${tail}` };\n }\n if (typeof page.lines === 'string' && count !== undefined) {\n return {\n row: `overview of ${count} lines`,\n summary: `Overview: every heading and the first lines under it, of ${count} lines`,\n };\n }\n if (Array.isArray(page.outline))\n return { row: 'outline', summary: 'Outline: the page headings with their line numbers' };\n if (args.notes === true || args.mentionedIn === true) return undefined;\n if (typeof page.body !== 'string' || !page.body) return { row: 'empty page', summary: 'The page has no body' };\n return { row: undefined, summary: 'Whole page' };\n}\n\n/** Which lines a `knowledge_page` write replaced, from its `range` argument; undefined for a whole-body write. */\nexport function writeExtent(args: Record<string, unknown>): BodyExtent | undefined {\n if (!isRange(args.range)) return undefined;\n const text = linesText(args.range);\n const verb = typeof args.body === 'string' && args.body === '' ? 'Removed' : 'Replaced';\n return { row: text, summary: `${verb} ${text}` };\n}\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export * from '../../../../src/domains/chat/tools/badges/knowledge-body-range';
@@ -0,0 +1,78 @@
1
+ import { isRecord } from "../../messages/signal-data.es.js";
2
+ // src/domains/chat/tools/badges/knowledge-body-range.ts
3
+ var isPosition = (value) => isRecord(value) && typeof value.line === "number";
4
+ var isRange = (value) => isRecord(value) && isPosition(value.start) && isPosition(value.end);
5
+ var at = ({ line, col }) => col === void 0 ? `${line}` : `${line}:${col}`;
6
+ /** `lines 12–14`, `line 12`, or with columns `line 2:5–9`, `lines 5:200–9:40`. */
7
+ function linesText(range) {
8
+ const { start, end } = range;
9
+ const plural = start.line === end.line ? "line" : "lines";
10
+ if (start.col === void 0 && end.col === void 0) return start.line === end.line ? `line ${start.line}` : `lines ${start.line}–${end.line}`;
11
+ if (start.line === end.line && end.col !== void 0) return `line ${at(start)}–${end.col}`;
12
+ return `${plural} ${at(start)}–${at(end)}`;
13
+ }
14
+ var quoted = (terms) => terms.map((term) => `"${term}"`).join(", ");
15
+ /**
16
+ * Which part of the body a `knowledge_read` result holds, from the call's arguments and its page. A whole
17
+ * body has no row tag; undefined when the result is not a body read at all (a notes-only read, a scope listing).
18
+ */
19
+ function readExtent(output, args) {
20
+ const page = output.page;
21
+ if (!isRecord(page)) return void 0;
22
+ const count = typeof page.lineCount === "number" ? page.lineCount : void 0;
23
+ const of = count === void 0 ? "" : ` of ${count}`;
24
+ if (Array.isArray(page.matches)) {
25
+ const terms = Array.isArray(args.match) ? args.match.filter((t) => typeof t === "string") : [];
26
+ const context = typeof args.context === "number" ? args.context : void 0;
27
+ const ranges = page.matches.filter(isRecord).map((match) => match.range).filter(isRange);
28
+ if (!ranges.length) return {
29
+ row: `no matches ${quoted(terms)}`,
30
+ summary: `No line contains ${quoted(terms)} (${count ?? 0} lines)`
31
+ };
32
+ const capped = Array.isArray(output.more) && output.more.some((note) => typeof note === "string" && note.startsWith("match: stopped"));
33
+ const spans = ranges.map((range) => linesText(range).replace(/^lines? /, "")).join(", ");
34
+ return {
35
+ row: `matches ${quoted(terms)}${context ? ` ±${context}` : ""}`,
36
+ summary: `${capped ? "First " : ""}${ranges.length} match${ranges.length === 1 ? "" : "es"} for ${quoted(terms)}${capped ? ", more follow" : ""}${context ? ` with ${context} lines of context` : ""}: lines ${spans}${of}`
37
+ };
38
+ }
39
+ if (isRange(page.range) && typeof page.lines === "string") {
40
+ const tag = `${linesText(page.range)}${of}`;
41
+ const section = typeof args.section === "string" && args.section ? `section "${args.section}" · ` : "";
42
+ const next = page.range.end.line + 1;
43
+ const tail = count === void 0 ? "" : page.range.end.line >= count ? " · end of page" : ` · continues at line ${next}`;
44
+ return {
45
+ row: `${section}${tag}`,
46
+ summary: `${tag[0]?.toUpperCase()}${tag.slice(1)}${tail}`
47
+ };
48
+ }
49
+ if (typeof page.lines === "string" && count !== void 0) return {
50
+ row: `overview of ${count} lines`,
51
+ summary: `Overview: every heading and the first lines under it, of ${count} lines`
52
+ };
53
+ if (Array.isArray(page.outline)) return {
54
+ row: "outline",
55
+ summary: "Outline: the page headings with their line numbers"
56
+ };
57
+ if (args.notes === true || args.mentionedIn === true) return void 0;
58
+ if (typeof page.body !== "string" || !page.body) return {
59
+ row: "empty page",
60
+ summary: "The page has no body"
61
+ };
62
+ return {
63
+ row: void 0,
64
+ summary: "Whole page"
65
+ };
66
+ }
67
+ /** Which lines a `knowledge_page` write replaced, from its `range` argument; undefined for a whole-body write. */
68
+ function writeExtent(args) {
69
+ if (!isRange(args.range)) return void 0;
70
+ const text = linesText(args.range);
71
+ return {
72
+ row: text,
73
+ summary: `${typeof args.body === "string" && args.body === "" ? "Removed" : "Replaced"} ${text}`
74
+ };
75
+ }
76
+ export { readExtent, writeExtent };
77
+
78
+ //# sourceMappingURL=knowledge-body-range.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-body-range.es.js","names":[],"sources":["../../../../../src/domains/chat/tools/badges/knowledge-body-range.ts"],"sourcesContent":["import { isRecord } from '../../messages/signal-data';\n\ninterface Position {\n line: number;\n col?: number;\n}\ninterface LineRange {\n start: Position;\n end: Position;\n}\n\n/** What part of a page a Knowledge call read or wrote: a short tag for the collapsed row, a sentence for the body. */\nexport interface BodyExtent {\n row: string | undefined;\n summary: string;\n}\n\nconst isPosition = (value: unknown): value is Position => isRecord(value) && typeof value.line === 'number';\nconst isRange = (value: unknown): value is LineRange =>\n isRecord(value) && isPosition(value.start) && isPosition(value.end);\n\nconst at = ({ line, col }: Position) => (col === undefined ? `${line}` : `${line}:${col}`);\n\n/** `lines 12–14`, `line 12`, or with columns `line 2:5–9`, `lines 5:200–9:40`. */\nfunction linesText(range: LineRange): string {\n const { start, end } = range;\n const plural = start.line === end.line ? 'line' : 'lines';\n if (start.col === undefined && end.col === undefined) {\n return start.line === end.line ? `line ${start.line}` : `lines ${start.line}–${end.line}`;\n }\n if (start.line === end.line && end.col !== undefined) return `line ${at(start)}–${end.col}`;\n return `${plural} ${at(start)}–${at(end)}`;\n}\n\nconst quoted = (terms: string[]) => terms.map(term => `\"${term}\"`).join(', ');\n\n/**\n * Which part of the body a `knowledge_read` result holds, from the call's arguments and its page. A whole\n * body has no row tag; undefined when the result is not a body read at all (a notes-only read, a scope listing).\n */\nexport function readExtent(output: Record<string, unknown>, args: Record<string, unknown>): BodyExtent | undefined {\n const page = output.page;\n if (!isRecord(page)) return undefined;\n const count = typeof page.lineCount === 'number' ? page.lineCount : undefined;\n const of = count === undefined ? '' : ` of ${count}`;\n if (Array.isArray(page.matches)) {\n const terms = Array.isArray(args.match) ? args.match.filter((t): t is string => typeof t === 'string') : [];\n const context = typeof args.context === 'number' ? args.context : undefined;\n const ranges = page.matches\n .filter(isRecord)\n .map(match => match.range)\n .filter(isRange);\n if (!ranges.length) {\n return { row: `no matches ${quoted(terms)}`, summary: `No line contains ${quoted(terms)} (${count ?? 0} lines)` };\n }\n const capped =\n Array.isArray(output.more) &&\n output.more.some(note => typeof note === 'string' && note.startsWith('match: stopped'));\n const spans = ranges.map(range => linesText(range).replace(/^lines? /, '')).join(', ');\n return {\n row: `matches ${quoted(terms)}${context ? ` ±${context}` : ''}`,\n summary: `${capped ? 'First ' : ''}${ranges.length} match${ranges.length === 1 ? '' : 'es'} for ${quoted(terms)}${\n capped ? ', more follow' : ''\n }${context ? ` with ${context} lines of context` : ''}: lines ${spans}${of}`,\n };\n }\n if (isRange(page.range) && typeof page.lines === 'string') {\n const tag = `${linesText(page.range)}${of}`;\n const section = typeof args.section === 'string' && args.section ? `section \"${args.section}\" · ` : '';\n const next = page.range.end.line + 1;\n const tail =\n count === undefined ? '' : page.range.end.line >= count ? ' · end of page' : ` · continues at line ${next}`;\n return { row: `${section}${tag}`, summary: `${tag[0]?.toUpperCase()}${tag.slice(1)}${tail}` };\n }\n if (typeof page.lines === 'string' && count !== undefined) {\n return {\n row: `overview of ${count} lines`,\n summary: `Overview: every heading and the first lines under it, of ${count} lines`,\n };\n }\n if (Array.isArray(page.outline))\n return { row: 'outline', summary: 'Outline: the page headings with their line numbers' };\n if (args.notes === true || args.mentionedIn === true) return undefined;\n if (typeof page.body !== 'string' || !page.body) return { row: 'empty page', summary: 'The page has no body' };\n return { row: undefined, summary: 'Whole page' };\n}\n\n/** Which lines a `knowledge_page` write replaced, from its `range` argument; undefined for a whole-body write. */\nexport function writeExtent(args: Record<string, unknown>): BodyExtent | undefined {\n if (!isRange(args.range)) return undefined;\n const text = linesText(args.range);\n const verb = typeof args.body === 'string' && args.body === '' ? 'Removed' : 'Replaced';\n return { row: text, summary: `${verb} ${text}` };\n}\n"],"mappings":"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"}