@dxos/plugin-markdown 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a
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/neutral/{MarkdownArticle-I4UMD7AA.mjs → MarkdownArticle-ZHBXH7YF.mjs} +3 -5
- package/dist/lib/neutral/{MarkdownArticle-I4UMD7AA.mjs.map → MarkdownArticle-ZHBXH7YF.mjs.map} +2 -2
- package/dist/lib/neutral/{MarkdownCard-OYO2HYZF.mjs → MarkdownCard-2HUXCGZP.mjs} +2 -2
- package/dist/lib/neutral/{MarkdownCard-OYO2HYZF.mjs.map → MarkdownCard-2HUXCGZP.mjs.map} +1 -1
- package/dist/lib/neutral/MarkdownPlugin.mjs +3 -7
- package/dist/lib/neutral/MarkdownPlugin.mjs.map +3 -3
- package/dist/lib/neutral/MarkdownPlugin.node.mjs +4 -2
- package/dist/lib/neutral/MarkdownPlugin.node.mjs.map +3 -3
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs +6 -17
- package/dist/lib/neutral/MarkdownPlugin.workerd.mjs.map +4 -4
- package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs +43 -0
- package/dist/lib/neutral/MarkdownSettings-5VMOYMND.mjs.map +7 -0
- package/dist/lib/neutral/{anchor-sort-UXN4RHFX.mjs → anchor-sort-QF7UDG2A.mjs} +4 -3
- package/dist/lib/neutral/anchor-sort-QF7UDG2A.mjs.map +7 -0
- package/dist/lib/neutral/capabilities/index.mjs +9 -13
- package/dist/lib/neutral/capabilities/index.mjs.map +3 -3
- package/dist/lib/neutral/capabilities/node.mjs +5 -3
- package/dist/lib/neutral/capabilities/node.mjs.map +3 -3
- package/dist/lib/neutral/chunk-2V6A5NDQ.mjs +8 -0
- package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs → chunk-ANHHOTCD.mjs} +3 -4
- package/dist/lib/neutral/{operation-handler-2ARMPBGZ.mjs.map → chunk-ANHHOTCD.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-CNYFGIDS.mjs +32 -0
- package/dist/lib/neutral/chunk-CNYFGIDS.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-LXNSKCPD.mjs → chunk-EV4ZOL4P.mjs} +12 -11
- package/dist/lib/neutral/chunk-EV4ZOL4P.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-GUXWFDD4.mjs → chunk-OC3JD73N.mjs} +2 -2
- package/dist/lib/neutral/{chunk-GUXWFDD4.mjs.map → chunk-OC3JD73N.mjs.map} +1 -1
- package/dist/lib/neutral/chunk-YJF6XOXX.mjs +175 -0
- package/dist/lib/neutral/chunk-YJF6XOXX.mjs.map +7 -0
- package/dist/lib/neutral/chunk-YMBC62S7.mjs +14 -0
- package/dist/lib/neutral/chunk-YMBC62S7.mjs.map +7 -0
- package/dist/lib/neutral/{chunk-CRKAIDRD.mjs → chunk-ZJ3GWRUJ.mjs} +15 -14
- package/dist/lib/neutral/chunk-ZJ3GWRUJ.mjs.map +7 -0
- package/dist/lib/neutral/{comment-config-EGY7RPPW.mjs → comment-config-M5OGFULS.mjs} +6 -4
- package/dist/lib/neutral/comment-config-M5OGFULS.mjs.map +7 -0
- package/dist/lib/neutral/components/index.mjs +13 -52
- package/dist/lib/neutral/components/index.mjs.map +4 -4
- package/dist/lib/neutral/containers/index.mjs +5 -3
- package/dist/lib/neutral/containers/index.mjs.map +3 -3
- package/dist/lib/neutral/{create-XW2FQNLK.mjs → create-OQUMKL5I.mjs} +2 -2
- package/dist/lib/neutral/{create-markdown-KLSVQCT7.mjs → create-markdown-4O5FDA77.mjs} +2 -2
- package/dist/lib/neutral/{create-object-3WMEQJ2C.mjs → create-object-RSEWTCMM.mjs} +2 -6
- package/dist/lib/neutral/create-object-RSEWTCMM.mjs.map +7 -0
- package/dist/lib/neutral/hooks/index.mjs +41 -15
- package/dist/lib/neutral/hooks/index.mjs.map +3 -3
- package/dist/lib/neutral/index.mjs +10 -16
- package/dist/lib/neutral/meta.json +1 -1
- package/dist/lib/neutral/meta.mjs +1 -1
- package/dist/lib/neutral/{open-F7KLNKVN.mjs → open-BAZIRXII.mjs} +2 -2
- package/dist/lib/neutral/operation-handler-SDCXGMGK.mjs +8 -0
- package/dist/lib/neutral/operations/index.mjs +1 -1
- package/dist/lib/neutral/plugin.mjs +2 -2
- package/dist/lib/neutral/plugin.workerd.mjs +12 -0
- package/dist/lib/neutral/plugin.workerd.mjs.map +7 -0
- package/dist/lib/neutral/{react-surface-6LX4ZQ2H.mjs → react-surface-37GL3UVG.mjs} +4 -4
- package/dist/lib/neutral/react-surface-37GL3UVG.mjs.map +7 -0
- package/dist/lib/neutral/{scroll-to-anchor-ACND3WJU.mjs → scroll-to-anchor-I6HFE5AH.mjs} +2 -2
- package/dist/lib/neutral/{set-view-mode-WDC7CAEC.mjs → set-view-mode-NY5OYYIM.mjs} +2 -2
- package/dist/lib/neutral/skill-definition-ET7BYY47.mjs +8 -0
- package/dist/lib/neutral/skill-definition-ET7BYY47.mjs.map +7 -0
- package/dist/lib/neutral/skills/index.mjs +8 -0
- package/dist/lib/neutral/skills/index.mjs.map +7 -0
- package/dist/lib/neutral/{state-ZYT3JRWT.mjs → state-3BR7L6CW.mjs} +1 -1
- package/dist/lib/neutral/{state-ZYT3JRWT.mjs.map → state-3BR7L6CW.mjs.map} +2 -2
- package/dist/lib/neutral/types/index.mjs +1 -1
- package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs +24 -0
- package/dist/lib/neutral/update-markdown-M4PTA6VS.mjs.map +7 -0
- package/dist/types/src/MarkdownPlugin.d.ts.map +1 -1
- package/dist/types/src/MarkdownPlugin.node.d.ts.map +1 -1
- package/dist/types/src/MarkdownPlugin.workerd.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts +1 -2
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/comment-config.d.ts +1 -2
- package/dist/types/src/capabilities/comment-config.d.ts.map +1 -1
- package/dist/types/src/capabilities/create-object.d.ts +1 -7
- package/dist/types/src/capabilities/create-object.d.ts.map +1 -1
- package/dist/types/src/capabilities/editor-view-state.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -3
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/node.d.ts +1 -0
- package/dist/types/src/capabilities/node.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -2
- package/dist/types/src/capabilities/settings.d.ts.map +1 -1
- package/dist/types/src/capabilities/skill-definition.d.ts +5 -0
- package/dist/types/src/capabilities/skill-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/state.d.ts +1 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts +3 -4
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.d.ts.map +1 -1
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts +3 -2
- package/dist/types/src/components/MarkdownEditor/MarkdownEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts +17 -0
- package/dist/types/src/components/PreviewComponent/PreviewComponent.d.ts.map +1 -0
- package/dist/types/src/components/PreviewComponent/index.d.ts +2 -0
- package/dist/types/src/components/PreviewComponent/index.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +1 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts +2 -13
- package/dist/types/src/containers/MarkdownArticle/MarkdownArticle.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts.map +1 -1
- package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts.map +1 -1
- package/dist/types/src/containers/index.d.ts +1 -0
- package/dist/types/src/containers/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useExtensions.d.ts +3 -3
- 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 +1 -2
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +4 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/operations/update-markdown.d.ts.map +1 -1
- package/dist/types/src/plugin.workerd.d.ts +2 -0
- package/dist/types/src/plugin.workerd.d.ts.map +1 -0
- package/dist/types/src/skills/index.d.ts +2 -0
- package/dist/types/src/skills/index.d.ts.map +1 -0
- package/dist/types/src/skills/markdown-skill.d.ts +4 -0
- package/dist/types/src/skills/markdown-skill.d.ts.map +1 -0
- package/dist/types/src/types/Markdown.d.ts +12 -20
- package/dist/types/src/types/Markdown.d.ts.map +1 -1
- package/dist/types/src/types/MarkdownOperation.d.ts +5 -28
- package/dist/types/src/types/MarkdownOperation.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +2 -0
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/dx.config.ts +1 -1
- package/package.json +66 -59
- package/src/MarkdownPlugin.node.ts +2 -1
- package/src/MarkdownPlugin.tsx +2 -6
- package/src/MarkdownPlugin.workerd.ts +5 -2
- package/src/capabilities/anchor-sort.ts +3 -2
- package/src/capabilities/comment-config.ts +6 -9
- package/src/capabilities/create-object.ts +1 -4
- package/src/capabilities/editor-view-state.ts +1 -1
- package/src/capabilities/index.ts +1 -3
- package/src/capabilities/node.ts +1 -0
- package/src/capabilities/react-surface.tsx +9 -3
- package/src/capabilities/skill-definition.ts +14 -0
- package/src/components/MarkdownEditor/MarkdownEditor.stories.tsx +72 -30
- package/src/components/MarkdownEditor/MarkdownEditor.tsx +11 -37
- package/src/components/MarkdownEditor/MarkdownEditorContent.tsx +3 -3
- package/src/components/PreviewComponent/PreviewComponent.tsx +195 -0
- package/src/components/PreviewComponent/index.ts +5 -0
- package/src/components/index.ts +1 -4
- package/src/containers/MarkdownArticle/MarkdownArticle.tsx +3 -3
- package/src/containers/MarkdownCard/MarkdownCard.tsx +1 -1
- package/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.tsx +1 -1
- package/src/containers/MarkdownSettings/MarkdownSettings.tsx +54 -0
- package/src/containers/index.ts +1 -0
- package/src/hooks/useEditorMenuOptions.ts +1 -1
- package/src/hooks/useExtensions.tsx +32 -12
- package/src/hooks/useLinkQuery.ts +5 -3
- package/src/index.ts +1 -2
- package/src/operations/create.conversations.json +1 -1
- package/src/operations/create.test.ts +5 -12
- package/src/operations/update-markdown.ts +7 -27
- package/src/operations/update.conversations.json +1 -1
- package/src/operations/update.test.ts +86 -16
- package/src/plugin.workerd.ts +5 -0
- package/src/skills/index.ts +5 -0
- package/src/{blueprints/markdown-blueprint.ts → skills/markdown-skill.ts} +8 -7
- package/src/types/Markdown.ts +19 -18
- package/src/types/MarkdownOperation.ts +11 -5
- package/src/types/types.ts +2 -7
- package/dist/lib/neutral/MarkdownSettings-F5AWRDT3.mjs +0 -32
- package/dist/lib/neutral/MarkdownSettings-F5AWRDT3.mjs.map +0 -7
- package/dist/lib/neutral/anchor-sort-UXN4RHFX.mjs.map +0 -7
- package/dist/lib/neutral/app-graph-builder-6Y5NHTNR.mjs +0 -66
- package/dist/lib/neutral/app-graph-builder-6Y5NHTNR.mjs.map +0 -7
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs +0 -15
- package/dist/lib/neutral/blueprint-definition-DSPXK77L.mjs.map +0 -7
- package/dist/lib/neutral/blueprints/index.mjs +0 -8
- package/dist/lib/neutral/chunk-4ULSRZRL.mjs +0 -10
- package/dist/lib/neutral/chunk-4ULSRZRL.mjs.map +0 -7
- package/dist/lib/neutral/chunk-BL46CERY.mjs +0 -8
- package/dist/lib/neutral/chunk-CRKAIDRD.mjs.map +0 -7
- package/dist/lib/neutral/chunk-LXNSKCPD.mjs.map +0 -7
- package/dist/lib/neutral/comment-config-EGY7RPPW.mjs.map +0 -7
- package/dist/lib/neutral/create-object-3WMEQJ2C.mjs.map +0 -7
- package/dist/lib/neutral/navigation-resolver-3WEM7SSC.mjs +0 -14
- package/dist/lib/neutral/navigation-resolver-3WEM7SSC.mjs.map +0 -7
- package/dist/lib/neutral/react-surface-6LX4ZQ2H.mjs.map +0 -7
- package/dist/lib/neutral/update-markdown-FGVN3LD4.mjs +0 -44
- package/dist/lib/neutral/update-markdown-FGVN3LD4.mjs.map +0 -7
- package/dist/types/src/blueprints/index.d.ts +0 -2
- package/dist/types/src/blueprints/index.d.ts.map +0 -1
- package/dist/types/src/blueprints/markdown-blueprint.d.ts +0 -4
- package/dist/types/src/blueprints/markdown-blueprint.d.ts.map +0 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -6
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -6
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
- package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -6
- package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
- package/dist/types/src/paths.d.ts +0 -3
- package/dist/types/src/paths.d.ts.map +0 -1
- package/src/blueprints/index.ts +0 -5
- package/src/capabilities/app-graph-builder.ts +0 -61
- package/src/capabilities/blueprint-definition.ts +0 -19
- package/src/capabilities/navigation-resolver.ts +0 -19
- package/src/components/MarkdownSettings/MarkdownSettings.tsx +0 -35
- package/src/paths.ts +0 -13
- /package/dist/lib/neutral/{chunk-BL46CERY.mjs.map → chunk-2V6A5NDQ.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-XW2FQNLK.mjs.map → create-OQUMKL5I.mjs.map} +0 -0
- /package/dist/lib/neutral/{create-markdown-KLSVQCT7.mjs.map → create-markdown-4O5FDA77.mjs.map} +0 -0
- /package/dist/lib/neutral/{open-F7KLNKVN.mjs.map → open-BAZIRXII.mjs.map} +0 -0
- /package/dist/lib/neutral/{blueprints/index.mjs.map → operation-handler-SDCXGMGK.mjs.map} +0 -0
- /package/dist/lib/neutral/{scroll-to-anchor-ACND3WJU.mjs.map → scroll-to-anchor-I6HFE5AH.mjs.map} +0 -0
- /package/dist/lib/neutral/{set-view-mode-WDC7CAEC.mjs.map → set-view-mode-NY5OYYIM.mjs.map} +0 -0
- /package/dist/types/src/{components → containers}/MarkdownSettings/MarkdownSettings.stories.d.ts +0 -0
- /package/dist/types/src/{components → containers}/MarkdownSettings/index.d.ts +0 -0
- /package/src/{components → containers}/MarkdownSettings/index.ts +0 -0
|
@@ -7,7 +7,7 @@ import * as Effect from 'effect/Effect';
|
|
|
7
7
|
|
|
8
8
|
import { MemoizedAiService } from '@dxos/ai/testing';
|
|
9
9
|
import { SpaceProperties } from '@dxos/client-protocol';
|
|
10
|
-
import {
|
|
10
|
+
import { Operation, Skill } from '@dxos/compute';
|
|
11
11
|
import { Collection, Database, Feed, Obj, Query, Ref } from '@dxos/echo';
|
|
12
12
|
import { TestHelpers } from '@dxos/effect/testing';
|
|
13
13
|
import { AgentService } from '@dxos/functions-runtime';
|
|
@@ -20,7 +20,7 @@ import { trim } from '@dxos/util';
|
|
|
20
20
|
|
|
21
21
|
import { WithProperties } from '#testing';
|
|
22
22
|
|
|
23
|
-
import
|
|
23
|
+
import MarkdownSkill from '../skills/markdown-skill';
|
|
24
24
|
import { MarkdownOperation } from '../types';
|
|
25
25
|
import { MarkdownOperationHandlerSet } from './index';
|
|
26
26
|
|
|
@@ -29,15 +29,8 @@ EntityId.dangerouslyDisableRandomness();
|
|
|
29
29
|
const TestLayer = AssistantTestLayer({
|
|
30
30
|
aiServicePreset: 'edge-remote',
|
|
31
31
|
operationHandlers: MarkdownOperationHandlerSet,
|
|
32
|
-
types: [
|
|
33
|
-
|
|
34
|
-
Collection.Collection,
|
|
35
|
-
Blueprint.Blueprint,
|
|
36
|
-
Markdown.Document,
|
|
37
|
-
HasSubject.HasSubject,
|
|
38
|
-
Feed.Feed,
|
|
39
|
-
],
|
|
40
|
-
blueprints: [MarkdownBlueprint.make()],
|
|
32
|
+
types: [SpaceProperties, Collection.Collection, Skill.Skill, Markdown.Document, HasSubject.HasSubject, Feed.Feed],
|
|
33
|
+
skills: [MarkdownSkill.make()],
|
|
41
34
|
tracing: 'pretty',
|
|
42
35
|
});
|
|
43
36
|
|
|
@@ -68,12 +61,87 @@ describe('update', () => {
|
|
|
68
61
|
),
|
|
69
62
|
);
|
|
70
63
|
|
|
64
|
+
it.effect(
|
|
65
|
+
'append to empty document when oldString is omitted',
|
|
66
|
+
Effect.fnUntraced(
|
|
67
|
+
function* (_) {
|
|
68
|
+
const doc = Markdown.make({
|
|
69
|
+
name: 'Empty Doc',
|
|
70
|
+
content: '',
|
|
71
|
+
});
|
|
72
|
+
yield* Database.add(doc);
|
|
73
|
+
|
|
74
|
+
yield* Operation.invoke(MarkdownOperation.Update, {
|
|
75
|
+
doc: Ref.make(doc),
|
|
76
|
+
edits: [{ newString: '# Hello' }],
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
const updatedDoc = yield* Database.resolve(Obj.getURI(doc), Markdown.Document);
|
|
80
|
+
const text = yield* Database.load(updatedDoc.content);
|
|
81
|
+
expect(text.content).toBe('# Hello');
|
|
82
|
+
},
|
|
83
|
+
WithProperties,
|
|
84
|
+
Effect.provide(TestLayer),
|
|
85
|
+
TestHelpers.provideTestContext,
|
|
86
|
+
),
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
it.effect(
|
|
90
|
+
'append to empty document when oldString is empty',
|
|
91
|
+
Effect.fnUntraced(
|
|
92
|
+
function* (_) {
|
|
93
|
+
const doc = Markdown.make({
|
|
94
|
+
name: 'Empty Doc',
|
|
95
|
+
content: '',
|
|
96
|
+
});
|
|
97
|
+
yield* Database.add(doc);
|
|
98
|
+
|
|
99
|
+
yield* Operation.invoke(MarkdownOperation.Update, {
|
|
100
|
+
doc: Ref.make(doc),
|
|
101
|
+
edits: [{ oldString: '', newString: '# Hello' }],
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
const updatedDoc = yield* Database.resolve(Obj.getURI(doc), Markdown.Document);
|
|
105
|
+
const text = yield* Database.load(updatedDoc.content);
|
|
106
|
+
expect(text.content).toBe('# Hello');
|
|
107
|
+
},
|
|
108
|
+
WithProperties,
|
|
109
|
+
Effect.provide(TestLayer),
|
|
110
|
+
TestHelpers.provideTestContext,
|
|
111
|
+
),
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
it.effect(
|
|
115
|
+
'append to non-empty document when oldString is omitted',
|
|
116
|
+
Effect.fnUntraced(
|
|
117
|
+
function* (_) {
|
|
118
|
+
const doc = Markdown.make({
|
|
119
|
+
name: 'Shopping list',
|
|
120
|
+
content: '# Shopping list',
|
|
121
|
+
});
|
|
122
|
+
yield* Database.add(doc);
|
|
123
|
+
|
|
124
|
+
yield* Operation.invoke(MarkdownOperation.Update, {
|
|
125
|
+
doc: Ref.make(doc),
|
|
126
|
+
edits: [{ newString: '\n- milk' }],
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
const updatedDoc = yield* Database.resolve(Obj.getURI(doc), Markdown.Document);
|
|
130
|
+
const text = yield* Database.load(updatedDoc.content);
|
|
131
|
+
expect(text.content).toBe('# Shopping list\n- milk');
|
|
132
|
+
},
|
|
133
|
+
WithProperties,
|
|
134
|
+
Effect.provide(TestLayer),
|
|
135
|
+
TestHelpers.provideTestContext,
|
|
136
|
+
),
|
|
137
|
+
);
|
|
138
|
+
|
|
71
139
|
it.effect(
|
|
72
140
|
'create and update a markdown document',
|
|
73
141
|
Effect.fnUntraced(
|
|
74
142
|
function* (_) {
|
|
75
143
|
const agent = yield* AgentService.createSession({
|
|
76
|
-
|
|
144
|
+
skills: [MarkdownSkill.make()],
|
|
77
145
|
});
|
|
78
146
|
|
|
79
147
|
yield* agent.submitPrompt('Create a document with a cookie recipe.');
|
|
@@ -132,7 +200,7 @@ describe('update', () => {
|
|
|
132
200
|
}),
|
|
133
201
|
);
|
|
134
202
|
const agent = yield* AgentService.createSession({
|
|
135
|
-
|
|
203
|
+
skills: [MarkdownSkill.make()],
|
|
136
204
|
context: [Ref.make(document)],
|
|
137
205
|
});
|
|
138
206
|
|
|
@@ -175,14 +243,16 @@ describe('update', () => {
|
|
|
175
243
|
}),
|
|
176
244
|
);
|
|
177
245
|
const agent = yield* AgentService.createSession({
|
|
178
|
-
|
|
246
|
+
skills: [MarkdownSkill.make()],
|
|
179
247
|
context: [Ref.make(document)],
|
|
180
248
|
});
|
|
181
249
|
|
|
250
|
+
// The agent process completes once its input queue drains (maybeComplete → succeed), so all
|
|
251
|
+
// prompts must be enqueued before awaiting completion; the agent then drains them in order,
|
|
252
|
+
// each turn building on the previous edit. Awaiting between submits would let the process
|
|
253
|
+
// succeed after the first turn, dropping the rest.
|
|
182
254
|
yield* agent.submitPrompt('Add milk to the shopping list.');
|
|
183
|
-
yield* agent.waitForCompletion();
|
|
184
255
|
yield* agent.submitPrompt('Add bread to the shopping list.');
|
|
185
|
-
yield* agent.waitForCompletion();
|
|
186
256
|
yield* agent.submitPrompt('Add eggs to the shopping list.');
|
|
187
257
|
yield* agent.waitForCompletion();
|
|
188
258
|
|
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Skill, Template } from '@dxos/compute';
|
|
6
6
|
import { trim } from '@dxos/util';
|
|
7
7
|
|
|
8
8
|
import { Markdown, MarkdownOperation } from '#types';
|
|
9
9
|
|
|
10
10
|
const make = () =>
|
|
11
|
-
|
|
12
|
-
key: Markdown.
|
|
11
|
+
Skill.make({
|
|
12
|
+
key: Markdown.SKILL_KEY,
|
|
13
13
|
name: 'Markdown',
|
|
14
14
|
description: 'Work with markdown documents. Preferred over raw database operations.',
|
|
15
|
-
tools:
|
|
15
|
+
tools: Skill.toolDefinitions({
|
|
16
16
|
operations: [MarkdownOperation.Create, MarkdownOperation.Open, MarkdownOperation.Update],
|
|
17
17
|
}),
|
|
18
18
|
instructions: Template.make({
|
|
@@ -33,11 +33,12 @@ const make = () =>
|
|
|
33
33
|
${'```'}
|
|
34
34
|
`,
|
|
35
35
|
}),
|
|
36
|
+
agentCanEnable: true,
|
|
36
37
|
});
|
|
37
38
|
|
|
38
|
-
const
|
|
39
|
-
key: Markdown.
|
|
39
|
+
const skill: Skill.Definition = {
|
|
40
|
+
key: Markdown.SKILL_KEY,
|
|
40
41
|
make,
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
export default
|
|
44
|
+
export default skill;
|
package/src/types/Markdown.ts
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
import * as Schema from 'effect/Schema';
|
|
6
6
|
|
|
7
7
|
import { AppAnnotation } from '@dxos/app-toolkit';
|
|
8
|
-
import {
|
|
8
|
+
import { Annotation, DXN, Obj, Ref, Type } from '@dxos/echo';
|
|
9
9
|
import { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';
|
|
10
|
-
import { Text } from '@dxos/schema';
|
|
10
|
+
import { CollectionItemAnnotation, Text } from '@dxos/schema';
|
|
11
11
|
|
|
12
|
-
export const
|
|
12
|
+
export const SKILL_KEY = 'org.dxos.skill.markdown';
|
|
13
13
|
|
|
14
14
|
// Re-export Settings as merged const/type (not as namespace).
|
|
15
15
|
import * as SettingsModule from './Settings';
|
|
@@ -19,21 +19,22 @@ export type Settings = SettingsModule.Settings;
|
|
|
19
19
|
/**
|
|
20
20
|
* Document Item type.
|
|
21
21
|
*/
|
|
22
|
-
export
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
|
|
22
|
+
export class Document extends Type.makeObject<Document>(DXN.make('org.dxos.type.document', '0.1.0'))(
|
|
23
|
+
Schema.Struct({
|
|
24
|
+
name: Schema.optional(Schema.String),
|
|
25
|
+
description: Schema.optional(Schema.String),
|
|
26
|
+
fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),
|
|
27
|
+
content: Ref.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),
|
|
28
|
+
}).pipe(
|
|
29
|
+
LabelAnnotation.set(['name', 'fallbackName']),
|
|
30
|
+
DescriptionAnnotation.set('description'),
|
|
31
|
+
Annotation.IconAnnotation.set({ icon: 'ph--text-aa--regular', hue: 'indigo' }),
|
|
32
|
+
AppAnnotation.SkillsAnnotation.set([SKILL_KEY]),
|
|
33
|
+
AppAnnotation.GraphPropsAnnotation.set({ managesAutofocus: true }),
|
|
34
|
+
AppAnnotation.CardAnnotation.set(true),
|
|
35
|
+
CollectionItemAnnotation.set(true),
|
|
36
|
+
),
|
|
37
|
+
) {}
|
|
37
38
|
|
|
38
39
|
/**
|
|
39
40
|
* Document factory.
|
|
@@ -8,7 +8,7 @@ import * as Schema from 'effect/Schema';
|
|
|
8
8
|
|
|
9
9
|
import { Capability } from '@dxos/app-framework';
|
|
10
10
|
import { Operation } from '@dxos/compute';
|
|
11
|
-
import { Database, Ref, Type
|
|
11
|
+
import { Database, DXN, Ref, Type } from '@dxos/echo';
|
|
12
12
|
import { EditorViewMode } from '@dxos/ui-editor/types';
|
|
13
13
|
import { trim } from '@dxos/util';
|
|
14
14
|
|
|
@@ -18,10 +18,15 @@ import * as Markdown from './Markdown';
|
|
|
18
18
|
|
|
19
19
|
const makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);
|
|
20
20
|
|
|
21
|
+
// The edit descriptions feed the markdown skill's LLM tool definition (and its memoized
|
|
22
|
+
// fixtures), so the schema stays local and context-tuned; the apply logic is shared via `Text.apply`.
|
|
21
23
|
const Edit = Schema.Struct({
|
|
22
|
-
oldString: Schema.
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
oldString: Schema.optional(
|
|
25
|
+
Schema.String.annotations({
|
|
26
|
+
description:
|
|
27
|
+
'The text to find in the document. Set to undefined to append the newString to the end of the document.',
|
|
28
|
+
}),
|
|
29
|
+
),
|
|
25
30
|
newString: Schema.String.annotations({
|
|
26
31
|
description: 'The text to replace it with.',
|
|
27
32
|
}),
|
|
@@ -123,7 +128,8 @@ export const Update = Operation.make({
|
|
|
123
128
|
description: 'The ID of the markdown document.',
|
|
124
129
|
}),
|
|
125
130
|
edits: Schema.Array(Edit).annotations({
|
|
126
|
-
description:
|
|
131
|
+
description:
|
|
132
|
+
'The edits to apply to the document. Each edit finds oldString and replaces it with newString; omit oldString to append newString to the end.',
|
|
127
133
|
}),
|
|
128
134
|
}),
|
|
129
135
|
output: Schema.Struct({
|
package/src/types/types.ts
CHANGED
|
@@ -8,20 +8,15 @@ import { type EditorViewMode } from '@dxos/ui-editor/types';
|
|
|
8
8
|
|
|
9
9
|
import { type Document } from './Markdown';
|
|
10
10
|
|
|
11
|
-
// TODO(burdon): Remove these from ./types since not part of plugin-markdown API?
|
|
12
|
-
// TODO(wittjosiah): MarkdownExtensionProvider is a part of the MarkdownCapabilities api which should be in ./types.
|
|
13
|
-
|
|
14
|
-
// TODO(burdon): Async?
|
|
15
11
|
export type MarkdownExtensionProvider = (props: {
|
|
16
12
|
document?: Document;
|
|
17
13
|
viewMode?: EditorViewMode;
|
|
18
14
|
}) => Extension | undefined;
|
|
19
15
|
|
|
20
16
|
export type MarkdownPluginState = {
|
|
21
|
-
|
|
17
|
+
/** Codemirror extensions provided by other plugins. */
|
|
22
18
|
extensionProviders?: MarkdownExtensionProvider[];
|
|
23
19
|
|
|
24
|
-
|
|
25
|
-
// View mode per document.
|
|
20
|
+
/** View mode per document. */
|
|
26
21
|
viewMode: Record<string, EditorViewMode>;
|
|
27
22
|
};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/components/MarkdownSettings/MarkdownSettings.tsx
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { Input } from "@dxos/react-ui";
|
|
6
|
-
import { Settings as SettingsForm } from "@dxos/react-ui-form";
|
|
7
|
-
import { meta } from "#meta";
|
|
8
|
-
import { Markdown } from "#types";
|
|
9
|
-
var SnippetsField = ({ value, onChange, readonly }) => /* @__PURE__ */ React.createElement(Input.TextArea, {
|
|
10
|
-
disabled: readonly,
|
|
11
|
-
rows: 5,
|
|
12
|
-
value: value ?? "",
|
|
13
|
-
onChange: (event) => onChange(event.target.value)
|
|
14
|
-
});
|
|
15
|
-
var MarkdownSettings = ({ settings, onSettingsChange }) => {
|
|
16
|
-
return /* @__PURE__ */ React.createElement(SettingsForm.Viewport, null, /* @__PURE__ */ React.createElement(SettingsForm.Section, {
|
|
17
|
-
title: meta.profile.name ?? "Editor"
|
|
18
|
-
}, /* @__PURE__ */ React.createElement(SettingsForm.FieldSet, {
|
|
19
|
-
readonly: !onSettingsChange,
|
|
20
|
-
schema: Markdown.Settings,
|
|
21
|
-
visible: (path, values) => path !== "snippets" || !!values.debug,
|
|
22
|
-
fieldMap: {
|
|
23
|
-
snippets: SnippetsField
|
|
24
|
-
},
|
|
25
|
-
values: settings,
|
|
26
|
-
onValuesChanged: (values) => onSettingsChange?.(() => values)
|
|
27
|
-
})));
|
|
28
|
-
};
|
|
29
|
-
export {
|
|
30
|
-
MarkdownSettings as default
|
|
31
|
-
};
|
|
32
|
-
//# sourceMappingURL=MarkdownSettings-F5AWRDT3.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/MarkdownSettings/MarkdownSettings.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type AppSurface } from '@dxos/app-toolkit/ui';\nimport { Input } from '@dxos/react-ui';\nimport { Settings as SettingsForm, type SettingsFieldProps } from '@dxos/react-ui-form';\n\nimport { meta } from '#meta';\nimport { Markdown } from '#types';\n\nexport type MarkdownSettingsProps = AppSurface.SettingsArticleProps<Markdown.Settings>;\n\nconst SnippetsField = ({ value, onChange, readonly }: SettingsFieldProps<string | undefined>) => (\n <Input.TextArea disabled={readonly} rows={5} value={value ?? ''} onChange={(event) => onChange(event.target.value)} />\n);\n\nexport const MarkdownSettings = ({ settings, onSettingsChange }: MarkdownSettingsProps) => {\n return (\n <SettingsForm.Viewport>\n <SettingsForm.Section title={meta.profile.name ?? 'Editor'}>\n <SettingsForm.FieldSet\n readonly={!onSettingsChange}\n schema={Markdown.Settings}\n visible={(path, values) => path !== 'snippets' || !!values.debug}\n fieldMap={{ snippets: SnippetsField }}\n values={settings}\n onValuesChanged={(values) => onSettingsChange?.(() => values)}\n />\n </SettingsForm.Section>\n </SettingsForm.Viewport>\n );\n};\n"],
|
|
5
|
-
"mappings": ";;;AAIA,OAAOA,WAAW;AAGlB,SAASC,aAAa;AACtB,SAASC,YAAYC,oBAA6C;AAElE,SAASC,YAAY;AACrB,SAASC,gBAAgB;AAIzB,IAAMC,gBAAgB,CAAC,EAAEC,OAAOC,UAAUC,SAAQ,MAChD,sBAAA,cAACR,MAAMS,UAAQ;EAACC,UAAUF;EAAUG,MAAM;EAAGL,OAAOA,SAAS;EAAIC,UAAU,CAACK,UAAUL,SAASK,MAAMC,OAAOP,KAAK;;AAG5G,IAAMQ,mBAAmB,CAAC,EAAEC,UAAUC,iBAAgB,MAAyB;AACpF,SACE,sBAAA,cAACd,aAAae,UAAQ,MACpB,sBAAA,cAACf,aAAagB,SAAO;IAACC,OAAOhB,KAAKiB,QAAQC,QAAQ;KAChD,sBAAA,cAACnB,aAAaoB,UAAQ;IACpBd,UAAU,CAACQ;IACXO,QAAQnB,SAASH;IACjBuB,SAAS,CAACC,MAAMC,WAAWD,SAAS,cAAc,CAAC,CAACC,OAAOC;IAC3DC,UAAU;MAAEC,UAAUxB;IAAc;IACpCqB,QAAQX;IACRe,iBAAiB,CAACJ,WAAWV,mBAAmB,MAAMU,MAAAA;;AAKhE;",
|
|
6
|
-
"names": ["React", "Input", "Settings", "SettingsForm", "meta", "Markdown", "SnippetsField", "value", "onChange", "readonly", "TextArea", "disabled", "rows", "event", "target", "MarkdownSettings", "settings", "onSettingsChange", "Viewport", "Section", "title", "profile", "name", "FieldSet", "schema", "visible", "path", "values", "debug", "fieldMap", "snippets", "onValuesChanged"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Relation, Type } from '@dxos/echo';\nimport { createDocAccessor, getRangeFromCursor } from '@dxos/echo-client';\nimport { type AnchoredTo } from '@dxos/types';\n\nimport { Markdown } from '#types';\n\nexport default Capability.makeModule(() =>\n Effect.succeed(\n Capability.contributes(AppCapabilities.AnchorSort, {\n key: Type.getTypename(Markdown.Document),\n sort: (anchorA: AnchoredTo.AnchoredTo, anchorB: AnchoredTo.AnchoredTo) => {\n const doc = Relation.getTarget(anchorA) as Markdown.Document;\n const accessor = doc.content.target ? createDocAccessor(doc.content.target, ['content']) : undefined;\n if (doc !== Relation.getTarget(anchorB) || !accessor) {\n return 0;\n }\n\n const getStartPosition = (cursor: string | undefined) => {\n const range = cursor ? getRangeFromCursor(accessor, cursor) : undefined;\n return range?.start ?? Number.MAX_SAFE_INTEGER;\n };\n\n const posA = getStartPosition(anchorA.anchor);\n const posB = getStartPosition(anchorB.anchor);\n return posA - posB;\n },\n }),\n ),\n);\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,UAAUC,YAAY;AAC/B,SAASC,mBAAmBC,0BAA0B;AAGtD,SAASC,gBAAgB;AAEzB,IAAA,sBAAeN,WAAWO,WAAW,MAC5BC,eACLR,WAAWS,YAAYR,gBAAgBS,YAAY;EACjDC,KAAKR,KAAKS,YAAYN,SAASO,QAAQ;EACvCC,MAAM,CAACC,SAAgCC,YAAAA;AACrC,UAAMC,MAAMf,SAASgB,UAAUH,OAAAA;AAC/B,UAAMI,WAAWF,IAAIG,QAAQC,SAASjB,kBAAkBa,IAAIG,QAAQC,QAAQ;MAAC;KAAU,IAAIC;AAC3F,QAAIL,QAAQf,SAASgB,UAAUF,OAAAA,KAAY,CAACG,UAAU;AACpD,aAAO;IACT;AAEA,UAAMI,mBAAmB,CAACC,WAAAA;AACxB,YAAMC,QAAQD,SAASnB,mBAAmBc,UAAUK,MAAAA,IAAUF;AAC9D,aAAOG,OAAOC,SAASC,OAAOC;IAChC;AAEA,UAAMC,OAAON,iBAAiBR,QAAQe,MAAM;AAC5C,UAAMC,OAAOR,iBAAiBP,QAAQc,MAAM;AAC5C,WAAOD,OAAOE;EAChB;AACF,CAAA,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "Relation", "Type", "createDocAccessor", "getRangeFromCursor", "Markdown", "makeModule", "succeed", "contributes", "AnchorSort", "key", "getTypename", "Document", "sort", "anchorA", "anchorB", "doc", "getTarget", "accessor", "content", "target", "undefined", "getStartPosition", "cursor", "range", "start", "Number", "MAX_SAFE_INTEGER", "posA", "anchor", "posB"]
|
|
7
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
getDocumentsPath
|
|
3
|
-
} from "./chunk-4ULSRZRL.mjs";
|
|
4
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
5
|
-
|
|
6
|
-
// src/capabilities/app-graph-builder.ts
|
|
7
|
-
import * as Effect from "effect/Effect";
|
|
8
|
-
import * as Option from "effect/Option";
|
|
9
|
-
import { Capability } from "@dxos/app-framework";
|
|
10
|
-
import { AppCapabilities, LayoutOperation } from "@dxos/app-toolkit";
|
|
11
|
-
import { isSpace } from "@dxos/client/echo";
|
|
12
|
-
import { Operation } from "@dxos/compute";
|
|
13
|
-
import { Type } from "@dxos/echo";
|
|
14
|
-
import { GraphBuilder, Node } from "@dxos/plugin-graph";
|
|
15
|
-
import { SpaceOperation } from "@dxos/plugin-space";
|
|
16
|
-
import { Markdown } from "#types";
|
|
17
|
-
var documentTypename = Type.getTypename(Markdown.Document);
|
|
18
|
-
var app_graph_builder_default = Capability.makeModule(Effect.fnUntraced(function* () {
|
|
19
|
-
const extensions = yield* Effect.all([
|
|
20
|
-
GraphBuilder.createExtension({
|
|
21
|
-
id: "documentsSectionActions",
|
|
22
|
-
match: (node) => {
|
|
23
|
-
const space = isSpace(node.properties.space) ? node.properties.space : void 0;
|
|
24
|
-
return node.type === documentTypename && space ? Option.some(space) : Option.none();
|
|
25
|
-
},
|
|
26
|
-
actions: (space) => Effect.succeed([
|
|
27
|
-
Node.makeAction({
|
|
28
|
-
id: "create-document",
|
|
29
|
-
data: () => Effect.gen(function* () {
|
|
30
|
-
const doc = Markdown.make({});
|
|
31
|
-
const { subject } = yield* Operation.invoke(SpaceOperation.AddObject, {
|
|
32
|
-
object: doc,
|
|
33
|
-
target: space.db,
|
|
34
|
-
hidden: true,
|
|
35
|
-
targetNodeId: getDocumentsPath(space.db.spaceId)
|
|
36
|
-
}, {
|
|
37
|
-
spaceId: space.db.spaceId
|
|
38
|
-
});
|
|
39
|
-
yield* Operation.invoke(LayoutOperation.Open, {
|
|
40
|
-
subject: [
|
|
41
|
-
...subject
|
|
42
|
-
]
|
|
43
|
-
}, {
|
|
44
|
-
spaceId: space.db.spaceId
|
|
45
|
-
});
|
|
46
|
-
}),
|
|
47
|
-
properties: {
|
|
48
|
-
label: [
|
|
49
|
-
"add-object.label",
|
|
50
|
-
{
|
|
51
|
-
ns: documentTypename
|
|
52
|
-
}
|
|
53
|
-
],
|
|
54
|
-
icon: "ph--plus--regular",
|
|
55
|
-
disposition: "list-item-primary"
|
|
56
|
-
}
|
|
57
|
-
})
|
|
58
|
-
])
|
|
59
|
-
})
|
|
60
|
-
]);
|
|
61
|
-
return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);
|
|
62
|
-
}));
|
|
63
|
-
export {
|
|
64
|
-
app_graph_builder_default as default
|
|
65
|
-
};
|
|
66
|
-
//# sourceMappingURL=app-graph-builder-6Y5NHTNR.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/app-graph-builder.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\nimport * as Option from 'effect/Option';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities, LayoutOperation } from '@dxos/app-toolkit';\nimport { isSpace } from '@dxos/client/echo';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { GraphBuilder, Node } from '@dxos/plugin-graph';\nimport { SpaceOperation } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\nimport { getDocumentsPath } from '../paths';\n\nconst documentTypename = Type.getTypename(Markdown.Document);\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n const extensions = yield* Effect.all([\n GraphBuilder.createExtension({\n id: 'documentsSectionActions',\n match: (node) => {\n const space = isSpace(node.properties.space) ? node.properties.space : undefined;\n return node.type === documentTypename && space ? Option.some(space) : Option.none();\n },\n actions: (space) =>\n Effect.succeed([\n Node.makeAction({\n id: 'create-document',\n data: () =>\n Effect.gen(function* () {\n const doc = Markdown.make({});\n const { subject } = yield* Operation.invoke(\n SpaceOperation.AddObject,\n { object: doc, target: space.db, hidden: true, targetNodeId: getDocumentsPath(space.db.spaceId) },\n { spaceId: space.db.spaceId },\n );\n yield* Operation.invoke(\n LayoutOperation.Open,\n { subject: [...subject] },\n { spaceId: space.db.spaceId },\n );\n }),\n properties: {\n label: ['add-object.label', { ns: documentTypename }],\n icon: 'ph--plus--regular',\n disposition: 'list-item-primary',\n },\n }),\n ]),\n }),\n ]);\n\n return Capability.contributes(AppCapabilities.AppGraphBuilder, extensions);\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AACxB,YAAYC,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiBC,uBAAuB;AACjD,SAASC,eAAe;AACxB,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,cAAcC,YAAY;AACnC,SAASC,sBAAsB;AAE/B,SAASC,gBAAgB;AAIzB,IAAMC,mBAAmBC,KAAKC,YAAYC,SAASC,QAAQ;AAE3D,IAAA,4BAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,QAAMC,aAAa,OAAcC,WAAI;IACnCC,aAAaC,gBAAgB;MAC3BC,IAAI;MACJC,OAAO,CAACC,SAAAA;AACN,cAAMC,QAAQC,QAAQF,KAAKG,WAAWF,KAAK,IAAID,KAAKG,WAAWF,QAAQG;AACvE,eAAOJ,KAAKK,SAASnB,oBAAoBe,QAAeK,YAAKL,KAAAA,IAAgBM,YAAI;MACnF;MACAC,SAAS,CAACP,UACDQ,eAAQ;QACbC,KAAKC,WAAW;UACdb,IAAI;UACJc,MAAM,MACGC,WAAI,aAAA;AACT,kBAAMC,MAAMzB,SAAS0B,KAAK,CAAC,CAAA;AAC3B,kBAAM,EAAEC,QAAO,IAAK,OAAOC,UAAUC,OACnCC,eAAeC,WACf;cAAEC,QAAQP;cAAKQ,QAAQrB,MAAMsB;cAAIC,QAAQ;cAAMC,cAAcC,iBAAiBzB,MAAMsB,GAAGI,OAAO;YAAE,GAChG;cAAEA,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;AAE9B,mBAAOV,UAAUC,OACfU,gBAAgBC,MAChB;cAAEb,SAAS;mBAAIA;;YAAS,GACxB;cAAEW,SAAS1B,MAAMsB,GAAGI;YAAQ,CAAA;UAEhC,CAAA;UACFxB,YAAY;YACV2B,OAAO;cAAC;cAAoB;gBAAEC,IAAI7C;cAAiB;;YACnD8C,MAAM;YACNC,aAAa;UACf;QACF,CAAA;OACD;IACL,CAAA;GACD;AAED,SAAO1C,WAAW2C,YAAYC,gBAAgBC,iBAAiB1C,UAAAA;AACjE,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Option", "Capability", "AppCapabilities", "LayoutOperation", "isSpace", "Operation", "Type", "GraphBuilder", "Node", "SpaceOperation", "Markdown", "documentTypename", "Type", "getTypename", "Markdown", "Document", "Capability", "makeModule", "fnUntraced", "extensions", "all", "GraphBuilder", "createExtension", "id", "match", "node", "space", "isSpace", "properties", "undefined", "type", "some", "none", "actions", "succeed", "Node", "makeAction", "data", "gen", "doc", "make", "subject", "Operation", "invoke", "SpaceOperation", "AddObject", "object", "target", "db", "hidden", "targetNodeId", "getDocumentsPath", "spaceId", "LayoutOperation", "Open", "label", "ns", "icon", "disposition", "contributes", "AppCapabilities", "AppGraphBuilder"]
|
|
7
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import "./chunk-J5LGTIGS.mjs";
|
|
2
|
-
|
|
3
|
-
// src/capabilities/blueprint-definition.ts
|
|
4
|
-
import * as Effect from "effect/Effect";
|
|
5
|
-
import { Capability } from "@dxos/app-framework";
|
|
6
|
-
import { AppCapabilities } from "@dxos/app-toolkit";
|
|
7
|
-
import { MarkdownBlueprint } from "#blueprints";
|
|
8
|
-
var blueprintDefinition = () => Effect.succeed([
|
|
9
|
-
Capability.contributes(AppCapabilities.BlueprintDefinition, MarkdownBlueprint)
|
|
10
|
-
]);
|
|
11
|
-
var blueprint_definition_default = blueprintDefinition;
|
|
12
|
-
export {
|
|
13
|
-
blueprint_definition_default as default
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=blueprint-definition-DSPXK77L.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/blueprint-definition.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\n\nimport { MarkdownBlueprint } from '#blueprints';\n\n// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/compute types (TS2883).\nconst blueprintDefinition: () => Effect.Effect<\n Capability.Capability<typeof AppCapabilities.BlueprintDefinition>[],\n never,\n Capability.Service\n> = () => Effect.succeed([Capability.contributes(AppCapabilities.BlueprintDefinition, MarkdownBlueprint)]);\n\nexport default blueprintDefinition;\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAEhC,SAASC,yBAAyB;AAGlC,IAAMC,sBAIF,MAAaC,eAAQ;EAACJ,WAAWK,YAAYJ,gBAAgBK,qBAAqBJ,iBAAAA;CAAmB;AAEzG,IAAA,+BAAeC;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "MarkdownBlueprint", "blueprintDefinition", "succeed", "contributes", "BlueprintDefinition"]
|
|
7
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
// src/paths.ts
|
|
2
|
-
import { Paths } from "@dxos/app-toolkit";
|
|
3
|
-
import { Markdown } from "#types";
|
|
4
|
-
var { getSectionPath: getDocumentsPath, getObjectPath: getDocumentPath } = Paths.createTypeSectionPaths(Markdown.Document);
|
|
5
|
-
|
|
6
|
-
export {
|
|
7
|
-
getDocumentsPath,
|
|
8
|
-
getDocumentPath
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=chunk-4ULSRZRL.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/paths.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Paths } from '@dxos/app-toolkit';\n\nimport { Markdown } from '#types';\n\nconst { getSectionPath: getDocumentsPath, getObjectPath: getDocumentPath } = Paths.createTypeSectionPaths(\n Markdown.Document,\n);\n\nexport { getDocumentsPath, getDocumentPath };\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,aAAa;AAEtB,SAASC,gBAAgB;AAEzB,IAAM,EAAEC,gBAAgBC,kBAAkBC,eAAeC,gBAAe,IAAKL,MAAMM,uBACjFL,SAASM,QAAQ;",
|
|
6
|
-
"names": ["Paths", "Markdown", "getSectionPath", "getDocumentsPath", "getObjectPath", "getDocumentPath", "createTypeSectionPaths", "Document"]
|
|
7
|
-
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
// src/operations/index.ts
|
|
2
|
-
import { OperationHandlerSet } from "@dxos/compute";
|
|
3
|
-
var MarkdownOperationHandlerSet = OperationHandlerSet.lazy(() => import("./create-XW2FQNLK.mjs"), () => import("./create-markdown-KLSVQCT7.mjs"), () => import("./open-F7KLNKVN.mjs"), () => import("./scroll-to-anchor-ACND3WJU.mjs"), () => import("./set-view-mode-WDC7CAEC.mjs"), () => import("./update-markdown-FGVN3LD4.mjs"));
|
|
4
|
-
|
|
5
|
-
export {
|
|
6
|
-
MarkdownOperationHandlerSet
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=chunk-BL46CERY.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/types/Markdown.ts", "../../../src/types/Settings.ts", "../../../src/types/MarkdownCapabilities.ts", "../../../src/types/MarkdownEvents.ts", "../../../src/types/MarkdownOperation.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\n\nimport { AppAnnotation } from '@dxos/app-toolkit';\nimport { DXN, Annotation, Obj, Ref, Type } from '@dxos/echo';\nimport { DescriptionAnnotation, FormInputAnnotation, LabelAnnotation } from '@dxos/echo/Annotation';\nimport { Text } from '@dxos/schema';\n\nexport const BLUEPRINT_KEY = 'org.dxos.blueprint.markdown';\n\n// Re-export Settings as merged const/type (not as namespace).\nimport * as SettingsModule from './Settings';\nexport const Settings = SettingsModule.Settings;\nexport type Settings = SettingsModule.Settings;\n\n/**\n * Document Item type.\n */\nexport const Document = Schema.Struct({\n name: Schema.optional(Schema.String),\n description: Schema.optional(Schema.String),\n fallbackName: Schema.String.pipe(FormInputAnnotation.set(false), Schema.optional),\n content: Ref.Ref(Text.Text).pipe(FormInputAnnotation.set(false)),\n}).pipe(\n LabelAnnotation.set(['name', 'fallbackName']),\n DescriptionAnnotation.set('description'),\n Annotation.IconAnnotation.set({ icon: 'ph--text-aa--regular', hue: 'indigo' }),\n AppAnnotation.BlueprintsAnnotation.set([BLUEPRINT_KEY]),\n AppAnnotation.GraphPropsAnnotation.set({ managesAutofocus: true }),\n Type.makeObject(DXN.make('org.dxos.type.document', '0.1.0')),\n);\n\nexport type Document = Type.InstanceType<typeof Document>;\n\n/**\n * Document factory.\n */\nexport const make = ({\n content = '',\n ...props\n}: Partial<{ name: string; fallbackName: string; content: string }> = {}) => {\n const doc = Obj.make(Document, { ...props, content: Ref.make(Text.make({ content })) });\n // TODO(dmaretskyi): We need a better way to set parents when creating hierarchies.\n Obj.setParent(doc.content.target!, doc);\n return doc;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { EditorInputMode, EditorViewMode } from '@dxos/ui-editor/types';\n\n/**\n * Determines how new comment threads on markdown documents are wired up to\n * the comment-thread AI agent (plugin-thread). The agent's identity (name,\n * DID) is resolved at runtime via the AgentIdentity capability — this\n * setting only controls whether and when the agent fires.\n *\n * - `off`: comments are plain user-only threads (no agent).\n * - `auto`: every user message in a thread triggers an agent response.\n * - `mention`: agent only responds when the message contains `@{agentName}`.\n */\nexport const CommentAgentMode = Schema.Union(Schema.Literal('off'), Schema.Literal('auto'), Schema.Literal('mention'));\nexport type CommentAgentMode = Schema.Schema.Type<typeof CommentAgentMode>;\n\n/**\n * Plugin settings.\n */\nexport const Settings = Schema.mutable(\n Schema.Struct({\n defaultViewMode: EditorViewMode.annotations({\n title: 'Default view mode',\n description: 'Set whether documents open in editing or read-only mode.',\n }),\n commentAgentMode: Schema.optional(\n CommentAgentMode.annotations({\n title: 'Comment agent mode',\n description:\n \"How new comment threads on markdown documents are processed: 'off' (no AI), 'auto' (AI responds to every user message), or 'mention' (AI responds only on @mention).\",\n }),\n ),\n editorInputMode: Schema.optional(\n EditorInputMode.annotations({\n title: 'Editor input mode',\n description: 'Choose keyboard bindings for the editor.',\n }),\n ),\n toolbar: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Show toolbar',\n description: 'Display a formatting toolbar above the editor.',\n }),\n ),\n numberedHeadings: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Numbered headings',\n description: 'Automatically number heading levels in the document.',\n }),\n ),\n folding: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Folding',\n description: 'Allow collapsing and expanding sections by heading.',\n }),\n ),\n experimental: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable experimental features',\n description: 'Turn on features that are still in development.',\n }),\n ),\n debug: Schema.optional(\n Schema.Boolean.annotations({\n title: 'Enable debugging features',\n description: 'Show developer tools and diagnostics for the editor.',\n }),\n ),\n snippets: Schema.optional(\n Schema.String.annotations({\n title: 'Snippets',\n description: 'Input snippets to replay for testing purposes.',\n }),\n ),\n }),\n);\n\nexport interface Settings extends Schema.Schema.Type<typeof Settings> {}\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type EditorView } from '@codemirror/view';\nimport { type Atom } from '@effect-atom/atom-react';\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { type EditorStateStore } from '@dxos/ui-editor';\nimport { type EditorViewMode } from '@dxos/ui-editor/types';\n\nimport { meta } from '#meta';\n\nimport type * as Markdown from './Markdown';\nimport { type MarkdownExtensionProvider } from './types';\n\n/** Schema for persisted markdown state. */\nexport const StateSchema = Schema.mutable(\n Schema.Struct({\n viewMode: Schema.Record({ key: Schema.String, value: Schema.String }),\n }),\n);\n\nexport type MarkdownState = {\n viewMode: Record<string, EditorViewMode>;\n};\n\nexport type EditorViewEntry = { view: EditorView; documentId: string };\n\nexport type EditorViewRegistry = {\n register: (attendableId: string, view: EditorView, documentId: string) => void;\n unregister: (attendableId: string) => void;\n get: (attendableId: string) => EditorViewEntry | undefined;\n};\n\nexport const Settings = Capability.make<Atom.Writable<Markdown.Settings>>(`${meta.profile.key}.capability.settings`);\n\n/** Persisted state atom for view mode per document. */\nexport const State = Capability.make<Atom.Writable<MarkdownState>>(`${meta.profile.key}.capability.state`);\n\n/** Editor state store for cursor positions, scroll state, etc. */\nexport const EditorState = Capability.make<EditorStateStore>(`${meta.profile.key}.capability.editor-state`);\n\n/** Registry of active EditorView instances keyed by attendable ID. */\nexport const EditorViews = Capability.make<EditorViewRegistry>(`${meta.profile.key}.capability.editor-views`);\n\n// TODO(burdon): Move to ./types (external API)?\nexport const ExtensionProvider = Capability.make<MarkdownExtensionProvider[]>(\n `${meta.profile.key}.capability.extensions`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport { type ActivationEvent } from '@dxos/app-framework';\nimport { AppActivationEvents } from '@dxos/app-toolkit';\n\nimport { meta } from '#meta';\n\nexport const SetupExtensions: ActivationEvent.ActivationEvent = AppActivationEvents.createStateEvent(\n `${meta.profile.key}.event.setup-extensions`,\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\n// @import-as-namespace\n\nimport * as Schema from 'effect/Schema';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Database, Ref, Type, DXN } from '@dxos/echo';\nimport { EditorViewMode } from '@dxos/ui-editor/types';\nimport { trim } from '@dxos/util';\n\nimport { meta } from '#meta';\n\nimport * as Markdown from './Markdown';\n\nconst makeKey = (name: string) => DXN.make(`${meta.profile.key}.operation.${name}`);\n\nconst Edit = Schema.Struct({\n oldString: Schema.String.annotations({\n description: 'The text to find in the document.',\n }),\n newString: Schema.String.annotations({\n description: 'The text to replace it with.',\n }),\n replaceAll: Schema.optional(Schema.Boolean).annotations({\n description: 'If true, replaces all occurrences. Defaults to false (first occurrence only).',\n }),\n});\n\nexport const Create = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.create'),\n name: 'Create',\n description: 'Creates a new markdown document and adds it to the space.',\n icon: 'ph--file-text--regular',\n },\n input: Schema.Struct({\n name: Schema.String,\n content: Schema.String,\n }),\n output: Schema.Struct({\n id: Schema.String.annotations({\n description: 'The DXN of the created document.',\n }),\n }),\n services: [Database.Service],\n});\n\nexport const CreateMarkdown = Operation.make({\n meta: {\n key: makeKey('create'),\n name: 'Create Markdown Document',\n icon: 'ph--file-text--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n content: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: Type.getSchema(Markdown.Document),\n }),\n});\n\nexport const Open = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.open'),\n name: 'Open',\n description: 'Opens and reads the contents of a new markdown document.',\n icon: 'ph--arrow-square-out--regular',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n }),\n output: Schema.Struct({\n content: Schema.String,\n }),\n services: [Database.Service],\n});\n\nexport const ScrollToAnchor = Operation.make({\n meta: {\n key: makeKey('scrollToAnchor'),\n name: 'Scroll To Anchor',\n icon: 'ph--anchor-simple--regular',\n },\n services: [Capability.Service],\n input: Schema.Struct({\n subject: Schema.String.annotations({ description: 'Attendable ID of the markdown editor.' }),\n cursor: Schema.String.annotations({ description: 'Cursor position to scroll to.' }),\n ref: Schema.optional(Schema.String.annotations({ description: 'Reference ID (e.g. thread ID).' })),\n }),\n output: Schema.Void,\n});\n\n// TODO(wittjosiah): This appears to be unused.\nexport const SetViewMode = Operation.make({\n meta: { key: makeKey('setViewMode'), name: 'Set View Mode', icon: 'ph--layout--regular' },\n services: [Capability.Service],\n input: Schema.Struct({\n id: Schema.String,\n viewMode: EditorViewMode,\n }),\n output: Schema.Void,\n});\n\nexport const Update = Operation.make({\n meta: {\n key: DXN.make('org.dxos.function.markdown.update'),\n name: 'Update',\n description: trim`\n Applies a set of edits to the markdown document.\n `,\n icon: 'ph--pencil-simple--regular',\n },\n input: Schema.Struct({\n doc: Ref.Ref(Markdown.Document).annotations({\n description: 'The ID of the markdown document.',\n }),\n edits: Schema.Array(Edit).annotations({\n description: 'The edits to apply to the document. Each edit finds oldString and replaces it with newString.',\n }),\n }),\n output: Schema.Struct({\n newContent: Schema.String,\n }),\n services: [Database.Service],\n});\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["Settings", "Schema", "AppAnnotation", "DXN", "Annotation", "Obj", "Ref", "Type", "DescriptionAnnotation", "FormInputAnnotation", "LabelAnnotation", "Text", "Schema", "EditorInputMode", "EditorViewMode", "CommentAgentMode", "Union", "Literal", "Settings", "mutable", "Struct", "defaultViewMode", "annotations", "title", "description", "commentAgentMode", "optional", "editorInputMode", "toolbar", "Boolean", "numberedHeadings", "folding", "experimental", "debug", "snippets", "String", "BLUEPRINT_KEY", "Settings", "Document", "Struct", "name", "optional", "String", "description", "fallbackName", "pipe", "FormInputAnnotation", "set", "content", "Ref", "Text", "LabelAnnotation", "DescriptionAnnotation", "Annotation", "IconAnnotation", "icon", "hue", "AppAnnotation", "BlueprintsAnnotation", "GraphPropsAnnotation", "managesAutofocus", "Type", "makeObject", "DXN", "make", "props", "doc", "Obj", "setParent", "target", "Settings", "Schema", "Capability", "meta", "StateSchema", "mutable", "Struct", "viewMode", "Record", "key", "String", "value", "make", "profile", "State", "EditorState", "EditorViews", "ExtensionProvider", "AppActivationEvents", "meta", "SetupExtensions", "createStateEvent", "profile", "key", "Schema", "Capability", "Operation", "Database", "Ref", "Type", "DXN", "EditorViewMode", "trim", "meta", "makeKey", "name", "DXN", "make", "meta", "profile", "key", "Edit", "Struct", "oldString", "String", "annotations", "description", "newString", "replaceAll", "optional", "Boolean", "Create", "Operation", "icon", "input", "content", "output", "id", "services", "Database", "Service", "CreateMarkdown", "Capability", "object", "Type", "getSchema", "Document", "Open", "doc", "Ref", "ScrollToAnchor", "subject", "cursor", "ref", "Void", "SetViewMode", "viewMode", "EditorViewMode", "Update", "trim", "edits", "Array", "newContent"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/blueprints/markdown-blueprint.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Blueprint, Template } from '@dxos/compute';\nimport { trim } from '@dxos/util';\n\nimport { Markdown, MarkdownOperation } from '#types';\n\nconst make = () =>\n Blueprint.make({\n key: Markdown.BLUEPRINT_KEY,\n name: 'Markdown',\n description: 'Work with markdown documents. Preferred over raw database operations.',\n tools: Blueprint.toolDefinitions({\n operations: [MarkdownOperation.Create, MarkdownOperation.Open, MarkdownOperation.Update],\n }),\n instructions: Template.make({\n // TODO(wittjosiah): Move example to function input schema annotation.\n source: trim`\n {{! Markdown }}\n\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 `,\n }),\n });\n\nconst blueprint: Blueprint.Definition = {\n key: Markdown.BLUEPRINT_KEY,\n make,\n};\n\nexport default blueprint;\n"],
|
|
5
|
-
"mappings": ";AAIA,SAASA,WAAWC,gBAAgB;AACpC,SAASC,YAAY;AAErB,SAASC,UAAUC,yBAAyB;AAE5C,IAAMC,OAAO,MACXL,UAAUK,KAAK;EACbC,KAAKH,SAASI;EACdC,MAAM;EACNC,aAAa;EACbC,OAAOV,UAAUW,gBAAgB;IAC/BC,YAAY;MAACR,kBAAkBS;MAAQT,kBAAkBU;MAAMV,kBAAkBW;;EACnF,CAAA;EACAC,cAAcf,SAASI,KAAK;;IAE1BY,QAAQf;;;;;;;;UAQJ,KAAA;;;;;UAKA,KAAA;;EAEN,CAAA;AACF,CAAA;AAEF,IAAMgB,YAAkC;EACtCZ,KAAKH,SAASI;EACdF;AACF;AAEA,IAAA,6BAAea;",
|
|
6
|
-
"names": ["Blueprint", "Template", "trim", "Markdown", "MarkdownOperation", "make", "key", "BLUEPRINT_KEY", "name", "description", "tools", "toolDefinitions", "operations", "Create", "Open", "Update", "instructions", "source", "blueprint"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/comment-config.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { AppCapabilities } from '@dxos/app-toolkit';\nimport { Type } from '@dxos/echo';\nimport { createDocAccessor, getTextInRange } from '@dxos/echo-client';\n\nimport { MarkdownOperation } from '#types';\nimport { Markdown } from '#types';\n\n// NOTE: Explicit annotation required: d.ts emit cannot portably name the inferred @dxos/compute types (TS2883).\nconst activate: () => Effect.Effect<\n Capability.Capability<typeof AppCapabilities.CommentConfig>,\n never,\n Capability.Service\n> = Effect.fnUntraced(function* () {\n const config: AppCapabilities.CommentConfig = {\n id: Type.getTypename(Markdown.Document),\n comments: 'anchored',\n selectionMode: 'multi-range',\n getAnchorLabel: (doc: Markdown.Document, anchor: string): string | undefined => {\n if (doc.content) {\n const [start, end] = anchor.split(':');\n return getTextInRange(createDocAccessor(doc.content.target!, ['content']), start, end);\n }\n },\n scrollToAnchor: MarkdownOperation.ScrollToAnchor,\n };\n return Capability.contributes(AppCapabilities.CommentConfig, config);\n});\n\nexport default activate;\n"],
|
|
5
|
-
"mappings": ";;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,uBAAuB;AAChC,SAASC,YAAY;AACrB,SAASC,mBAAmBC,sBAAsB;AAElD,SAASC,yBAAyB;AAClC,SAASC,gBAAgB;AAGzB,IAAMC,WAIKC,kBAAW,aAAA;AACpB,QAAMC,SAAwC;IAC5CC,IAAIR,KAAKS,YAAYL,SAASM,QAAQ;IACtCC,UAAU;IACVC,eAAe;IACfC,gBAAgB,CAACC,KAAwBC,WAAAA;AACvC,UAAID,IAAIE,SAAS;AACf,cAAM,CAACC,OAAOC,GAAAA,IAAOH,OAAOI,MAAM,GAAA;AAClC,eAAOjB,eAAeD,kBAAkBa,IAAIE,QAAQI,QAAS;UAAC;SAAU,GAAGH,OAAOC,GAAAA;MACpF;IACF;IACAG,gBAAgBlB,kBAAkBmB;EACpC;AACA,SAAOxB,WAAWyB,YAAYxB,gBAAgByB,eAAejB,MAAAA;AAC/D,CAAA;AAEA,IAAA,yBAAeF;",
|
|
6
|
-
"names": ["Effect", "Capability", "AppCapabilities", "Type", "createDocAccessor", "getTextInRange", "MarkdownOperation", "Markdown", "activate", "fnUntraced", "config", "id", "getTypename", "Document", "comments", "selectionMode", "getAnchorLabel", "doc", "anchor", "content", "start", "end", "split", "target", "scrollToAnchor", "ScrollToAnchor", "contributes", "CommentConfig"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/capabilities/create-object.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport * as Effect from 'effect/Effect';\n\nimport { Capability } from '@dxos/app-framework';\nimport { Operation } from '@dxos/compute';\nimport { Type } from '@dxos/echo';\nimport { SpaceOperation } from '@dxos/plugin-space';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\n\nimport { Markdown } from '#types';\n\nimport { getDocumentsPath } from '../paths';\n\nexport default Capability.makeModule(\n Effect.fnUntraced(function* () {\n return Capability.contributes(SpaceCapabilities.CreateObjectEntry, {\n id: Type.getTypename(Markdown.Document),\n createObject: (props, options) =>\n Effect.gen(function* () {\n const object = Markdown.make(props);\n return yield* Operation.invoke(SpaceOperation.AddObject, {\n object,\n target: options.target,\n hidden: true,\n targetNodeId: options.targetNodeId ?? getDocumentsPath(options.db.spaceId),\n });\n }),\n });\n }),\n);\n"],
|
|
5
|
-
"mappings": ";;;;;;AAIA,YAAYA,YAAY;AAExB,SAASC,kBAAkB;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,YAAY;AACrB,SAASC,sBAAsB;AAC/B,SAASC,yBAAyB;AAElC,SAASC,gBAAgB;AAIzB,IAAA,wBAAeC,WAAWC,WACjBC,kBAAW,aAAA;AAChB,SAAOF,WAAWG,YAAYC,kBAAkBC,mBAAmB;IACjEC,IAAIC,KAAKC,YAAYC,SAASC,QAAQ;IACtCC,cAAc,CAACC,OAAOC,YACbC,WAAI,aAAA;AACT,YAAMC,SAASN,SAASO,KAAKJ,KAAAA;AAC7B,aAAO,OAAOK,UAAUC,OAAOC,eAAeC,WAAW;QACvDL;QACAM,QAAQR,QAAQQ;QAChBC,QAAQ;QACRC,cAAcV,QAAQU,gBAAgBC,iBAAiBX,QAAQY,GAAGC,OAAO;MAC3E,CAAA;IACF,CAAA;EACJ,CAAA;AACF,CAAA,CAAA;",
|
|
6
|
-
"names": ["Effect", "Capability", "Operation", "Type", "SpaceOperation", "SpaceCapabilities", "Markdown", "Capability", "makeModule", "fnUntraced", "contributes", "SpaceCapabilities", "CreateObjectEntry", "id", "Type", "getTypename", "Markdown", "Document", "createObject", "props", "options", "gen", "object", "make", "Operation", "invoke", "SpaceOperation", "AddObject", "target", "hidden", "targetNodeId", "getDocumentsPath", "db", "spaceId"]
|
|
7
|
-
}
|