@lemoncat7/dsh-knowledge 1.2.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +22 -2
  2. package/docs/architecture.md +30 -4
  3. package/docs/requirements.md +10 -0
  4. package/lib/api.d.ts.map +1 -1
  5. package/lib/api.js +194 -1
  6. package/lib/api.js.map +1 -1
  7. package/lib/atomic-file.d.ts +1 -1
  8. package/lib/atomic-file.d.ts.map +1 -1
  9. package/lib/atomic-file.js +0 -1
  10. package/lib/atomic-file.js.map +1 -1
  11. package/lib/client.d.ts.map +1 -1
  12. package/lib/client.js +48 -82
  13. package/lib/client.js.map +2 -2
  14. package/lib/content-safety.d.ts +12 -0
  15. package/lib/content-safety.d.ts.map +1 -0
  16. package/lib/content-safety.js +38 -0
  17. package/lib/content-safety.js.map +1 -0
  18. package/lib/domain.d.ts +13 -0
  19. package/lib/domain.d.ts.map +1 -1
  20. package/lib/domain.js.map +1 -1
  21. package/lib/extraction.d.ts.map +1 -1
  22. package/lib/extraction.js +8 -2
  23. package/lib/extraction.js.map +1 -1
  24. package/lib/index.d.ts +1 -0
  25. package/lib/index.d.ts.map +1 -1
  26. package/lib/index.js +6 -1
  27. package/lib/index.js.map +1 -1
  28. package/lib/local-provider.d.ts +24 -1
  29. package/lib/local-provider.d.ts.map +1 -1
  30. package/lib/local-provider.js +302 -2
  31. package/lib/local-provider.js.map +1 -1
  32. package/lib/management-proxy.d.ts.map +1 -1
  33. package/lib/management-proxy.js +22 -13
  34. package/lib/management-proxy.js.map +1 -1
  35. package/lib/note-reference-handle.d.ts +15 -0
  36. package/lib/note-reference-handle.d.ts.map +1 -0
  37. package/lib/note-reference-handle.js +54 -0
  38. package/lib/note-reference-handle.js.map +1 -0
  39. package/lib/note-reference-tools.d.ts +6 -0
  40. package/lib/note-reference-tools.d.ts.map +1 -0
  41. package/lib/note-reference-tools.js +119 -0
  42. package/lib/note-reference-tools.js.map +1 -0
  43. package/lib/note-tools.d.ts +6 -0
  44. package/lib/note-tools.d.ts.map +1 -0
  45. package/lib/note-tools.js +283 -0
  46. package/lib/note-tools.js.map +1 -0
  47. package/lib/notes/domain.d.ts +44 -0
  48. package/lib/notes/domain.d.ts.map +1 -0
  49. package/lib/notes/domain.js +38 -0
  50. package/lib/notes/domain.js.map +1 -0
  51. package/lib/notes/store.d.ts +39 -0
  52. package/lib/notes/store.d.ts.map +1 -0
  53. package/lib/notes/store.js +407 -0
  54. package/lib/notes/store.js.map +1 -0
  55. package/lib/provider.d.ts +17 -0
  56. package/lib/provider.d.ts.map +1 -1
  57. package/lib/remote-provider.d.ts +19 -0
  58. package/lib/remote-provider.d.ts.map +1 -1
  59. package/lib/remote-provider.js +139 -13
  60. package/lib/remote-provider.js.map +1 -1
  61. package/lib/runtime.d.ts +1 -0
  62. package/lib/runtime.d.ts.map +1 -1
  63. package/lib/runtime.js.map +1 -1
  64. package/lib/theme-bridge.d.ts +2 -2
  65. package/lib/theme-bridge.d.ts.map +1 -1
  66. package/lib/theme-bridge.js +24 -57
  67. package/lib/theme-bridge.js.map +1 -1
  68. package/lib/tool-authorization.d.ts +14 -0
  69. package/lib/tool-authorization.d.ts.map +1 -0
  70. package/lib/tool-authorization.js +124 -0
  71. package/lib/tool-authorization.js.map +1 -0
  72. package/lib/tool-input.d.ts +6 -0
  73. package/lib/tool-input.d.ts.map +1 -0
  74. package/lib/tool-input.js +27 -0
  75. package/lib/tool-input.js.map +1 -0
  76. package/lib/tools.d.ts +2 -1
  77. package/lib/tools.d.ts.map +1 -1
  78. package/lib/tools.js +29 -179
  79. package/lib/tools.js.map +1 -1
  80. package/lib/tracking.d.ts +29 -0
  81. package/lib/tracking.d.ts.map +1 -0
  82. package/lib/tracking.js +141 -0
  83. package/lib/tracking.js.map +1 -0
  84. package/lib/web-markdown-preview.d.ts.map +1 -1
  85. package/lib/web-markdown-preview.js +10 -0
  86. package/lib/web-markdown-preview.js.map +1 -1
  87. package/lib/web-note-editor.d.ts +44 -0
  88. package/lib/web-note-editor.d.ts.map +1 -0
  89. package/lib/web-note-editor.js +118 -0
  90. package/lib/web-note-editor.js.map +1 -0
  91. package/lib/web-workspace-effects.d.ts +13 -0
  92. package/lib/web-workspace-effects.d.ts.map +1 -0
  93. package/lib/web-workspace-effects.js +340 -0
  94. package/lib/web-workspace-effects.js.map +1 -0
  95. package/lib/web.d.ts.map +1 -1
  96. package/lib/web.js +3 -1
  97. package/lib/web.js.map +1 -1
  98. package/package.json +12 -1
  99. package/web/app.js +1670 -93
  100. package/web/index.html +2 -0
  101. package/web/markdown-preview.js +8 -8
  102. package/web/note-editor.js +220 -0
  103. package/web/styles.css +845 -182
  104. package/web/workspace-effects.js +16 -0
