fawn-memory 0.0.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 (126) hide show
  1. package/README.md +118 -0
  2. package/dist/index.d.ts +14 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +183 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/knowpro/answerContextSchema.d.ts +20 -0
  7. package/dist/knowpro/answerContextSchema.d.ts.map +1 -0
  8. package/dist/knowpro/answerContextSchema.js +4 -0
  9. package/dist/knowpro/answerContextSchema.js.map +1 -0
  10. package/dist/knowpro/answerResponseSchema.d.ts +7 -0
  11. package/dist/knowpro/answerResponseSchema.d.ts.map +1 -0
  12. package/dist/knowpro/answerResponseSchema.js +4 -0
  13. package/dist/knowpro/answerResponseSchema.js.map +1 -0
  14. package/dist/knowpro/answerTranslator.d.ts +5 -0
  15. package/dist/knowpro/answerTranslator.d.ts.map +1 -0
  16. package/dist/knowpro/answerTranslator.js +10 -0
  17. package/dist/knowpro/answerTranslator.js.map +1 -0
  18. package/dist/knowpro/collections.d.ts +14 -0
  19. package/dist/knowpro/collections.d.ts.map +1 -0
  20. package/dist/knowpro/collections.js +52 -0
  21. package/dist/knowpro/collections.js.map +1 -0
  22. package/dist/knowpro/conversation.d.ts +63 -0
  23. package/dist/knowpro/conversation.d.ts.map +1 -0
  24. package/dist/knowpro/conversation.js +247 -0
  25. package/dist/knowpro/conversation.js.map +1 -0
  26. package/dist/knowpro/dateTimeSchema.d.ts +19 -0
  27. package/dist/knowpro/dateTimeSchema.d.ts.map +1 -0
  28. package/dist/knowpro/dateTimeSchema.js +4 -0
  29. package/dist/knowpro/dateTimeSchema.js.map +1 -0
  30. package/dist/knowpro/entities.d.ts +9 -0
  31. package/dist/knowpro/entities.d.ts.map +1 -0
  32. package/dist/knowpro/entities.js +63 -0
  33. package/dist/knowpro/entities.js.map +1 -0
  34. package/dist/knowpro/interfaces.d.ts +637 -0
  35. package/dist/knowpro/interfaces.d.ts.map +1 -0
  36. package/dist/knowpro/interfaces.js +4 -0
  37. package/dist/knowpro/interfaces.js.map +1 -0
  38. package/dist/knowpro/knowledge.d.ts +19 -0
  39. package/dist/knowpro/knowledge.d.ts.map +1 -0
  40. package/dist/knowpro/knowledge.js +97 -0
  41. package/dist/knowpro/knowledge.js.map +1 -0
  42. package/dist/knowpro/knowledgeSchema.d.ts +39 -0
  43. package/dist/knowpro/knowledgeSchema.d.ts.map +1 -0
  44. package/dist/knowpro/knowledgeSchema.js +2 -0
  45. package/dist/knowpro/knowledgeSchema.js.map +1 -0
  46. package/dist/knowpro/llmProvider.d.ts +17 -0
  47. package/dist/knowpro/llmProvider.d.ts.map +1 -0
  48. package/dist/knowpro/llmProvider.js +105 -0
  49. package/dist/knowpro/llmProvider.js.map +1 -0
  50. package/dist/knowpro/relatedTermsSchema.d.ts +24 -0
  51. package/dist/knowpro/relatedTermsSchema.d.ts.map +1 -0
  52. package/dist/knowpro/relatedTermsSchema.js +6 -0
  53. package/dist/knowpro/relatedTermsSchema.js.map +1 -0
  54. package/dist/knowpro/schema.d.ts +24 -0
  55. package/dist/knowpro/schema.d.ts.map +1 -0
  56. package/dist/knowpro/schema.js +55 -0
  57. package/dist/knowpro/schema.js.map +1 -0
  58. package/dist/knowpro/search.d.ts +8 -0
  59. package/dist/knowpro/search.d.ts.map +1 -0
  60. package/dist/knowpro/search.js +448 -0
  61. package/dist/knowpro/search.js.map +1 -0
  62. package/dist/knowpro/searchQuerySchema.d.ts +40 -0
  63. package/dist/knowpro/searchQuerySchema.d.ts.map +1 -0
  64. package/dist/knowpro/searchQuerySchema.js +4 -0
  65. package/dist/knowpro/searchQuerySchema.js.map +1 -0
  66. package/dist/knowpro/searchQueryTranslator.d.ts +33 -0
  67. package/dist/knowpro/searchQueryTranslator.d.ts.map +1 -0
  68. package/dist/knowpro/searchQueryTranslator.js +47 -0
  69. package/dist/knowpro/searchQueryTranslator.js.map +1 -0
  70. package/dist/knowpro/semanticRef.d.ts +4 -0
  71. package/dist/knowpro/semanticRef.d.ts.map +1 -0
  72. package/dist/knowpro/semanticRef.js +62 -0
  73. package/dist/knowpro/semanticRef.js.map +1 -0
  74. package/dist/knowpro/semanticRefIndex.d.ts +48 -0
  75. package/dist/knowpro/semanticRefIndex.d.ts.map +1 -0
  76. package/dist/knowpro/semanticRefIndex.js +388 -0
  77. package/dist/knowpro/semanticRefIndex.js.map +1 -0
  78. package/dist/knowpro/storageProvider.d.ts +7 -0
  79. package/dist/knowpro/storageProvider.d.ts.map +1 -0
  80. package/dist/knowpro/storageProvider.js +61 -0
  81. package/dist/knowpro/storageProvider.js.map +1 -0
  82. package/dist/knowpro/timestampIndex.d.ts +43 -0
  83. package/dist/knowpro/timestampIndex.d.ts.map +1 -0
  84. package/dist/knowpro/timestampIndex.js +324 -0
  85. package/dist/knowpro/timestampIndex.js.map +1 -0
  86. package/dist/rag/chunking.d.ts +6 -0
  87. package/dist/rag/chunking.d.ts.map +1 -0
  88. package/dist/rag/chunking.js +83 -0
  89. package/dist/rag/chunking.js.map +1 -0
  90. package/dist/rag/embeddingProvider.d.ts +34 -0
  91. package/dist/rag/embeddingProvider.d.ts.map +1 -0
  92. package/dist/rag/embeddingProvider.js +95 -0
  93. package/dist/rag/embeddingProvider.js.map +1 -0
  94. package/dist/rag/index.d.ts +8 -0
  95. package/dist/rag/index.d.ts.map +1 -0
  96. package/dist/rag/index.js +7 -0
  97. package/dist/rag/index.js.map +1 -0
  98. package/dist/rag/knowproAdapter.d.ts +44 -0
  99. package/dist/rag/knowproAdapter.d.ts.map +1 -0
  100. package/dist/rag/knowproAdapter.js +66 -0
  101. package/dist/rag/knowproAdapter.js.map +1 -0
  102. package/dist/rag/ragIndex.d.ts +101 -0
  103. package/dist/rag/ragIndex.d.ts.map +1 -0
  104. package/dist/rag/ragIndex.js +305 -0
  105. package/dist/rag/ragIndex.js.map +1 -0
  106. package/dist/rag/similarity.d.ts +15 -0
  107. package/dist/rag/similarity.d.ts.map +1 -0
  108. package/dist/rag/similarity.js +47 -0
  109. package/dist/rag/similarity.js.map +1 -0
  110. package/dist/rag/types.d.ts +61 -0
  111. package/dist/rag/types.d.ts.map +1 -0
  112. package/dist/rag/types.js +2 -0
  113. package/dist/rag/types.js.map +1 -0
  114. package/dist/rag/vectorIndex.d.ts +102 -0
  115. package/dist/rag/vectorIndex.d.ts.map +1 -0
  116. package/dist/rag/vectorIndex.js +236 -0
  117. package/dist/rag/vectorIndex.js.map +1 -0
  118. package/dist/utils/async.d.ts +25 -0
  119. package/dist/utils/async.d.ts.map +1 -0
  120. package/dist/utils/async.js +55 -0
  121. package/dist/utils/async.js.map +1 -0
  122. package/dist/utils/string.d.ts +3 -0
  123. package/dist/utils/string.d.ts.map +1 -0
  124. package/dist/utils/string.js +15 -0
  125. package/dist/utils/string.js.map +1 -0
  126. package/package.json +48 -0
