hoomanjs 1.28.2 → 1.28.3

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 (65) hide show
  1. package/README.md +8 -9
  2. package/dist/acp/sessions/config-options.js +1 -1
  3. package/dist/acp/sessions/config-options.js.map +1 -1
  4. package/dist/acp/utils/tool-kind.js +4 -4
  5. package/dist/chat/index.js +1 -1
  6. package/dist/chat/index.js.map +1 -1
  7. package/dist/configure/app.js +2 -56
  8. package/dist/configure/app.js.map +1 -1
  9. package/dist/core/agent/index.d.ts +1 -1
  10. package/dist/core/agent/index.js +14 -2
  11. package/dist/core/agent/index.js.map +1 -1
  12. package/dist/core/config.d.ts +10 -18
  13. package/dist/core/config.js +11 -31
  14. package/dist/core/config.js.map +1 -1
  15. package/dist/core/memory/index.d.ts +1 -0
  16. package/dist/core/memory/index.js +1 -0
  17. package/dist/core/memory/index.js.map +1 -1
  18. package/dist/core/memory/ltm/llama-embed.d.ts +28 -0
  19. package/dist/core/memory/ltm/llama-embed.js +204 -0
  20. package/dist/core/memory/ltm/llama-embed.js.map +1 -0
  21. package/dist/core/memory/ltm/sqlite.d.ts +12 -0
  22. package/dist/core/memory/ltm/sqlite.js +101 -0
  23. package/dist/core/memory/ltm/sqlite.js.map +1 -0
  24. package/dist/core/memory/ltm/store.d.ts +13 -6
  25. package/dist/core/memory/ltm/store.js +192 -92
  26. package/dist/core/memory/ltm/store.js.map +1 -1
  27. package/dist/core/memory/ltm/tools.js +4 -4
  28. package/dist/core/memory/ltm/utils.d.ts +9 -11
  29. package/dist/core/memory/ltm/utils.js +14 -15
  30. package/dist/core/memory/ltm/utils.js.map +1 -1
  31. package/dist/core/memory/wiki/index.d.ts +4 -0
  32. package/dist/core/memory/wiki/index.js +4 -0
  33. package/dist/core/memory/wiki/index.js.map +1 -0
  34. package/dist/core/memory/wiki/store.d.ts +37 -0
  35. package/dist/core/memory/wiki/store.js +317 -0
  36. package/dist/core/memory/wiki/store.js.map +1 -0
  37. package/dist/core/memory/wiki/tools.d.ts +11 -0
  38. package/dist/core/memory/wiki/tools.js +291 -0
  39. package/dist/core/memory/wiki/tools.js.map +1 -0
  40. package/dist/core/memory/wiki/types.d.ts +25 -0
  41. package/dist/core/memory/wiki/types.js +2 -0
  42. package/dist/core/memory/wiki/types.js.map +1 -0
  43. package/dist/core/prompts/static/ltm.md +4 -4
  44. package/dist/core/prompts/system.d.ts +4 -0
  45. package/dist/core/prompts/system.js +36 -4
  46. package/dist/core/prompts/system.js.map +1 -1
  47. package/dist/core/skills/built-in/hooman-config/SKILL.md +5 -17
  48. package/dist/core/state/tool-approvals.js +5 -5
  49. package/dist/core/tools/index.d.ts +1 -1
  50. package/dist/core/tools/index.js +1 -1
  51. package/dist/core/tools/index.js.map +1 -1
  52. package/dist/core/tools/plan.d.ts +2 -2
  53. package/dist/core/utils/paths.d.ts +6 -0
  54. package/dist/core/utils/paths.js +6 -0
  55. package/dist/core/utils/paths.js.map +1 -1
  56. package/dist/index.d.ts +4 -5
  57. package/dist/index.js +3 -4
  58. package/dist/index.js.map +1 -1
  59. package/package.json +12 -3
  60. package/dist/core/memory/ltm/embed.d.ts +0 -16
  61. package/dist/core/memory/ltm/embed.js +0 -49
  62. package/dist/core/memory/ltm/embed.js.map +0 -1
  63. package/dist/core/tools/wiki.d.ts +0 -11
  64. package/dist/core/tools/wiki.js +0 -560
  65. package/dist/core/tools/wiki.js.map +0 -1
