@getplumb/core 0.1.6 → 0.4.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/README.md +2 -2
- package/dist/context-builder.d.ts +1 -7
- package/dist/context-builder.d.ts.map +1 -1
- package/dist/context-builder.js +7 -44
- package/dist/context-builder.js.map +1 -1
- package/dist/embedder.d.ts +16 -2
- package/dist/embedder.d.ts.map +1 -1
- package/dist/embedder.js +23 -4
- package/dist/embedder.js.map +1 -1
- package/dist/extraction-queue.d.ts +13 -3
- package/dist/extraction-queue.d.ts.map +1 -1
- package/dist/extraction-queue.js +21 -4
- package/dist/extraction-queue.js.map +1 -1
- package/dist/extractor.d.ts +2 -1
- package/dist/extractor.d.ts.map +1 -1
- package/dist/extractor.js +106 -7
- package/dist/extractor.js.map +1 -1
- package/dist/extractor.test.d.ts +2 -0
- package/dist/extractor.test.d.ts.map +1 -0
- package/dist/extractor.test.js +158 -0
- package/dist/extractor.test.js.map +1 -0
- package/dist/fact-search.d.ts +9 -5
- package/dist/fact-search.d.ts.map +1 -1
- package/dist/fact-search.js +25 -16
- package/dist/fact-search.js.map +1 -1
- package/dist/fact-search.test.d.ts +12 -0
- package/dist/fact-search.test.d.ts.map +1 -0
- package/dist/fact-search.test.js +117 -0
- package/dist/fact-search.test.js.map +1 -0
- package/dist/index.d.ts +6 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -5
- package/dist/index.js.map +1 -1
- package/dist/llm-client.d.ts +11 -2
- package/dist/llm-client.d.ts.map +1 -1
- package/dist/llm-client.js +47 -3
- package/dist/llm-client.js.map +1 -1
- package/dist/local-store.d.ts +19 -63
- package/dist/local-store.d.ts.map +1 -1
- package/dist/local-store.js +353 -262
- package/dist/local-store.js.map +1 -1
- package/dist/local-store.test.d.ts +2 -0
- package/dist/local-store.test.d.ts.map +1 -0
- package/dist/local-store.test.js +146 -0
- package/dist/local-store.test.js.map +1 -0
- package/dist/raw-log-search.d.ts +9 -5
- package/dist/raw-log-search.d.ts.map +1 -1
- package/dist/raw-log-search.js +107 -29
- package/dist/raw-log-search.js.map +1 -1
- package/dist/raw-log-search.test.d.ts +12 -0
- package/dist/raw-log-search.test.d.ts.map +1 -0
- package/dist/raw-log-search.test.js +124 -0
- package/dist/raw-log-search.test.js.map +1 -0
- package/dist/read-path.d.ts +6 -23
- package/dist/read-path.d.ts.map +1 -1
- package/dist/read-path.js +9 -48
- package/dist/read-path.js.map +1 -1
- package/dist/read-path.test.d.ts +15 -0
- package/dist/read-path.test.d.ts.map +1 -0
- package/dist/read-path.test.js +393 -0
- package/dist/read-path.test.js.map +1 -0
- package/dist/schema.d.ts +4 -13
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +42 -52
- package/dist/schema.js.map +1 -1
- package/dist/scorer.d.ts +0 -9
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +1 -31
- package/dist/scorer.js.map +1 -1
- package/dist/scorer.test.d.ts +10 -0
- package/dist/scorer.test.d.ts.map +1 -0
- package/dist/scorer.test.js +169 -0
- package/dist/scorer.test.js.map +1 -0
- package/dist/store.d.ts +2 -14
- package/dist/store.d.ts.map +1 -1
- package/dist/types.d.ts +0 -25
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -6
- package/dist/types.js.map +1 -1
- package/dist/wasm-db.d.ts +63 -8
- package/dist/wasm-db.d.ts.map +1 -1
- package/dist/wasm-db.js +124 -31
- package/dist/wasm-db.js.map +1 -1
- package/package.json +14 -2
package/dist/llm-client.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import OpenAI from 'openai';
|
|
2
2
|
/**
|
|
3
3
|
* Default models per provider
|
|
4
|
+
* Recommended: google/gemini-2.5-flash-lite (extremely cheap and fast)
|
|
4
5
|
*/
|
|
5
6
|
const DEFAULT_MODELS = {
|
|
7
|
+
google: 'gemini-2.5-flash-lite',
|
|
6
8
|
openai: 'gpt-4o-mini',
|
|
7
9
|
anthropic: 'claude-haiku-4-5-20251001',
|
|
8
10
|
ollama: 'llama3.1',
|
|
@@ -38,10 +40,25 @@ export function resolveAnthropicKey() {
|
|
|
38
40
|
throw new Error('Plumb fact extraction requires ANTHROPIC_API_KEY. ' +
|
|
39
41
|
'Set the ANTHROPIC_API_KEY environment variable and try again.');
|
|
40
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Resolve the Gemini API key from environment variables.
|
|
45
|
+
* Returns the key if found, otherwise throws a clear error.
|
|
46
|
+
*
|
|
47
|
+
* Set GEMINI_API_KEY in your environment before using Plumb with the Google provider.
|
|
48
|
+
*
|
|
49
|
+
* @throws Error if no key is found
|
|
50
|
+
*/
|
|
51
|
+
export function resolveGeminiKey() {
|
|
52
|
+
const envKey = process.env['GEMINI_API_KEY'];
|
|
53
|
+
if (envKey)
|
|
54
|
+
return envKey;
|
|
55
|
+
throw new Error('Plumb fact extraction requires GEMINI_API_KEY. ' +
|
|
56
|
+
'Set the GEMINI_API_KEY environment variable and try again.');
|
|
57
|
+
}
|
|
41
58
|
/**
|
|
42
59
|
* Calls the configured LLM with the given prompt and returns the text response.
|
|
43
60
|
* Provider and model are configurable via env:
|
|
44
|
-
* PLUMB_LLM_PROVIDER — 'openai' (default), 'anthropic', 'ollama', 'openai-compatible'
|
|
61
|
+
* PLUMB_LLM_PROVIDER — 'openai' (default), 'anthropic', 'ollama', 'openai-compatible', 'google'
|
|
45
62
|
* PLUMB_LLM_MODEL — model ID, defaults vary per provider
|
|
46
63
|
* PLUMB_LLM_BASE_URL — for 'openai-compatible' provider
|
|
47
64
|
* OLLAMA_HOST — for 'ollama' provider (default: http://localhost:11434/v1)
|
|
@@ -95,6 +112,20 @@ export async function callLLM(prompt) {
|
|
|
95
112
|
});
|
|
96
113
|
return response.choices[0]?.message?.content ?? '';
|
|
97
114
|
}
|
|
115
|
+
if (provider === 'google') {
|
|
116
|
+
// Google Gemini via OpenAI-compatible endpoint
|
|
117
|
+
const apiKey = resolveGeminiKey();
|
|
118
|
+
const client = new OpenAI({
|
|
119
|
+
baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai',
|
|
120
|
+
apiKey,
|
|
121
|
+
});
|
|
122
|
+
const response = await client.chat.completions.create({
|
|
123
|
+
model,
|
|
124
|
+
messages: [{ role: 'user', content: prompt }],
|
|
125
|
+
max_tokens: 4096,
|
|
126
|
+
});
|
|
127
|
+
return response.choices[0]?.message?.content ?? '';
|
|
128
|
+
}
|
|
98
129
|
if (provider === 'openai-compatible') {
|
|
99
130
|
const baseURL = process.env['PLUMB_LLM_BASE_URL'];
|
|
100
131
|
if (!baseURL) {
|
|
@@ -110,7 +141,7 @@ export async function callLLM(prompt) {
|
|
|
110
141
|
});
|
|
111
142
|
return response.choices[0]?.message?.content ?? '';
|
|
112
143
|
}
|
|
113
|
-
throw new Error(`Unsupported PLUMB_LLM_PROVIDER: ${provider}. Supported: openai, anthropic, ollama, openai-compatible`);
|
|
144
|
+
throw new Error(`Unsupported PLUMB_LLM_PROVIDER: ${provider}. Supported: openai, anthropic, ollama, google, openai-compatible`);
|
|
114
145
|
}
|
|
115
146
|
/**
|
|
116
147
|
* Calls the LLM using explicitly provided config rather than environment variables.
|
|
@@ -163,6 +194,19 @@ export async function callLLMWithConfig(prompt, config) {
|
|
|
163
194
|
});
|
|
164
195
|
return response.choices[0]?.message?.content ?? '';
|
|
165
196
|
}
|
|
197
|
+
if (provider === 'google') {
|
|
198
|
+
const apiKey = config.apiKey ?? resolveGeminiKey();
|
|
199
|
+
const client = new OpenAI({
|
|
200
|
+
baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai',
|
|
201
|
+
apiKey,
|
|
202
|
+
});
|
|
203
|
+
const response = await client.chat.completions.create({
|
|
204
|
+
model,
|
|
205
|
+
messages: [{ role: 'user', content: prompt }],
|
|
206
|
+
max_tokens: 4096,
|
|
207
|
+
});
|
|
208
|
+
return response.choices[0]?.message?.content ?? '';
|
|
209
|
+
}
|
|
166
210
|
if (provider === 'openai-compatible') {
|
|
167
211
|
const baseURL = config.baseUrl ?? process.env['PLUMB_LLM_BASE_URL'];
|
|
168
212
|
if (!baseURL) {
|
|
@@ -178,6 +222,6 @@ export async function callLLMWithConfig(prompt, config) {
|
|
|
178
222
|
});
|
|
179
223
|
return response.choices[0]?.message?.content ?? '';
|
|
180
224
|
}
|
|
181
|
-
throw new Error(`Unsupported provider: ${provider}. Supported: openai, anthropic, ollama, openai-compatible`);
|
|
225
|
+
throw new Error(`Unsupported provider: ${provider}. Supported: openai, anthropic, ollama, google, openai-compatible`);
|
|
182
226
|
}
|
|
183
227
|
//# sourceMappingURL=llm-client.js.map
|
package/dist/llm-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../src/llm-client.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B
|
|
1
|
+
{"version":3,"file":"llm-client.js","sourceRoot":"","sources":["../src/llm-client.ts"],"names":[],"mappings":"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"}
|
package/dist/local-store.d.ts
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
1
|
import { type WasmDb } from './wasm-db.js';
|
|
2
2
|
import type { MemoryStore } from './store.js';
|
|
3
|
-
import type {
|
|
4
|
-
import { type LLMConfig } from './llm-client.js';
|
|
3
|
+
import type { IngestResult, MessageExchange, StoreStatus } from './types.js';
|
|
5
4
|
import { type RawLogSearchResult } from './raw-log-search.js';
|
|
6
|
-
import { ExtractionQueue } from './extraction-queue.js';
|
|
7
5
|
export type { RawLogSearchResult };
|
|
8
|
-
export interface RawFact {
|
|
9
|
-
readonly id: string;
|
|
10
|
-
readonly userId: string;
|
|
11
|
-
readonly subject: string;
|
|
12
|
-
readonly predicate: string;
|
|
13
|
-
readonly object: string;
|
|
14
|
-
readonly confidence: number;
|
|
15
|
-
readonly decayRate: string;
|
|
16
|
-
readonly timestamp: string;
|
|
17
|
-
readonly sourceSessionId: string;
|
|
18
|
-
readonly sourceSessionLabel: string | null;
|
|
19
|
-
readonly context: string | null;
|
|
20
|
-
readonly deleted: boolean;
|
|
21
|
-
readonly deletedAt: string | null;
|
|
22
|
-
}
|
|
23
6
|
export interface RawLogEntry {
|
|
24
7
|
readonly id: string;
|
|
25
8
|
readonly userId: string;
|
|
@@ -32,9 +15,11 @@ export interface RawLogEntry {
|
|
|
32
15
|
readonly chunkText: string;
|
|
33
16
|
readonly chunkIndex: number;
|
|
34
17
|
readonly contentHash: string | null;
|
|
18
|
+
readonly embedStatus: string;
|
|
19
|
+
readonly embedError: string | null;
|
|
20
|
+
readonly embedModel: string | null;
|
|
35
21
|
}
|
|
36
22
|
export interface ExportData {
|
|
37
|
-
readonly facts: readonly RawFact[];
|
|
38
23
|
readonly rawLog: readonly RawLogEntry[];
|
|
39
24
|
}
|
|
40
25
|
export interface LocalStoreOptions {
|
|
@@ -43,34 +28,26 @@ export interface LocalStoreOptions {
|
|
|
43
28
|
/** User ID for scoping all data. Defaults to 'default' (single-user local install). */
|
|
44
29
|
userId?: string;
|
|
45
30
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
31
|
+
* Backlog processor tuning. Controls idle behavior for embed drain loop.
|
|
32
|
+
* Defaults: embedIdleMs=5000
|
|
48
33
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
*/
|
|
54
|
-
extractionQueue?: ExtractionQueue;
|
|
34
|
+
backlog?: {
|
|
35
|
+
/** Sleep duration when embed queue is empty (default 5000ms) */
|
|
36
|
+
embedIdleMs?: number;
|
|
37
|
+
};
|
|
55
38
|
}
|
|
56
|
-
export type { LLMConfig };
|
|
57
39
|
export declare class LocalStore implements MemoryStore {
|
|
58
40
|
#private;
|
|
59
41
|
/** Expose database for plugin use (e.g., NudgeManager) */
|
|
60
42
|
get db(): WasmDb;
|
|
61
43
|
/** Expose userId for plugin use */
|
|
62
44
|
get userId(): string;
|
|
63
|
-
/** Expose extraction queue for lifecycle management (start/stop) */
|
|
64
|
-
get extractionQueue(): ExtractionQueue;
|
|
65
45
|
private constructor();
|
|
66
46
|
/**
|
|
67
47
|
* Create a new LocalStore instance (async factory).
|
|
68
48
|
* Required because WASM initialization is async.
|
|
69
49
|
*/
|
|
70
50
|
static create(options?: LocalStoreOptions): Promise<LocalStore>;
|
|
71
|
-
store(fact: Omit<Fact, 'id'>): Promise<string>;
|
|
72
|
-
search(query: string, limit?: number): Promise<readonly SearchResult[]>;
|
|
73
|
-
delete(id: string): Promise<void>;
|
|
74
51
|
status(): Promise<StoreStatus>;
|
|
75
52
|
ingest(exchange: MessageExchange): Promise<IngestResult>;
|
|
76
53
|
/**
|
|
@@ -79,41 +56,20 @@ export declare class LocalStore implements MemoryStore {
|
|
|
79
56
|
*/
|
|
80
57
|
searchRawLog(query: string, limit?: number): Promise<readonly RawLogSearchResult[]>;
|
|
81
58
|
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* Delegates to ExtractionQueue.flush().
|
|
85
|
-
*/
|
|
86
|
-
drain(): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Re-extract facts for orphaned raw_log chunks (chunks with no corresponding facts).
|
|
89
|
-
*
|
|
90
|
-
* This is useful when fact extraction failed during initial ingest (e.g., missing API key,
|
|
91
|
-
* rate limits, crashes). Re-running the normal seeder won't help because content-hash dedup
|
|
92
|
-
* skips already-ingested chunks before reaching the extraction phase.
|
|
93
|
-
*
|
|
94
|
-
* This method directly calls extractFacts() for each orphaned chunk, bypassing the dedup gate.
|
|
95
|
-
*
|
|
96
|
-
* @param throttleMs - Delay between extractions (default 1000ms) to stay under rate limits
|
|
97
|
-
* @returns Statistics: orphansFound, factsCreated
|
|
59
|
+
* Export all data for a user (for plumb export command).
|
|
60
|
+
* Returns raw database rows (no vector data).
|
|
98
61
|
*/
|
|
99
|
-
|
|
100
|
-
orphansFound: number;
|
|
101
|
-
factsCreated: number;
|
|
102
|
-
}>;
|
|
62
|
+
exportAll(userId: string): ExportData;
|
|
103
63
|
/**
|
|
104
|
-
*
|
|
105
|
-
*
|
|
64
|
+
* Start background backlog processor drain loop (T-095).
|
|
65
|
+
* Launches continuous async loop for embed backlog.
|
|
106
66
|
*/
|
|
107
|
-
|
|
108
|
-
subject: string;
|
|
109
|
-
count: number;
|
|
110
|
-
}>;
|
|
67
|
+
startBacklogProcessor(): void;
|
|
111
68
|
/**
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
* Includes soft-deleted facts for transparency.
|
|
69
|
+
* Stop background backlog processor drain loop (T-095).
|
|
70
|
+
* Signals loop to stop and awaits in-flight work.
|
|
115
71
|
*/
|
|
116
|
-
|
|
72
|
+
stopBacklogProcessor(): Promise<void>;
|
|
117
73
|
/** Close the database connection. Call when done (e.g. in tests). */
|
|
118
74
|
close(): void;
|
|
119
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../src/local-store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../src/local-store.ts"],"names":[],"mappings":"AAIA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG7E,OAAO,EAAgB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG5E,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,gEAAgE;QAChE,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAgGD,qBAAa,UAAW,YAAW,WAAW;;IAoB5C,0DAA0D;IAC1D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,mCAAmC;IACnC,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO;IAYP;;;OAGG;WACU,MAAM,CAAC,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CnE,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IA2B9B,MAAM,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC;IAqI9D;;;OAGG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC;IAKrF;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAiCrC;;;OAGG;IACH,qBAAqB,IAAI,IAAI;IAsB7B;;;OAGG;IACG,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyI3C,qEAAqE;IACrE,KAAK,IAAI,IAAI;CAGd"}
|