@askdkc/kiokuko 0.1.8 → 0.1.10

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 (95) hide show
  1. package/README.ja.md +17 -10
  2. package/README.ko.md +16 -9
  3. package/README.md +45 -19
  4. package/README.zh-CN.md +16 -9
  5. package/dist/akinator/capabilities.d.ts.map +1 -1
  6. package/dist/akinator/capabilities.js +22 -8
  7. package/dist/akinator/capabilities.js.map +1 -1
  8. package/dist/akinator/service.d.ts.map +1 -1
  9. package/dist/akinator/service.js +2 -1
  10. package/dist/akinator/service.js.map +1 -1
  11. package/dist/cli.d.ts.map +1 -1
  12. package/dist/cli.js +5 -0
  13. package/dist/cli.js.map +1 -1
  14. package/dist/commands/doctor.d.ts +5 -0
  15. package/dist/commands/doctor.d.ts.map +1 -1
  16. package/dist/commands/doctor.js +57 -2
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/export.d.ts.map +1 -1
  19. package/dist/commands/export.js +11 -5
  20. package/dist/commands/export.js.map +1 -1
  21. package/dist/commands/import.d.ts.map +1 -1
  22. package/dist/commands/import.js +37 -10
  23. package/dist/commands/import.js.map +1 -1
  24. package/dist/commands/setup.d.ts +3 -1
  25. package/dist/commands/setup.d.ts.map +1 -1
  26. package/dist/commands/setup.js +30 -6
  27. package/dist/commands/setup.js.map +1 -1
  28. package/dist/config/paths.d.ts +5 -0
  29. package/dist/config/paths.d.ts.map +1 -1
  30. package/dist/config/paths.js +20 -0
  31. package/dist/config/paths.js.map +1 -1
  32. package/dist/context/broker.d.ts.map +1 -1
  33. package/dist/context/broker.js +7 -3
  34. package/dist/context/broker.js.map +1 -1
  35. package/dist/context/delivery.d.ts.map +1 -1
  36. package/dist/context/delivery.js +12 -8
  37. package/dist/context/delivery.js.map +1 -1
  38. package/dist/knowledge/sources.js +1 -1
  39. package/dist/knowledge/sources.js.map +1 -1
  40. package/dist/ledger/archive.d.ts.map +1 -1
  41. package/dist/ledger/archive.js +14 -6
  42. package/dist/ledger/archive.js.map +1 -1
  43. package/dist/ledger/maintenance.js +4 -4
  44. package/dist/ledger/maintenance.js.map +1 -1
  45. package/dist/ledger/promotion.d.ts.map +1 -1
  46. package/dist/ledger/promotion.js +6 -4
  47. package/dist/ledger/promotion.js.map +1 -1
  48. package/dist/memory/curator.d.ts +1 -0
  49. package/dist/memory/curator.d.ts.map +1 -1
  50. package/dist/memory/curator.js +34 -18
  51. package/dist/memory/curator.js.map +1 -1
  52. package/dist/memory/entries.d.ts.map +1 -1
  53. package/dist/memory/entries.js +72 -31
  54. package/dist/memory/entries.js.map +1 -1
  55. package/dist/memory/hybrid-retrieval.d.ts.map +1 -1
  56. package/dist/memory/hybrid-retrieval.js +11 -5
  57. package/dist/memory/hybrid-retrieval.js.map +1 -1
  58. package/dist/memory/lifecycle.js +6 -6
  59. package/dist/memory/lifecycle.js.map +1 -1
  60. package/dist/memory/rebuild-search.d.ts.map +1 -1
  61. package/dist/memory/rebuild-search.js +26 -7
  62. package/dist/memory/rebuild-search.js.map +1 -1
  63. package/dist/memory/retrieval.d.ts.map +1 -1
  64. package/dist/memory/retrieval.js +9 -7
  65. package/dist/memory/retrieval.js.map +1 -1
  66. package/dist/memory/revisions.d.ts +44 -0
  67. package/dist/memory/revisions.d.ts.map +1 -0
  68. package/dist/memory/revisions.js +122 -0
  69. package/dist/memory/revisions.js.map +1 -0
  70. package/dist/memory/structured-memory.d.ts +2 -0
  71. package/dist/memory/structured-memory.d.ts.map +1 -1
  72. package/dist/memory/structured-memory.js +28 -0
  73. package/dist/memory/structured-memory.js.map +1 -1
  74. package/dist/setup/standard-skills.d.ts +13 -0
  75. package/dist/setup/standard-skills.d.ts.map +1 -0
  76. package/dist/setup/standard-skills.js +42 -0
  77. package/dist/setup/standard-skills.js.map +1 -0
  78. package/dist/web/i18n.d.ts +11 -1
  79. package/dist/web/i18n.d.ts.map +1 -1
  80. package/dist/web/i18n.js +44 -4
  81. package/dist/web/i18n.js.map +1 -1
  82. package/dist/web/server.d.ts.map +1 -1
  83. package/dist/web/server.js +12 -10
  84. package/dist/web/server.js.map +1 -1
  85. package/dist/web/ui.d.ts.map +1 -1
  86. package/dist/web/ui.js +170 -32
  87. package/dist/web/ui.js.map +1 -1
  88. package/migrations/001_initial.sql +51 -17
  89. package/migrations/002_fts.sql +13 -57
  90. package/migrations/004_agent_gateway.sql +4 -2
  91. package/migrations/005_hybrid_search.sql +16 -61
  92. package/migrations/007_akinator_reasoning.sql +4 -3
  93. package/package.json +2 -1
  94. package/skills/kiokuko-ui-design-soul/SKILL.md +50 -0
  95. package/skills/kiokuko-ui-design-soul/references/ui-checklist.md +71 -0
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/web/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,QAAQ,QAodb,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,QAAQ,QA8lBb,CAAC"}
package/dist/web/ui.js CHANGED
@@ -47,6 +47,7 @@ export const WEB_HTML = String.raw `<!doctype html>
47
47
  .button { border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--ink); padding:10px 14px; font-weight:700; }
48
48
  .button.primary { background:var(--accent); color:#fff; border-color:var(--accent); }
49
49
  .button:disabled { cursor:not-allowed; opacity:.45; }
50
+ .button:focus-visible,.curator-close:focus-visible { outline:3px solid rgba(37,99,235,.25); outline-offset:2px; }
50
51
  .layout { display:grid; grid-template-columns:220px minmax(300px,1fr) minmax(360px,1.15fr); gap:16px; align-items:start; }
51
52
  .panel { background:rgba(255,255,255,.88); border:1px solid rgba(226,232,240,.9); border-radius:20px; box-shadow:0 14px 44px rgba(15,23,42,.08); overflow:hidden; }
52
53
  .panel-head { padding:18px 20px; border-bottom:1px solid var(--line); display:flex; justify-content:space-between; align-items:center; gap:12px; }
@@ -90,9 +91,27 @@ export const WEB_HTML = String.raw `<!doctype html>
90
91
  .detail-block { border-top:1px solid var(--line); padding-top:12px; margin-top:12px; }
