@steno-ai/engine 0.1.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/dist/adapters/cache.d.ts +9 -0
- package/dist/adapters/cache.d.ts.map +1 -0
- package/dist/adapters/cache.js +2 -0
- package/dist/adapters/cache.js.map +1 -0
- package/dist/adapters/embedding.d.ts +7 -0
- package/dist/adapters/embedding.d.ts.map +1 -0
- package/dist/adapters/embedding.js +2 -0
- package/dist/adapters/embedding.js.map +1 -0
- package/dist/adapters/gemini-embedding.d.ts +18 -0
- package/dist/adapters/gemini-embedding.d.ts.map +1 -0
- package/dist/adapters/gemini-embedding.js +53 -0
- package/dist/adapters/gemini-embedding.js.map +1 -0
- package/dist/adapters/index.d.ts +7 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/llm.d.ts +19 -0
- package/dist/adapters/llm.d.ts.map +1 -0
- package/dist/adapters/llm.js +2 -0
- package/dist/adapters/llm.js.map +1 -0
- package/dist/adapters/perplexity-embedding.d.ts +24 -0
- package/dist/adapters/perplexity-embedding.d.ts.map +1 -0
- package/dist/adapters/perplexity-embedding.js +78 -0
- package/dist/adapters/perplexity-embedding.js.map +1 -0
- package/dist/adapters/storage.d.ts +172 -0
- package/dist/adapters/storage.d.ts.map +1 -0
- package/dist/adapters/storage.js +2 -0
- package/dist/adapters/storage.js.map +1 -0
- package/dist/auth/api-key.d.ts +8 -0
- package/dist/auth/api-key.d.ts.map +1 -0
- package/dist/auth/api-key.js +27 -0
- package/dist/auth/api-key.js.map +1 -0
- package/dist/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/config.d.ts +296 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +92 -0
- package/dist/config.js.map +1 -0
- package/dist/extraction/contradiction.d.ts +15 -0
- package/dist/extraction/contradiction.d.ts.map +1 -0
- package/dist/extraction/contradiction.js +23 -0
- package/dist/extraction/contradiction.js.map +1 -0
- package/dist/extraction/dedup.d.ts +12 -0
- package/dist/extraction/dedup.d.ts.map +1 -0
- package/dist/extraction/dedup.js +93 -0
- package/dist/extraction/dedup.js.map +1 -0
- package/dist/extraction/entity-extractor.d.ts +30 -0
- package/dist/extraction/entity-extractor.d.ts.map +1 -0
- package/dist/extraction/entity-extractor.js +145 -0
- package/dist/extraction/entity-extractor.js.map +1 -0
- package/dist/extraction/hasher.d.ts +5 -0
- package/dist/extraction/hasher.d.ts.map +1 -0
- package/dist/extraction/hasher.js +8 -0
- package/dist/extraction/hasher.js.map +1 -0
- package/dist/extraction/heuristic.d.ts +3 -0
- package/dist/extraction/heuristic.d.ts.map +1 -0
- package/dist/extraction/heuristic.js +282 -0
- package/dist/extraction/heuristic.js.map +1 -0
- package/dist/extraction/index.d.ts +10 -0
- package/dist/extraction/index.d.ts.map +1 -0
- package/dist/extraction/index.js +10 -0
- package/dist/extraction/index.js.map +1 -0
- package/dist/extraction/llm-extractor.d.ts +23 -0
- package/dist/extraction/llm-extractor.d.ts.map +1 -0
- package/dist/extraction/llm-extractor.js +238 -0
- package/dist/extraction/llm-extractor.js.map +1 -0
- package/dist/extraction/pipeline.d.ts +30 -0
- package/dist/extraction/pipeline.d.ts.map +1 -0
- package/dist/extraction/pipeline.js +398 -0
- package/dist/extraction/pipeline.js.map +1 -0
- package/dist/extraction/prompts.d.ts +28 -0
- package/dist/extraction/prompts.d.ts.map +1 -0
- package/dist/extraction/prompts.js +196 -0
- package/dist/extraction/prompts.js.map +1 -0
- package/dist/extraction/sliding-window.d.ts +41 -0
- package/dist/extraction/sliding-window.d.ts.map +1 -0
- package/dist/extraction/sliding-window.js +84 -0
- package/dist/extraction/sliding-window.js.map +1 -0
- package/dist/extraction/types.d.ts +80 -0
- package/dist/extraction/types.d.ts.map +1 -0
- package/dist/extraction/types.js +2 -0
- package/dist/extraction/types.js.map +1 -0
- package/dist/feedback/index.d.ts +2 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +2 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/feedback/tracker.d.ts +25 -0
- package/dist/feedback/tracker.d.ts.map +1 -0
- package/dist/feedback/tracker.js +90 -0
- package/dist/feedback/tracker.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/models/api-key.d.ts +54 -0
- package/dist/models/api-key.d.ts.map +1 -0
- package/dist/models/api-key.js +21 -0
- package/dist/models/api-key.js.map +1 -0
- package/dist/models/edge.d.ts +78 -0
- package/dist/models/edge.d.ts.map +1 -0
- package/dist/models/edge.js +29 -0
- package/dist/models/edge.js.map +1 -0
- package/dist/models/entity.d.ts +60 -0
- package/dist/models/entity.d.ts.map +1 -0
- package/dist/models/entity.js +22 -0
- package/dist/models/entity.js.map +1 -0
- package/dist/models/extraction.d.ts +111 -0
- package/dist/models/extraction.d.ts.map +1 -0
- package/dist/models/extraction.js +40 -0
- package/dist/models/extraction.js.map +1 -0
- package/dist/models/fact-entity.d.ts +33 -0
- package/dist/models/fact-entity.d.ts.map +1 -0
- package/dist/models/fact-entity.js +14 -0
- package/dist/models/fact-entity.js.map +1 -0
- package/dist/models/fact.d.ts +191 -0
- package/dist/models/fact.d.ts.map +1 -0
- package/dist/models/fact.js +72 -0
- package/dist/models/fact.js.map +1 -0
- package/dist/models/index.d.ts +13 -0
- package/dist/models/index.d.ts.map +1 -0
- package/dist/models/index.js +13 -0
- package/dist/models/index.js.map +1 -0
- package/dist/models/memory-access.d.ts +89 -0
- package/dist/models/memory-access.d.ts.map +1 -0
- package/dist/models/memory-access.js +33 -0
- package/dist/models/memory-access.js.map +1 -0
- package/dist/models/session.d.ts +60 -0
- package/dist/models/session.d.ts.map +1 -0
- package/dist/models/session.js +23 -0
- package/dist/models/session.js.map +1 -0
- package/dist/models/tenant.d.ts +448 -0
- package/dist/models/tenant.d.ts.map +1 -0
- package/dist/models/tenant.js +23 -0
- package/dist/models/tenant.js.map +1 -0
- package/dist/models/trigger.d.ts +87 -0
- package/dist/models/trigger.d.ts.map +1 -0
- package/dist/models/trigger.js +41 -0
- package/dist/models/trigger.js.map +1 -0
- package/dist/models/usage-record.d.ts +37 -0
- package/dist/models/usage-record.d.ts.map +1 -0
- package/dist/models/usage-record.js +14 -0
- package/dist/models/usage-record.js.map +1 -0
- package/dist/models/webhook.d.ts +50 -0
- package/dist/models/webhook.d.ts.map +1 -0
- package/dist/models/webhook.js +25 -0
- package/dist/models/webhook.js.map +1 -0
- package/dist/profiles/index.d.ts +3 -0
- package/dist/profiles/index.d.ts.map +1 -0
- package/dist/profiles/index.js +2 -0
- package/dist/profiles/index.js.map +1 -0
- package/dist/profiles/profile.d.ts +22 -0
- package/dist/profiles/profile.d.ts.map +1 -0
- package/dist/profiles/profile.js +59 -0
- package/dist/profiles/profile.js.map +1 -0
- package/dist/retrieval/compound-search.d.ts +13 -0
- package/dist/retrieval/compound-search.d.ts.map +1 -0
- package/dist/retrieval/compound-search.js +87 -0
- package/dist/retrieval/compound-search.js.map +1 -0
- package/dist/retrieval/contradiction-surfacer.d.ts +18 -0
- package/dist/retrieval/contradiction-surfacer.d.ts.map +1 -0
- package/dist/retrieval/contradiction-surfacer.js +64 -0
- package/dist/retrieval/contradiction-surfacer.js.map +1 -0
- package/dist/retrieval/embedding-cache.d.ts +17 -0
- package/dist/retrieval/embedding-cache.d.ts.map +1 -0
- package/dist/retrieval/embedding-cache.js +56 -0
- package/dist/retrieval/embedding-cache.js.map +1 -0
- package/dist/retrieval/fusion.d.ts +27 -0
- package/dist/retrieval/fusion.d.ts.map +1 -0
- package/dist/retrieval/fusion.js +87 -0
- package/dist/retrieval/fusion.js.map +1 -0
- package/dist/retrieval/graph-traversal.d.ts +29 -0
- package/dist/retrieval/graph-traversal.d.ts.map +1 -0
- package/dist/retrieval/graph-traversal.js +208 -0
- package/dist/retrieval/graph-traversal.js.map +1 -0
- package/dist/retrieval/index.d.ts +14 -0
- package/dist/retrieval/index.d.ts.map +1 -0
- package/dist/retrieval/index.js +13 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/retrieval/keyword-search.d.ts +4 -0
- package/dist/retrieval/keyword-search.d.ts.map +1 -0
- package/dist/retrieval/keyword-search.js +27 -0
- package/dist/retrieval/keyword-search.js.map +1 -0
- package/dist/retrieval/query-expansion.d.ts +20 -0
- package/dist/retrieval/query-expansion.d.ts.map +1 -0
- package/dist/retrieval/query-expansion.js +76 -0
- package/dist/retrieval/query-expansion.js.map +1 -0
- package/dist/retrieval/reranker.d.ts +15 -0
- package/dist/retrieval/reranker.d.ts.map +1 -0
- package/dist/retrieval/reranker.js +47 -0
- package/dist/retrieval/reranker.js.map +1 -0
- package/dist/retrieval/salience-scorer.d.ts +15 -0
- package/dist/retrieval/salience-scorer.d.ts.map +1 -0
- package/dist/retrieval/salience-scorer.js +41 -0
- package/dist/retrieval/salience-scorer.js.map +1 -0
- package/dist/retrieval/search.d.ts +21 -0
- package/dist/retrieval/search.d.ts.map +1 -0
- package/dist/retrieval/search.js +228 -0
- package/dist/retrieval/search.js.map +1 -0
- package/dist/retrieval/temporal-scorer.d.ts +18 -0
- package/dist/retrieval/temporal-scorer.d.ts.map +1 -0
- package/dist/retrieval/temporal-scorer.js +106 -0
- package/dist/retrieval/temporal-scorer.js.map +1 -0
- package/dist/retrieval/trigger-matcher.d.ts +18 -0
- package/dist/retrieval/trigger-matcher.d.ts.map +1 -0
- package/dist/retrieval/trigger-matcher.js +134 -0
- package/dist/retrieval/trigger-matcher.js.map +1 -0
- package/dist/retrieval/types.d.ts +70 -0
- package/dist/retrieval/types.d.ts.map +1 -0
- package/dist/retrieval/types.js +9 -0
- package/dist/retrieval/types.js.map +1 -0
- package/dist/retrieval/vector-search.d.ts +5 -0
- package/dist/retrieval/vector-search.d.ts.map +1 -0
- package/dist/retrieval/vector-search.js +24 -0
- package/dist/retrieval/vector-search.js.map +1 -0
- package/dist/salience/decay.d.ts +9 -0
- package/dist/salience/decay.d.ts.map +1 -0
- package/dist/salience/decay.js +15 -0
- package/dist/salience/decay.js.map +1 -0
- package/dist/salience/index.d.ts +2 -0
- package/dist/salience/index.d.ts.map +1 -0
- package/dist/salience/index.js +2 -0
- package/dist/salience/index.js.map +1 -0
- package/dist/scratchpad/index.d.ts +2 -0
- package/dist/scratchpad/index.d.ts.map +1 -0
- package/dist/scratchpad/index.js +2 -0
- package/dist/scratchpad/index.js.map +1 -0
- package/dist/scratchpad/scratchpad.d.ts +23 -0
- package/dist/scratchpad/scratchpad.d.ts.map +1 -0
- package/dist/scratchpad/scratchpad.js +107 -0
- package/dist/scratchpad/scratchpad.js.map +1 -0
- package/dist/sessions/index.d.ts +2 -0
- package/dist/sessions/index.d.ts.map +1 -0
- package/dist/sessions/index.js +2 -0
- package/dist/sessions/index.js.map +1 -0
- package/dist/sessions/manager.d.ts +11 -0
- package/dist/sessions/manager.d.ts.map +1 -0
- package/dist/sessions/manager.js +63 -0
- package/dist/sessions/manager.js.map +1 -0
- package/package.json +38 -0
- package/src/adapters/cache.d.ts +9 -0
- package/src/adapters/cache.d.ts.map +1 -0
- package/src/adapters/cache.js.map +1 -0
- package/src/adapters/cache.ts +8 -0
- package/src/adapters/embedding.d.ts +7 -0
- package/src/adapters/embedding.d.ts.map +1 -0
- package/src/adapters/embedding.js.map +1 -0
- package/src/adapters/embedding.ts +6 -0
- package/src/adapters/gemini-embedding.ts +67 -0
- package/src/adapters/index.ts +6 -0
- package/src/adapters/llm.d.ts +19 -0
- package/src/adapters/llm.d.ts.map +1 -0
- package/src/adapters/llm.js.map +1 -0
- package/src/adapters/llm.ts +16 -0
- package/src/adapters/perplexity-embedding.d.ts +24 -0
- package/src/adapters/perplexity-embedding.d.ts.map +1 -0
- package/src/adapters/perplexity-embedding.js.map +1 -0
- package/src/adapters/perplexity-embedding.ts +98 -0
- package/src/adapters/storage.d.ts +172 -0
- package/src/adapters/storage.d.ts.map +1 -0
- package/src/adapters/storage.js.map +1 -0
- package/src/adapters/storage.ts +187 -0
- package/src/auth/api-key.ts +33 -0
- package/src/auth/index.ts +1 -0
- package/src/config.d.ts +86 -0
- package/src/config.d.ts.map +1 -0
- package/src/config.js.map +1 -0
- package/src/config.ts +131 -0
- package/src/extraction/contradiction.d.ts +15 -0
- package/src/extraction/contradiction.d.ts.map +1 -0
- package/src/extraction/contradiction.js.map +1 -0
- package/src/extraction/contradiction.ts +33 -0
- package/src/extraction/dedup.d.ts +12 -0
- package/src/extraction/dedup.d.ts.map +1 -0
- package/src/extraction/dedup.js.map +1 -0
- package/src/extraction/dedup.ts +133 -0
- package/src/extraction/entity-extractor.d.ts +30 -0
- package/src/extraction/entity-extractor.d.ts.map +1 -0
- package/src/extraction/entity-extractor.js.map +1 -0
- package/src/extraction/entity-extractor.ts +193 -0
- package/src/extraction/hasher.d.ts +5 -0
- package/src/extraction/hasher.d.ts.map +1 -0
- package/src/extraction/hasher.js.map +1 -0
- package/src/extraction/hasher.ts +7 -0
- package/src/extraction/heuristic.d.ts +3 -0
- package/src/extraction/heuristic.d.ts.map +1 -0
- package/src/extraction/heuristic.js.map +1 -0
- package/src/extraction/heuristic.ts +341 -0
- package/src/extraction/index.ts +9 -0
- package/src/extraction/llm-extractor.d.ts +21 -0
- package/src/extraction/llm-extractor.d.ts.map +1 -0
- package/src/extraction/llm-extractor.js.map +1 -0
- package/src/extraction/llm-extractor.ts +267 -0
- package/src/extraction/pipeline.d.ts +27 -0
- package/src/extraction/pipeline.d.ts.map +1 -0
- package/src/extraction/pipeline.js.map +1 -0
- package/src/extraction/pipeline.ts +515 -0
- package/src/extraction/prompts.js.map +1 -0
- package/src/extraction/prompts.ts +233 -0
- package/src/extraction/sliding-window.d.ts +41 -0
- package/src/extraction/sliding-window.d.ts.map +1 -0
- package/src/extraction/sliding-window.js.map +1 -0
- package/src/extraction/sliding-window.ts +121 -0
- package/src/extraction/types.d.ts +68 -0
- package/src/extraction/types.d.ts.map +1 -0
- package/src/extraction/types.js.map +1 -0
- package/src/extraction/types.ts +80 -0
- package/src/feedback/index.ts +1 -0
- package/src/feedback/tracker.d.ts +25 -0
- package/src/feedback/tracker.d.ts.map +1 -0
- package/src/feedback/tracker.js.map +1 -0
- package/src/feedback/tracker.ts +119 -0
- package/src/index.ts +12 -0
- package/src/models/api-key.d.ts +54 -0
- package/src/models/api-key.d.ts.map +1 -0
- package/src/models/api-key.js.map +1 -0
- package/src/models/api-key.ts +26 -0
- package/src/models/edge.d.ts +78 -0
- package/src/models/edge.d.ts.map +1 -0
- package/src/models/edge.js.map +1 -0
- package/src/models/edge.ts +34 -0
- package/src/models/entity.d.ts +60 -0
- package/src/models/entity.d.ts.map +1 -0
- package/src/models/entity.js.map +1 -0
- package/src/models/entity.ts +27 -0
- package/src/models/extraction.d.ts +111 -0
- package/src/models/extraction.d.ts.map +1 -0
- package/src/models/extraction.js.map +1 -0
- package/src/models/extraction.ts +45 -0
- package/src/models/fact-entity.d.ts +33 -0
- package/src/models/fact-entity.d.ts.map +1 -0
- package/src/models/fact-entity.js.map +1 -0
- package/src/models/fact-entity.ts +19 -0
- package/src/models/fact.ts +85 -0
- package/src/models/index.d.ts +13 -0
- package/src/models/index.d.ts.map +1 -0
- package/src/models/index.js.map +1 -0
- package/src/models/index.ts +12 -0
- package/src/models/memory-access.d.ts +89 -0
- package/src/models/memory-access.d.ts.map +1 -0
- package/src/models/memory-access.js.map +1 -0
- package/src/models/memory-access.ts +41 -0
- package/src/models/session.d.ts +60 -0
- package/src/models/session.d.ts.map +1 -0
- package/src/models/session.js.map +1 -0
- package/src/models/session.ts +28 -0
- package/src/models/tenant.d.ts +214 -0
- package/src/models/tenant.d.ts.map +1 -0
- package/src/models/tenant.js.map +1 -0
- package/src/models/tenant.ts +28 -0
- package/src/models/trigger.d.ts +87 -0
- package/src/models/trigger.d.ts.map +1 -0
- package/src/models/trigger.js.map +1 -0
- package/src/models/trigger.ts +58 -0
- package/src/models/usage-record.d.ts +37 -0
- package/src/models/usage-record.d.ts.map +1 -0
- package/src/models/usage-record.js.map +1 -0
- package/src/models/usage-record.ts +16 -0
- package/src/models/webhook.d.ts +50 -0
- package/src/models/webhook.d.ts.map +1 -0
- package/src/models/webhook.js.map +1 -0
- package/src/models/webhook.ts +30 -0
- package/src/profiles/index.ts +2 -0
- package/src/profiles/profile.ts +81 -0
- package/src/retrieval/compound-search.d.ts +13 -0
- package/src/retrieval/compound-search.d.ts.map +1 -0
- package/src/retrieval/compound-search.js.map +1 -0
- package/src/retrieval/compound-search.ts +104 -0
- package/src/retrieval/contradiction-surfacer.d.ts +18 -0
- package/src/retrieval/contradiction-surfacer.d.ts.map +1 -0
- package/src/retrieval/contradiction-surfacer.js.map +1 -0
- package/src/retrieval/contradiction-surfacer.ts +87 -0
- package/src/retrieval/embedding-cache.d.ts +17 -0
- package/src/retrieval/embedding-cache.d.ts.map +1 -0
- package/src/retrieval/embedding-cache.js.map +1 -0
- package/src/retrieval/embedding-cache.ts +63 -0
- package/src/retrieval/fusion.d.ts +26 -0
- package/src/retrieval/fusion.d.ts.map +1 -0
- package/src/retrieval/fusion.js.map +1 -0
- package/src/retrieval/fusion.ts +129 -0
- package/src/retrieval/graph-traversal.d.ts +28 -0
- package/src/retrieval/graph-traversal.d.ts.map +1 -0
- package/src/retrieval/graph-traversal.js.map +1 -0
- package/src/retrieval/graph-traversal.ts +235 -0
- package/src/retrieval/index.ts +13 -0
- package/src/retrieval/keyword-search.ts +39 -0
- package/src/retrieval/query-expansion.d.ts +20 -0
- package/src/retrieval/query-expansion.d.ts.map +1 -0
- package/src/retrieval/query-expansion.js.map +1 -0
- package/src/retrieval/query-expansion.ts +86 -0
- package/src/retrieval/reranker.d.ts +15 -0
- package/src/retrieval/reranker.d.ts.map +1 -0
- package/src/retrieval/reranker.js.map +1 -0
- package/src/retrieval/reranker.ts +56 -0
- package/src/retrieval/salience-scorer.d.ts +15 -0
- package/src/retrieval/salience-scorer.d.ts.map +1 -0
- package/src/retrieval/salience-scorer.js.map +1 -0
- package/src/retrieval/salience-scorer.ts +57 -0
- package/src/retrieval/search.d.ts +21 -0
- package/src/retrieval/search.d.ts.map +1 -0
- package/src/retrieval/search.js.map +1 -0
- package/src/retrieval/search.ts +271 -0
- package/src/retrieval/temporal-scorer.ts +111 -0
- package/src/retrieval/trigger-matcher.d.ts +18 -0
- package/src/retrieval/trigger-matcher.d.ts.map +1 -0
- package/src/retrieval/trigger-matcher.js.map +1 -0
- package/src/retrieval/trigger-matcher.ts +180 -0
- package/src/retrieval/types.d.ts +66 -0
- package/src/retrieval/types.d.ts.map +1 -0
- package/src/retrieval/types.js.map +1 -0
- package/src/retrieval/types.ts +82 -0
- package/src/retrieval/vector-search.d.ts +5 -0
- package/src/retrieval/vector-search.d.ts.map +1 -0
- package/src/retrieval/vector-search.js.map +1 -0
- package/src/retrieval/vector-search.ts +38 -0
- package/src/salience/decay.d.ts +9 -0
- package/src/salience/decay.d.ts.map +1 -0
- package/src/salience/decay.js.map +1 -0
- package/src/salience/decay.ts +25 -0
- package/src/salience/index.ts +1 -0
- package/src/scratchpad/index.ts +1 -0
- package/src/scratchpad/scratchpad.d.ts +23 -0
- package/src/scratchpad/scratchpad.d.ts.map +1 -0
- package/src/scratchpad/scratchpad.js.map +1 -0
- package/src/scratchpad/scratchpad.ts +140 -0
- package/src/sessions/index.ts +1 -0
- package/src/sessions/manager.ts +87 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../adapters/storage.js';
|
|
2
|
+
import type { EmbeddingAdapter } from '../adapters/embedding.js';
|
|
3
|
+
import type { Candidate } from './types.js';
|
|
4
|
+
export declare function vectorSearch(storage: StorageAdapter, embedding: EmbeddingAdapter, query: string, tenantId: string, scope: string, scopeId: string, limit: number, asOf?: Date): Promise<Candidate[]>;
|
|
5
|
+
//# sourceMappingURL=vector-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-search.d.ts","sourceRoot":"","sources":["../../src/retrieval/vector-search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,gBAAgB,EAC3B,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,IAAI,GACV,OAAO,CAAC,SAAS,EAAE,CAAC,CAwBtB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export async function vectorSearch(storage, embedding, query, tenantId, scope, scopeId, limit, asOf) {
|
|
2
|
+
const queryEmbedding = await embedding.embed(query);
|
|
3
|
+
const results = await storage.vectorSearch({
|
|
4
|
+
embedding: queryEmbedding,
|
|
5
|
+
tenantId,
|
|
6
|
+
scope,
|
|
7
|
+
scopeId,
|
|
8
|
+
limit,
|
|
9
|
+
minSimilarity: 0.0,
|
|
10
|
+
validOnly: true,
|
|
11
|
+
asOf,
|
|
12
|
+
});
|
|
13
|
+
return results.map((r) => ({
|
|
14
|
+
fact: r.fact,
|
|
15
|
+
vectorScore: r.similarity,
|
|
16
|
+
keywordScore: 0,
|
|
17
|
+
graphScore: 0,
|
|
18
|
+
recencyScore: 0,
|
|
19
|
+
salienceScore: 0,
|
|
20
|
+
temporalScore: 0,
|
|
21
|
+
source: 'vector',
|
|
22
|
+
}));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=vector-search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vector-search.js","sourceRoot":"","sources":["../../src/retrieval/vector-search.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAuB,EACvB,SAA2B,EAC3B,KAAa,EACb,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,KAAa,EACb,IAAW;IAEX,MAAM,cAAc,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC;QACzC,SAAS,EAAE,cAAc;QACzB,QAAQ;QACR,KAAK;QACL,OAAO;QACP,KAAK;QACL,aAAa,EAAE,GAAG;QAClB,SAAS,EAAE,IAAI;QACf,IAAI;KACL,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,WAAW,EAAE,CAAC,CAAC,UAAU;QACzB,YAAY,EAAE,CAAC;QACf,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,QAAiB;KAC1B,CAAC,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface DecayInput {
|
|
2
|
+
importance: number;
|
|
3
|
+
frequency: number;
|
|
4
|
+
lastAccessed: Date | null;
|
|
5
|
+
halfLifeDays: number;
|
|
6
|
+
normalizationK: number;
|
|
7
|
+
}
|
|
8
|
+
export declare function calculateDecayScore(input: DecayInput): number;
|
|
9
|
+
//# sourceMappingURL=decay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decay.d.ts","sourceRoot":"","sources":["../../src/salience/decay.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAgB7D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export function calculateDecayScore(input) {
|
|
2
|
+
const { importance, frequency, lastAccessed, halfLifeDays, normalizationK } = input;
|
|
3
|
+
if (lastAccessed === null)
|
|
4
|
+
return 0;
|
|
5
|
+
// Recency factor: exponential decay using Ebbinghaus forgetting curve
|
|
6
|
+
const daysSinceAccess = (Date.now() - lastAccessed.getTime()) / (1000 * 60 * 60 * 24);
|
|
7
|
+
const lambda = Math.LN2 / halfLifeDays;
|
|
8
|
+
const recencyFactor = Math.exp(-lambda * daysSinceAccess);
|
|
9
|
+
// Frequency factor: logarithmic scaling with fixed normalization constant K
|
|
10
|
+
const frequencyFactor = Math.min(1.0, Math.log(1 + frequency) / Math.log(1 + normalizationK));
|
|
11
|
+
// Final score: clamped to [0, 1]
|
|
12
|
+
const score = importance * recencyFactor * frequencyFactor;
|
|
13
|
+
return Math.max(0, Math.min(1, score));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=decay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decay.js","sourceRoot":"","sources":["../../src/salience/decay.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,mBAAmB,CAAC,KAAiB;IACnD,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAEpF,IAAI,YAAY,KAAK,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpC,sEAAsE;IACtE,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACtF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;IAE1D,4EAA4E;IAC5E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC;IAE9F,iCAAiC;IACjC,MAAM,KAAK,GAAG,UAAU,GAAG,aAAa,GAAG,eAAe,CAAC;IAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/salience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/salience/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAmB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scratchpad/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scratchpad/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../adapters/storage.js';
|
|
2
|
+
import type { LLMAdapter } from '../adapters/llm.js';
|
|
3
|
+
import type { Scope } from '../config.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get or create a scratchpad for a scope.
|
|
6
|
+
* The scratchpad is stored as a special fact with tag 'scratchpad'.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getScratchpad(storage: StorageAdapter, tenantId: string, scope: Scope, scopeId: string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Update the scratchpad after an extraction.
|
|
11
|
+
* Appends new facts to the existing scratchpad, compresses if too long.
|
|
12
|
+
*/
|
|
13
|
+
export declare function updateScratchpad(storage: StorageAdapter, llm: LLMAdapter, tenantId: string, scope: Scope, scopeId: string, newFacts: string[]): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Compress the scratchpad using an LLM.
|
|
16
|
+
* Preserves the most important information while reducing size.
|
|
17
|
+
*/
|
|
18
|
+
export declare function compressScratchpad(llm: LLMAdapter, content: string): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Get filtered scratchpad content relevant to a query.
|
|
21
|
+
*/
|
|
22
|
+
export declare function getRelevantScratchpad(storage: StorageAdapter, llm: LLMAdapter, tenantId: string, scope: Scope, scopeId: string, query: string): Promise<string>;
|
|
23
|
+
//# sourceMappingURL=scratchpad.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scratchpad.d.ts","sourceRoot":"","sources":["../../src/scratchpad/scratchpad.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAK1C;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB1F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CAoBjB"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
const SCRATCHPAD_MAX_CHARS = 5000;
|
|
2
|
+
const SCRATCHPAD_COMPRESSED_CHARS = 2500;
|
|
3
|
+
/**
|
|
4
|
+
* Get or create a scratchpad for a scope.
|
|
5
|
+
* The scratchpad is stored as a special fact with tag 'scratchpad'.
|
|
6
|
+
*/
|
|
7
|
+
export async function getScratchpad(storage, tenantId, scope, scopeId) {
|
|
8
|
+
const facts = await storage.getFactsByScope(tenantId, scope, scopeId, { limit: 100 });
|
|
9
|
+
const scratchpadFact = facts.data.find(f => f.tags?.includes('scratchpad'));
|
|
10
|
+
return scratchpadFact?.content ?? '';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Update the scratchpad after an extraction.
|
|
14
|
+
* Appends new facts to the existing scratchpad, compresses if too long.
|
|
15
|
+
*/
|
|
16
|
+
export async function updateScratchpad(storage, llm, tenantId, scope, scopeId, newFacts) {
|
|
17
|
+
if (newFacts.length === 0)
|
|
18
|
+
return;
|
|
19
|
+
// Get existing scratchpad
|
|
20
|
+
const existing = await getScratchpad(storage, tenantId, scope, scopeId);
|
|
21
|
+
// Append new facts
|
|
22
|
+
const newSection = newFacts.join('\n');
|
|
23
|
+
let updated = existing ? `${existing}\n\n--- New information ---\n${newSection}` : newSection;
|
|
24
|
+
// Compress if too long
|
|
25
|
+
if (updated.length > SCRATCHPAD_MAX_CHARS) {
|
|
26
|
+
updated = await compressScratchpad(llm, updated);
|
|
27
|
+
}
|
|
28
|
+
// Find existing scratchpad fact and invalidate it
|
|
29
|
+
const facts = await storage.getFactsByScope(tenantId, scope, scopeId, { limit: 200 });
|
|
30
|
+
const existingScratchpad = facts.data.find(f => f.tags?.includes('scratchpad'));
|
|
31
|
+
if (existingScratchpad) {
|
|
32
|
+
await storage.invalidateFact(tenantId, existingScratchpad.id);
|
|
33
|
+
}
|
|
34
|
+
// Create new scratchpad fact (no embedding needed — it's retrieved by tag, not vector search)
|
|
35
|
+
const id = crypto.randomUUID();
|
|
36
|
+
await storage.createFact({
|
|
37
|
+
id,
|
|
38
|
+
lineageId: existingScratchpad?.lineageId ?? crypto.randomUUID(),
|
|
39
|
+
tenantId,
|
|
40
|
+
scope,
|
|
41
|
+
scopeId,
|
|
42
|
+
content: updated,
|
|
43
|
+
embeddingModel: 'none',
|
|
44
|
+
embeddingDim: 1,
|
|
45
|
+
importance: 1.0,
|
|
46
|
+
confidence: 1.0,
|
|
47
|
+
operation: existingScratchpad ? 'update' : 'create',
|
|
48
|
+
sourceType: 'api',
|
|
49
|
+
modality: 'text',
|
|
50
|
+
tags: ['scratchpad'],
|
|
51
|
+
metadata: { type: 'scratchpad', updatedAt: new Date().toISOString() },
|
|
52
|
+
contradictionStatus: 'none',
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Compress the scratchpad using an LLM.
|
|
57
|
+
* Preserves the most important information while reducing size.
|
|
58
|
+
*/
|
|
59
|
+
export async function compressScratchpad(llm, content) {
|
|
60
|
+
const response = await llm.complete([
|
|
61
|
+
{
|
|
62
|
+
role: 'system',
|
|
63
|
+
content: `Compress the following user profile/scratchpad into a concise summary of ~${SCRATCHPAD_COMPRESSED_CHARS} characters.
|
|
64
|
+
|
|
65
|
+
Preserve:
|
|
66
|
+
- Names of people and their relationships
|
|
67
|
+
- Key facts (job, location, health, allergies)
|
|
68
|
+
- Strong preferences and personality traits
|
|
69
|
+
- Important events with dates
|
|
70
|
+
- Goals and future plans
|
|
71
|
+
- Contradictions or changes in opinion
|
|
72
|
+
|
|
73
|
+
Remove:
|
|
74
|
+
- Duplicate information
|
|
75
|
+
- Trivial details
|
|
76
|
+
- Repetitive emotional expressions
|
|
77
|
+
|
|
78
|
+
Output ONLY the compressed summary, no explanation.`
|
|
79
|
+
},
|
|
80
|
+
{ role: 'user', content }
|
|
81
|
+
], { temperature: 0 });
|
|
82
|
+
return response.content;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get filtered scratchpad content relevant to a query.
|
|
86
|
+
*/
|
|
87
|
+
export async function getRelevantScratchpad(storage, llm, tenantId, scope, scopeId, query) {
|
|
88
|
+
const scratchpad = await getScratchpad(storage, tenantId, scope, scopeId);
|
|
89
|
+
if (!scratchpad || scratchpad.length < 50)
|
|
90
|
+
return '';
|
|
91
|
+
// If scratchpad is short, return all of it
|
|
92
|
+
if (scratchpad.length < 1000)
|
|
93
|
+
return scratchpad;
|
|
94
|
+
// Filter scratchpad for relevant content
|
|
95
|
+
const response = await llm.complete([
|
|
96
|
+
{
|
|
97
|
+
role: 'system',
|
|
98
|
+
content: 'Extract ONLY the parts of this user profile that are relevant to answering the given question. Return the relevant excerpts. If nothing is relevant, return empty string.'
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
role: 'user',
|
|
102
|
+
content: `Profile:\n${scratchpad}\n\nQuestion: ${query}`
|
|
103
|
+
}
|
|
104
|
+
], { temperature: 0 });
|
|
105
|
+
return response.content;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=scratchpad.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scratchpad.js","sourceRoot":"","sources":["../../src/scratchpad/scratchpad.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sessions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { StorageAdapter } from '../adapters/storage.js';
|
|
2
|
+
import type { LLMAdapter } from '../adapters/llm.js';
|
|
3
|
+
import type { Session } from '../models/session.js';
|
|
4
|
+
import type { SessionScope } from '../config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Find an active (not ended) session for the given scope, or create a new one.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getOrCreateActiveSession(storage: StorageAdapter, tenantId: string, scope: SessionScope, scopeId: string): Promise<Session>;
|
|
9
|
+
export declare function startSession(storage: StorageAdapter, tenantId: string, scope: SessionScope, scopeId: string, metadata?: Record<string, unknown>): Promise<Session>;
|
|
10
|
+
export declare function endSession(storage: StorageAdapter, llm: LLMAdapter, tenantId: string, sessionId: string): Promise<Session>;
|
|
11
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/sessions/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE,UAAU,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CA0ClB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Find an active (not ended) session for the given scope, or create a new one.
|
|
3
|
+
*/
|
|
4
|
+
export async function getOrCreateActiveSession(storage, tenantId, scope, scopeId) {
|
|
5
|
+
// Fetch a few recent sessions — the active one (if any) is likely the most recent,
|
|
6
|
+
// but we check a small batch in case the latest was already ended.
|
|
7
|
+
const sessions = await storage.getSessionsByScope(tenantId, scope, scopeId, { limit: 5 });
|
|
8
|
+
const active = sessions.data.find(s => !s.endedAt);
|
|
9
|
+
if (active)
|
|
10
|
+
return active;
|
|
11
|
+
return startSession(storage, tenantId, scope, scopeId);
|
|
12
|
+
}
|
|
13
|
+
export async function startSession(storage, tenantId, scope, scopeId, metadata) {
|
|
14
|
+
const id = crypto.randomUUID();
|
|
15
|
+
return storage.createSession({
|
|
16
|
+
id,
|
|
17
|
+
tenantId,
|
|
18
|
+
scope,
|
|
19
|
+
scopeId,
|
|
20
|
+
metadata: metadata ?? {},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export async function endSession(storage, llm, tenantId, sessionId) {
|
|
24
|
+
// 1. Get session
|
|
25
|
+
const session = await storage.getSession(tenantId, sessionId);
|
|
26
|
+
if (!session)
|
|
27
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
28
|
+
if (session.endedAt)
|
|
29
|
+
throw new Error(`Session ${sessionId} already ended`);
|
|
30
|
+
// 2. Get facts created during this session
|
|
31
|
+
const facts = await storage.getFactsByScope(tenantId, session.scope, session.scopeId, { limit: 100 });
|
|
32
|
+
const sessionFacts = facts.data.filter(f => f.sessionId === sessionId);
|
|
33
|
+
// 3. Generate summary if there are facts
|
|
34
|
+
let summary;
|
|
35
|
+
let topics;
|
|
36
|
+
if (sessionFacts.length > 0) {
|
|
37
|
+
const factContents = sessionFacts.map(f => f.content).join('\n');
|
|
38
|
+
const response = await llm.complete([
|
|
39
|
+
{
|
|
40
|
+
role: 'system',
|
|
41
|
+
content: 'Summarize the following facts from a conversation session in 2-3 sentences. Also extract the main topics (as a JSON array of strings). Return JSON: {"summary": "...", "topics": ["..."]}',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
role: 'user',
|
|
45
|
+
content: factContents,
|
|
46
|
+
},
|
|
47
|
+
], { temperature: 0, responseFormat: 'json' });
|
|
48
|
+
try {
|
|
49
|
+
const parsed = JSON.parse(response.content);
|
|
50
|
+
summary = typeof parsed.summary === 'string' ? parsed.summary : undefined;
|
|
51
|
+
topics = Array.isArray(parsed.topics)
|
|
52
|
+
? parsed.topics.filter((t) => typeof t === 'string')
|
|
53
|
+
: undefined;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// If JSON parse fails, use raw content as summary
|
|
57
|
+
summary = response.content;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 4. End the session
|
|
61
|
+
return storage.endSession(tenantId, sessionId, summary, topics);
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/sessions/manager.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@steno-ai/engine",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Core memory engine — extraction, retrieval, knowledge graph",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/SankrityaT/steno-ai.git",
|
|
9
|
+
"directory": "packages/engine"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"import": "./dist/index.js",
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"development": "./src/index.ts"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"files": ["dist", "src", "README.md"],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"test": "vitest run",
|
|
23
|
+
"test:watch": "vitest watch",
|
|
24
|
+
"typecheck": "tsc --noEmit",
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"clean": "rm -rf dist"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"bcryptjs": "^3.0.3",
|
|
30
|
+
"compromise": "^14.15.0",
|
|
31
|
+
"zod": "^3.23"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@types/bcryptjs": "^3.0.0",
|
|
35
|
+
"typescript": "^5.7",
|
|
36
|
+
"vitest": "^3"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface CacheAdapter {
|
|
2
|
+
get<T>(key: string): Promise<T | null>;
|
|
3
|
+
set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
|
|
4
|
+
del(key: string): Promise<void>;
|
|
5
|
+
incr(key: string): Promise<number>;
|
|
6
|
+
expire(key: string, ttlSeconds: number): Promise<void>;
|
|
7
|
+
ping(): Promise<boolean>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["cache.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACvC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["cache.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface CacheAdapter {
|
|
2
|
+
get<T>(key: string): Promise<T | null>;
|
|
3
|
+
set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
|
|
4
|
+
del(key: string): Promise<void>;
|
|
5
|
+
incr(key: string): Promise<number>;
|
|
6
|
+
expire(key: string, ttlSeconds: number): Promise<void>;
|
|
7
|
+
ping(): Promise<boolean>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["embedding.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding.js","sourceRoot":"","sources":["embedding.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { EmbeddingAdapter } from './embedding.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Gemini Embedding Adapter — uses Google's free gemini-embedding-001 model.
|
|
5
|
+
* SOTA retrieval quality (67.71% MTEB) vs text-embedding-3-small (62.3%).
|
|
6
|
+
*/
|
|
7
|
+
export class GeminiEmbeddingAdapter implements EmbeddingAdapter {
|
|
8
|
+
readonly model: string;
|
|
9
|
+
readonly dimensions: number;
|
|
10
|
+
private apiKey: string;
|
|
11
|
+
private baseUrl: string;
|
|
12
|
+
|
|
13
|
+
constructor(config: { apiKey: string; model?: string }) {
|
|
14
|
+
this.apiKey = config.apiKey;
|
|
15
|
+
this.model = config.model ?? 'gemini-embedding-001';
|
|
16
|
+
this.dimensions = 3072; // gemini-embedding-001 outputs 3072
|
|
17
|
+
this.baseUrl = 'https://generativelanguage.googleapis.com/v1beta';
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
async embed(text: string): Promise<number[]> {
|
|
21
|
+
const response = await fetch(
|
|
22
|
+
`${this.baseUrl}/models/${this.model}:embedContent?key=${this.apiKey}`,
|
|
23
|
+
{
|
|
24
|
+
method: 'POST',
|
|
25
|
+
headers: { 'Content-Type': 'application/json' },
|
|
26
|
+
body: JSON.stringify({
|
|
27
|
+
model: `models/${this.model}`,
|
|
28
|
+
content: { parts: [{ text }] },
|
|
29
|
+
}),
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
if (!response.ok) {
|
|
34
|
+
const err = await response.text();
|
|
35
|
+
throw new Error(`Gemini embedding error (${response.status}): ${err}`);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const data = await response.json() as { embedding: { values: number[] } };
|
|
39
|
+
return data.embedding.values;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
async embedBatch(texts: string[]): Promise<number[][]> {
|
|
43
|
+
if (texts.length === 0) return [];
|
|
44
|
+
|
|
45
|
+
const response = await fetch(
|
|
46
|
+
`${this.baseUrl}/models/${this.model}:batchEmbedContents?key=${this.apiKey}`,
|
|
47
|
+
{
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: { 'Content-Type': 'application/json' },
|
|
50
|
+
body: JSON.stringify({
|
|
51
|
+
requests: texts.map(text => ({
|
|
52
|
+
model: `models/${this.model}`,
|
|
53
|
+
content: { parts: [{ text }] },
|
|
54
|
+
})),
|
|
55
|
+
}),
|
|
56
|
+
}
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
const err = await response.text();
|
|
61
|
+
throw new Error(`Gemini batch embedding error (${response.status}): ${err}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const data = await response.json() as { embeddings: Array<{ values: number[] }> };
|
|
65
|
+
return data.embeddings.map(e => e.values);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface LLMMessage {
|
|
2
|
+
role: 'system' | 'user' | 'assistant';
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
export interface LLMResponse {
|
|
6
|
+
content: string;
|
|
7
|
+
tokensInput: number;
|
|
8
|
+
tokensOutput: number;
|
|
9
|
+
model: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LLMAdapter {
|
|
12
|
+
complete(messages: LLMMessage[], options?: {
|
|
13
|
+
temperature?: number;
|
|
14
|
+
maxTokens?: number;
|
|
15
|
+
responseFormat?: 'json';
|
|
16
|
+
}): Promise<LLMResponse>;
|
|
17
|
+
readonly model: string;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACxI,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["llm.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface LLMMessage {
|
|
2
|
+
role: 'system' | 'user' | 'assistant';
|
|
3
|
+
content: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export interface LLMResponse {
|
|
7
|
+
content: string;
|
|
8
|
+
tokensInput: number;
|
|
9
|
+
tokensOutput: number;
|
|
10
|
+
model: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface LLMAdapter {
|
|
14
|
+
complete(messages: LLMMessage[], options?: { temperature?: number; maxTokens?: number; responseFormat?: 'json' }): Promise<LLMResponse>;
|
|
15
|
+
readonly model: string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { EmbeddingAdapter } from './embedding.js';
|
|
2
|
+
export interface PerplexityEmbeddingConfig {
|
|
3
|
+
apiKey: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
dimensions?: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Perplexity embedding adapter using pplx-embed models.
|
|
9
|
+
* SOTA quality at $0.03/1M tokens for pplx-embed-v1-4b.
|
|
10
|
+
*
|
|
11
|
+
* IMPORTANT: Perplexity returns base64-encoded int8 embeddings by default.
|
|
12
|
+
* These are decoded to float32 and L2-normalized for cosine similarity compatibility
|
|
13
|
+
* with pgvector and other vector DBs.
|
|
14
|
+
*/
|
|
15
|
+
export declare class PerplexityEmbeddingAdapter implements EmbeddingAdapter {
|
|
16
|
+
readonly model: string;
|
|
17
|
+
readonly dimensions: number;
|
|
18
|
+
private readonly apiKey;
|
|
19
|
+
private readonly baseUrl;
|
|
20
|
+
constructor(config: PerplexityEmbeddingConfig);
|
|
21
|
+
embed(text: string): Promise<number[]>;
|
|
22
|
+
embedBatch(texts: string[]): Promise<number[][]>;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=perplexity-embedding.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-embedding.d.ts","sourceRoot":"","sources":["perplexity-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA2B,YAAW,gBAAgB;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6C;gBAEzD,MAAM,EAAE,yBAAyB;IAMvC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKtC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;CA+BvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"perplexity-embedding.js","sourceRoot":"","sources":["perplexity-embedding.ts"],"names":[],"mappings":"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"}
|