@lemoncat7/dsh-knowledge 2.3.2 → 2.3.4

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 (86) hide show
  1. package/README.md +1 -1
  2. package/docs/ui-maintenance.md +97 -0
  3. package/lib/activity-control.d.ts +6 -0
  4. package/lib/activity-control.d.ts.map +1 -0
  5. package/lib/activity-control.js +118 -0
  6. package/lib/activity-control.js.map +1 -0
  7. package/lib/client.d.ts +17 -0
  8. package/lib/client.d.ts.map +1 -1
  9. package/lib/client.js +4030 -196
  10. package/lib/client.js.map +4 -4
  11. package/lib/design-tokens.d.ts +12 -0
  12. package/lib/design-tokens.d.ts.map +1 -0
  13. package/lib/design-tokens.js +58 -0
  14. package/lib/design-tokens.js.map +1 -0
  15. package/lib/index.d.ts.map +1 -1
  16. package/lib/index.js +3 -0
  17. package/lib/index.js.map +1 -1
  18. package/lib/knowledge-activity-api.d.ts +35 -0
  19. package/lib/knowledge-activity-api.d.ts.map +1 -0
  20. package/lib/knowledge-activity-api.js +115 -0
  21. package/lib/knowledge-activity-api.js.map +1 -0
  22. package/lib/knowledge-activity-controller.d.ts +20 -0
  23. package/lib/knowledge-activity-controller.d.ts.map +1 -0
  24. package/lib/knowledge-activity-controller.js +138 -0
  25. package/lib/knowledge-activity-controller.js.map +1 -0
  26. package/lib/knowledge-activity-notes.d.ts +9 -0
  27. package/lib/knowledge-activity-notes.d.ts.map +1 -0
  28. package/lib/knowledge-activity-notes.js +150 -0
  29. package/lib/knowledge-activity-notes.js.map +1 -0
  30. package/lib/knowledge-activity-panel.d.ts +8 -0
  31. package/lib/knowledge-activity-panel.d.ts.map +1 -0
  32. package/lib/knowledge-activity-panel.js +245 -0
  33. package/lib/knowledge-activity-panel.js.map +1 -0
  34. package/lib/knowledge-activity-presentation.d.ts +14 -0
  35. package/lib/knowledge-activity-presentation.d.ts.map +1 -0
  36. package/lib/knowledge-activity-presentation.js +77 -0
  37. package/lib/knowledge-activity-presentation.js.map +1 -0
  38. package/lib/knowledge-activity-state.d.ts +17 -0
  39. package/lib/knowledge-activity-state.d.ts.map +1 -0
  40. package/lib/knowledge-activity-state.js +14 -0
  41. package/lib/knowledge-activity-state.js.map +1 -0
  42. package/lib/latest-request.d.ts +7 -0
  43. package/lib/latest-request.d.ts.map +1 -0
  44. package/lib/latest-request.js +14 -0
  45. package/lib/latest-request.js.map +1 -0
  46. package/lib/local-provider.d.ts +0 -2
  47. package/lib/local-provider.d.ts.map +1 -1
  48. package/lib/local-provider.js +2 -323
  49. package/lib/local-provider.js.map +1 -1
  50. package/lib/notes/share-page-styles.d.ts +2 -0
  51. package/lib/notes/share-page-styles.d.ts.map +1 -0
  52. package/lib/notes/share-page-styles.js +11 -0
  53. package/lib/notes/share-page-styles.js.map +1 -0
  54. package/lib/notes/share-page.d.ts.map +1 -1
  55. package/lib/notes/share-page.js +1 -8
  56. package/lib/notes/share-page.js.map +1 -1
  57. package/lib/storage/migrations.d.ts +5 -0
  58. package/lib/storage/migrations.d.ts.map +1 -0
  59. package/lib/storage/migrations.js +325 -0
  60. package/lib/storage/migrations.js.map +1 -0
  61. package/lib/theme-bridge.d.ts +9 -7
  62. package/lib/theme-bridge.d.ts.map +1 -1
  63. package/lib/theme-bridge.js +3 -23
  64. package/lib/theme-bridge.js.map +1 -1
  65. package/lib/web-note-editor-outline.js +2 -2
  66. package/lib/web-note-editor-outline.js.map +1 -1
  67. package/lib/web-note-editor-selection.d.ts.map +1 -1
  68. package/lib/web-note-editor-selection.js +51 -16
  69. package/lib/web-note-editor-selection.js.map +1 -1
  70. package/lib/web-note-editor.d.ts.map +1 -1
  71. package/lib/web-note-editor.js +15 -1
  72. package/lib/web-note-editor.js.map +1 -1
  73. package/lib/web.d.ts.map +1 -1
  74. package/lib/web.js +4 -0
  75. package/lib/web.js.map +1 -1
  76. package/package.json +4 -1
  77. package/web/app.js +111 -191
  78. package/web/design-tokens.css +1 -0
  79. package/web/dialogs.js +94 -0
  80. package/web/document-actions.js +68 -0
  81. package/web/index.html +1 -0
  82. package/web/model-catalog.js +22 -0
  83. package/web/note-editor.js +57 -57
  84. package/web/select-control.js +193 -0
  85. package/web/styles.css +162 -203
  86. package/web/ui-primitives.js +5 -0
