@ontos-ai/knowhere-sdk 2.2.0-beta.20260716073420 → 2.2.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.
package/README.md CHANGED
@@ -423,6 +423,7 @@ const grep = await client.knowledge.grepChunks({
423
423
  pattern: 'warranty',
424
424
  maxResults: 10,
425
425
  });
426
+ // grep.matches include pageNumbers when the source chunk has them.
426
427
 
427
428
  const serverSearch = await client.knowledge.search({
428
429
  query: 'battery warranty',
package/dist/index.d.mts CHANGED
@@ -1355,6 +1355,8 @@ interface KnowledgeGrepMatch {
1355
1355
  startOffset: number;
1356
1356
  endOffset: number;
1357
1357
  snippet: string;
1358
+ /** Copied from the source chunk when the indexed chunk has page numbers. */
1359
+ pageNumbers?: number[];
1358
1360
  }
1359
1361
  interface KnowledgeGrepResponse {
1360
1362
  document: LocalKnowledgeDocument;
package/dist/index.d.ts CHANGED
@@ -1355,6 +1355,8 @@ interface KnowledgeGrepMatch {
1355
1355
  startOffset: number;
1356
1356
  endOffset: number;
1357
1357
  snippet: string;
1358
+ /** Copied from the source chunk when the indexed chunk has page numbers. */
1359
+ pageNumbers?: number[];
1358
1360
  }
1359
1361
  interface KnowledgeGrepResponse {
1360
1362
  document: LocalKnowledgeDocument;
package/dist/index.js CHANGED
@@ -2614,17 +2614,7 @@ var Knowledge = class _Knowledge {
2614
2614
  scannedChunks += 1;
2615
2615
  const chunkMatches = matcher(chunk.content);
2616
2616
  for (const match of chunkMatches) {
2617
- matches.push({
2618
- position: chunk.position,
2619
- chunkId: chunk.chunkId,
2620
- chunkType: chunk.chunkType,
2621
- sectionPath: chunk.sectionPath,
2622
- sourceChunkPath: chunk.sourceChunkPath,
2623
- filePath: chunk.filePath,
2624
- startOffset: match.startOffset,
2625
- endOffset: match.endOffset,
2626
- snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars)
2627
- });
2617
+ matches.push(toGrepMatch(chunk, match, contextChars));
2628
2618
  if (matches.length >= maxResults) {
2629
2619
  return { document, matches, scannedChunks, truncated: true };
2630
2620
  }
@@ -2638,7 +2628,8 @@ var Knowledge = class _Knowledge {
2638
2628
  query: params.query,
2639
2629
  namespace: params.namespace,
2640
2630
  topK: params.topK,
2641
- useAgentic: params.useAgentic ?? false
2631
+ // Omit when undefined so the API default (map-nav) applies; false → classic.
2632
+ useAgentic: params.useAgentic
2642
2633
  });
2643
2634
  const documentByServerId = new Map(
2644
2635
  localDocuments.filter((document) => document.documentId).map((document) => [document.documentId, document])
@@ -2855,31 +2846,17 @@ var Knowledge = class _Knowledge {
2855
2846
  if (response.pagination.page === startPage && cursor?.nextChunkIndex !== void 0 && chunkIndex < cursor.nextChunkIndex) {
2856
2847
  continue;
2857
2848
  }
2858
- if (!matchesGrepScope(toIndexedRemoteChunk(chunk), params)) {
2849
+ const indexed = toIndexedRemoteChunk(chunk);
2850
+ if (!matchesGrepScope(indexed, params)) {
2859
2851
  continue;
2860
2852
  }
2861
2853
  scannedChunks += 1;
2862
- const chunkMatches = matcher(chunk.content ?? "");
2854
+ const chunkMatches = matcher(indexed.content);
2863
2855
  for (const [matchIndex, match] of chunkMatches.entries()) {
2864
2856
  if (response.pagination.page === startPage && cursor?.nextChunkIndex === chunkIndex && cursor.nextMatchIndex !== void 0 && matchIndex < cursor.nextMatchIndex) {
2865
2857
  continue;
2866
2858
  }
2867
- matches.push({
2868
- position: toChunkPosition(chunk),
2869
- chunkId: chunk.chunkId,
2870
- chunkType: chunk.chunkType,
2871
- sectionPath: chunk.sectionPath ?? "",
2872
- sourceChunkPath: chunk.sourceChunkPath ?? chunk.sectionPath ?? "",
2873
- filePath: chunk.filePath ?? void 0,
2874
- startOffset: match.startOffset,
2875
- endOffset: match.endOffset,
2876
- snippet: buildSnippet(
2877
- chunk.content ?? "",
2878
- match.startOffset,
2879
- match.endOffset,
2880
- contextChars
2881
- )
2882
- });
2859
+ matches.push(toGrepMatch(indexed, match, contextChars));
2883
2860
  if (matches.length >= maxResults) {
2884
2861
  const continuationCursor = createGrepContinuationCursor({
2885
2862
  documentId,
@@ -3043,17 +3020,7 @@ var Knowledge = class _Knowledge {
3043
3020
  for (const chunk of scopedChunks) {
3044
3021
  scannedChunks += 1;
3045
3022
  for (const match of matcher(chunk.content)) {
3046
- matches.push({
3047
- position: chunk.position,
3048
- chunkId: chunk.chunkId,
3049
- chunkType: chunk.chunkType,
3050
- sectionPath: chunk.sectionPath,
3051
- sourceChunkPath: chunk.sourceChunkPath,
3052
- filePath: chunk.filePath,
3053
- startOffset: match.startOffset,
3054
- endOffset: match.endOffset,
3055
- snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars)
3056
- });
3023
+ matches.push(toGrepMatch(chunk, match, contextChars));
3057
3024
  if (matches.length >= maxResults) {
3058
3025
  return {
3059
3026
  document: createStoredKnowledgeDocument({
@@ -4083,6 +4050,20 @@ function toReadChunk(chunk) {
4083
4050
  metadata: chunk.metadata
4084
4051
  };
4085
4052
  }
4053
+ function toGrepMatch(chunk, match, contextChars) {
4054
+ return {
4055
+ position: chunk.position,
4056
+ chunkId: chunk.chunkId,
4057
+ chunkType: chunk.chunkType,
4058
+ sectionPath: chunk.sectionPath,
4059
+ sourceChunkPath: chunk.sourceChunkPath,
4060
+ filePath: chunk.filePath,
4061
+ startOffset: match.startOffset,
4062
+ endOffset: match.endOffset,
4063
+ snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars),
4064
+ ...chunk.pageNumbers && chunk.pageNumbers.length > 0 ? { pageNumbers: [...chunk.pageNumbers] } : {}
4065
+ };
4066
+ }
4086
4067
  function matchesGrepScope(chunk, params) {
4087
4068
  if (params.chunkType && chunk.chunkType !== params.chunkType) {
4088
4069
  return false;
package/dist/index.mjs CHANGED
@@ -2549,17 +2549,7 @@ var Knowledge = class _Knowledge {
2549
2549
  scannedChunks += 1;
2550
2550
  const chunkMatches = matcher(chunk.content);
2551
2551
  for (const match of chunkMatches) {
2552
- matches.push({
2553
- position: chunk.position,
2554
- chunkId: chunk.chunkId,
2555
- chunkType: chunk.chunkType,
2556
- sectionPath: chunk.sectionPath,
2557
- sourceChunkPath: chunk.sourceChunkPath,
2558
- filePath: chunk.filePath,
2559
- startOffset: match.startOffset,
2560
- endOffset: match.endOffset,
2561
- snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars)
2562
- });
2552
+ matches.push(toGrepMatch(chunk, match, contextChars));
2563
2553
  if (matches.length >= maxResults) {
2564
2554
  return { document, matches, scannedChunks, truncated: true };
2565
2555
  }
@@ -2573,7 +2563,8 @@ var Knowledge = class _Knowledge {
2573
2563
  query: params.query,
2574
2564
  namespace: params.namespace,
2575
2565
  topK: params.topK,
2576
- useAgentic: params.useAgentic ?? false
2566
+ // Omit when undefined so the API default (map-nav) applies; false → classic.
2567
+ useAgentic: params.useAgentic
2577
2568
  });
2578
2569
  const documentByServerId = new Map(
2579
2570
  localDocuments.filter((document) => document.documentId).map((document) => [document.documentId, document])
@@ -2790,31 +2781,17 @@ var Knowledge = class _Knowledge {
2790
2781
  if (response.pagination.page === startPage && cursor?.nextChunkIndex !== void 0 && chunkIndex < cursor.nextChunkIndex) {
2791
2782
  continue;
2792
2783
  }
2793
- if (!matchesGrepScope(toIndexedRemoteChunk(chunk), params)) {
2784
+ const indexed = toIndexedRemoteChunk(chunk);
2785
+ if (!matchesGrepScope(indexed, params)) {
2794
2786
  continue;
2795
2787
  }
2796
2788
  scannedChunks += 1;
2797
- const chunkMatches = matcher(chunk.content ?? "");
2789
+ const chunkMatches = matcher(indexed.content);
2798
2790
  for (const [matchIndex, match] of chunkMatches.entries()) {
2799
2791
  if (response.pagination.page === startPage && cursor?.nextChunkIndex === chunkIndex && cursor.nextMatchIndex !== void 0 && matchIndex < cursor.nextMatchIndex) {
2800
2792
  continue;
2801
2793
  }
2802
- matches.push({
2803
- position: toChunkPosition(chunk),
2804
- chunkId: chunk.chunkId,
2805
- chunkType: chunk.chunkType,
2806
- sectionPath: chunk.sectionPath ?? "",
2807
- sourceChunkPath: chunk.sourceChunkPath ?? chunk.sectionPath ?? "",
2808
- filePath: chunk.filePath ?? void 0,
2809
- startOffset: match.startOffset,
2810
- endOffset: match.endOffset,
2811
- snippet: buildSnippet(
2812
- chunk.content ?? "",
2813
- match.startOffset,
2814
- match.endOffset,
2815
- contextChars
2816
- )
2817
- });
2794
+ matches.push(toGrepMatch(indexed, match, contextChars));
2818
2795
  if (matches.length >= maxResults) {
2819
2796
  const continuationCursor = createGrepContinuationCursor({
2820
2797
  documentId,
@@ -2978,17 +2955,7 @@ var Knowledge = class _Knowledge {
2978
2955
  for (const chunk of scopedChunks) {
2979
2956
  scannedChunks += 1;
2980
2957
  for (const match of matcher(chunk.content)) {
2981
- matches.push({
2982
- position: chunk.position,
2983
- chunkId: chunk.chunkId,
2984
- chunkType: chunk.chunkType,
2985
- sectionPath: chunk.sectionPath,
2986
- sourceChunkPath: chunk.sourceChunkPath,
2987
- filePath: chunk.filePath,
2988
- startOffset: match.startOffset,
2989
- endOffset: match.endOffset,
2990
- snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars)
2991
- });
2958
+ matches.push(toGrepMatch(chunk, match, contextChars));
2992
2959
  if (matches.length >= maxResults) {
2993
2960
  return {
2994
2961
  document: createStoredKnowledgeDocument({
@@ -4018,6 +3985,20 @@ function toReadChunk(chunk) {
4018
3985
  metadata: chunk.metadata
4019
3986
  };
4020
3987
  }
3988
+ function toGrepMatch(chunk, match, contextChars) {
3989
+ return {
3990
+ position: chunk.position,
3991
+ chunkId: chunk.chunkId,
3992
+ chunkType: chunk.chunkType,
3993
+ sectionPath: chunk.sectionPath,
3994
+ sourceChunkPath: chunk.sourceChunkPath,
3995
+ filePath: chunk.filePath,
3996
+ startOffset: match.startOffset,
3997
+ endOffset: match.endOffset,
3998
+ snippet: buildSnippet(chunk.content, match.startOffset, match.endOffset, contextChars),
3999
+ ...chunk.pageNumbers && chunk.pageNumbers.length > 0 ? { pageNumbers: [...chunk.pageNumbers] } : {}
4000
+ };
4001
+ }
4021
4002
  function matchesGrepScope(chunk, params) {
4022
4003
  if (params.chunkType && chunk.chunkType !== params.chunkType) {
4023
4004
  return false;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ontos-ai/knowhere-sdk",
3
- "version": "2.2.0-beta.20260716073420",
3
+ "version": "2.2.0",
4
4
  "description": "Official Node.js SDK for Knowhere document parsing API",
5
5
  "keywords": [
6
6
  "knowhere",