wiki-graph-sdk 0.7.0 → 0.7.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 +16 -0
- package/dist/archives.cjs +71 -7
- package/dist/archives.cjs.map +1 -1
- package/dist/archives.js +67 -3
- package/dist/archives.js.map +1 -1
- package/dist/conversions.cjs +65 -1
- package/dist/conversions.cjs.map +1 -1
- package/dist/conversions.d.ts +13 -3
- package/dist/conversions.js +65 -1
- package/dist/conversions.js.map +1 -1
- package/dist/default-worker.cjs +17 -16
- package/dist/default-worker.cjs.map +1 -1
- package/dist/default-worker.js +13 -11
- package/dist/default-worker.js.map +1 -1
- package/dist/index.cjs +173 -108
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +86 -20
- package/dist/index.js.map +1 -1
- package/dist/worker.cjs +37 -0
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.ts +17 -1
- package/dist/worker.js +39 -2
- package/dist/worker.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { LOCAL_CONFIG_SECTIONS, clearLocalConfigSection, deleteLocalConfigValue,
|
|
|
5
5
|
import { W as WikiGraphJobRuntime, a as WikiGraphJobManager } from './jobs-Dd5PMSId.js';
|
|
6
6
|
export { b as WikiGraphJob, c as WikiGraphJobBackend, d as WikiGraphJobChapterReference, e as WikiGraphJobCreateOptions, f as WikiGraphJobEnqueueOptions, g as WikiGraphJobEnqueuePlan, h as WikiGraphJobEnqueueResult, i as WikiGraphJobEventListener, j as WikiGraphJobEventsOptions, k as WikiGraphJobListOptions, l as WikiGraphJobSubscriptionOptions } from './jobs-Dd5PMSId.js';
|
|
7
7
|
import { ContinuationCursor, QueryIndexScope, ArchiveSourceLocatorResult, ArchiveCollectionResult, ArchiveFindResult, ArchiveEvidence, ArchiveRelatedResult, WikiGraphLibraryRecord, WikiGraphLibraryArchiveRecord, WikiGraphLibraryScanResult, ParsedWikiGraphLibraryUri, WikiGraphLibraryIndexState, rebuildWikiGraphLibraryIndex, ArchiveFindOptions, ArchiveCollectionOptions, readWikiGraphLibraryPage, ArchivePage, listRelatedWikiGraphLibraryObjects, listWikiGraphLibraryEvidence, ArchivePack } from 'wiki-graph-core';
|
|
8
|
-
export { ArchiveBacklinkBucket, ArchiveBacklinks, ArchiveCollectionOptions, ArchiveCollectionResult, ArchiveEvidence, ArchiveEvidenceItem, ArchiveFindEvidencePreview, ArchiveFindHit, ArchiveFindOptions, ArchiveFindResult, ArchiveListItem, ArchivePack, ArchivePage, ArchiveRelatedResult, ArchiveSourceLocator, ArchiveSourceLocatorResult, ArchiveTriplePattern, BookMeta, BuildJob, BuildJobEvent, BuildJobProgressCounter, BuildJobTarget, ChapterDetails, ChapterEntry, ChapterStage, ChapterTree, ChapterTreeApplyResult, ContinuationCursor, DEFAULT_EXTRACTION_PROMPT, DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT, File, IndexArtifactKind, LLMPaymentRequiredError, LocatedWikiGraphUri, ParsedWikiGraphLibraryUri, QueryIndexScope, SearchIndexEmbeddingProvider, WIKI_GRAPH_URI_PREFIX, WikiGraphError, WikiGraphLLMOptions, WikiGraphLibraryArchiveRecord, WikiGraphLibraryIndexState, WikiGraphLibraryRecord, WikiGraphLibraryScanResult, WikiGraphMaintenanceUpgradeResult, WikiGraphProgressCallback, WikiGraphProgressEvent, WikispineProvider, formatError, formatLocatedChapterResourceUri, formatLocatedChapterSourceCollectionUri, formatLocatedChapterUri, formatLocatedWikiGraphUri, formatWikiGraphCommandUri, formatWikiGraphLibraryUri, isSourceLocatorScopeUri, isWikiGraphLibraryUri, parseChapterPath, parseChapterTreeInput, parseChapterUriPath, parseLocatedWikiGraphUri, parseSourceTextJsonl, parseWikiGraphLibraryUri, parseWikiGraphUriSyntax, resolveExtractionPrompt, resolveKnowledgeGraphRecallPrompt } from 'wiki-graph-core';
|
|
8
|
+
export { ArchiveBacklinkBucket, ArchiveBacklinks, ArchiveCollectionOptions, ArchiveCollectionResult, ArchiveEvidence, ArchiveEvidenceItem, ArchiveFindEvidencePreview, ArchiveFindHit, ArchiveFindOptions, ArchiveFindResult, ArchiveListItem, ArchivePack, ArchivePage, ArchiveRelatedResult, ArchiveSourceLocator, ArchiveSourceLocatorResult, ArchiveTriplePattern, BookMeta, BuildJob, BuildJobEvent, BuildJobProgressCounter, BuildJobTarget, ChapterDetails, ChapterEntry, ChapterStage, ChapterTree, ChapterTreeApplyResult, ContinuationCursor, DEFAULT_EXTRACTION_PROMPT, DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT, File, IndexArtifactKind, LLMPaymentRequiredError, LocatedWikiGraphUri, ParsedWikiGraphLibraryUri, QueryIndexScope, SearchIndexEmbeddingProvider, SourceArtifactInput, WIKI_GRAPH_URI_PREFIX, WikiGraphError, WikiGraphLLMOptions, WikiGraphLibraryArchiveRecord, WikiGraphLibraryIndexState, WikiGraphLibraryRecord, WikiGraphLibraryScanResult, WikiGraphMaintenanceUpgradeResult, WikiGraphProgressCallback, WikiGraphProgressEvent, WikispineProvider, formatError, formatLocatedChapterResourceUri, formatLocatedChapterSourceCollectionUri, formatLocatedChapterUri, formatLocatedWikiGraphUri, formatWikiGraphCommandUri, formatWikiGraphLibraryUri, isSourceLocatorScopeUri, isWikiGraphLibraryUri, parseChapterPath, parseChapterTreeInput, parseChapterUriPath, parseLocatedWikiGraphUri, parseSourceTextJsonl, parseWikiGraphLibraryUri, parseWikiGraphUriSyntax, resolveExtractionPrompt, resolveKnowledgeGraphRecallPrompt } from 'wiki-graph-core';
|
|
9
9
|
import { WikiGraphConversionManager } from './conversions.js';
|
|
10
10
|
export { WikiGraphConversionFormat, WikiGraphConversionInput, WikiGraphConversionOptions, WikiGraphConversionResult, WikiGraphSourceFormat } from './conversions.js';
|
|
11
11
|
export { WikiGraphQueueWorkerOptions, requireKnowledgeGraphWikispineConfig, runWikiGraphQueueWorker } from './default-worker.js';
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ globalThis.__WIKIGRAPH_DATA_DIR__ ??= __WIKIGRAPH_RESOLVE__(__WIKIGRAPH_FILE_URL
|
|
|
6
6
|
import { randomUUID as randomUUID2 } from "crypto";
|
|
7
7
|
import { link, mkdtemp, rename as rename2, rm as rm3, stat as stat2 } from "fs/promises";
|
|
8
8
|
import { tmpdir } from "os";
|
|
9
|
-
import { basename as
|
|
9
|
+
import { basename as basename3, dirname as dirname2, join as join3 } from "path";
|
|
10
10
|
import { Readable as Readable2 } from "stream";
|
|
11
11
|
import {
|
|
12
12
|
addChapter,
|
|
@@ -51,7 +51,10 @@ import {
|
|
|
51
51
|
} from "wiki-graph-core";
|
|
52
52
|
|
|
53
53
|
// src/conversions.ts
|
|
54
|
+
import { createHash } from "crypto";
|
|
55
|
+
import { createReadStream } from "fs";
|
|
54
56
|
import { rm as rm2 } from "fs/promises";
|
|
57
|
+
import { basename as basename2 } from "path";
|
|
55
58
|
import {
|
|
56
59
|
WikiGraph
|
|
57
60
|
} from "wiki-graph-core";
|
|
@@ -1396,6 +1399,9 @@ var WikiGraphConversionManager = class {
|
|
|
1396
1399
|
if (options.targetStage !== void 0 && options.output.format !== "wikg") {
|
|
1397
1400
|
throw new Error("targetStage is only supported for wikg output.");
|
|
1398
1401
|
}
|
|
1402
|
+
if (options.output.format === "pcex") {
|
|
1403
|
+
throw new Error("pcex is supported only as a conversion input.");
|
|
1404
|
+
}
|
|
1399
1405
|
if (options.targetStage !== void 0 && options.input.format === "wikg") {
|
|
1400
1406
|
throw new Error(
|
|
1401
1407
|
"targetStage is only supported when creating a wikg archive."
|
|
@@ -1414,7 +1420,13 @@ var WikiGraphConversionManager = class {
|
|
|
1414
1420
|
options.digestDirectory,
|
|
1415
1421
|
requiresDigest
|
|
1416
1422
|
);
|
|
1423
|
+
let chapterCount;
|
|
1417
1424
|
const write = async (archive) => {
|
|
1425
|
+
if (requiresDigest) await options.onSourceImported?.();
|
|
1426
|
+
if (typeof archive.readToc === "function") {
|
|
1427
|
+
const toc = await archive.readToc();
|
|
1428
|
+
chapterCount = toc === void 0 ? void 0 : countTocChapters(toc.items);
|
|
1429
|
+
}
|
|
1418
1430
|
await writeArchive(archive, options.output.path, options.output.format);
|
|
1419
1431
|
};
|
|
1420
1432
|
if (options.input.format === "wikg") {
|
|
@@ -1447,16 +1459,28 @@ var WikiGraphConversionManager = class {
|
|
|
1447
1459
|
};
|
|
1448
1460
|
if (options.input.format === "epub") {
|
|
1449
1461
|
await app.digestEpubSession(digestOptions, write);
|
|
1462
|
+
} else if (options.input.format === "pcex") {
|
|
1463
|
+
await app.digestPcexSession(
|
|
1464
|
+
{
|
|
1465
|
+
...digestOptions,
|
|
1466
|
+
pdfDigest: options.input.sourcePdf.digest,
|
|
1467
|
+
...options.input.sourcePdf.name === void 0 ? {} : { pdfName: options.input.sourcePdf.name }
|
|
1468
|
+
},
|
|
1469
|
+
write
|
|
1470
|
+
);
|
|
1450
1471
|
} else if (options.input.format === "markdown") {
|
|
1451
1472
|
await app.digestMarkdownSession(digestOptions, write);
|
|
1452
1473
|
} else {
|
|
1453
1474
|
await app.digestTxtSession(digestOptions, write);
|
|
1454
1475
|
}
|
|
1455
1476
|
}
|
|
1477
|
+
const sourceArtifact = await resolveSourceArtifact(options.input);
|
|
1456
1478
|
return {
|
|
1479
|
+
...chapterCount === void 0 ? {} : { chapterCount },
|
|
1457
1480
|
inputFormat: options.input.format,
|
|
1458
1481
|
outputFormat: options.output.format,
|
|
1459
|
-
outputPath: options.output.path
|
|
1482
|
+
outputPath: options.output.path,
|
|
1483
|
+
...sourceArtifact === void 0 ? {} : { sourceArtifact }
|
|
1460
1484
|
};
|
|
1461
1485
|
}
|
|
1462
1486
|
};
|
|
@@ -1472,8 +1496,48 @@ async function writeArchive(archive, path, format) {
|
|
|
1472
1496
|
const file = new NodeFile(resolveWikiGraphRuntimePath(path));
|
|
1473
1497
|
if (format === "epub") await archive.exportEpub(file);
|
|
1474
1498
|
else if (format === "wikg") await archive.saveAs(file);
|
|
1499
|
+
else if (format === "pcex") throw new Error("pcex output is not supported.");
|
|
1475
1500
|
else await archive.exportText(file);
|
|
1476
1501
|
}
|
|
1502
|
+
async function resolveSourceArtifact(input) {
|
|
1503
|
+
if (!("path" in input) || input.format === "wikg") return void 0;
|
|
1504
|
+
if (input.format === "pcex") {
|
|
1505
|
+
return {
|
|
1506
|
+
digest: input.sourcePdf.digest.trim().toLowerCase(),
|
|
1507
|
+
mediaType: "application/pdf",
|
|
1508
|
+
...input.sourcePdf.name === void 0 ? {} : { name: input.sourcePdf.name }
|
|
1509
|
+
};
|
|
1510
|
+
}
|
|
1511
|
+
if (input.format !== "epub") return void 0;
|
|
1512
|
+
const path = resolveWikiGraphRuntimePath(input.path);
|
|
1513
|
+
const hash = createHash("sha256");
|
|
1514
|
+
try {
|
|
1515
|
+
for await (const chunk of createReadStream(path)) {
|
|
1516
|
+
hash.update(chunk);
|
|
1517
|
+
}
|
|
1518
|
+
} catch (error) {
|
|
1519
|
+
if (isNodeErrorCode(error, "ENOENT")) return void 0;
|
|
1520
|
+
throw error;
|
|
1521
|
+
}
|
|
1522
|
+
return {
|
|
1523
|
+
digest: hash.digest("hex"),
|
|
1524
|
+
mediaType: "application/epub+zip",
|
|
1525
|
+
name: basename2(path)
|
|
1526
|
+
};
|
|
1527
|
+
}
|
|
1528
|
+
function isNodeErrorCode(error, code) {
|
|
1529
|
+
return typeof error === "object" && error !== null && "code" in error && error.code === code;
|
|
1530
|
+
}
|
|
1531
|
+
function countTocChapters(items) {
|
|
1532
|
+
let count = 0;
|
|
1533
|
+
for (const item of items) {
|
|
1534
|
+
if (item.serialId !== void 0) count += 1;
|
|
1535
|
+
count += countTocChapters(
|
|
1536
|
+
item.children
|
|
1537
|
+
);
|
|
1538
|
+
}
|
|
1539
|
+
return count;
|
|
1540
|
+
}
|
|
1477
1541
|
|
|
1478
1542
|
// src/query-runtime.ts
|
|
1479
1543
|
import {
|
|
@@ -2188,7 +2252,7 @@ var WikiGraphArchiveManager = class {
|
|
|
2188
2252
|
}
|
|
2189
2253
|
const outputPath = join3(
|
|
2190
2254
|
dirname2(path),
|
|
2191
|
-
`.${
|
|
2255
|
+
`.${basename3(path)}.${randomUUID2()}.tmp.wikg`
|
|
2192
2256
|
);
|
|
2193
2257
|
try {
|
|
2194
2258
|
if (options.importPath === void 0) {
|
|
@@ -3439,12 +3503,12 @@ import {
|
|
|
3439
3503
|
getChapterDetails,
|
|
3440
3504
|
openWikimediaResolver as openWikimediaResolver2,
|
|
3441
3505
|
recordBuildJobInputRevision,
|
|
3442
|
-
WikiGraphArchiveFile as
|
|
3506
|
+
WikiGraphArchiveFile as WikiGraphArchiveFile4,
|
|
3443
3507
|
WikiGraphScope,
|
|
3444
3508
|
withLoggingContext
|
|
3445
3509
|
} from "wiki-graph-core";
|
|
3446
3510
|
import {
|
|
3447
|
-
applyChapterJobArtifactFile as
|
|
3511
|
+
applyChapterJobArtifactFile as applyChapterJobArtifactFile3,
|
|
3448
3512
|
createLocalChapterJobFileExecutor as createLocalChapterJobFileExecutor2,
|
|
3449
3513
|
writeChapterJobInputFile as writeChapterJobInputFile2
|
|
3450
3514
|
} from "wiki-graph-core/worker";
|
|
@@ -3486,10 +3550,12 @@ async function loadRequiredStageConfig(options) {
|
|
|
3486
3550
|
|
|
3487
3551
|
// src/worker.ts
|
|
3488
3552
|
import {
|
|
3553
|
+
applyChapterJobArtifactFile,
|
|
3489
3554
|
runBuildJobWorker as runCoreBuildJobWorker
|
|
3490
3555
|
} from "wiki-graph-core/worker";
|
|
3556
|
+
import { WikiGraphArchiveFile as WikiGraphArchiveFile3 } from "wiki-graph-core";
|
|
3491
3557
|
import {
|
|
3492
|
-
applyChapterJobArtifactFile,
|
|
3558
|
+
applyChapterJobArtifactFile as applyChapterJobArtifactFile2,
|
|
3493
3559
|
createLocalChapterJobFileExecutor,
|
|
3494
3560
|
writeChapterJobInputFile
|
|
3495
3561
|
} from "wiki-graph-core/worker";
|
|
@@ -3531,7 +3597,7 @@ async function executeBuildJob(job, reporter, context) {
|
|
|
3531
3597
|
let stage = await readChapterStage(job);
|
|
3532
3598
|
if (stage === "sourced") {
|
|
3533
3599
|
await executeStep(job, "reading-graph", execution, reporter, context, {
|
|
3534
|
-
...execution.extractionPrompt === void 0 ? {} : {
|
|
3600
|
+
...execution.extractionPrompt === void 0 ? {} : { prompt: execution.extractionPrompt }
|
|
3535
3601
|
});
|
|
3536
3602
|
stage = await readChapterStage(job);
|
|
3537
3603
|
}
|
|
@@ -3564,8 +3630,8 @@ async function executeBuildJob(job, reporter, context) {
|
|
|
3564
3630
|
}
|
|
3565
3631
|
}
|
|
3566
3632
|
await executeStep(job, job.target, execution, reporter, context, {
|
|
3567
|
-
...job.target === "reading-graph" ? {
|
|
3568
|
-
...job.target === "knowledge-graph" ? {
|
|
3633
|
+
...job.target === "reading-graph" ? { prompt: execution.extractionPrompt } : {},
|
|
3634
|
+
...job.target === "knowledge-graph" ? { prompt: execution.knowledgeGraphPrompt } : {}
|
|
3569
3635
|
});
|
|
3570
3636
|
} finally {
|
|
3571
3637
|
await execution.close();
|
|
@@ -3580,7 +3646,7 @@ async function executeStep(job, kind, execution, reporter, context, inputOptions
|
|
|
3580
3646
|
const stepWorkspace = await resetStepWorkspace(job.workspace, kind);
|
|
3581
3647
|
const inputFile = await stepWorkspace.createFile("input.jsonl");
|
|
3582
3648
|
const outputWorkspace = await stepWorkspace.createDirectory("output");
|
|
3583
|
-
const revision = await new
|
|
3649
|
+
const revision = await new WikiGraphArchiveFile4(job.archive).readDocument(
|
|
3584
3650
|
async (document) => {
|
|
3585
3651
|
await getChapterDetails(document, job.chapterId);
|
|
3586
3652
|
return await writeChapterJobInputFile2(
|
|
@@ -3622,9 +3688,9 @@ async function executeStep(job, kind, execution, reporter, context, inputOptions
|
|
|
3622
3688
|
total: 1,
|
|
3623
3689
|
unit: "item"
|
|
3624
3690
|
});
|
|
3625
|
-
await new
|
|
3691
|
+
await new WikiGraphArchiveFile4(job.archive).write(async (document) => {
|
|
3626
3692
|
assertJobStillRunning(await getBuildJob(job.jobId));
|
|
3627
|
-
await
|
|
3693
|
+
await applyChapterJobArtifactFile3(
|
|
3628
3694
|
document,
|
|
3629
3695
|
job.chapterId,
|
|
3630
3696
|
kind,
|
|
@@ -3707,12 +3773,12 @@ async function resetStepWorkspace(workspace, kind) {
|
|
|
3707
3773
|
return await workspace.createDirectory(name);
|
|
3708
3774
|
}
|
|
3709
3775
|
async function readChapterStage(job) {
|
|
3710
|
-
return await new
|
|
3776
|
+
return await new WikiGraphArchiveFile4(job.archive).readDocument(
|
|
3711
3777
|
async (document) => (await getChapterDetails(document, job.chapterId)).stage
|
|
3712
3778
|
);
|
|
3713
3779
|
}
|
|
3714
3780
|
async function assertCurrentFtsArtifact(job) {
|
|
3715
|
-
await new
|
|
3781
|
+
await new WikiGraphArchiveFile4(job.archive).readDocument(async (document) => {
|
|
3716
3782
|
const revision = await document.serials.getRevision(job.chapterId);
|
|
3717
3783
|
const artifact = await document.indexArtifacts.get(job.chapterId, "fts");
|
|
3718
3784
|
if (artifact?.sourceRevision !== revision) {
|
|
@@ -3826,7 +3892,7 @@ import {
|
|
|
3826
3892
|
resumeBuildJob,
|
|
3827
3893
|
updateBuildJobTarget,
|
|
3828
3894
|
resolveChapterPathReadonly as resolveChapterPathReadonly2,
|
|
3829
|
-
WikiGraphArchiveFile as
|
|
3895
|
+
WikiGraphArchiveFile as WikiGraphArchiveFile5
|
|
3830
3896
|
} from "wiki-graph-core";
|
|
3831
3897
|
var TERMINAL_STATES = /* @__PURE__ */ new Set(["canceled", "failed", "succeeded"]);
|
|
3832
3898
|
var TERMINAL_EVENT_GRACE_READS = 3;
|
|
@@ -3917,7 +3983,7 @@ var WikiGraphJobManager = class {
|
|
|
3917
3983
|
const entries = (await Promise.all(
|
|
3918
3984
|
[...jobsByArchive].map(async ([archivePath, archiveJobs]) => {
|
|
3919
3985
|
try {
|
|
3920
|
-
const chapters = await new
|
|
3986
|
+
const chapters = await new WikiGraphArchiveFile5(
|
|
3921
3987
|
new NodeFile(archivePath)
|
|
3922
3988
|
).readDocument(async (document) => await listChapters3(document));
|
|
3923
3989
|
const chaptersById = new Map(
|
|
@@ -3956,7 +4022,7 @@ var WikiGraphJobManager = class {
|
|
|
3956
4022
|
const target = options.target ?? "reading-summary";
|
|
3957
4023
|
await validateQueueTargetConfig(target, options.llmJSON);
|
|
3958
4024
|
const selectedExplicitly = options.chapterId !== void 0 || options.chapterIds !== void 0 || options.chapterPath !== void 0 || options.depth !== void 0;
|
|
3959
|
-
const candidates = await new
|
|
4025
|
+
const candidates = await new WikiGraphArchiveFile5(
|
|
3960
4026
|
location.archiveFile
|
|
3961
4027
|
).readDocument(async (document) => {
|
|
3962
4028
|
const chapters = await listChapters3(document);
|
|
@@ -4017,7 +4083,7 @@ var WikiGraphJobManager = class {
|
|
|
4017
4083
|
const target = options.target ?? "reading-summary";
|
|
4018
4084
|
await validateQueueTargetConfig(target, options.llmJSON);
|
|
4019
4085
|
const selectedExplicitly = options.chapterId !== void 0 || options.chapterIds !== void 0 || options.chapterPath !== void 0 || options.depth !== void 0;
|
|
4020
|
-
const candidates = await new
|
|
4086
|
+
const candidates = await new WikiGraphArchiveFile5(
|
|
4021
4087
|
location.archiveFile
|
|
4022
4088
|
).readDocument(async (document) => {
|
|
4023
4089
|
const chapters = await listChapters3(document);
|
|
@@ -4585,7 +4651,7 @@ import {
|
|
|
4585
4651
|
parseWikiGraphLibraryUri as parseWikiGraphLibraryUri3,
|
|
4586
4652
|
upgradeWikiGraphMaintenanceTarget
|
|
4587
4653
|
} from "wiki-graph-core";
|
|
4588
|
-
import { basename as
|
|
4654
|
+
import { basename as basename4 } from "path";
|
|
4589
4655
|
var WikiGraphMaintenanceManager = class {
|
|
4590
4656
|
#runtime;
|
|
4591
4657
|
constructor(runtime) {
|
|
@@ -4625,7 +4691,7 @@ var WikiGraphMaintenanceManager = class {
|
|
|
4625
4691
|
const resolvedOutputPath = resolveWikiGraphRuntimePath(outputPath);
|
|
4626
4692
|
await migrateLegacySdpubToWikg(
|
|
4627
4693
|
new NodeFile(resolvedInputPath),
|
|
4628
|
-
new NodeFile(resolvedOutputPath,
|
|
4694
|
+
new NodeFile(resolvedOutputPath, basename4(resolvedOutputPath))
|
|
4629
4695
|
);
|
|
4630
4696
|
return {
|
|
4631
4697
|
inputPath: resolvedInputPath,
|