agent-knowledge 1.0.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 (130) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/LICENSE +21 -0
  3. package/README.md +191 -0
  4. package/dist/dashboard.d.ts +4 -0
  5. package/dist/dashboard.d.ts.map +1 -0
  6. package/dist/dashboard.js +434 -0
  7. package/dist/dashboard.js.map +1 -0
  8. package/dist/embeddings/claude.d.ts +21 -0
  9. package/dist/embeddings/claude.d.ts.map +1 -0
  10. package/dist/embeddings/claude.js +84 -0
  11. package/dist/embeddings/claude.js.map +1 -0
  12. package/dist/embeddings/factory.d.ts +9 -0
  13. package/dist/embeddings/factory.d.ts.map +1 -0
  14. package/dist/embeddings/factory.js +60 -0
  15. package/dist/embeddings/factory.js.map +1 -0
  16. package/dist/embeddings/gemini.d.ts +21 -0
  17. package/dist/embeddings/gemini.d.ts.map +1 -0
  18. package/dist/embeddings/gemini.js +86 -0
  19. package/dist/embeddings/gemini.js.map +1 -0
  20. package/dist/embeddings/index.d.ts +4 -0
  21. package/dist/embeddings/index.d.ts.map +1 -0
  22. package/dist/embeddings/index.js +3 -0
  23. package/dist/embeddings/index.js.map +1 -0
  24. package/dist/embeddings/local.d.ts +20 -0
  25. package/dist/embeddings/local.d.ts.map +1 -0
  26. package/dist/embeddings/local.js +73 -0
  27. package/dist/embeddings/local.js.map +1 -0
  28. package/dist/embeddings/openai.d.ts +20 -0
  29. package/dist/embeddings/openai.d.ts.map +1 -0
  30. package/dist/embeddings/openai.js +84 -0
  31. package/dist/embeddings/openai.js.map +1 -0
  32. package/dist/embeddings/types.d.ts +39 -0
  33. package/dist/embeddings/types.d.ts.map +1 -0
  34. package/dist/embeddings/types.js +12 -0
  35. package/dist/embeddings/types.js.map +1 -0
  36. package/dist/index.d.ts +2 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +18 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/knowledge/distill.d.ts +27 -0
  41. package/dist/knowledge/distill.d.ts.map +1 -0
  42. package/dist/knowledge/distill.js +407 -0
  43. package/dist/knowledge/distill.js.map +1 -0
  44. package/dist/knowledge/git.d.ts +30 -0
  45. package/dist/knowledge/git.d.ts.map +1 -0
  46. package/dist/knowledge/git.js +228 -0
  47. package/dist/knowledge/git.js.map +1 -0
  48. package/dist/knowledge/search.d.ts +20 -0
  49. package/dist/knowledge/search.d.ts.map +1 -0
  50. package/dist/knowledge/search.js +72 -0
  51. package/dist/knowledge/search.js.map +1 -0
  52. package/dist/knowledge/store.d.ts +47 -0
  53. package/dist/knowledge/store.d.ts.map +1 -0
  54. package/dist/knowledge/store.js +173 -0
  55. package/dist/knowledge/store.js.map +1 -0
  56. package/dist/search/excerpt.d.ts +12 -0
  57. package/dist/search/excerpt.d.ts.map +1 -0
  58. package/dist/search/excerpt.js +28 -0
  59. package/dist/search/excerpt.js.map +1 -0
  60. package/dist/search/fuzzy.d.ts +15 -0
  61. package/dist/search/fuzzy.d.ts.map +1 -0
  62. package/dist/search/fuzzy.js +81 -0
  63. package/dist/search/fuzzy.js.map +1 -0
  64. package/dist/search/tfidf.d.ts +19 -0
  65. package/dist/search/tfidf.d.ts.map +1 -0
  66. package/dist/search/tfidf.js +200 -0
  67. package/dist/search/tfidf.js.map +1 -0
  68. package/dist/search/types.d.ts +19 -0
  69. package/dist/search/types.d.ts.map +1 -0
  70. package/dist/search/types.js +2 -0
  71. package/dist/search/types.js.map +1 -0
  72. package/dist/server.d.ts +3 -0
  73. package/dist/server.d.ts.map +1 -0
  74. package/dist/server.js +518 -0
  75. package/dist/server.js.map +1 -0
  76. package/dist/sessions/indexer.d.ts +15 -0
  77. package/dist/sessions/indexer.d.ts.map +1 -0
  78. package/dist/sessions/indexer.js +182 -0
  79. package/dist/sessions/indexer.js.map +1 -0
  80. package/dist/sessions/parser.d.ts +58 -0
  81. package/dist/sessions/parser.d.ts.map +1 -0
  82. package/dist/sessions/parser.js +142 -0
  83. package/dist/sessions/parser.js.map +1 -0
  84. package/dist/sessions/scopes.d.ts +16 -0
  85. package/dist/sessions/scopes.d.ts.map +1 -0
  86. package/dist/sessions/scopes.js +153 -0
  87. package/dist/sessions/scopes.js.map +1 -0
  88. package/dist/sessions/search.d.ts +26 -0
  89. package/dist/sessions/search.d.ts.map +1 -0
  90. package/dist/sessions/search.js +256 -0
  91. package/dist/sessions/search.js.map +1 -0
  92. package/dist/sessions/summary.d.ts +28 -0
  93. package/dist/sessions/summary.d.ts.map +1 -0
  94. package/dist/sessions/summary.js +135 -0
  95. package/dist/sessions/summary.js.map +1 -0
  96. package/dist/types.d.ts +26 -0
  97. package/dist/types.d.ts.map +1 -0
  98. package/dist/types.js +109 -0
  99. package/dist/types.js.map +1 -0
  100. package/dist/ui/app.js +1029 -0
  101. package/dist/ui/index.html +373 -0
  102. package/dist/ui/styles.css +1508 -0
  103. package/dist/ui/ui/app.js +811 -0
  104. package/dist/ui/ui/index.html +300 -0
  105. package/dist/ui/ui/styles.css +1154 -0
  106. package/dist/validate.d.ts +21 -0
  107. package/dist/validate.d.ts.map +1 -0
  108. package/dist/validate.js +86 -0
  109. package/dist/validate.js.map +1 -0
  110. package/dist/vectorstore/chunker.d.ts +48 -0
  111. package/dist/vectorstore/chunker.d.ts.map +1 -0
  112. package/dist/vectorstore/chunker.js +165 -0
  113. package/dist/vectorstore/chunker.js.map +1 -0
  114. package/dist/vectorstore/index.d.ts +5 -0
  115. package/dist/vectorstore/index.d.ts.map +1 -0
  116. package/dist/vectorstore/index.js +3 -0
  117. package/dist/vectorstore/index.js.map +1 -0
  118. package/dist/vectorstore/store.d.ts +139 -0
  119. package/dist/vectorstore/store.d.ts.map +1 -0
  120. package/dist/vectorstore/store.js +500 -0
  121. package/dist/vectorstore/store.js.map +1 -0
  122. package/dist/version.d.ts +2 -0
  123. package/dist/version.d.ts.map +1 -0
  124. package/dist/version.js +2 -0
  125. package/dist/version.js.map +1 -0
  126. package/docs/ARCHITECTURE.md +244 -0
  127. package/docs/DASHBOARD.md +133 -0
  128. package/docs/SETUP.md +178 -0
  129. package/package.json +92 -0
  130. package/scripts/copy-ui.js +6 -0