@@ -1,560 +0,0 @@
1
- import fs from "node:fs/promises";
2
- import path from "node:path";
3
- import { createStore } from "@tobilu/qmd";
4
- import matter from "gray-matter";
5
- import { tool } from "@strands-agents/sdk";
6
- import { z } from "zod";
7
- import { wikiPath } from "../utils/paths.js";
8
- const PAGES_DIR = "pages";
9
- const INDEX_FILE = "index.md";
10
- const LOG_FILE = "log.md";
11
- const SCHEMA_FILE = "schema.md";
12
- const DEFAULT_SEARCH_LIMIT = 5;
13
- const MAX_SEARCH_LIMIT = 20;
14
- /** QMD collection name for wiki pages (fixed; not user-configurable). */
15
- const QMD_COLLECTION = "wiki";
16
- const QMD_DIR = ".qmd";
17
- const QMD_DB_FILE = "index.sqlite";
18
- function toJsonValue(value) {
19
- return JSON.parse(JSON.stringify(value));
20
- }
21
- function stripLeadingSlashes(value) {
22
- return value.replace(/^[/\\]+/, "");
23
- }
24
- function pageRelativePath(inputPath) {
25
- const normalized = stripLeadingSlashes(inputPath.trim().replace(/\\/g, "/"));
26
- if (!normalized) {
27
- throw new Error("Page path is required.");
28
- }
29
- const withPrefix = normalized.startsWith(`${PAGES_DIR}/`)
30
- ? normalized
31
- : `${PAGES_DIR}/${normalized}`;
32
- if (!withPrefix.toLowerCase().endsWith(".md")) {
33
- throw new Error("Page paths must end with .md");
34
- }
35
- return withPrefix;
36
- }
37
- function resolveWithinRoot(root, relativePath) {
38
- const abs = path.resolve(root, relativePath);
39
- const normalizedRoot = path.resolve(root);
40
- if (abs !== normalizedRoot &&
41
- !abs.startsWith(`${normalizedRoot}${path.sep}`) &&
42
- !(process.platform === "win32" &&
43
- abs.toLowerCase().startsWith(`${normalizedRoot.toLowerCase()}${path.sep}`))) {
44
- throw new Error(`Path escapes wiki root: ${relativePath}`);
45
- }
46
- return abs;
47
- }
48
- async function fileExists(filePath) {
49
- try {
50
- await fs.access(filePath);
51
- return true;
52
- }
53
- catch {
54
- return false;
55
- }
56
- }
57
- function firstSentence(value, maxLength = 180) {
58
- const clean = value.replace(/\s+/g, " ").trim();
59
- if (!clean) {
60
- return "";
61
- }
62
- return clean.length > maxLength
63
- ? `${clean.slice(0, maxLength - 1).trimEnd()}…`
64
- : clean;
65
- }
66
- function safeString(value) {
67
- return typeof value === "string" && value.trim().length > 0
68
- ? value.trim()
69
- : null;
70
- }
71
- function safeStringArray(value) {
72
- if (!Array.isArray(value)) {
73
- return [];
74
- }
75
- return value
76
- .filter((item) => typeof item === "string")
77
- .map((item) => item.trim())
78
- .filter((item) => item.length > 0);
79
- }
80
- function parseFrontmatter(content) {
81
- const parsed = matter(content);
82
- const data = parsed.data;
83
- return {
84
- frontmatter: {
85
- title: safeString(data.title) ?? undefined,
86
- summary: safeString(data.summary) ?? undefined,
87
- tags: safeStringArray(data.tags),
88
- related: safeStringArray(data.related),
89
- type: safeString(data.type) ?? undefined,
90
- created: safeString(data.created) ?? undefined,
91
- updated: safeString(data.updated) ?? undefined,
92
- },
93
- body: parsed.content.trim(),
94
- };
95
- }
96
- function wordCount(content) {
97
- const words = content.trim().match(/\S+/g);
98
- return words ? words.length : 0;
99
- }
100
- function normalizeRelatedPath(value) {
101
- let item = value.trim().replace(/\\/g, "/");
102
- item = item.replace(/^\[\[|\]\]$/g, "");
103
- item = stripLeadingSlashes(item);
104
- if (!item.endsWith(".md")) {
105
- item = `${item}.md`;
106
- }
107
- if (!item.startsWith(`${PAGES_DIR}/`)) {
108
- item = `${PAGES_DIR}/${item}`;
109
- }
110
- return item;
111
- }
112
- function deriveTitle(relativePath, frontmatter) {
113
- const fromFrontmatter = safeString(frontmatter.title);
114
- if (fromFrontmatter) {
115
- return fromFrontmatter;
116
- }
117
- return path.basename(relativePath, ".md").replace(/[-_]+/g, " ").trim();
118
- }
119
- function deriveSummary(frontmatter, body, fallback) {
120
- const fromFrontmatter = safeString(frontmatter.summary);
121
- if (fromFrontmatter) {
122
- return firstSentence(fromFrontmatter);
123
- }
124
- const bodySummary = firstSentence(body);
125
- return bodySummary || firstSentence(fallback) || "No summary available.";
126
- }
127
- async function readPageRecord(root, relativePath) {
128
- const absolutePath = resolveWithinRoot(root, relativePath);
129
- const content = await fs.readFile(absolutePath, "utf8");
130
- const stat = await fs.stat(absolutePath);
131
- const parsed = parseFrontmatter(content);
132
- const title = deriveTitle(relativePath, parsed.frontmatter);
133
- const summary = deriveSummary(parsed.frontmatter, parsed.body, title);
134
- return {
135
- path: relativePath.replace(/\\/g, "/"),
136
- absolutePath,
137
- title,
138
- summary,
139
- tags: parsed.frontmatter.tags ?? [],
140
- related: (parsed.frontmatter.related ?? []).map(normalizeRelatedPath),
141
- type: parsed.frontmatter.type ?? null,
142
- created: parsed.frontmatter.created ?? null,
143
- updated: parsed.frontmatter.updated ?? null,
144
- wordCount: wordCount(parsed.body),
145
- mtime: stat.mtime.toISOString(),
146
- content,
147
- body: parsed.body,
148
- frontmatter: parsed.frontmatter,
149
- };
150
- }
151
- async function listPagePaths(root) {
152
- const pagesRoot = resolveWithinRoot(root, PAGES_DIR);
153
- const out = [];
154
- const walk = async (dirPath) => {
155
- const entries = await fs.readdir(dirPath, { withFileTypes: true });
156
- for (const entry of entries) {
157
- const fullPath = path.join(dirPath, entry.name);
158
- if (entry.isDirectory()) {
159
- await walk(fullPath);
160
- continue;
161
- }
162
- if (!entry.isFile() || !entry.name.toLowerCase().endsWith(".md")) {
163
- continue;
164
- }
165
- const relFromRoot = path.relative(root, fullPath).replace(/\\/g, "/");
166
- out.push(relFromRoot);
167
- }
168
- };
169
- if (await fileExists(pagesRoot)) {
170
- await walk(pagesRoot);
171
- }
172
- out.sort((a, b) => a.localeCompare(b));
173
- return out;
174
- }
175
- async function listPages(root) {
176
- const paths = await listPagePaths(root);
177
- return Promise.all(paths.map((relativePath) => readPageRecord(root, relativePath)));
178
- }
179
- function buildIndexMarkdown(pages) {
180
- const sorted = [...pages].sort((a, b) => a.title.localeCompare(b.title));
181
- const lines = [
182
- "# Wiki Index",
183
- "",
184
- "<!-- Auto-generated by wiki_write_file. -->",
185
- "",
186
- `Updated: ${new Date().toISOString()}`,
187
- "",
188
- "## Pages",
189
- ];
190
- if (sorted.length === 0) {
191
- lines.push("- _No wiki pages yet._");
192
- return `${lines.join("\n")}\n`;
193
- }
194
- for (const page of sorted) {
195
- const tags = page.tags.length > 0 ? ` | tags: ${page.tags.join(", ")}` : "";
196
- lines.push(`- [${page.title}](${page.path}): ${page.summary}${tags}`);
197
- }
198
- return `${lines.join("\n")}\n`;
199
- }
200
- function buildLogEntry(operation, details) {
201
- const lines = [
202
- `## [${new Date().toISOString()}] ${operation}`,
203
- ...Object.entries(details).map(([key, value]) => `- ${key}: ${value}`),
204
- "",
205
- ];
206
- return `${lines.join("\n")}\n`;
207
- }
208
- const DEFAULT_SCHEMA = `# Wiki Schema
209
-
210
- This wiki is maintained by the agent through wiki tools.
211
-
212
- ## Structure
213
- - \`pages/\`: markdown knowledge pages
214
- - \`index.md\`: derived index (tool-managed)
215
- - \`log.md\`: append-only activity log (tool-managed)
216
-
217
- ## Page conventions
218
- - Use markdown files under \`pages/\`
219
- - Prefer concise titles and summaries
220
- - Add frontmatter when helpful (\`title\`, \`summary\`, \`tags\`, \`related\`, \`type\`)
221
- - Use relative links to other pages when appropriate
222
- `;
223
- async function ensureWikiLayout(root) {
224
- const pagesRoot = resolveWithinRoot(root, PAGES_DIR);
225
- await fs.mkdir(pagesRoot, { recursive: true });
226
- const indexPath = resolveWithinRoot(root, INDEX_FILE);
227
- const logPath = resolveWithinRoot(root, LOG_FILE);
228
- const schemaPath = resolveWithinRoot(root, SCHEMA_FILE);
229
- if (!(await fileExists(indexPath))) {
230
- await fs.writeFile(indexPath, buildIndexMarkdown([]), "utf8");
231
- }
232
- if (!(await fileExists(logPath))) {
233
- await fs.writeFile(logPath, "# Wiki Log\n\n", "utf8");
234
- }
235
- if (!(await fileExists(schemaPath))) {
236
- await fs.writeFile(schemaPath, `${DEFAULT_SCHEMA}\n`, "utf8");
237
- }
238
- }
239
- async function writeIndex(root, pages) {
240
- const indexPath = resolveWithinRoot(root, INDEX_FILE);
241
- await fs.writeFile(indexPath, buildIndexMarkdown(pages), "utf8");
242
- }
243
- async function appendLog(root, operation, details) {
244
- const logPath = resolveWithinRoot(root, LOG_FILE);
245
- await fs.appendFile(logPath, buildLogEntry(operation, details), "utf8");
246
- }
247
- function qmdDbPath() {
248
- return path.join(wikiPath(), QMD_DIR, QMD_DB_FILE);
249
- }
250
- function mapVectorChunkToMatch(row, root, index) {
251
- const wikiPath = path.relative(root, row.filepath).replace(/\\/g, "/");
252
- const distance = typeof row.score === "number" && Number.isFinite(row.score)
253
- ? Math.max(0, 1 - row.score)
254
- : null;
255
- const id = row.chunkPos != null
256
- ? `${row.docid}:${row.chunkPos}`
257
- : `${row.docid}:${index}`;
258
- return {
259
- id,
260
- path: wikiPath,
261
- title: row.title,
262
- summary: row.context,
263
- tags: "",
264
- distance,
265
- score: row.score,
266
- source: row.source,
267
- chunk_pos: row.chunkPos ?? null,
268
- content: row.body ?? "",
269
- };
270
- }
271
- export function createWikiTools(_config) {
272
- const root = wikiPath();
273
- let storePromise = null;
274
- const getStore = async () => {
275
- if (!storePromise) {
276
- storePromise = (async () => {
277
- await ensureWikiLayout(root);
278
- const dbPath = qmdDbPath();
279
- await fs.mkdir(path.dirname(dbPath), { recursive: true });
280
- const pagesRoot = resolveWithinRoot(root, PAGES_DIR);
281
- return createStore({
282
- dbPath,
283
- config: {
284
- collections: {
285
- [QMD_COLLECTION]: {
286
- path: pagesRoot,
287
- pattern: "**/*.md",
288
- },
289
- },
290
- },
291
- });
292
- })();
293
- }
294
- return storePromise;
295
- };
296
- const syncWikiSearchIndex = async () => {
297
- const store = await getStore();
298
- await store.update({ collections: [QMD_COLLECTION] });
299
- await store.embed({ force: false });
300
- };
301
- return [
302
- tool({
303
- name: "wiki_list_files",
304
- description: "List wiki files by type. Supports `page` and returns frontmatter-aware summaries.",
305
- inputSchema: z.object({
306
- type: z.enum(["page"]).default("page"),
307
- }),
308
- callback: async () => {
309
- await ensureWikiLayout(root);
310
- const pages = await listPages(root);
311
- return toJsonValue({
312
- root,
313
- type: "page",
314
- count: pages.length,
315
- files: pages.map((page) => ({
316
- path: page.path,
317
- title: page.title,
318
- summary: page.summary,
319
- tags: page.tags,
320
- related: page.related,
321
- type: page.type,
322
- created: page.created,
323
- updated: page.updated,
324
- word_count: page.wordCount,
325
- modified_at: page.mtime,
326
- })),
327
- });
328
- },
329
- }),
330
- tool({
331
- name: "wiki_read_file",
332
- description: "Read wiki files. Kinds: index, log, schema, or a specific page.",
333
- inputSchema: z.object({
334
- kind: z.enum(["index", "log", "schema", "page"]),
335
- path: z.string().optional(),
336
- }),
337
- callback: async (input) => {
338
- await ensureWikiLayout(root);
339
- if (input.kind === "page") {
340
- if (!input.path) {
341
- throw new Error("`path` is required when kind is `page`.");
342
- }
343
- const relativePath = pageRelativePath(input.path);
344
- const page = await readPageRecord(root, relativePath);
345
- return toJsonValue({
346
- root,
347
- kind: input.kind,
348
- path: page.path,
349
- frontmatter: page.frontmatter,
350
- title: page.title,
351
- summary: page.summary,
352
- word_count: page.wordCount,
353
- content: page.content,
354
- });
355
- }
356
- if (input.path) {
357
- throw new Error("`path` is only valid when kind is `page` and should be omitted otherwise.");
358
- }
359
- const target = input.kind === "index"
360
- ? INDEX_FILE
361
- : input.kind === "log"
362
- ? LOG_FILE
363
- : SCHEMA_FILE;
364
- const absolutePath = resolveWithinRoot(root, target);
365
- const content = await fs.readFile(absolutePath, "utf8");
366
- return toJsonValue({
367
- root,
368
- kind: input.kind,
369
- path: target,
370
- content,
371
- });
372
- },
373
- }),
374
- tool({
375
- name: "wiki_write_file",
376
- description: "Write wiki files. Page writes automatically maintain index, log, and search index.",
377
- inputSchema: z.object({
378
- kind: z.enum(["page", "schema"]),
379
- path: z.string().optional(),
380
- content: z.string().min(1),
381
- }),
382
- callback: async (input) => {
383
- await ensureWikiLayout(root);
384
- const content = input.content;
385
- if (input.kind === "schema") {
386
- if (input.path) {
387
- throw new Error("`path` is not valid when kind is `schema`.");
388
- }
389
- const schemaPath = resolveWithinRoot(root, SCHEMA_FILE);
390
- await fs.writeFile(schemaPath, content, "utf8");
391
- await appendLog(root, "schema_update", { path: SCHEMA_FILE });
392
- return toJsonValue({
393
- root,
394
- kind: input.kind,
395
- path: SCHEMA_FILE,
396
- bytes_written: Buffer.byteLength(content, "utf8"),
397
- index_updated: false,
398
- log_updated: true,
399
- search_index_updated: false,
400
- });
401
- }
402
- if (!input.path) {
403
- throw new Error("`path` is required when kind is `page`.");
404
- }
405
- const relativePath = pageRelativePath(input.path);
406
- const absolutePath = resolveWithinRoot(root, relativePath);
407
- const existed = await fileExists(absolutePath);
408
- await fs.mkdir(path.dirname(absolutePath), { recursive: true });
409
- await fs.writeFile(absolutePath, content, "utf8");
410
- const page = await readPageRecord(root, relativePath);
411
- await syncWikiSearchIndex();
412
- const pages = await listPages(root);
413
- await writeIndex(root, pages);
414
- await appendLog(root, existed ? "page_update" : "page_create", {
415
- path: page.path,
416
- title: page.title,
417
- });
418
- return toJsonValue({
419
- root,
420
- kind: input.kind,
421
- path: page.path,
422
- title: page.title,
423
- summary: page.summary,
424
- bytes_written: Buffer.byteLength(content, "utf8"),
425
- index_updated: true,
426
- log_updated: true,
427
- search_index_updated: true,
428
- });
429
- },
430
- }),
431
- tool({
432
- name: "wiki_knowledge_graph",
433
- description: "Build the wiki knowledge graph from page frontmatter links and shared tags.",
434
- inputSchema: z.object({}),
435
- callback: async () => {
436
- await ensureWikiLayout(root);
437
- const pages = await listPages(root);
438
- const nodes = pages.map((page) => ({
439
- path: page.path,
440
- title: page.title,
441
- tags: page.tags,
442
- type: page.type ?? "page",
443
- word_count: page.wordCount,
444
- }));
445
- const edges = [];
446
- const inbound = new Map();
447
- const relatedOut = new Map();
448
- for (const page of pages) {
449
- relatedOut.set(page.path, page.related.length);
450
- for (const related of page.related) {
451
- edges.push({
452
- source: page.path,
453
- target: related,
454
- type: "related",
455
- });
456
- inbound.set(related, (inbound.get(related) ?? 0) + 1);
457
- }
458
- }
459
- const tagClusters = new Map();
460
- for (const page of pages) {
461
- for (const tag of page.tags) {
462
- if (!tagClusters.has(tag)) {
463
- tagClusters.set(tag, []);
464
- }
465
- tagClusters.get(tag).push(page.path);
466
- }
467
- }
468
- for (const [tag, members] of tagClusters.entries()) {
469
- if (members.length < 2) {
470
- continue;
471
- }
472
- for (let i = 0; i < members.length; i += 1) {
473
- for (let j = i + 1; j < members.length; j += 1) {
474
- const source = members[i];
475
- const target = members[j];
476
- edges.push({ source, target, type: "shared-tag", tag });
477
- }
478
- }
479
- }
480
- const orphans = pages.filter((page) => {
481
- const incoming = inbound.get(page.path) ?? 0;
482
- const outgoing = relatedOut.get(page.path) ?? 0;
483
- return incoming === 0 && outgoing === 0;
484
- });
485
- return toJsonValue({
486
- nodes,
487
- edges,
488
- tag_clusters: Object.fromEntries(tagClusters.entries()),
489
- stats: {
490
- pages: pages.length,
491
- links: edges.length,
492
- orphans: orphans.length,
493
- },
494
- });
495
- },
496
- }),
497
- tool({
498
- name: "wiki_stats",
499
- description: "Return wiki health and usage statistics for page content.",
500
- inputSchema: z.object({}),
501
- callback: async () => {
502
- await ensureWikiLayout(root);
503
- const pages = await listPages(root);
504
- const totalWords = pages.reduce((sum, page) => sum + page.wordCount, 0);
505
- const tags = new Set();
506
- const types = {};
507
- const inbound = new Map();
508
- for (const page of pages) {
509
- for (const tag of page.tags) {
510
- tags.add(tag);
511
- }
512
- const type = page.type ?? "page";
513
- types[type] = (types[type] ?? 0) + 1;
514
- for (const related of page.related) {
515
- inbound.set(related, (inbound.get(related) ?? 0) + 1);
516
- }
517
- }
518
- const orphans = pages.filter((page) => (inbound.get(page.path) ?? 0) === 0 && page.related.length === 0);
519
- const lastActivity = pages
520
- .map((page) => page.mtime)
521
- .sort()
522
- .at(-1);
523
- return toJsonValue({
524
- pages: pages.length,
525
- links: pages.reduce((sum, page) => sum + page.related.length, 0),
526
- orphans: orphans.length,
527
- total_words: totalWords,
528
- avg_words_per_page: pages.length > 0 ? totalWords / pages.length : 0,
529
- tags: tags.size,
530
- types,
531
- last_activity: lastActivity ?? null,
532
- });
533
- },
534
- }),
535
- tool({
536
- name: "wiki_search",
537
- description: "Semantic search over wiki chunks (QMD index under $HOOMAN_HOME/wiki/.qmd/index.sqlite). Returns matching snippets; use wiki_read_file on paths you need in full.",
538
- inputSchema: z.object({
539
- query: z.string().min(1),
540
- k: z.number().int().min(1).max(MAX_SEARCH_LIMIT).optional(),
541
- }),
542
- callback: async (input) => {
543
- await ensureWikiLayout(root);
544
- const store = await getStore();
545
- const k = input.k ?? DEFAULT_SEARCH_LIMIT;
546
- const rows = await store.searchVector(input.query, {
547
- limit: k,
548
- collection: QMD_COLLECTION,
549
- });
550
- const matches = rows.map((row, index) => mapVectorChunkToMatch(row, root, index));
551
- return toJsonValue({
552
- query: input.query,
553
- count: matches.length,
554
- matches,
555
- });
556
- },
557
- }),
558
- ];
559
- }
560
- //# sourceMappingURL=wiki.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wiki.js","sourceRoot":"","sources":["../../../src/core/tools/wiki.ts"],"names":[],"mappings":"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"}