@@ -0,0 +1,325 @@
1
+ import { DEFAULT_KNOWLEDGE_BASE_ID, nowIso } from '../domain.js';
2
+ /** Versioned upgrades preserve the provider's database and transaction boundaries. */
3
+ export function migrateKnowledgeDatabase(db, notes) {
4
+ let version = Number(db.prepare('PRAGMA user_version').get().user_version ?? 0);
5
+ if (version > 13)
6
+ throw new Error(`knowledge database schema ${version} is newer than this plugin supports`);
7
+ if (version === 0)
8
+ db.exec(`
9
+ BEGIN IMMEDIATE;
10
+ CREATE TABLE knowledge_entries (
11
+ id TEXT PRIMARY KEY,
12
+ title TEXT NOT NULL,
13
+ body TEXT NOT NULL,
14
+ type TEXT NOT NULL CHECK(type IN ('preference','fact','decision','procedure','lesson')),
15
+ tags_json TEXT NOT NULL,
16
+ scope_kind TEXT NOT NULL CHECK(scope_kind IN ('global','project')),
17
+ scope_id TEXT,
18
+ confidence REAL NOT NULL CHECK(confidence >= 0 AND confidence <= 1),
19
+ status TEXT NOT NULL CHECK(status IN ('active','archived')),
20
+ version INTEGER NOT NULL,
21
+ content_hash TEXT NOT NULL,
22
+ source_json TEXT,
23
+ created_at TEXT NOT NULL,
24
+ updated_at TEXT NOT NULL,
25
+ CHECK((scope_kind = 'global' AND scope_id IS NULL) OR (scope_kind = 'project' AND length(scope_id) > 0))
26
+ );
27
+ CREATE INDEX knowledge_entries_scope_status ON knowledge_entries(status, scope_kind, scope_id, updated_at DESC);
28
+ CREATE INDEX knowledge_entries_type ON knowledge_entries(type, status);
29
+ CREATE UNIQUE INDEX knowledge_entries_active_hash ON knowledge_entries(content_hash) WHERE status = 'active';
30
+
31
+ CREATE TABLE knowledge_versions (
32
+ id TEXT PRIMARY KEY,
33
+ knowledge_id TEXT NOT NULL REFERENCES knowledge_entries(id) ON DELETE CASCADE,
34
+ version INTEGER NOT NULL,
35
+ snapshot_json TEXT NOT NULL,
36
+ change_kind TEXT NOT NULL CHECK(change_kind IN ('create','update','archive','restore')),
37
+ created_at TEXT NOT NULL,
38
+ UNIQUE(knowledge_id, version)
39
+ );
40
+
41
+ CREATE TABLE knowledge_candidates (
42
+ id TEXT PRIMARY KEY,
43
+ action TEXT NOT NULL CHECK(action IN ('create','update','conflict')),
44
+ target_id TEXT,
45
+ draft_json TEXT NOT NULL,
46
+ reason TEXT NOT NULL,
47
+ status TEXT NOT NULL CHECK(status IN ('pending','approved','rejected')),
48
+ source_key TEXT,
49
+ proposal_hash TEXT NOT NULL,
50
+ created_at TEXT NOT NULL,
51
+ reviewed_at TEXT,
52
+ review_note TEXT
53
+ );
54
+ CREATE UNIQUE INDEX knowledge_candidates_dedupe ON knowledge_candidates(source_key, proposal_hash) WHERE source_key IS NOT NULL;
55
+ CREATE INDEX knowledge_candidates_status ON knowledge_candidates(status, created_at DESC);
56
+
57
+ CREATE TABLE extraction_jobs (
58
+ source_key TEXT PRIMARY KEY,
59
+ status TEXT NOT NULL CHECK(status IN ('running','completed','failed')),
60
+ attempts INTEGER NOT NULL,
61
+ candidate_count INTEGER NOT NULL DEFAULT 0,
62
+ last_error TEXT,
63
+ updated_at TEXT NOT NULL
64
+ );
65
+
66
+ CREATE TABLE api_tokens (
67
+ id TEXT PRIMARY KEY,
68
+ name TEXT NOT NULL,
69
+ token_hash TEXT NOT NULL UNIQUE,
70
+ permissions_json TEXT NOT NULL,
71
+ created_at TEXT NOT NULL,
72
+ last_used_at TEXT,
73
+ revoked_at TEXT
74
+ );
75
+
76
+ CREATE VIRTUAL TABLE knowledge_fts USING fts5(
77
+ knowledge_id UNINDEXED,
78
+ title,
79
+ body,
80
+ tags,
81
+ tokenize = 'unicode61 remove_diacritics 2'
82
+ );
83
+ PRAGMA user_version = 1;
84
+ COMMIT;
85
+ `);
86
+ if (version === 0)
87
+ version = 1;
88
+ if (version === 1)
89
+ db.exec(`
90
+ BEGIN IMMEDIATE;
91
+ CREATE TABLE knowledge_bases (
92
+ id TEXT PRIMARY KEY,
93
+ name TEXT NOT NULL,
94
+ description TEXT NOT NULL,
95
+ default_tags_json TEXT NOT NULL,
96
+ extraction_instructions TEXT NOT NULL,
97
+ status TEXT NOT NULL CHECK(status IN ('active','archived')),
98
+ created_at TEXT NOT NULL,
99
+ updated_at TEXT NOT NULL
100
+ );
101
+ INSERT INTO knowledge_bases(
102
+ id,name,description,default_tags_json,extraction_instructions,status,created_at,updated_at
103
+ ) VALUES(
104
+ 'default','默认知识库','','[]','仅收录可跨会话复用、且与当前挂载范围相关的知识。','active',datetime('now'),datetime('now')
105
+ );
106
+ ALTER TABLE knowledge_entries ADD COLUMN knowledge_base_id TEXT NOT NULL DEFAULT 'default';
107
+ CREATE INDEX knowledge_entries_base_status ON knowledge_entries(knowledge_base_id, status, updated_at DESC);
108
+ CREATE TABLE knowledge_mounts (
109
+ id TEXT PRIMARY KEY,
110
+ target_kind TEXT NOT NULL CHECK(target_kind IN ('project','session')),
111
+ target_id TEXT NOT NULL,
112
+ knowledge_base_id TEXT NOT NULL REFERENCES knowledge_bases(id) ON DELETE CASCADE,
113
+ enabled INTEGER NOT NULL CHECK(enabled IN (0,1)),
114
+ recall_enabled INTEGER NOT NULL CHECK(recall_enabled IN (0,1)),
115
+ write_mode TEXT NOT NULL CHECK(write_mode IN ('none','audit','direct')),
116
+ include_tags_json TEXT NOT NULL,
117
+ exclude_tags_json TEXT NOT NULL,
118
+ extraction_instructions TEXT NOT NULL,
119
+ created_at TEXT NOT NULL,
120
+ updated_at TEXT NOT NULL,
121
+ UNIQUE(target_kind, target_id, knowledge_base_id)
122
+ );
123
+ CREATE INDEX knowledge_mounts_target ON knowledge_mounts(target_kind, target_id, enabled);
124
+ PRAGMA user_version = 2;
125
+ COMMIT;
126
+ `);
127
+ if (version <= 1)
128
+ version = 2;
129
+ if (version === 2)
130
+ db.exec(`
131
+ BEGIN IMMEDIATE;
132
+ ALTER TABLE knowledge_bases ADD COLUMN writeback_provider TEXT;
133
+ ALTER TABLE knowledge_bases ADD COLUMN writeback_model TEXT;
134
+ PRAGMA user_version = 3;
135
+ COMMIT;
136
+ `);
137
+ if (version <= 2)
138
+ version = 3;
139
+ if (version === 3)
140
+ db.exec(`
141
+ BEGIN IMMEDIATE;
142
+ CREATE TABLE knowledge_documents (
143
+ id TEXT PRIMARY KEY,
144
+ knowledge_base_id TEXT NOT NULL REFERENCES knowledge_bases(id) ON DELETE CASCADE,
145
+ rel_path TEXT NOT NULL,
146
+ title TEXT NOT NULL,
147
+ content TEXT NOT NULL,
148
+ entry_count INTEGER NOT NULL CHECK(entry_count >= 0),
149
+ content_hash TEXT NOT NULL,
150
+ created_at TEXT NOT NULL,
151
+ updated_at TEXT NOT NULL,
152
+ UNIQUE(knowledge_base_id, rel_path)
153
+ );
154
+ CREATE INDEX knowledge_documents_base_updated ON knowledge_documents(knowledge_base_id, updated_at DESC);
155
+ PRAGMA user_version = 4;
156
+ COMMIT;
157
+ `);
158
+ if (version <= 3)
159
+ version = 4;
160
+ if (version === 4)
161
+ db.exec(`
162
+ BEGIN IMMEDIATE;
163
+ CREATE TABLE knowledge_settings (
164
+ id INTEGER PRIMARY KEY CHECK(id = 1),
165
+ writeback_policy TEXT NOT NULL CHECK(writeback_policy IN ('conservative','proactive')),
166
+ updated_at TEXT NOT NULL
167
+ );
168
+ INSERT INTO knowledge_settings(id,writeback_policy,updated_at)
169
+ VALUES(1,'conservative',datetime('now'));
170
+ PRAGMA user_version = 5;
171
+ COMMIT;
172
+ `);
173
+ if (version <= 4)
174
+ version = 5;
175
+ if (version === 5)
176
+ db.exec('PRAGMA user_version = 6;');
177
+ if (version <= 5)
178
+ version = 6;
179
+ if (version === 6)
180
+ db.exec(`
181
+ BEGIN IMMEDIATE;
182
+ ALTER TABLE knowledge_entries ADD COLUMN document_state TEXT NOT NULL DEFAULT 'open'
183
+ CHECK(document_state IN ('open','resolved','complete'));
184
+ ALTER TABLE knowledge_entries ADD COLUMN finalized_at TEXT;
185
+ ALTER TABLE knowledge_entries ADD COLUMN finalization_note TEXT;
186
+ ALTER TABLE knowledge_documents ADD COLUMN document_state TEXT NOT NULL DEFAULT 'open'
187
+ CHECK(document_state IN ('open','resolved','complete'));
188
+ ALTER TABLE knowledge_documents ADD COLUMN finalized_at TEXT;
189
+ ALTER TABLE knowledge_documents ADD COLUMN finalization_note TEXT;
190
+ PRAGMA user_version = 7;
191
+ COMMIT;
192
+ `);
193
+ if (version <= 6)
194
+ version = 7;
195
+ if (version === 7)
196
+ db.exec(`
197
+ BEGIN IMMEDIATE;
198
+ ALTER TABLE knowledge_bases ADD COLUMN writeback_policy TEXT NOT NULL DEFAULT 'conservative'
199
+ CHECK(writeback_policy IN ('conservative','proactive'));
200
+ UPDATE knowledge_bases SET writeback_policy=(SELECT writeback_policy FROM knowledge_settings WHERE id=1);
201
+ PRAGMA user_version = 8;
202
+ COMMIT;
203
+ `);
204
+ if (version <= 7)
205
+ version = 8;
206
+ if (version === 8)
207
+ db.exec(`
208
+ BEGIN IMMEDIATE;
209
+ ALTER TABLE knowledge_settings ADD COLUMN writeback_provider TEXT;
210
+ ALTER TABLE knowledge_settings ADD COLUMN writeback_model TEXT;
211
+ PRAGMA user_version = 9;
212
+ COMMIT;
213
+ `);
214
+ if (version <= 8)
215
+ version = 9;
216
+ if (version === 9) {
217
+ db.exec('BEGIN IMMEDIATE');
218
+ try {
219
+ db.exec(`
220
+ CREATE TABLE knowledge_note_references (
221
+ knowledge_id TEXT NOT NULL REFERENCES knowledge_entries(id) ON DELETE CASCADE,
222
+ note_id TEXT NOT NULL,
223
+ source TEXT NOT NULL CHECK(source IN ('user','agent','legacy')),
224
+ source_session_id TEXT,
225
+ created_at TEXT NOT NULL,
226
+ PRIMARY KEY(knowledge_id, note_id)
227
+ );
228
+ CREATE INDEX knowledge_note_references_note ON knowledge_note_references(note_id, created_at DESC);
229
+ `);
230
+ backfillLegacyNoteReferences(db, notes);
231
+ db.exec('PRAGMA user_version = 10; COMMIT');
232
+ }
233
+ catch (error) {
234
+ db.exec('ROLLBACK');
235
+ throw error;
236
+ }
237
+ }
238
+ if (version <= 9)
239
+ version = 10;
240
+ if (version === 10) {
241
+ db.exec('BEGIN IMMEDIATE');
242
+ try {
243
+ const candidateTable = db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='knowledge_candidates'").get();
244
+ const candidateColumns = candidateTable === undefined
245
+ ? []
246
+ : db.prepare('PRAGMA table_info(knowledge_candidates)').all();
247
+ if (candidateTable !== undefined && !candidateColumns.some(column => String(column.name) === 'change_json')) {
248
+ db.exec('ALTER TABLE knowledge_candidates ADD COLUMN change_json TEXT');
249
+ }
250
+ db.exec('PRAGMA user_version = 11; COMMIT');
251
+ }
252
+ catch (error) {
253
+ db.exec('ROLLBACK');
254
+ throw error;
255
+ }
256
+ }
257
+ if (version <= 10)
258
+ version = 11;
259
+ if (version === 11)
260
+ db.exec(`
261
+ BEGIN IMMEDIATE;
262
+ CREATE INDEX IF NOT EXISTS knowledge_documents_index_order ON knowledge_documents(
263
+ knowledge_base_id,
264
+ (CASE WHEN rel_path='README.md' THEN 0 ELSE 1 END),
265
+ rel_path,
266
+ id
267
+ );
268
+ PRAGMA user_version = 12;
269
+ COMMIT;
270
+ `);
271
+ if (version <= 11)
272
+ version = 12;
273
+ if (version === 12) {
274
+ db.exec('BEGIN IMMEDIATE');
275
+ try {
276
+ const extractionTable = db.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='extraction_jobs'").get();
277
+ if (extractionTable === undefined) {
278
+ db.exec(`
279
+ CREATE TABLE extraction_jobs (
280
+ source_key TEXT PRIMARY KEY,
281
+ status TEXT NOT NULL CHECK(status IN ('running','completed','failed')),
282
+ attempts INTEGER NOT NULL,
283
+ candidate_count INTEGER NOT NULL DEFAULT 0,
284
+ last_error TEXT,
285
+ completion_json TEXT,
286
+ updated_at TEXT NOT NULL
287
+ )
288
+ `);
289
+ }
290
+ else {
291
+ const extractionColumns = db.prepare('PRAGMA table_info(extraction_jobs)').all();
292
+ if (!extractionColumns.some(column => String(column.name) === 'completion_json')) {
293
+ db.exec('ALTER TABLE extraction_jobs ADD COLUMN completion_json TEXT');
294
+ }
295
+ }
296
+ db.exec('PRAGMA user_version = 13; COMMIT');
297
+ }
298
+ catch (error) {
299
+ db.exec('ROLLBACK');
300
+ throw error;
301
+ }
302
+ }
303
+ // Alpha v2 used a migration note as the default base's routing description.
304
+ // Clear only that exact placeholder so existing user-authored descriptions stay untouched.
305
+ db.prepare("UPDATE knowledge_bases SET description='' WHERE id=? AND description=?")
306
+ .run(DEFAULT_KNOWLEDGE_BASE_ID, '由 0.2 版本迁移的知识。');
307
+ }
308
+ function backfillLegacyNoteReferences(db, notes) {
309
+ const insert = db.prepare(`
310
+ INSERT OR IGNORE INTO knowledge_note_references(knowledge_id,note_id,source,source_session_id,created_at)
311
+ VALUES(?,?,'legacy',NULL,?)
312
+ `);
313
+ const timestamp = nowIso();
314
+ const rows = db.prepare("SELECT id,body FROM knowledge_entries WHERE body LIKE '%note://note_%'").all();
315
+ for (const row of rows) {
316
+ const noteIds = String(row.body).match(/note:\/\/(note_[a-f0-9]{32})/giu) ?? [];
317
+ for (const reference of new Set(noteIds)) {
318
+ const noteId = reference.slice('note://'.length).toLocaleLowerCase();
319
+ const note = notes.get(noteId);
320
+ if (note !== undefined && note.kind !== 'folder')
321
+ insert.run(String(row.id), note.id, timestamp);
322
+ }
323
+ }
324
+ }
325
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/storage/migrations.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import { type KnowledgeColorScheme } from './design-tokens.js';
1
2
  export declare const KNOWLEDGE_THEME_MESSAGE = "@lemoncat7/dsh-knowledge/host-theme";