91
92
  .detail-block h3 { margin:0 0 8px; font-size:14px; }
92
93
  .detail-text { white-space:pre-wrap; overflow-wrap:anywhere; color:var(--muted); font-size:13px; }
93
- .curator-panel { margin-top:16px; }
94
+ .curator-modal { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:24px; background:rgba(15,23,42,.42); backdrop-filter:blur(6px); animation:curator-backdrop-in .18s ease-out both; }
95
+ .curator-modal.is-closing { animation:curator-backdrop-out .18s ease-in both; }
96
+ .curator-dialog { width:min(880px,calc(100vw - 32px)); max-height:min(860px,calc(100vh - 48px)); display:flex; flex-direction:column; min-height:0; background:rgba(255,255,255,.96); box-shadow:0 28px 90px rgba(15,23,42,.28); animation:curator-dialog-in .22s cubic-bezier(.2,.8,.2,1) both; }
97
+ .curator-modal.is-closing .curator-dialog { animation:curator-dialog-out .18s ease-in both; }
98
+ .curator-dialog .panel-body { min-height:0; overflow-y:auto; }
99
+ .curator-dialog-head { align-items:flex-start; }
100
+ .curator-heading { display:flex; align-items:center; gap:10px; min-width:0; flex-wrap:wrap; }
101
+ .curator-header-actions { display:flex; align-items:center; justify-content:flex-end; gap:8px; min-width:0; margin-left:auto; }
102
+ .curator-actions { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
103
+ .curator-actions .button { padding:8px 10px; border-radius:10px; font-size:13px; white-space:nowrap; }
104
+ .curator-selection-count { color:var(--muted); font-size:12px; font-weight:700; white-space:nowrap; }
105
+ .curator-selection-summary { display:block; margin:0 0 10px; }
106
+ .curator-close { display:grid; place-items:center; flex:0 0 auto; width:44px; height:44px; border:1px solid var(--line); border-radius:12px; background:var(--panel); color:var(--muted); font-size:26px; line-height:1; }
107
+ .curator-close:hover { border-color:#93c5fd; background:var(--accent-soft); color:var(--accent); }
108
+ .curator-status { margin:0 0 12px; }
94
109
  .curator-list { display:grid; gap:12px; }
95
110
  .curator-card { border:1px solid var(--line); border-radius:14px; padding:16px; background:var(--panel); }
111
+ .curator-card.selected { border-color:#93c5fd; box-shadow:0 8px 20px rgba(37,99,235,.10); }
112
+ .curator-select { display:flex; gap:8px; align-items:center; color:var(--muted); font-size:13px; font-weight:700; }
113
+ .curator-select input { width:17px; height:17px; accent-color:#2563eb; }
114
+ .curator-workspace { overflow-wrap:anywhere; }
96
115
  .curator-card h3 { margin:8px 0; font-size:17px; }
97
116
  .curator-overview { margin:8px 0 12px; color:var(--muted); white-space:pre-wrap; line-height:1.55; }
98
117
  .curator-draft { margin:12px 0; padding:12px; border:1px solid var(--line); border-radius:12px; background:var(--surface); }
@@ -100,13 +119,20 @@ export const WEB_HTML = String.raw `<!doctype html>
100
119
  .curator-draft-label { margin:10px 0 4px; color:var(--muted); font-size:12px; font-weight:700; }
101
120
  .curator-draft-value { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; font:inherit; font-size:13px; line-height:1.5; }
102
121
  .curator-reasons { color:var(--muted); font-size:12px; white-space:pre-wrap; }
122
+ @keyframes curator-backdrop-in { from { opacity:0; } to { opacity:1; } }
123
+ @keyframes curator-backdrop-out { from { opacity:1; } to { opacity:0; } }
124
+ @keyframes curator-dialog-in { from { opacity:0; transform:translateY(10px) scale(.98); } to { opacity:1; transform:translateY(0) scale(1); } }
125
+ @keyframes curator-dialog-out { from { opacity:1; transform:translateY(0) scale(1); } to { opacity:0; transform:translateY(6px) scale(.985); } }
126
+ @media (prefers-reduced-motion: reduce) {
127
+ .curator-modal,.curator-modal .curator-dialog,.curator-modal.is-closing,.curator-modal.is-closing .curator-dialog { animation-duration:.01ms; }
128
+ }
103
129
  @media (max-width:680px) { .operator-grid { grid-template-columns:1fr; } }
104
130
  @media (max-width:1050px) { .layout { grid-template-columns:180px minmax(280px,1fr); } .editor-panel { grid-column:1 / -1; } }
105
- @media (max-width:680px) { .shell { padding:16px; } .topbar { display:block; position:relative; } .brand { padding-right:56px; } .topbar-side { margin-top:16px; align-self:auto; } .language-picker { position:absolute; top:0; right:0; } .toolbar { justify-content:stretch; margin-top:0; } .topbar-side .control,.topbar-side .search { flex:1 1 100%; width:100%; } .search { min-width:0; } .layout { grid-template-columns:1fr; } .genres-panel { order:0; } .list-panel { order:1; } .editor-panel { order:2; } .entry-list { max-height:none; } }
131
+ @media (max-width:680px) { .shell { padding:16px; } .topbar { display:block; position:relative; } .brand { padding-right:56px; } .topbar-side { margin-top:16px; align-self:auto; } .language-picker { position:absolute; top:0; right:0; } .toolbar { justify-content:stretch; margin-top:0; } .topbar-side .control,.topbar-side .search { flex:1 1 100%; width:100%; } .search { min-width:0; } .layout { grid-template-columns:1fr; } .genres-panel { order:0; } .list-panel { order:1; } .editor-panel { order:2; } .entry-list { max-height:none; } .curator-dialog-head { flex-wrap:wrap; } .curator-header-actions { flex:1 1 100%; width:100%; margin-left:0; } .curator-actions { justify-content:flex-end; } }
106
132
  </style>
107
133
  </head>
108
134
  <body>
109
- <main class="shell">
135
+ <main id="app-main" class="shell">
110
136
  <header class="topbar">
111
137
  <div class="brand">
112
138
  <div class="eyebrow" data-i18n="eyebrow">Local memory console</div>
@@ -143,13 +169,6 @@ export const WEB_HTML = String.raw `<!doctype html>
143
169
  <div class="panel-body"><div id="editor"></div></div>
144
170
  </section>
145
171
  </section>
146
- <section id="curator-panel" class="panel curator-panel" hidden>
147
- <div class="panel-head"><h2 data-i18n="curatorTitle">Curator</h2><span class="badge" data-i18n="curatorBadge">user confirmation required</span></div>
148
- <div class="panel-body">
149
- <p class="subtitle" data-i18n="curatorDescription">Review reusable knowledge candidates and add them to global memory.</p>
150
- <div id="curator-list" class="curator-list"></div>
151
- </div>
152
- </section>
153
172
  <section class="panel operator-panel">
154
173
  <div class="panel-head"><h2 data-i18n="operatorTitle">Agent run operator view</h2><span class="badge" data-i18n="trustBadge">stored data is untrusted / non-actionable</span></div>
155
174
  <div class="panel-body operator-grid">
@@ -158,6 +177,23 @@ export const WEB_HTML = String.raw `<!doctype html>
158
177
  </div>
159
178
  </section>
160
179
  </main>
180
+ <div id="curator-modal" class="curator-modal" hidden>
181
+ <section id="curator-panel" class="panel curator-dialog" role="dialog" aria-modal="true" aria-labelledby="curator-title" aria-describedby="curator-description">
182
+ <div class="panel-head curator-dialog-head">
183
+ <div class="curator-heading"><h2 id="curator-title" data-i18n="curatorTitle">Curator</h2><span class="badge" data-i18n="curatorBadge">user confirmation required</span></div>
184
+ <div class="curator-header-actions">
185
+ <div id="curator-actions" class="curator-actions"></div>
186
+ <button id="curator-close" class="curator-close" type="button" aria-label="Close Curator" data-i18n-aria-label="curatorClose"><span aria-hidden="true">×</span></button>
187
+ </div>
188
+ </div>
189
+ <div class="panel-body">
190
+ <p id="curator-description" class="subtitle" data-i18n="curatorDescription">Review reusable knowledge candidates and add them to global memory.</p>
191
+ <div id="curator-selection-count" class="curator-selection-count curator-selection-summary">0 selected</div>
192
+ <div id="curator-status" class="status" role="status" aria-live="polite"></div>
193
+ <div id="curator-list" class="curator-list"></div>
194
+ </div>
195
+ </section>
196
+ </div>
161
197
  <script>
162
198
  const i18n = ${WEB_I18N_CONFIG};
163
199
  const localeStorageKey = 'kiokuko.web.locale';
@@ -181,7 +217,7 @@ export const WEB_HTML = String.raw `<!doctype html>
181
217
  const botModes = [
182
218
  ['bot:common', 'bot.common'], ['bot:researcher', 'bot.researcher'], ['bot:builder', 'bot.builder'], ['bot:reviewer', 'bot.reviewer'], ['bot:devops', 'bot.devops'], ['bot:writer', 'bot.writer'], ['bot:analyst', 'bot.analyst']
183
219
  ];
184
- const state = { locale: initialLocale, workspace: '', kind: 'all', tag: '', query: '', entries: [], tags: [], selected: null, runs: [], selectedRun: null, curatorCandidates: [], curatorGlobalized: new Set(), curatorOpen: false, localizedStatus: null };
220
+ const state = { locale: initialLocale, workspace: '', kind: 'all', tag: '', query: '', entries: [], tags: [], selected: null, runs: [], selectedRun: null, curatorCandidates: [], curatorSelected: new Set(), curatorGlobalized: new Set(), curatorOpen: false, curatorPreviousFocus: null, localizedStatus: null };
185
221
  const $ = (id) => document.getElementById(id);
186
222
  const t = (key, parameters = {}) => {
187
223
  const template = i18n.messages[state.locale]?.[key] ?? i18n.messages[i18n.defaultLocale]?.[key] ?? key;
@@ -251,6 +287,58 @@ export const WEB_HTML = String.raw `<!doctype html>
251
287
  return value;
252
288
  };
253
289
  const escapeTags = (value) => value.split(',').map((item) => item.trim()).filter(Boolean);
290
+ const setCuratorStatus = (message, error = false) => {
291
+ const element = $('curator-status');
292
+ element.textContent = message;
293
+ element.className = error ? 'status notice error curator-status' : 'status curator-status';
294
+ };
295
+ const setCuratorBackgroundBlocked = (blocked) => {
296
+ const appMain = $('app-main');
297
+ appMain.inert = blocked;
298
+ if (blocked) appMain.setAttribute('aria-hidden', 'true');
299
+ else appMain.removeAttribute('aria-hidden');
300
+ };
301
+ function openCurator() {
302
+ if (state.curatorOpen) { $('curator-close')?.focus(); return; }
303
+ state.curatorPreviousFocus = document.activeElement instanceof HTMLElement ? document.activeElement : null;
304
+ state.curatorOpen = true;
305
+ const modal = $('curator-modal');
306
+ modal.classList.remove('is-closing');
307
+ setCuratorBackgroundBlocked(true);
308
+ renderCurator();
309
+ requestAnimationFrame(() => $('curator-close')?.focus());
310
+ }
311
+ function closeCurator() {
312
+ const modal = $('curator-modal');
313
+ if (modal.hidden) return;
314
+ state.curatorOpen = false;
315
+ modal.classList.add('is-closing');
316
+ let finished = false;
317
+ const finish = () => {
318
+ if (finished) return;
319
+ finished = true;
320
+ modal.hidden = true;
321
+ modal.classList.remove('is-closing');
322
+ setCuratorBackgroundBlocked(false);
323
+ const previousFocus = state.curatorPreviousFocus;
324
+ state.curatorPreviousFocus = null;
325
+ if (previousFocus?.isConnected) previousFocus.focus();
326
+ else $('curator-button')?.focus();
327
+ };
328
+ modal.addEventListener('animationend', (event) => { if (event.target === modal) finish(); }, { once: true });
329
+ window.setTimeout(finish, 220);
330
+ }
331
+ function handleCuratorKeydown(event) {
332
+ if (event.key === 'Escape') { event.preventDefault(); closeCurator(); return; }
333
+ if (event.key !== 'Tab') return;
334
+ const modal = $('curator-modal');
335
+ const focusable = [...modal.querySelectorAll('button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])')];
336
+ if (!focusable.length) { event.preventDefault(); return; }
337
+ const first = focusable[0];
338
+ const last = focusable.at(-1);
339
+ if (event.shiftKey && document.activeElement === first) { event.preventDefault(); last.focus(); }
340
+ else if (!event.shiftKey && document.activeElement === last) { event.preventDefault(); first.focus(); }
341
+ }
254
342
 
255
343
  function filterButton(key, label, count, active, onClick) {
256
344
  const button = document.createElement('button');
@@ -332,18 +420,63 @@ export const WEB_HTML = String.raw `<!doctype html>
332
420
 
333
421
  async function selectEntry(id) { try { const result = await api('/api/entries/' + encodeURIComponent(id) + '?workspace=' + encodeURIComponent(state.workspace)); state.selected = result.entry; renderEntries(); renderEditor(); } catch (error) { setStatus(error.message, true); } }
334
422
 
423
+ const curatorCandidateKey = (candidate) => candidate.workspace + '\u0000' + candidate.entryId;
424
+
425
+ async function applySelectedCurator() {
426
+ const selected = state.curatorCandidates.filter((candidate) => state.curatorSelected.has(curatorCandidateKey(candidate)) && !state.curatorGlobalized.has(curatorCandidateKey(candidate)));
427
+ if (!selected.length) return;
428
+ let added = 0;
429
+ let failed = 0;
430
+ for (const candidate of selected) {
431
+ try {
432
+ await api('/api/curator/globalize?workspace=' + encodeURIComponent(candidate.workspace), {
433
+ method: 'POST',
434
+ headers: { 'content-type': 'application/json' },
435
+ body: JSON.stringify({ workspace: candidate.workspace, entryId: candidate.entryId, expectedRevision: candidate.revision }),
436
+ });
437
+ state.curatorGlobalized.add(curatorCandidateKey(candidate));
438
+ added += 1;
439
+ } catch (error) {
440
+ failed += 1;
441
+ setStatus(error.message, true);
442
+ }
443
+ }
444
+ state.curatorSelected.clear();
445
+ await loadCurator();
446
+ await loadEntries();
447
+ if (added > 0 && failed === 0) { setLocalizedStatus('curatorBatchAdded', { count: added }); setCuratorStatus(t('curatorBatchAdded', { count: added })); }
448
+ else if (added > 0) { setLocalizedStatus('curatorBatchPartial', { added, failed }, true); setCuratorStatus(t('curatorBatchPartial', { added, failed }), true); }
449
+ }
450
+
335
451
  function renderCurator() {
336
- const panel = $('curator-panel');
337
- panel.hidden = !state.curatorOpen;
338
452
  if (!state.curatorOpen) return;
453
+ const modal = $('curator-modal');
454
+ modal.hidden = false;
339
455
  const root = $('curator-list');
456
+ const selectable = state.curatorCandidates.filter((candidate) => !state.curatorGlobalized.has(curatorCandidateKey(candidate)));
457
+ $('curator-selection-count').textContent = t('curatorSelected', { count: state.curatorSelected.size });
458
+ const actionRoot = $('curator-actions'); actionRoot.replaceChildren();
459
+ const selectAll = document.createElement('button'); selectAll.type = 'button'; selectAll.className = 'button'; setI18nText(selectAll, 'curatorSelectAll'); selectAll.disabled = selectable.length === 0;
460
+ selectAll.addEventListener('click', () => { selectable.forEach((candidate) => state.curatorSelected.add(curatorCandidateKey(candidate))); renderCurator(); });
461
+ const clearSelection = document.createElement('button'); clearSelection.type = 'button'; clearSelection.className = 'button'; setI18nText(clearSelection, 'curatorClearSelection'); clearSelection.disabled = state.curatorSelected.size === 0;
462
+ clearSelection.addEventListener('click', () => { state.curatorSelected.clear(); renderCurator(); });
463
+ const apply = document.createElement('button'); apply.type = 'button'; apply.className = 'button primary'; setI18nText(apply, 'curatorApplySelected'); apply.disabled = state.curatorSelected.size === 0;
464
+ apply.addEventListener('click', () => applySelectedCurator());
465
+ actionRoot.append(selectAll, clearSelection, apply);
340
466
  if (!state.curatorCandidates.length) { const empty = document.createElement('div'); empty.className = 'editor-empty'; setI18nText(empty, 'noCuratorCandidates'); root.replaceChildren(empty); return; }
341
- root.replaceChildren(...state.curatorCandidates.map((candidate) => {
467
+ const cards = state.curatorCandidates.map((candidate) => {
342
468
  const card = document.createElement('article'); card.className = 'curator-card';
469
+ const candidateKey = curatorCandidateKey(candidate);
470
+ const done = state.curatorGlobalized.has(candidateKey);
471
+ const selectLabel = document.createElement('label'); selectLabel.className = 'curator-select';
472
+ const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkbox.checked = state.curatorSelected.has(candidateKey); checkbox.disabled = done;
473
+ checkbox.addEventListener('change', () => { if (checkbox.checked) state.curatorSelected.add(candidateKey); else state.curatorSelected.delete(candidateKey); renderCurator(); });
474
+ const selectText = document.createElement('span'); selectText.textContent = done ? t('globalized') : t('curatorSelectSkill'); selectLabel.append(checkbox, selectText);
343
475
  const meta = document.createElement('div'); meta.className = 'entry-meta';
344
476
  const kind = document.createElement('span'); kind.className = 'badge'; kind.textContent = labelForKind(candidate.kind);
345
477
  const score = document.createElement('span'); score.className = 'badge'; score.textContent = t('curatorScore', { score: candidate.score });
346
- meta.append(kind, score);
478
+ const workspace = document.createElement('span'); workspace.className = 'badge curator-workspace'; workspace.textContent = t('curatorWorkspace', { workspace: candidate.workspace });
479
+ meta.append(kind, score, workspace);
347
480
  if (candidate.knowledge && candidate.knowledge.skillReady) { const ready = document.createElement('span'); ready.className = 'badge'; setI18nText(ready, 'curatorSkillReady'); meta.append(ready); }
348
481
  const heading = document.createElement('h3'); heading.textContent = candidate.skillName;
349
482
  const overview = document.createElement('div'); overview.className = 'curator-overview'; overview.textContent = candidate.overview.join('\n');
@@ -373,24 +506,27 @@ export const WEB_HTML = String.raw `<!doctype html>
373
506
  draft.append(label, content);
374
507
  }
375
508
  const reasons = document.createElement('div'); reasons.className = 'curator-reasons'; reasons.textContent = [...(candidate.reasons || []), ...(candidate.warnings || []).map((warning) => t('curatorWarning', { warning }))].join('\n');
376
- const action = document.createElement('button'); action.type = 'button'; action.className = 'button primary';
377
- const done = state.curatorGlobalized.has(candidate.entryId); action.disabled = done; setI18nText(action, done ? 'globalized' : 'globalize');
378
- action.addEventListener('click', async () => {
379
- action.disabled = true;
380
- try {
381
- await api('/api/curator/globalize?workspace=' + encodeURIComponent(state.workspace), { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ entryId: candidate.entryId, expectedRevision: candidate.revision }) });
382
- state.curatorGlobalized.add(candidate.entryId); setLocalizedStatus('curatorAdded'); renderCurator(); await loadEntries();
383
- } catch (error) { action.disabled = false; setStatus(error.message, true); }
384
- });
385
- card.append(meta, heading, overview, knowledge, draft, reasons, action); return card;
386
- }));
509
+ card.classList.toggle('selected', checkbox.checked);
510
+ card.append(selectLabel, meta, heading, overview, knowledge, draft, reasons); return card;
511
+ });
512
+ root.replaceChildren(toolbar, ...cards);
387
513
  }
388
514
 
389
515
  async function loadCurator() {
390
- if (!state.workspace) return;
391
- state.curatorOpen = true; renderCurator();
392
- try { const result = await api('/api/curator/candidates?workspace=' + encodeURIComponent(state.workspace) + '&limit=50'); state.curatorCandidates = result.candidates || []; renderCurator(); }
393
- catch (error) { setStatus(error.message, true); }
516
+ openCurator();
517
+ const panel = $('curator-panel');
518
+ panel.setAttribute('aria-busy', 'true');
519
+ setCuratorStatus(t('curatorLoading'));
520
+ try {
521
+ const result = await api('/api/curator/candidates?limit=50');
522
+ state.curatorCandidates = result.candidates || [];
523
+ const available = new Set(state.curatorCandidates.map((candidate) => curatorCandidateKey(candidate)));
524
+ state.curatorSelected = new Set([...state.curatorSelected].filter((key) => available.has(key)));
525
+ setCuratorStatus('');
526
+ renderCurator();
527
+ }
528
+ catch (error) { setCuratorStatus(error.message, true); }
529
+ finally { panel.removeAttribute('aria-busy'); }
394
530
  }
395
531
 
396
532
  async function loadRunDetail(runId) {
@@ -448,7 +584,7 @@ export const WEB_HTML = String.raw `<!doctype html>
448
584
 
449
585
  async function loadEntries() { if (!state.workspace) return; try { const params = new URLSearchParams({ workspace: state.workspace }); if (state.kind !== 'all') params.set('kind', state.kind); if (state.tag) params.set('tag', state.tag); if (state.query) params.set('q', state.query); const result = await api('/api/entries?' + params); state.entries = result.entries; if (state.selected && !state.entries.some((entry) => entry.id === state.selected.id)) state.selected = null; renderEntries(); renderFilters(); if (!state.selected && state.entries[0]) await selectEntry(state.entries[0].id); else renderEditor(); setLocalizedCountStatus('displayedCount', result.entries.length); } catch (error) { setStatus(error.message, true); } }
450
586
  async function loadTags() { if (!state.workspace) return; try { const result = await api('/api/tags?workspace=' + encodeURIComponent(state.workspace)); state.tags = result.tags; renderFilters(); } catch (error) { setStatus(error.message, true); } }
451
- async function loadWorkspaces() { try { const result = await api('/api/workspaces'); const select = $('workspace'); select.replaceChildren(...result.workspaces.map((item) => { const option = document.createElement('option'); option.value = item.workspace; option.textContent = (item.displayName || item.workspace) + ' (' + item.count + ')'; return option; })); if (!state.workspace && result.workspaces[0]) state.workspace = result.workspaces[0].workspace; select.value = state.workspace; if (state.workspace) { await loadTags(); await loadEntries(); await loadRuns(); if (state.curatorOpen) await loadCurator(); } else setLocalizedStatus('noWorkspace', {}, true); } catch (error) { setStatus(error.message, true); } }
587
+ async function loadWorkspaces() { try { const result = await api('/api/workspaces'); const select = $('workspace'); select.replaceChildren(...result.workspaces.map((item) => { const option = document.createElement('option'); option.value = item.workspace; option.textContent = (item.displayName || item.workspace) + ' (' + item.count + ')'; return option; })); if (!state.workspace && result.workspaces[0]) state.workspace = result.workspaces[0].workspace; select.value = state.workspace; if (state.workspace) { await loadTags(); await loadEntries(); await loadRuns(); } if (state.curatorOpen) await loadCurator(); else if (!state.workspace) setLocalizedStatus('noWorkspace', {}, true); } catch (error) { setStatus(error.message, true); } }
452
588
  $('language-toggle').addEventListener('click', () => {
453
589
  setLanguageMenuOpen($('language-toggle').getAttribute('aria-expanded') !== 'true');
454
590
  });
@@ -470,8 +606,10 @@ export const WEB_HTML = String.raw `<!doctype html>
470
606
  });
471
607
  document.addEventListener('click', (event) => { if (!$('language-picker')?.contains(event.target)) setLanguageMenuOpen(false); });
472
608
  document.addEventListener('focusin', (event) => { if (!$('language-picker')?.contains(event.target)) setLanguageMenuOpen(false); });
473
- $('workspace').addEventListener('change', (event) => { state.workspace = event.target.value; state.selected = null; state.selectedRun = null; state.runs = []; state.tag = ''; state.curatorCandidates = []; state.curatorGlobalized = new Set(); state.curatorOpen = false; renderCurator(); loadTags().then(loadEntries).then(loadRuns); });
609
+ $('workspace').addEventListener('change', (event) => { if (state.curatorOpen) closeCurator(); state.workspace = event.target.value; state.selected = null; state.selectedRun = null; state.runs = []; state.tag = ''; state.curatorCandidates = []; state.curatorSelected = new Set(); state.curatorGlobalized = new Set(); state.curatorOpen = false; loadTags().then(loadEntries).then(loadRuns); });
474
610
  $('curator-button').addEventListener('click', () => loadCurator());
611
+ $('curator-close').addEventListener('click', () => closeCurator());
612
+ $('curator-modal').addEventListener('keydown', handleCuratorKeydown);
475
613
  $('refresh').addEventListener('click', () => loadWorkspaces());
476
614
  let searchTimer; $('search').addEventListener('input', (event) => { clearTimeout(searchTimer); state.query = event.target.value.trim(); searchTimer = setTimeout(() => loadEntries(), 180); });
477
615
  applyTranslations();
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7F,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,aAAa,EAAE,kBAAkB;IACjC,YAAY,EAAE,iBAAiB;IAC/B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;CACvB,CAAC;KACC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC/B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAqJf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+T1B,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/web/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE7F,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC;IACrC,aAAa,EAAE,kBAAkB;IACjC,YAAY,EAAE,iBAAiB;IAC/B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,YAAY;CACvB,CAAC;KACC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC;KAC1B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;KAC/B,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAyLf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqa1B,CAAC"}
@@ -27,23 +27,14 @@ CREATE TABLE repository_locations (
27
27
  CREATE TABLE entries (
28
28
  id TEXT PRIMARY KEY,
29
29
  workspace TEXT NOT NULL,
30
- kind TEXT NOT NULL CHECK (
31
- kind IN ('fact', 'decision', 'lesson', 'preference', 'reference')
32
- ),
33
30
  status TEXT NOT NULL CHECK (
34
31
  status IN ('candidate', 'verified', 'superseded')
35
32
  ),
36
- title TEXT NOT NULL,
37
- body TEXT NOT NULL,
38
- summary TEXT,
39
- scope_json TEXT NOT NULL DEFAULT '{}',
40
- provenance_json TEXT NOT NULL DEFAULT '{}',
41
33
  trust_level TEXT NOT NULL DEFAULT 'user_asserted' CHECK (
42
34
  trust_level IN ('untrusted', 'user_asserted', 'source_verified', 'system_verified')
43
35
  ),
44
36
  confidence REAL NOT NULL CHECK (confidence >= 0.0 AND confidence <= 1.0),
45
- content_hash TEXT NOT NULL,
46
- revision INTEGER NOT NULL DEFAULT 1,
37
+ current_revision INTEGER NOT NULL CHECK (current_revision > 0),
47
38
  superseded_by TEXT REFERENCES entries(id),
48
39
  created_by TEXT NOT NULL,
49
40
  created_at TEXT NOT NULL,
@@ -52,19 +43,62 @@ CREATE TABLE entries (
52
43
  CHECK (status != 'superseded' OR superseded_by IS NOT NULL)
53
44
  );
54
45
 
55
- CREATE UNIQUE INDEX idx_entries_workspace_hash
56
- ON entries(workspace, content_hash);
46
+ CREATE UNIQUE INDEX idx_entries_id_workspace
47
+ ON entries(id, workspace);
57
48
  CREATE INDEX idx_entries_workspace_status
58
49
  ON entries(workspace, status, updated_at DESC);
59
- CREATE INDEX idx_entries_workspace_kind
60
- ON entries(workspace, kind, updated_at DESC);
61
50
 
62
- CREATE TABLE tags (
63
- entry_id TEXT NOT NULL REFERENCES entries(id) ON DELETE CASCADE,
51
+ CREATE TABLE entry_revisions (
52
+ entry_id TEXT NOT NULL,
53
+ workspace TEXT NOT NULL,
54
+ revision INTEGER NOT NULL CHECK (revision > 0),
55
+ kind TEXT NOT NULL CHECK (
56
+ kind IN ('fact', 'decision', 'lesson', 'preference', 'reference')
57
+ ),
58
+ title TEXT NOT NULL,
59
+ body TEXT NOT NULL,
60
+ summary TEXT,
61
+ scope_json TEXT NOT NULL DEFAULT '{}',
62
+ provenance_json TEXT NOT NULL DEFAULT '{}',
63
+ content_hash TEXT NOT NULL,
64
+ created_by TEXT NOT NULL,
65
+ created_at TEXT NOT NULL,
66
+ PRIMARY KEY (entry_id, revision),
67
+ FOREIGN KEY (entry_id, workspace)
68
+ REFERENCES entries(id, workspace)
69
+ ON DELETE CASCADE
70
+ );
71
+
72
+ CREATE UNIQUE INDEX idx_entry_revisions_workspace_hash
73
+ ON entry_revisions(workspace, content_hash);
74
+ CREATE INDEX idx_entry_revisions_entry_created
75
+ ON entry_revisions(entry_id, revision DESC);
76
+
77
+ CREATE TABLE entry_revision_tags (
78
+ entry_id TEXT NOT NULL,
79
+ revision INTEGER NOT NULL,
64
80
  tag TEXT NOT NULL,
65
- PRIMARY KEY (entry_id, tag)
81
+ PRIMARY KEY (entry_id, revision, tag),
82
+ FOREIGN KEY (entry_id, revision)
83
+ REFERENCES entry_revisions(entry_id, revision)
84
+ ON DELETE CASCADE
66
85
  );
67
86
 
87
+ CREATE INDEX idx_entry_revision_tags_tag
88
+ ON entry_revision_tags(tag, entry_id, revision);
89
+
90
+ CREATE TRIGGER entry_revisions_immutable_update
91
+ BEFORE UPDATE ON entry_revisions
92
+ BEGIN
93
+ SELECT RAISE(ABORT, 'entry_revisions are immutable');
94
+ END;
95
+
96
+ CREATE TRIGGER entry_revision_tags_immutable_update
97
+ BEFORE UPDATE ON entry_revision_tags
98
+ BEGIN
99
+ SELECT RAISE(ABORT, 'entry_revision_tags are immutable');
100
+ END;
101
+
68
102
  CREATE TABLE entry_links (
69
103
  from_entry_id TEXT NOT NULL REFERENCES entries(id),
70
104
  to_entry_id TEXT NOT NULL REFERENCES entries(id),
@@ -6,61 +6,17 @@ CREATE VIRTUAL TABLE entries_fts USING fts5(
6
6
  tokenize='unicode61 remove_diacritics 2'
7
7
  );
8
8
 
9
- CREATE TRIGGER entries_fts_ai AFTER INSERT ON entries BEGIN
10
- INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
11
- VALUES (
12
- new.rowid,
13
- new.title,
14
- new.body,
15
- COALESCE(new.summary, ''),
16
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = new.id), '')
17
- );
18
- END;
19
-
20
- CREATE TRIGGER entries_fts_ad AFTER DELETE ON entries BEGIN
21
- DELETE FROM entries_fts WHERE rowid = old.rowid;
22
- END;
23
-
24
- CREATE TRIGGER entries_fts_au AFTER UPDATE ON entries BEGIN
25
- DELETE FROM entries_fts WHERE rowid = old.rowid;
26
- INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
27
- VALUES (
28
- new.rowid,
29
- new.title,
30
- new.body,
31
- COALESCE(new.summary, ''),
32
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = new.id), '')
33
- );
34
- END;
35
-
36
- CREATE TRIGGER tags_fts_ai AFTER INSERT ON tags BEGIN
37
- DELETE FROM entries_fts WHERE rowid = (SELECT rowid FROM entries WHERE id = new.entry_id);
38
- INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
39
- SELECT entries.rowid, entries.title, entries.body, COALESCE(entries.summary, ''),
40
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = entries.id), '')
41
- FROM entries WHERE entries.id = new.entry_id;
42
- END;
43
-
44
- CREATE TRIGGER tags_fts_ad AFTER DELETE ON tags BEGIN
45
- DELETE FROM entries_fts WHERE rowid = (SELECT rowid FROM entries WHERE id = old.entry_id);
46
- INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
47
- SELECT entries.rowid, entries.title, entries.body, COALESCE(entries.summary, ''),
48
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = entries.id), '')
49
- FROM entries WHERE entries.id = old.entry_id;
50
- END;
51
-
52
- CREATE TRIGGER tags_fts_au AFTER UPDATE OF tag ON tags BEGIN
53
- DELETE FROM entries_fts WHERE rowid = (SELECT rowid FROM entries WHERE id = old.entry_id);
54
- INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
55
- SELECT entries.rowid, entries.title, entries.body, COALESCE(entries.summary, ''),
56
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = entries.id), '')
57
- FROM entries WHERE entries.id = new.entry_id;
58
- END;
59
-
9
+ -- FTS is an application-controlled projection of the current revision. There
10
+ -- are deliberately no triggers on entries or tags: historical revisions must
11
+ -- never become searchable and projection refreshes must be explicit.
60
12
  INSERT INTO entries_fts(rowid, title, body, summary, tags_text)
61
- SELECT entries.rowid,
62
- entries.title,
63
- entries.body,
64
- COALESCE(entries.summary, ''),
65
- COALESCE((SELECT group_concat(tag, ' ') FROM tags WHERE entry_id = entries.id), '')
66
- FROM entries;
13
+ SELECT e.rowid,
14
+ r.title,
15
+ r.body,
16
+ COALESCE(r.summary, ''),
17
+ COALESCE((SELECT group_concat(tag, ' ')
18
+ FROM entry_revision_tags
19
+ WHERE entry_id = e.id AND revision = e.current_revision), '')
20
+ FROM entries AS e
21
+ JOIN entry_revisions AS r
22
+ ON r.entry_id = e.id AND r.revision = e.current_revision;
@@ -165,12 +165,14 @@ CREATE INDEX idx_context_deliveries_run_created_at
165
165
 
166
166
  CREATE TABLE context_delivery_entries (
167
167
  delivery_id TEXT NOT NULL REFERENCES context_deliveries(delivery_id) ON DELETE CASCADE,
168
- entry_id TEXT NOT NULL REFERENCES entries(id),
168
+ entry_id TEXT NOT NULL,
169
169
  entry_revision INTEGER NOT NULL CHECK (entry_revision > 0),
170
170
  rank INTEGER NOT NULL CHECK (rank > 0),
171
171
  score_components_json TEXT NOT NULL,
172
172
  selection_reason_json TEXT NOT NULL,
173
- PRIMARY KEY (delivery_id, entry_id)
173
+ PRIMARY KEY (delivery_id, entry_id),
174
+ FOREIGN KEY (entry_id, entry_revision)
175
+ REFERENCES entry_revisions(entry_id, revision)
174
176
  );
175
177
 
176
178
  CREATE INDEX idx_context_delivery_entries_entry