@dxos/plugin-markdown 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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 (361) hide show
  1. package/dist/lib/browser/MarkdownSettings-5AD3X3II.mjs +124 -0
  2. package/dist/lib/browser/MarkdownSettings-5AD3X3II.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +47 -4
  4. package/dist/lib/browser/blueprints/index.mjs.map +4 -4
  5. package/dist/lib/browser/chunk-46WIDM4R.mjs +98 -0
  6. package/dist/lib/browser/chunk-46WIDM4R.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-GQKARRJU.mjs +158 -0
  8. package/dist/lib/browser/chunk-GQKARRJU.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/cli/index.mjs +26 -19
  11. package/dist/lib/browser/cli/index.mjs.map +3 -3
  12. package/dist/lib/browser/create-I7QWPBMS.mjs +30 -0
  13. package/dist/lib/browser/create-I7QWPBMS.mjs.map +7 -0
  14. package/dist/lib/browser/create-markdown-6QQXSF3Q.mjs +22 -0
  15. package/dist/lib/browser/create-markdown-6QQXSF3Q.mjs.map +7 -0
  16. package/dist/lib/browser/index.mjs +586 -85
  17. package/dist/lib/browser/index.mjs.map +4 -4
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/open-NSBN4NKR.mjs +21 -0
  20. package/dist/lib/browser/open-NSBN4NKR.mjs.map +7 -0
  21. package/dist/lib/browser/operations/index.mjs +14 -0
  22. package/dist/lib/browser/operations/index.mjs.map +7 -0
  23. package/dist/lib/browser/scroll-to-anchor-RA5OMQCP.mjs +49 -0
  24. package/dist/lib/browser/scroll-to-anchor-RA5OMQCP.mjs.map +7 -0
  25. package/dist/lib/browser/set-view-mode-75MBU6CB.mjs +26 -0
  26. package/dist/lib/browser/set-view-mode-75MBU6CB.mjs.map +7 -0
  27. package/dist/lib/browser/types/index.mjs +6 -7
  28. package/dist/lib/browser/update-QQJYONAC.mjs +45 -0
  29. package/dist/lib/browser/update-QQJYONAC.mjs.map +7 -0
  30. package/dist/lib/node-esm/MarkdownSettings-ODDM67XG.mjs +125 -0
  31. package/dist/lib/node-esm/MarkdownSettings-ODDM67XG.mjs.map +7 -0
  32. package/dist/lib/node-esm/blueprints/index.mjs +47 -4
  33. package/dist/lib/node-esm/blueprints/index.mjs.map +4 -4
  34. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs +99 -0
  35. package/dist/lib/node-esm/chunk-4MSJO6IJ.mjs.map +7 -0
  36. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  37. package/dist/lib/node-esm/chunk-QRCQ55W7.mjs +159 -0
  38. package/dist/lib/node-esm/chunk-QRCQ55W7.mjs.map +7 -0
  39. package/dist/lib/node-esm/cli/index.mjs +26 -19
  40. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/create-VJ5SIKYF.mjs +31 -0
  42. package/dist/lib/node-esm/create-VJ5SIKYF.mjs.map +7 -0
  43. package/dist/lib/node-esm/create-markdown-P5KNGLZ5.mjs +23 -0
  44. package/dist/lib/node-esm/create-markdown-P5KNGLZ5.mjs.map +7 -0
  45. package/dist/lib/node-esm/index.mjs +586 -85
  46. package/dist/lib/node-esm/index.mjs.map +4 -4
  47. package/dist/lib/node-esm/meta.json +1 -1
  48. package/dist/lib/node-esm/open-U3T6IVHN.mjs +22 -0
  49. package/dist/lib/node-esm/open-U3T6IVHN.mjs.map +7 -0
  50. package/dist/lib/node-esm/operations/index.mjs +15 -0
  51. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  52. package/dist/lib/node-esm/scroll-to-anchor-CVM3LVSQ.mjs +50 -0
  53. package/dist/lib/node-esm/scroll-to-anchor-CVM3LVSQ.mjs.map +7 -0
  54. package/dist/lib/node-esm/set-view-mode-WQJBCUXY.mjs +27 -0
  55. package/dist/lib/node-esm/set-view-mode-WQJBCUXY.mjs.map +7 -0
  56. package/dist/lib/node-esm/types/index.mjs +6 -7
  57. package/dist/lib/node-esm/update-24CQM75C.mjs +46 -0
  58. package/dist/lib/node-esm/update-24CQM75C.mjs.map +7 -0
  59. package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
  60. package/dist/types/src/blueprints/index.d.ts +1 -1
  61. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  62. package/dist/types/src/blueprints/markdown-blueprint.d.ts +3 -20
  63. package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -1
  64. package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
  65. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  66. package/dist/types/src/capabilities/app-graph-serializer.d.ts +5 -0
  67. package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +1 -0
  68. package/dist/types/src/capabilities/artifact-definition.d.ts +5 -0
  69. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
  70. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  71. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  72. package/dist/types/src/capabilities/index.d.ts +27 -7
  73. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  74. package/dist/types/src/capabilities/node.d.ts +4 -0
  75. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  76. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  77. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  78. package/dist/types/src/capabilities/react-surface.d.ts +5 -0
  79. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  80. package/dist/types/src/capabilities/settings.d.ts +24 -0
  81. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  82. package/dist/types/src/capabilities/state.d.ts +6 -0
  83. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  84. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  85. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +2 -2
  86. package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
  87. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +14 -9
  88. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
  89. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
  90. package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
  91. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +4 -2
  92. package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
  93. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +11 -6
  94. package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
  95. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +4 -6
  96. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
  97. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts +138 -0
  98. package/dist/types/src/components/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -0
  99. package/dist/types/src/components/MarkdownSettings/index.d.ts +2 -1
  100. package/dist/types/src/components/MarkdownSettings/index.d.ts.map +1 -1
  101. package/dist/types/src/components/index.d.ts +3 -8
  102. package/dist/types/src/components/index.d.ts.map +1 -1
  103. package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.d.ts +1 -1
  104. package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
  105. package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
  106. package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
  107. package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
  108. package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
  109. package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
  110. package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.d.ts +10 -7
  111. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
  112. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts +99 -0
  113. package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
  114. package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
  115. package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
  116. package/dist/types/src/containers/index.d.ts +5 -0
  117. package/dist/types/src/containers/index.d.ts.map +1 -0
  118. package/dist/types/src/hooks/index.d.ts +0 -1
  119. package/dist/types/src/hooks/index.d.ts.map +1 -1
  120. package/dist/types/src/hooks/useExtensions.d.ts +7 -5
  121. package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
  122. package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
  123. package/dist/types/src/index.d.ts +1 -0
  124. package/dist/types/src/index.d.ts.map +1 -1
  125. package/dist/types/src/operations/create-markdown.d.ts +5 -0
  126. package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
  127. package/dist/types/src/operations/create.d.ts +5 -0
  128. package/dist/types/src/operations/create.d.ts.map +1 -0
  129. package/dist/types/src/operations/create.test.d.ts.map +1 -0
  130. package/dist/types/src/operations/definitions.d.ts +64 -0
  131. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  132. package/dist/types/src/operations/index.d.ts +4 -0
  133. package/dist/types/src/operations/index.d.ts.map +1 -0
  134. package/dist/types/src/operations/open.d.ts +5 -0
  135. package/dist/types/src/operations/open.d.ts.map +1 -0
  136. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  137. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  138. package/dist/types/src/operations/set-view-mode.d.ts +5 -0
  139. package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
  140. package/dist/types/src/operations/update.d.ts +5 -0
  141. package/dist/types/src/operations/update.d.ts.map +1 -0
  142. package/dist/types/src/operations/update.test.d.ts.map +1 -0
  143. package/dist/types/src/translations.d.ts +75 -35
  144. package/dist/types/src/translations.d.ts.map +1 -1
  145. package/dist/types/src/types/Markdown.d.ts +15 -16
  146. package/dist/types/src/types/Markdown.d.ts.map +1 -1
  147. package/dist/types/src/types/Settings.d.ts +16 -0
  148. package/dist/types/src/types/Settings.d.ts.map +1 -0
  149. package/dist/types/src/types/capabilities.d.ts +31 -2
  150. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  151. package/dist/types/src/types/events.d.ts.map +1 -1
  152. package/dist/types/src/types/index.d.ts +2 -3
  153. package/dist/types/src/types/index.d.ts.map +1 -1
  154. package/dist/types/src/util.d.ts +2 -2
  155. package/dist/types/src/util.d.ts.map +1 -1
  156. package/dist/types/tsconfig.tsbuildinfo +1 -1
  157. package/package.json +89 -57
  158. package/src/MarkdownPlugin.tsx +49 -44
  159. package/src/blueprints/index.ts +1 -1
  160. package/src/blueprints/markdown-blueprint.ts +14 -8
  161. package/src/capabilities/{anchor-sort/anchor-sort.ts → anchor-sort.ts} +4 -3
  162. package/src/capabilities/{app-graph-serializer/app-graph-serializer.ts → app-graph-serializer.ts} +14 -9
  163. package/src/capabilities/{artifact-definition/artifact-definition.ts → artifact-definition.ts} +5 -5
  164. package/src/capabilities/blueprint-definition.ts +17 -0
  165. package/src/capabilities/index.ts +13 -7
  166. package/src/capabilities/node.ts +11 -0
  167. package/src/capabilities/operation-handler.ts +16 -0
  168. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +48 -27
  169. package/src/capabilities/{settings/settings.ts → settings.ts} +5 -4
  170. package/src/capabilities/state.ts +47 -0
  171. package/src/cli/plugin.ts +21 -10
  172. package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
  173. package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +29 -29
  174. package/src/components/MarkdownEditor/MarkdownEditor.tsx +63 -32
  175. package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +24 -17
  176. package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +47 -55
  177. package/src/components/MarkdownSettings/MarkdownSettings.stories.tsx +40 -0
  178. package/src/components/MarkdownSettings/MarkdownSettings.tsx +114 -98
  179. package/src/components/MarkdownSettings/index.ts +3 -1
  180. package/src/components/index.ts +4 -12
  181. package/src/{components → containers}/MarkdownCard/MarkdownCard.stories.tsx +17 -7
  182. package/src/{components → containers}/MarkdownCard/MarkdownCard.tsx +23 -30
  183. package/src/{components → containers}/MarkdownCard/index.ts +0 -2
  184. package/src/containers/MarkdownCard/snippet.ts +75 -0
  185. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.tsx +28 -18
  186. package/src/{components → containers/MarkdownContainer}/MarkdownContainer.tsx +59 -36
  187. package/src/containers/MarkdownContainer/index.ts +6 -0
  188. package/src/containers/index.ts +10 -0
  189. package/src/hooks/index.ts +0 -1
  190. package/src/hooks/useEditorMenuOptions.ts +2 -2
  191. package/src/hooks/useExtensions.tsx +80 -93
  192. package/src/hooks/useLinkQuery.ts +31 -6
  193. package/src/index.ts +2 -0
  194. package/src/meta.ts +1 -1
  195. package/src/operations/create-markdown.ts +21 -0
  196. package/src/operations/create.conversations.json +1 -0
  197. package/src/operations/create.test.ts +98 -0
  198. package/src/operations/create.ts +27 -0
  199. package/src/operations/definitions.ts +119 -0
  200. package/src/operations/index.ts +16 -0
  201. package/src/operations/open.ts +25 -0
  202. package/src/operations/scroll-to-anchor.ts +40 -0
  203. package/src/operations/set-view-mode.ts +25 -0
  204. package/src/operations/update.conversations.json +1 -0
  205. package/src/operations/update.test.ts +215 -0
  206. package/src/operations/update.ts +51 -0
  207. package/src/testing.ts +2 -2
  208. package/src/translations.ts +49 -35
  209. package/src/types/Markdown.ts +18 -25
  210. package/src/types/Settings.ts +28 -0
  211. package/src/types/capabilities.ts +17 -5
  212. package/src/types/events.ts +5 -4
  213. package/src/types/index.ts +3 -4
  214. package/src/util.tsx +5 -5
  215. package/dist/lib/browser/MarkdownCard-WHK3ORP7.mjs +0 -12
  216. package/dist/lib/browser/MarkdownContainer-V7EAADMF.mjs +0 -12
  217. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs +0 -32
  218. package/dist/lib/browser/anchor-sort-WQ3TL7ZI.mjs.map +0 -7
  219. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs +0 -58
  220. package/dist/lib/browser/app-graph-serializer-ULZUJKOD.mjs.map +0 -7
  221. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs +0 -19
  222. package/dist/lib/browser/blueprint-definition-TLV4PNZW.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-BX73DASG.mjs +0 -702
  224. package/dist/lib/browser/chunk-BX73DASG.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-CUGDX7KA.mjs +0 -8
  226. package/dist/lib/browser/chunk-CUGDX7KA.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-FWQQW6KU.mjs +0 -144
  228. package/dist/lib/browser/chunk-FWQQW6KU.mjs.map +0 -7
  229. package/dist/lib/browser/chunk-JOXYQLKH.mjs +0 -55
  230. package/dist/lib/browser/chunk-JOXYQLKH.mjs.map +0 -7
  231. package/dist/lib/browser/chunk-KDKXFKDN.mjs +0 -104
  232. package/dist/lib/browser/chunk-KDKXFKDN.mjs.map +0 -7
  233. package/dist/lib/browser/chunk-LMO5UVKL.mjs +0 -167
  234. package/dist/lib/browser/chunk-LMO5UVKL.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-S45ULIOG.mjs +0 -101
  236. package/dist/lib/browser/chunk-S45ULIOG.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-WIPSLZ6L.mjs +0 -60
  238. package/dist/lib/browser/chunk-WIPSLZ6L.mjs.map +0 -7
  239. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs +0 -53
  240. package/dist/lib/browser/operation-resolver-EGCWOQKJ.mjs.map +0 -7
  241. package/dist/lib/browser/react-surface-SRPLD3ED.mjs +0 -213
  242. package/dist/lib/browser/react-surface-SRPLD3ED.mjs.map +0 -7
  243. package/dist/lib/browser/settings-JY5JE7MI.mjs +0 -35
  244. package/dist/lib/browser/settings-JY5JE7MI.mjs.map +0 -7
  245. package/dist/lib/browser/state-QE7VSJWJ.mjs +0 -29
  246. package/dist/lib/browser/state-QE7VSJWJ.mjs.map +0 -7
  247. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs +0 -13
  248. package/dist/lib/node-esm/MarkdownCard-WJPLQTFS.mjs.map +0 -7
  249. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs +0 -13
  250. package/dist/lib/node-esm/MarkdownContainer-LUSMORP2.mjs.map +0 -7
  251. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs +0 -33
  252. package/dist/lib/node-esm/anchor-sort-G7D5TAI6.mjs.map +0 -7
  253. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs +0 -59
  254. package/dist/lib/node-esm/app-graph-serializer-W5YMQP7P.mjs.map +0 -7
  255. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs +0 -20
  256. package/dist/lib/node-esm/blueprint-definition-HYFA7BKQ.mjs.map +0 -7
  257. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs +0 -105
  258. package/dist/lib/node-esm/chunk-3JYPCC7M.mjs.map +0 -7
  259. package/dist/lib/node-esm/chunk-44VJC3QF.mjs +0 -56
  260. package/dist/lib/node-esm/chunk-44VJC3QF.mjs.map +0 -7
  261. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs +0 -703
  262. package/dist/lib/node-esm/chunk-D4BCFPKK.mjs.map +0 -7
  263. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs +0 -145
  264. package/dist/lib/node-esm/chunk-EYAFC4N7.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs +0 -168
  266. package/dist/lib/node-esm/chunk-PRV35A7Z.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-RQP7G7XW.mjs +0 -61
  268. package/dist/lib/node-esm/chunk-RQP7G7XW.mjs.map +0 -7
  269. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs +0 -102
  270. package/dist/lib/node-esm/chunk-SDTYEGGL.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs +0 -10
  272. package/dist/lib/node-esm/chunk-W3IIKDV5.mjs.map +0 -7
  273. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs +0 -54
  274. package/dist/lib/node-esm/operation-resolver-2HIS2AQZ.mjs.map +0 -7
  275. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs +0 -214
  276. package/dist/lib/node-esm/react-surface-RONSOJIQ.mjs.map +0 -7
  277. package/dist/lib/node-esm/settings-4UGMPIRY.mjs +0 -36
  278. package/dist/lib/node-esm/settings-4UGMPIRY.mjs.map +0 -7
  279. package/dist/lib/node-esm/state-LXE5XIN4.mjs +0 -30
  280. package/dist/lib/node-esm/state-LXE5XIN4.mjs.map +0 -7
  281. package/dist/types/src/blueprints/functions/create.d.ts +0 -8
  282. package/dist/types/src/blueprints/functions/create.d.ts.map +0 -1
  283. package/dist/types/src/blueprints/functions/create.test.d.ts.map +0 -1
  284. package/dist/types/src/blueprints/functions/index.d.ts +0 -4
  285. package/dist/types/src/blueprints/functions/index.d.ts.map +0 -1
  286. package/dist/types/src/blueprints/functions/open.d.ts +0 -7
  287. package/dist/types/src/blueprints/functions/open.d.ts.map +0 -1
  288. package/dist/types/src/blueprints/functions/update.d.ts +0 -6
  289. package/dist/types/src/blueprints/functions/update.d.ts.map +0 -1
  290. package/dist/types/src/blueprints/functions/update.test.d.ts.map +0 -1
  291. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +0 -5
  292. package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +0 -1
  293. package/dist/types/src/capabilities/anchor-sort/index.d.ts +0 -3
  294. package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +0 -1
  295. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +0 -5
  296. package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +0 -1
  297. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +0 -3
  298. package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +0 -1
  299. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +0 -5
  300. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +0 -1
  301. package/dist/types/src/capabilities/artifact-definition/index.d.ts +0 -3
  302. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +0 -1
  303. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +0 -10
  304. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +0 -1
  305. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +0 -3
  306. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +0 -1
  307. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -3
  308. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  309. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -5
  310. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  311. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -3
  312. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -5
  314. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/settings/index.d.ts +0 -3
  316. package/dist/types/src/capabilities/settings/index.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/settings/settings.d.ts +0 -6
  318. package/dist/types/src/capabilities/settings/settings.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/state/index.d.ts +0 -3
  320. package/dist/types/src/capabilities/state/index.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/state/state.d.ts +0 -5
  322. package/dist/types/src/capabilities/state/state.d.ts.map +0 -1
  323. package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
  324. package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
  325. package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
  326. package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
  327. package/dist/types/src/components/MarkdownContainer.stories.d.ts +0 -59
  328. package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
  329. package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
  330. package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
  331. package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
  332. package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
  333. package/dist/types/src/types/MarkdownAction.d.ts +0 -66
  334. package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
  335. package/src/blueprints/functions/create.conversations.json +0 -1
  336. package/src/blueprints/functions/create.test.ts +0 -125
  337. package/src/blueprints/functions/create.ts +0 -34
  338. package/src/blueprints/functions/index.ts +0 -7
  339. package/src/blueprints/functions/open.ts +0 -33
  340. package/src/blueprints/functions/update.conversations.json +0 -1
  341. package/src/blueprints/functions/update.test.ts +0 -149
  342. package/src/blueprints/functions/update.ts +0 -38
  343. package/src/capabilities/anchor-sort/index.ts +0 -7
  344. package/src/capabilities/app-graph-serializer/index.ts +0 -7
  345. package/src/capabilities/artifact-definition/index.ts +0 -7
  346. package/src/capabilities/blueprint-definition/blueprint-definition.ts +0 -25
  347. package/src/capabilities/blueprint-definition/index.ts +0 -7
  348. package/src/capabilities/operation-resolver/index.ts +0 -7
  349. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -45
  350. package/src/capabilities/react-surface/index.ts +0 -7
  351. package/src/capabilities/settings/index.ts +0 -7
  352. package/src/capabilities/state/index.ts +0 -7
  353. package/src/capabilities/state/state.ts +0 -31
  354. package/src/components/Suggestions.stories.tsx +0 -215
  355. package/src/hooks/useSelectCurrentThread.tsx +0 -61
  356. package/src/types/MarkdownAction.ts +0 -59
  357. /package/dist/lib/browser/{MarkdownCard-WHK3ORP7.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  358. /package/dist/lib/{browser/MarkdownContainer-V7EAADMF.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
  359. /package/dist/types/src/{components → containers}/MarkdownCard/MarkdownCard.stories.d.ts +0 -0
  360. /package/dist/types/src/{blueprints/functions → operations}/create.test.d.ts +0 -0
  361. /package/dist/types/src/{blueprints/functions → operations}/update.test.d.ts +0 -0
@@ -3,20 +3,16 @@
3
3
  //
4
4
 
5
5
  import { type ViewUpdate } from '@codemirror/view';
6
- import React, { type AnchorHTMLAttributes, type ReactNode, useMemo } from 'react';
7
- import { createRoot } from 'react-dom/client';
8
-
9
- import { Common } from '@dxos/app-framework';
10
- import { useOperationInvoker } from '@dxos/app-framework/react';
6
+ import { useMemo } from 'react';
11
7
  import { debounceAndThrottle } from '@dxos/async';
12
8
  import { Obj } from '@dxos/echo';
13
9
  import { createDocAccessor } from '@dxos/echo-db';
14
10
  import { invariant } from '@dxos/invariant';
15
11
  import { getSpace, useObject } from '@dxos/react-client/echo';
16
12
  import { useIdentity } from '@dxos/react-client/halo';
17
- import { Icon, ThemeProvider } from '@dxos/react-ui';
18
13
  import { type SelectionManager } from '@dxos/react-ui-attention';
19
14
  import { Text } from '@dxos/schema';
15
+ import { Domino } from '@dxos/ui';
20
16
  import {
21
17
  Cursor,
22
18
  type EditorStateStore,
@@ -38,23 +34,27 @@ import {
38
34
  selectionState,
39
35
  typewriter,
40
36
  } from '@dxos/ui-editor';
41
- import { defaultTx } from '@dxos/ui-theme';
42
- import { isTruthy } from '@dxos/util';
37
+ import { useThemeContext } from '@dxos/react-ui';
38
+ import { isTruthy, safeUrl } from '@dxos/util';
43
39
 
44
- import { Markdown } from '../types';
40
+ import { Markdown } from '#types';
45
41
  import { setFallbackName } from '../util';
42
+ import { fromUrlPath } from '@dxos/app-toolkit';
46
43
 
47
44
  export type DocumentType = Markdown.Document | Text.Text | { id: string; text: string };
48
45
 
49
46
  export type ExtensionsOptions = {
50
47
  id: string;
51
48
  object?: DocumentType;
52
- invokePromise?: Common.Capability.OperationInvoker['invokePromise'];
53
49
  settings?: Markdown.Settings;
54
- selectionManager?: SelectionManager;
50
+ compact?: boolean;
55
51
  viewMode?: EditorViewMode;
52
+ selectionManager?: SelectionManager;
56
53
  editorStateStore?: EditorStateStore;
57
54
  previewOptions?: PreviewOptions;
55
+ platform?: 'mobile' | 'desktop';
56
+ /** Callback when an internal link is clicked. */
57
+ onSelectObject?: (objectId: string) => void;
58
58
  };
59
59
 
60
60
  // TODO(burdon): Merge with createBaseExtensions below.
@@ -62,12 +62,14 @@ export const useExtensions = ({
62
62
  id,
63
63
  object,
64
64
  settings,
65
- selectionManager,
65
+ compact,
66
66
  viewMode,
67
+ selectionManager,
67
68
  editorStateStore,
68
69
  previewOptions,
70
+ onSelectObject,
69
71
  }: ExtensionsOptions): Extension[] => {
70
- const { invokePromise } = useOperationInvoker();
72
+ const { platform } = useThemeContext();
71
73
  const identity = useIdentity();
72
74
  const space = getSpace(object);
73
75
 
@@ -89,24 +91,28 @@ export const useExtensions = ({
89
91
  id,
90
92
  object,
91
93
  settings,
92
- selectionManager,
94
+ compact,
93
95
  viewMode,
96
+ selectionManager,
94
97
  previewOptions,
95
- invokePromise,
98
+ onSelectObject,
99
+ platform,
96
100
  }),
97
101
  [
98
102
  id,
99
103
  object,
104
+ compact,
100
105
  viewMode,
101
- invokePromise,
106
+ selectionManager,
102
107
  previewOptions,
108
+ onSelectObject,
103
109
  settings,
104
110
  settings?.debug,
105
111
  settings?.editorInputMode,
106
112
  settings?.folding,
107
113
  settings?.numberedHeadings,
114
+ platform,
108
115
  settings?.typewriter,
109
- selectionManager,
110
116
  ],
111
117
  );
112
118
 
@@ -144,16 +150,18 @@ export const useExtensions = ({
144
150
  const createBaseExtensions = ({
145
151
  id,
146
152
  object,
147
- invokePromise,
153
+ onSelectObject,
148
154
  settings,
149
- selectionManager,
155
+ compact,
150
156
  viewMode,
157
+ selectionManager,
151
158
  previewOptions,
159
+ platform,
152
160
  }: ExtensionsOptions): Extension[] => {
153
161
  const extensions: Extension[] = [
154
162
  selectionManager && selectionChange(selectionManager),
155
163
  settings?.editorInputMode && InputModeExtensions[settings.editorInputMode],
156
- settings?.folding && folding(),
164
+ settings?.folding && !compact && platform !== 'mobile' && folding(),
157
165
  ].filter(isTruthy);
158
166
 
159
167
  //
@@ -166,17 +174,8 @@ const createBaseExtensions = ({
166
174
  decorateMarkdown({
167
175
  selectionChangeDelay: 100,
168
176
  numberedHeadings: settings?.numberedHeadings ? { from: 2 } : undefined,
169
- // TODO(wittjosiah): For internal links, consider ignoring the link text and rendering the label of the object being linked to.
170
- // TODO(burdon): Create dx-tag.
171
- renderLinkButton:
172
- invokePromise && (object || id)
173
- ? createLinkRenderer((targetId: string) => {
174
- void invokePromise(Common.LayoutOperation.Open, {
175
- subject: [targetId],
176
- pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,
177
- });
178
- })
179
- : undefined,
177
+ // TODO(wittjosiah): For internal links render the label of the object.
178
+ renderLinkButton: onSelectObject && createRenderLink(onSelectObject),
180
179
  }),
181
180
  linkTooltip(renderLinkTooltip),
182
181
  preview(previewOptions),
@@ -196,79 +195,67 @@ const createBaseExtensions = ({
196
195
  };
197
196
 
198
197
  const selectionChange = (selectionManager: SelectionManager) => {
199
- return EditorView.updateListener.of(
200
- debounceAndThrottle((update: ViewUpdate) => {
201
- if (update.selectionSet) {
202
- const id = update.state.facet(documentId);
203
- const cursorConverter = update.state.facet(Cursor.converter);
204
- const selection = update.state.selection;
205
- const ranges = selection.ranges
206
- .map((range) => ({
207
- from: cursorConverter.toCursor(range.from),
208
- to: cursorConverter.toCursor(range.to),
209
- }))
210
- .filter(({ from, to }) => to > from);
198
+ const debouncedHandler = debounceAndThrottle((update: ViewUpdate) => {
199
+ const id = update.state.facet(documentId);
200
+ const cursorConverter = update.state.facet(Cursor.converter);
201
+ const selection = update.state.selection;
202
+ const ranges = selection.ranges
203
+ .map((range) => ({
204
+ from: cursorConverter.toCursor(range.from),
205
+ to: cursorConverter.toCursor(range.to),
206
+ }))
207
+ .filter(({ from, to }) => to > from);
211
208
 
212
- selectionManager.updateMultiRange(id, ranges);
213
- }
214
- }, 100),
215
- );
216
- };
209
+ selectionManager.updateMultiRange(id, ranges);
210
+ }, 100);
217
211
 
218
- // TODO(burdon): Factor out styles.
219
- const style = {
220
- hover: 'rounded-sm text-primary-500 hover:text-primary-600 dark:text-primary-500 hover:dark:text-primary-400',
221
- icon: 'inline-block leading-none mis-1 cursor-pointer',
212
+ return EditorView.updateListener.of((update: ViewUpdate) => {
213
+ if (update.selectionSet) {
214
+ debouncedHandler(update);
215
+ }
216
+ });
222
217
  };
223
218
 
224
- const createLinkRenderer =
219
+ const createRenderLink =
225
220
  (onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>
226
221
  (el, { url }) => {
227
222
  // TODO(burdon): Formalize/document internal link format.
228
- const isInternal =
229
- url.startsWith('/') ||
230
- // TODO(wittjosiah): This should probably be parsed out on paste?
231
- url.startsWith(window.location.origin);
223
+ const isInternal = url.startsWith('/') || url.startsWith(window.location.origin);
224
+ const qualifiedId = isInternal ? fromUrlPath(new URL(url, window.location.origin).pathname) : undefined;
225
+ const icon = Domino.of('span')
226
+ .classNames('dx-link ms-1 inline-block align-[-0.125em]')
227
+ .children(Domino.svg(isInternal ? 'ph--arrow-square-down--regular' : 'ph--arrow-square-out--regular'));
232
228
 
233
- const options: AnchorHTMLAttributes<any> = isInternal
234
- ? {
235
- onClick: () => {
236
- const qualifiedId = url.split('/').at(-1);
237
- invariant(qualifiedId, 'Invalid link format.');
238
- onSelectObject(qualifiedId);
239
- },
240
- }
241
- : {
242
- href: url,
243
- rel: 'noreferrer',
244
- target: '_blank',
245
- };
229
+ if (isInternal) {
230
+ invariant(qualifiedId, 'Invalid link format.');
231
+ icon
232
+ .attributes({ role: 'button', tabindex: '0' })
233
+ .on('click', (event) => {
234
+ event.preventDefault();
235
+ event.stopPropagation();
236
+ onSelectObject(qualifiedId);
237
+ })
238
+ .on('keydown', (event) => {
239
+ const keyboardEvent = event as KeyboardEvent;
240
+ if (keyboardEvent.key !== 'Enter' && keyboardEvent.key !== ' ') {
241
+ return;
242
+ }
246
243
 
247
- renderRoot(
248
- el,
249
- <a {...options} className={style.hover}>
250
- <Icon
251
- icon={isInternal ? 'ph--arrow-square-down--bold' : 'ph--arrow-square-out--bold'}
252
- size={4}
253
- classNames={style.icon}
254
- />
255
- </a>,
256
- );
244
+ keyboardEvent.preventDefault();
245
+ keyboardEvent.stopPropagation();
246
+ onSelectObject(qualifiedId);
247
+ });
248
+ }
249
+
250
+ el.appendChild(icon.root);
257
251
  };
258
252
 
259
253
  const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
260
- const web = new URL(url);
261
- renderRoot(
262
- el,
263
- <a href={url} rel='noreferrer' target='_blank' className={style.hover}>
264
- {web.origin}
265
- <Icon icon='ph--arrow-square-out--bold' size={4} classNames={style.icon} />
266
- </a>,
254
+ el.appendChild(
255
+ Domino.of('a')
256
+ .attributes({ href: url, target: '_blank', rel: 'noreferrer' })
257
+ .classNames('dx-link flex items-center gap-2')
258
+ .text(safeUrl(url)?.toString() ?? url)
259
+ .children(Domino.svg('ph--arrow-square-out--regular')).root,
267
260
  );
268
261
  };
269
-
270
- // TODO(burdon): REMOVE.
271
- const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
272
- createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
273
- return root;
274
- };
@@ -5,21 +5,23 @@
5
5
  import * as Option from 'effect/Option';
6
6
  import { useCallback, useMemo } from 'react';
7
7
 
8
- import { Common } from '@dxos/app-framework';
9
- import { usePluginManager } from '@dxos/app-framework/react';
8
+ import { usePluginManager } from '@dxos/app-framework/ui';
9
+ import { AppCapabilities } from '@dxos/app-toolkit';
10
10
  import { type Database, Filter, Obj, Query, Type } from '@dxos/echo';
11
11
  import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
12
12
  import { toLocalizedString, useTranslation } from '@dxos/react-ui';
13
13
  import { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';
14
14
  import { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';
15
15
 
16
+ import { Markdown } from '../types';
17
+
16
18
  export const useLinkQuery = (db: Database.Database | undefined) => {
17
19
  const { t } = useTranslation();
18
20
 
19
21
  const manager = usePluginManager();
20
22
  const resolve = useCallback(
21
23
  (typename: string) =>
22
- manager.capabilities.getAll(Common.Capability.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
24
+ manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
23
25
  [manager],
24
26
  );
25
27
 
@@ -36,6 +38,7 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
36
38
 
37
39
  const handleLinkQuery = useCallback(
38
40
  async (query?: string): Promise<EditorMenuGroup[]> => {
41
+ // A second "@" switches the link query into block-embed mode, so "@@foo" searches for "foo".
39
42
  const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
40
43
  const results = await db?.query(Query.select(filter)).run();
41
44
 
@@ -49,7 +52,7 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
49
52
  // TODO(wittjosiah): Remove metadata labels.
50
53
  const type = Obj.getTypename(object)!;
51
54
  const metadata = resolve(type);
52
- return metadata.label?.(object) || ['object name placeholder', { ns: type, default: 'New object' }];
55
+ return metadata.label?.(object) || ['object-name.placeholder', { ns: type, defaultValue: 'New object' }];
53
56
  };
54
57
 
55
58
  const items =
@@ -65,6 +68,7 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
65
68
  icon: metadata.icon,
66
69
  onSelect: ({ view, head }) => {
67
70
  const link = `[${label}](${Obj.getDXN(object)})`;
71
+ // "@@" inserts a block embed on its own line instead of an inline link.
68
72
  if (query?.startsWith('@')) {
69
73
  insertAtLineStart(view, head, `!${link}\n`);
70
74
  } else {
@@ -74,9 +78,30 @@ export const useLinkQuery = (db: Database.Database | undefined) => {
74
78
  };
75
79
  }) ?? [];
76
80
 
77
- return [{ id: 'echo', items }];
81
+ // Add "Create new document" option at the end.
82
+ const createItem: EditorMenuItem = {
83
+ id: 'create-document',
84
+ label: ['add-object.label', { ns: Markdown.Document.typename }],
85
+ icon: 'ph--plus--regular',
86
+ onSelect: ({ view, head }) => {
87
+ const doc = Markdown.make({ name: name || undefined });
88
+ db?.add(doc);
89
+ const label = name || t('object-name.placeholder', { ns: Markdown.Document.typename });
90
+ const link = `[${label}](${Obj.getDXN(doc)})`;
91
+ if (query?.startsWith('@')) {
92
+ insertAtLineStart(view, head, `!${link}\n`);
93
+ } else {
94
+ insertAtCursor(view, head, `${link} `);
95
+ }
96
+ },
97
+ };
98
+
99
+ return [
100
+ { id: 'echo', items },
101
+ { id: 'create', items: [createItem] },
102
+ ];
78
103
  },
79
- [db, filter, resolve],
104
+ [db, filter, resolve, t],
80
105
  );
81
106
 
82
107
  return handleLinkQuery;
package/src/index.ts CHANGED
@@ -9,3 +9,5 @@ export * from './types';
9
9
  export * from './util';
10
10
 
11
11
  export * from './MarkdownPlugin';
12
+
13
+ export { MarkdownEditor } from './components';
package/src/meta.ts CHANGED
@@ -6,7 +6,7 @@ import { type Plugin } from '@dxos/app-framework';
6
6
  import { trim } from '@dxos/util';
7
7
 
8
8
  export const meta: Plugin.Meta = {
9
- id: 'dxos.org/plugin/markdown',
9
+ id: 'org.dxos.plugin.markdown',
10
10
  name: 'Markdown',
11
11
  description: trim`
12
12
  Full-featured collaborative markdown editor with real-time editing, inline comments, and rich formatting.
@@ -0,0 +1,21 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import * as Effect from 'effect/Effect';
6
+
7
+ import { Operation } from '@dxos/operation';
8
+
9
+ import { CreateMarkdown } from './definitions';
10
+
11
+ import { Markdown } from '../types';
12
+
13
+ const handler: Operation.WithHandler<typeof CreateMarkdown> = CreateMarkdown.pipe(
14
+ Operation.withHandler(({ name, content }) =>
15
+ Effect.succeed({
16
+ object: Markdown.make({ name, content }),
17
+ }),
18
+ ),
19
+ );
20
+
21
+ export default handler;
@@ -0,0 +1 @@
1
+ {"conversations":[{"parameters":{"model":"@anthropic/claude-opus-4-6","stream":true,"tools":[{"name":"create","description":"Creates a new markdown document and adds it to the space.","inputSchema":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"content":{"type":"string"}},"additionalProperties":false}},{"name":"open","description":"Opens and reads the contents of a new markdown document.","inputSchema":{"type":"object","required":["doc"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]}},"additionalProperties":false}},{"name":"update","description":"Applies a set of edits to the markdown document.","inputSchema":{"type":"object","required":["doc","edits"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]},"edits":{"type":"array","items":{"type":"object","required":["oldString","newString"],"properties":{"oldString":{"type":"string","description":"The text to find in the document."},"newString":{"type":"string","description":"The text to replace it with."},"replaceAll":{"type":"boolean","description":"If true, replaces all occurrences. Defaults to false (first occurrence only)."}},"additionalProperties":false},"description":"The edits to apply to the document. Each edit finds oldString and replaces it with newString."}},"additionalProperties":false}}]},"prompt":{"content":[{"role":"system","content":"## Blueprints Definitions\n\n<blueprint>\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n \n Example:\n ```diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ```\n</blueprint>","options":{}},{"role":"user","content":"Create a document with a cookie recipe.","options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_012JxJX9c9zMwz1afCUkzwVu","modelId":"claude-opus-4-6","timestamp":"2026-03-31T10:31:34.891Z","metadata":{}},{"type":"reasoning-start","id":"0","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"The user wants me to create a document","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" with a cookie recipe. Let","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" me create","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" a nice","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" markdown","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" document with a classic","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" cookie recipe.","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{"anthropic":{"type":"thinking","signature":"Er0CClkIDBgCKkAy43GfB0+dbRMkfoVt2xpO0Chn5/g7c7dPprx3PV9+Z7iiBGhoRS54CpYtz+0wxdGKZKXYjkv0fAS94B7ulrYlMg9jbGF1ZGUtb3B1cy00LTY4ABIMbxqP0jme3H2iac1PGgxv9n95hpdlHMu60CwiMPoqsrE1DUcrsluzqmyr09jJ9mefc6aAwO998x1oGDPfkQkUA22by5UICBxSV3wtDCqRAWBPEuk+djMIeKw56FmK1OEYvnnoo1/LyTyhyxISLgAamgvvuO1k3IL7ibrjHXX9HO45dTXJl/L+lAWaVPM/0vBEIe9RCAw6na5IKbiG+1rXOdXjEeUPk6ERWxOFZSGkCxZozY+sThT/fgpLe3bX1f1tMkg9cvrtF5EWMrXx47+JPiVFrhtX7ORr0fFqEORBMTcYAQ=="}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"tool-params-start","id":"toolu_019Fv26pqURQCfheV1mPgnnx","name":"create","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"{\"name\": \"","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Classic Ch","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ocolate","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" Chip Cooki","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"es\"","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":", \"conten","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t\":","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" \"","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"# Classic ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Chocolate Ch","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ip Cookies\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n\\nA time","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"less ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"recipe for ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"soft, chew","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"y ch","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ocolat","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e chip ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"cookies tha","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t are ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"golden o","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n t","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"he edges an","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"d gooe","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"y i","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"the c","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"enter.\\n\\n#","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"# In","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"gredien","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ts\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n- 2 ¼ c","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ups all-p","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"urpose fl","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"our\\n- 1 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"tsp baking","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" soda\\n- 1","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" tsp sal","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t\\n- 1 cup","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" (2 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"sticks) uns","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"alted butt","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"er","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":", softened\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n- ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"¾ cup granu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lated sugar\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n- ¾ cup p","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"acked bro","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"wn ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"sugar\\n-","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" 2 large ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"eggs\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n- 2 tsp v","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"anilla e","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"xtr","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"act\\n- 2","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" cups semi","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"-sweet choc","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"olate ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"chip","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"s\\n\\n##","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" Instructi","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ons\\n\\n1. **","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Preheat** y","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"our oven","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" to 375°F (1","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"90°C","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"). Line ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"baking ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"she","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ets with par","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"chment paper","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":".\\n2. **Com","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"bine dry in","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"gr","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"edients:**","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" In a ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"mediu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"m ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"bow","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"l, ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"whisk to","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"gether the f","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lour, baki","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ng sod","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"a,","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" and sa","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lt. Set as","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"id","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e.\\n3. ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"**Cream th","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e butter ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"and suga","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"rs:*","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"* In a lar","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ge bowl, ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"bea","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t the ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"softene","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"d butter,","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" granu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lated su","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"gar, and b","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"rown su","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"gar to","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ge","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"th","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"er until ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"light and ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"fl","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"uffy,","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" ab","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"out 3–4 m","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"inutes.\\n4.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" **Add e","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ggs a","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"nd ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"vanilla:*","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"* Beat","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" in ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"the eggs ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"one at a ti","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"me, then mi","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"x ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"in the v","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ani","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lla extrac","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"un","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"til well ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"combined.\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"5. *","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"*Mix i","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n dry ingr","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"edients:** G","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"radua","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lly add the","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" flou","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"r mixture to","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" the ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"wet ing","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"redients,","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" mixing on l","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ow","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" spe","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ed until jus","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"t ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"combined.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" Do not ove","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"rm","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ix.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n6. **Fol","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"d in c","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"hocolate","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" chips","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":":** S","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"tir in the","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" chocolate","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" chips wit","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"h a spatul","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"a or woode","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n spoon","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":".\\n7.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" *","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"*S","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"coop t","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"he dough:** ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Drop","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" rounded ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"table","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"spoons o","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"f dough o","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"nto the p","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"repared ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"baking sheet","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"s, spa","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"cing t","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"hem about ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"2 inches ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"apart","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":".\\n8. **Bak","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e:** Bake fo","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"r ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"9–11 minute","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"s,","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" or until ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"the edges ar","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"go","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"lden","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" brown but","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" t","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"he center","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"s ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"still","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" l","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ook slightl","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"y underdone.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n9. **Cool:","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"** Let the ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"cooki","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"es cool","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" on the","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" baking sh","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"eet ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"for ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"5 minu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"tes, th","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"en transfe","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"r to","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" a wire rac","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"k to cool c","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ompletely.\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n## Tips\\n\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n- For","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" extra","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" flavo","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"r, use a ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"mix of semi-","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"sweet and d","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ark choco","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"late chips.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n- ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Chill t","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"he ","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"dough","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" for 30","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" minu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"tes bef","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ore baking","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" f","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"or thicker","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" cook","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ies.","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"\\n- Store c","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ookies in an","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" airtig","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ht conta","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"iner at","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" room te","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"mperatu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"re for u","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"p to 5 da","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ys.\\n\\n*","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"*Yi","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"eld:** appr","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ox","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"imate","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"ly 48 coo","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"kies\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"n**Prep Tim","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"e:** 15 minu","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"tes\\n**","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"Bake Ti","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"me:** 9–1","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"1 minut","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":"es per","metadata":{}},{"type":"tool-params-delta","id":"toolu_019Fv26pqURQCfheV1mPgnnx","delta":" batch\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_019Fv26pqURQCfheV1mPgnnx","metadata":{}},{"type":"finish","reason":"tool-calls","usage":{"inputTokens":1593,"outputTokens":644,"totalTokens":2237},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":1593,"output_tokens":8,"server_tool_use":null,"service_tier":"standard"}}}}]},{"parameters":{"model":"@anthropic/claude-opus-4-6","stream":true,"tools":[{"name":"create","description":"Creates a new markdown document and adds it to the space.","inputSchema":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"content":{"type":"string"}},"additionalProperties":false}},{"name":"open","description":"Opens and reads the contents of a new markdown document.","inputSchema":{"type":"object","required":["doc"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]}},"additionalProperties":false}},{"name":"update","description":"Applies a set of edits to the markdown document.","inputSchema":{"type":"object","required":["doc","edits"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]},"edits":{"type":"array","items":{"type":"object","required":["oldString","newString"],"properties":{"oldString":{"type":"string","description":"The text to find in the document."},"newString":{"type":"string","description":"The text to replace it with."},"replaceAll":{"type":"boolean","description":"If true, replaces all occurrences. Defaults to false (first occurrence only)."}},"additionalProperties":false},"description":"The edits to apply to the document. Each edit finds oldString and replaces it with newString."}},"additionalProperties":false}}]},"prompt":{"content":[{"role":"system","content":"## Blueprints Definitions\n\n<blueprint>\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n \n Example:\n ```diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ```\n</blueprint>","options":{}},{"role":"user","content":"Create a document with a cookie recipe.","options":{}},{"role":"assistant","content":[{"type":"reasoning","text":"The user wants me to create a document with a cookie recipe. Let me create a nice markdown document with a classic cookie recipe.","options":{}},{"type":"tool-call","id":"toolu_019Fv26pqURQCfheV1mPgnnx","name":"create","params":{"name":"Classic Chocolate Chip Cookies","content":"# Classic Chocolate Chip Cookies\n\nA timeless recipe for soft, chewy chocolate chip cookies that are golden on the edges and gooey in the center.\n\n## Ingredients\n\n- 2 ¼ cups all-purpose flour\n- 1 tsp baking soda\n- 1 tsp salt\n- 1 cup (2 sticks) unsalted butter, softened\n- ¾ cup granulated sugar\n- ¾ cup packed brown sugar\n- 2 large eggs\n- 2 tsp vanilla extract\n- 2 cups semi-sweet chocolate chips\n\n## Instructions\n\n1. **Preheat** your oven to 375°F (190°C). Line baking sheets with parchment paper.\n2. **Combine dry ingredients:** In a medium bowl, whisk together the flour, baking soda, and salt. Set aside.\n3. **Cream the butter and sugars:** In a large bowl, beat the softened butter, granulated sugar, and brown sugar together until light and fluffy, about 3–4 minutes.\n4. **Add eggs and vanilla:** Beat in the eggs one at a time, then mix in the vanilla extract until well combined.\n5. **Mix in dry ingredients:** Gradually add the flour mixture to the wet ingredients, mixing on low speed until just combined. Do not overmix.\n6. **Fold in chocolate chips:** Stir in the chocolate chips with a spatula or wooden spoon.\n7. **Scoop the dough:** Drop rounded tablespoons of dough onto the prepared baking sheets, spacing them about 2 inches apart.\n8. **Bake:** Bake for 9–11 minutes, or until the edges are golden brown but the centers still look slightly underdone.\n9. **Cool:** Let the cookies cool on the baking sheet for 5 minutes, then transfer to a wire rack to cool completely.\n\n## Tips\n\n- For extra flavor, use a mix of semi-sweet and dark chocolate chips.\n- Chill the dough for 30 minutes before baking for thicker cookies.\n- Store cookies in an airtight container at room temperature for up to 5 days.\n\n**Yield:** approximately 48 cookies\n**Prep Time:** 15 minutes\n**Bake Time:** 9–11 minutes per batch"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_019Fv26pqURQCfheV1mPgnnx","name":"create","isFailure":false,"result":{"_id":"Exit","_tag":"Success","value":{"id":"dxn:echo:BDJXMULPW5FB55UZ7KP5HLDHVTXUTHE2U:01JGFJJZ00G0WKQSJGMAKCNT94"}},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_013yom4ounEqde4YvxGMXNNp","modelId":"claude-opus-4-6","timestamp":"2026-03-31T10:31:42.888Z","metadata":{}},{"type":"text-start","id":"0","metadata":{}},{"type":"text-delta","id":"0","delta":"Your","metadata":{}},{"type":"text-delta","id":"0","delta":" chocolate chip cookie","metadata":{}},{"type":"text-delta","id":"0","delta":" recipe document","metadata":{}},{"type":"text-delta","id":"0","delta":" has been created","metadata":{}},{"type":"text-delta","id":"0","delta":"! ","metadata":{}},{"type":"text-delta","id":"0","delta":"🍪 ","metadata":{}},{"type":"text-delta","id":"0","delta":"Here","metadata":{}},{"type":"text-delta","id":"0","delta":"'s a","metadata":{}},{"type":"text-delta","id":"0","delta":" summary of what","metadata":{}},{"type":"text-delta","id":"0","delta":"'s","metadata":{}},{"type":"text-delta","id":"0","delta":" included","metadata":{}},{"type":"text-delta","id":"0","delta":":\n\n-","metadata":{}},{"type":"text-delta","id":"0","delta":" **Title","metadata":{}},{"type":"text-delta","id":"0","delta":":**","metadata":{}},{"type":"text-delta","id":"0","delta":" Classic Chocolate Chip Cookies","metadata":{}},{"type":"text-delta","id":"0","delta":"\n- **Ingredients:** A","metadata":{}},{"type":"text-delta","id":"0","delta":" full","metadata":{}},{"type":"text-delta","id":"0","delta":" list including","metadata":{}},{"type":"text-delta","id":"0","delta":" flour, butter","metadata":{}},{"type":"text-delta","id":"0","delta":", sug","metadata":{}},{"type":"text-delta","id":"0","delta":"ars, eggs, vanilla","metadata":{}},{"type":"text-delta","id":"0","delta":", and chocolate chips\n- **Instructions","metadata":{}},{"type":"text-delta","id":"0","delta":":** ","metadata":{}},{"type":"text-delta","id":"0","delta":"9","metadata":{}},{"type":"text-delta","id":"0","delta":" ","metadata":{}},{"type":"text-delta","id":"0","delta":"step","metadata":{}},{"type":"text-delta","id":"0","delta":"-by-step directions","metadata":{}},{"type":"text-delta","id":"0","delta":" from","metadata":{}},{"type":"text-delta","id":"0","delta":" pre","metadata":{}},{"type":"text-delta","id":"0","delta":"heating the","metadata":{}},{"type":"text-delta","id":"0","delta":" oven to cooling the cookies\n-","metadata":{}},{"type":"text-delta","id":"0","delta":" **Tips:** Helpful","metadata":{}},{"type":"text-delta","id":"0","delta":" suggestions","metadata":{}},{"type":"text-delta","id":"0","delta":" like","metadata":{}},{"type":"text-delta","id":"0","delta":" ch","metadata":{}},{"type":"text-delta","id":"0","delta":"illing the dough for th","metadata":{}},{"type":"text-delta","id":"0","delta":"icker cookies and mixing","metadata":{}},{"type":"text-delta","id":"0","delta":" chocolate","metadata":{}},{"type":"text-delta","id":"0","delta":" chip","metadata":{}},{"type":"text-delta","id":"0","delta":" varieties","metadata":{}},{"type":"text-delta","id":"0","delta":"\n- **Details","metadata":{}},{"type":"text-delta","id":"0","delta":":** Yields ~","metadata":{}},{"type":"text-delta","id":"0","delta":"48 cookies, ","metadata":{}},{"type":"text-delta","id":"0","delta":"15","metadata":{}},{"type":"text-delta","id":"0","delta":" min","metadata":{}},{"type":"text-delta","id":"0","delta":" prep, 9–","metadata":{}},{"type":"text-delta","id":"0","delta":"11 min bake time","metadata":{}},{"type":"text-delta","id":"0","delta":"\n\nLet","metadata":{}},{"type":"text-delta","id":"0","delta":" me know if you'd","metadata":{}},{"type":"text-delta","id":"0","delta":" like to","metadata":{}},{"type":"text-delta","id":"0","delta":" make","metadata":{}},{"type":"text-delta","id":"0","delta":" any changes or additions","metadata":{}},{"type":"text-delta","id":"0","delta":" to the recipe!","metadata":{}},{"type":"text-end","id":"0","metadata":{}},{"type":"finish","reason":"stop","usage":{"inputTokens":2258,"outputTokens":156,"totalTokens":2414},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":2258,"output_tokens":1,"server_tool_use":null,"service_tier":"standard"}}}}]},{"parameters":{"model":"@anthropic/claude-opus-4-6","stream":true,"tools":[{"name":"create","description":"Creates a new markdown document and adds it to the space.","inputSchema":{"type":"object","required":["name","content"],"properties":{"name":{"type":"string"},"content":{"type":"string"}},"additionalProperties":false}},{"name":"open","description":"Opens and reads the contents of a new markdown document.","inputSchema":{"type":"object","required":["doc"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]}},"additionalProperties":false}},{"name":"update","description":"Applies a set of edits to the markdown document.","inputSchema":{"type":"object","required":["doc","edits"],"properties":{"doc":{"type":"string","description":"The ID of the referenced object. Formats accepted:\n- DXN (dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4). DXNs can be prepended with an @ symbol for compatibility with in-text references.\n- space ID, object ID tuple (spaceID:objectID)\n- Only object ID that is assumed to be in the current space (01KG7R1ZXWFMWQ4DA1Q6TN1DG4)","examples":["dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","@dxn:echo:@:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","BM3FSHFOMJCHCG5QW7JTVKGYABD2GAA7G:01KG7R1ZXWFMWQ4DA1Q6TN1DG4","01KG7R1ZXWFMWQ4DA1Q6TN1DG4"]},"edits":{"type":"array","items":{"type":"object","required":["oldString","newString"],"properties":{"oldString":{"type":"string","description":"The text to find in the document."},"newString":{"type":"string","description":"The text to replace it with."},"replaceAll":{"type":"boolean","description":"If true, replaces all occurrences. Defaults to false (first occurrence only)."}},"additionalProperties":false},"description":"The edits to apply to the document. Each edit finds oldString and replaces it with newString."}},"additionalProperties":false}}]},"prompt":{"content":[{"role":"system","content":"## Blueprints Definitions\n\n<blueprint>\n You can create, read and update markdown documents.\n When asked to edit or update documents return updates as a set of compact diff string pairs.\n For each diff, respond with the smallest possible matching span.\n \n Example:\n ```diff\n - \"There is a tyop in this sentence.\"\n + \"There is a typo in this sentence.\"\n - \"This id good.\"\n + \"This sentence is really good.\"\n ```\n</blueprint>","options":{}},{"role":"user","content":"Create a document with a cookie recipe.","options":{}},{"role":"assistant","content":[{"type":"reasoning","text":"The user wants me to create a document with a cookie recipe. Let me create a nice markdown document with a classic cookie recipe.","options":{}},{"type":"tool-call","id":"toolu_019Fv26pqURQCfheV1mPgnnx","name":"create","params":{"name":"Classic Chocolate Chip Cookies","content":"# Classic Chocolate Chip Cookies\n\nA timeless recipe for soft, chewy chocolate chip cookies that are golden on the edges and gooey in the center.\n\n## Ingredients\n\n- 2 ¼ cups all-purpose flour\n- 1 tsp baking soda\n- 1 tsp salt\n- 1 cup (2 sticks) unsalted butter, softened\n- ¾ cup granulated sugar\n- ¾ cup packed brown sugar\n- 2 large eggs\n- 2 tsp vanilla extract\n- 2 cups semi-sweet chocolate chips\n\n## Instructions\n\n1. **Preheat** your oven to 375°F (190°C). Line baking sheets with parchment paper.\n2. **Combine dry ingredients:** In a medium bowl, whisk together the flour, baking soda, and salt. Set aside.\n3. **Cream the butter and sugars:** In a large bowl, beat the softened butter, granulated sugar, and brown sugar together until light and fluffy, about 3–4 minutes.\n4. **Add eggs and vanilla:** Beat in the eggs one at a time, then mix in the vanilla extract until well combined.\n5. **Mix in dry ingredients:** Gradually add the flour mixture to the wet ingredients, mixing on low speed until just combined. Do not overmix.\n6. **Fold in chocolate chips:** Stir in the chocolate chips with a spatula or wooden spoon.\n7. **Scoop the dough:** Drop rounded tablespoons of dough onto the prepared baking sheets, spacing them about 2 inches apart.\n8. **Bake:** Bake for 9–11 minutes, or until the edges are golden brown but the centers still look slightly underdone.\n9. **Cool:** Let the cookies cool on the baking sheet for 5 minutes, then transfer to a wire rack to cool completely.\n\n## Tips\n\n- For extra flavor, use a mix of semi-sweet and dark chocolate chips.\n- Chill the dough for 30 minutes before baking for thicker cookies.\n- Store cookies in an airtight container at room temperature for up to 5 days.\n\n**Yield:** approximately 48 cookies\n**Prep Time:** 15 minutes\n**Bake Time:** 9–11 minutes per batch"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_019Fv26pqURQCfheV1mPgnnx","name":"create","isFailure":false,"result":{"_id":"Exit","_tag":"Success","value":{"id":"dxn:echo:BDJXMULPW5FB55UZ7KP5HLDHVTXUTHE2U:01JGFJJZ00G0WKQSJGMAKCNTHQ"}},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_012W1fZgnVCvwo8eJYnfcwGd","modelId":"claude-opus-4-6","timestamp":"2026-04-03T15:09:59.241Z","metadata":{}},{"type":"text-start","id":"0","metadata":{}},{"type":"text-delta","id":"0","delta":"Your","metadata":{}},{"type":"text-delta","id":"0","delta":" cookie recipe document has been created! 🍪 Here's a summary of what's inside:\n\n**Classic","metadata":{}},{"type":"text-delta","id":"0","delta":" Chocolate Chip Cookies**\n\n- A full list of **ingredients** including butter","metadata":{}},{"type":"text-delta","id":"0","delta":", sugars, flour, eggs, vanilla, and chocolate chips.\n- **Step-by-step instructions** covering everything from preheating the oven to cooling the cookies.\n-","metadata":{}},{"type":"text-delta","id":"0","delta":" Helpful **tips** like chilling the dough for thicker cookies and mixing chocolate chip varieties.\n- **","metadata":{}},{"type":"text-delta","id":"0","delta":"Yield:** ~48 cookies | **Prep:** 15 min | **Bake:** 9–11 min","metadata":{}},{"type":"text-delta","id":"0","delta":" per batch\n\nLet me know if you'd like to make any changes to the recipe!","metadata":{}},{"type":"text-end","id":"0","metadata":{}},{"type":"finish","reason":"stop","usage":{"inputTokens":2259,"outputTokens":156,"totalTokens":2415},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":0},"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"input_tokens":2259,"output_tokens":1,"server_tool_use":null,"service_tier":"standard"}}}}]}]}