@@ -0,0 +1,62 @@
1
+ export function populateSemanticRef(semanticRefs, knowledgeResponse, baseSemanticRefOrdinal, messageOrdinal) {
2
+ let semanticRefOrdinalModifier = baseSemanticRefOrdinal;
3
+ // create semantic refs from the extracted knowledge here
4
+ try {
5
+ knowledgeResponse.entities.forEach((entity) => {
6
+ const newSemanticRef = {
7
+ semanticRefOrdinal: semanticRefOrdinalModifier,
8
+ knowledgeType: "entity",
9
+ range: {
10
+ start: {
11
+ messageOrdinal
12
+ },
13
+ end: {
14
+ messageOrdinal
15
+ }
16
+ },
17
+ knowledge: entity
18
+ };
19
+ semanticRefs.append(newSemanticRef);
20
+ semanticRefOrdinalModifier += 1;
21
+ });
22
+ knowledgeResponse.actions.forEach((action) => {
23
+ const newSemanticRef = {
24
+ semanticRefOrdinal: semanticRefOrdinalModifier,
25
+ knowledgeType: "action",
26
+ knowledge: action,
27
+ range: {
28
+ start: {
29
+ messageOrdinal
30
+ },
31
+ end: {
32
+ messageOrdinal
33
+ }
34
+ },
35
+ };
36
+ semanticRefs.append(newSemanticRef);
37
+ semanticRefOrdinalModifier += 1;
38
+ });
39
+ knowledgeResponse.topics.forEach((topic) => {
40
+ const newSemanticRef = {
41
+ semanticRefOrdinal: semanticRefOrdinalModifier,
42
+ knowledgeType: "topic",
43
+ knowledge: { text: topic },
44
+ range: {
45
+ start: {
46
+ messageOrdinal
47
+ },
48
+ end: {
49
+ messageOrdinal
50
+ }
51
+ },
52
+ };
53
+ semanticRefs.append(newSemanticRef);
54
+ semanticRefOrdinalModifier += 1;
55
+ });
56
+ }
57
+ catch (error) {
58
+ console.log(error);
59
+ }
60
+ return semanticRefs;
61
+ }
62
+ //# sourceMappingURL=semanticRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticRef.js","sourceRoot":"","sources":["../../src/knowpro/semanticRef.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,mBAAmB,CAC/B,YAAoC,EACpC,iBAAoC,EACpC,sBAA8B,EAC9B,cAAsB;IAEtB,IAAI,0BAA0B,GAAG,sBAAsB,CAAC;IACxD,yDAAyD;IACzD,IAAI,CAAC;QAED,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC1C,MAAM,cAAc,GAAgB;gBAChC,kBAAkB,EAAE,0BAA0B;gBAC9C,aAAa,EAAE,QAAQ;gBACvB,KAAK,EAAE;oBACH,KAAK,EAAE;wBACH,cAAc;qBACjB;oBACD,GAAG,EAAE;wBACD,cAAc;qBACjB;iBACJ;gBACD,SAAS,EAAE,MAAM;aACpB,CAAA;YACD,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACpC,0BAA0B,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzC,MAAM,cAAc,GAAgB;gBAChC,kBAAkB,EAAE,0BAA0B;gBAC9C,aAAa,EAAE,QAAQ;gBACvB,SAAS,EAAE,MAAM;gBACjB,KAAK,EAAE;oBACH,KAAK,EAAE;wBACH,cAAc;qBACjB;oBACD,GAAG,EAAE;wBACD,cAAc;qBACjB;iBACJ;aACJ,CAAA;YACD,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACpC,0BAA0B,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,cAAc,GAAgB;gBAChC,kBAAkB,EAAE,0BAA0B;gBAC9C,aAAa,EAAE,OAAO;gBACtB,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBAC1B,KAAK,EAAE;oBACH,KAAK,EAAE;wBACH,cAAc;qBACjB;oBACD,GAAG,EAAE;wBACD,cAAc;qBACjB;iBACJ;aACJ,CAAA;YACD,YAAY,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YACpC,0BAA0B,IAAI,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IAEP,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAED,OAAO,YAAY,CAAC;AACxB,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { ISemanticRefCollection, ITermToSemanticRefIndex, ScoredSemanticRefOrdinal, SemanticRefOrdinal, Topic } from "./interfaces.js";
2
+ import type { Action, ConcreteEntity, Facet } from "./knowledgeSchema.js";
3
+ import type { TypeChatLanguageModel } from "typechat";
4
+ export interface RelatedTermsExpansionOptions {
5
+ /** Weight for related terms (0-1, default 0.9) */
6
+ relatedTermWeight?: number;
7
+ /** Batch size as percentage of total terms (0-1, default 0.1 = 10%) */
8
+ batchSizePercent?: number;
9
+ /** Maximum terms per batch (default 50) */
10
+ maxBatchSize?: number;
11
+ /** Minimum terms per batch (default 5) */
12
+ minBatchSize?: number;
13
+ /** Maximum total terms to process (default: all eligible terms) */
14
+ maxTerms?: number;
15
+ }
16
+ export interface RelatedTermsExpansionResult {
17
+ termsProcessed: number;
18
+ relatedTermsAdded: number;
19
+ /** Map of original term -> related terms added */
20
+ expansionMap: Map<string, string[]>;
21
+ }
22
+ export interface WordNetExpansionOptions {
23
+ /** Weight for related terms (0-1, default 0.9) */
24
+ relatedTermWeight?: number;
25
+ /** Maximum total terms to process (default: all eligible terms) */
26
+ maxTerms?: number;
27
+ }
28
+ export interface InMemorySemanticRefIndex extends ITermToSemanticRefIndex {
29
+ addEntity: (entity: ConcreteEntity, refOrdinal: SemanticRefOrdinal) => void;
30
+ addFacet: (facet: Facet, refOrdinal: SemanticRefOrdinal) => void;
31
+ addAction: (action: Action, refOrdinal: SemanticRefOrdinal) => void;
32
+ addTopic: (topic: Topic, refOrdinal: SemanticRefOrdinal) => void;
33
+ buildIndex: (semanticRefCollection: ISemanticRefCollection) => void;
34
+ lemmatizeIndex: () => LemmatizationResult;
35
+ expandWithRelatedTerms: (model: TypeChatLanguageModel, options?: RelatedTermsExpansionOptions) => Promise<RelatedTermsExpansionResult>;
36
+ expandWithWordNet: (options?: WordNetExpansionOptions) => Promise<RelatedTermsExpansionResult>;
37
+ loadFromExport: (items: Array<{
38
+ term: string;
39
+ semanticRefOrdinals: ScoredSemanticRefOrdinal[];
40
+ }>) => void;
41
+ }
42
+ export interface LemmatizationResult {
43
+ termsProcessed: number;
44
+ lemmasAdded: number;
45
+ lemmaMap: Map<string, string>;
46
+ }
47
+ export declare function createInMemorySemanticRefIndex(): InMemorySemanticRefIndex;
48
+ //# sourceMappingURL=semanticRefIndex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticRefIndex.d.ts","sourceRoot":"","sources":["../../src/knowpro/semanticRefIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,wBAAwB,EAAe,kBAAkB,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACzJ,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAOtD,MAAM,WAAW,4BAA4B;IACzC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IACxC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kDAAkD;IAClD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACpC,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,uBAAuB;IACrE,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC5E,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjE,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACpE,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjE,UAAU,EAAE,CAAC,qBAAqB,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACpE,cAAc,EAAE,MAAM,mBAAmB,CAAC;IAC1C,sBAAsB,EAAE,CAAC,KAAK,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,4BAA4B,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACvI,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,uBAAuB,KAAK,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC/F,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,wBAAwB,EAAE,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;CAC7G;AAED,MAAM,WAAW,mBAAmB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,wBAAgB,8BAA8B,IAAI,wBAAwB,CA6czE"}
@@ -0,0 +1,388 @@
1
+ import lemmatizer from "wink-lemmatizer";
2
+ import { createJsonTranslator } from "typechat";
3
+ import { createTypeScriptJsonValidator } from "typechat/ts";
4
+ import { loadSchema } from "./schema.js";
5
+ import natural from "natural";
6
+ export function createInMemorySemanticRefIndex() {
7
+ const map = new Map();
8
+ return {
9
+ getTerms,
10
+ addTerm,
11
+ removeTerm,
12
+ lookupTerm,
13
+ addEntity,
14
+ addFacet,
15
+ addAction,
16
+ addTopic,
17
+ buildIndex,
18
+ lemmatizeIndex,
19
+ expandWithRelatedTerms,
20
+ expandWithWordNet,
21
+ loadFromExport
22
+ };
23
+ // what is a term?
24
+ // - entity name
25
+ // - every type in entity
26
+ // - every facet in entity
27
+ // - every topic
28
+ // - every action verbs joined
29
+ // - action subject entity name
30
+ // - action object entity name
31
+ // - action inderect object entity name
32
+ // - action params
33
+ function getTerms() {
34
+ return [...map.keys()];
35
+ }
36
+ function lookupTerm(term) {
37
+ return map.get(term);
38
+ }
39
+ function removeTerm(term) {
40
+ map.delete(term);
41
+ }
42
+ function addTerm(term, semanticRefOrdinal) {
43
+ if (!term) {
44
+ return term;
45
+ }
46
+ term = term.toLowerCase();
47
+ const existing = map.get(term);
48
+ // Handle both SemanticRefOrdinal (number) and ScoredSemanticRefOrdinal (object with score)
49
+ let scoredOrdinal;
50
+ if (typeof semanticRefOrdinal === 'number') {
51
+ scoredOrdinal = {
52
+ semanticRefOrdinal,
53
+ score: 1.0
54
+ };
55
+ }
56
+ else {
57
+ scoredOrdinal = semanticRefOrdinal;
58
+ }
59
+ if (!existing) {
60
+ map.set(term, [scoredOrdinal]);
61
+ }
62
+ else {
63
+ map.set(term, [...existing, scoredOrdinal]);
64
+ }
65
+ return term;
66
+ }
67
+ function addEntity(entity, refOrdinal) {
68
+ // console.log("ADDING ENTITY", entity)
69
+ if (!entity.type) {
70
+ // TODO this is a hack we need to add some sort of validation
71
+ // to the fine tuning output so we don't get malformed objects
72
+ return;
73
+ }
74
+ addTerm(entity.name, refOrdinal);
75
+ entity.type.forEach((subType) => {
76
+ addTerm(subType, refOrdinal);
77
+ });
78
+ if (entity.facets) {
79
+ entity.facets.forEach(facet => {
80
+ addFacet(facet, refOrdinal);
81
+ });
82
+ }
83
+ }
84
+ function addFacet(facet, refOrdinal) {
85
+ addTerm(facet.name, refOrdinal);
86
+ if (facet.value) {
87
+ addTerm(facet.value.toString(), refOrdinal);
88
+ }
89
+ }
90
+ function addAction(action, refOrdinal) {
91
+ // console.log("ADDING ACTION", action)
92
+ const actionTerm = action.verbs.join(" ");
93
+ addTerm(actionTerm, refOrdinal);
94
+ addTerm(action.objectEntityName, refOrdinal);
95
+ addTerm(action.indirectObjectEntityName, refOrdinal);
96
+ addTerm(action.subjectEntityName, refOrdinal);
97
+ if (action.params) {
98
+ action.params.forEach((param) => {
99
+ if (typeof (param) === "string") {
100
+ addTerm(param, refOrdinal);
101
+ }
102
+ else {
103
+ addTerm(param.name, refOrdinal);
104
+ // same here this is a crutch for malformed llm output
105
+ if (param.value) {
106
+ addTerm(param.value.toString(), refOrdinal);
107
+ }
108
+ }
109
+ });
110
+ }
111
+ }
112
+ function addTopic(topic, refOrdinal) {
113
+ addTerm(topic.text, refOrdinal);
114
+ }
115
+ function buildIndex(semanticRefs) {
116
+ semanticRefs.getAll().forEach((ref) => {
117
+ switch (ref.knowledgeType) {
118
+ case "entity": {
119
+ addEntity(ref.knowledge, ref.semanticRefOrdinal);
120
+ break;
121
+ }
122
+ case "action": {
123
+ addAction(ref.knowledge, ref.semanticRefOrdinal);
124
+ break;
125
+ }
126
+ case "topic": {
127
+ addTopic(ref.knowledge, ref.semanticRefOrdinal);
128
+ break;
129
+ }
130
+ default: {
131
+ break;
132
+ }
133
+ }
134
+ });
135
+ }
136
+ function loadFromExport(items) {
137
+ // Clear existing index
138
+ map.clear();
139
+ // Load all terms with their scored ordinals
140
+ for (const item of items) {
141
+ map.set(item.term.toLowerCase(), item.semanticRefOrdinals);
142
+ }
143
+ }
144
+ function lemmatizeIndex() {
145
+ const terms = getTerms();
146
+ const lemmaMap = new Map();
147
+ let lemmasAdded = 0;
148
+ for (const term of terms) {
149
+ // Skip very short terms or terms with spaces (phrases)
150
+ if (term.length < 3 || term.includes(" ")) {
151
+ continue;
152
+ }
153
+ // Get the semantic refs for this term
154
+ const refs = map.get(term);
155
+ if (!refs || refs.length === 0) {
156
+ continue;
157
+ }
158
+ // Try lemmatizing as different parts of speech
159
+ const nounLemma = lemmatizer.noun(term);
160
+ const verbLemma = lemmatizer.verb(term);
161
+ const adjLemma = lemmatizer.adjective(term);
162
+ // Collect unique lemmas that differ from the original
163
+ const lemmas = new Set();
164
+ if (nounLemma !== term)
165
+ lemmas.add(nounLemma);
166
+ if (verbLemma !== term)
167
+ lemmas.add(verbLemma);
168
+ if (adjLemma !== term)
169
+ lemmas.add(adjLemma);
170
+ // Add each lemma to the index pointing to the same refs
171
+ for (const lemma of lemmas) {
172
+ // Skip if lemma is already in the index with the same refs
173
+ const existingRefs = map.get(lemma);
174
+ if (!existingRefs) {
175
+ // New lemma - add all refs
176
+ map.set(lemma, [...refs]);
177
+ lemmasAdded++;
178
+ lemmaMap.set(term, lemma);
179
+ }
180
+ else {
181
+ // Lemma exists - merge refs (avoid duplicates)
182
+ const existingOrdinals = new Set(existingRefs.map(r => r.semanticRefOrdinal));
183
+ const newRefs = refs.filter(r => !existingOrdinals.has(r.semanticRefOrdinal));
184
+ if (newRefs.length > 0) {
185
+ map.set(lemma, [...existingRefs, ...newRefs]);
186
+ }
187
+ }
188
+ }
189
+ }
190
+ return {
191
+ termsProcessed: terms.length,
192
+ lemmasAdded,
193
+ lemmaMap
194
+ };
195
+ }
196
+ async function expandWithRelatedTerms(model, options) {
197
+ const { relatedTermWeight = 0.9, batchSizePercent = 0.1, maxBatchSize = 50, minBatchSize = 5, maxTerms } = options ?? {};
198
+ const terms = getTerms();
199
+ const expansionMap = new Map();
200
+ let relatedTermsAdded = 0;
201
+ // Filter terms: skip very short terms, phrases, and common stop words
202
+ const stopWords = new Set(['the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'dare', 'ought', 'used', 'to', 'of', 'in', 'for', 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'and', 'but', 'if', 'or', 'because', 'until', 'while', 'this', 'that', 'these', 'those', 'it', 'its']);
203
+ let eligibleTerms = terms.filter(term => term.length >= 3 &&
204
+ !term.includes(' ') &&
205
+ !stopWords.has(term));
206
+ // Limit total terms if maxTerms is specified
207
+ if (maxTerms !== undefined && maxTerms < eligibleTerms.length) {
208
+ eligibleTerms = eligibleTerms.slice(0, maxTerms);
209
+ }
210
+ if (eligibleTerms.length === 0) {
211
+ return { termsProcessed: 0, relatedTermsAdded: 0, expansionMap };
212
+ }
213
+ // Calculate batch size
214
+ const calculatedBatchSize = Math.floor(eligibleTerms.length * batchSizePercent);
215
+ const batchSize = Math.max(minBatchSize, Math.min(maxBatchSize, calculatedBatchSize));
216
+ // Create translator for related terms
217
+ const schema = loadSchema(["relatedTermsSchema.ts"], import.meta.url);
218
+ const validator = createTypeScriptJsonValidator(schema, "RelatedTermsResponse");
219
+ const translator = createJsonTranslator(model, validator);
220
+ translator.createRequestPrompt = (request) => {
221
+ return (`You are a service that finds semantically related words for search index expansion.\n` +
222
+ `Given a list of terms, return synonyms and semantically related words for each.\n\n` +
223
+ `IMPORTANT RULES:\n` +
224
+ `- Do NOT include morphological variants (plurals, verb tenses, etc.) - only semantically different words\n` +
225
+ `- Focus on words that users might use interchangeably when searching\n` +
226
+ `- Include synonyms, near-synonyms, and closely related concepts\n` +
227
+ `- Keep related terms to 2-5 per term (quality over quantity)\n` +
228
+ `- Skip proper nouns (names of people, places, brands)\n\n` +
229
+ `Examples:\n` +
230
+ `- book -> [novel, publication, text, volume]\n` +
231
+ `- buy -> [purchase, acquire, obtain]\n` +
232
+ `- happy -> [joyful, pleased, glad, content]\n` +
233
+ `- psychology -> [mental health, counseling, therapy]\n\n` +
234
+ `The following TypeScript definitions describe the expected response format:\n` +
235
+ `\`\`\`\n${schema}\`\`\`\n` +
236
+ `Input terms:\n${request}\n\n` +
237
+ `Return a JSON object of type RelatedTermsResponse with related terms for each input term:\n`);
238
+ };
239
+ // Process in batches
240
+ for (let i = 0; i < eligibleTerms.length; i += batchSize) {
241
+ const batch = eligibleTerms.slice(i, i + batchSize);
242
+ console.log(`Expanding terms batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(eligibleTerms.length / batchSize)} (${batch.length} terms)`);
243
+ try {
244
+ const request = batch.join(', ');
245
+ const result = await translator.translate(request);
246
+ if (!result.success) {
247
+ console.warn(`Failed to expand batch: ${result.message}`);
248
+ continue;
249
+ }
250
+ // Process the response
251
+ for (const termWithRelated of result.data.terms) {
252
+ const originalTerm = termWithRelated.term.toLowerCase();
253
+ const refs = map.get(originalTerm);
254
+ if (!refs || refs.length === 0) {
255
+ continue;
256
+ }
257
+ const addedRelated = [];
258
+ for (const relatedTerm of termWithRelated.relatedTerms) {
259
+ const normalizedRelated = relatedTerm.toLowerCase();
260
+ // Skip if it's the same as the original
261
+ if (normalizedRelated === originalTerm) {
262
+ continue;
263
+ }
264
+ // Add the related term pointing to the same refs with lower weight
265
+ for (const ref of refs) {
266
+ const weightedRef = {
267
+ semanticRefOrdinal: ref.semanticRefOrdinal,
268
+ score: ref.score * relatedTermWeight
269
+ };
270
+ // Check if this term already exists with this ref
271
+ const existingRefs = map.get(normalizedRelated);
272
+ if (existingRefs) {
273
+ const alreadyHasRef = existingRefs.some(r => r.semanticRefOrdinal === ref.semanticRefOrdinal);
274
+ if (!alreadyHasRef) {
275
+ map.set(normalizedRelated, [...existingRefs, weightedRef]);
276
+ }
277
+ }
278
+ else {
279
+ map.set(normalizedRelated, [weightedRef]);
280
+ }
281
+ }
282
+ addedRelated.push(normalizedRelated);
283
+ relatedTermsAdded++;
284
+ }
285
+ if (addedRelated.length > 0) {
286
+ expansionMap.set(originalTerm, addedRelated);
287
+ }
288
+ }
289
+ }
290
+ catch (error) {
291
+ console.error(`Error expanding batch:`, error);
292
+ }
293
+ }
294
+ return {
295
+ termsProcessed: eligibleTerms.length,
296
+ relatedTermsAdded,
297
+ expansionMap
298
+ };
299
+ }
300
+ async function expandWithWordNet(options) {
301
+ const { relatedTermWeight = 0.9, maxTerms } = options ?? {};
302
+ const wordnet = new natural.WordNet();
303
+ const terms = getTerms();
304
+ const expansionMap = new Map();
305
+ let relatedTermsAdded = 0;
306
+ // Filter terms: skip very short terms, phrases, and common stop words
307
+ const stopWords = new Set(['the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'shall', 'can', 'need', 'dare', 'ought', 'used', 'to', 'of', 'in', 'for', 'on', 'with', 'at', 'by', 'from', 'as', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'and', 'but', 'if', 'or', 'because', 'until', 'while', 'this', 'that', 'these', 'those', 'it', 'its']);
308
+ let eligibleTerms = terms.filter(term => term.length >= 3 &&
309
+ !term.includes(' ') &&
310
+ !stopWords.has(term));
311
+ // Limit total terms if maxTerms is specified
312
+ if (maxTerms !== undefined && maxTerms < eligibleTerms.length) {
313
+ eligibleTerms = eligibleTerms.slice(0, maxTerms);
314
+ }
315
+ if (eligibleTerms.length === 0) {
316
+ return { termsProcessed: 0, relatedTermsAdded: 0, expansionMap };
317
+ }
318
+ // Helper to get synonyms from WordNet (promisified)
319
+ const getSynonyms = (word) => {
320
+ return new Promise((resolve) => {
321
+ const synonyms = new Set();
322
+ wordnet.lookup(word, (results) => {
323
+ if (results && results.length > 0) {
324
+ for (const result of results) {
325
+ // Add synonyms from the synset
326
+ if (result.synonyms) {
327
+ for (const syn of result.synonyms) {
328
+ const normalized = syn.toLowerCase().replace(/_/g, ' ');
329
+ // Skip multi-word phrases and the original word
330
+ if (!normalized.includes(' ') && normalized !== word) {
331
+ synonyms.add(normalized);
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ resolve([...synonyms].slice(0, 5)); // Limit to 5 synonyms per term
338
+ });
339
+ });
340
+ };
341
+ console.log(`Expanding ${eligibleTerms.length} terms using WordNet...`);
342
+ let processed = 0;
343
+ for (const term of eligibleTerms) {
344
+ const refs = map.get(term);
345
+ if (!refs || refs.length === 0) {
346
+ continue;
347
+ }
348
+ const synonyms = await getSynonyms(term);
349
+ const addedRelated = [];
350
+ for (const synonym of synonyms) {
351
+ // Add the related term pointing to the same refs with lower weight
352
+ for (const ref of refs) {
353
+ const weightedRef = {
354
+ semanticRefOrdinal: ref.semanticRefOrdinal,
355
+ score: ref.score * relatedTermWeight
356
+ };
357
+ // Check if this term already exists with this ref
358
+ const existingRefs = map.get(synonym);
359
+ if (existingRefs) {
360
+ const alreadyHasRef = existingRefs.some(r => r.semanticRefOrdinal === ref.semanticRefOrdinal);
361
+ if (!alreadyHasRef) {
362
+ map.set(synonym, [...existingRefs, weightedRef]);
363
+ }
364
+ }
365
+ else {
366
+ map.set(synonym, [weightedRef]);
367
+ }
368
+ }
369
+ addedRelated.push(synonym);
370
+ relatedTermsAdded++;
371
+ }
372
+ if (addedRelated.length > 0) {
373
+ expansionMap.set(term, addedRelated);
374
+ }
375
+ processed++;
376
+ if (processed % 100 === 0) {
377
+ console.log(` Processed ${processed}/${eligibleTerms.length} terms...`);
378
+ }
379
+ }
380
+ console.log(`WordNet expansion complete: ${relatedTermsAdded} related terms added`);
381
+ return {
382
+ termsProcessed: eligibleTerms.length,
383
+ relatedTermsAdded,
384
+ expansionMap
385
+ };
386
+ }
387
+ }
388
+ //# sourceMappingURL=semanticRefIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semanticRefIndex.js","sourceRoot":"","sources":["../../src/knowpro/semanticRefIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { IMessageCollection, ISemanticRefCollection, IStorageProvider } from "./interfaces.js";
2
+ import { type Message } from "./conversation.js";
3
+ export interface InMemoryStorageProvider extends IStorageProvider {
4
+ loadFromFile: (filePath: string, semanticRefs: ISemanticRefCollection, messages: IMessageCollection<Message>) => void;
5
+ }
6
+ export declare function createInMemoryStorageProvider(): InMemoryStorageProvider;
7
+ //# sourceMappingURL=storageProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageProvider.d.ts","sourceRoot":"","sources":["../../src/knowpro/storageProvider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGpG,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGhE,MAAM,WAAW,uBAAwB,SAAQ,gBAAgB;IAC7D,YAAY,EAAE,CACV,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,sBAAsB,EACpC,QAAQ,EAAE,kBAAkB,CAAC,OAAO,CAAC,KACpC,IAAI,CAAC;CACb;AAID,wBAAgB,6BAA6B,IAAI,uBAAuB,CAuEvE"}
@@ -0,0 +1,61 @@
1
+ import { createMessageCollection, createSemanticRefCollection } from "./collections.js";
2
+ import { readFileSync } from "node:fs";
3
+ import { createMessage } from "./conversation.js";
4
+ import { populateSemanticRef } from "./semanticRef.js";
5
+ const SEPERATOR = "================================================================================";
6
+ export function createInMemoryStorageProvider() {
7
+ function loadFromFile(filePath, semanticRefs, messages) {
8
+ const knowledgeFile = readFileSync(filePath, "utf-8");
9
+ const sections = knowledgeFile.split(SEPERATOR);
10
+ let lossCount = 0;
11
+ sections.forEach((section) => {
12
+ // if (semanticRefOrdinal != semanticRefs.length) {
13
+ // console.log("ERROR", semanticRefOrdinal, semanticRefs.length);
14
+ // throw Error("HELP SOMETHING WENT WRONG THESE MUST BE THE SAME LENGTH");
15
+ // }
16
+ const jsonStart = section.indexOf("{");
17
+ // Get and add message
18
+ const content = section.substring(0, jsonStart);
19
+ const message = createMessage(content, []);
20
+ // filter our the empty chunks
21
+ if (content.length < 10) {
22
+ return;
23
+ }
24
+ // 1. merge entities and actions
25
+ // 2. make a token limit
26
+ // 3. decide how to preseent merged e & a
27
+ // into the answer propmt densely
28
+ // what did julia do in the forest?
29
+ // how did julia meet winston?
30
+ // what color is julia's sash?
31
+ // what is the book winston gets from obrien about?
32
+ // what is the uniform of the inner party?
33
+ // Get knowledge and add semantic refs
34
+ const jsonString = section.substring(jsonStart).split("\n")[0];
35
+ try {
36
+ const knowledgeResponse = JSON.parse(jsonString);
37
+ if (knowledgeResponse) {
38
+ semanticRefs = populateSemanticRef(semanticRefs, knowledgeResponse, semanticRefs.length, messages.length);
39
+ // semanticRefOrdinal += ordinalModifier;
40
+ messages.append(message);
41
+ }
42
+ }
43
+ catch {
44
+ lossCount += 1;
45
+ }
46
+ });
47
+ console.log("LOSS COUNT: ", lossCount, lossCount / sections.length, sections.length);
48
+ console.log(messages.length, semanticRefs.length);
49
+ }
50
+ function close() {
51
+ console.log("Closing storage provider.");
52
+ return;
53
+ }
54
+ return {
55
+ createMessageCollection,
56
+ createSemanticRefCollection,
57
+ loadFromFile,
58
+ close
59
+ };
60
+ }
61
+ //# sourceMappingURL=storageProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storageProvider.js","sourceRoot":"","sources":["../../src/knowpro/storageProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAgB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAUvD,MAAM,SAAS,GAAG,kFAAkF,CAAC;AAErG,MAAM,UAAU,6BAA6B;IAEzC,SAAS,YAAY,CACjB,QAAgB,EAChB,YAAoC,EACpC,QAAqC;QAErC,MAAM,aAAa,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACzB,mDAAmD;YACnD,qEAAqE;YACrE,8EAA8E;YAC9E,IAAI;YACJ,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEvC,sBAAsB;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAChD,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAE3C,8BAA8B;YAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;gBACtB,OAAO;YACX,CAAC;YAED,gCAAgC;YAChC,wBAAwB;YACxB,yCAAyC;YACzC,oCAAoC;YAEpC,mCAAmC;YACnC,8BAA8B;YAC9B,8BAA8B;YAC9B,mDAAmD;YACnD,0CAA0C;YAE1C,sCAAsC;YACtC,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC;gBACD,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACjD,IAAI,iBAAiB,EAAE,CAAC;oBACpB,YAAY,GAAG,mBAAmB,CAC9B,YAAY,EACZ,iBAAiB,EACjB,YAAY,CAAC,MAAM,EACnB,QAAQ,CAAC,MAAM,CAClB,CAAC;oBACF,yCAAyC;oBACzC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACL,SAAS,IAAI,CAAC,CAAC;YACnB,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;IACrD,CAAC;IAED,SAAS,KAAK;QACV,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO;IACX,CAAC;IAED,OAAO;QACH,uBAAuB;QACvB,2BAA2B;QAC3B,YAAY;QACZ,KAAK;KACR,CAAA;AACL,CAAC"}