@steno-ai/engine 0.1.11 → 0.1.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -0
- package/dist/adapters/cache.d.ts +0 -0
- package/dist/adapters/cache.d.ts.map +0 -0
- package/dist/adapters/cache.js +0 -0
- package/dist/adapters/cache.js.map +0 -0
- package/dist/adapters/embedding.d.ts +0 -0
- package/dist/adapters/embedding.d.ts.map +0 -0
- package/dist/adapters/embedding.js +0 -0
- package/dist/adapters/embedding.js.map +0 -0
- package/dist/adapters/gemini-embedding.d.ts +0 -0
- package/dist/adapters/gemini-embedding.d.ts.map +0 -0
- package/dist/adapters/gemini-embedding.js +0 -0
- package/dist/adapters/gemini-embedding.js.map +0 -0
- package/dist/adapters/index.d.ts +0 -0
- package/dist/adapters/index.d.ts.map +0 -0
- package/dist/adapters/index.js +0 -0
- package/dist/adapters/index.js.map +0 -0
- package/dist/adapters/llm.d.ts +0 -0
- package/dist/adapters/llm.d.ts.map +0 -0
- package/dist/adapters/llm.js +0 -0
- package/dist/adapters/llm.js.map +0 -0
- package/dist/adapters/perplexity-embedding.d.ts +0 -0
- package/dist/adapters/perplexity-embedding.d.ts.map +0 -0
- package/dist/adapters/perplexity-embedding.js +0 -0
- package/dist/adapters/perplexity-embedding.js.map +0 -0
- package/dist/adapters/storage.d.ts +0 -0
- package/dist/adapters/storage.d.ts.map +0 -0
- package/dist/adapters/storage.js +0 -0
- package/dist/adapters/storage.js.map +0 -0
- package/dist/auth/api-key.d.ts +0 -0
- package/dist/auth/api-key.d.ts.map +0 -0
- package/dist/auth/api-key.js +0 -0
- package/dist/auth/api-key.js.map +0 -0
- package/dist/auth/index.d.ts +0 -0
- package/dist/auth/index.d.ts.map +0 -0
- package/dist/auth/index.js +0 -0
- package/dist/auth/index.js.map +0 -0
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -1
- package/dist/config.js.map +1 -1
- package/dist/extraction/codebase-extractor.d.ts +14 -0
- package/dist/extraction/codebase-extractor.d.ts.map +1 -0
- package/dist/extraction/codebase-extractor.js +186 -0
- package/dist/extraction/codebase-extractor.js.map +1 -0
- package/dist/extraction/codebase-prompts.d.ts +13 -0
- package/dist/extraction/codebase-prompts.d.ts.map +1 -0
- package/dist/extraction/codebase-prompts.js +132 -0
- package/dist/extraction/codebase-prompts.js.map +1 -0
- package/dist/extraction/contradiction.d.ts +0 -0
- package/dist/extraction/contradiction.d.ts.map +0 -0
- package/dist/extraction/contradiction.js +0 -0
- package/dist/extraction/contradiction.js.map +0 -0
- package/dist/extraction/cross-linker.d.ts +0 -0
- package/dist/extraction/cross-linker.d.ts.map +0 -0
- package/dist/extraction/cross-linker.js +0 -0
- package/dist/extraction/cross-linker.js.map +0 -0
- package/dist/extraction/dedup.d.ts +0 -0
- package/dist/extraction/dedup.d.ts.map +0 -0
- package/dist/extraction/dedup.js +0 -0
- package/dist/extraction/dedup.js.map +0 -0
- package/dist/extraction/entity-extractor.d.ts +0 -0
- package/dist/extraction/entity-extractor.d.ts.map +0 -0
- package/dist/extraction/entity-extractor.js +0 -0
- package/dist/extraction/entity-extractor.js.map +0 -0
- package/dist/extraction/hasher.d.ts +0 -0
- package/dist/extraction/hasher.d.ts.map +0 -0
- package/dist/extraction/hasher.js +0 -0
- package/dist/extraction/hasher.js.map +0 -0
- package/dist/extraction/heuristic.d.ts +0 -0
- package/dist/extraction/heuristic.d.ts.map +0 -0
- package/dist/extraction/heuristic.js +0 -0
- package/dist/extraction/heuristic.js.map +0 -0
- package/dist/extraction/index.d.ts +2 -0
- package/dist/extraction/index.d.ts.map +1 -1
- package/dist/extraction/index.js +2 -0
- package/dist/extraction/index.js.map +1 -1
- package/dist/extraction/llm-extractor.d.ts +0 -0
- package/dist/extraction/llm-extractor.d.ts.map +1 -1
- package/dist/extraction/llm-extractor.js +5 -1
- package/dist/extraction/llm-extractor.js.map +1 -1
- package/dist/extraction/pipeline.d.ts +2 -0
- package/dist/extraction/pipeline.d.ts.map +1 -1
- package/dist/extraction/pipeline.js +88 -51
- package/dist/extraction/pipeline.js.map +1 -1
- package/dist/extraction/prompts.d.ts +0 -0
- package/dist/extraction/prompts.d.ts.map +0 -0
- package/dist/extraction/prompts.js +0 -0
- package/dist/extraction/prompts.js.map +0 -0
- package/dist/extraction/sliding-window.d.ts +0 -0
- package/dist/extraction/sliding-window.d.ts.map +0 -0
- package/dist/extraction/sliding-window.js +0 -0
- package/dist/extraction/sliding-window.js.map +0 -0
- package/dist/extraction/types.d.ts +1 -1
- package/dist/extraction/types.d.ts.map +1 -1
- package/dist/extraction/types.js +0 -0
- package/dist/extraction/types.js.map +0 -0
- package/dist/feedback/index.d.ts +0 -0
- package/dist/feedback/index.d.ts.map +0 -0
- package/dist/feedback/index.js +0 -0
- package/dist/feedback/index.js.map +0 -0
- package/dist/feedback/tracker.d.ts +0 -0
- package/dist/feedback/tracker.d.ts.map +0 -0
- package/dist/feedback/tracker.js +0 -0
- package/dist/feedback/tracker.js.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.d.ts.map +0 -0
- package/dist/index.js +0 -0
- package/dist/index.js.map +0 -0
- package/dist/models/api-key.d.ts +0 -0
- package/dist/models/api-key.d.ts.map +0 -0
- package/dist/models/api-key.js +0 -0
- package/dist/models/api-key.js.map +0 -0
- package/dist/models/edge.d.ts +6 -6
- package/dist/models/edge.d.ts.map +0 -0
- package/dist/models/edge.js +0 -0
- package/dist/models/edge.js.map +0 -0
- package/dist/models/entity.d.ts +0 -0
- package/dist/models/entity.d.ts.map +0 -0
- package/dist/models/entity.js +0 -0
- package/dist/models/entity.js.map +0 -0
- package/dist/models/extraction.d.ts +12 -12
- package/dist/models/extraction.d.ts.map +0 -0
- package/dist/models/extraction.js +0 -0
- package/dist/models/extraction.js.map +0 -0
- package/dist/models/fact-entity.d.ts +0 -0
- package/dist/models/fact-entity.d.ts.map +0 -0
- package/dist/models/fact-entity.js +0 -0
- package/dist/models/fact-entity.js.map +0 -0
- package/dist/models/fact.d.ts +12 -12
- package/dist/models/fact.d.ts.map +0 -0
- package/dist/models/fact.js +0 -0
- package/dist/models/fact.js.map +0 -0
- package/dist/models/index.d.ts +0 -0
- package/dist/models/index.d.ts.map +0 -0
- package/dist/models/index.js +0 -0
- package/dist/models/index.js.map +0 -0
- package/dist/models/memory-access.d.ts +0 -0
- package/dist/models/memory-access.d.ts.map +0 -0
- package/dist/models/memory-access.js +0 -0
- package/dist/models/memory-access.js.map +0 -0
- package/dist/models/session-message.d.ts +0 -0
- package/dist/models/session-message.d.ts.map +0 -0
- package/dist/models/session-message.js +0 -0
- package/dist/models/session-message.js.map +0 -0
- package/dist/models/session.d.ts +0 -0
- package/dist/models/session.d.ts.map +0 -0
- package/dist/models/session.js +0 -0
- package/dist/models/session.js.map +0 -0
- package/dist/models/tenant.d.ts +0 -0
- package/dist/models/tenant.d.ts.map +0 -0
- package/dist/models/tenant.js +0 -0
- package/dist/models/tenant.js.map +0 -0
- package/dist/models/trigger.d.ts +6 -6
- package/dist/models/trigger.d.ts.map +0 -0
- package/dist/models/trigger.js +0 -0
- package/dist/models/trigger.js.map +0 -0
- package/dist/models/usage-record.d.ts +0 -0
- package/dist/models/usage-record.d.ts.map +0 -0
- package/dist/models/usage-record.js +0 -0
- package/dist/models/usage-record.js.map +0 -0
- package/dist/models/webhook.d.ts +0 -0
- package/dist/models/webhook.d.ts.map +0 -0
- package/dist/models/webhook.js +0 -0
- package/dist/models/webhook.js.map +0 -0
- package/dist/profiles/index.d.ts +0 -0
- package/dist/profiles/index.d.ts.map +0 -0
- package/dist/profiles/index.js +0 -0
- package/dist/profiles/index.js.map +0 -0
- package/dist/profiles/profile.d.ts +0 -0
- package/dist/profiles/profile.d.ts.map +0 -0
- package/dist/profiles/profile.js +0 -0
- package/dist/profiles/profile.js.map +0 -0
- package/dist/retrieval/compound-search.d.ts +0 -0
- package/dist/retrieval/compound-search.d.ts.map +0 -0
- package/dist/retrieval/compound-search.js +0 -0
- package/dist/retrieval/compound-search.js.map +0 -0
- package/dist/retrieval/contradiction-surfacer.d.ts +0 -0
- package/dist/retrieval/contradiction-surfacer.d.ts.map +0 -0
- package/dist/retrieval/contradiction-surfacer.js +0 -0
- package/dist/retrieval/contradiction-surfacer.js.map +0 -0
- package/dist/retrieval/embedding-cache.d.ts +0 -0
- package/dist/retrieval/embedding-cache.d.ts.map +0 -0
- package/dist/retrieval/embedding-cache.js +0 -0
- package/dist/retrieval/embedding-cache.js.map +0 -0
- package/dist/retrieval/fusion.d.ts +0 -0
- package/dist/retrieval/fusion.d.ts.map +0 -0
- package/dist/retrieval/fusion.js +0 -0
- package/dist/retrieval/fusion.js.map +0 -0
- package/dist/retrieval/graph-traversal.d.ts +0 -0
- package/dist/retrieval/graph-traversal.d.ts.map +0 -0
- package/dist/retrieval/graph-traversal.js +0 -0
- package/dist/retrieval/graph-traversal.js.map +0 -0
- package/dist/retrieval/index.d.ts +0 -0
- package/dist/retrieval/index.d.ts.map +0 -0
- package/dist/retrieval/index.js +0 -0
- package/dist/retrieval/index.js.map +0 -0
- package/dist/retrieval/keyword-search.d.ts +0 -0
- package/dist/retrieval/keyword-search.d.ts.map +0 -0
- package/dist/retrieval/keyword-search.js +0 -0
- package/dist/retrieval/keyword-search.js.map +0 -0
- package/dist/retrieval/query-expansion.d.ts +0 -0
- package/dist/retrieval/query-expansion.d.ts.map +0 -0
- package/dist/retrieval/query-expansion.js +0 -0
- package/dist/retrieval/query-expansion.js.map +0 -0
- package/dist/retrieval/reranker.d.ts +0 -0
- package/dist/retrieval/reranker.d.ts.map +0 -0
- package/dist/retrieval/reranker.js +0 -0
- package/dist/retrieval/reranker.js.map +0 -0
- package/dist/retrieval/salience-scorer.d.ts +0 -0
- package/dist/retrieval/salience-scorer.d.ts.map +0 -0
- package/dist/retrieval/salience-scorer.js +0 -0
- package/dist/retrieval/salience-scorer.js.map +0 -0
- package/dist/retrieval/search.d.ts +0 -0
- package/dist/retrieval/search.d.ts.map +1 -1
- package/dist/retrieval/search.js +77 -66
- package/dist/retrieval/search.js.map +1 -1
- package/dist/retrieval/temporal-scorer.d.ts +0 -0
- package/dist/retrieval/temporal-scorer.d.ts.map +0 -0
- package/dist/retrieval/temporal-scorer.js +0 -0
- package/dist/retrieval/temporal-scorer.js.map +0 -0
- package/dist/retrieval/trigger-matcher.d.ts +0 -0
- package/dist/retrieval/trigger-matcher.d.ts.map +0 -0
- package/dist/retrieval/trigger-matcher.js +0 -0
- package/dist/retrieval/trigger-matcher.js.map +0 -0
- package/dist/retrieval/types.d.ts +4 -0
- package/dist/retrieval/types.d.ts.map +1 -1
- package/dist/retrieval/types.js +10 -0
- package/dist/retrieval/types.js.map +1 -1
- package/dist/retrieval/vector-search.d.ts +0 -0
- package/dist/retrieval/vector-search.d.ts.map +0 -0
- package/dist/retrieval/vector-search.js +0 -0
- package/dist/retrieval/vector-search.js.map +0 -0
- package/dist/salience/decay.d.ts +0 -0
- package/dist/salience/decay.d.ts.map +0 -0
- package/dist/salience/decay.js +0 -0
- package/dist/salience/decay.js.map +0 -0
- package/dist/salience/index.d.ts +0 -0
- package/dist/salience/index.d.ts.map +0 -0
- package/dist/salience/index.js +0 -0
- package/dist/salience/index.js.map +0 -0
- package/dist/scratchpad/index.d.ts +0 -0
- package/dist/scratchpad/index.d.ts.map +0 -0
- package/dist/scratchpad/index.js +0 -0
- package/dist/scratchpad/index.js.map +0 -0
- package/dist/scratchpad/scratchpad.d.ts +0 -0
- package/dist/scratchpad/scratchpad.d.ts.map +0 -0
- package/dist/scratchpad/scratchpad.js +0 -0
- package/dist/scratchpad/scratchpad.js.map +0 -0
- package/dist/sessions/index.d.ts +0 -0
- package/dist/sessions/index.d.ts.map +0 -0
- package/dist/sessions/index.js +0 -0
- package/dist/sessions/index.js.map +0 -0
- package/dist/sessions/manager.d.ts +0 -0
- package/dist/sessions/manager.d.ts.map +0 -0
- package/dist/sessions/manager.js +0 -0
- package/dist/sessions/manager.js.map +0 -0
- package/package.json +9 -9
- package/src/adapters/cache.d.ts +0 -0
- package/src/adapters/cache.d.ts.map +0 -0
- package/src/adapters/cache.js +0 -0
- package/src/adapters/cache.js.map +0 -0
- package/src/adapters/cache.ts +0 -0
- package/src/adapters/embedding.d.ts +0 -0
- package/src/adapters/embedding.d.ts.map +0 -0
- package/src/adapters/embedding.js +0 -0
- package/src/adapters/embedding.js.map +0 -0
- package/src/adapters/embedding.ts +0 -0
- package/src/adapters/gemini-embedding.ts +0 -0
- package/src/adapters/index.ts +0 -0
- package/src/adapters/llm.d.ts +0 -0
- package/src/adapters/llm.d.ts.map +0 -0
- package/src/adapters/llm.js +0 -0
- package/src/adapters/llm.js.map +0 -0
- package/src/adapters/llm.ts +0 -0
- package/src/adapters/perplexity-embedding.d.ts +0 -0
- package/src/adapters/perplexity-embedding.d.ts.map +0 -0
- package/src/adapters/perplexity-embedding.js +0 -0
- package/src/adapters/perplexity-embedding.js.map +0 -0
- package/src/adapters/perplexity-embedding.ts +0 -0
- package/src/adapters/storage.d.ts +0 -0
- package/src/adapters/storage.d.ts.map +0 -0
- package/src/adapters/storage.js +0 -0
- package/src/adapters/storage.js.map +0 -0
- package/src/adapters/storage.ts +0 -0
- package/src/auth/api-key.ts +0 -0
- package/src/auth/index.ts +0 -0
- package/src/config.d.ts +0 -0
- package/src/config.d.ts.map +0 -0
- package/src/config.js +0 -0
- package/src/config.js.map +0 -0
- package/src/config.ts +13 -1
- package/src/extraction/codebase-extractor.ts +217 -0
- package/src/extraction/codebase-prompts.ts +141 -0
- package/src/extraction/contradiction.d.ts +0 -0
- package/src/extraction/contradiction.d.ts.map +0 -0
- package/src/extraction/contradiction.js +0 -0
- package/src/extraction/contradiction.js.map +0 -0
- package/src/extraction/contradiction.ts +0 -0
- package/src/extraction/cross-linker.d.ts +0 -0
- package/src/extraction/cross-linker.d.ts.map +0 -0
- package/src/extraction/cross-linker.js +0 -0
- package/src/extraction/cross-linker.js.map +0 -0
- package/src/extraction/cross-linker.ts +0 -0
- package/src/extraction/dedup.d.ts +0 -0
- package/src/extraction/dedup.d.ts.map +0 -0
- package/src/extraction/dedup.js +0 -0
- package/src/extraction/dedup.js.map +0 -0
- package/src/extraction/dedup.ts +0 -0
- package/src/extraction/entity-extractor.d.ts +0 -0
- package/src/extraction/entity-extractor.d.ts.map +0 -0
- package/src/extraction/entity-extractor.js +0 -0
- package/src/extraction/entity-extractor.js.map +0 -0
- package/src/extraction/entity-extractor.ts +0 -0
- package/src/extraction/hasher.d.ts +0 -0
- package/src/extraction/hasher.d.ts.map +0 -0
- package/src/extraction/hasher.js +0 -0
- package/src/extraction/hasher.js.map +0 -0
- package/src/extraction/hasher.ts +0 -0
- package/src/extraction/heuristic.d.ts +0 -0
- package/src/extraction/heuristic.d.ts.map +0 -0
- package/src/extraction/heuristic.js +0 -0
- package/src/extraction/heuristic.js.map +0 -0
- package/src/extraction/heuristic.ts +0 -0
- package/src/extraction/index.ts +2 -0
- package/src/extraction/llm-extractor.d.ts +0 -0
- package/src/extraction/llm-extractor.d.ts.map +0 -0
- package/src/extraction/llm-extractor.js +0 -0
- package/src/extraction/llm-extractor.js.map +0 -0
- package/src/extraction/llm-extractor.ts +5 -1
- package/src/extraction/pipeline.d.ts +0 -0
- package/src/extraction/pipeline.d.ts.map +0 -0
- package/src/extraction/pipeline.js +0 -0
- package/src/extraction/pipeline.js.map +0 -0
- package/src/extraction/pipeline.ts +108 -59
- package/src/extraction/prompts.d.ts +0 -0
- package/src/extraction/prompts.d.ts.map +0 -0
- package/src/extraction/prompts.js +0 -0
- package/src/extraction/prompts.js.map +0 -0
- package/src/extraction/prompts.ts +0 -0
- package/src/extraction/sliding-window.d.ts +0 -0
- package/src/extraction/sliding-window.d.ts.map +0 -0
- package/src/extraction/sliding-window.js +0 -0
- package/src/extraction/sliding-window.js.map +0 -0
- package/src/extraction/sliding-window.ts +0 -0
- package/src/extraction/types.d.ts +0 -0
- package/src/extraction/types.d.ts.map +0 -0
- package/src/extraction/types.js +0 -0
- package/src/extraction/types.js.map +0 -0
- package/src/extraction/types.ts +1 -1
- package/src/feedback/index.ts +0 -0
- package/src/feedback/tracker.d.ts +0 -0
- package/src/feedback/tracker.d.ts.map +0 -0
- package/src/feedback/tracker.js +0 -0
- package/src/feedback/tracker.js.map +0 -0
- package/src/feedback/tracker.ts +0 -0
- package/src/index.ts +0 -0
- package/src/models/api-key.d.ts +0 -0
- package/src/models/api-key.d.ts.map +0 -0
- package/src/models/api-key.js +0 -0
- package/src/models/api-key.js.map +0 -0
- package/src/models/api-key.ts +0 -0
- package/src/models/edge.d.ts +0 -0
- package/src/models/edge.d.ts.map +0 -0
- package/src/models/edge.js +0 -0
- package/src/models/edge.js.map +0 -0
- package/src/models/edge.ts +0 -0
- package/src/models/entity.d.ts +0 -0
- package/src/models/entity.d.ts.map +0 -0
- package/src/models/entity.js +0 -0
- package/src/models/entity.js.map +0 -0
- package/src/models/entity.ts +0 -0
- package/src/models/extraction.d.ts +0 -0
- package/src/models/extraction.d.ts.map +0 -0
- package/src/models/extraction.js +0 -0
- package/src/models/extraction.js.map +0 -0
- package/src/models/extraction.ts +0 -0
- package/src/models/fact-entity.d.ts +0 -0
- package/src/models/fact-entity.d.ts.map +0 -0
- package/src/models/fact-entity.js +0 -0
- package/src/models/fact-entity.js.map +0 -0
- package/src/models/fact-entity.ts +0 -0
- package/src/models/fact.d.ts +0 -0
- package/src/models/fact.d.ts.map +0 -0
- package/src/models/fact.js +0 -0
- package/src/models/fact.js.map +0 -0
- package/src/models/fact.ts +0 -0
- package/src/models/index.d.ts +0 -0
- package/src/models/index.d.ts.map +0 -0
- package/src/models/index.js +0 -0
- package/src/models/index.js.map +0 -0
- package/src/models/index.ts +0 -0
- package/src/models/memory-access.d.ts +0 -0
- package/src/models/memory-access.d.ts.map +0 -0
- package/src/models/memory-access.js +0 -0
- package/src/models/memory-access.js.map +0 -0
- package/src/models/memory-access.ts +0 -0
- package/src/models/session-message.ts +0 -0
- package/src/models/session.d.ts +0 -0
- package/src/models/session.d.ts.map +0 -0
- package/src/models/session.js +0 -0
- package/src/models/session.js.map +0 -0
- package/src/models/session.ts +0 -0
- package/src/models/tenant.d.ts +0 -0
- package/src/models/tenant.d.ts.map +0 -0
- package/src/models/tenant.js +0 -0
- package/src/models/tenant.js.map +0 -0
- package/src/models/tenant.ts +0 -0
- package/src/models/trigger.d.ts +0 -0
- package/src/models/trigger.d.ts.map +0 -0
- package/src/models/trigger.js +0 -0
- package/src/models/trigger.js.map +0 -0
- package/src/models/trigger.ts +0 -0
- package/src/models/usage-record.d.ts +0 -0
- package/src/models/usage-record.d.ts.map +0 -0
- package/src/models/usage-record.js +0 -0
- package/src/models/usage-record.js.map +0 -0
- package/src/models/usage-record.ts +0 -0
- package/src/models/webhook.d.ts +0 -0
- package/src/models/webhook.d.ts.map +0 -0
- package/src/models/webhook.js +0 -0
- package/src/models/webhook.js.map +0 -0
- package/src/models/webhook.ts +0 -0
- package/src/profiles/index.ts +0 -0
- package/src/profiles/profile.ts +0 -0
- package/src/retrieval/compound-search.d.ts +0 -0
- package/src/retrieval/compound-search.d.ts.map +0 -0
- package/src/retrieval/compound-search.js +0 -0
- package/src/retrieval/compound-search.js.map +0 -0
- package/src/retrieval/compound-search.ts +0 -0
- package/src/retrieval/contradiction-surfacer.d.ts +0 -0
- package/src/retrieval/contradiction-surfacer.d.ts.map +0 -0
- package/src/retrieval/contradiction-surfacer.js +0 -0
- package/src/retrieval/contradiction-surfacer.js.map +0 -0
- package/src/retrieval/contradiction-surfacer.ts +0 -0
- package/src/retrieval/embedding-cache.d.ts +0 -0
- package/src/retrieval/embedding-cache.d.ts.map +0 -0
- package/src/retrieval/embedding-cache.js +0 -0
- package/src/retrieval/embedding-cache.js.map +0 -0
- package/src/retrieval/embedding-cache.ts +0 -0
- package/src/retrieval/fusion.d.ts +0 -0
- package/src/retrieval/fusion.d.ts.map +0 -0
- package/src/retrieval/fusion.js +0 -0
- package/src/retrieval/fusion.js.map +0 -0
- package/src/retrieval/fusion.ts +0 -0
- package/src/retrieval/graph-traversal.d.ts +0 -0
- package/src/retrieval/graph-traversal.d.ts.map +0 -0
- package/src/retrieval/graph-traversal.js +0 -0
- package/src/retrieval/graph-traversal.js.map +0 -0
- package/src/retrieval/graph-traversal.ts +0 -0
- package/src/retrieval/index.ts +0 -0
- package/src/retrieval/keyword-search.ts +0 -0
- package/src/retrieval/query-expansion.d.ts +0 -0
- package/src/retrieval/query-expansion.d.ts.map +0 -0
- package/src/retrieval/query-expansion.js +0 -0
- package/src/retrieval/query-expansion.js.map +0 -0
- package/src/retrieval/query-expansion.ts +0 -0
- package/src/retrieval/reranker.d.ts +0 -0
- package/src/retrieval/reranker.d.ts.map +0 -0
- package/src/retrieval/reranker.js +0 -0
- package/src/retrieval/reranker.js.map +0 -0
- package/src/retrieval/reranker.ts +0 -0
- package/src/retrieval/salience-scorer.d.ts +0 -0
- package/src/retrieval/salience-scorer.d.ts.map +0 -0
- package/src/retrieval/salience-scorer.js +0 -0
- package/src/retrieval/salience-scorer.js.map +0 -0
- package/src/retrieval/salience-scorer.ts +0 -0
- package/src/retrieval/search.d.ts +0 -0
- package/src/retrieval/search.d.ts.map +0 -0
- package/src/retrieval/search.js +0 -0
- package/src/retrieval/search.js.map +0 -0
- package/src/retrieval/search.ts +84 -67
- package/src/retrieval/temporal-scorer.d.ts +0 -0
- package/src/retrieval/temporal-scorer.d.ts.map +0 -0
- package/src/retrieval/temporal-scorer.js +0 -0
- package/src/retrieval/temporal-scorer.js.map +0 -0
- package/src/retrieval/temporal-scorer.ts +0 -0
- package/src/retrieval/trigger-matcher.d.ts +0 -0
- package/src/retrieval/trigger-matcher.d.ts.map +0 -0
- package/src/retrieval/trigger-matcher.js +0 -0
- package/src/retrieval/trigger-matcher.js.map +0 -0
- package/src/retrieval/trigger-matcher.ts +0 -0
- package/src/retrieval/types.d.ts +0 -0
- package/src/retrieval/types.d.ts.map +0 -0
- package/src/retrieval/types.js +0 -0
- package/src/retrieval/types.js.map +0 -0
- package/src/retrieval/types.ts +12 -0
- package/src/retrieval/vector-search.d.ts +0 -0
- package/src/retrieval/vector-search.d.ts.map +0 -0
- package/src/retrieval/vector-search.js +0 -0
- package/src/retrieval/vector-search.js.map +0 -0
- package/src/retrieval/vector-search.ts +0 -0
- package/src/salience/decay.d.ts +0 -0
- package/src/salience/decay.d.ts.map +0 -0
- package/src/salience/decay.js +0 -0
- package/src/salience/decay.js.map +0 -0
- package/src/salience/decay.ts +0 -0
- package/src/salience/index.ts +0 -0
- package/src/scratchpad/index.ts +0 -0
- package/src/scratchpad/scratchpad.d.ts +0 -0
- package/src/scratchpad/scratchpad.d.ts.map +0 -0
- package/src/scratchpad/scratchpad.js +0 -0
- package/src/scratchpad/scratchpad.js.map +0 -0
- package/src/scratchpad/scratchpad.ts +0 -0
- package/src/sessions/index.ts +0 -0
- package/src/sessions/manager.d.ts +0 -0
- package/src/sessions/manager.d.ts.map +0 -0
- package/src/sessions/manager.js +0 -0
- package/src/sessions/manager.js.map +0 -0
- package/src/sessions/manager.ts +0 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import type { LLMAdapter } from '../adapters/llm.js';
|
|
2
|
+
import type { ExtractionResult, ExtractedFact, ExtractedEntity, ExtractedEdge } from './types.js';
|
|
3
|
+
import type { ExtractionTier, EdgeType, SourceType } from '../config.js';
|
|
4
|
+
import { buildCodebaseFactExtractionPrompt, buildCodebaseGraphExtractionPrompt, CODEBASE_ENTITY_TYPES } from './codebase-prompts.js';
|
|
5
|
+
import { normalizeEntityName } from './llm-extractor.js';
|
|
6
|
+
|
|
7
|
+
export interface CodebaseExtractorConfig {
|
|
8
|
+
llm: LLMAdapter;
|
|
9
|
+
tier: ExtractionTier;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const VALID_CODEBASE_SOURCE_TYPES = new Set<string>([
|
|
13
|
+
'file_analysis', 'ast_parse', 'git_history', 'dependency_scan',
|
|
14
|
+
]);
|
|
15
|
+
|
|
16
|
+
const VALID_CODEBASE_EDGE_TYPES = new Set<string>([
|
|
17
|
+
'imports', 'implements', 'owns', 'configures', 'tested_by',
|
|
18
|
+
'depends_on', 'extends', 'associative', 'hierarchical',
|
|
19
|
+
]);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Extract architectural facts from code content.
|
|
23
|
+
* Similar to extractWithLLM but uses codebase-specific prompts
|
|
24
|
+
* and skips conversation-oriented logic.
|
|
25
|
+
*/
|
|
26
|
+
export async function extractCodebaseFacts(
|
|
27
|
+
config: CodebaseExtractorConfig,
|
|
28
|
+
input: string,
|
|
29
|
+
): Promise<ExtractionResult> {
|
|
30
|
+
let totalTokensIn = 0;
|
|
31
|
+
let totalTokensOut = 0;
|
|
32
|
+
|
|
33
|
+
// ── PASS 1: Codebase fact extraction — ONE LLM call (no sliding window) ──
|
|
34
|
+
// Code doesn't need pronoun resolution. Send the full input as one chunk
|
|
35
|
+
// to minimize LLM calls (1 call vs 6+ with sliding window).
|
|
36
|
+
// Cap at 30K chars (~7.5K tokens) to fit gpt-4.1-mini's context.
|
|
37
|
+
const cappedInput = input.slice(0, 30_000);
|
|
38
|
+
|
|
39
|
+
let factEntries: Array<{
|
|
40
|
+
text: string;
|
|
41
|
+
importance: number;
|
|
42
|
+
sourceChunk: string;
|
|
43
|
+
sourceType: SourceType;
|
|
44
|
+
}> = [];
|
|
45
|
+
|
|
46
|
+
try {
|
|
47
|
+
const messages = buildCodebaseFactExtractionPrompt(cappedInput);
|
|
48
|
+
const response = await config.llm.complete(messages, { temperature: 0, responseFormat: 'json' });
|
|
49
|
+
totalTokensIn += response.tokensInput;
|
|
50
|
+
totalTokensOut += response.tokensOutput;
|
|
51
|
+
|
|
52
|
+
const parsed = JSON.parse(response.content) as Record<string, unknown>;
|
|
53
|
+
const rawFacts = Array.isArray(parsed.facts) ? parsed.facts : [];
|
|
54
|
+
|
|
55
|
+
for (const f of rawFacts) {
|
|
56
|
+
if (typeof f === 'string') {
|
|
57
|
+
const trimmed = f.trim();
|
|
58
|
+
if (trimmed.length > 0) {
|
|
59
|
+
factEntries.push({ text: trimmed, importance: 0.5, sourceChunk: cappedInput.slice(0, 500), sourceType: 'file_analysis' });
|
|
60
|
+
}
|
|
61
|
+
} else if (f && typeof f === 'object') {
|
|
62
|
+
const obj = f as Record<string, unknown>;
|
|
63
|
+
const text = (typeof obj.t === 'string' ? obj.t : typeof obj.text === 'string' ? obj.text : '').trim();
|
|
64
|
+
const importance = typeof obj.i === 'number' ? obj.i : typeof obj.importance === 'number' ? obj.importance : 0.5;
|
|
65
|
+
const rawSrc = typeof obj.src === 'string' ? obj.src : 'file_analysis';
|
|
66
|
+
const sourceType: SourceType = VALID_CODEBASE_SOURCE_TYPES.has(rawSrc)
|
|
67
|
+
? rawSrc as SourceType
|
|
68
|
+
: 'file_analysis';
|
|
69
|
+
|
|
70
|
+
if (text.length > 0) {
|
|
71
|
+
factEntries.push({
|
|
72
|
+
text,
|
|
73
|
+
importance: Math.max(0, Math.min(1, importance)),
|
|
74
|
+
sourceChunk: cappedInput.slice(0, 500),
|
|
75
|
+
sourceType,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
} catch (err) {
|
|
81
|
+
console.error('[steno-codebase] Fact extraction failed:', err instanceof Error ? err.message : err);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Deduplicate facts by content similarity
|
|
85
|
+
const seenContent = new Set<string>();
|
|
86
|
+
factEntries = factEntries.filter(e => {
|
|
87
|
+
const key = e.text.toLowerCase().trim();
|
|
88
|
+
if (seenContent.has(key)) return false;
|
|
89
|
+
seenContent.add(key);
|
|
90
|
+
return true;
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
if (factEntries.length === 0) {
|
|
94
|
+
return emptyResult(config.tier, config.llm.model);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Build ExtractedFact objects
|
|
98
|
+
const facts: ExtractedFact[] = factEntries.map(({ text, importance, sourceChunk, sourceType }) => ({
|
|
99
|
+
content: text,
|
|
100
|
+
importance,
|
|
101
|
+
confidence: 0.8,
|
|
102
|
+
sourceType,
|
|
103
|
+
modality: 'code' as const,
|
|
104
|
+
tags: ['codebase'],
|
|
105
|
+
originalContent: input,
|
|
106
|
+
entityCanonicalNames: [],
|
|
107
|
+
sourceChunk,
|
|
108
|
+
}));
|
|
109
|
+
|
|
110
|
+
// Add contextual embeddings
|
|
111
|
+
for (const fact of facts) {
|
|
112
|
+
const src = fact.sourceChunk ?? input;
|
|
113
|
+
const contextPrefix = src.length > 100
|
|
114
|
+
? `Codebase context: ${src.slice(0, 200).trim()}... | Fact: `
|
|
115
|
+
: `Codebase context: ${src.trim()} | Fact: `;
|
|
116
|
+
fact.contextualContent = contextPrefix + fact.content;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// ── PASS 2: Architecture graph extraction ──
|
|
120
|
+
let entities: ExtractedEntity[] = [];
|
|
121
|
+
let edges: ExtractedEdge[] = [];
|
|
122
|
+
|
|
123
|
+
try {
|
|
124
|
+
const factStrings = factEntries.map(e => e.text);
|
|
125
|
+
const graphMessages = buildCodebaseGraphExtractionPrompt(factStrings);
|
|
126
|
+
const graphResponse = await config.llm.complete(graphMessages, { temperature: 0, responseFormat: 'json' });
|
|
127
|
+
totalTokensIn += graphResponse.tokensInput;
|
|
128
|
+
totalTokensOut += graphResponse.tokensOutput;
|
|
129
|
+
|
|
130
|
+
const graphParsed = JSON.parse(graphResponse.content) as Record<string, unknown>;
|
|
131
|
+
|
|
132
|
+
// Parse entities
|
|
133
|
+
const seenEntities = new Set<string>();
|
|
134
|
+
if (Array.isArray(graphParsed.entities)) {
|
|
135
|
+
for (const e of graphParsed.entities as unknown[]) {
|
|
136
|
+
if (!e || typeof (e as Record<string, unknown>).name !== 'string') continue;
|
|
137
|
+
const entity = e as Record<string, unknown>;
|
|
138
|
+
const canonical = normalizeEntityName(entity.name as string);
|
|
139
|
+
if (canonical.length === 0 || seenEntities.has(canonical)) continue;
|
|
140
|
+
seenEntities.add(canonical);
|
|
141
|
+
|
|
142
|
+
const rawType = String(entity.entity_type ?? entity.type ?? 'module');
|
|
143
|
+
const entityType = CODEBASE_ENTITY_TYPES.includes(rawType) ? rawType : 'module';
|
|
144
|
+
|
|
145
|
+
entities.push({
|
|
146
|
+
name: entity.name as string,
|
|
147
|
+
entityType,
|
|
148
|
+
canonicalName: canonical,
|
|
149
|
+
properties: {},
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// Parse edges
|
|
155
|
+
if (Array.isArray(graphParsed.edges)) {
|
|
156
|
+
for (const r of graphParsed.edges as unknown[]) {
|
|
157
|
+
if (!r) continue;
|
|
158
|
+
const rel = r as Record<string, unknown>;
|
|
159
|
+
const rawSource = typeof rel.source === 'string' ? rel.source : null;
|
|
160
|
+
const rawTarget = typeof rel.target === 'string' ? rel.target : null;
|
|
161
|
+
if (!rawSource || !rawTarget) continue;
|
|
162
|
+
const source = normalizeEntityName(rawSource);
|
|
163
|
+
const target = normalizeEntityName(rawTarget);
|
|
164
|
+
if (!source || !target) continue;
|
|
165
|
+
|
|
166
|
+
const rawEdgeType = typeof rel.edge_type === 'string' ? rel.edge_type : 'associative';
|
|
167
|
+
const edgeType: EdgeType = VALID_CODEBASE_EDGE_TYPES.has(rawEdgeType)
|
|
168
|
+
? rawEdgeType as EdgeType
|
|
169
|
+
: 'associative';
|
|
170
|
+
|
|
171
|
+
edges.push({
|
|
172
|
+
sourceName: source,
|
|
173
|
+
targetName: target,
|
|
174
|
+
relation: String(rel.relation ?? 'related_to'),
|
|
175
|
+
edgeType,
|
|
176
|
+
confidence: 0.8,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Link entities to facts by text match
|
|
182
|
+
for (const fact of facts) {
|
|
183
|
+
const contentLower = fact.content.toLowerCase();
|
|
184
|
+
for (const entity of entities) {
|
|
185
|
+
if (entity.canonicalName.length >= 3 && contentLower.includes(entity.canonicalName)) {
|
|
186
|
+
fact.entityCanonicalNames!.push(entity.canonicalName);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
} catch {
|
|
191
|
+
// Graph pass failed — facts are still useful without graph
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
return {
|
|
195
|
+
facts,
|
|
196
|
+
entities,
|
|
197
|
+
edges,
|
|
198
|
+
tier: config.tier,
|
|
199
|
+
confidence: 0.8,
|
|
200
|
+
tokensInput: totalTokensIn,
|
|
201
|
+
tokensOutput: totalTokensOut,
|
|
202
|
+
model: config.llm.model,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
function emptyResult(tier: ExtractionTier, model: string): ExtractionResult {
|
|
207
|
+
return {
|
|
208
|
+
facts: [],
|
|
209
|
+
entities: [],
|
|
210
|
+
edges: [],
|
|
211
|
+
tier,
|
|
212
|
+
confidence: 0,
|
|
213
|
+
tokensInput: 0,
|
|
214
|
+
tokensOutput: 0,
|
|
215
|
+
model,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import type { LLMMessage } from '../adapters/llm.js';
|
|
2
|
+
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// PASS 1: CODEBASE FACT EXTRACTION — Architectural facts from code
|
|
5
|
+
// =============================================================================
|
|
6
|
+
|
|
7
|
+
export const CODEBASE_FACT_EXTRACTION_PROMPT = `You are a codebase analysis engine. Extract architectural and structural facts from source code, configuration files, and project documentation.
|
|
8
|
+
|
|
9
|
+
## WHAT TO EXTRACT
|
|
10
|
+
|
|
11
|
+
Focus on facts that help an AI assistant understand the codebase:
|
|
12
|
+
|
|
13
|
+
1. **File structure patterns**: How the project is organized (monorepo layout, feature-based folders, barrel exports, etc.)
|
|
14
|
+
2. **Framework choices**: Which frameworks, runtimes, and major libraries are used, and how they're configured
|
|
15
|
+
3. **API conventions**: Route naming patterns, middleware usage, request/response shapes, authentication patterns
|
|
16
|
+
4. **Error handling patterns**: How errors are caught, logged, and propagated — custom error classes, error boundaries, fallback strategies
|
|
17
|
+
5. **Dependencies**: Key packages and their roles (ORM, auth, state management, testing, etc.)
|
|
18
|
+
6. **Build & deploy config**: Build tools, CI/CD setup, environment variable patterns, deployment targets
|
|
19
|
+
7. **Code conventions**: Naming conventions, module boundaries, shared utilities, type patterns
|
|
20
|
+
8. **Data flow**: How data moves through the system — stores, caches, API layers, database access patterns
|
|
21
|
+
|
|
22
|
+
## RULES
|
|
23
|
+
|
|
24
|
+
1. Extract SELF-CONTAINED atomic facts. Each fact must be understandable without the original code.
|
|
25
|
+
2. Be SPECIFIC — reference actual file paths, package names, and function signatures when visible.
|
|
26
|
+
BAD: "The project uses a database"
|
|
27
|
+
GOOD: "The project uses Supabase via @supabase/supabase-js with row-level security enabled in lib/supabase/client.ts"
|
|
28
|
+
3. Write all facts in third person using the project/codebase as the subject.
|
|
29
|
+
- "The project uses Next.js App Router with server components"
|
|
30
|
+
- "The API routes follow REST conventions under app/api/"
|
|
31
|
+
4. Focus on ARCHITECTURAL facts — patterns, conventions, and structure. Skip trivial implementation details.
|
|
32
|
+
5. For configuration files, extract the meaningful settings, not every line.
|
|
33
|
+
|
|
34
|
+
## OUTPUT
|
|
35
|
+
|
|
36
|
+
Return ONLY a JSON object:
|
|
37
|
+
{"facts": [{"t": "fact text here", "i": 0.7, "src": "file_analysis"}, ...]}
|
|
38
|
+
|
|
39
|
+
Score importance (i) from 0.0 to 1.0:
|
|
40
|
+
- 0.9-1.0: Core framework choice, primary database, authentication strategy, deployment target
|
|
41
|
+
- 0.7-0.8: API patterns, state management, key dependencies, build configuration
|
|
42
|
+
- 0.4-0.6: Utility patterns, naming conventions, folder structure details
|
|
43
|
+
- 0.1-0.3: Minor config settings, dev-only tooling, formatting preferences
|
|
44
|
+
|
|
45
|
+
Source type (src) must be one of: "file_analysis", "ast_parse", "git_history", "dependency_scan"
|
|
46
|
+
|
|
47
|
+
Nothing else. No explanation, no markdown.`;
|
|
48
|
+
|
|
49
|
+
// =============================================================================
|
|
50
|
+
// PASS 2: CODEBASE GRAPH EXTRACTION — Architecture graph from facts
|
|
51
|
+
// =============================================================================
|
|
52
|
+
|
|
53
|
+
export const CODEBASE_GRAPH_EXTRACTION_PROMPT = `You are an architecture graph builder. Given facts about a codebase, extract entities and their relationships to build an architecture graph.
|
|
54
|
+
|
|
55
|
+
## ENTITIES
|
|
56
|
+
|
|
57
|
+
Extract packages, modules, services, configurations, and other structural components.
|
|
58
|
+
|
|
59
|
+
Entity types to use: package, module, config, service, api_route, database, library, test_suite, build_tool, runtime
|
|
60
|
+
|
|
61
|
+
Examples:
|
|
62
|
+
- {"name": "Next.js App Router", "entity_type": "runtime"}
|
|
63
|
+
- {"name": "lib/supabase", "entity_type": "module"}
|
|
64
|
+
- {"name": "Prisma", "entity_type": "library"}
|
|
65
|
+
- {"name": "app/api/auth", "entity_type": "api_route"}
|
|
66
|
+
- {"name": "jest.config.ts", "entity_type": "config"}
|
|
67
|
+
|
|
68
|
+
DO extract: Packages, modules, config files, services, API route groups, databases, key libraries
|
|
69
|
+
DO NOT extract: Individual variables, single functions (unless they are exported utilities), line-level details
|
|
70
|
+
|
|
71
|
+
## RELATIONSHIPS
|
|
72
|
+
|
|
73
|
+
Extract structural relationships between entities. Use these edge types:
|
|
74
|
+
|
|
75
|
+
- imports: A imports/depends on B at code level
|
|
76
|
+
- implements: A implements interface/pattern B
|
|
77
|
+
- owns: A contains/owns B (package owns modules, module owns routes)
|
|
78
|
+
- configures: A configures/sets up B (config file configures a library)
|
|
79
|
+
- tested_by: A is tested by B (module has corresponding test suite)
|
|
80
|
+
- depends_on: A requires B at build/runtime level
|
|
81
|
+
- extends: A extends/inherits from B
|
|
82
|
+
|
|
83
|
+
## OUTPUT
|
|
84
|
+
|
|
85
|
+
Return ONLY a JSON object:
|
|
86
|
+
{
|
|
87
|
+
"entities": [
|
|
88
|
+
{"name": "lib/supabase", "entity_type": "module"},
|
|
89
|
+
{"name": "Prisma", "entity_type": "library"}
|
|
90
|
+
],
|
|
91
|
+
"edges": [
|
|
92
|
+
{"source": "lib/supabase", "target": "supabase-js", "relation": "imports", "edge_type": "imports"},
|
|
93
|
+
{"source": "app/api", "target": "lib/supabase", "relation": "uses_for_data", "edge_type": "depends_on"},
|
|
94
|
+
{"source": "jest.config.ts", "target": "jest", "relation": "configures", "edge_type": "configures"}
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
Entity names should be clean identifiers — file paths, package names, or descriptive labels.
|
|
99
|
+
Return ONLY valid JSON.`;
|
|
100
|
+
|
|
101
|
+
// =============================================================================
|
|
102
|
+
// CODEBASE ENTITY TYPES
|
|
103
|
+
// =============================================================================
|
|
104
|
+
|
|
105
|
+
export const CODEBASE_ENTITY_TYPES = [
|
|
106
|
+
'package',
|
|
107
|
+
'module',
|
|
108
|
+
'config',
|
|
109
|
+
'service',
|
|
110
|
+
'api_route',
|
|
111
|
+
'database',
|
|
112
|
+
'library',
|
|
113
|
+
'test_suite',
|
|
114
|
+
'build_tool',
|
|
115
|
+
'runtime',
|
|
116
|
+
];
|
|
117
|
+
|
|
118
|
+
// =============================================================================
|
|
119
|
+
// PROMPT BUILDERS
|
|
120
|
+
// =============================================================================
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* Build the codebase fact extraction prompt (Pass 1).
|
|
124
|
+
*/
|
|
125
|
+
export function buildCodebaseFactExtractionPrompt(input: string): LLMMessage[] {
|
|
126
|
+
return [
|
|
127
|
+
{ role: 'system', content: CODEBASE_FACT_EXTRACTION_PROMPT },
|
|
128
|
+
{ role: 'user', content: `Extract architectural facts from this code/configuration:\n\n${input}` },
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* Build the codebase graph extraction prompt (Pass 2).
|
|
134
|
+
*/
|
|
135
|
+
export function buildCodebaseGraphExtractionPrompt(facts: string[]): LLMMessage[] {
|
|
136
|
+
const factsList = facts.map((f, i) => `${i + 1}. ${f}`).join('\n');
|
|
137
|
+
return [
|
|
138
|
+
{ role: 'system', content: CODEBASE_GRAPH_EXTRACTION_PROMPT },
|
|
139
|
+
{ role: 'user', content: `Build an architecture graph from these codebase facts:\n\n${factsList}` },
|
|
140
|
+
];
|
|
141
|
+
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/extraction/dedup.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/extraction/dedup.ts
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/extraction/hasher.js
CHANGED
|
File without changes
|
|
File without changes
|
package/src/extraction/hasher.ts
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
package/src/extraction/index.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
2
|
export * from './hasher.js';
|
|
3
3
|
export * from './prompts.js';
|
|
4
|
+
export * from './codebase-prompts.js';
|
|
4
5
|
export * from './heuristic.js';
|
|
5
6
|
export * from './contradiction.js';
|
|
6
7
|
export * from './entity-extractor.js';
|
|
7
8
|
export * from './llm-extractor.js';
|
|
9
|
+
export * from './codebase-extractor.js';
|
|
8
10
|
export * from './dedup.js';
|
|
9
11
|
export * from './pipeline.js';
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -246,7 +246,11 @@ function emptyResult(tier: ExtractionTier, model: string): ExtractionResult {
|
|
|
246
246
|
function isValidEdgeType(t: unknown): t is EdgeType {
|
|
247
247
|
return (
|
|
248
248
|
typeof t === 'string' &&
|
|
249
|
-
[
|
|
249
|
+
[
|
|
250
|
+
'associative', 'causal', 'temporal', 'contradictory', 'hierarchical',
|
|
251
|
+
'updates', 'extends', 'derives', 'precedes', 'depends_on', 'deadline',
|
|
252
|
+
'imports', 'implements', 'owns', 'configures', 'tested_by',
|
|
253
|
+
].includes(t)
|
|
250
254
|
);
|
|
251
255
|
}
|
|
252
256
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|