@adonis-agora/agent 0.36.0 → 0.37.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 (70) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/NOTICE +31 -0
  3. package/README.md +5 -5
  4. package/dist/configure.d.ts.map +1 -1
  5. package/dist/configure.js +1 -0
  6. package/dist/configure.js.map +1 -1
  7. package/dist/src/index.d.ts +1 -1
  8. package/dist/src/index.js +1 -1
  9. package/dist/src/rag/index.d.ts +2 -1
  10. package/dist/src/rag/index.d.ts.map +1 -1
  11. package/dist/src/rag/index.js +2 -1
  12. package/dist/src/rag/index.js.map +1 -1
  13. package/dist/src/rag/openai-embeddings.d.ts +20 -2
  14. package/dist/src/rag/openai-embeddings.d.ts.map +1 -1
  15. package/dist/src/rag/openai-embeddings.js +107 -42
  16. package/dist/src/rag/openai-embeddings.js.map +1 -1
  17. package/dist/src/rag/pg-vector-store.d.ts +27 -0
  18. package/dist/src/rag/pg-vector-store.d.ts.map +1 -1
  19. package/dist/src/rag/pg-vector-store.js +2 -2
  20. package/dist/src/rag/pg-vector-store.js.map +1 -1
  21. package/dist/src/rag/tree/build.d.ts +96 -0
  22. package/dist/src/rag/tree/build.d.ts.map +1 -0
  23. package/dist/src/rag/tree/build.js +659 -0
  24. package/dist/src/rag/tree/build.js.map +1 -0
  25. package/dist/src/rag/tree/headings.d.ts +29 -0
  26. package/dist/src/rag/tree/headings.d.ts.map +1 -0
  27. package/dist/src/rag/tree/headings.js +227 -0
  28. package/dist/src/rag/tree/headings.js.map +1 -0
  29. package/dist/src/rag/tree/index-document.d.ts +33 -0
  30. package/dist/src/rag/tree/index-document.d.ts.map +1 -0
  31. package/dist/src/rag/tree/index-document.js +36 -0
  32. package/dist/src/rag/tree/index-document.js.map +1 -0
  33. package/dist/src/rag/tree/index.d.ts +13 -0
  34. package/dist/src/rag/tree/index.d.ts.map +1 -0
  35. package/dist/src/rag/tree/index.js +12 -0
  36. package/dist/src/rag/tree/index.js.map +1 -0
  37. package/dist/src/rag/tree/keyword-tree-llm.d.ts +15 -0
  38. package/dist/src/rag/tree/keyword-tree-llm.d.ts.map +1 -0
  39. package/dist/src/rag/tree/keyword-tree-llm.js +105 -0
  40. package/dist/src/rag/tree/keyword-tree-llm.js.map +1 -0
  41. package/dist/src/rag/tree/llm.d.ts +179 -0
  42. package/dist/src/rag/tree/llm.d.ts.map +1 -0
  43. package/dist/src/rag/tree/llm.js +264 -0
  44. package/dist/src/rag/tree/llm.js.map +1 -0
  45. package/dist/src/rag/tree/navigate-tool.d.ts +58 -0
  46. package/dist/src/rag/tree/navigate-tool.d.ts.map +1 -0
  47. package/dist/src/rag/tree/navigate-tool.js +95 -0
  48. package/dist/src/rag/tree/navigate-tool.js.map +1 -0
  49. package/dist/src/rag/tree/navigate.d.ts +137 -0
  50. package/dist/src/rag/tree/navigate.d.ts.map +1 -0
  51. package/dist/src/rag/tree/navigate.js +404 -0
  52. package/dist/src/rag/tree/navigate.js.map +1 -0
  53. package/dist/src/rag/tree/pg-tree-store.d.ts +45 -0
  54. package/dist/src/rag/tree/pg-tree-store.d.ts.map +1 -0
  55. package/dist/src/rag/tree/pg-tree-store.js +205 -0
  56. package/dist/src/rag/tree/pg-tree-store.js.map +1 -0
  57. package/dist/src/rag/tree/store.d.ts +57 -0
  58. package/dist/src/rag/tree/store.d.ts.map +1 -0
  59. package/dist/src/rag/tree/store.js +66 -0
  60. package/dist/src/rag/tree/store.js.map +1 -0
  61. package/dist/src/rag/tree/two-stage.d.ts +54 -0
  62. package/dist/src/rag/tree/two-stage.d.ts.map +1 -0
  63. package/dist/src/rag/tree/two-stage.js +92 -0
  64. package/dist/src/rag/tree/two-stage.js.map +1 -0
  65. package/dist/src/rag/tree/types.d.ts +135 -0
  66. package/dist/src/rag/tree/types.d.ts.map +1 -0
  67. package/dist/src/rag/tree/types.js +21 -0
  68. package/dist/src/rag/tree/types.js.map +1 -0
  69. package/dist/stubs/database/migrations/create_agent_rag_trees.stub +40 -0
  70. package/package.json +2 -1