@@ -1 +1 @@
1
- {"version":3,"file":"web-markdown-preview.js","sourceRoot":"","sources":["../src/web-markdown-preview.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AAEF,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/I,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,mBAAmB,EAAE,KAAK;QAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KAC7B,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACnD,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAA;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"web-markdown-preview.js","sourceRoot":"","sources":["../src/web-markdown-preview.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAA;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,CAAC,GAAG,CAAC;IACT,GAAG,EAAE,IAAI;IACT,MAAM,EAAE,KAAK;CACd,CAAC,CAAA;AAEF,MAAM,iBAAiB,GAAG,2FAA2F,CAAA;AACrH,MAAM,iBAAiB,GAAG,gCAAgC,CAAA;AAE1D,2FAA2F;AAC3F,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAA;IACzD,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE;QAC7C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/I,WAAW,EAAE,CAAC,OAAO,CAAC;QACtB,mBAAmB,EAAE,KAAK;QAC1B,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;QAC5B,kBAAkB,EAAE,iBAAiB;KACtC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,CAAA;IACnD,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAA;IAC9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACpE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;YAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;YACpC,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAA;IAClC,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { type JSONContent } from '@tiptap/core';
2
+ export interface MarkdownEditorOptions {
3
+ host: HTMLElement;
4
+ markdown: string;
5
+ label: string;
6
+ onChange(markdown: string): void;
7
+ onSave(): void;
8
+ }
9
+ export interface MarkdownEditorHandle {
10
+ getMarkdown(): string;
11
+ focus(): void;
12
+ insertMarkdown(markdown: string): void;
13
+ destroy(): void;
14
+ }
15
+ export interface PlainTextEditorOptions {
16
+ host: HTMLElement;
17
+ text: string;
18
+ label: string;
19
+ onChange(text: string): void;
20
+ onSave(): void;
21
+ }
22
+ export interface PlainTextEditorHandle {
23
+ focus(): void;
24
+ destroy(): void;
25
+ }
26
+ /**
27
+ * Mount a Markdown-native rich text editor into the notes workspace.
28
+ *
29
+ * The management application owns loading and persistence. This module owns
30
+ * only Markdown parsing, editing and serialization so its lifecycle remains
31
+ * independent from the surrounding vanilla DOM renderer.
32
+ */
33
+ export declare function createMarkdownEditor(options: MarkdownEditorOptions): MarkdownEditorHandle;
34
+ /**
35
+ * Mount a document-shaped plain-text editor.
36
+ *
37
+ * Each stored line is represented by one paragraph node. Visual wrapping stays
38
+ * inside that paragraph, so the UI can number logical lines without measuring
39
+ * rendered text or interfering with the browser selection.
40
+ */
41
+ export declare function createPlainTextEditor(options: PlainTextEditorOptions): PlainTextEditorHandle;
42
+ export declare function plainTextToDocument(text: string): JSONContent;
43
+ export declare function plainTextFromDocument(document: JSONContent): string;
44
+ //# sourceMappingURL=web-note-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-note-editor.d.ts","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,cAAc,CAAA;AAYvD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAChC,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,IAAI,MAAM,CAAA;IACrB,KAAK,IAAI,IAAI,CAAA;IACb,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,WAAW,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,IAAI,IAAI,CAAA;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,qBAAqB,GAAG,oBAAoB,CA8CzF;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAgC5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAQ7D;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAInE"}
@@ -0,0 +1,118 @@
1
+ import { Editor } from '@tiptap/core';
2
+ import Document from '@tiptap/extension-document';
3
+ import Image from '@tiptap/extension-image';
4
+ import Paragraph from '@tiptap/extension-paragraph';
5
+ import { TableKit } from '@tiptap/extension-table';
6
+ import TaskItem from '@tiptap/extension-task-item';
7
+ import TaskList from '@tiptap/extension-task-list';
8
+ import Text from '@tiptap/extension-text';
9
+ import { UndoRedo } from '@tiptap/extensions';
10
+ import { Markdown } from '@tiptap/markdown';
11
+ import StarterKit from '@tiptap/starter-kit';
12
+ /**
13
+ * Mount a Markdown-native rich text editor into the notes workspace.
14
+ *
15
+ * The management application owns loading and persistence. This module owns
16
+ * only Markdown parsing, editing and serialization so its lifecycle remains
17
+ * independent from the surrounding vanilla DOM renderer.
18
+ */
19
+ export function createMarkdownEditor(options) {
20
+ const editor = new Editor({
21
+ element: options.host,
22
+ content: options.markdown,
23
+ contentType: 'markdown',
24
+ extensions: [
25
+ StarterKit.configure({
26
+ link: {
27
+ autolink: true,
28
+ openOnClick: false,
29
+ HTMLAttributes: { rel: 'noopener noreferrer' },
30
+ },
31
+ }),
32
+ Markdown,
33
+ Image.configure({ allowBase64: false, inline: false }),
34
+ TableKit.configure({ table: { resizable: false } }),
35
+ TaskList,
36
+ TaskItem.configure({ nested: true }),
37
+ ],
38
+ editorProps: {
39
+ attributes: {
40
+ class: 'notes-live-editor-surface',
41
+ role: 'textbox',
42
+ 'aria-label': options.label,
43
+ 'aria-multiline': 'true',
44
+ spellcheck: 'false',
45
+ },
46
+ handleKeyDown: (_view, event) => {
47
+ if (!(event.metaKey || event.ctrlKey) || event.key.toLocaleLowerCase() !== 's')
48
+ return false;
49
+ event.preventDefault();
50
+ options.onSave();
51
+ return true;
52
+ },
53
+ },
54
+ onUpdate: ({ editor: current }) => options.onChange(current.getMarkdown()),
55
+ });
56
+ return {
57
+ getMarkdown: () => editor.getMarkdown(),
58
+ focus: () => editor.commands.focus(),
59
+ insertMarkdown: markdown => {
60
+ editor.commands.insertContent(markdown, { contentType: 'markdown' });
61
+ editor.commands.focus();
62
+ },
63
+ destroy: () => editor.destroy(),
64
+ };
65
+ }
66
+ /**
67
+ * Mount a document-shaped plain-text editor.
68
+ *
69
+ * Each stored line is represented by one paragraph node. Visual wrapping stays
70
+ * inside that paragraph, so the UI can number logical lines without measuring
71
+ * rendered text or interfering with the browser selection.
72
+ */
73
+ export function createPlainTextEditor(options) {
74
+ const editor = new Editor({
75
+ element: options.host,
76
+ content: plainTextToDocument(options.text),
77
+ extensions: [
78
+ Document.extend({ content: 'paragraph*' }),
79
+ Paragraph,
80
+ Text,
81
+ UndoRedo,
82
+ ],
83
+ editorProps: {
84
+ attributes: {
85
+ class: 'notes-plain-editor-surface',
86
+ role: 'textbox',
87
+ 'aria-label': options.label,
88
+ 'aria-multiline': 'true',
89
+ spellcheck: 'false',
90
+ },
91
+ handleKeyDown: (_view, event) => {
92
+ if (!(event.metaKey || event.ctrlKey) || event.key.toLocaleLowerCase() !== 's')
93
+ return false;
94
+ event.preventDefault();
95
+ options.onSave();
96
+ return true;
97
+ },
98
+ },
99
+ onUpdate: ({ editor: current }) => options.onChange(plainTextFromDocument(current.getJSON())),
100
+ });
101
+ return {
102
+ focus: () => editor.commands.focus(),
103
+ destroy: () => editor.destroy(),
104
+ };
105
+ }
106
+ export function plainTextToDocument(text) {
107
+ return {
108
+ type: 'doc',
109
+ content: text.replace(/\r\n?/g, '\n').split('\n').map(line => ({
110
+ type: 'paragraph',
111
+ ...line ? { content: [{ type: 'text', text: line }] } : {},
112
+ })),
113
+ };
114
+ }
115
+ export function plainTextFromDocument(document) {
116
+ return (document.content ?? []).map(paragraph => (paragraph.content ?? []).map(node => node.text ?? '').join('')).join('\n');
117
+ }
118
+ //# sourceMappingURL=web-note-editor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-note-editor.js","sourceRoot":"","sources":["../src/web-note-editor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface WorkspaceEffectsApi {
2
+ refresh(root?: ParentNode): void;
3
+ destroy(): void;
4
+ }
5
+ declare global {
6
+ interface Window {
7
+ DshKnowledgeEffects?: WorkspaceEffectsApi;
8
+ }
9
+ }
10
+ declare function refresh(root?: ParentNode): void;
11
+ declare function destroy(): void;
12
+ export { destroy, refresh };
13
+ //# sourceMappingURL=web-workspace-effects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-workspace-effects.d.ts","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"AAyCA,UAAU,mBAAmB;IAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAA;IAChC,OAAO,IAAI,IAAI,CAAA;CAChB;AAQD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;KAC1C;CACF;AA0QD,iBAAS,OAAO,CAAC,IAAI,GAAE,UAAqB,GAAG,IAAI,CAMlD;AAED,iBAAS,OAAO,IAAI,IAAI,CAuBvB;AAKD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,340 @@
1
+ const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
2
+ const GLASS_SURFACE_SELECTOR = [
3
+ '.sidebar',
4
+ '.topbar',
5
+ '.note-tree-panel',
6
+ '.notes-browser',
7
+ '.notes-content-header',
8
+ '.notes-document-toolbar',
9
+ '.note-editor-toolbar',
10
+ '.dialog',
11
+ ].join(',');
12
+ const BORDER_SURFACE_SELECTOR = [
13
+ '.login-card',
14
+ '.panel',
15
+ '.mount-table',
16
+ '.note-workspace',
17
+ '.notes-workspace',
18
+ '.dialog',
19
+ ].join(',');
20
+ const GLARE_SURFACE_SELECTOR = [
21
+ '.button',
22
+ '.nav-button',
23
+ '.tab',
24
+ '.pane-toggle-button',
25
+ '.note-tree-base',
26
+ '.note-tree-document',
27
+ '.note-tree-new',
28
+ '.notes-tree-row',
29
+ '.notes-search-row',
30
+ '.notes-file-main',
31
+ ].join(',');
32
+ const ANIMATED_LIST_SELECTOR = [
33
+ '.note-tree',
34
+ '.notes-tree',
35
+ '.base-grid',
36
+ '.mount-table',
37
+ ].join(',');
38
+ const MOTION_ITEM_SELECTOR = '[data-knowledge-motion-key]';
39
+ const MOTION_REPLAY_COOLDOWN = 700;
40
+ const EDGE_RESPONSE_RANGE = 38;
41
+ const glassSurfaces = new Map();
42
+ const borderSurfaces = new Map();
43
+ const animatedLists = new Map();
44
+ const motionPlayedAt = new Map();
45
+ let filterSequence = 0;
46
+ let filterBank;
47
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
48
+ const reducedTransparency = window.matchMedia('(prefers-reduced-transparency: reduce)');
49
+ function queryIncludingRoot(root, selector) {
50
+ const matches = Array.from(root.querySelectorAll(selector));
51
+ if (root instanceof HTMLElement && root.matches(selector))
52
+ matches.unshift(root);
53
+ return matches;
54
+ }
55
+ function ensureFilterBank() {
56
+ if (filterBank?.isConnected)
57
+ return filterBank;
58
+ filterBank = document.createElementNS(SVG_NAMESPACE, 'svg');
59
+ filterBank.classList.add('knowledge-glass-filter-bank');
60
+ filterBank.setAttribute('aria-hidden', 'true');
61
+ filterBank.setAttribute('focusable', 'false');
62
+ document.body.append(filterBank);
63
+ return filterBank;
64
+ }
65
+ function createSvgElement(name, attributes) {
66
+ const node = document.createElementNS(SVG_NAMESPACE, name);
67
+ for (const [key, value] of Object.entries(attributes))
68
+ node.setAttribute(key, value);
69
+ return node;
70
+ }
71
+ function createGlassFilter(id) {
72
+ const filter = createSvgElement('filter', {
73
+ id,
74
+ x: '0%', y: '0%', width: '100%', height: '100%',
75
+ 'color-interpolation-filters': 'sRGB',
76
+ });
77
+ const image = createSvgElement('feImage', {
78
+ x: '0', y: '0', width: '100%', height: '100%', preserveAspectRatio: 'none', result: 'map',
79
+ });
80
+ filter.append(image, createSvgElement('feGaussianBlur', { in: 'SourceGraphic', stdDeviation: '6', result: 'frosted' }));
81
+ filter.append(createSvgElement('feDisplacementMap', {
82
+ in: 'frosted', in2: 'map', scale: '-16',
83
+ xChannelSelector: 'R', yChannelSelector: 'G', result: 'refracted',
84
+ }), createSvgElement('feGaussianBlur', { in: 'refracted', stdDeviation: '.12' }));
85
+ return { filter, image };
86
+ }
87
+ function supportsSvgBackdropFilters() {
88
+ if (reducedTransparency.matches)
89
+ return false;
90
+ const userAgent = navigator.userAgent;
91
+ if (/Firefox/i.test(userAgent) || (/Safari/i.test(userAgent) && !/(Chrome|Chromium|CriOS)/i.test(userAgent)))
92
+ return false;
93
+ return CSS.supports?.('backdrop-filter', 'url(#knowledge-glass-support)')
94
+ || CSS.supports?.('-webkit-backdrop-filter', 'url(#knowledge-glass-support)')
95
+ || false;
96
+ }
97
+ function resolvedRadius(surface, width, height) {
98
+ const parsed = Number.parseFloat(getComputedStyle(surface).borderTopLeftRadius);
99
+ if (Number.isFinite(parsed))
100
+ return Math.max(0, Math.min(parsed, Math.min(width, height) / 2));
101
+ return Math.min(width, height) * .16;
102
+ }
103
+ function displacementMap(width, height, radius) {
104
+ const edge = Math.min(12, Math.max(4, Math.min(width, height) * .08));
105
+ const map = `<svg viewBox="0 0 ${width} ${height}" xmlns="${SVG_NAMESPACE}">
106
+ <defs>
107
+ <clipPath id="shape"><rect width="${width}" height="${height}" rx="${radius}"/></clipPath>
108
+ <linearGradient id="left" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="rgb(92 128 128)"/><stop offset="100%" stop-color="rgb(128 128 128)"/></linearGradient>
109
+ <linearGradient id="right" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="rgb(128 128 128)"/><stop offset="100%" stop-color="rgb(164 128 128)"/></linearGradient>
110
+ <linearGradient id="top" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="rgb(128 92 128)"/><stop offset="100%" stop-color="rgb(128 128 128)"/></linearGradient>
111
+ <linearGradient id="bottom" x1="0%" y1="0%" x2="0%" y2="100%"><stop offset="0%" stop-color="rgb(128 128 128)"/><stop offset="100%" stop-color="rgb(128 164 128)"/></linearGradient>
112
+ </defs>
113
+ <g clip-path="url(#shape)">
114
+ <rect width="${width}" height="${height}" fill="rgb(128 128 128)"/>
115
+ <rect width="${edge}" height="${height}" fill="url(#left)"/>
116
+ <rect x="${width - edge}" width="${edge}" height="${height}" fill="url(#right)"/>
117
+ <rect width="${width}" height="${edge}" fill="url(#top)"/>
118
+ <rect y="${height - edge}" width="${width}" height="${edge}" fill="url(#bottom)"/>
119
+ </g>
120
+ </svg>`;
121
+ return `data:image/svg+xml,${encodeURIComponent(map)}`;
122
+ }
123
+ function installGlassSurface(surface) {
124
+ if (glassSurfaces.has(surface))
125
+ return;
126
+ surface.classList.add('knowledge-glass-surface');
127
+ if (!supportsSvgBackdropFilters()) {
128
+ surface.dataset.knowledgeGlass = 'fallback';
129
+ glassSurfaces.set(surface, { filter: undefined, observer: undefined, frame: 0 });
130
+ return;
131
+ }
132
+ const id = `knowledge-glass-filter-${++filterSequence}`;
133
+ const { filter, image } = createGlassFilter(id);
134
+ ensureFilterBank().append(filter);
135
+ surface.dataset.knowledgeGlass = 'svg';
136
+ surface.style.setProperty('--knowledge-glass-filter', `url(#${id})`);
137
+ const record = { filter, observer: undefined, frame: 0 };
138
+ const update = () => {
139
+ record.frame = 0;
140
+ if (!surface.isConnected)
141
+ return;
142
+ const rect = surface.getBoundingClientRect();
143
+ const width = Math.max(1, Math.round(rect.width));
144
+ const height = Math.max(1, Math.round(rect.height));
145
+ image.setAttribute('href', displacementMap(width, height, resolvedRadius(surface, width, height)));
146
+ };
147
+ const scheduleUpdate = () => {
148
+ if (record.frame === 0)
149
+ record.frame = requestAnimationFrame(update);
150
+ };
151
+ record.observer = typeof ResizeObserver === 'undefined' ? undefined : new ResizeObserver(scheduleUpdate);
152
+ record.observer?.observe(surface);
153
+ record.frame = requestAnimationFrame(update);
154
+ glassSurfaces.set(surface, record);
155
+ }
156
+ function installBorderSurface(surface) {
157
+ if (borderSurfaces.has(surface))
158
+ return;
159
+ surface.classList.add('knowledge-border-surface');
160
+ let frame = 0;
161
+ let pointer;
162
+ const paint = () => {
163
+ frame = 0;
164
+ if (pointer === undefined || !surface.isConnected)
165
+ return;
166
+ const rect = surface.getBoundingClientRect();
167
+ const x = Math.min(rect.width, Math.max(0, pointer.x - rect.left));
168
+ const y = Math.min(rect.height, Math.max(0, pointer.y - rect.top));
169
+ const edgeDistance = Math.min(x, rect.width - x, y, rect.height - y);
170
+ const proximity = Math.min(1, Math.max(0, 1 - edgeDistance / EDGE_RESPONSE_RANGE));
171
+ const angle = Math.atan2(y - rect.height / 2, x - rect.width / 2) * (180 / Math.PI) + 90;
172
+ surface.style.setProperty('--knowledge-border-proximity', proximity.toFixed(3));
173
+ surface.style.setProperty('--knowledge-border-angle', `${angle.toFixed(2)}deg`);
174
+ };
175
+ const move = (event) => {
176
+ pointer = { x: event.clientX, y: event.clientY };
177
+ if (frame === 0)
178
+ frame = requestAnimationFrame(paint);
179
+ };
180
+ const leave = () => {
181
+ pointer = undefined;
182
+ surface.style.setProperty('--knowledge-border-proximity', '0');
183
+ };
184
+ surface.addEventListener('pointermove', move, { passive: true });
185
+ surface.addEventListener('pointerleave', leave, { passive: true });
186
+ borderSurfaces.set(surface, () => {
187
+ if (frame !== 0)
188
+ cancelAnimationFrame(frame);
189
+ surface.removeEventListener('pointermove', move);
190
+ surface.removeEventListener('pointerleave', leave);
191
+ });
192
+ }
193
+ function motionWasJustPlayed(item, now) {
194
+ const key = item.dataset.knowledgeMotionKey;
195
+ if (key === undefined)
196
+ return false;
197
+ const playedAt = motionPlayedAt.get(key);
198
+ return playedAt !== undefined && now - playedAt < MOTION_REPLAY_COOLDOWN;
199
+ }
200
+ function rememberMotionPlay(item, now) {
201
+ const key = item.dataset.knowledgeMotionKey;
202
+ if (key === undefined)
203
+ return;
204
+ motionPlayedAt.set(key, now);
205
+ if (motionPlayedAt.size <= 4_000)
206
+ return;
207
+ const oldestKey = motionPlayedAt.keys().next().value;
208
+ if (oldestKey !== undefined)
209
+ motionPlayedAt.delete(oldestKey);
210
+ }
211
+ function updateScrollEdges(list) {
212
+ const remaining = list.scrollHeight - list.clientHeight - list.scrollTop;
213
+ list.dataset.scrollTop = String(list.scrollTop <= 2);
214
+ list.dataset.scrollBottom = String(remaining <= 2);
215
+ }
216
+ function installAnimatedList(list) {
217
+ if (animatedLists.has(list))
218
+ return;
219
+ const isCardGrid = list.matches('.base-grid');
220
+ list.classList.add('knowledge-animated-list');
221
+ list.dataset.knowledgeListLayout = isCardGrid ? 'grid' : 'scroll';
222
+ updateScrollEdges(list);
223
+ const onScroll = () => updateScrollEdges(list);
224
+ list.addEventListener('scroll', onScroll, { passive: true });
225
+ const items = Array.from(list.querySelectorAll(MOTION_ITEM_SELECTOR));
226
+ if (reducedMotion.matches || typeof IntersectionObserver === 'undefined') {
227
+ for (const item of items)
228
+ item.classList.add('knowledge-list-reveal', 'is-visible');
229
+ animatedLists.set(list, () => list.removeEventListener('scroll', onScroll));
230
+ return;
231
+ }
232
+ const observerRoot = list.scrollHeight - list.clientHeight > 2 ? list : null;
233
+ const observer = new IntersectionObserver(entries => {
234
+ const entering = entries
235
+ .filter(entry => entry.isIntersecting)
236
+ .sort((left, right) => left.boundingClientRect.top - right.boundingClientRect.top);
237
+ const now = performance.now();
238
+ entering.forEach((entry, index) => {
239
+ const item = entry.target;
240
+ const stagger = isCardGrid ? 52 : 38;
241
+ item.style.setProperty('--knowledge-list-delay', `${Math.min(index, 7) * stagger}ms`);
242
+ item.classList.add('is-visible');
243
+ rememberMotionPlay(item, now);
244
+ });
245
+ for (const entry of entries) {
246
+ if (entry.isIntersecting)
247
+ continue;
248
+ const item = entry.target;
249
+ item.classList.remove('is-visible');
250
+ item.style.setProperty('--knowledge-list-delay', '0ms');
251
+ }
252
+ }, { root: observerRoot, threshold: .12, rootMargin: '-4px 0px' });
253
+ const now = performance.now();
254
+ for (const item of items) {
255
+ item.classList.add('knowledge-list-reveal');
256
+ if (!isCardGrid && motionWasJustPlayed(item, now))
257
+ item.classList.add('is-visible');
258
+ }
259
+ let prepareFrame = 0;
260
+ let settleFrame = 0;
261
+ prepareFrame = requestAnimationFrame(() => {
262
+ prepareFrame = 0;
263
+ settleFrame = requestAnimationFrame(() => {
264
+ settleFrame = 0;
265
+ for (const item of items)
266
+ observer.observe(item);
267
+ });
268
+ });
269
+ animatedLists.set(list, () => {
270
+ if (prepareFrame !== 0)
271
+ cancelAnimationFrame(prepareFrame);
272
+ if (settleFrame !== 0)
273
+ cancelAnimationFrame(settleFrame);
274
+ observer.disconnect();
275
+ list.removeEventListener('scroll', onScroll);
276
+ });
277
+ }
278
+ function cleanupDisconnected() {
279
+ for (const [surface, record] of glassSurfaces) {
280
+ if (surface.isConnected)
281
+ continue;
282
+ if (record.frame !== 0)
283
+ cancelAnimationFrame(record.frame);
284
+ record.observer?.disconnect();
285
+ record.filter?.remove();
286
+ glassSurfaces.delete(surface);
287
+ }
288
+ for (const [surface, cleanup] of borderSurfaces) {
289
+ if (surface.isConnected)
290
+ continue;
291
+ cleanup();
292
+ borderSurfaces.delete(surface);
293
+ }
294
+ for (const [list, cleanup] of animatedLists) {
295
+ if (list.isConnected)
296
+ continue;
297
+ cleanup();
298
+ animatedLists.delete(list);
299
+ }
300
+ }
301
+ function refresh(root = document) {
302
+ cleanupDisconnected();
303
+ for (const surface of queryIncludingRoot(root, GLASS_SURFACE_SELECTOR))
304
+ installGlassSurface(surface);
305
+ for (const surface of queryIncludingRoot(root, BORDER_SURFACE_SELECTOR))
306
+ installBorderSurface(surface);
307
+ for (const surface of queryIncludingRoot(root, GLARE_SURFACE_SELECTOR))
308
+ surface.classList.add('knowledge-glare-surface');
309
+ for (const list of queryIncludingRoot(root, ANIMATED_LIST_SELECTOR))
310
+ installAnimatedList(list);
311
+ }
312
+ function destroy() {
313
+ for (const [surface, record] of glassSurfaces) {
314
+ if (record.frame !== 0)
315
+ cancelAnimationFrame(record.frame);
316
+ record.observer?.disconnect();
317
+ record.filter?.remove();
318
+ surface.classList.remove('knowledge-glass-surface');
319
+ surface.removeAttribute('data-knowledge-glass');
320
+ surface.style.removeProperty('--knowledge-glass-filter');
321
+ }
322
+ for (const [surface, cleanup] of borderSurfaces) {
323
+ cleanup();
324
+ surface.classList.remove('knowledge-border-surface');
325
+ }
326
+ for (const [list, cleanup] of animatedLists) {
327
+ cleanup();
328
+ list.classList.remove('knowledge-animated-list');
329
+ }
330
+ glassSurfaces.clear();
331
+ borderSurfaces.clear();
332
+ animatedLists.clear();
333
+ motionPlayedAt.clear();
334
+ filterBank?.remove();
335
+ filterBank = undefined;
336
+ }
337
+ window.DshKnowledgeEffects?.destroy();
338
+ window.DshKnowledgeEffects = { refresh, destroy };
339
+ export { destroy, refresh };
340
+ //# sourceMappingURL=web-workspace-effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-workspace-effects.js","sourceRoot":"","sources":["../src/web-workspace-effects.ts"],"names":[],"mappings":"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"}
package/lib/web.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAmBtD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,QAAQ,GAAG,aAAwB,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,IAAI,CAaZ"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAqBtD,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,kBAAkB,EACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,QAAQ,GAAG,aAAwB,EAC7C,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,IAAI,CAaZ"}
package/lib/web.js CHANGED
@@ -4,6 +4,8 @@ const STATIC_ASSETS = new Map([
4
4
  ['app.js', loadAsset('../web/app.js', 'text/javascript; charset=utf-8')],
5
5
  ['change-review.js', loadAsset('../web/change-review.js', 'text/javascript; charset=utf-8')],
6
6
  ['markdown-preview.js', loadAsset('../web/markdown-preview.js', 'text/javascript; charset=utf-8')],
7
+ ['note-editor.js', loadAsset('../web/note-editor.js', 'text/javascript; charset=utf-8')],
8
+ ['workspace-effects.js', loadAsset('../web/workspace-effects.js', 'text/javascript; charset=utf-8')],
7
9
  ['styles.css', loadAsset('../web/styles.css', 'text/css; charset=utf-8')],
8
10
  ]);
