learngraph 0.7.0 → 0.8.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/cjs/components/SkillGraph.js +224 -23
- package/dist/cjs/components/SkillGraph.js.map +1 -1
- package/dist/cjs/components/hooks.js +10 -0
- package/dist/cjs/components/hooks.js.map +1 -1
- package/dist/cjs/embeddings/base.js +104 -0
- package/dist/cjs/embeddings/base.js.map +1 -0
- package/dist/cjs/embeddings/index.js +91 -0
- package/dist/cjs/embeddings/index.js.map +1 -0
- package/dist/cjs/embeddings/local.js +224 -0
- package/dist/cjs/embeddings/local.js.map +1 -0
- package/dist/cjs/embeddings/openai.js +169 -0
- package/dist/cjs/embeddings/openai.js.map +1 -0
- package/dist/cjs/index.js +25 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/llm/graphrag-orchestrator.js +1004 -0
- package/dist/cjs/llm/graphrag-orchestrator.js.map +1 -0
- package/dist/cjs/llm/index.js +7 -1
- package/dist/cjs/llm/index.js.map +1 -1
- package/dist/cjs/storage/index.js +15 -1
- package/dist/cjs/storage/index.js.map +1 -1
- package/dist/cjs/storage/neo4j-graphrag.js +596 -0
- package/dist/cjs/storage/neo4j-graphrag.js.map +1 -0
- package/dist/cjs/types/graphrag.js +11 -0
- package/dist/cjs/types/graphrag.js.map +1 -0
- package/dist/esm/components/SkillGraph.js +226 -25
- package/dist/esm/components/SkillGraph.js.map +1 -1
- package/dist/esm/components/hooks.js +10 -0
- package/dist/esm/components/hooks.js.map +1 -1
- package/dist/esm/embeddings/base.js +99 -0
- package/dist/esm/embeddings/base.js.map +1 -0
- package/dist/esm/embeddings/index.js +79 -0
- package/dist/esm/embeddings/index.js.map +1 -0
- package/dist/esm/embeddings/local.js +219 -0
- package/dist/esm/embeddings/local.js.map +1 -0
- package/dist/esm/embeddings/openai.js +164 -0
- package/dist/esm/embeddings/openai.js.map +1 -0
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/graphrag-orchestrator.js +999 -0
- package/dist/esm/llm/graphrag-orchestrator.js.map +1 -0
- package/dist/esm/llm/index.js +4 -0
- package/dist/esm/llm/index.js.map +1 -1
- package/dist/esm/storage/index.js +8 -0
- package/dist/esm/storage/index.js.map +1 -1
- package/dist/esm/storage/neo4j-graphrag.js +591 -0
- package/dist/esm/storage/neo4j-graphrag.js.map +1 -0
- package/dist/esm/types/graphrag.js +10 -0
- package/dist/esm/types/graphrag.js.map +1 -0
- package/dist/types/components/SkillGraph.d.ts.map +1 -1
- package/dist/types/components/hooks.d.ts.map +1 -1
- package/dist/types/embeddings/base.d.ts +51 -0
- package/dist/types/embeddings/base.d.ts.map +1 -0
- package/dist/types/embeddings/index.d.ts +48 -0
- package/dist/types/embeddings/index.d.ts.map +1 -0
- package/dist/types/embeddings/local.d.ts +82 -0
- package/dist/types/embeddings/local.d.ts.map +1 -0
- package/dist/types/embeddings/openai.d.ts +48 -0
- package/dist/types/embeddings/openai.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/llm/graphrag-orchestrator.d.ts +280 -0
- package/dist/types/llm/graphrag-orchestrator.d.ts.map +1 -0
- package/dist/types/llm/index.d.ts +2 -0
- package/dist/types/llm/index.d.ts.map +1 -1
- package/dist/types/mcp/tools.d.ts +6 -6
- package/dist/types/storage/index.d.ts +2 -0
- package/dist/types/storage/index.d.ts.map +1 -1
- package/dist/types/storage/neo4j-graphrag.d.ts +106 -0
- package/dist/types/storage/neo4j-graphrag.d.ts.map +1 -0
- package/dist/types/types/graphrag.d.ts +335 -0
- package/dist/types/types/graphrag.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base adapter class for embedding providers
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import type { EmbeddingProvider, EmbeddingConfig, EmbeddingAdapter, EmbeddingResult, BatchEmbeddingResult } from '../types/graphrag.js';
|
|
7
|
+
/**
|
|
8
|
+
* Embedding-related errors
|
|
9
|
+
*/
|
|
10
|
+
export declare class EmbeddingError extends Error {
|
|
11
|
+
readonly code: EmbeddingErrorCode;
|
|
12
|
+
readonly provider: EmbeddingProvider;
|
|
13
|
+
readonly cause?: Error | undefined;
|
|
14
|
+
constructor(message: string, code: EmbeddingErrorCode, provider: EmbeddingProvider, cause?: Error | undefined);
|
|
15
|
+
}
|
|
16
|
+
export type EmbeddingErrorCode = 'NOT_CONFIGURED' | 'API_ERROR' | 'RATE_LIMIT' | 'INVALID_RESPONSE' | 'TIMEOUT' | 'NETWORK_ERROR' | 'MODEL_NOT_FOUND';
|
|
17
|
+
/**
|
|
18
|
+
* Default configuration values
|
|
19
|
+
*/
|
|
20
|
+
export declare const DEFAULT_EMBEDDING_CONFIG: {
|
|
21
|
+
timeout: number;
|
|
22
|
+
retries: number;
|
|
23
|
+
batchSize: number;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Abstract base class for embedding adapters
|
|
27
|
+
*/
|
|
28
|
+
export declare abstract class BaseEmbeddingAdapter implements EmbeddingAdapter {
|
|
29
|
+
protected config: EmbeddingConfig;
|
|
30
|
+
constructor(config: EmbeddingConfig);
|
|
31
|
+
abstract get provider(): EmbeddingProvider;
|
|
32
|
+
abstract get model(): string;
|
|
33
|
+
abstract get dimensions(): number;
|
|
34
|
+
abstract embed(text: string): Promise<EmbeddingResult>;
|
|
35
|
+
abstract embedBatch(texts: string[]): Promise<BatchEmbeddingResult>;
|
|
36
|
+
abstract isConfigured(): boolean;
|
|
37
|
+
getConfig(): Omit<EmbeddingConfig, 'apiKey'>;
|
|
38
|
+
/**
|
|
39
|
+
* Retry a function with exponential backoff
|
|
40
|
+
*/
|
|
41
|
+
protected withRetry<T>(fn: () => Promise<T>, maxRetries?: number): Promise<T>;
|
|
42
|
+
/**
|
|
43
|
+
* Calculate cosine similarity between two vectors
|
|
44
|
+
*/
|
|
45
|
+
protected cosineSimilarity(a: number[], b: number[]): number;
|
|
46
|
+
/**
|
|
47
|
+
* Normalize a vector to unit length
|
|
48
|
+
*/
|
|
49
|
+
protected normalizeVector(vector: number[]): number[];
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/embeddings/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,IAAI,EAAE,kBAAkB;aACxB,QAAQ,EAAE,iBAAiB;aAC3B,KAAK,CAAC,EAAE,KAAK;gBAH7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,kBAAkB,EACxB,QAAQ,EAAE,iBAAiB,EAC3B,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,WAAW,GACX,YAAY,GACZ,kBAAkB,GAClB,SAAS,GACT,eAAe,GACf,iBAAiB,CAAC;AAEtB;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;CAIpC,CAAC;AAEF;;GAEG;AACH,8BAAsB,oBAAqB,YAAW,gBAAgB;IACpE,SAAS,CAAC,MAAM,EAAE,eAAe,CAAC;gBAEtB,MAAM,EAAE,eAAe;IAInC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC;IAC3C,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC;IAC7B,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC;IAElC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAEnE,QAAQ,CAAC,YAAY,IAAI,OAAO;IAEhC,SAAS,IAAI,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;IAQ5C;;OAEG;cACa,SAAS,CAAC,CAAC,EACzB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,UAAU,SAAmC,GAC5C,OAAO,CAAC,CAAC,CAAC;IA2Bb;;OAEG;IACH,SAAS,CAAC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM;IAoB5D;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;CAKtD"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Adapters
|
|
3
|
+
*
|
|
4
|
+
* This module provides embedding generation for GraphRAG functionality.
|
|
5
|
+
* Embeddings are used to enable semantic search across skills.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
export { BaseEmbeddingAdapter, EmbeddingError } from './base.js';
|
|
10
|
+
export type { EmbeddingErrorCode } from './base.js';
|
|
11
|
+
export { DEFAULT_EMBEDDING_CONFIG } from './base.js';
|
|
12
|
+
export { OpenAIEmbeddingAdapter, createOpenAIEmbeddingAdapter } from './openai.js';
|
|
13
|
+
export { LocalEmbeddingAdapter, createLocalEmbeddingAdapter } from './local.js';
|
|
14
|
+
export type { EmbeddingProvider, EmbeddingConfig, EmbeddingConfigBase, OpenAIEmbeddingConfig, VoyageEmbeddingConfig, CohereEmbeddingConfig, LocalEmbeddingConfig, EmbeddingResult, BatchEmbeddingResult, EmbeddingAdapter, } from '../types/graphrag.js';
|
|
15
|
+
import type { EmbeddingConfig, EmbeddingAdapter } from '../types/graphrag.js';
|
|
16
|
+
/**
|
|
17
|
+
* Create an embedding adapter from configuration
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // OpenAI embeddings
|
|
22
|
+
* const openai = createEmbeddingAdapter({
|
|
23
|
+
* provider: 'openai',
|
|
24
|
+
* apiKey: 'sk-...',
|
|
25
|
+
* model: 'text-embedding-3-small',
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Local embeddings (no API key needed)
|
|
29
|
+
* const local = createEmbeddingAdapter({
|
|
30
|
+
* provider: 'local',
|
|
31
|
+
* });
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function createEmbeddingAdapter(config: EmbeddingConfig): EmbeddingAdapter;
|
|
35
|
+
/**
|
|
36
|
+
* Create an embedding adapter from environment variables
|
|
37
|
+
*
|
|
38
|
+
* Automatically detects available API keys and creates the appropriate adapter.
|
|
39
|
+
* Falls back to local embeddings if no API keys are found.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Will use OpenAI if OPENAI_API_KEY is set, otherwise local
|
|
44
|
+
* const adapter = createEmbeddingAdapterFromEnv();
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function createEmbeddingAdapterFromEnv(): EmbeddingAdapter;
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/embeddings/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAGnF,OAAO,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAGhF,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK9E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,CA6BhF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,6BAA6B,IAAI,gBAAgB,CAgBhE"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local embedding adapter
|
|
3
|
+
*
|
|
4
|
+
* Provides embedding generation without external API calls.
|
|
5
|
+
* Uses a simple but effective TF-IDF based approach for semantic similarity.
|
|
6
|
+
*
|
|
7
|
+
* For production use with better quality, consider using transformers.js
|
|
8
|
+
* with a model like 'Xenova/all-MiniLM-L6-v2'.
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
import type { EmbeddingProvider, LocalEmbeddingConfig, EmbeddingResult, BatchEmbeddingResult } from '../types/graphrag.js';
|
|
13
|
+
import { BaseEmbeddingAdapter } from './base.js';
|
|
14
|
+
/**
|
|
15
|
+
* Local embedding adapter using TF-IDF-like approach
|
|
16
|
+
*
|
|
17
|
+
* This provides a simple, fast, offline embedding that works well for
|
|
18
|
+
* finding similar skills based on shared vocabulary and structure.
|
|
19
|
+
*/
|
|
20
|
+
export declare class LocalEmbeddingAdapter extends BaseEmbeddingAdapter {
|
|
21
|
+
private readonly modelName;
|
|
22
|
+
private readonly dims;
|
|
23
|
+
private vocabulary;
|
|
24
|
+
private idfScores;
|
|
25
|
+
private documentCount;
|
|
26
|
+
constructor(config: LocalEmbeddingConfig);
|
|
27
|
+
get provider(): EmbeddingProvider;
|
|
28
|
+
get model(): string;
|
|
29
|
+
get dimensions(): number;
|
|
30
|
+
isConfigured(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Tokenize text into normalized tokens
|
|
33
|
+
*/
|
|
34
|
+
private tokenize;
|
|
35
|
+
/**
|
|
36
|
+
* Calculate term frequency for a document
|
|
37
|
+
*/
|
|
38
|
+
private calculateTF;
|
|
39
|
+
/**
|
|
40
|
+
* Generate a deterministic embedding vector from text
|
|
41
|
+
*
|
|
42
|
+
* Uses a combination of:
|
|
43
|
+
* 1. Token-based hashing for semantic representation
|
|
44
|
+
* 2. N-gram features for capturing word relationships
|
|
45
|
+
* 3. Positional encoding for word order sensitivity
|
|
46
|
+
*/
|
|
47
|
+
private generateEmbedding;
|
|
48
|
+
/**
|
|
49
|
+
* Extract character n-grams from text
|
|
50
|
+
*/
|
|
51
|
+
private getCharNgrams;
|
|
52
|
+
embed(text: string): Promise<EmbeddingResult>;
|
|
53
|
+
embedBatch(texts: string[]): Promise<BatchEmbeddingResult>;
|
|
54
|
+
/**
|
|
55
|
+
* Build vocabulary from a corpus for improved embeddings
|
|
56
|
+
*
|
|
57
|
+
* Call this with your skill names/descriptions to improve
|
|
58
|
+
* the quality of embeddings through proper IDF weighting.
|
|
59
|
+
*/
|
|
60
|
+
buildVocabulary(documents: string[]): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get vocabulary size
|
|
63
|
+
*/
|
|
64
|
+
getVocabularySize(): number;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create a local embedding adapter
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Create adapter
|
|
72
|
+
* const adapter = createLocalEmbeddingAdapter();
|
|
73
|
+
*
|
|
74
|
+
* // Optionally build vocabulary for better quality
|
|
75
|
+
* adapter.buildVocabulary(skillDescriptions);
|
|
76
|
+
*
|
|
77
|
+
* // Generate embedding
|
|
78
|
+
* const result = await adapter.embed('Learn to write JavaScript functions');
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
export declare function createLocalEmbeddingAdapter(model?: string): LocalEmbeddingAdapter;
|
|
82
|
+
//# sourceMappingURL=local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../../../src/embeddings/local.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAmCjD;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,oBAAoB;IAC7D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAkC;IACpD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,aAAa,CAAK;gBAEd,MAAM,EAAE,oBAAoB;IAMxC,IAAI,QAAQ,IAAI,iBAAiB,CAEhC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,WAAW;IAiBnB;;;;;;;OAOG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;OAEG;IACH,OAAO,CAAC,aAAa;IASf,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAU7C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAahE;;;;;OAKG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAmB1C;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,CAAC,EAAE,MAAM,GACb,qBAAqB,CAOvB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI embedding adapter
|
|
3
|
+
*
|
|
4
|
+
* Supports OpenAI's text-embedding models including:
|
|
5
|
+
* - text-embedding-3-small (default, 1536 dims, cheapest)
|
|
6
|
+
* - text-embedding-3-large (3072 dims, highest quality)
|
|
7
|
+
* - text-embedding-ada-002 (legacy, 1536 dims)
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import type { EmbeddingProvider, OpenAIEmbeddingConfig, EmbeddingResult, BatchEmbeddingResult } from '../types/graphrag.js';
|
|
12
|
+
import { BaseEmbeddingAdapter } from './base.js';
|
|
13
|
+
/**
|
|
14
|
+
* OpenAI embedding adapter
|
|
15
|
+
*/
|
|
16
|
+
export declare class OpenAIEmbeddingAdapter extends BaseEmbeddingAdapter {
|
|
17
|
+
private readonly apiKey;
|
|
18
|
+
private readonly baseUrl;
|
|
19
|
+
private readonly modelName;
|
|
20
|
+
private readonly dims;
|
|
21
|
+
constructor(config: OpenAIEmbeddingConfig);
|
|
22
|
+
get provider(): EmbeddingProvider;
|
|
23
|
+
get model(): string;
|
|
24
|
+
get dimensions(): number;
|
|
25
|
+
isConfigured(): boolean;
|
|
26
|
+
embed(text: string): Promise<EmbeddingResult>;
|
|
27
|
+
embedBatch(texts: string[]): Promise<BatchEmbeddingResult>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Create an OpenAI embedding adapter from environment variables
|
|
31
|
+
*
|
|
32
|
+
* @param model - Model to use (default: 'text-embedding-3-small')
|
|
33
|
+
* @param dimensions - Custom dimensions for text-embedding-3-* models
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Using default model (cheapest, good quality)
|
|
38
|
+
* const adapter = createOpenAIEmbeddingAdapter();
|
|
39
|
+
*
|
|
40
|
+
* // Using highest quality model
|
|
41
|
+
* const adapter = createOpenAIEmbeddingAdapter('text-embedding-3-large');
|
|
42
|
+
*
|
|
43
|
+
* // Using smaller dimensions for efficiency
|
|
44
|
+
* const adapter = createOpenAIEmbeddingAdapter('text-embedding-3-small', 512);
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare function createOpenAIEmbeddingAdapter(model?: 'text-embedding-3-small' | 'text-embedding-3-large' | 'text-embedding-ada-002', dimensions?: number, apiKey?: string): OpenAIEmbeddingAdapter;
|
|
48
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/embeddings/openai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAA4C,MAAM,WAAW,CAAC;AAsC3F;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC9D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,MAAM,EAAE,qBAAqB;IAczC,IAAI,QAAQ,IAAI,iBAAiB,CAEhC;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,YAAY,IAAI,OAAO;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAS7C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA2GjE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,GAAE,wBAAwB,GAAG,wBAAwB,GAAG,wBAAmD,EAChH,UAAU,CAAC,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,MAAM,GACd,sBAAsB,CAmBxB"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -28,6 +28,8 @@
|
|
|
28
28
|
*/
|
|
29
29
|
export * from './types/index.js';
|
|
30
30
|
export { BKTEngine, createBKTEngine, estimateMastery, fitBKTParameters, calculateLogLikelihood, BKT_CONFIG_DEFAULTS, IRTEstimator, createIRTEstimator, calculateProbability, calculateProbabilityDerivative, calculateInformation, calculateTestInformation, calculateStandardError, selectNextItemMFI, abilityToPercentile, abilityToGradeLevel, estimateAbility, IRT_CONFIG_DEFAULTS, MasteryEngine, createMasteryEngine, MASTERY_ENGINE_DEFAULTS, AdaptiveEngine, createAdaptiveEngine, createQuestionPool, ADAPTIVE_DEFAULTS, TERMINATION_DEFAULTS, } from './assessment/index.js';
|
|
31
|
+
export { BaseEmbeddingAdapter, EmbeddingError, DEFAULT_EMBEDDING_CONFIG, OpenAIEmbeddingAdapter, createOpenAIEmbeddingAdapter, LocalEmbeddingAdapter, createLocalEmbeddingAdapter, createEmbeddingAdapter, createEmbeddingAdapterFromEnv, } from './embeddings/index.js';
|
|
32
|
+
export { Neo4jGraphRAGStorage, createNeo4jGraphRAGStorage, GRAPHRAG_DEFAULTS, } from './storage/neo4j-graphrag.js';
|
|
31
33
|
/**
|
|
32
34
|
* Package version
|
|
33
35
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAEL,SAAS,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EAEnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EAEnB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EAEvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,cAAc,kBAAkB,CAAC;AAKjC,OAAO,EAEL,SAAS,EACT,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EAEnB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,8BAA8B,EAC9B,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EAEnB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EAEvB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAEL,oBAAoB,EACpB,cAAc,EACd,wBAAwB,EAExB,sBAAsB,EACtB,4BAA4B,EAE5B,qBAAqB,EACrB,2BAA2B,EAE3B,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAMrC;;GAEG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC;AAE/B;;GAEG;AACH,eAAO,MAAM,YAAY,eAAe,CAAC"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphRAG-enhanced LLM orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Extends the base orchestrator with semantic search capabilities
|
|
5
|
+
* to provide better context for skill extraction and prerequisite inference.
|
|
6
|
+
*
|
|
7
|
+
* @packageDocumentation
|
|
8
|
+
*/
|
|
9
|
+
import type { LLMAdapter, SkillExtractionRequest, SkillExtractionResponse, PrerequisiteInferenceRequest, PrerequisiteInferenceResponse, DecompositionRequest, DecompositionResponse, ExtractedSkillLLM } from '../types/llm.js';
|
|
10
|
+
import type { BloomLevel } from '../types/bloom.js';
|
|
11
|
+
import type { GraphRAGStorage, VectorSearchResult } from '../types/graphrag.js';
|
|
12
|
+
import { LLMOrchestrator } from './orchestrator.js';
|
|
13
|
+
/**
|
|
14
|
+
* Options for GraphRAG-enhanced operations
|
|
15
|
+
*/
|
|
16
|
+
export interface GraphRAGOrchestratorOptions {
|
|
17
|
+
/** Maximum similar skills to include in context (default: 5) */
|
|
18
|
+
maxContextSkills?: number;
|
|
19
|
+
/** Minimum similarity score for context skills (default: 0.6) */
|
|
20
|
+
minContextScore?: number;
|
|
21
|
+
/** Include prerequisite chains in context (default: true) */
|
|
22
|
+
includePrerequisites?: boolean;
|
|
23
|
+
/** Weight for similar skill context in prompt (default: 0.3) */
|
|
24
|
+
contextWeight?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Extended extraction request with RAG context
|
|
28
|
+
*/
|
|
29
|
+
export interface RAGSkillExtractionRequest extends SkillExtractionRequest {
|
|
30
|
+
/** Enable RAG-enhanced extraction */
|
|
31
|
+
useRAG?: boolean;
|
|
32
|
+
/** RAG options */
|
|
33
|
+
ragOptions?: GraphRAGOrchestratorOptions;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Extended extraction response with RAG metadata
|
|
37
|
+
*/
|
|
38
|
+
export interface RAGSkillExtractionResponse extends SkillExtractionResponse {
|
|
39
|
+
/** Similar skills used for context */
|
|
40
|
+
contextSkills?: VectorSearchResult[];
|
|
41
|
+
/** RAG context that was provided */
|
|
42
|
+
ragContext?: string;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Extended decomposition request with RAG
|
|
46
|
+
*/
|
|
47
|
+
export interface RAGDecompositionRequest extends DecompositionRequest {
|
|
48
|
+
/** Enable RAG-enhanced decomposition */
|
|
49
|
+
useRAG?: boolean;
|
|
50
|
+
/** RAG options */
|
|
51
|
+
ragOptions?: GraphRAGOrchestratorOptions;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extended decomposition response with RAG metadata
|
|
55
|
+
*/
|
|
56
|
+
export interface RAGDecompositionResponse extends DecompositionResponse {
|
|
57
|
+
/** Similar skills used for context */
|
|
58
|
+
contextSkills?: VectorSearchResult[];
|
|
59
|
+
/** RAG context that was provided */
|
|
60
|
+
ragContext?: string;
|
|
61
|
+
/** Skills that were matched to existing graph skills */
|
|
62
|
+
matchedSkills?: Array<{
|
|
63
|
+
extractedId: string;
|
|
64
|
+
matchedSkillId: string;
|
|
65
|
+
similarity: number;
|
|
66
|
+
}>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* GraphRAG-enhanced LLM orchestrator
|
|
70
|
+
*
|
|
71
|
+
* Provides semantic search-enhanced skill extraction and prerequisite inference.
|
|
72
|
+
*/
|
|
73
|
+
export declare class GraphRAGOrchestrator extends LLMOrchestrator {
|
|
74
|
+
private storage;
|
|
75
|
+
private defaultOptions;
|
|
76
|
+
constructor(adapter: LLMAdapter, storage?: GraphRAGStorage, options?: GraphRAGOrchestratorOptions);
|
|
77
|
+
/**
|
|
78
|
+
* Set the GraphRAG storage
|
|
79
|
+
*/
|
|
80
|
+
setStorage(storage: GraphRAGStorage): void;
|
|
81
|
+
/**
|
|
82
|
+
* Get the current storage
|
|
83
|
+
*/
|
|
84
|
+
getStorage(): GraphRAGStorage | null;
|
|
85
|
+
/**
|
|
86
|
+
* Check if GraphRAG is available
|
|
87
|
+
*/
|
|
88
|
+
isRAGEnabled(): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Build context string from similar skills
|
|
91
|
+
*/
|
|
92
|
+
private formatSkillContext;
|
|
93
|
+
/**
|
|
94
|
+
* Build context from full GraphRAG context
|
|
95
|
+
*/
|
|
96
|
+
private formatGraphRAGContext;
|
|
97
|
+
/**
|
|
98
|
+
* Extract skills with RAG enhancement
|
|
99
|
+
*/
|
|
100
|
+
extractSkillsWithRAG(request: RAGSkillExtractionRequest): Promise<RAGSkillExtractionResponse>;
|
|
101
|
+
/**
|
|
102
|
+
* Infer prerequisites with RAG enhancement
|
|
103
|
+
*/
|
|
104
|
+
inferPrerequisitesWithRAG(request: PrerequisiteInferenceRequest & {
|
|
105
|
+
useRAG?: boolean;
|
|
106
|
+
ragOptions?: GraphRAGOrchestratorOptions;
|
|
107
|
+
}): Promise<PrerequisiteInferenceResponse & {
|
|
108
|
+
ragContext?: string;
|
|
109
|
+
}>;
|
|
110
|
+
/**
|
|
111
|
+
* Full curriculum decomposition with RAG enhancement
|
|
112
|
+
*/
|
|
113
|
+
decomposeWithRAG(request: RAGDecompositionRequest): Promise<RAGDecompositionResponse>;
|
|
114
|
+
/**
|
|
115
|
+
* Find existing skills that match extracted skills
|
|
116
|
+
*
|
|
117
|
+
* Use this after extraction to identify duplicates
|
|
118
|
+
*/
|
|
119
|
+
matchExtractedSkills(extractedSkills: ExtractedSkillLLM[], options?: {
|
|
120
|
+
minSimilarity?: number;
|
|
121
|
+
}): Promise<Array<{
|
|
122
|
+
extracted: ExtractedSkillLLM;
|
|
123
|
+
matches: VectorSearchResult[];
|
|
124
|
+
bestMatch?: {
|
|
125
|
+
skillId: string;
|
|
126
|
+
similarity: number;
|
|
127
|
+
};
|
|
128
|
+
}>>;
|
|
129
|
+
/**
|
|
130
|
+
* Suggest prerequisite links between extracted and existing skills
|
|
131
|
+
*/
|
|
132
|
+
suggestPrerequisiteLinks(extractedSkills: Array<{
|
|
133
|
+
id: string;
|
|
134
|
+
name: string;
|
|
135
|
+
description: string;
|
|
136
|
+
bloomLevel: BloomLevel;
|
|
137
|
+
}>, options?: {
|
|
138
|
+
maxSuggestionsPerSkill?: number;
|
|
139
|
+
}): Promise<Array<{
|
|
140
|
+
extractedSkillId: string;
|
|
141
|
+
suggestedPrerequisites: Array<{
|
|
142
|
+
skillId: string;
|
|
143
|
+
skillName: string;
|
|
144
|
+
confidence: number;
|
|
145
|
+
}>;
|
|
146
|
+
suggestedDependents: Array<{
|
|
147
|
+
skillId: string;
|
|
148
|
+
skillName: string;
|
|
149
|
+
confidence: number;
|
|
150
|
+
}>;
|
|
151
|
+
}>>;
|
|
152
|
+
/**
|
|
153
|
+
* Generate a personalized learning path with LLM-enhanced reasoning
|
|
154
|
+
*
|
|
155
|
+
* This combines GraphRAG path generation with LLM analysis
|
|
156
|
+
* to provide better explanations and alternative paths.
|
|
157
|
+
*/
|
|
158
|
+
generateLearningPath(request: LearningPathRequest): Promise<LearningPathWithReasoning>;
|
|
159
|
+
/**
|
|
160
|
+
* Format a learning path for LLM context
|
|
161
|
+
*/
|
|
162
|
+
private formatPathForLLM;
|
|
163
|
+
/**
|
|
164
|
+
* Analyze a learner's progress and recommend next steps
|
|
165
|
+
*/
|
|
166
|
+
analyzeProgressAndRecommend(request: ProgressAnalysisRequest): Promise<ProgressAnalysisResult>;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Request for learning path generation
|
|
170
|
+
*/
|
|
171
|
+
export interface LearningPathRequest {
|
|
172
|
+
/** Natural language goal description */
|
|
173
|
+
goal: string;
|
|
174
|
+
/** Current skill mastery states (skillId -> mastery 0-1) */
|
|
175
|
+
currentMastery?: Map<string, number>;
|
|
176
|
+
/** Maximum path length */
|
|
177
|
+
maxSteps?: number;
|
|
178
|
+
/** Learning preferences */
|
|
179
|
+
preferences?: {
|
|
180
|
+
style?: 'practical' | 'theoretical' | 'balanced';
|
|
181
|
+
difficulty?: 'gradual' | 'challenging';
|
|
182
|
+
};
|
|
183
|
+
/** Enhance path with LLM reasoning */
|
|
184
|
+
enhanceWithLLM?: boolean;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Enhanced learning path result with LLM reasoning
|
|
188
|
+
*/
|
|
189
|
+
export interface LearningPathWithReasoning {
|
|
190
|
+
/** Ordered list of skills with optional learning guidance */
|
|
191
|
+
path: Array<import('../types/skill.js').SkillNode & {
|
|
192
|
+
learningGuidance?: {
|
|
193
|
+
whyImportant: string;
|
|
194
|
+
howToApproach: string;
|
|
195
|
+
estimatedEffort: string;
|
|
196
|
+
};
|
|
197
|
+
}>;
|
|
198
|
+
/** Edges connecting path skills */
|
|
199
|
+
edges: import('../types/edge.js').PrerequisiteEdge[];
|
|
200
|
+
/** Estimated total time (minutes) */
|
|
201
|
+
estimatedMinutes: number;
|
|
202
|
+
/** Detailed reasoning for the path */
|
|
203
|
+
reasoning: string;
|
|
204
|
+
/** Alternative paths */
|
|
205
|
+
alternatives?: Array<{
|
|
206
|
+
path: import('../types/skill.js').SkillNode[];
|
|
207
|
+
reasoning: string;
|
|
208
|
+
}>;
|
|
209
|
+
/** LLM-generated enhancements */
|
|
210
|
+
llmEnhancements?: {
|
|
211
|
+
tips: string[];
|
|
212
|
+
potentialChallenges: string[];
|
|
213
|
+
alternativeApproaches?: Array<{
|
|
214
|
+
name: string;
|
|
215
|
+
description: string;
|
|
216
|
+
tradeoffs: string;
|
|
217
|
+
}>;
|
|
218
|
+
};
|
|
219
|
+
/** API usage */
|
|
220
|
+
usage?: import('../types/llm.js').CompletionResponse['usage'];
|
|
221
|
+
/** Processing time in milliseconds */
|
|
222
|
+
durationMs: number;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Progress analysis request
|
|
226
|
+
*/
|
|
227
|
+
export interface ProgressAnalysisRequest {
|
|
228
|
+
/** Map of skill IDs to mastery levels (0-1) */
|
|
229
|
+
masteredSkills: Map<string, number>;
|
|
230
|
+
/** The learner's goal (optional) */
|
|
231
|
+
goal?: string;
|
|
232
|
+
/** Generate LLM insights */
|
|
233
|
+
generateInsights?: boolean;
|
|
234
|
+
/** Max recommendations to return */
|
|
235
|
+
maxRecommendations?: number;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Skill recommendation
|
|
239
|
+
*/
|
|
240
|
+
export interface SkillRecommendation {
|
|
241
|
+
/** The recommended skill */
|
|
242
|
+
skill: import('../types/skill.js').SkillNode;
|
|
243
|
+
/** How ready the learner is (0-1) */
|
|
244
|
+
readiness: number;
|
|
245
|
+
/** Why this skill is recommended */
|
|
246
|
+
reason: string;
|
|
247
|
+
/** Priority score */
|
|
248
|
+
priority: number;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* LLM-generated progress insights
|
|
252
|
+
*/
|
|
253
|
+
export interface ProgressInsights {
|
|
254
|
+
/** Summary of current progress */
|
|
255
|
+
progressSummary: string;
|
|
256
|
+
/** Strengths identified */
|
|
257
|
+
strengths: string[];
|
|
258
|
+
/** Areas for improvement */
|
|
259
|
+
areasToImprove: string[];
|
|
260
|
+
/** Motivational message */
|
|
261
|
+
encouragement: string;
|
|
262
|
+
/** Suggested focus areas */
|
|
263
|
+
focusAreas: string[];
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Progress analysis result
|
|
267
|
+
*/
|
|
268
|
+
export interface ProgressAnalysisResult {
|
|
269
|
+
/** Recommended skills */
|
|
270
|
+
recommendations: SkillRecommendation[];
|
|
271
|
+
/** LLM insights (if requested) */
|
|
272
|
+
insights?: ProgressInsights;
|
|
273
|
+
/** Processing time */
|
|
274
|
+
durationMs: number;
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Create a GraphRAG-enhanced orchestrator
|
|
278
|
+
*/
|
|
279
|
+
export declare function createGraphRAGOrchestrator(adapter: LLMAdapter, storage?: GraphRAGStorage, options?: GraphRAGOrchestratorOptions): GraphRAGOrchestrator;
|
|
280
|
+
//# sourceMappingURL=graphrag-orchestrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphrag-orchestrator.d.ts","sourceRoot":"","sources":["../../../src/llm/graphrag-orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,5 +7,7 @@ export type { LLMProvider, LLMConfig, OpenAIConfig, AnthropicConfig, OllamaConfi
|
|
|
7
7
|
export { BaseLLMAdapter, LLMError, DEFAULT_CONFIG, OpenAIAdapter, createOpenAIAdapter, AnthropicAdapter, createAnthropicAdapter, OllamaAdapter, createOllamaAdapter, GeminiAdapter, createGeminiAdapter, OpenRouterAdapter, createOpenRouterAdapter, OPENROUTER_MODELS, MediaPipeAdapter, createMediaPipeAdapter, MEDIAPIPE_MODELS, } from './adapters/index.js';
|
|
8
8
|
export type { LLMErrorCode } from './adapters/index.js';
|
|
9
9
|
export { LLMOrchestrator, createOrchestrator } from './orchestrator.js';
|
|
10
|
+
export { GraphRAGOrchestrator, createGraphRAGOrchestrator, } from './graphrag-orchestrator.js';
|
|
11
|
+
export type { GraphRAGOrchestratorOptions, RAGSkillExtractionRequest, RAGSkillExtractionResponse, RAGDecompositionRequest, RAGDecompositionResponse, LearningPathRequest, LearningPathWithReasoning, ProgressAnalysisRequest, ProgressAnalysisResult, SkillRecommendation, ProgressInsights, } from './graphrag-orchestrator.js';
|
|
10
12
|
export { SYSTEM_PROMPTS, EXTRACTION_SCHEMA, PREREQUISITE_SCHEMA, BLOOM_ANALYSIS_SCHEMA, DECOMPOSITION_SCHEMA, buildExtractionPrompt, buildPrerequisitePrompt, buildBloomPrompt, buildDecompositionPrompt, } from './prompts.js';
|
|
11
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,eAAe,IAAI,gBAAgB,GACpC,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,cAAc,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/llm/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,YAAY,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACvB,4BAA4B,EAC5B,oBAAoB,EACpB,6BAA6B,EAC7B,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,UAAU,EACV,eAAe,IAAI,gBAAgB,GACpC,MAAM,iBAAiB,CAAC;AAKzB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAKxE,OAAO,EACL,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,cAAc,CAAC"}
|
|
@@ -15,15 +15,15 @@ export declare const ListSkillsSchema: z.ZodObject<{
|
|
|
15
15
|
bloomLevel: z.ZodOptional<z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>>;
|
|
16
16
|
tag: z.ZodOptional<z.ZodString>;
|
|
17
17
|
}, "strip", z.ZodTypeAny, {
|
|
18
|
-
limit: number;
|
|
19
18
|
offset: number;
|
|
19
|
+
limit: number;
|
|
20
20
|
bloomLevel?: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create" | undefined;
|
|
21
21
|
tag?: string | undefined;
|
|
22
22
|
}, {
|
|
23
23
|
bloomLevel?: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create" | undefined;
|
|
24
|
+
offset?: number | undefined;
|
|
24
25
|
limit?: number | undefined;
|
|
25
26
|
tag?: string | undefined;
|
|
26
|
-
offset?: number | undefined;
|
|
27
27
|
}>;
|
|
28
28
|
export declare const GetSkillSchema: z.ZodObject<{
|
|
29
29
|
skillId: z.ZodString;
|
|
@@ -55,8 +55,8 @@ export declare const SearchSkillsSchema: z.ZodObject<{
|
|
|
55
55
|
query: z.ZodString;
|
|
56
56
|
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
57
57
|
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
query: string;
|
|
59
58
|
limit: number;
|
|
59
|
+
query: string;
|
|
60
60
|
}, {
|
|
61
61
|
query: string;
|
|
62
62
|
limit?: number | undefined;
|
|
@@ -184,15 +184,15 @@ export declare const TOOL_DEFINITIONS: {
|
|
|
184
184
|
bloomLevel: z.ZodOptional<z.ZodEnum<["remember", "understand", "apply", "analyze", "evaluate", "create"]>>;
|
|
185
185
|
tag: z.ZodOptional<z.ZodString>;
|
|
186
186
|
}, "strip", z.ZodTypeAny, {
|
|
187
|
-
limit: number;
|
|
188
187
|
offset: number;
|
|
188
|
+
limit: number;
|
|
189
189
|
bloomLevel?: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create" | undefined;
|
|
190
190
|
tag?: string | undefined;
|
|
191
191
|
}, {
|
|
192
192
|
bloomLevel?: "remember" | "understand" | "apply" | "analyze" | "evaluate" | "create" | undefined;
|
|
193
|
+
offset?: number | undefined;
|
|
193
194
|
limit?: number | undefined;
|
|
194
195
|
tag?: string | undefined;
|
|
195
|
-
offset?: number | undefined;
|
|
196
196
|
}>;
|
|
197
197
|
readonly handler: typeof listSkills;
|
|
198
198
|
};
|
|
@@ -236,8 +236,8 @@ export declare const TOOL_DEFINITIONS: {
|
|
|
236
236
|
query: z.ZodString;
|
|
237
237
|
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
238
238
|
}, "strip", z.ZodTypeAny, {
|
|
239
|
-
query: string;
|
|
240
239
|
limit: number;
|
|
240
|
+
query: string;
|
|
241
241
|
}, {
|
|
242
242
|
query: string;
|
|
243
243
|
limit?: number | undefined;
|
|
@@ -41,6 +41,8 @@ export { generateId, nowISO, inputToSkillNode, inputToEdge, validateSkillInput,
|
|
|
41
41
|
export { MemoryStorage } from './memory.js';
|
|
42
42
|
export { LevelGraphStorage } from './levelgraph.js';
|
|
43
43
|
export { Neo4jStorage } from './neo4j.js';
|
|
44
|
+
export { Neo4jGraphRAGStorage, createNeo4jGraphRAGStorage, GRAPHRAG_DEFAULTS, } from './neo4j-graphrag.js';
|
|
45
|
+
export { FRACTIONS_CURRICULUM, PROGRAMMING_CURRICULUM, seedStorage, } from './seeds.js';
|
|
44
46
|
import type { StorageConfig, GraphStorage } from '../types/storage.js';
|
|
45
47
|
/**
|
|
46
48
|
* Create a storage adapter based on configuration.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAKH,YAAY,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,WAAW,CAAC;AAKnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKvE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAWjE"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/storage/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAKH,YAAY,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,YAAY,EACZ,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,WAAW,CAAC;AAKnB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK1C,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,WAAW,GACZ,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKvE;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,YAAY,CAWjE"}
|