2
3
  export declare const KNOWLEDGE_THEME_READY_MESSAGE = "@lemoncat7/dsh-knowledge/host-theme-ready";
3
4
  export declare const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1;
4
- export type KnowledgeColorScheme = 'light' | 'dark';
5
+ export type { KnowledgeColorScheme } from './design-tokens.js';
5
6
  export interface KnowledgeHostThemeMessage {
6
7
  type: typeof KNOWLEDGE_THEME_MESSAGE;
7
8
  version: typeof KNOWLEDGE_THEME_PROTOCOL_VERSION;
@@ -14,10 +15,11 @@ export interface ThemeSnapshotLike {
14
15
  tokens: Readonly<Record<string, string>>;
15
16
  };
16
17
  }
17
- interface ComputedStyleLike {
18
- getPropertyValue(name: string): string;
19
- }
20
- /** Synchronise host light/dark mode while preserving one coherent workspace palette. */
21
- export declare function createKnowledgeHostTheme(_computed: ComputedStyleLike, snapshot: ThemeSnapshotLike): KnowledgeHostThemeMessage;
22
- export {};
18
+ /**
19
+ * The management console lives in its own iframe and therefore owns its
20
+ * component palette. Only the host colour scheme crosses that boundary.
21
+ * Keeping these tokens stable prevents a branded host accent from changing
22
+ * editor selection, navigation and dialog hierarchy independently.
23
+ */
24
+ export declare function createKnowledgeHostTheme(snapshot: ThemeSnapshotLike): KnowledgeHostThemeMessage;
23
25
  //# sourceMappingURL=theme-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-bridge.d.ts","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAC5E,eAAO,MAAM,6BAA6B,8CAA8C,CAAA;AACxF,eAAO,MAAM,gCAAgC,IAAI,CAAA;AAEjD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,MAAM,CAAA;AAEnD,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,OAAO,uBAAuB,CAAA;IACpC,OAAO,EAAE,OAAO,gCAAgC,CAAA;IAChD,WAAW,EAAE,oBAAoB,CAAA;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,WAAW,EAAE,oBAAoB,CAAA;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KACzC,CAAA;CACF;AAED,UAAU,iBAAiB;IACzB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;CACvC;AA6BD,wFAAwF;AACxF,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,QAAQ,EAAE,iBAAiB,GAC1B,yBAAyB,CAO3B"}