@@ -0,0 +1,96 @@
1
+ import { type DetectedHeading } from './headings.js';
2
+ import { type TreeBudget, type TreeLlm } from './llm.js';
3
+ import type { DocumentTree, DocumentTreeInput, TreeUnit } from './types.js';
4
+ export interface BuildDocumentTreeOptions {
5
+ documentId: string;
6
+ /**
7
+ * The model for summaries, the document description, and structuring documents with no usable
8
+ * outline. Omit it and the build is LLM-free: outline/headings or page groups, with the start of
9
+ * each section's text as its summary.
10
+ */
11
+ llm?: TreeLlm;
12
+ /** Deepest level kept (1 = top-level sections only). Deeper headings become `keyItems`. Default 4. */
13
+ maxDepth?: number;
14
+ /**
15
+ * Hard per-document limits for every LLM call of the build. Defaults: 60 calls, 400k input
16
+ * tokens, 40k output tokens, 5 minutes overall, 60 s per call. Running out is not an error: the
17
+ * structure step falls back to page groups, and remaining summaries use the section's own text.
18
+ */
19
+ budget?: TreeBudget;
20
+ /** Summarize nodes with the LLM. Default `true` when `llm` is set. */
21
+ summaries?: boolean;
22
+ /** A node whose text is shorter than this is its own summary (no LLM call). Default 600 chars. */
23
+ summaryMinChars?: number;
24
+ /** Text of a node sent to the summarizer, at most. Default 8 000 chars. */
25
+ summaryInputChars?: number;
26
+ /** Concurrent summary calls. Default 4. */
27
+ concurrency?: number;
28
+ /** Write a one-paragraph description of the document. Default `true` when `llm` is set. */
29
+ describe?: boolean;
30
+ /**
31
+ * Find headings in the text (markdown headers, `PART 52`, `Item 7.`, `3.2 Scope`…) when there is
32
+ * no outline and sections carry no titles. `'markdown'` only trusts markdown headers. Default `true`.
33
+ */
34
+ detectHeadings?: boolean | 'markdown';
35
+ /** At least this many headings for a detected structure to be used. Default 3. */
36
+ minHeadings?: number;
37
+ /** Ask the LLM for the structure when nothing deterministic worked. Default `true` when `llm` is set. */
38
+ llmStructure?: boolean;
39
+ /** Characters of text per structuring call. Default 24 000. */
40
+ structureWindowChars?: number;
41
+ /**
42
+ * Structuring calls allowed. A document needing more windows than this is not sent at all —
43
+ * it goes straight to page groups instead of spending a budget it cannot finish. Default 12.
44
+ */
45
+ maxStructureCalls?: number;
46
+ /** Units per page-group node (flat trees, and splitting long leaves). Default 5. */
47
+ groupSize?: number;
48
+ /** A leaf spanning more units than this is split into page groups. Default 10. */
49
+ maxLeafUnits?: number;
50
+ /** Children per level before page groups are grouped again (flat trees). Default 12. */
51
+ maxChildren?: number;
52
+ /** The previous tree of this document: an unchanged input returns it as is; changed nodes are re-summarized, the rest reuse their summaries. */
53
+ previous?: DocumentTree;
54
+ metadata?: Record<string, unknown>;
55
+ source?: string;
56
+ signal?: AbortSignal;
57
+ }
58
+ export interface BuiltDocumentTree {
59
+ tree: DocumentTree;
60
+ /** The units the node ranges index — persist them with the tree ({@link import('./store.js').DocumentTreeStore.put}). */
61
+ units: TreeUnit[];
62
+ /** `true` when `previous` had the same fingerprint and was returned without building. */
63
+ unchanged: boolean;
64
+ }
65
+ /** Turn the input into units (pages or sections) plus any headings it declares. */
66
+ export declare function toUnits(input: DocumentTreeInput): {
67
+ units: TreeUnit[];
68
+ declared: DetectedHeading[] | undefined;
69
+ kind: 'pages' | 'sections';
70
+ };
71
+ /** The text a node spans (children included), joined in reading order. */
72
+ export declare function spanText(units: readonly TreeUnit[], start: number, end: number): string;
73
+ /** Run `work` over `items` with at most `limit` in flight. */
74
+ export declare function mapLimit<T, R>(items: readonly T[], limit: number, work: (item: T, index: number) => Promise<R>): Promise<R[]>;
75
+ /**
76
+ * Build a document's navigation tree: a hierarchical table of contents whose nodes carry a title,
77
+ * the page (or section) range they span, and a summary.
78
+ *
79
+ * Structure, cheapest first, never looping:
80
+ *
81
+ * 1. the `outline` the input declares (PDF bookmarks);
82
+ * 2. section titles/levels (`sections` input), or headings detected in the text;
83
+ * 3. the LLM, window by window (only when a document has no usable outline, and only if every
84
+ * window fits `maxStructureCalls` and the budget up front);
85
+ * 4. page groups — always works; the fallback for any failure above.
86
+ *
87
+ * Then summaries: top levels first (they matter most for navigation), each node's text sent once,
88
+ * within the budget; what the budget leaves unsummarized gets the start of its own text. With a
89
+ * `previous` tree, an unchanged input is returned as is (zero calls), and nodes whose title and text
90
+ * are unchanged keep their summary.
91
+ *
92
+ * The result is deterministic for a deterministic model: node ids are depth-first positions, and
93
+ * nothing depends on timing except which summaries a timed-out build got to.
94
+ */
95
+ export declare function buildDocumentTree(input: DocumentTreeInput, options: BuildDocumentTreeOptions): Promise<BuiltDocumentTree>;
96
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../src/rag/tree/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAgC,MAAM,eAAe,CAAC;AACnF,OAAO,EAIL,KAAK,UAAU,EAEf,KAAK,OAAO,EACb,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EAGjB,QAAQ,EACT,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,sEAAsE;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kGAAkG;IAClG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACtC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gJAAgJ;IAChJ,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,YAAY,CAAC;IACnB,yHAAyH;IACzH,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,yFAAyF;IACzF,SAAS,EAAE,OAAO,CAAC;CACpB;AAeD,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG;IACjD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,QAAQ,EAAE,eAAe,EAAE,GAAG,SAAS,CAAC;IACxC,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;CAC5B,CAiCA;AAyOD,0EAA0E;AAC1E,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAMvF;AAyID,8DAA8D;AAC9D,wBAAsB,QAAQ,CAAC,CAAC,EAAE,CAAC,EACjC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAC3C,OAAO,CAAC,CAAC,EAAE,CAAC,CAWd;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CA2S5B"}