@@ -0,0 +1,373 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
8
+ <link
9
+ href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap"
10
+ rel="stylesheet"
11
+ />
12
+ <link
13
+ href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap"
14
+ rel="stylesheet"
15
+ />
16
+ <link rel="stylesheet" href="styles.css" />
17
+ <link
18
+ rel="icon"
19
+ href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><circle cx='13' cy='13' r='9' fill='none' stroke='%235d8da8' stroke-width='3'/><line x1='20' y1='20' x2='28' y2='28' stroke='%235d8da8' stroke-width='3' stroke-linecap='round'/><circle cx='13' cy='13' r='4' fill='%235d8da8' opacity='.3'/></svg>"
20
+ />
21
+
22
+ <title>agent-knowledge</title>
23
+ </head>
24
+ <body>
25
+ <header role="banner">
26
+ <div class="header-left">
27
+ <span class="material-symbols-outlined brand-icon">psychology</span>
28
+ <h1>agent-knowledge</h1>
29
+ <span class="version" id="version">v1.0.0</span>
30
+ <span
31
+ id="connection-status"
32
+ class="status-badge disconnected"
33
+ role="status"
34
+ aria-live="polite"
35
+ >Connecting</span
36
+ >
37
+ </div>
38
+ <div class="header-right">
39
+ <div class="stats" id="stats" aria-live="polite" aria-atomic="true">
40
+ <span class="stat-badge" id="stat-knowledge" title="Knowledge entries">
41
+ <span class="material-symbols-outlined stat-icon">folder</span>
42
+ <span class="stat-value">0</span>
43
+ </span>
44
+ <span class="stat-badge" id="stat-sessions" title="Sessions">
45
+ <span class="material-symbols-outlined stat-icon">history</span>
46
+ <span class="stat-value">0</span>
47
+ </span>
48
+ <span class="stat-badge" id="stat-vectors" title="Vector embeddings">
49
+ <span class="material-symbols-outlined stat-icon">neurology</span>
50
+ <span class="stat-value">0</span>
51
+ </span>
52
+ </div>
53
+ <button id="theme-toggle" class="icon-btn" title="Toggle theme" aria-label="Toggle theme">
54
+ <span class="material-symbols-outlined theme-icon">dark_mode</span>
55
+ </button>
56
+ </div>
57
+ </header>
58
+
59
+ <nav class="tab-bar" role="tablist" aria-label="Main navigation">
60
+ <button
61
+ id="tab-knowledge"
62
+ class="tab active"
63
+ role="tab"
64
+ aria-selected="true"
65
+ aria-controls="view-knowledge"
66
+ data-view="knowledge"
67
+ >
68
+ <span class="material-symbols-outlined tab-icon">folder</span>
69
+ Knowledge
70
+ </button>
71
+ <button
72
+ id="tab-search"
73
+ class="tab"
74
+ role="tab"
75
+ aria-selected="false"
76
+ aria-controls="view-search"
77
+ data-view="search"
78
+ >
79
+ <span class="material-symbols-outlined tab-icon">search</span>
80
+ Search
81
+ </button>
82
+ <button
83
+ id="tab-sessions"
84
+ class="tab"
85
+ role="tab"
86
+ aria-selected="false"
87
+ aria-controls="view-sessions"
88
+ data-view="sessions"
89
+ >
90
+ <span class="material-symbols-outlined tab-icon">history</span>
91
+ Sessions
92
+ </button>
93
+ <button
94
+ id="tab-recall"
95
+ class="tab"
96
+ role="tab"
97
+ aria-selected="false"
98
+ aria-controls="view-recall"
99
+ data-view="recall"
100
+ >
101
+ <span class="material-symbols-outlined tab-icon">psychology</span>
102
+ Recall
103
+ </button>
104
+ <button
105
+ id="tab-embeddings"
106
+ class="tab"
107
+ role="tab"
108
+ aria-selected="false"
109
+ aria-controls="view-embeddings"
110
+ data-view="embeddings"
111
+ >
112
+ <span class="material-symbols-outlined tab-icon">neurology</span>
113
+ Embeddings
114
+ </button>
115
+ </nav>
116
+
117
+ <div class="content-wrapper" id="content-wrapper">
118
+ <main id="content">
119
+ <!-- ===== Knowledge Tab ===== -->
120
+ <section
121
+ id="view-knowledge"
122
+ class="view active"
123
+ role="tabpanel"
124
+ aria-labelledby="tab-knowledge"
125
+ >
126
+ <div class="view-header">
127
+ <h2><span class="material-symbols-outlined view-icon">folder</span>Knowledge Base</h2>
128
+ </div>
129
+ <div
130
+ class="filter-chips"
131
+ id="knowledge-categories"
132
+ role="group"
133
+ aria-label="Filter by category"
134
+ >
135
+ <button class="chip active" data-category="all">
136
+ <span class="material-symbols-outlined chip-icon">select_all</span>All
137
+ </button>
138
+ <button class="chip" data-category="projects">
139
+ <span class="material-symbols-outlined chip-icon">code</span>Projects
140
+ </button>
141
+ <button class="chip" data-category="people">
142
+ <span class="material-symbols-outlined chip-icon">group</span>People
143
+ </button>
144
+ <button class="chip" data-category="decisions">
145
+ <span class="material-symbols-outlined chip-icon">gavel</span>Decisions
146
+ </button>
147
+ <button class="chip" data-category="workflows">
148
+ <span class="material-symbols-outlined chip-icon">account_tree</span>Workflows
149
+ </button>
150
+ <button class="chip" data-category="notes">
151
+ <span class="material-symbols-outlined chip-icon">sticky_note_2</span>Notes
152
+ </button>
153
+ </div>
154
+ <div id="knowledge-grid" class="card-grid"></div>
155
+ <div id="knowledge-empty" class="empty-state hidden">
156
+ <span class="material-symbols-outlined empty-icon">folder_off</span>
157
+ <div class="empty-text">No knowledge entries found</div>
158
+ <div class="empty-hint">
159
+ Entries will appear here when added via the knowledge MCP tools
160
+ </div>
161
+ </div>
162
+ </section>
163
+
164
+ <!-- ===== Search Tab ===== -->
165
+ <section id="view-search" class="view" role="tabpanel" aria-labelledby="tab-search" hidden>
166
+ <div class="view-header">
167
+ <h2><span class="material-symbols-outlined view-icon">search</span>Search Sessions</h2>
168
+ </div>
169
+ <div class="search-bar">
170
+ <span class="material-symbols-outlined search-input-icon">search</span>
171
+ <input
172
+ type="search"
173
+ id="search-input"
174
+ class="search-input"
175
+ placeholder="Search sessions..."
176
+ autocomplete="off"
177
+ aria-label="Search sessions"
178
+ />
179
+ </div>
180
+ <div class="search-controls">
181
+ <div
182
+ class="filter-chips"
183
+ id="search-role-filters"
184
+ role="group"
185
+ aria-label="Filter by role"
186
+ >
187
+ <button class="chip active" data-role="all">All</button>
188
+ <button class="chip" data-role="user">
189
+ <span class="material-symbols-outlined chip-icon">person</span>User
190
+ </button>
191
+ <button class="chip" data-role="assistant">
192
+ <span class="material-symbols-outlined chip-icon">smart_toy</span>Assistant
193
+ </button>
194
+ </div>
195
+ <div class="mode-toggle" role="group" aria-label="Search mode">
196
+ <button
197
+ class="mode-btn active"
198
+ id="mode-ranked"
199
+ data-mode="ranked"
200
+ title="TF-IDF ranked search"
201
+ >
202
+ <span class="material-symbols-outlined">sort</span>Ranked
203
+ </button>
204
+ <button
205
+ class="mode-btn"
206
+ id="mode-semantic"
207
+ data-mode="semantic"
208
+ title="Hybrid semantic + TF-IDF search"
209
+ >
210
+ <span class="material-symbols-outlined">neurology</span>Semantic
211
+ </button>
212
+ <button
213
+ class="mode-btn"
214
+ id="mode-regex"
215
+ data-mode="regex"
216
+ title="Regular expression search"
217
+ >
218
+ <span class="material-symbols-outlined">code</span>Regex
219
+ </button>
220
+ </div>
221
+ </div>
222
+ <div id="search-results" class="results-list"></div>
223
+ <div id="search-empty" class="empty-state">
224
+ <span class="material-symbols-outlined empty-icon">manage_search</span>
225
+ <div class="empty-text">Search across session transcripts</div>
226
+ <div class="empty-hint">Enter a query above to find matching messages</div>
227
+ </div>
228
+ </section>
229
+
230
+ <!-- ===== Sessions Tab ===== -->
231
+ <section
232
+ id="view-sessions"
233
+ class="view"
234
+ role="tabpanel"
235
+ aria-labelledby="tab-sessions"
236
+ hidden
237
+ >
238
+ <div class="view-header">
239
+ <h2><span class="material-symbols-outlined view-icon">history</span>Sessions</h2>
240
+ <div class="view-actions">
241
+ <select
242
+ id="session-project-filter"
243
+ class="filter-select"
244
+ aria-label="Filter by project"
245
+ >
246
+ <option value="">All projects</option>
247
+ </select>
248
+ </div>
249
+ </div>
250
+ <div id="sessions-list" class="sessions-list"></div>
251
+ <div id="sessions-empty" class="empty-state hidden">
252
+ <span class="material-symbols-outlined empty-icon">event_busy</span>
253
+ <div class="empty-text">No sessions found</div>
254
+ <div class="empty-hint">Sessions will appear here once indexed</div>
255
+ </div>
256
+ </section>
257
+
258
+ <!-- ===== Recall Tab ===== -->
259
+ <section id="view-recall" class="view" role="tabpanel" aria-labelledby="tab-recall" hidden>
260
+ <div class="view-header">
261
+ <h2><span class="material-symbols-outlined view-icon">psychology</span>Recall</h2>
262
+ </div>
263
+ <div class="filter-chips" id="recall-scopes" role="group" aria-label="Filter by scope">
264
+ <button class="chip active" data-scope="all">
265
+ <span class="material-symbols-outlined chip-icon">select_all</span>All
266
+ </button>
267
+ <button class="chip" data-scope="errors">
268
+ <span class="material-symbols-outlined chip-icon">error</span>Errors
269
+ </button>
270
+ <button class="chip" data-scope="plans">
271
+ <span class="material-symbols-outlined chip-icon">checklist</span>Plans
272
+ </button>
273
+ <button class="chip" data-scope="configs">
274
+ <span class="material-symbols-outlined chip-icon">settings</span>Configs
275
+ </button>
276
+ <button class="chip" data-scope="tools">
277
+ <span class="material-symbols-outlined chip-icon">build</span>Tools
278
+ </button>
279
+ <button class="chip" data-scope="files">
280
+ <span class="material-symbols-outlined chip-icon">description</span>Files
281
+ </button>
282
+ <button class="chip" data-scope="decisions">
283
+ <span class="material-symbols-outlined chip-icon">gavel</span>Decisions
284
+ </button>
285
+ </div>
286
+ <div class="search-bar">
287
+ <span class="material-symbols-outlined search-input-icon">psychology</span>
288
+ <input
289
+ type="search"
290
+ id="recall-input"
291
+ class="search-input"
292
+ placeholder="Query recall..."
293
+ autocomplete="off"
294
+ aria-label="Query recall"
295
+ />
296
+ </div>
297
+ <label class="semantic-toggle" title="Enable semantic similarity search">
298
+ <input type="checkbox" id="recall-semantic" checked />
299
+ <span class="material-symbols-outlined toggle-icon">neurology</span>
300
+ Semantic
301
+ </label>
302
+ <div id="recall-results" class="results-list"></div>
303
+ <div id="recall-empty" class="empty-state">
304
+ <span class="material-symbols-outlined empty-icon">psychology</span>
305
+ <div class="empty-text">Scoped recall across sessions</div>
306
+ <div class="empty-hint">
307
+ Select a scope and enter a query to recall relevant information
308
+ </div>
309
+ </div>
310
+ </section>
311
+
312
+ <!-- ===== Embeddings Tab ===== -->
313
+ <section
314
+ id="view-embeddings"
315
+ class="view"
316
+ role="tabpanel"
317
+ aria-labelledby="tab-embeddings"
318
+ hidden
319
+ >
320
+ <div class="view-header">
321
+ <h2><span class="material-symbols-outlined view-icon">neurology</span>Embeddings</h2>
322
+ </div>
323
+ <div id="embeddings-status" class="embeddings-dashboard">
324
+ <div class="embedding-stats-grid" id="embedding-stats-grid"></div>
325
+ </div>
326
+ <div id="embeddings-empty" class="empty-state">
327
+ <span class="material-symbols-outlined empty-icon">neurology</span>
328
+ <div class="empty-text">Vector index not initialized</div>
329
+ <div class="empty-hint">Embeddings are generated automatically on server startup</div>
330
+ </div>
331
+ </section>
332
+ </main>
333
+
334
+ <aside
335
+ id="side-panel"
336
+ class="side-panel"
337
+ role="complementary"
338
+ aria-label="Detail view"
339
+ hidden
340
+ >
341
+ <div class="panel-header">
342
+ <div class="panel-title" id="panel-title"></div>
343
+ <button id="panel-close" class="icon-btn" title="Close panel" aria-label="Close panel">
344
+ <span class="material-symbols-outlined">close</span>
345
+ </button>
346
+ </div>
347
+ <div class="panel-body" id="panel-body"></div>
348
+ </aside>
349
+ </div>
350
+
351
+ <div id="loading-overlay" class="loading-overlay" aria-label="Loading">
352
+ <div class="loading-spinner"></div>
353
+ <div class="loading-text">Connecting to agent-knowledge...</div>
354
+ </div>
355
+
356
+ <div id="toast-container" class="toast-container" aria-live="polite"></div>
357
+
358
+ <script src="https://cdn.jsdelivr.net/npm/marked@15/marked.min.js"></script>
359
+ <script src="https://cdn.jsdelivr.net/npm/dompurify@3/dist/purify.min.js"></script>
360
+ <link
361
+ rel="stylesheet"
362
+ href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github.min.css"
363
+ media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
364
+ />
365
+ <link
366
+ rel="stylesheet"
367
+ href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/styles/github-dark.min.css"
368
+ media="(prefers-color-scheme: dark)"
369
+ />
370
+ <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11/build/highlight.min.js"></script>
371
+ <script src="app.js"></script>
372
+ </body>
373
+ </html>