1
+ {"version":3,"file":"theme-bridge.d.ts","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACjF,eAAO,MAAM,uBAAuB,wCAAwC,CAAA;AAC5E,eAAO,MAAM,6BAA6B,8CAA8C,CAAA;AACxF,eAAO,MAAM,gCAAgC,IAAI,CAAA;AAEjD,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,OAAO,uBAAuB,CAAA;IACpC,OAAO,EAAE,OAAO,gCAAgC,CAAA;IAChD,WAAW,EAAE,oBAAoB,CAAA;IACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE;QACN,WAAW,EAAE,oBAAoB,CAAA;QACjC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;KACzC,CAAA;CACF;AAGD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,iBAAiB,GAC1B,yBAAyB,CAO3B"}
@@ -1,3 +1,4 @@
1
+ import { KNOWLEDGE_PALETTE } from './design-tokens.js';
1
2
  export const KNOWLEDGE_THEME_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme';
2
3
  export const KNOWLEDGE_THEME_READY_MESSAGE = '@lemoncat7/dsh-knowledge/host-theme-ready';
3
4
  export const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1;
@@ -7,33 +8,12 @@ export const KNOWLEDGE_THEME_PROTOCOL_VERSION = 1;
7
8
  * Keeping these tokens stable prevents a branded host accent from changing
