@dxos/plugin-markdown 0.8.4-main.70d3990 → 0.8.4-main.7996785055
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.
- package/dist/lib/browser/MarkdownCard-ZHQBD4AV.mjs +122 -0
- package/dist/lib/browser/MarkdownCard-ZHQBD4AV.mjs.map +7 -0
- package/dist/lib/browser/MarkdownContainer-XEUOYBPA.mjs +125 -0
- package/dist/lib/browser/MarkdownContainer-XEUOYBPA.mjs.map +7 -0
- package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs +106 -0
- package/dist/lib/browser/MarkdownSettings-OD7AJSSJ.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-3MYLO74J.mjs → anchor-sort-PSCEA6EJ.mjs} +9 -7
- package/dist/lib/browser/anchor-sort-PSCEA6EJ.mjs.map +7 -0
- package/dist/lib/browser/app-graph-serializer-DAVFEX7R.mjs +63 -0
- package/dist/lib/browser/app-graph-serializer-DAVFEX7R.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-LHVNOMJT.mjs +19 -0
- package/dist/lib/browser/blueprint-definition-LHVNOMJT.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +10 -0
- package/dist/lib/browser/chunk-5VT6IW5B.mjs +84 -0
- package/dist/lib/browser/chunk-5VT6IW5B.mjs.map +7 -0
- package/dist/lib/browser/{chunk-NXT2E2BG.mjs → chunk-CJSWKCKU.mjs} +7 -4
- package/dist/lib/browser/chunk-CJSWKCKU.mjs.map +7 -0
- package/dist/lib/browser/chunk-G6BRWY3G.mjs +158 -0
- package/dist/lib/browser/chunk-G6BRWY3G.mjs.map +7 -0
- package/dist/lib/browser/chunk-M2XFCKXA.mjs +8 -0
- package/dist/lib/browser/chunk-M2XFCKXA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BQTYJOFB.mjs → chunk-RYZHVXZ5.mjs} +2 -2
- package/dist/lib/browser/chunk-RYZHVXZ5.mjs.map +7 -0
- package/dist/lib/browser/chunk-XWYF5LFE.mjs +8 -0
- package/dist/lib/browser/chunk-XWYF5LFE.mjs.map +7 -0
- package/dist/lib/browser/chunk-YALLVET2.mjs +757 -0
- package/dist/lib/browser/chunk-YALLVET2.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZN75YHSV.mjs +50 -0
- package/dist/lib/browser/chunk-ZN75YHSV.mjs.map +7 -0
- package/dist/lib/browser/cli/index.mjs +44 -0
- package/dist/lib/browser/cli/index.mjs.map +7 -0
- package/dist/lib/browser/create-QD27F6E7.mjs +30 -0
- package/dist/lib/browser/create-QD27F6E7.mjs.map +7 -0
- package/dist/lib/browser/create-markdown-LEAJPLHT.mjs +22 -0
- package/dist/lib/browser/create-markdown-LEAJPLHT.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +132 -128
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/open-YDABYPCA.mjs +21 -0
- package/dist/lib/browser/open-YDABYPCA.mjs.map +7 -0
- package/dist/lib/browser/operation-handler-W3QXMMMQ.mjs +17 -0
- package/dist/lib/browser/operation-handler-W3QXMMMQ.mjs.map +7 -0
- package/dist/lib/browser/operations/index.mjs +13 -0
- package/dist/lib/browser/react-surface-N7FV3PXH.mjs +120 -0
- package/dist/lib/browser/react-surface-N7FV3PXH.mjs.map +7 -0
- package/dist/lib/browser/scroll-to-anchor-3CGV3XI7.mjs +49 -0
- package/dist/lib/browser/scroll-to-anchor-3CGV3XI7.mjs.map +7 -0
- package/dist/lib/browser/set-view-mode-XLD3RXW4.mjs +26 -0
- package/dist/lib/browser/set-view-mode-XLD3RXW4.mjs.map +7 -0
- package/dist/lib/browser/settings-3UMXG4TP.mjs +38 -0
- package/dist/lib/browser/settings-3UMXG4TP.mjs.map +7 -0
- package/dist/lib/browser/state-IYKJ6EV3.mjs +48 -0
- package/dist/lib/browser/state-IYKJ6EV3.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +8 -4
- package/dist/lib/browser/update-WKAMI4AD.mjs +45 -0
- package/dist/lib/browser/update-WKAMI4AD.mjs.map +7 -0
- package/dist/lib/node-esm/MarkdownCard-VB3NHVX4.mjs +123 -0
- package/dist/lib/node-esm/MarkdownCard-VB3NHVX4.mjs.map +7 -0
- package/dist/lib/node-esm/MarkdownContainer-25WFZLCC.mjs +126 -0
- package/dist/lib/node-esm/MarkdownContainer-25WFZLCC.mjs.map +7 -0
- package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs +107 -0
- package/dist/lib/node-esm/MarkdownSettings-U7GJ4OP3.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-W4HCTYUQ.mjs → anchor-sort-6GD4SGQL.mjs} +9 -7
- package/dist/lib/node-esm/anchor-sort-6GD4SGQL.mjs.map +7 -0
- package/dist/lib/node-esm/app-graph-serializer-JURUUUBI.mjs +64 -0
- package/dist/lib/node-esm/app-graph-serializer-JURUUUBI.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-3LUZEJ4Z.mjs +20 -0
- package/dist/lib/node-esm/blueprint-definition-3LUZEJ4Z.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +11 -0
- package/dist/lib/node-esm/chunk-6LHNAAMP.mjs +159 -0
- package/dist/lib/node-esm/chunk-6LHNAAMP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-CRUJMQR2.mjs +758 -0
- package/dist/lib/node-esm/chunk-CRUJMQR2.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SHAMSMKQ.mjs → chunk-CW4FZNMZ.mjs} +2 -2
- package/dist/lib/node-esm/chunk-CW4FZNMZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-EPNCYA73.mjs +85 -0
- package/dist/lib/node-esm/chunk-EPNCYA73.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-I5JSQBPI.mjs → chunk-FC3GPLJG.mjs} +7 -4
- package/dist/lib/node-esm/chunk-FC3GPLJG.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-G6W4DJBM.mjs +51 -0
- package/dist/lib/node-esm/chunk-G6W4DJBM.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-JLOCBILO.mjs +10 -0
- package/dist/lib/node-esm/chunk-JLOCBILO.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-YWQQYV76.mjs +10 -0
- package/dist/lib/node-esm/chunk-YWQQYV76.mjs.map +7 -0
- package/dist/lib/node-esm/cli/index.mjs +45 -0
- package/dist/lib/node-esm/cli/index.mjs.map +7 -0
- package/dist/lib/node-esm/create-X7H4LYI5.mjs +31 -0
- package/dist/lib/node-esm/create-X7H4LYI5.mjs.map +7 -0
- package/dist/lib/node-esm/create-markdown-7POKQDVQ.mjs +23 -0
- package/dist/lib/node-esm/create-markdown-7POKQDVQ.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +132 -128
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/open-FZVFWXC7.mjs +22 -0
- package/dist/lib/node-esm/open-FZVFWXC7.mjs.map +7 -0
- package/dist/lib/node-esm/operation-handler-TP26H7QE.mjs +18 -0
- package/dist/lib/node-esm/operation-handler-TP26H7QE.mjs.map +7 -0
- package/dist/lib/node-esm/operations/index.mjs +14 -0
- package/dist/lib/node-esm/react-surface-XSKLSF6A.mjs +121 -0
- package/dist/lib/node-esm/react-surface-XSKLSF6A.mjs.map +7 -0
- package/dist/lib/node-esm/scroll-to-anchor-KWBJLM5Q.mjs +50 -0
- package/dist/lib/node-esm/scroll-to-anchor-KWBJLM5Q.mjs.map +7 -0
- package/dist/lib/node-esm/set-view-mode-FFEKYLU3.mjs +27 -0
- package/dist/lib/node-esm/set-view-mode-FFEKYLU3.mjs.map +7 -0
- package/dist/lib/node-esm/settings-UAN22O42.mjs +39 -0
- package/dist/lib/node-esm/settings-UAN22O42.mjs.map +7 -0
- package/dist/lib/node-esm/state-62IBFPTK.mjs +49 -0
- package/dist/lib/node-esm/state-62IBFPTK.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +8 -4
- package/dist/lib/node-esm/update-WPEFBY4M.mjs +46 -0
- package/dist/lib/node-esm/update-WPEFBY4M.mjs.map +7 -0
- package/dist/types/src/MarkdownPlugin.d.ts +2 -1
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +4 -0
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +1 -0
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts +6 -0
- package/dist/types/src/capabilities/anchor-sort/anchor-sort.d.ts.map +1 -0
- package/dist/types/src/capabilities/anchor-sort/index.d.ts +3 -0
- package/dist/types/src/capabilities/anchor-sort/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts +5 -0
- package/dist/types/src/capabilities/app-graph-serializer/app-graph-serializer.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-serializer/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +5 -0
- package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +6 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +6 -13
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/operation-handler/index.d.ts +4 -0
- package/dist/types/src/capabilities/operation-handler/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts +6 -0
- package/dist/types/src/capabilities/operation-handler/operation-handler.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +3 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +7 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/index.d.ts +3 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/state.d.ts +6 -0
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
- package/dist/types/src/cli/index.d.ts +2 -0
- package/dist/types/src/cli/index.d.ts.map +1 -0
- package/dist/types/src/cli/plugin.d.ts +3 -0
- package/dist/types/src/cli/plugin.d.ts.map +1 -0
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts +1 -1
- package/dist/types/src/components/MarkdownEditor/FileUpload.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +17 -11
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +2 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts +16 -10
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorContent.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts +10 -5
- package/dist/types/src/components/MarkdownEditor/MarkdownEditorToolbar.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +1 -5
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts +8 -0
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts +9 -0
- package/dist/types/src/containers/MarkdownCard/MarkdownCard.stories.d.ts.map +1 -0
- package/dist/types/src/{components → containers}/MarkdownCard/index.d.ts +0 -1
- package/dist/types/src/containers/MarkdownCard/index.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownCard/snippet.d.ts +15 -0
- package/dist/types/src/containers/MarkdownCard/snippet.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts +30 -0
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.d.ts.map +1 -0
- package/dist/types/src/{components → containers/MarkdownContainer}/MarkdownContainer.stories.d.ts +31 -1
- package/dist/types/src/containers/MarkdownContainer/MarkdownContainer.stories.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownContainer/index.d.ts +3 -0
- package/dist/types/src/containers/MarkdownContainer/index.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownSettings/MarkdownSettings.d.ts +8 -0
- package/dist/types/src/containers/MarkdownSettings/MarkdownSettings.d.ts.map +1 -0
- package/dist/types/src/containers/MarkdownSettings/index.d.ts +3 -0
- package/dist/types/src/containers/MarkdownSettings/index.d.ts.map +1 -0
- package/dist/types/src/containers/index.d.ts +6 -0
- package/dist/types/src/containers/index.d.ts.map +1 -0
- package/dist/types/src/hooks/index.d.ts +0 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useEditorMenuOptions.d.ts.map +1 -1
- package/dist/types/src/hooks/useExtensions.d.ts +7 -5
- package/dist/types/src/hooks/useExtensions.d.ts.map +1 -1
- package/dist/types/src/hooks/useLinkQuery.d.ts +2 -2
- package/dist/types/src/hooks/useLinkQuery.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/create-markdown.d.ts +5 -0
- package/dist/types/src/operations/create-markdown.d.ts.map +1 -0
- package/dist/types/src/operations/create.d.ts +5 -0
- package/dist/types/src/operations/create.d.ts.map +1 -0
- package/dist/types/src/operations/create.test.d.ts.map +1 -0
- package/dist/types/src/operations/definitions.d.ts +61 -0
- package/dist/types/src/operations/definitions.d.ts.map +1 -0
- package/dist/types/src/operations/index.d.ts +4 -0
- package/dist/types/src/operations/index.d.ts.map +1 -0
- package/dist/types/src/operations/open.d.ts +5 -0
- package/dist/types/src/operations/open.d.ts.map +1 -0
- package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
- package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
- package/dist/types/src/operations/set-view-mode.d.ts +5 -0
- package/dist/types/src/operations/set-view-mode.d.ts.map +1 -0
- package/dist/types/src/operations/update.d.ts +5 -0
- package/dist/types/src/operations/update.d.ts.map +1 -0
- package/dist/types/src/operations/update.test.d.ts.map +1 -0
- package/dist/types/src/testing.d.ts +2 -2
- package/dist/types/src/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +30 -0
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Markdown.d.ts +13 -13
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +34 -0
- package/dist/types/src/types/capabilities.d.ts.map +1 -0
- package/dist/types/src/types/events.d.ts +5 -0
- package/dist/types/src/types/events.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -2
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/util.d.ts +4 -1
- package/dist/types/src/util.d.ts.map +1 -1
- package/dist/types/src/util.test.d.ts +2 -0
- package/dist/types/src/util.test.d.ts.map +1 -0
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +98 -67
- package/src/MarkdownPlugin.tsx +70 -79
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/markdown-blueprint.ts +44 -0
- package/src/capabilities/anchor-sort/anchor-sort.ts +37 -0
- package/src/capabilities/anchor-sort/index.ts +7 -0
- package/src/capabilities/app-graph-serializer/app-graph-serializer.ts +64 -0
- package/src/capabilities/app-graph-serializer/index.ts +7 -0
- package/src/capabilities/artifact-definition/artifact-definition.ts +110 -0
- package/src/capabilities/artifact-definition/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +17 -0
- package/src/capabilities/blueprint-definition/index.ts +7 -0
- package/src/capabilities/index.ts +6 -11
- package/src/capabilities/operation-handler/index.ts +11 -0
- package/src/capabilities/operation-handler/operation-handler.ts +16 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +120 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +37 -0
- package/src/capabilities/state/index.ts +7 -0
- package/src/capabilities/state/state.ts +47 -0
- package/src/cli/index.ts +5 -0
- package/src/cli/plugin.ts +40 -0
- package/src/components/MarkdownEditor/FileUpload.tsx +2 -2
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +35 -36
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +74 -44
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +62 -25
- package/src/components/MarkdownEditor/MarkdownEditorToolbar.tsx +48 -53
- package/src/components/index.ts +2 -9
- package/src/containers/MarkdownCard/MarkdownCard.stories.tsx +68 -0
- package/src/containers/MarkdownCard/MarkdownCard.tsx +57 -0
- package/src/{components → containers}/MarkdownCard/index.ts +0 -2
- package/src/containers/MarkdownCard/snippet.ts +75 -0
- package/src/containers/MarkdownContainer/MarkdownContainer.stories.tsx +133 -0
- package/src/containers/MarkdownContainer/MarkdownContainer.tsx +134 -0
- package/src/containers/MarkdownContainer/index.ts +6 -0
- package/src/containers/MarkdownSettings/MarkdownSettings.tsx +122 -0
- package/src/containers/MarkdownSettings/index.ts +7 -0
- package/src/containers/index.ts +11 -0
- package/src/hooks/index.ts +0 -1
- package/src/hooks/useEditorMenuOptions.ts +10 -13
- package/src/hooks/useExtensions.tsx +88 -106
- package/src/hooks/useLinkQuery.ts +16 -14
- package/src/index.ts +3 -2
- package/src/meta.ts +3 -3
- package/src/operations/create-markdown.ts +21 -0
- package/src/operations/create.conversations.json +1 -0
- package/src/operations/create.test.ts +93 -0
- package/src/operations/create.ts +27 -0
- package/src/operations/definitions.ts +119 -0
- package/src/operations/index.ts +16 -0
- package/src/operations/open.ts +25 -0
- package/src/operations/scroll-to-anchor.ts +40 -0
- package/src/operations/set-view-mode.ts +25 -0
- package/src/operations/update.conversations.json +1 -0
- package/src/operations/update.test.ts +216 -0
- package/src/operations/update.ts +51 -0
- package/src/testing.ts +4 -4
- package/src/translations.ts +3 -0
- package/src/types/Markdown.ts +15 -7
- package/src/types/capabilities.ts +50 -0
- package/src/types/events.ts +14 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +3 -2
- package/src/util.test.ts +44 -0
- package/src/util.tsx +76 -6
- package/dist/lib/browser/MarkdownCard-TC3GGUSX.mjs +0 -12
- package/dist/lib/browser/MarkdownContainer-YF22DV4M.mjs +0 -15
- package/dist/lib/browser/anchor-sort-3MYLO74J.mjs.map +0 -7
- package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs +0 -51
- package/dist/lib/browser/app-graph-serializer-BZJ4TQOE.mjs.map +0 -7
- package/dist/lib/browser/blueprint-definition-HED54GGW.mjs +0 -13
- package/dist/lib/browser/chunk-3IPVL3E4.mjs +0 -20
- package/dist/lib/browser/chunk-3IPVL3E4.mjs.map +0 -7
- package/dist/lib/browser/chunk-BE3IO2CM.mjs +0 -150
- package/dist/lib/browser/chunk-BE3IO2CM.mjs.map +0 -7
- package/dist/lib/browser/chunk-BQTYJOFB.mjs.map +0 -7
- package/dist/lib/browser/chunk-CN35HEBX.mjs +0 -79
- package/dist/lib/browser/chunk-CN35HEBX.mjs.map +0 -7
- package/dist/lib/browser/chunk-DLZ5RR3P.mjs +0 -96
- package/dist/lib/browser/chunk-DLZ5RR3P.mjs.map +0 -7
- package/dist/lib/browser/chunk-IBCHVMZW.mjs +0 -16
- package/dist/lib/browser/chunk-IBCHVMZW.mjs.map +0 -7
- package/dist/lib/browser/chunk-NXT2E2BG.mjs.map +0 -7
- package/dist/lib/browser/chunk-OKNQ57GF.mjs +0 -51
- package/dist/lib/browser/chunk-OKNQ57GF.mjs.map +0 -7
- package/dist/lib/browser/chunk-V7P7EIWG.mjs +0 -829
- package/dist/lib/browser/chunk-V7P7EIWG.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-55ASQRIW.mjs +0 -62
- package/dist/lib/browser/intent-resolver-55ASQRIW.mjs.map +0 -7
- package/dist/lib/browser/react-surface-GPD6T435.mjs +0 -211
- package/dist/lib/browser/react-surface-GPD6T435.mjs.map +0 -7
- package/dist/lib/browser/settings-G3ZOXJQY.mjs +0 -28
- package/dist/lib/browser/settings-G3ZOXJQY.mjs.map +0 -7
- package/dist/lib/browser/state-BTUKVZHY.mjs +0 -37
- package/dist/lib/browser/state-BTUKVZHY.mjs.map +0 -7
- package/dist/lib/browser/toolkit.mjs +0 -13
- package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs +0 -13
- package/dist/lib/node-esm/MarkdownCard-FTEHVH7P.mjs.map +0 -7
- package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs +0 -16
- package/dist/lib/node-esm/MarkdownContainer-L75AIJFM.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-W4HCTYUQ.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs +0 -52
- package/dist/lib/node-esm/app-graph-serializer-OCTHXWLF.mjs.map +0 -7
- package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs +0 -14
- package/dist/lib/node-esm/blueprint-definition-HAQGJOMQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3DN4DPVA.mjs +0 -151
- package/dist/lib/node-esm/chunk-3DN4DPVA.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-7GN66TDQ.mjs +0 -52
- package/dist/lib/node-esm/chunk-7GN66TDQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs +0 -17
- package/dist/lib/node-esm/chunk-GMMVSXQ6.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-I5JSQBPI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SHAMSMKQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TYUGABTD.mjs +0 -22
- package/dist/lib/node-esm/chunk-TYUGABTD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UVLACSAE.mjs +0 -830
- package/dist/lib/node-esm/chunk-UVLACSAE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YFRTKXTB.mjs +0 -80
- package/dist/lib/node-esm/chunk-YFRTKXTB.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZNS55FS3.mjs +0 -97
- package/dist/lib/node-esm/chunk-ZNS55FS3.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs +0 -63
- package/dist/lib/node-esm/intent-resolver-DTBVWCNO.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-QWG7CJ5U.mjs +0 -212
- package/dist/lib/node-esm/react-surface-QWG7CJ5U.mjs.map +0 -7
- package/dist/lib/node-esm/settings-IBFFCGNL.mjs +0 -29
- package/dist/lib/node-esm/settings-IBFFCGNL.mjs.map +0 -7
- package/dist/lib/node-esm/state-K6EH7SRZ.mjs +0 -38
- package/dist/lib/node-esm/state-K6EH7SRZ.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit.mjs +0 -14
- package/dist/lib/node-esm/toolkit.mjs.map +0 -7
- package/dist/types/src/capabilities/anchor-sort.d.ts +0 -4
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-serializer.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-serializer.d.ts.map +0 -1
- package/dist/types/src/capabilities/artifact-definition.d.ts +0 -3
- package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -7
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -12
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state.d.ts +0 -11
- package/dist/types/src/capabilities/state.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts +0 -7
- package/dist/types/src/components/MarkdownCard/MarkdownCard.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts +0 -9
- package/dist/types/src/components/MarkdownCard/MarkdownCard.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownCard/index.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownContainer.d.ts +0 -14
- package/dist/types/src/components/MarkdownContainer.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownContainer.stories.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts +0 -6
- package/dist/types/src/components/MarkdownSettings/MarkdownSettings.d.ts.map +0 -1
- package/dist/types/src/components/MarkdownSettings/index.d.ts +0 -2
- package/dist/types/src/components/MarkdownSettings/index.d.ts.map +0 -1
- package/dist/types/src/components/Suggestions.stories.d.ts +0 -11
- package/dist/types/src/components/Suggestions.stories.d.ts.map +0 -1
- package/dist/types/src/events.d.ts +0 -4
- package/dist/types/src/events.d.ts.map +0 -1
- package/dist/types/src/functions/create.d.ts +0 -8
- package/dist/types/src/functions/create.d.ts.map +0 -1
- package/dist/types/src/functions/create.test.d.ts.map +0 -1
- package/dist/types/src/functions/index.d.ts +0 -18
- package/dist/types/src/functions/index.d.ts.map +0 -1
- package/dist/types/src/functions/open.d.ts +0 -7
- package/dist/types/src/functions/open.d.ts.map +0 -1
- package/dist/types/src/functions/update.d.ts +0 -6
- package/dist/types/src/functions/update.d.ts.map +0 -1
- package/dist/types/src/functions/update.test.d.ts.map +0 -1
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts +0 -6
- package/dist/types/src/hooks/useSelectCurrentThread.d.ts.map +0 -1
- package/dist/types/src/toolkit.d.ts +0 -3
- package/dist/types/src/toolkit.d.ts.map +0 -1
- package/dist/types/src/types/MarkdownAction.d.ts +0 -34
- package/dist/types/src/types/MarkdownAction.d.ts.map +0 -1
- package/src/capabilities/anchor-sort.ts +0 -31
- package/src/capabilities/app-graph-serializer.ts +0 -54
- package/src/capabilities/artifact-definition.ts +0 -112
- package/src/capabilities/blueprint-definition.ts +0 -43
- package/src/capabilities/capabilities.ts +0 -22
- package/src/capabilities/intent-resolver.ts +0 -58
- package/src/capabilities/react-surface.tsx +0 -93
- package/src/capabilities/settings.ts +0 -25
- package/src/capabilities/state.ts +0 -31
- package/src/components/MarkdownCard/MarkdownCard.stories.tsx +0 -76
- package/src/components/MarkdownCard/MarkdownCard.tsx +0 -89
- package/src/components/MarkdownContainer.stories.tsx +0 -136
- package/src/components/MarkdownContainer.tsx +0 -113
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +0 -108
- package/src/components/MarkdownSettings/index.ts +0 -5
- package/src/components/Suggestions.stories.tsx +0 -226
- package/src/events.ts +0 -11
- package/src/functions/create.conversations.json +0 -1
- package/src/functions/create.test.ts +0 -128
- package/src/functions/create.ts +0 -34
- package/src/functions/index.ts +0 -13
- package/src/functions/open.ts +0 -32
- package/src/functions/update.conversations.json +0 -1
- package/src/functions/update.test.ts +0 -151
- package/src/functions/update.ts +0 -37
- package/src/hooks/useSelectCurrentThread.tsx +0 -66
- package/src/toolkit.ts +0 -6
- package/src/types/MarkdownAction.ts +0 -29
- /package/dist/lib/browser/{MarkdownCard-TC3GGUSX.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/browser/{MarkdownContainer-YF22DV4M.mjs.map → operations/index.mjs.map} +0 -0
- /package/dist/lib/{browser/blueprint-definition-HED54GGW.mjs.map → node-esm/blueprints/index.mjs.map} +0 -0
- /package/dist/lib/{browser/toolkit.mjs.map → node-esm/operations/index.mjs.map} +0 -0
- /package/dist/types/src/{functions → operations}/create.test.d.ts +0 -0
- /package/dist/types/src/{functions → operations}/update.test.d.ts +0 -0
|
@@ -3,19 +3,16 @@
|
|
|
3
3
|
//
|
|
4
4
|
|
|
5
5
|
import { type ViewUpdate } from '@codemirror/view';
|
|
6
|
-
import
|
|
7
|
-
import { createRoot } from 'react-dom/client';
|
|
8
|
-
|
|
9
|
-
import { LayoutAction, type PromiseIntentDispatcher, createIntent } from '@dxos/app-framework';
|
|
10
|
-
import { useIntentDispatcher } 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
|
-
import { getSpace } from '@dxos/react-client/echo';
|
|
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';
|
|
14
|
+
import { Text } from '@dxos/schema';
|
|
15
|
+
import { Domino } from '@dxos/ui';
|
|
19
16
|
import {
|
|
20
17
|
Cursor,
|
|
21
18
|
type EditorStateStore,
|
|
@@ -36,25 +33,28 @@ import {
|
|
|
36
33
|
replacer,
|
|
37
34
|
selectionState,
|
|
38
35
|
typewriter,
|
|
39
|
-
} from '@dxos/
|
|
40
|
-
import {
|
|
41
|
-
import {
|
|
42
|
-
import { isTruthy } from '@dxos/util';
|
|
36
|
+
} from '@dxos/ui-editor';
|
|
37
|
+
import { useThemeContext } from '@dxos/react-ui';
|
|
38
|
+
import { isTruthy, safeUrl } from '@dxos/util';
|
|
43
39
|
|
|
44
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
|
-
dispatch?: PromiseIntentDispatcher;
|
|
53
49
|
settings?: Markdown.Settings;
|
|
54
|
-
|
|
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,21 +62,23 @@ export const useExtensions = ({
|
|
|
62
62
|
id,
|
|
63
63
|
object,
|
|
64
64
|
settings,
|
|
65
|
-
|
|
65
|
+
compact,
|
|
66
66
|
viewMode,
|
|
67
|
+
selectionManager,
|
|
67
68
|
editorStateStore,
|
|
68
69
|
previewOptions,
|
|
70
|
+
onSelectObject,
|
|
69
71
|
}: ExtensionsOptions): Extension[] => {
|
|
70
|
-
const {
|
|
72
|
+
const { platform } = useThemeContext();
|
|
71
73
|
const identity = useIdentity();
|
|
72
74
|
const space = getSpace(object);
|
|
73
75
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
// Get the content reference from Document objects.
|
|
77
|
+
const contentRef = Obj.instanceOf(Markdown.Document, object) ? (object as Markdown.Document).content : undefined;
|
|
78
|
+
// Use useObject to trigger re-render when the reference loads (returns snapshot for reactivity).
|
|
79
|
+
useObject(contentRef);
|
|
80
|
+
// Get the actual live object target via .target (needed for createDocAccessor).
|
|
81
|
+
const target = contentRef?.target ?? (Obj.instanceOf(Text.Text, object) ? object : undefined);
|
|
80
82
|
|
|
81
83
|
// TODO(wittjosiah): Autocomplete is not working and this query is causing performance issues.
|
|
82
84
|
// TODO(burdon): Unsubscribe.
|
|
@@ -89,24 +91,28 @@ export const useExtensions = ({
|
|
|
89
91
|
id,
|
|
90
92
|
object,
|
|
91
93
|
settings,
|
|
92
|
-
|
|
94
|
+
compact,
|
|
93
95
|
viewMode,
|
|
96
|
+
selectionManager,
|
|
94
97
|
previewOptions,
|
|
95
|
-
|
|
98
|
+
onSelectObject,
|
|
99
|
+
platform,
|
|
96
100
|
}),
|
|
97
101
|
[
|
|
98
102
|
id,
|
|
99
103
|
object,
|
|
104
|
+
compact,
|
|
100
105
|
viewMode,
|
|
101
|
-
|
|
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
|
-
|
|
153
|
+
onSelectObject,
|
|
148
154
|
settings,
|
|
149
|
-
|
|
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,22 +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
|
|
170
|
-
|
|
171
|
-
renderLinkButton:
|
|
172
|
-
dispatch && (object || id)
|
|
173
|
-
? createLinkRenderer((id: string) => {
|
|
174
|
-
void dispatch(
|
|
175
|
-
createIntent(LayoutAction.Open, {
|
|
176
|
-
part: 'main',
|
|
177
|
-
subject: [id],
|
|
178
|
-
options: {
|
|
179
|
-
pivotId: object && Obj.isObject(object) ? Obj.getDXN(object).toString() : id,
|
|
180
|
-
},
|
|
181
|
-
}),
|
|
182
|
-
);
|
|
183
|
-
})
|
|
184
|
-
: undefined,
|
|
177
|
+
// TODO(wittjosiah): For internal links render the label of the object.
|
|
178
|
+
renderLinkButton: onSelectObject && createRenderLink(onSelectObject),
|
|
185
179
|
}),
|
|
186
180
|
linkTooltip(renderLinkTooltip),
|
|
187
181
|
preview(previewOptions),
|
|
@@ -201,79 +195,67 @@ const createBaseExtensions = ({
|
|
|
201
195
|
};
|
|
202
196
|
|
|
203
197
|
const selectionChange = (selectionManager: SelectionManager) => {
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
}))
|
|
215
|
-
.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);
|
|
216
208
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}, 100),
|
|
220
|
-
);
|
|
221
|
-
};
|
|
209
|
+
selectionManager.updateMultiRange(id, ranges);
|
|
210
|
+
}, 100);
|
|
222
211
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
212
|
+
return EditorView.updateListener.of((update: ViewUpdate) => {
|
|
213
|
+
if (update.selectionSet) {
|
|
214
|
+
debouncedHandler(update);
|
|
215
|
+
}
|
|
216
|
+
});
|
|
227
217
|
};
|
|
228
218
|
|
|
229
|
-
const
|
|
219
|
+
const createRenderLink =
|
|
230
220
|
(onSelectObject: (id: string) => void): RenderCallback<{ url: string }> =>
|
|
231
221
|
(el, { url }) => {
|
|
232
222
|
// TODO(burdon): Formalize/document internal link format.
|
|
233
|
-
const isInternal =
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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'));
|
|
237
228
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
+
}
|
|
251
243
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
/>
|
|
260
|
-
</a>,
|
|
261
|
-
);
|
|
244
|
+
keyboardEvent.preventDefault();
|
|
245
|
+
keyboardEvent.stopPropagation();
|
|
246
|
+
onSelectObject(qualifiedId);
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
el.appendChild(icon.root);
|
|
262
251
|
};
|
|
263
252
|
|
|
264
253
|
const renderLinkTooltip: RenderCallback<{ url: string }> = (el, { url }) => {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
</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,
|
|
272
260
|
);
|
|
273
261
|
};
|
|
274
|
-
|
|
275
|
-
// TODO(burdon): REMOVE.
|
|
276
|
-
const renderRoot = <T extends Element>(root: T, node: ReactNode): T => {
|
|
277
|
-
createRoot(root).render(<ThemeProvider tx={defaultTx}>{node}</ThemeProvider>);
|
|
278
|
-
return root;
|
|
279
|
-
};
|
|
@@ -5,41 +5,42 @@
|
|
|
5
5
|
import * as Option from 'effect/Option';
|
|
6
6
|
import { useCallback, useMemo } from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { Filter, Obj, Query, Type } from '@dxos/echo';
|
|
8
|
+
import { usePluginManager } from '@dxos/app-framework/ui';
|
|
9
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
10
|
+
import { type Database, Filter, Obj, Query, Type } from '@dxos/echo';
|
|
11
11
|
import { EntityKind, SystemTypeAnnotation, getTypeAnnotation } from '@dxos/echo/internal';
|
|
12
|
-
import { type Space } from '@dxos/react-client/echo';
|
|
13
12
|
import { toLocalizedString, useTranslation } from '@dxos/react-ui';
|
|
14
|
-
import { type EditorMenuGroup, type EditorMenuItem
|
|
13
|
+
import { type EditorMenuGroup, type EditorMenuItem } from '@dxos/react-ui-editor';
|
|
14
|
+
import { insertAtCursor, insertAtLineStart } from '@dxos/ui-editor';
|
|
15
15
|
|
|
16
|
-
export const useLinkQuery = (
|
|
16
|
+
export const useLinkQuery = (db: Database.Database | undefined) => {
|
|
17
17
|
const { t } = useTranslation();
|
|
18
18
|
|
|
19
19
|
const manager = usePluginManager();
|
|
20
20
|
const resolve = useCallback(
|
|
21
21
|
(typename: string) =>
|
|
22
|
-
manager.
|
|
22
|
+
manager.capabilities.getAll(AppCapabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {},
|
|
23
23
|
[manager],
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
const filter = useMemo(
|
|
27
27
|
() =>
|
|
28
28
|
Filter.or(
|
|
29
|
-
...(
|
|
29
|
+
...(db?.schemaRegistry.query({ location: ['database', 'runtime'] }).runSync() ?? [])
|
|
30
30
|
.filter((schema) => getTypeAnnotation(schema)?.kind !== EntityKind.Relation)
|
|
31
31
|
.filter((schema) => !SystemTypeAnnotation.get(schema).pipe(Option.getOrElse(() => false)))
|
|
32
32
|
.map((schema) => Filter.typename(Type.getTypename(schema))),
|
|
33
33
|
),
|
|
34
|
-
[
|
|
34
|
+
[db],
|
|
35
35
|
);
|
|
36
36
|
|
|
37
37
|
const handleLinkQuery = useCallback(
|
|
38
38
|
async (query?: string): Promise<EditorMenuGroup[]> => {
|
|
39
|
+
// A second "@" switches the link query into block-embed mode, so "@@foo" searches for "foo".
|
|
39
40
|
const name = query?.startsWith('@') ? query.slice(1).toLowerCase() : (query?.toLowerCase() ?? '');
|
|
40
|
-
const results = await
|
|
41
|
+
const results = await db?.query(Query.select(filter)).run();
|
|
41
42
|
|
|
42
|
-
// TODO(wittjosiah): Use `Obj.
|
|
43
|
+
// TODO(wittjosiah): Use `Obj.Unknown` type.
|
|
43
44
|
const getLabel = (object: any) => {
|
|
44
45
|
const label = Obj.getLabel(object);
|
|
45
46
|
if (label) {
|
|
@@ -53,8 +54,8 @@ export const useLinkQuery = (space: Space | undefined) => {
|
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
const items =
|
|
56
|
-
results
|
|
57
|
-
|
|
57
|
+
results
|
|
58
|
+
?.filter((object) => toLocalizedString(getLabel(object), t).toLowerCase().includes(name))
|
|
58
59
|
// TODO(wittjosiah): Remove `any` type.
|
|
59
60
|
.map((object: any): EditorMenuItem => {
|
|
60
61
|
const metadata = resolve(Obj.getTypename(object)!);
|
|
@@ -65,6 +66,7 @@ export const useLinkQuery = (space: Space | undefined) => {
|
|
|
65
66
|
icon: metadata.icon,
|
|
66
67
|
onSelect: ({ view, head }) => {
|
|
67
68
|
const link = `[${label}](${Obj.getDXN(object)})`;
|
|
69
|
+
// "@@" inserts a block embed on its own line instead of an inline link.
|
|
68
70
|
if (query?.startsWith('@')) {
|
|
69
71
|
insertAtLineStart(view, head, `!${link}\n`);
|
|
70
72
|
} else {
|
|
@@ -76,7 +78,7 @@ export const useLinkQuery = (space: Space | undefined) => {
|
|
|
76
78
|
|
|
77
79
|
return [{ id: 'echo', items }];
|
|
78
80
|
},
|
|
79
|
-
[
|
|
81
|
+
[db, filter, resolve],
|
|
80
82
|
);
|
|
81
83
|
|
|
82
84
|
return handleLinkQuery;
|
package/src/index.ts
CHANGED
|
@@ -2,11 +2,12 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
export { MarkdownCapabilities } from './
|
|
6
|
-
export { MarkdownEvents } from './events';
|
|
5
|
+
export { MarkdownCapabilities, MarkdownEvents } from './types';
|
|
7
6
|
|
|
8
7
|
export * from './meta';
|
|
9
8
|
export * from './types';
|
|
10
9
|
export * from './util';
|
|
11
10
|
|
|
12
11
|
export * from './MarkdownPlugin';
|
|
12
|
+
|
|
13
|
+
export { MarkdownEditor } from './components';
|
package/src/meta.ts
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
// Copyright 2023 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import { type
|
|
5
|
+
import { type Plugin } from '@dxos/app-framework';
|
|
6
6
|
import { trim } from '@dxos/util';
|
|
7
7
|
|
|
8
|
-
export const meta:
|
|
9
|
-
id: 'dxos.
|
|
8
|
+
export const meta: Plugin.Meta = {
|
|
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_012u3Dc1U1Ajz41Sbdi3Ki7x","modelId":"claude-opus-4-20250514","timestamp":"1970-01-01T00:00:00.000Z","metadata":{}},{"type":"reasoning-start","id":"0","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"The user wants me to create a ","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"document with a cookie recipe. I'll","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" use the create function to make a new","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" markdown document containing","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" a cookie recipe.","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" I need to provide a name","metadata":{}},{"type":"reasoning-delta","id":"0","delta":" an","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"d content for the document.","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{}},{"type":"reasoning-delta","id":"0","delta":"","metadata":{"anthropic":{"type":"thinking","signature":"EvUCCkYICxgCKkC5nwEtq9qckQ423iHc9Ln0OFnVtHRR7sUEV4ICNF8g2BxjGyutcobSpcWevhOsMSriOUhG2jxfh6c4rx/oA5SXEgzdSd4wUO5MEMKtBncaDMZiA93auhLoVS7bcCIwzYQWtY5OzjsTnzu9wwdqpV/0uFXqL/GYGchJCX+KoBmMRO+ze2WWOMbJA1+DTWKAKtwBfEcuem7ZDKl6SOwSe+zkgauQnFNAA4SwCuYOuH6Avqk3Jb/7Em3Y979foER8EyRLLrhlZGWDQsQ+4S0gF/5V4t1A/pSAwrejLYBfXE4QoLtMQcgfThDvH5h/ADe4DvPuVY3opqKc3/LcurvAeqf3ak5F4uiLpRs5VKL3fZVWEMeU4S/7fMGRaAiBKw6tYPFJUi+YUdL/26f0lw3nkqZV/f1QyhdYKf3uhfCZ1ljHDgwhBdGM1fQBzZqWmJk8C1jl8fouWHtX79ZbGVncuD2G00hUNdxIUfCXlQtYzBgB"}}},{"type":"reasoning-end","id":"0","metadata":{}},{"type":"text-start","id":"1","metadata":{}},{"type":"text-delta","id":"1","delta":"I'll create","metadata":{}},{"type":"text-delta","id":"1","delta":" a ","metadata":{}},{"type":"text-delta","id":"1","delta":"document with a del","metadata":{}},{"type":"text-delta","id":"1","delta":"icious chocolate","metadata":{}},{"type":"text-delta","id":"1","delta":" chip cookie recipe for you.","metadata":{}},{"type":"text-end","id":"1","metadata":{}},{"type":"tool-params-start","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","providerExecuted":false,"metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"{\"na","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"me\": \"Choco","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"la","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"te Ch","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ip","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" Cookie R","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ecipe\"","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":", \"co","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nt","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ent\":","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" \"# Clas","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"sic Choco","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"late Chip","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" Cookies","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n\\n## Ingr","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"edients\\n\\n#","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"## Dry ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Ingredients","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n- 2","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"¼ ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"cup","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s al","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"l-purpos","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"e flour\\n-","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" 1","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" t","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"sp ba","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"king ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"soda\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n-","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" 1 ts","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"p salt","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n\\n### We","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"t Ingr","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"edients\\n- 1","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" cup ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"(2 sti","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"cks) butter","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":", soften","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ed\\n- ¾ cup ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"granulated s","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ugar\\n- ¾ c","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"up packed","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" brown su","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"gar\\n- 2 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"large eggs\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n- 2 tsp van","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"illa ext","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ract\\n\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"### Mi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"x-ins\\n- 2 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"cups chocola","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"te ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"chi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ps (s","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"emi-sweet ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"or ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"milk cho","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"colat","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"e)\\n-","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" 1 cup c","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"hopped w","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"alnut","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s (optional","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":")\\n\\n#","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"# In","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"structions","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n\\n1. **Pr","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"eheat oven*","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"* to 375","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"°F ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"(190","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"°C).\\n\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"2. **Mix ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"dry ingr","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ed","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ie","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nts**: I","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n a mediu","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"m ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"bowl, whisk ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"toget","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"her flour,","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" baking so","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"da","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":", and s","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"al","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"t. Set asi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"de.\\n\\n3. ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**C","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ream","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" butte","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"r and sug","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ars**: In","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" a large bow","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"l, beat soft","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ened","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" butter, gr","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"anulat","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ed su","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"gar, ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"and brown s","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ugar ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"until","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" creamy ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"(about 3","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"-4 mi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nutes).\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n\\n4. **Add","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" egg","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s and va","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nil","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"la*","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*: Beat ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"in eggs","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" one at a ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ti","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"me, t","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"hen add ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"vanilla e","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"xtrac","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"t.\\n\\n5. *","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*Combi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ne wet a","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nd dry**: ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Gradually be","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"at in ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"the ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"flour","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" mixture ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"unti","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"l just combi","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ned.","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" Do","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n't ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"overmix.\\n\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"6. *","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*Fold ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"in chocola","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"te chips**: ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Stir in cho","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"colate ch","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ip","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s and ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nuts (if u","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"si","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ng).\\n\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"7. *","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*S","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"hape cookie","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s**: Drop r","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ounded tab","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"lespoons ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"of dough ont","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"o ungreased","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" cookie shee","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ts, s","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"pacing t","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"he","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"m a","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"bout 2 inche","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s apart.\\n\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n8. ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**B","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ake**","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":": Bake f","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"or 9-11 m","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"inutes, or ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"until gol","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"den brown ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"aroun","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"d the","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" edges. Th","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"e cent","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ers may lo","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ok slight","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ly under","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"done.\\n\\","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n9","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":". **Cool**: ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Let co","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"okies cool o","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n the","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" bak","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ing sheet fo","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"r 2 minute","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s, then tra","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nsfe","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"r to a ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"wir","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"e rack.","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n\\n##","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" Tip","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s for Perf","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ect Co","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"okies\\n\\n-","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" **Room ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"temp","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"era","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ture i","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ngredients**","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" mix be","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"tter and c","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"reate a ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"smooth","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"er do","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ugh\\n- **","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Don't","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" ov","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"erbake**","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" - ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"cookie","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s will con","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"tin","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ue cooking o","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"n the hot p","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"an ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"after r","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"emoval\\n- ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**Chill ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"dou","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"gh","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"** for 30","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" minute","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s before ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"baking","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" for thick","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"er co","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"okies\\n- **","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"Use parch","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ment paper*","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"* ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"for ea","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"sy clea","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"nu","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"p and even","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" ba","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"kin","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"g\\n\\n## Stor","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ag","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"e\\n\\n- St","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ore ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"in an airt","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ight c","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ontainer a","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"t room t","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"emp","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"erat","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ure for u","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"p to 1 we","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ek","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n- Freeze ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"bak","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ed cookies","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" for up to 3","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" months\\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"- Cookie do","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ug","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"h can be fro","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"zen for ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"up to 3 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"mon","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ths","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"\\n\\n*","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*Yield","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**: About 4","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"8 cookie","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" \\n**Pre","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"p ti","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"me","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**: 15 min","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"utes \\n","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"**Bake time*","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"*:","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" 9-11 ","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"minute","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"s per batch","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" \\n\\nEnjoy","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":" your homem","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"ade cookies","metadata":{}},{"type":"tool-params-delta","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","delta":"! 🍪\"}","metadata":{}},{"type":"tool-params-end","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","metadata":{}},{"type":"tool-call","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","params":{"name":"Chocolate Chip Cookie Recipe","content":"# Classic Chocolate Chip Cookies\n\n## Ingredients\n\n### Dry Ingredients\n- 2¼ cups all-purpose flour\n- 1 tsp baking soda\n- 1 tsp salt\n\n### Wet Ingredients\n- 1 cup (2 sticks) butter, softened\n- ¾ cup granulated sugar\n- ¾ cup packed brown sugar\n- 2 large eggs\n- 2 tsp vanilla extract\n\n### Mix-ins\n- 2 cups chocolate chips (semi-sweet or milk chocolate)\n- 1 cup chopped walnuts (optional)\n\n## Instructions\n\n1. **Preheat oven** to 375°F (190°C).\n\n2. **Mix dry ingredients**: In a medium bowl, whisk together flour, baking soda, and salt. Set aside.\n\n3. **Cream butter and sugars**: In a large bowl, beat softened butter, granulated sugar, and brown sugar until creamy (about 3-4 minutes).\n\n4. **Add eggs and vanilla**: Beat in eggs one at a time, then add vanilla extract.\n\n5. **Combine wet and dry**: Gradually beat in the flour mixture until just combined. Don't overmix.\n\n6. **Fold in chocolate chips**: Stir in chocolate chips and nuts (if using).\n\n7. **Shape cookies**: Drop rounded tablespoons of dough onto ungreased cookie sheets, spacing them about 2 inches apart.\n\n8. **Bake**: Bake for 9-11 minutes, or until golden brown around the edges. The centers may look slightly underdone.\n\n9. **Cool**: Let cookies cool on the baking sheet for 2 minutes, then transfer to a wire rack.\n\n## Tips for Perfect Cookies\n\n- **Room temperature ingredients** mix better and create a smoother dough\n- **Don't overbake** - cookies will continue cooking on the hot pan after removal\n- **Chill dough** for 30 minutes before baking for thicker cookies\n- **Use parchment paper** for easy cleanup and even baking\n\n## Storage\n\n- Store in an airtight container at room temperature for up to 1 week\n- Freeze baked cookies for up to 3 months\n- Cookie dough can be frozen for up to 3 months\n\n**Yield**: About 48 cookies \n**Prep time**: 15 minutes \n**Bake time**: 9-11 minutes per batch \n\nEnjoy your homemade cookies! 🍪"},"providerExecuted":false,"metadata":{}},{"type":"finish","reason":"tool-calls","usage":{"inputTokens":10,"outputTokens":721,"totalTokens":731},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":1400},"cache_creation_input_tokens":1400,"cache_read_input_tokens":0,"input_tokens":10,"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. I'll use the create function to make a new markdown document containing a cookie recipe. I need to provide a name and content for the document.","options":{}},{"type":"text","text":"I'll create a document with a delicious chocolate chip cookie recipe for you.","options":{}},{"type":"tool-call","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","params":{"name":"Chocolate Chip Cookie Recipe","content":"# Classic Chocolate Chip Cookies\n\n## Ingredients\n\n### Dry Ingredients\n- 2¼ cups all-purpose flour\n- 1 tsp baking soda\n- 1 tsp salt\n\n### Wet Ingredients\n- 1 cup (2 sticks) butter, softened\n- ¾ cup granulated sugar\n- ¾ cup packed brown sugar\n- 2 large eggs\n- 2 tsp vanilla extract\n\n### Mix-ins\n- 2 cups chocolate chips (semi-sweet or milk chocolate)\n- 1 cup chopped walnuts (optional)\n\n## Instructions\n\n1. **Preheat oven** to 375°F (190°C).\n\n2. **Mix dry ingredients**: In a medium bowl, whisk together flour, baking soda, and salt. Set aside.\n\n3. **Cream butter and sugars**: In a large bowl, beat softened butter, granulated sugar, and brown sugar until creamy (about 3-4 minutes).\n\n4. **Add eggs and vanilla**: Beat in eggs one at a time, then add vanilla extract.\n\n5. **Combine wet and dry**: Gradually beat in the flour mixture until just combined. Don't overmix.\n\n6. **Fold in chocolate chips**: Stir in chocolate chips and nuts (if using).\n\n7. **Shape cookies**: Drop rounded tablespoons of dough onto ungreased cookie sheets, spacing them about 2 inches apart.\n\n8. **Bake**: Bake for 9-11 minutes, or until golden brown around the edges. The centers may look slightly underdone.\n\n9. **Cool**: Let cookies cool on the baking sheet for 2 minutes, then transfer to a wire rack.\n\n## Tips for Perfect Cookies\n\n- **Room temperature ingredients** mix better and create a smoother dough\n- **Don't overbake** - cookies will continue cooking on the hot pan after removal\n- **Chill dough** for 30 minutes before baking for thicker cookies\n- **Use parchment paper** for easy cleanup and even baking\n\n## Storage\n\n- Store in an airtight container at room temperature for up to 1 week\n- Freeze baked cookies for up to 3 months\n- Cookie dough can be frozen for up to 3 months\n\n**Yield**: About 48 cookies \n**Prep time**: 15 minutes \n**Bake time**: 9-11 minutes per batch \n\nEnjoy your homemade cookies! 🍪"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","isFailure":false,"result":{"id":"dxn:echo:BDJXMULPW5FB55UZ7KP5HLDHVTXUTHE2U:01JGFJJZ00G0WKQSJGMAKCNT8X"},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_01WzwZqUk2X7iaec8CSSXgt7","modelId":"claude-opus-4-20250514","timestamp":"1970-01-01T00:00:00.000Z","metadata":{}},{"type":"text-start","id":"0","metadata":{}},{"type":"text-delta","id":"0","delta":"I","metadata":{}},{"type":"text-delta","id":"0","delta":"'ve create","metadata":{}},{"type":"text-delta","id":"0","delta":"d a ","metadata":{}},{"type":"text-delta","id":"0","delta":"document with a classic chocolate chip cookie recipe!","metadata":{}},{"type":"text-delta","id":"0","delta":" The recipe","metadata":{}},{"type":"text-delta","id":"0","delta":" includes:\n\n- A complete ingredient list","metadata":{}},{"type":"text-delta","id":"0","delta":" with measurements\n- Step-by-","metadata":{}},{"type":"text-delta","id":"0","delta":"step instructions\n- Helpful tips for","metadata":{}},{"type":"text-delta","id":"0","delta":" getting","metadata":{}},{"type":"text-delta","id":"0","delta":" perfect cookies\n- Storage instructions","metadata":{}},{"type":"text-delta","id":"0","delta":"\n- Yield an","metadata":{}},{"type":"text-delta","id":"0","delta":"d timing information\n\nThe recipe","metadata":{}},{"type":"text-delta","id":"0","delta":" is for","metadata":{}},{"type":"text-delta","id":"0","delta":" traditional","metadata":{}},{"type":"text-delta","id":"0","delta":" chocolate chip cookies that","metadata":{}},{"type":"text-delta","id":"0","delta":" yiel","metadata":{}},{"type":"text-delta","id":"0","delta":"d about 48 cookies. It","metadata":{}},{"type":"text-delta","id":"0","delta":" includes","metadata":{}},{"type":"text-delta","id":"0","delta":" optional","metadata":{}},{"type":"text-delta","id":"0","delta":" w","metadata":{}},{"type":"text-delta","id":"0","delta":"alnuts and tips","metadata":{}},{"type":"text-delta","id":"0","delta":" for achieving","metadata":{}},{"type":"text-delta","id":"0","delta":" the best texture","metadata":{}},{"type":"text-delta","id":"0","delta":".","metadata":{}},{"type":"text-delta","id":"0","delta":" Would you like me to modify anything in","metadata":{}},{"type":"text-delta","id":"0","delta":" the recipe or add any additional sections?","metadata":{}},{"type":"text-end","id":"0","metadata":{}},{"type":"finish","reason":"stop","usage":{"inputTokens":6,"outputTokens":103,"totalTokens":109},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":2116},"cache_creation_input_tokens":2116,"cache_read_input_tokens":0,"input_tokens":6,"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. I'll use the create function to make a new markdown document containing a cookie recipe. I need to provide a name and content for the document.","options":{}},{"type":"text","text":"I'll create a document with a delicious chocolate chip cookie recipe for you.","options":{}},{"type":"tool-call","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","params":{"name":"Chocolate Chip Cookie Recipe","content":"# Classic Chocolate Chip Cookies\n\n## Ingredients\n\n### Dry Ingredients\n- 2¼ cups all-purpose flour\n- 1 tsp baking soda\n- 1 tsp salt\n\n### Wet Ingredients\n- 1 cup (2 sticks) butter, softened\n- ¾ cup granulated sugar\n- ¾ cup packed brown sugar\n- 2 large eggs\n- 2 tsp vanilla extract\n\n### Mix-ins\n- 2 cups chocolate chips (semi-sweet or milk chocolate)\n- 1 cup chopped walnuts (optional)\n\n## Instructions\n\n1. **Preheat oven** to 375°F (190°C).\n\n2. **Mix dry ingredients**: In a medium bowl, whisk together flour, baking soda, and salt. Set aside.\n\n3. **Cream butter and sugars**: In a large bowl, beat softened butter, granulated sugar, and brown sugar until creamy (about 3-4 minutes).\n\n4. **Add eggs and vanilla**: Beat in eggs one at a time, then add vanilla extract.\n\n5. **Combine wet and dry**: Gradually beat in the flour mixture until just combined. Don't overmix.\n\n6. **Fold in chocolate chips**: Stir in chocolate chips and nuts (if using).\n\n7. **Shape cookies**: Drop rounded tablespoons of dough onto ungreased cookie sheets, spacing them about 2 inches apart.\n\n8. **Bake**: Bake for 9-11 minutes, or until golden brown around the edges. The centers may look slightly underdone.\n\n9. **Cool**: Let cookies cool on the baking sheet for 2 minutes, then transfer to a wire rack.\n\n## Tips for Perfect Cookies\n\n- **Room temperature ingredients** mix better and create a smoother dough\n- **Don't overbake** - cookies will continue cooking on the hot pan after removal\n- **Chill dough** for 30 minutes before baking for thicker cookies\n- **Use parchment paper** for easy cleanup and even baking\n\n## Storage\n\n- Store in an airtight container at room temperature for up to 1 week\n- Freeze baked cookies for up to 3 months\n- Cookie dough can be frozen for up to 3 months\n\n**Yield**: About 48 cookies \n**Prep time**: 15 minutes \n**Bake time**: 9-11 minutes per batch \n\nEnjoy your homemade cookies! 🍪"},"providerExecuted":false,"options":{}}],"options":{}},{"role":"tool","content":[{"type":"tool-result","id":"toolu_01HuKer6SH3fbApR4kTiyNPH","name":"create","isFailure":false,"result":{"id":"dxn:echo:BDJXMULPW5FB55UZ7KP5HLDHVTXUTHE2U:01JGFJJZ00G0WKQSJGMAKCNT90"},"providerExecuted":false,"options":{}}],"options":{"anthropic":{"cacheControl":{"ttl":"5m","type":"ephemeral"}}}}]},"response":[{"type":"response-metadata","id":"msg_01NHwfxknTwKcQC1P8hrbg6Z","modelId":"claude-opus-4-20250514","timestamp":"1970-01-01T00:00:00.000Z","metadata":{}},{"type":"text-start","id":"0","metadata":{}},{"type":"text-delta","id":"0","delta":"I've create","metadata":{}},{"type":"text-delta","id":"0","delta":"d a ","metadata":{}},{"type":"text-delta","id":"0","delta":"document with a classic chocolate chip cookie recipe!","metadata":{}},{"type":"text-delta","id":"0","delta":" The recipe","metadata":{}},{"type":"text-delta","id":"0","delta":" includes:\n\n- A complete list","metadata":{}},{"type":"text-delta","id":"0","delta":" of ingredients with measurements\n- Step-","metadata":{}},{"type":"text-delta","id":"0","delta":"by-step instructions that","metadata":{}},{"type":"text-delta","id":"0","delta":" are easy to follow\n- Helpful","metadata":{}},{"type":"text-delta","id":"0","delta":" tips for achieving","metadata":{}},{"type":"text-delta","id":"0","delta":" perfect cookies\n- Storage instructions for both","metadata":{}},{"type":"text-delta","id":"0","delta":" cookies","metadata":{}},{"type":"text-delta","id":"0","delta":" and dough\n- Recipe","metadata":{}},{"type":"text-delta","id":"0","delta":" yield and timing information","metadata":{}},{"type":"text-delta","id":"0","delta":"\n\nThe recipe","metadata":{}},{"type":"text-delta","id":"0","delta":" makes","metadata":{}},{"type":"text-delta","id":"0","delta":" about 48 cookies an","metadata":{}},{"type":"text-delta","id":"0","delta":"d includes","metadata":{}},{"type":"text-delta","id":"0","delta":" optional","metadata":{}},{"type":"text-delta","id":"0","delta":" w","metadata":{}},{"type":"text-delta","id":"0","delta":"alnuts for those","metadata":{}},{"type":"text-delta","id":"0","delta":" who enjoy","metadata":{}},{"type":"text-delta","id":"0","delta":" nuts","metadata":{}},{"type":"text-delta","id":"0","delta":" in","metadata":{}},{"type":"text-delta","id":"0","delta":" their cookies. Feel","metadata":{}},{"type":"text-delta","id":"0","delta":" free to let","metadata":{}},{"type":"text-delta","id":"0","delta":" me know if you'd like me","metadata":{}},{"type":"text-delta","id":"0","delta":" to modify the","metadata":{}},{"type":"text-delta","id":"0","delta":" recipe in any way,","metadata":{}},{"type":"text-delta","id":"0","delta":" such","metadata":{}},{"type":"text-delta","id":"0","delta":" as making","metadata":{}},{"type":"text-delta","id":"0","delta":" it gl","metadata":{}},{"type":"text-delta","id":"0","delta":"uten-free,","metadata":{}},{"type":"text-delta","id":"0","delta":" adding different","metadata":{}},{"type":"text-delta","id":"0","delta":" mix-ins, or adjust","metadata":{}},{"type":"text-delta","id":"0","delta":"ing the batch","metadata":{}},{"type":"text-delta","id":"0","delta":" size!","metadata":{}},{"type":"text-end","id":"0","metadata":{}},{"type":"finish","reason":"stop","usage":{"inputTokens":6,"outputTokens":133,"totalTokens":139},"metadata":{"anthropic":{"usage":{"cache_creation":{"ephemeral_1h_input_tokens":0,"ephemeral_5m_input_tokens":2115},"cache_creation_input_tokens":2115,"cache_read_input_tokens":0,"input_tokens":6,"output_tokens":3,"server_tool_use":null,"service_tier":"standard"}}}}]}]}
|