9
11
  const ASSET_VERSION = createHash('sha256')
@@ -58,7 +60,7 @@ function sendAsset(res, method, asset, embedded = false) {
58
60
  res.end(method === 'HEAD' ? undefined : asset.body);
59
61
  }
60
62
  function securityHeaders(embedded = false) {
61
- const policy = "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'none'; form-action 'self'";
63
+ const policy = "default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data: blob:; frame-src blob:; connect-src 'self'; font-src 'self'; object-src 'none'; base-uri 'none'; form-action 'self'";
62
64
  return {
63
65
  'content-security-policy': embedded ? policy : `${policy}; frame-ancestors 'self'`,
64
66
  'referrer-policy': 'no-referrer',
package/lib/web.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AASzD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAgB;IAC3C,CAAC,QAAQ,EAAE,SAAS,CAAC,eAAe,EAAE,gCAAgC,CAAC,CAAC;IACxE,CAAC,kBAAkB,EAAE,SAAS,CAAC,yBAAyB,EAAE,gCAAgC,CAAC,CAAC;IAC5F,CAAC,qBAAqB,EAAE,SAAS,CAAC,4BAA4B,EAAE,gCAAgC,CAAC,CAAC;IAClG,CAAC,gBAAgB,EAAE,SAAS,CAAC,uBAAuB,EAAE,gCAAgC,CAAC,CAAC;IACxF,CAAC,sBAAsB,EAAE,SAAS,CAAC,6BAA6B,EAAE,gCAAgC,CAAC,CAAC;IACpG,CAAC,YAAY,EAAE,SAAS,CAAC,mBAAmB,EAAE,yBAAyB,CAAC,CAAC;CAC1E,CAAC,CAAA;AACF,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC;KACvC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACrE,MAAM,CAAC,KAAK,CAAC;KACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;AACf,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;AAE1F,MAAM,UAAU,oBAAoB,CAClC,GAAuB,EACvB,OAAe,EACf,SAAiB,EACjB,WAAqC,QAAQ,EAC7C,UAAmB;IAEnB,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,CAAoC,CAAA;IAC1F,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAA;IAC5F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,cAAc;SACrC,UAAU,CAAC,8BAA8B,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;SAC1E,UAAU,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;SACxE,UAAU,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC;SACtE,UAAU,CAAC,iCAAiC,EAAE,aAAa,CAAC,CAAC,CAAA;IAChE,OAAO,SAAS,CAAC,QAAQ,CAAC;QACxB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;KACtE,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,QAAQ,CACf,GAAoB,EACpB,GAAmB,EACnB,OAAe,EACf,KAAa,EACb,UAAmB;IAEnB,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAA;IAClC,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,eAAe,EAAE,EAAE,CAAC,CAAA;QAChE,GAAG,CAAC,GAAG,EAAE,CAAA;QACT,OAAM;IACR,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,wBAAwB,CAAC,CAAC,QAAQ,CAAA;IAC3E,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IACzE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,UAAU,KAAK,SAAS,IAAI,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QACpF,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC1F,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,CAAA;QACrC,GAAG,CAAC,GAAG,EAAE,CAAA;QACT,OAAM;IACR,CAAC;IACD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,CAAA;AAC/B,CAAC;AAED,SAAS,SAAS,CAAC,GAAmB,EAAE,MAAc,EAAE,KAAY,EAAE,QAAQ,GAAG,KAAK;IACpF,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,GAAG,eAAe,CAAC,QAAQ,CAAC;QAC5B,cAAc,EAAE,KAAK,CAAC,WAAW;QACjC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,UAAU;QACvC,eAAe,EAAE,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,qCAAqC;KAChH,CAAC,CAAA;IACF,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;AACrD,CAAC;AAED,SAAS,eAAe,CAAC,QAAQ,GAAG,KAAK;IACvC,MAAM,MAAM,GAAG,mMAAmM,CAAA;IAClN,OAAO;QACL,yBAAyB,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,0BAA0B;QAClF,iBAAiB,EAAE,aAAa;QAChC,wBAAwB,EAAE,SAAS;QACnC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE;QACtD,4BAA4B,EAAE,aAAa;KAC5C,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA0B,EAAE,QAAgB;IACtE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,wBAAwB,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAC3F,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IACnC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,aAAa,CAAC,UAAU,KAAK,aAAa,CAAC,UAAU,IAAI,eAAe,CAAC,aAAa,EAAE,aAAa,CAAC,CAAA;AAC/G,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,WAAmB;IAClD,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,CAAA;AAC5E,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACjH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-knowledge",
3
- "version": "1.2.0",
3
+ "version": "2.1.0",
4
4
  "description": "Local and remote knowledge bases for DeepSeek Harness, with scoped recall, controlled write-back, and a Web management console",
5
5
  "keywords": [
6
6
  "deepseek-harness",
@@ -82,6 +82,17 @@
82
82
  "@deepseek-ai/dsh-client-ui-sidebar": "0.1.1-rc.2",
83
83
  "@deepseek-ai/dsh-client-ui-slots": "0.1.1-rc.2",
84
84
  "@deepseek-ai/dsh-client-ui-theme": "0.1.1-rc.2",
85
+ "@tiptap/core": "^3.30.5",
86
+ "@tiptap/extension-document": "^3.30.5",
87
+ "@tiptap/extension-image": "^3.30.5",
88
+ "@tiptap/extension-paragraph": "^3.30.5",
89
+ "@tiptap/extension-table": "^3.30.5",
90
+ "@tiptap/extension-task-item": "^3.30.5",
91
+ "@tiptap/extension-task-list": "^3.30.5",
92
+ "@tiptap/extension-text": "^3.30.5",
93
+ "@tiptap/extensions": "^3.30.5",
94
+ "@tiptap/markdown": "^3.30.5",
95
+ "@tiptap/starter-kit": "^3.30.5",
85
96
  "@types/node": "^24.0.0",
86
97
  "@types/react": "18.3.28",
87
98
  "dompurify": "^3.4.14",