8
9
  * editor selection, navigation and dialog hierarchy independently.
9
10
  */
10
- const WORKSPACE_TOKENS = {
11
- light: {
12
- '--bg': '#ebebeb', '--surface': '#f4f4f4', '--surface-raised': '#fafafa',
13
- '--surface-soft': '#eeeeef', '--surface-hover': 'rgb(118 118 128 / 9%)', '--dialog-surface': '#f4f4f4',
14
- '--text': '#1d1d1f', '--text-secondary': '#515154', '--text-tertiary': '#6e6e73',
15
- '--border': 'rgb(60 60 67 / 14%)', '--border-strong': 'rgb(60 60 67 / 24%)',
16
- '--accent': '#3a3a3c', '--accent-hover': '#1d1d1f', '--accent-soft': '#e2e2e5', '--on-accent': '#ffffff',
17
- '--success': '#248a3d', '--success-soft': '#e8f5eb', '--warning': '#c93400', '--warning-soft': '#fff1e8',
18
- '--danger': '#d70015', '--danger-soft': '#ffebed', '--shadow': '0 24px 64px rgb(0 0 0 / 20%)',
19
- },
20
- dark: {
21
- '--bg': '#101719', '--surface': '#182022', '--surface-raised': '#20292b',
22
- '--surface-soft': 'rgb(184 204 205 / 6%)', '--surface-hover': 'rgb(105 182 186 / 9%)', '--dialog-surface': '#20292b',
23
- '--text': '#e3eaeb', '--text-secondary': '#bbc9cc', '--text-tertiary': '#95a7ab',
24
- '--border': 'rgb(184 204 205 / 10%)', '--border-strong': 'rgb(184 204 205 / 18%)',
25
- '--accent': '#69b6ba', '--accent-hover': '#8aced0', '--accent-soft': 'rgb(105 182 186 / 13%)', '--on-accent': '#101819',
26
- '--success': '#30d158', '--success-soft': 'rgb(48 209 88 / 13%)', '--warning': '#ff9f0a', '--warning-soft': 'rgb(255 159 10 / 13%)',
27
- '--danger': '#ff453a', '--danger-soft': 'rgb(255 69 58 / 14%)', '--shadow': '0 28px 72px rgb(0 0 0 / 42%)',
28
- },
29
- };
30
- /** Synchronise host light/dark mode while preserving one coherent workspace palette. */
31
- export function createKnowledgeHostTheme(_computed, snapshot) {
11
+ export function createKnowledgeHostTheme(snapshot) {
32
12
  return {
33
13
  type: KNOWLEDGE_THEME_MESSAGE,
34
14
  version: KNOWLEDGE_THEME_PROTOCOL_VERSION,
35
15
  colorScheme: snapshot.active.colorScheme,
36
- tokens: { ...WORKSPACE_TOKENS[snapshot.active.colorScheme] },
16
+ tokens: { ...KNOWLEDGE_PALETTE[snapshot.active.colorScheme] },
37
17
  };
38
18
  }
39
19
  //# sourceMappingURL=theme-bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-bridge.js","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,qCAAqC,CAAA;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2CAA2C,CAAA;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AAsBjD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAmE;IACvF,KAAK,EAAE;QACL,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS;QACxE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,SAAS;QACtG,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS;QAChF,UAAU,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB;QAC3E,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS;QACxG,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS;QACxG,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,8BAA8B;KAC9F;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS;QACxE,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,SAAS;QACpH,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,SAAS;QAChF,UAAU,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB;QACjF,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,EAAE,SAAS;QACvH,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,EAAE,SAAS,EAAE,gBAAgB,EAAE,uBAAuB;QACnI,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,sBAAsB,EAAE,UAAU,EAAE,8BAA8B;KAC3G;CACF,CAAA;AAED,wFAAwF;AACxF,MAAM,UAAU,wBAAwB,CACtC,SAA4B,EAC5B,QAA2B;IAE3B,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;QACxC,MAAM,EAAE,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;KAC7D,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"theme-bridge.js","sourceRoot":"","sources":["../src/theme-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA6B,MAAM,oBAAoB,CAAA;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAG,qCAAqC,CAAA;AAC5E,MAAM,CAAC,MAAM,6BAA6B,GAAG,2CAA2C,CAAA;AACxF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAA;AAmBjD;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACtC,QAA2B;IAE3B,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE,gCAAgC;QACzC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW;QACxC,MAAM,EAAE,EAAE,GAAG,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;KAC9D,CAAA;AACH,CAAC"}
@@ -79,7 +79,7 @@ export function createNoteOutlineController(options) {
79
79
  });
