wiki-graph-sdk 0.8.0 → 0.8.1
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 +21 -0
- package/dist/archives.cjs +91 -17
- package/dist/archives.cjs.map +1 -1
- package/dist/archives.d.ts +8 -2
- package/dist/archives.js +92 -17
- package/dist/archives.js.map +1 -1
- package/dist/conversions.cjs +23 -5
- package/dist/conversions.cjs.map +1 -1
- package/dist/conversions.d.ts +6 -1
- package/dist/conversions.js +23 -5
- package/dist/conversions.js.map +1 -1
- package/dist/default-worker.cjs +34 -11
- package/dist/default-worker.cjs.map +1 -1
- package/dist/default-worker.d.ts +1 -0
- package/dist/default-worker.js +34 -11
- package/dist/default-worker.js.map +1 -1
- package/dist/embedding.cjs +2 -1
- package/dist/embedding.cjs.map +1 -1
- package/dist/embedding.d.ts +4 -4
- package/dist/embedding.js +2 -1
- package/dist/embedding.js.map +1 -1
- package/dist/index.cjs +336 -46
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +26 -9
- package/dist/index.js +337 -47
- package/dist/index.js.map +1 -1
- package/dist/{jobs-xIm_kshM.d.ts → jobs-CRK-DZ40.d.ts} +5 -0
- package/dist/local-config.cjs +2 -1
- package/dist/local-config.cjs.map +1 -1
- package/dist/local-config.js +2 -1
- package/dist/local-config.js.map +1 -1
- package/dist/maintenance.cjs +2 -1
- package/dist/maintenance.cjs.map +1 -1
- package/dist/maintenance.d.ts +4 -1
- package/dist/maintenance.js +2 -1
- package/dist/maintenance.js.map +1 -1
- package/dist/runtime-config.cjs +4 -3
- package/dist/runtime-config.cjs.map +1 -1
- package/dist/runtime-config.d.ts +4 -1
- package/dist/runtime-config.js +4 -3
- package/dist/runtime-config.js.map +1 -1
- package/dist/stage-BnWI3Rqt.d.ts +33 -0
- package/dist/stage.cjs +22 -12
- package/dist/stage.cjs.map +1 -1
- package/dist/stage.d.ts +2 -14
- package/dist/stage.js +22 -12
- package/dist/stage.js.map +1 -1
- package/dist/worker.cjs +2 -1
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.js +2 -1
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -23,6 +23,27 @@ for (const job of jobs) {
|
|
|
23
23
|
wikiGraph.close();
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
Applications may replace the configured LLM and embedding implementations for
|
|
27
|
+
one SDK instance:
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
const wikiGraph = createWikiGraphSDK({
|
|
31
|
+
providers: {
|
|
32
|
+
llm: myStreamingLLMProvider,
|
|
33
|
+
embedding: myEmbeddingProvider,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
await wikiGraph.jobs.runWorker();
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
An operation-level `llm` option (the typed SDK equivalent of CLI `--llm`)
|
|
41
|
+
takes precedence over the injected LLM provider. An injected provider takes
|
|
42
|
+
precedence over local database configuration. Injected objects are
|
|
43
|
+
process-local and are not persisted with durable jobs, so a worker in another
|
|
44
|
+
process must create its SDK with the same providers. The standalone default
|
|
45
|
+
worker continues to use local configuration.
|
|
46
|
+
|
|
26
47
|
Job event subscriptions observe durable work without coupling observation to
|
|
27
48
|
cancellation. Call `job.cancel()` explicitly to cancel a job; unsubscribing
|
|
28
49
|
only stops the current listener.
|
package/dist/archives.cjs
CHANGED
|
@@ -826,12 +826,16 @@ function getWikiGraphSDKRuntimeContext() {
|
|
|
826
826
|
return runtimeContext.getStore() ?? {
|
|
827
827
|
cwd: process.cwd(),
|
|
828
828
|
env: process.env,
|
|
829
|
-
envPolicy: "production"
|
|
829
|
+
envPolicy: "production",
|
|
830
|
+
providers: {}
|
|
830
831
|
};
|
|
831
832
|
}
|
|
832
833
|
function getWikiGraphSDKStateDir() {
|
|
833
834
|
return getWikiGraphSDKRuntimeContext().stateDir;
|
|
834
835
|
}
|
|
836
|
+
function getWikiGraphSDKProviders() {
|
|
837
|
+
return getWikiGraphSDKRuntimeContext().providers ?? {};
|
|
838
|
+
}
|
|
835
839
|
|
|
836
840
|
// src/local-config.ts
|
|
837
841
|
var import_path = require("path");
|
|
@@ -1049,8 +1053,8 @@ var inlineLLMConfigSchema = import_zod.z.object({
|
|
|
1049
1053
|
});
|
|
1050
1054
|
async function loadWikiGraphRuntimeConfig(options) {
|
|
1051
1055
|
const [embedding, localLLM, concurrent, wikimedia, wikispine] = await Promise.all([
|
|
1052
|
-
readLocalConfigSection("embeddings"),
|
|
1053
|
-
readLocalConfigSection("llm"),
|
|
1056
|
+
options?.skipEmbeddingConfig === true ? Promise.resolve({}) : readLocalConfigSection("embeddings"),
|
|
1057
|
+
options?.skipLLMConfig === true ? Promise.resolve({}) : readLocalConfigSection("llm"),
|
|
1054
1058
|
readLocalConfigSection("concurrent"),
|
|
1055
1059
|
readLocalConfigSection("wikimedia"),
|
|
1056
1060
|
readLocalConfigSection("wikispine")
|
|
@@ -1246,6 +1250,14 @@ function formatError2(error) {
|
|
|
1246
1250
|
return error instanceof Error ? error.message : String(error);
|
|
1247
1251
|
}
|
|
1248
1252
|
|
|
1253
|
+
// src/providers.ts
|
|
1254
|
+
function resolveWikiGraphLLMJSON(options) {
|
|
1255
|
+
if (options.llm !== void 0 && options.llmJSON !== void 0) {
|
|
1256
|
+
throw new Error("Pass either llm or llmJSON, not both.");
|
|
1257
|
+
}
|
|
1258
|
+
return options.llm === void 0 ? options.llmJSON : JSON.stringify(options.llm);
|
|
1259
|
+
}
|
|
1260
|
+
|
|
1249
1261
|
// src/runtime-path.ts
|
|
1250
1262
|
var import_os2 = require("os");
|
|
1251
1263
|
var import_path2 = require("path");
|
|
@@ -1440,12 +1452,18 @@ var WikiGraphConversionManager = class {
|
|
|
1440
1452
|
}
|
|
1441
1453
|
const requiresDigest = options.input.format !== "wikg";
|
|
1442
1454
|
const requiresLLM = requiresDigest && targetStage !== "planned" && targetStage !== "sourced";
|
|
1455
|
+
const llmJSON = resolveWikiGraphLLMJSON(options);
|
|
1456
|
+
const injectedLLM = llmJSON === void 0 ? getWikiGraphSDKProviders().llm : void 0;
|
|
1443
1457
|
const config = await loadWikiGraphRuntimeConfig({
|
|
1444
|
-
...
|
|
1458
|
+
...llmJSON === void 0 ? {} : { llmJSON },
|
|
1459
|
+
...injectedLLM === void 0 ? {} : { skipLLMConfig: true },
|
|
1460
|
+
...getWikiGraphSDKProviders().embedding === void 0 ? {} : { skipEmbeddingConfig: true }
|
|
1445
1461
|
});
|
|
1446
1462
|
const app = new import_wiki_graph_core3.WikiGraph({
|
|
1447
1463
|
...options.verbose === true ? { verbose: true } : {},
|
|
1448
|
-
...requiresLLM ? {
|
|
1464
|
+
...requiresLLM ? {
|
|
1465
|
+
llm: injectedLLM === void 0 ? buildWikiGraphLLMOptions(config) : { streamProvider: injectedLLM }
|
|
1466
|
+
} : {}
|
|
1449
1467
|
});
|
|
1450
1468
|
const documentDirectory = await prepareDigestDirectory(
|
|
1451
1469
|
options.digestDirectory,
|
|
@@ -1733,6 +1751,8 @@ function createOpenAICompatibleName2(baseURL) {
|
|
|
1733
1751
|
|
|
1734
1752
|
// src/query-runtime.ts
|
|
1735
1753
|
async function createConfiguredEmbeddingProvider() {
|
|
1754
|
+
const injected = getWikiGraphSDKProviders().embedding;
|
|
1755
|
+
if (injected !== void 0) return injected;
|
|
1736
1756
|
const config = await readWikiGraphEmbeddingConfig();
|
|
1737
1757
|
if (config.provider === void 0 || config.model === void 0 || config.provider === "openai-compatible" && config.baseURL === void 0 || config.provider === "openai" && config.baseURL !== void 0) {
|
|
1738
1758
|
return void 0;
|
|
@@ -1978,13 +1998,15 @@ var WikiGraphArchiveHandle = class {
|
|
|
1978
1998
|
);
|
|
1979
1999
|
}
|
|
1980
2000
|
async search(query, options = {}) {
|
|
1981
|
-
const embeddingProvider = await this.#
|
|
1982
|
-
|
|
2001
|
+
const embeddingProvider = await this.#resolveQueryEmbeddingProvider(
|
|
2002
|
+
options.queryMode,
|
|
1983
2003
|
options.signal
|
|
1984
2004
|
);
|
|
1985
2005
|
return await this.#writeDocument(
|
|
1986
2006
|
async (document) => {
|
|
1987
|
-
const chapters = await this.#resolveQueryChapters(document, options
|
|
2007
|
+
const chapters = await this.#resolveQueryChapters(document, options, {
|
|
2008
|
+
embeddingProvider
|
|
2009
|
+
});
|
|
1988
2010
|
await ensureArchiveSearchIndex(document, {
|
|
1989
2011
|
...chapters === void 0 ? {} : { chapters },
|
|
1990
2012
|
...embeddingProvider === void 0 ? {} : { embeddingProvider }
|
|
@@ -2282,6 +2304,9 @@ var WikiGraphArchiveHandle = class {
|
|
|
2282
2304
|
}
|
|
2283
2305
|
async related(objectUri = this.objectUri, options = {}) {
|
|
2284
2306
|
if (options.query === void 0) {
|
|
2307
|
+
if (options.queryMode !== void 0) {
|
|
2308
|
+
throw new Error("`queryMode` requires `query`.");
|
|
2309
|
+
}
|
|
2285
2310
|
return await this.#readDocument(async (document) => {
|
|
2286
2311
|
const chapters = await this.#resolveScope(document, {});
|
|
2287
2312
|
return await (0, import_wiki_graph_core7.listRelatedArchiveObjects)(document, objectUri, {
|
|
@@ -2290,19 +2315,22 @@ var WikiGraphArchiveHandle = class {
|
|
|
2290
2315
|
});
|
|
2291
2316
|
}, options);
|
|
2292
2317
|
}
|
|
2293
|
-
const embeddingProvider = await this.#
|
|
2294
|
-
|
|
2318
|
+
const embeddingProvider = await this.#resolveQueryEmbeddingProvider(
|
|
2319
|
+
options.queryMode,
|
|
2295
2320
|
options.signal
|
|
2296
2321
|
);
|
|
2297
2322
|
return await this.#writeDocument(
|
|
2298
2323
|
async (document) => {
|
|
2299
|
-
const chapters = await this.#resolveQueryChapters(document, options
|
|
2324
|
+
const chapters = await this.#resolveQueryChapters(document, options, {
|
|
2325
|
+
embeddingProvider
|
|
2326
|
+
});
|
|
2300
2327
|
await ensureArchiveSearchIndex(document, {
|
|
2301
2328
|
...chapters === void 0 ? {} : { chapters },
|
|
2302
2329
|
...embeddingProvider === void 0 ? {} : { embeddingProvider }
|
|
2303
2330
|
});
|
|
2304
2331
|
return await (0, import_wiki_graph_core7.listRelatedArchiveObjects)(document, objectUri, {
|
|
2305
2332
|
...withoutOperation(options),
|
|
2333
|
+
...embeddingProvider === void 0 ? {} : { embeddingProvider },
|
|
2306
2334
|
...chapters === void 0 ? {} : { chapters }
|
|
2307
2335
|
});
|
|
2308
2336
|
},
|
|
@@ -2314,6 +2342,9 @@ var WikiGraphArchiveHandle = class {
|
|
|
2314
2342
|
}
|
|
2315
2343
|
async evidence(objectUri = this.objectUri, options = {}) {
|
|
2316
2344
|
if (options.query === void 0) {
|
|
2345
|
+
if (options.queryMode !== void 0) {
|
|
2346
|
+
throw new Error("`queryMode` requires `query`.");
|
|
2347
|
+
}
|
|
2317
2348
|
return await this.#readDocument(async (document) => {
|
|
2318
2349
|
const chapters = await this.#resolveScope(document, {});
|
|
2319
2350
|
return await (0, import_wiki_graph_core7.listArchiveEvidence)(document, objectUri, {
|
|
@@ -2322,19 +2353,22 @@ var WikiGraphArchiveHandle = class {
|
|
|
2322
2353
|
});
|
|
2323
2354
|
}, options);
|
|
2324
2355
|
}
|
|
2325
|
-
const embeddingProvider = await this.#
|
|
2326
|
-
|
|
2356
|
+
const embeddingProvider = await this.#resolveQueryEmbeddingProvider(
|
|
2357
|
+
options.queryMode,
|
|
2327
2358
|
options.signal
|
|
2328
2359
|
);
|
|
2329
2360
|
return await this.#writeDocument(
|
|
2330
2361
|
async (document) => {
|
|
2331
|
-
const chapters = await this.#resolveQueryChapters(document, options
|
|
2362
|
+
const chapters = await this.#resolveQueryChapters(document, options, {
|
|
2363
|
+
embeddingProvider
|
|
2364
|
+
});
|
|
2332
2365
|
await ensureArchiveSearchIndex(document, {
|
|
2333
2366
|
...chapters === void 0 ? {} : { chapters },
|
|
2334
2367
|
...embeddingProvider === void 0 ? {} : { embeddingProvider }
|
|
2335
2368
|
});
|
|
2336
2369
|
return await (0, import_wiki_graph_core7.listArchiveEvidence)(document, objectUri, {
|
|
2337
2370
|
...withoutOperation(options),
|
|
2371
|
+
...embeddingProvider === void 0 ? {} : { embeddingProvider },
|
|
2338
2372
|
...chapters === void 0 ? {} : { chapters }
|
|
2339
2373
|
});
|
|
2340
2374
|
},
|
|
@@ -2368,6 +2402,24 @@ var WikiGraphArchiveHandle = class {
|
|
|
2368
2402
|
return meta;
|
|
2369
2403
|
}, options);
|
|
2370
2404
|
}
|
|
2405
|
+
async setArchiveTitle(title, options = {}) {
|
|
2406
|
+
const normalized = title?.trim() ?? null;
|
|
2407
|
+
if (title !== null && normalized === "") {
|
|
2408
|
+
throw new Error("Archive title cannot be empty.");
|
|
2409
|
+
}
|
|
2410
|
+
return await this.#writeDocument(async (document) => {
|
|
2411
|
+
if (normalized === null) {
|
|
2412
|
+
await document.metadata.deleteKey("", "title");
|
|
2413
|
+
} else {
|
|
2414
|
+
await document.metadata.put(
|
|
2415
|
+
{ kind: import_wiki_graph_core7.ObjectMetadataKind.Archive, objectPath: "" },
|
|
2416
|
+
"title",
|
|
2417
|
+
normalized
|
|
2418
|
+
);
|
|
2419
|
+
}
|
|
2420
|
+
return normalized;
|
|
2421
|
+
}, options);
|
|
2422
|
+
}
|
|
2371
2423
|
async readCover(options = {}) {
|
|
2372
2424
|
const app = new import_wiki_graph_core7.WikiGraph({});
|
|
2373
2425
|
return await this.#runtime.run(
|
|
@@ -2438,11 +2490,20 @@ var WikiGraphArchiveHandle = class {
|
|
|
2438
2490
|
if (options.chapters !== void 0) return options.chapters;
|
|
2439
2491
|
return (await resolveArchiveScope(document, this.objectUri, options.depth))?.chapterIds;
|
|
2440
2492
|
}
|
|
2441
|
-
async #resolveQueryChapters(document, options) {
|
|
2493
|
+
async #resolveQueryChapters(document, options, capabilities) {
|
|
2442
2494
|
const chapters = await this.#resolveScope(document, options);
|
|
2443
|
-
|
|
2495
|
+
const coverageOptions = {
|
|
2496
|
+
...chapters === void 0 ? {} : { chapters },
|
|
2497
|
+
...capabilities.embeddingProvider === void 0 ? {} : { embeddingProvider: capabilities.embeddingProvider },
|
|
2498
|
+
requireEmbeddingProvider: true,
|
|
2499
|
+
...options.queryMode === void 0 ? {} : { queryMode: options.queryMode }
|
|
2500
|
+
};
|
|
2501
|
+
if (options.skipUnindexed !== true) {
|
|
2502
|
+
await (0, import_wiki_graph_core7.assertArchiveIndexArtifactsReady)(document, coverageOptions);
|
|
2503
|
+
return chapters;
|
|
2504
|
+
}
|
|
2444
2505
|
const queryable = await (0, import_wiki_graph_core7.listArchiveQueryableChapterIds)(document, {
|
|
2445
|
-
...
|
|
2506
|
+
...coverageOptions
|
|
2446
2507
|
});
|
|
2447
2508
|
if (queryable.length === 0) {
|
|
2448
2509
|
throw new Error(
|
|
@@ -2451,6 +2512,19 @@ var WikiGraphArchiveHandle = class {
|
|
|
2451
2512
|
}
|
|
2452
2513
|
return queryable;
|
|
2453
2514
|
}
|
|
2515
|
+
async #resolveQueryEmbeddingProvider(queryMode, signal) {
|
|
2516
|
+
if (queryMode === "fts") return void 0;
|
|
2517
|
+
const provider = await this.#runtime.run(
|
|
2518
|
+
createConfiguredEmbeddingProvider,
|
|
2519
|
+
signal
|
|
2520
|
+
);
|
|
2521
|
+
if (queryMode === "embedding" && provider === void 0) {
|
|
2522
|
+
throw new Error(
|
|
2523
|
+
"Embedding query mode requires embeddings configuration at `wikg://local/config/embeddings`."
|
|
2524
|
+
);
|
|
2525
|
+
}
|
|
2526
|
+
return provider;
|
|
2527
|
+
}
|
|
2454
2528
|
};
|
|
2455
2529
|
async function ensureArchiveSearchIndex(document, options = {}) {
|
|
2456
2530
|
const scope = options.chapters === void 0 ? {} : { chapters: options.chapters };
|