80
80
  }
81
81
  setActive(item.position);
82
- if (window.matchMedia('(max-width: 760px)').matches) {
82
+ if (window.matchMedia('(max-width: 1120px), (hover: none) and (pointer: coarse) and (max-width: 1400px)').matches) {
83
83
  open = false;
84
84
  syncOpenState();
85
85
  }
@@ -140,7 +140,7 @@ export function createNoteOutlineController(options) {
140
140
  headings = next;
141
141
  if (changed)
142
142
  renderHeadings();
143
- if (!manuallyToggled && headings.length && !window.matchMedia('(max-width: 980px)').matches)
143
+ if (!manuallyToggled && headings.length && !window.matchMedia('(max-width: 1120px), (hover: none) and (pointer: coarse) and (max-width: 1400px)').matches)
144
144
  open = true;
145
145
  if (!headings.length && !manuallyToggled)
146
146
  open = false;
@@ -1 +1 @@
1
- {"version":3,"file":"web-note-editor-outline.js","sourceRoot":"","sources":["../src/web-note-editor-outline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-note-editor-outline.js","sourceRoot":"","sources":["../src/web-note-editor-outline.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"web-note-editor-selection.d.ts","sourceRoot":"","sources":["../src/web-note-editor-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,WAAW,CAAA;IAClB,UAAU,EAAE,WAAW,CAAA;IACvB,UAAU,IAAI,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,IAAI,IAAI,CAAA;IACf,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;CAChB;AA2BD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,2BAA2B,CAkQtG"}
1
+ {"version":3,"file":"web-note-editor-selection.d.ts","sourceRoot":"","sources":["../src/web-note-editor-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAE1C,UAAU,wBAAwB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,WAAW,CAAA;IAClB,UAAU,EAAE,WAAW,CAAA;IACvB,UAAU,IAAI,OAAO,CAAA;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,IAAI,IAAI,CAAA;IACf,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;CAChB;AA2BD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,wBAAwB,GAAG,2BAA2B,CAoStG"}
@@ -123,7 +123,10 @@ export function createNoteSelectionMenu(options) {
123
123
  frame.append(menu);
124
124
  let positionFrame;
125
125
  let scrollTimer;
126
+ let selectionFrame;
126
127
  let activeSelectionPointerId;
128
+ let gestureCancelled = false;
129
+ let destroyed = false;
127
130
  function currentBlockLabel() {
128
131
  if (editor.isActive('heading', { level: 1 }))
129
132
  return '标题 1';
@@ -163,7 +166,7 @@ export function createNoteSelectionMenu(options) {
163
166
  refreshActiveStates();
164
167
  }
165
168
  function shouldShow() {
166
- if (editor.isDestroyed || options.findIsOpen())
169
+ if (destroyed || editor.isDestroyed || options.findIsOpen())
167
170
  return false;
168
171
  const { from, to, empty } = editor.state.selection;
169
172
  if (empty || !editor.isFocused)
@@ -172,9 +175,9 @@ export function createNoteSelectionMenu(options) {
172
175
  }
173
176
  function positionMenu() {
174
177
  positionFrame = undefined;
175
- if (menu.hidden || editor.isDestroyed)
178
+ if (destroyed || menu.hidden || editor.isDestroyed)
176
179
  return;
177
- if (window.matchMedia('(max-width: 760px)').matches) {
180
+ if (window.matchMedia('(max-width: 1120px), (hover: none) and (pointer: coarse) and (max-width: 1400px)').matches) {
178
181
  menu.dataset.placement = 'bottom';
179
182
  menu.style.left = 'max(8px, env(safe-area-inset-left))';
180
183
  menu.style.right = 'max(8px, env(safe-area-inset-right))';
@@ -201,12 +204,14 @@ export function createNoteSelectionMenu(options) {
201
204
  menu.style.top = `${Math.round(top)}px`;
202
205
  }
203
206
  function schedulePosition() {
207
+ if (destroyed || menu.hidden)
208
+ return;
204
209
  if (positionFrame !== undefined)
205
210
  window.cancelAnimationFrame(positionFrame);
206
211
  positionFrame = window.requestAnimationFrame(positionMenu);
207
212
  }
208
213
  function refresh() {
209
- if (activeSelectionPointerId !== undefined) {
214
+ if (destroyed || gestureCancelled || activeSelectionPointerId !== undefined) {
210
215
  hide();
211
216
  return;
212
217
  }
@@ -219,6 +224,13 @@ export function createNoteSelectionMenu(options) {
219
224
  schedulePosition();
220
225
  }
221
226
  function hide() {
227
+ if (positionFrame !== undefined)
228
+ window.cancelAnimationFrame(positionFrame);
229
+ if (selectionFrame !== undefined)
230
+ window.cancelAnimationFrame(selectionFrame);
231
+ if (scrollTimer !== undefined)
232
+ window.clearTimeout(scrollTimer);
233
+ positionFrame = selectionFrame = scrollTimer = undefined;
222
234
  menu.hidden = true;
223
235
  blockMenu.hidden = true;
224
236
  linkForm.hidden = true;
@@ -227,17 +239,16 @@ export function createNoteSelectionMenu(options) {
227
239
  }
228
240
  function onScroll() {
229
241
  hide();
230
- if (scrollTimer !== undefined)
231
- window.clearTimeout(scrollTimer);
232
242
  scrollTimer = window.setTimeout(refresh, 90);
233
243
  }
234
244
  function onOutsidePointer(event) {
235
- if (!menu.hidden && !menu.contains(event.target) && !editor.view.dom.contains(event.target))
236
- hide();
245
+ if (!menu.contains(event.target) && !editor.view.dom.contains(event.target))
246
+ cancelGesture();
237
247
  }
238
248
  function onEditorPointerDown(event) {
239
- if (event.pointerType === 'mouse' && event.button !== 0)
249
+ if (!event.isPrimary || (event.pointerType === 'mouse' && event.button !== 0))
240
250
  return;
251
+ gestureCancelled = false;
241
252
  activeSelectionPointerId = event.pointerId;
242
253
  hide();
243
254
  }
@@ -245,32 +256,56 @@ export function createNoteSelectionMenu(options) {
245
256
  if (activeSelectionPointerId === undefined || event.pointerId !== activeSelectionPointerId)
246
257
  return;
247
258
  activeSelectionPointerId = undefined;
248
- window.requestAnimationFrame(() => window.requestAnimationFrame(refresh));
259
+ selectionFrame = window.requestAnimationFrame(() => {
260
+ selectionFrame = window.requestAnimationFrame(() => {
261
+ selectionFrame = undefined;
262
+ refresh();
263
+ });
264
+ });
265
+ }
266
+ function cancelGesture() {
267
+ activeSelectionPointerId = undefined;
268
+ gestureCancelled = true;
269
+ hide();
270
+ }
271
+ function onSelectionPointerCancel(event) {
272
+ if (event.pointerId === activeSelectionPointerId)
273
+ cancelGesture();
274
+ }
275
+ function onEditorKeyDown(event) {
276
+ if (event.key === 'Escape')
277
+ cancelGesture();
278
+ else
279
+ gestureCancelled = false;
249
280
  }
250
281
  editor.on('selectionUpdate', refresh);
251
282
  editor.on('transaction', refresh);
252
283
  scrollHost.addEventListener('scroll', onScroll, { passive: true });
253
284
  editor.view.dom.addEventListener('pointerdown', onEditorPointerDown, { passive: true });
285
+ editor.view.dom.addEventListener('dragstart', cancelGesture);
286
+ editor.view.dom.addEventListener('keydown', onEditorKeyDown, true);
287
+ window.addEventListener('blur', cancelGesture);
254
288
  window.addEventListener('resize', schedulePosition, { passive: true });
255
289
  window.addEventListener('pointerup', onSelectionPointerEnd, { passive: true });
256
- window.addEventListener('pointercancel', onSelectionPointerEnd, { passive: true });
290
+ window.addEventListener('pointercancel', onSelectionPointerCancel, { passive: true });
257
291
  document.addEventListener('pointerdown', onOutsidePointer);
258
292
  return {
259
293
  refresh,
260
294
  hide,
261
295
  destroy: () => {
296
+ destroyed = true;
297
+ hide();
262
298
  editor.off('selectionUpdate', refresh);
263
299
  editor.off('transaction', refresh);
264
300
  scrollHost.removeEventListener('scroll', onScroll);
265
301
  editor.view.dom.removeEventListener('pointerdown', onEditorPointerDown);
302
+ editor.view.dom.removeEventListener('dragstart', cancelGesture);
303
+ editor.view.dom.removeEventListener('keydown', onEditorKeyDown, true);
304
+ window.removeEventListener('blur', cancelGesture);
266
305
  window.removeEventListener('resize', schedulePosition);
267
306
  window.removeEventListener('pointerup', onSelectionPointerEnd);
268
- window.removeEventListener('pointercancel', onSelectionPointerEnd);
307
+ window.removeEventListener('pointercancel', onSelectionPointerCancel);
269
308
  document.removeEventListener('pointerdown', onOutsidePointer);
270
- if (positionFrame !== undefined)
271
- window.cancelAnimationFrame(positionFrame);
272
- if (scrollTimer !== undefined)
273
- window.clearTimeout(scrollTimer);
274
309
  menu.remove();
275
310
  },
276
311
  };