wiki-graph 0.3.0 → 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 +10 -271
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +2983 -4
- package/dist/cli.js.map +1 -0
- package/{data → dist/data}/editor/text_compressor.jinja +17 -13
- package/{data → dist/data}/help/commands/archive/next.jinja +7 -2
- package/{data → dist/data}/help/commands/gc.jinja +2 -1
- package/{data → dist/data}/help/commands/legacy/migrate.jinja +6 -1
- package/{data → dist/data}/help/commands/legacy.jinja +3 -2
- package/dist/data/help/commands/library-predicate.jinja +296 -0
- package/dist/data/help/commands/library.jinja +235 -0
- package/{data → dist/data}/help/commands/maintenance/chapter/add.jinja +3 -3
- package/{data → dist/data}/help/commands/maintenance/chapter/list.jinja +4 -4
- package/{data → dist/data}/help/commands/maintenance/chapter/move.jinja +4 -4
- package/{data → dist/data}/help/commands/maintenance/chapter/remove.jinja +1 -1
- package/{data → dist/data}/help/commands/maintenance/chapter/reset.jinja +1 -1
- package/{data → dist/data}/help/commands/maintenance/chapter/set-source.jinja +2 -2
- package/{data → dist/data}/help/commands/maintenance/chapter/set-summary.jinja +1 -1
- package/{data → dist/data}/help/commands/maintenance/chapter/set-title.jinja +3 -3
- package/{data → dist/data}/help/commands/maintenance/chapter/tree.jinja +6 -6
- package/{data → dist/data}/help/commands/maintenance/chapter.jinja +10 -10
- package/{data → dist/data}/help/commands/maintenance/meta.jinja +7 -7
- package/dist/data/help/commands/maintenance/upgrade.jinja +35 -0
- package/dist/data/help/commands/maintenance.jinja +23 -0
- package/{data → dist/data}/help/commands/predicate.jinja +204 -28
- package/{data → dist/data}/help/commands/root.jinja +10 -3
- package/{data → dist/data}/help/commands/uri.jinja +165 -6
- package/{data → dist/data}/help/topics/config.jinja +10 -3
- package/dist/data/help/topics/library.jinja +87 -0
- package/{data → dist/data}/help/topics/readiness.jinja +32 -2
- package/{data → dist/data}/help/topics/recipe.jinja +42 -17
- package/{data → dist/data}/help/topics/runtime.jinja +20 -3
- package/{data → dist/data}/help/topics/uri.jinja +51 -25
- package/dist/gc-worker.d.ts +1 -0
- package/dist/gc-worker.js +548 -0
- package/dist/gc-worker.js.map +1 -0
- package/dist/index.cjs +12463 -19690
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +36 -842
- package/dist/index.d.ts +36 -842
- package/dist/index.js +13871 -9
- package/dist/index.js.map +1 -0
- package/dist/queue-worker.d.ts +1 -0
- package/dist/queue-worker.js +2110 -0
- package/dist/queue-worker.js.map +1 -0
- package/package.json +18 -45
- package/dist/cli.cjs +0 -41734
- package/dist/cli.cjs.map +0 -1
- package/docs/images/flowchart.excalidraw +0 -3293
- package/docs/images/flowchart.svg +0 -4
- package/docs/images/terminal-cn.png +0 -0
- package/docs/images/terminal-en.png +0 -0
- package/docs/wikispine-runtime.md +0 -143
- /package/{data → dist/data}/editor/clue_reviewer.jinja +0 -0
- /package/{data → dist/data}/editor/clue_reviewer_generator.jinja +0 -0
- /package/{data → dist/data}/editor/revision_feedback.jinja +0 -0
- /package/{data → dist/data}/guaranteed/response_intent_classifier.jinja +0 -0
- /package/{data → dist/data}/help/commands/maintenance/cover.jinja +0 -0
- /package/{data → dist/data}/help/commands/transform.jinja +0 -0
- /package/{data → dist/data}/help/topics/format.jinja +0 -0
- /package/{data → dist/data}/output/epub/cover.xhtml.jinja +0 -0
- /package/{data → dist/data}/output/epub/nav.xhtml.jinja +0 -0
- /package/{data → dist/data}/output/epub/package.opf.xml.jinja +0 -0
- /package/{data → dist/data}/output/epub/section.xhtml.jinja +0 -0
- /package/{data → dist/data}/topologization/book_coherence_extraction.jinja +0 -0
- /package/{data → dist/data}/topologization/chunk_extraction.jinja +0 -0
- /package/{data → dist/data}/topologization/evidence_choice.jinja +0 -0
- /package/{data → dist/data}/topologization/translate_chunks.jinja +0 -0
- /package/{data → dist/data}/topologization/user_focused_extraction.jinja +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/support/errors.ts","../src/support/formats.ts","../src/runtime/context.ts","../src/support/io.ts","../src/support/json.ts","../src/support/shell.ts","../src/support/tree.ts","../src/support/version.ts","../src/support/index.ts","../src/runtime/local-config.ts","../src/runtime/config.ts","../src/runtime/llm.ts","../src/runtime/planning.ts","../src/runtime/progress.ts","../src/runtime/progress-output.ts","../src/runtime/stage.ts","../src/runtime/index.ts","../src/commands/convert.ts","../src/commands/archive-command/create.ts","../src/commands/archive-command/inspect.ts","../src/commands/archive-output/object/cursor.ts","../src/commands/archive-output/text/lines.ts","../src/commands/archive-output/text/source.ts","../src/commands/archive-output/text/evidence.ts","../src/commands/archive-output/text/lens.ts","../src/commands/archive-output/object/uri.ts","../src/commands/archive-output/object/types.ts","../src/commands/archive-output/text/plain.ts","../src/commands/archive-output/text/object.ts","../src/commands/archive-output/object/objects.ts","../src/commands/archive-output/text/page.ts","../src/commands/archive-output/text/index.ts","../src/commands/archive-output/write/jsonl.ts","../src/commands/archive-output/object/page-cursor.ts","../src/commands/archive-output/write/evidence.ts","../src/commands/archive-output/write/find.ts","../src/commands/archive-output/write/list.ts","../src/commands/archive-output/write/pack.ts","../src/commands/archive-output/write/page.ts","../src/commands/archive-output/write/index.ts","../src/commands/archive-output/index.ts","../src/commands/archive-command/run/uri.ts","../src/commands/archive-command/run/document.ts","../src/commands/archive-command/run/types.ts","../src/commands/archive-command/run/options.ts","../src/commands/archive-command/run/next.ts","../src/commands/archive-command/run/root.ts","../src/commands/archive-command/run/index.ts","../src/commands/archive-command/run/scope.ts","../src/commands/archive-command/index.ts","../src/commands/archive-command/chapter.ts","../src/commands/archive-command/search-index.ts","../src/commands/archive-command/maintenance.ts","../src/runtime/internal-child.ts","../src/commands/gc.ts","../src/commands/legacy.ts","../src/commands/maintenance.ts","../src/commands/local-config.ts","../src/commands/library.ts","../src/commands/object-metadata.ts","../src/commands/queue/estimate.ts","../src/commands/queue/output.ts","../src/commands/queue/add.ts","../src/commands/queue/watch.ts","../src/commands/queue/worker.ts","../src/commands/queue/index.ts","../src/index.ts","../src/app/runner.ts","../src/args/help.ts","../src/args/uri/chapter/target.ts","../src/args/uri/triple-pattern.ts","../src/args/archive.ts","../src/args/helper/actions.ts","../src/args/helper/chapter/actions.ts","../src/args/helper/chapter/ids.ts","../src/args/helper/uri.ts","../src/args/helper/chapter/normalize.ts","../src/args/helper/chapter/stages.ts","../src/args/helper/chapter/rejections.ts","../src/args/helper/flags.ts","../src/args/helper/parse.ts","../src/args/parse.ts","../src/args/queue.ts","../src/args/uri/chapter/routing.ts","../src/args/uri/entry.ts","../src/args/uri/archive-objects.ts","../src/args/uri/metadata.ts","../src/args/root/gc.ts","../src/args/root/help.ts","../src/args/root/legacy.ts","../src/args/root/local-config.ts","../src/args/root/maintenance-command.ts","../src/args/root/maintenance.ts","../src/args/root/transform.ts","../src/args/uri/library.ts","../src/commands/index.ts","../src/app/dispatch.ts","../src/runtime/entry-context.ts"],"sourcesContent":["import { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nexport const CLI_HELP_ROUTES = {\n command: `${CLI_PRIMARY_COMMAND} --help`,\n config: `${CLI_PRIMARY_COMMAND} help config`,\n format: `${CLI_PRIMARY_COMMAND} help format`,\n readiness: `${CLI_PRIMARY_COMMAND} help readiness`,\n root: `${CLI_PRIMARY_COMMAND} --help`,\n runtime: `${CLI_PRIMARY_COMMAND} help runtime`,\n uri: `${CLI_PRIMARY_COMMAND} help uri`,\n} as const;\n\nexport function archiveMaintenanceHelpRoute(subcommand: string): string {\n return `${CLI_PRIMARY_COMMAND} ${subcommand} --help`;\n}\n\nexport function withHelpRoute(message: string, route: string): string {\n return `${message}\\nSee: ${route}`;\n}\n","import { extname } from \"path\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"./errors.js\";\n\nexport const CLI_FORMATS = [\"wikg\", \"epub\", \"txt\", \"markdown\"] as const;\n\nexport type CLIFormat = (typeof CLI_FORMATS)[number];\n\nexport function inferCLIFormatFromPath(path: string): CLIFormat | undefined {\n switch (extname(path).toLowerCase()) {\n case \".epub\":\n return \"epub\";\n case \".markdown\":\n case \".md\":\n return \"markdown\";\n case \".wikg\":\n return \"wikg\";\n case \".txt\":\n return \"txt\";\n default:\n return undefined;\n }\n}\n\nexport function isTextCLIFormat(\n format: CLIFormat,\n): format is Extract<CLIFormat, \"markdown\" | \"txt\"> {\n return format === \"markdown\" || format === \"txt\";\n}\n\nexport function parseCLIFormat(value: string, flag: string): CLIFormat {\n const normalized = value.trim().toLowerCase();\n\n if (isCLIFormat(normalized)) {\n return normalized;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected one of ${CLI_FORMATS.join(\", \")}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n}\n\nfunction isCLIFormat(value: string): value is CLIFormat {\n return CLI_FORMATS.includes(value as CLIFormat);\n}\n","import { AsyncLocalStorage } from \"async_hooks\";\n\nexport interface WikiGraphCLIRuntimeContext {\n readonly argv: readonly string[];\n readonly cwd: string;\n readonly devProjectRoot?: string | undefined;\n readonly env: NodeJS.ProcessEnv;\n readonly envPolicy: \"development\" | \"production\";\n readonly queueAutostart: boolean;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin: NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout: NodeJS.WritableStream;\n readonly stdoutIsTTY?: boolean | undefined;\n exitCode: NodeJS.Process[\"exitCode\"];\n}\n\nconst cliRuntimeContext = new AsyncLocalStorage<WikiGraphCLIRuntimeContext>();\nlet queueAutostartForTesting: boolean | undefined;\n\nexport async function withWikiGraphCLIRuntimeContext<T>(\n context: WikiGraphCLIRuntimeContext,\n operation: () => Promise<T> | T,\n): Promise<T> {\n return await cliRuntimeContext.run(context, operation);\n}\n\nexport function getCLIArgv(): readonly string[] {\n return cliRuntimeContext.getStore()?.argv ?? process.argv.slice(2);\n}\n\nexport function getCLICwd(): string {\n return cliRuntimeContext.getStore()?.cwd ?? process.cwd();\n}\n\nexport function getCLIEnv(): NodeJS.ProcessEnv {\n return cliRuntimeContext.getStore()?.env ?? process.env;\n}\n\nexport function getCLIEnvValue(name: string): string | undefined {\n return getCLIEnv()[name];\n}\n\nexport function getCLIDevProjectRoot(): string | undefined {\n return cliRuntimeContext.getStore()?.devProjectRoot;\n}\n\nexport function getCLIStateDir(): string | undefined {\n return cliRuntimeContext.getStore()?.stateDir;\n}\n\nexport function isCLIQueueAutostartEnabled(): boolean {\n return (\n queueAutostartForTesting ??\n cliRuntimeContext.getStore()?.queueAutostart ??\n true\n );\n}\n\nexport function setCLIQueueAutostartForTesting(\n enabled: boolean | undefined,\n): void {\n queueAutostartForTesting = enabled;\n}\n\nexport function getCLISignal(): AbortSignal | undefined {\n return cliRuntimeContext.getStore()?.signal;\n}\n\nexport function getCLIStdin(): NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n} {\n return (\n cliRuntimeContext.getStore()?.stdin ??\n (process.stdin as NodeJS.ReadableStream & { isTTY?: boolean | undefined })\n );\n}\n\nexport function getCLIStdout(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stdout ?? process.stdout;\n}\n\nexport function getCLIStderr(): NodeJS.WritableStream {\n return cliRuntimeContext.getStore()?.stderr ?? process.stderr;\n}\n\nexport function getCLIStdoutIsTTY(): boolean | undefined {\n const context = cliRuntimeContext.getStore();\n\n return (\n context?.stdoutIsTTY ??\n (getCLIStdout() as NodeJS.WritableStream & { isTTY?: boolean }).isTTY\n );\n}\n\nexport function getCLIExitCode(): NodeJS.Process[\"exitCode\"] {\n return cliRuntimeContext.getStore()?.exitCode ?? process.exitCode;\n}\n\nexport function setCLIExitCode(exitCode: NodeJS.Process[\"exitCode\"]): void {\n const context = cliRuntimeContext.getStore();\n\n if (context === undefined) {\n process.exitCode = exitCode;\n return;\n }\n\n context.exitCode = exitCode;\n}\n","import { createReadStream } from \"fs\";\nimport { rm } from \"fs/promises\";\nimport { join } from \"path\";\n\nimport { createWikiGraphTempDirectory } from \"wiki-graph-core\";\nimport {\n getCLIStderr,\n getCLIStdin,\n getCLIStdout,\n setCLIExitCode,\n} from \"../runtime/context.js\";\n\nexport function readTextStreamFromStdin(): AsyncIterable<string> {\n const stdin = getCLIStdin();\n\n stdin.setEncoding(\"utf8\");\n return stdin as AsyncIterable<string>;\n}\n\nexport async function writeTextFileToStdout(path: string): Promise<void> {\n for await (const chunk of createReadStream(path, { encoding: \"utf8\" })) {\n await writeChunkToStdout(String(chunk));\n }\n}\n\nexport async function writeTextToStdout(text: string): Promise<void> {\n await writeChunkToStdout(text);\n}\n\nexport async function writeTextToStderr(text: string): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStderr().write(text, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nexport async function writeBinaryToStdout(data: Uint8Array): Promise<void> {\n await writeChunkToStdout(data);\n}\n\nasync function writeChunkToStdout(chunk: string | Uint8Array): Promise<void> {\n await new Promise<void>((resolve, reject) => {\n getCLIStdout().write(chunk, (error) => {\n if (error === undefined || error === null) {\n resolve();\n return;\n }\n if (isBrokenPipeError(error)) {\n setCLIExitCode(0);\n resolve();\n return;\n }\n\n reject(error);\n });\n });\n}\n\nfunction isBrokenPipeError(error: Error): boolean {\n return (error as NodeJS.ErrnoException).code === \"EPIPE\";\n}\n\nexport async function createTemporaryOutputPath(\n prefix: string,\n extension: string,\n): Promise<{\n readonly directoryPath: string;\n readonly filePath: string;\n}> {\n void prefix;\n const directoryPath = await createWikiGraphTempDirectory(\"cli-output\");\n\n return {\n directoryPath,\n filePath: join(directoryPath, `output${extension}`),\n };\n}\n\nexport async function removeTemporaryDirectory(\n directoryPath: string,\n): Promise<void> {\n await rm(directoryPath, { force: true, recursive: true });\n}\n","type JSONLike =\n | readonly JSONLike[]\n | { readonly [key: string]: JSONLike }\n | boolean\n | null\n | number\n | string;\n\nconst CLI_JSON_KEY_PRIORITY = new Map(\n [\n \"at\",\n \"seq\",\n \"uri\",\n \"id\",\n \"jobId\",\n \"type\",\n \"target\",\n \"label\",\n \"labels\",\n \"title\",\n \"state\",\n \"name\",\n \"qid\",\n \"predicate\",\n \"subjectLabel\",\n \"objectLabel\",\n \"subjectQid\",\n \"objectQid\",\n \"score\",\n \"queueRank\",\n \"chapter\",\n \"chapterId\",\n \"fragment\",\n \"fragmentId\",\n \"position\",\n \"range\",\n \"start\",\n \"end\",\n \"shown\",\n \"total\",\n \"count\",\n \"mentionCount\",\n \"nodeCount\",\n \"edgeCount\",\n \"summaryCount\",\n \"limit\",\n \"order\",\n \"match\",\n \"lens\",\n \"terms\",\n \"types\",\n \"chapters\",\n \"query\",\n \"objects\",\n \"items\",\n \"nextCursor\",\n \"archiveKey\",\n \"archivePath\",\n \"workspacePath\",\n \"eventsPath\",\n \"createdAt\",\n \"updatedAt\",\n \"finishedAt\",\n \"currentStep\",\n \"step\",\n \"phase\",\n \"phaseDetail\",\n \"phaseDone\",\n \"phaseTotal\",\n \"phaseUnit\",\n \"words\",\n \"totalWords\",\n \"outputTokens\",\n \"authors\",\n \"language\",\n \"identifier\",\n \"publisher\",\n \"publishedAt\",\n \"sourceFormat\",\n \"snippet\",\n \"summary\",\n \"description\",\n \"recommendation\",\n \"risk\",\n \"error\",\n \"message\",\n \"children\",\n \"nodes\",\n \"links\",\n \"neighbors\",\n \"incoming\",\n \"outgoing\",\n \"nodeGroups\",\n \"sourceFragments\",\n \"sources\",\n \"tree\",\n \"meta\",\n \"evidence\",\n \"content\",\n \"source\",\n \"text\",\n \"prompt\",\n \"llmJSON\",\n \"errorJSON\",\n ].map((key, index) => [key, index]),\n);\n\nexport function formatCLIJSON(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value), null, 2)}\\n`;\n}\n\nexport function formatCLIJSONLine(value: unknown): string {\n return `${JSON.stringify(orderCLIJSONValue(value))}\\n`;\n}\n\nfunction orderCLIJSONValue(value: unknown): JSONLike | undefined {\n if (\n value === null ||\n typeof value === \"boolean\" ||\n typeof value === \"number\" ||\n typeof value === \"string\"\n ) {\n return value;\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => orderCLIJSONValue(item) ?? null);\n }\n\n if (typeof value !== \"object\") {\n return undefined;\n }\n\n return orderCLIJSONObject(value as Record<string, unknown>);\n}\n\nfunction orderCLIJSONObject(value: Record<string, unknown>): JSONLike {\n const entries = Object.entries(value).map(([key, entryValue], index) => ({\n index,\n key,\n priority: CLI_JSON_KEY_PRIORITY.get(key) ?? Number.MAX_SAFE_INTEGER,\n value: entryValue,\n }));\n const ordered: Record<string, JSONLike> = {};\n\n for (const entry of entries.sort(\n (left, right) => left.priority - right.priority || left.index - right.index,\n )) {\n const orderedValue = orderCLIJSONValue(entry.value);\n\n if (orderedValue !== undefined) {\n ordered[entry.key] = orderedValue;\n }\n }\n\n return ordered;\n}\n","import { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nconst SAFE_SHELL_ARGUMENT_PATTERN = /^[A-Za-z0-9_@%+=:,./-]+$/u;\n\nexport function formatShellArgument(argument: string): string {\n if (argument !== \"\" && SAFE_SHELL_ARGUMENT_PATTERN.test(argument)) {\n return argument;\n }\n\n return `'${argument.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n\nexport function formatShellCommand(arguments_: readonly string[]): string {\n return arguments_.map(formatShellArgument).join(\" \");\n}\n\nexport function formatCliCommand(arguments_: readonly string[]): string {\n return formatShellCommand([CLI_PRIMARY_COMMAND, ...arguments_]);\n}\n","export interface RenderTreeNode {\n readonly children: readonly RenderTreeNode[];\n readonly label: string;\n}\n\nexport function renderTreeText(nodes: readonly RenderTreeNode[]): string {\n const lines = formatTreeNodes(nodes);\n return lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatTreeNodes(\n nodes: readonly RenderTreeNode[],\n prefix = \"\",\n): readonly string[] {\n return nodes.flatMap((node, index) => {\n const last = index === nodes.length - 1;\n const branch = last ? \"└─ \" : \"├─ \";\n const childPrefix = `${prefix}${last ? \" \" : \"│ \"}`;\n\n return [\n `${prefix}${branch}${node.label}`,\n ...formatTreeNodes(node.children, childPrefix),\n ];\n });\n}\n","import { existsSync, readFileSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { getCLICwd } from \"../runtime/context.js\";\n\nfunction isCLIPackageJSON(path: string): boolean {\n const parsed: unknown = JSON.parse(readFileSync(path, \"utf8\"));\n\n return (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"name\" in parsed &&\n parsed.name === \"wiki-graph\"\n );\n}\n\nfunction findPackageJSONPathFromWorkingDirectory(): string | undefined {\n let currentDirectoryPath = getCLICwd();\n const rootDirectoryPath = parse(currentDirectoryPath).root;\n\n while (true) {\n for (const candidatePath of [\n join(currentDirectoryPath, \"package.json\"),\n join(currentDirectoryPath, \"packages\", \"cli\", \"package.json\"),\n ]) {\n if (existsSync(candidatePath) && isCLIPackageJSON(candidatePath)) {\n return candidatePath;\n }\n }\n\n if (currentDirectoryPath === rootDirectoryPath) {\n return undefined;\n }\n\n currentDirectoryPath = dirname(currentDirectoryPath);\n }\n}\n\nfunction resolvePackageJSONPath(): string {\n const injectedCLIDistDirectoryPath = (\n globalThis as { __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n\n const candidatePaths = [\n typeof injectedCLIDistDirectoryPath === \"string\"\n ? resolve(injectedCLIDistDirectoryPath, \"../package.json\")\n : undefined,\n findPackageJSONPathFromWorkingDirectory(),\n ];\n\n for (const candidatePath of candidatePaths) {\n if (candidatePath !== undefined && existsSync(candidatePath)) {\n return candidatePath;\n }\n }\n\n throw new Error(\"Could not locate CLI package.json\");\n}\n\nexport function readCLIVersion(): string {\n const packageJSONPath = resolvePackageJSONPath();\n const parsed: unknown = JSON.parse(readFileSync(packageJSONPath, \"utf8\"));\n\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"version\" in parsed &&\n typeof parsed.version === \"string\"\n ) {\n return parsed.version;\n }\n\n throw new Error(`Invalid package version in ${packageJSONPath}`);\n}\n","export * from \"./errors.js\";\nexport * from \"./formats.js\";\nexport * from \"./io.js\";\nexport * from \"./json.js\";\nexport * from \"./shell.js\";\nexport * from \"./tree.js\";\nexport * from \"./version.js\";\n","import { resolveWikiGraphCoreDatabasePath } from \"wiki-graph-core\";\nimport { openSharedStateDatabase } from \"wiki-graph-core\";\nimport type { Database } from \"wiki-graph-core\";\n\nexport const LOCAL_CONFIG_SECTIONS = [\n \"concurrent\",\n \"llm\",\n \"wikispine\",\n] as const;\n\nexport type LocalConfigSection = (typeof LOCAL_CONFIG_SECTIONS)[number];\n\nexport type LocalConfigObject = Readonly<Record<string, unknown>>;\n\nconst LOCAL_CONFIG_SCHEMA_SQL = `\nCREATE TABLE IF NOT EXISTS config_sections (\n section TEXT PRIMARY KEY,\n value_json TEXT NOT NULL,\n updated_at INTEGER NOT NULL\n);\n`;\n\nexport async function readLocalConfigSection(\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n return await readLocalConfigSectionInDatabase(database, section);\n });\n}\n\nexport async function replaceLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): Promise<LocalConfigObject> {\n const normalized = validateLocalConfigSection(section, value);\n\n return await withLocalConfigDatabase(async (database) => {\n await writeLocalConfigSectionInDatabase(database, section, normalized);\n return normalized;\n });\n}\n\nexport async function putLocalConfigValue(\n section: LocalConfigSection,\n key: string,\n value: unknown,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n const current = await readLocalConfigSectionInDatabase(database, section);\n const next = validateLocalConfigSection(section, {\n ...current,\n [normalizeLocalConfigKey(section, key)]: value,\n });\n\n await writeLocalConfigSectionInDatabase(database, section, next);\n return next;\n });\n}\n\nexport async function deleteLocalConfigValue(\n section: LocalConfigSection,\n key: string,\n): Promise<LocalConfigObject> {\n return await withLocalConfigDatabase(async (database) => {\n const current = await readLocalConfigSectionInDatabase(database, section);\n const normalizedKey = normalizeLocalConfigKey(section, key);\n const { [normalizedKey]: _removed, ...nextInput } = current;\n const next = validateLocalConfigSection(section, nextInput);\n\n await writeLocalConfigSectionInDatabase(database, section, next);\n return next;\n });\n}\n\nexport async function clearLocalConfigSection(\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n return await replaceLocalConfigSection(section, {});\n}\n\nexport function parseLocalConfigSection(\n value: string | undefined,\n): LocalConfigSection | undefined {\n return LOCAL_CONFIG_SECTIONS.find((section) => section === value);\n}\n\nexport function maskLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): LocalConfigObject {\n if (section !== \"llm\" || value.apiKey === undefined) {\n return value;\n }\n\n return {\n ...value,\n apiKey: \"****\",\n };\n}\n\nexport function normalizeLocalConfigKey(\n section: LocalConfigSection,\n key: string,\n): string {\n const normalized = key.trim();\n\n if (normalized === \"\") {\n throw new Error(\"Config key cannot be empty.\");\n }\n\n if (section === \"llm\") {\n switch (normalized) {\n case \"api-key\":\n return \"apiKey\";\n case \"base-url\":\n return \"baseURL\";\n default:\n return normalized;\n }\n }\n return normalized;\n}\n\nexport function validateLocalConfigSection(\n section: LocalConfigSection,\n value: LocalConfigObject,\n): LocalConfigObject {\n switch (section) {\n case \"llm\":\n return validateLLMConfig(value);\n case \"concurrent\":\n return validateConcurrentConfig(value);\n case \"wikispine\":\n return validateWikispineConfig(value);\n }\n}\n\nasync function withLocalConfigDatabase<T>(\n operation: (database: Database) => Promise<T>,\n): Promise<T> {\n const database = await openSharedStateDatabase(\n resolveWikiGraphCoreDatabasePath(),\n LOCAL_CONFIG_SCHEMA_SQL,\n );\n\n try {\n return await operation(database);\n } finally {\n await database.close();\n }\n}\n\nasync function readLocalConfigSectionInDatabase(\n database: Database,\n section: LocalConfigSection,\n): Promise<LocalConfigObject> {\n const value = await database.queryOne(\n \"SELECT value_json FROM config_sections WHERE section = ?\",\n [section],\n (row) => String(row.value_json),\n );\n\n return value === undefined ? {} : parseSectionJSON(section, value);\n}\n\nasync function writeLocalConfigSectionInDatabase(\n database: Database,\n section: LocalConfigSection,\n value: LocalConfigObject,\n): Promise<void> {\n await database.run(\n `\nINSERT INTO config_sections (section, value_json, updated_at)\nVALUES (?, ?, ?)\nON CONFLICT(section) DO UPDATE SET\n value_json = excluded.value_json,\n updated_at = excluded.updated_at\n`,\n [section, JSON.stringify(value), Date.now()],\n );\n}\n\nfunction parseSectionJSON(\n section: LocalConfigSection,\n value: string,\n): LocalConfigObject {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(value);\n } catch (error) {\n throw new Error(\n `Invalid local config JSON for ${section}: ${formatError(error)}`,\n );\n }\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\n `Invalid local config section ${section}: expected object.`,\n );\n }\n\n return validateLocalConfigSection(section, parsed as LocalConfigObject);\n}\n\nfunction validateLLMConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\n \"apiKey\",\n \"baseURL\",\n \"model\",\n \"name\",\n \"provider\",\n ]);\n const allowedProviders = new Set([\n \"anthropic\",\n \"google\",\n \"openai\",\n \"openai-compatible\",\n ]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown llm config key: ${key}`);\n }\n if (typeof entry !== \"string\" || entry.trim() === \"\") {\n throw new Error(`llm.${key} must be a non-empty string.`);\n }\n const normalized = entry.trim();\n\n if (key === \"provider\" && !allowedProviders.has(normalized)) {\n throw new Error(`Unknown llm.provider: ${normalized}`);\n }\n\n next[key] = normalized;\n }\n\n return next;\n}\n\nfunction validateConcurrentConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\"job\", \"request\"]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown concurrent config key: ${key}`);\n }\n const parsed =\n typeof entry === \"number\"\n ? entry\n : typeof entry === \"string\"\n ? Number(entry)\n : NaN;\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(`concurrent.${key} must be a positive integer.`);\n }\n next[key] = parsed;\n }\n\n return next;\n}\n\nfunction validateWikispineConfig(value: LocalConfigObject): LocalConfigObject {\n const allowedKeys = new Set([\"provider\"]);\n const allowedProviders = new Set([\"cli\", \"fetch\"]);\n const next: Record<string, unknown> = {};\n\n for (const [key, entry] of Object.entries(value)) {\n if (!allowedKeys.has(key)) {\n throw new Error(`Unknown wikispine config key: ${key}`);\n }\n if (typeof entry !== \"string\" || entry.trim() === \"\") {\n throw new Error(`wikispine.${key} must be a non-empty string.`);\n }\n const normalized = entry.trim();\n\n if (key === \"provider\" && !allowedProviders.has(normalized)) {\n throw new Error(`Unknown wikispine.provider: ${normalized}`);\n }\n\n next[key] = normalized;\n }\n\n return next;\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import { z } from \"zod\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { readLocalConfigSection } from \"./local-config.js\";\n\nconst CLI_PROVIDER_VALUES = [\n \"anthropic\",\n \"google\",\n \"openai\",\n \"openai-compatible\",\n] as const;\n\nconst cliProviderSchema = z.enum(CLI_PROVIDER_VALUES);\nconst inlineLLMConfigSchema = z.object({\n apiKey: z.string().min(1).optional(),\n baseURL: z.string().min(1).optional(),\n baseUrl: z.string().min(1).optional(),\n chatCompletionsUrl: z.string().min(1).optional(),\n llm: z\n .object({\n apiKey: z.string().min(1).optional(),\n baseURL: z.string().min(1).optional(),\n baseUrl: z.string().min(1).optional(),\n chatCompletionsUrl: z.string().min(1).optional(),\n model: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n provider: cliProviderSchema.optional(),\n })\n .optional(),\n model: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n provider: cliProviderSchema.optional(),\n});\n\nexport type CLIProvider = z.infer<typeof cliProviderSchema>;\n\nexport interface CLIConfig {\n readonly llm?: {\n readonly apiKey?: string;\n readonly baseURL?: string;\n readonly model?: string;\n readonly name?: string;\n readonly provider?: CLIProvider;\n };\n readonly prompt?: string;\n readonly concurrent?: {\n readonly job?: number;\n readonly request?: number;\n };\n readonly wikispine?: {\n readonly provider?: \"cli\" | \"fetch\";\n };\n}\n\ntype InlineLLMConfig = NonNullable<CLIConfig[\"llm\"]>;\n\nexport async function loadCLIConfig(options?: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n const [localLLM, concurrent, wikispine] = await Promise.all([\n readLocalConfigSection(\"llm\"),\n readLocalConfigSection(\"concurrent\"),\n readLocalConfigSection(\"wikispine\"),\n ]);\n const inlineLLMConfig =\n options?.llmJSON === undefined\n ? undefined\n : parseInlineLLMConfig(options.llmJSON);\n const llm = createLLMConfig({\n apiKey: firstDefined(inlineLLMConfig?.apiKey, readString(localLLM.apiKey)),\n baseURL: firstDefined(\n inlineLLMConfig?.baseURL,\n readString(localLLM.baseURL),\n ),\n model: firstDefined(inlineLLMConfig?.model, readString(localLLM.model)),\n name: firstDefined(inlineLLMConfig?.name, readString(localLLM.name)),\n provider: firstDefined(\n inlineLLMConfig?.provider,\n readProvider(localLLM.provider),\n ),\n });\n const requestConcurrent = readPositiveInteger(concurrent.request);\n const jobConcurrent = readPositiveInteger(concurrent.job);\n const wikispineConfig = createWikispineConfig(wikispine);\n\n return {\n ...(jobConcurrent === undefined && requestConcurrent === undefined\n ? {}\n : {\n concurrent: {\n ...(jobConcurrent === undefined ? {} : { job: jobConcurrent }),\n ...(requestConcurrent === undefined\n ? {}\n : { request: requestConcurrent }),\n },\n }),\n ...(llm === undefined ? {} : { llm }),\n ...(wikispineConfig === undefined ? {} : { wikispine: wikispineConfig }),\n };\n}\n\nfunction parseInlineLLMConfig(value: string): InlineLLMConfig | undefined {\n const normalized = normalizeString(value);\n\n if (normalized === undefined) {\n throw new Error(\n withHelpRoute(\n \"--llm must be a non-empty JSON object.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n let parsedJson: unknown;\n\n try {\n parsedJson = JSON.parse(normalized);\n } catch (error) {\n throw new Error(\n withHelpRoute(\n `Invalid --llm JSON: ${formatError(error)}`,\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const parsed = inlineLLMConfigSchema.safeParse(parsedJson);\n\n if (!parsed.success) {\n throw new Error(\n withHelpRoute(\n `Invalid --llm config: ${parsed.error.issues\n .map(\n (issue) => `${issue.path.join(\".\") || \"<root>\"}: ${issue.message}`,\n )\n .join(\"; \")}`,\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const input = parsed.data.llm ?? parsed.data;\n const provider = input.provider ?? inferInlineProvider(input);\n const baseURL = resolveInlineBaseURL(input);\n const config = createLLMConfig({\n apiKey: input.apiKey,\n baseURL,\n model: input.model,\n name: input.name,\n provider,\n });\n\n if (config === undefined) {\n throw new Error(\n withHelpRoute(\n \"--llm must contain at least one supported LLM field.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n\nfunction inferInlineProvider(input: {\n readonly baseURL?: string | undefined;\n readonly baseUrl?: string | undefined;\n readonly chatCompletionsUrl?: string | undefined;\n readonly provider?: CLIProvider | undefined;\n}): CLIProvider | undefined {\n if (\n input.provider === undefined &&\n (input.baseURL !== undefined ||\n input.baseUrl !== undefined ||\n input.chatCompletionsUrl !== undefined)\n ) {\n return \"openai-compatible\";\n }\n\n return input.provider;\n}\n\nfunction inferBaseURLFromChatCompletionsURL(input: {\n readonly chatCompletionsUrl?: string | undefined;\n}): string | undefined {\n if (input.chatCompletionsUrl === undefined) {\n return undefined;\n }\n\n const suffix = \"/chat/completions\";\n\n if (!input.chatCompletionsUrl.endsWith(suffix)) {\n throw new Error(\n withHelpRoute(\n \"--llm chatCompletionsUrl must end with /chat/completions when baseURL is not provided.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return input.chatCompletionsUrl.slice(0, -suffix.length);\n}\n\nfunction resolveInlineBaseURL(input: {\n readonly baseURL?: string | undefined;\n readonly baseUrl?: string | undefined;\n readonly chatCompletionsUrl?: string | undefined;\n}): string | undefined {\n if (input.baseURL !== undefined) {\n return input.baseURL;\n }\n if (input.baseUrl !== undefined) {\n return input.baseUrl;\n }\n\n return inferBaseURLFromChatCompletionsURL(input);\n}\n\nfunction createLLMConfig(input: {\n readonly apiKey: string | undefined;\n readonly baseURL: string | undefined;\n readonly model: string | undefined;\n readonly name: string | undefined;\n readonly provider: CLIProvider | undefined;\n}): CLIConfig[\"llm\"] {\n if (\n input.apiKey === undefined &&\n input.baseURL === undefined &&\n input.model === undefined &&\n input.name === undefined &&\n input.provider === undefined\n ) {\n return undefined;\n }\n\n return {\n ...(input.apiKey === undefined ? {} : { apiKey: input.apiKey }),\n ...(input.baseURL === undefined ? {} : { baseURL: input.baseURL }),\n ...(input.model === undefined ? {} : { model: input.model }),\n ...(input.name === undefined ? {} : { name: input.name }),\n ...(input.provider === undefined ? {} : { provider: input.provider }),\n };\n}\n\nfunction readProvider(value: unknown): CLIProvider | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n\n const parsed = cliProviderSchema.safeParse(value);\n\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction createWikispineConfig(\n value: Record<string, unknown>,\n): CLIConfig[\"wikispine\"] | undefined {\n const provider = readWikispineProvider(value.provider);\n\n if (provider === undefined) {\n return undefined;\n }\n\n return { provider };\n}\n\nfunction readWikispineProvider(value: unknown): \"cli\" | \"fetch\" | undefined {\n return value === \"cli\" || value === \"fetch\" ? value : undefined;\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction readPositiveInteger(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isInteger(value) && value > 0\n ? value\n : undefined;\n}\n\nfunction firstDefined<T>(\n first: T | undefined,\n second: T | undefined,\n): T | undefined {\n return first ?? second;\n}\n\nfunction normalizeString(value: string | undefined): string | undefined {\n const normalized = value?.trim();\n\n return normalized === undefined || normalized === \"\" ? undefined : normalized;\n}\n\nfunction formatError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import type { WikiGraphLLMOptions } from \"wiki-graph-core\";\n\nimport { createAnthropic } from \"@ai-sdk/anthropic\";\nimport { createGoogleGenerativeAI } from \"@ai-sdk/google\";\nimport { createOpenAI } from \"@ai-sdk/openai\";\nimport { createOpenAICompatible } from \"@ai-sdk/openai-compatible\";\n\nimport type { CLIConfig, CLIProvider } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport function buildLLMOptions(config: CLIConfig): WikiGraphLLMOptions {\n const llm = config.llm;\n\n if (llm?.provider === undefined || llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return {\n model: createLanguageModel(llm.provider, llm.model, {\n apiKey: llm.apiKey,\n baseURL: llm.baseURL,\n name: llm.name,\n }),\n ...(config.concurrent?.request === undefined\n ? {}\n : { concurrent: config.concurrent.request }),\n };\n}\n\nfunction createLanguageModel(\n provider: CLIProvider,\n model: string,\n options: {\n readonly apiKey: string | undefined;\n readonly baseURL: string | undefined;\n readonly name: string | undefined;\n },\n) {\n switch (provider) {\n case \"anthropic\": {\n const anthropic = createAnthropic({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return anthropic(model);\n }\n case \"google\": {\n const google = createGoogleGenerativeAI({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return google(model);\n }\n case \"openai\": {\n if (options.baseURL !== undefined) {\n throw new Error(\n withHelpRoute(\n \"openai does not accept llm.baseURL or baseURL in --llm JSON. Use openai-compatible for third-party OpenAI-style APIs.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const openai = createOpenAI({\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n ...(options.name === undefined ? {} : { name: options.name }),\n });\n\n return openai(model);\n }\n case \"openai-compatible\": {\n if (options.baseURL === undefined) {\n throw new Error(\n withHelpRoute(\n \"openai-compatible requires llm.baseURL or baseURL in --llm JSON.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n const openaiCompatible = createOpenAICompatible({\n baseURL: options.baseURL,\n name: options.name ?? createOpenAICompatibleName(options.baseURL),\n ...(options.apiKey === undefined ? {} : { apiKey: options.apiKey }),\n });\n\n return openaiCompatible(model);\n }\n }\n}\n\nfunction createOpenAICompatibleName(baseURL: string): string {\n try {\n return new URL(baseURL).hostname;\n } catch {\n return \"openai-compatible\";\n }\n}\n","import type { BuildJobTarget } from \"wiki-graph-core\";\n\nexport interface GenerationConcurrency {\n readonly job: number;\n readonly request: number;\n}\n\nexport const DEFAULT_GENERATION_JOB_CONCURRENCY = 3;\nexport const DEFAULT_GENERATION_REQUEST_CONCURRENCY = 6;\n\nexport interface GenerationPlanningCost {\n readonly model: string;\n readonly timeSeconds: {\n readonly max: number;\n readonly min: number;\n };\n readonly tokens: {\n readonly cacheableInput: number;\n readonly input: number;\n readonly output: number;\n };\n}\n\nexport interface GenerationPerformanceHint {\n readonly command: string;\n readonly current: number;\n readonly kind: \"job\" | \"request\";\n readonly message: string;\n readonly recommended: number;\n}\n\nexport function planGenerationTask(\n task: BuildJobTarget,\n words: number,\n chapters: number,\n concurrent: GenerationConcurrency,\n model: string,\n): GenerationPlanningCost {\n const profile = getGenerationPlanningProfile(task);\n const calls = Math.max(chapters, Math.ceil(words / profile.wordsPerCall));\n const effectiveConcurrency = Math.max(\n 1,\n task === \"reading-graph\" ? 1 : concurrent.request,\n );\n const callBatches = Math.ceil(calls / effectiveConcurrency);\n const wordSeconds = words * profile.secondsPerWord;\n\n return {\n model,\n timeSeconds: {\n max: Math.ceil(callBatches * profile.maxSecondsPerCall + wordSeconds),\n min: Math.ceil(callBatches * profile.minSecondsPerCall + wordSeconds),\n },\n tokens: {\n cacheableInput: Math.ceil(words * profile.cacheableInputTokenPerWord),\n input: Math.ceil(words * profile.inputTokenPerWord),\n output: Math.ceil(words * profile.outputTokenPerWord),\n },\n };\n}\n\nexport function createGenerationPerformanceHints(input: {\n readonly chapters: number;\n readonly concurrent: GenerationConcurrency;\n readonly hasGenerationWork: boolean;\n}): readonly GenerationPerformanceHint[] {\n if (!input.hasGenerationWork) {\n return [];\n }\n\n const hints: GenerationPerformanceHint[] = [];\n\n const recommendedRequest =\n input.concurrent.request < 4\n ? DEFAULT_GENERATION_REQUEST_CONCURRENCY\n : input.concurrent.request < 8\n ? 8\n : undefined;\n\n if (recommendedRequest !== undefined) {\n hints.push({\n command: `wg wikg://local/config/concurrent put request ${recommendedRequest}`,\n current: input.concurrent.request,\n kind: \"request\",\n message:\n \"LLM request concurrency can often be higher. Use at least 4; 6-8 is usually faster when the provider allows it.\",\n recommended: recommendedRequest,\n });\n }\n\n if (input.concurrent.job < 4 && input.chapters > 1) {\n hints.push({\n command: \"wg wikg://local/config/concurrent put job 4\",\n current: input.concurrent.job,\n kind: \"job\",\n message:\n \"Multiple chapters need generation and job concurrency is below 4. Raising it lets chapter jobs run in parallel.\",\n recommended: 4,\n });\n }\n\n return hints;\n}\n\nexport function formatGenerationPlanningModel(\n llm: { readonly model?: string; readonly provider?: string } | undefined,\n): string {\n if (llm?.model === undefined) {\n return \"not configured\";\n }\n\n return llm.provider === undefined\n ? llm.model\n : `${llm.provider}/${llm.model}`;\n}\n\nexport function formatGenerationPlanningDuration(seconds: number): string {\n if (seconds < 60) {\n return `${seconds}s`;\n }\n\n const minutes = Math.round(seconds / 60);\n\n if (minutes < 60) {\n return `${minutes}m`;\n }\n\n return `${Math.round(minutes / 60)}h`;\n}\n\nfunction getGenerationPlanningProfile(task: BuildJobTarget): {\n readonly inputTokenPerWord: number;\n readonly cacheableInputTokenPerWord: number;\n readonly maxSecondsPerCall: number;\n readonly minSecondsPerCall: number;\n readonly outputTokenPerWord: number;\n readonly secondsPerWord: number;\n readonly wordsPerCall: number;\n} {\n switch (task) {\n case \"knowledge-graph\":\n return {\n cacheableInputTokenPerWord: 60,\n inputTokenPerWord: 80,\n maxSecondsPerCall: 35,\n minSecondsPerCall: 15,\n outputTokenPerWord: 25,\n secondsPerWord: 0.02,\n wordsPerCall: 35,\n };\n case \"reading-graph\":\n return {\n cacheableInputTokenPerWord: 20,\n inputTokenPerWord: 25,\n maxSecondsPerCall: 45,\n minSecondsPerCall: 15,\n outputTokenPerWord: 4,\n secondsPerWord: 0.01,\n wordsPerCall: 160,\n };\n case \"reading-summary\":\n return {\n cacheableInputTokenPerWord: 45,\n inputTokenPerWord: 55,\n maxSecondsPerCall: 25,\n minSecondsPerCall: 10,\n outputTokenPerWord: 4,\n secondsPerWord: 0.01,\n wordsPerCall: 110,\n };\n }\n}\n","import { clearLine, cursorTo, moveCursor } from \"readline\";\n\nimport type {\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"wiki-graph-core\";\n\ninterface SerialState {\n completedFragments: number;\n completedWords: number;\n fragments?: number;\n title?: string;\n words?: number;\n}\n\nexport interface CLIProgressRenderer {\n readonly onProgress?: WikiGraphProgressCallback;\n stop(): Promise<void>;\n}\n\nexport function createCLIProgressRenderer(input: {\n readonly enabled: boolean;\n readonly stream?: NodeJS.WriteStream;\n}): CLIProgressRenderer {\n if (!input.enabled) {\n return {\n async stop() {},\n };\n }\n\n return new TerminalProgressRenderer(input.stream ?? process.stderr);\n}\n\nclass TerminalProgressRenderer implements CLIProgressRenderer {\n readonly #stream: NodeJS.WriteStream;\n readonly #serials = new Map<number, SerialState>();\n #digest:\n | {\n completedWords: number;\n totalWords: number;\n }\n | undefined;\n #renderQueue: Promise<void> = Promise.resolve();\n #renderedLineCount = 0;\n #stopping = false;\n\n public constructor(stream: NodeJS.WriteStream) {\n this.#stream = stream;\n }\n\n public readonly onProgress: WikiGraphProgressCallback = async (event) => {\n if (this.#stopping) {\n return;\n }\n\n const renderTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n this.#applyEvent(event);\n this.#render();\n });\n\n this.#renderQueue = renderTask;\n\n await renderTask;\n };\n\n public async stop(): Promise<void> {\n if (this.#stopping) {\n await this.#renderQueue.catch(swallowRenderError);\n return;\n }\n\n this.#stopping = true;\n\n const stopTask = this.#renderQueue.catch(swallowRenderError).then(() => {\n if (this.#renderedLineCount === 0) {\n return;\n }\n\n this.#stream.write(\"\\n\");\n this.#renderedLineCount = 0;\n });\n\n this.#renderQueue = stopTask;\n\n await stopTask;\n }\n\n #applyEvent(event: WikiGraphProgressEvent): void {\n switch (event.type) {\n case \"serials-discovered\":\n if (!event.available) {\n return;\n }\n\n for (const serial of event.serials) {\n this.#serials.set(serial.id, {\n completedFragments: 0,\n completedWords: 0,\n ...(serial.title === undefined ? {} : { title: serial.title }),\n words: serial.words,\n ...(serial.fragments === undefined\n ? {}\n : { fragments: serial.fragments }),\n });\n }\n return;\n case \"serial-progress\": {\n const serial = this.#serials.get(event.id) ?? {\n completedFragments: 0,\n completedWords: 0,\n };\n\n serial.completedFragments = event.completedFragments;\n serial.completedWords = event.completedWords;\n this.#serials.set(event.id, serial);\n return;\n }\n case \"digest-progress\":\n this.#digest = {\n completedWords: event.completedWords,\n totalWords: event.totalWords,\n };\n return;\n }\n }\n\n #render(): void {\n const lines = this.#buildLines();\n\n if (lines.length === 0) {\n return;\n }\n\n if (this.#renderedLineCount > 1) {\n moveCursor(this.#stream, 0, -(this.#renderedLineCount - 1));\n }\n\n const renderLineCount = Math.max(lines.length, this.#renderedLineCount);\n\n for (let index = 0; index < renderLineCount; index += 1) {\n cursorTo(this.#stream, 0);\n clearLine(this.#stream, 0);\n\n const line = lines[index];\n\n if (line !== undefined) {\n this.#stream.write(line);\n }\n\n if (index < renderLineCount - 1) {\n this.#stream.write(\"\\n\");\n }\n }\n\n this.#renderedLineCount = renderLineCount;\n }\n\n #buildLines(): string[] {\n const lines: string[] = [];\n const serials = [...this.#serials.entries()].sort(\n ([leftId], [rightId]) => leftId - rightId,\n );\n const discoveredSerials = serials.filter(\n (entry): entry is [number, SerialState & { words: number }] =>\n hasDiscoveryWords(entry[1]),\n );\n const totalSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.words,\n 0,\n );\n const totalCompletedSerialWords = discoveredSerials.reduce(\n (sum, [, serial]) => sum + serial.completedWords,\n 0,\n );\n const activeSerials = discoveredSerials.filter(\n ([, serial]) =>\n serial.completedWords > 0 && serial.completedWords < serial.words,\n );\n\n if (discoveredSerials.length > 0) {\n lines.push(\n `${formatStageLabel(\"Serial\")}${renderBar(\n totalCompletedSerialWords,\n totalSerialWords,\n )} ${formatNumber(totalCompletedSerialWords)} / ${formatNumber(\n totalSerialWords,\n )} words`,\n );\n }\n\n if (this.#digest !== undefined) {\n lines.push(\n `${formatStageLabel(\"Digest\")}${renderBar(\n this.#digest.completedWords,\n this.#digest.totalWords,\n )} ${formatNumber(this.#digest.completedWords)} / ${formatNumber(\n this.#digest.totalWords,\n )} words`,\n );\n }\n\n if (activeSerials.length > 0) {\n lines.push(\"-\".repeat(24));\n }\n\n const wordsLabelWidth = activeSerials.reduce((width, [, serial]) => {\n return Math.max(\n width,\n buildWordsLabel(serial.completedWords, serial.words).length,\n );\n }, 0);\n\n for (const [serialId, serial] of activeSerials) {\n const wordsLabel = buildWordsLabel(serial.completedWords, serial.words);\n const fragmentsLabel = buildFragmentsLabel(\n serial.completedFragments,\n serial.fragments,\n );\n\n lines.push(buildSerialHeading(serialId, serial.title));\n lines.push(\n `${formatSerialDetailIndent()}${renderBar(\n serial.completedWords,\n serial.words,\n )} ${wordsLabel.padEnd(wordsLabelWidth)}${fragmentsLabel === undefined ? \"\" : ` (${fragmentsLabel})`}`,\n );\n }\n\n return lines;\n }\n}\n\nfunction swallowRenderError(): undefined {\n return undefined;\n}\n\nfunction hasDiscoveryWords(\n serial: SerialState,\n): serial is SerialState & { words: number } {\n return serial.words !== undefined;\n}\n\nfunction formatStageLabel(label: string): string {\n return label.padEnd(8);\n}\n\nfunction buildSerialHeading(\n serialId: number,\n title: string | undefined,\n): string {\n if (title === undefined) {\n return `#${serialId}`;\n }\n\n const sanitizedTitle = sanitizeSerialTitle(title);\n\n return sanitizedTitle === \"\"\n ? `#${serialId}`\n : `#${serialId} ${sanitizedTitle}`;\n}\n\nfunction formatSerialDetailIndent(): string {\n return \" \".repeat(7);\n}\n\nfunction buildWordsLabel(completed: number, total: number): string {\n return `${formatNumber(completed)} / ${formatNumber(total)} words`;\n}\n\nfunction sanitizeSerialTitle(title: string): string {\n let sanitized = \"\";\n\n for (let index = 0; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === \"\\u001B\") {\n const next = title[index + 1];\n\n if (next === \"[\") {\n index = skipAnsiCSISequence(title, index + 2);\n continue;\n }\n\n if (next === \"]\") {\n index = skipAnsiOSCSequence(title, index + 2);\n continue;\n }\n\n continue;\n }\n\n if (current !== undefined && /\\p{Cc}/u.test(current)) {\n continue;\n }\n\n sanitized += current ?? \"\";\n }\n\n return sanitized.trim();\n}\n\nfunction skipAnsiCSISequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current >= \"@\" && current <= \"~\") {\n return index;\n }\n }\n\n return title.length;\n}\n\nfunction skipAnsiOSCSequence(title: string, startIndex: number): number {\n for (let index = startIndex; index < title.length; index += 1) {\n const current = title[index];\n const next = title[index + 1];\n\n if (current === undefined) {\n return title.length;\n }\n\n if (current === \"\\u0007\") {\n return index;\n }\n\n if (current === \"\\u001B\" && next === \"\\\\\") {\n return index + 1;\n }\n }\n\n return title.length;\n}\n\nfunction buildFragmentsLabel(\n completed: number,\n total: number | undefined,\n): string | undefined {\n if (total === undefined) {\n return undefined;\n }\n\n return `${formatNumber(completed)}/${formatNumber(total)} source units`;\n}\n\nfunction renderBar(completed: number, total: number): string {\n const width = 12;\n const safeTotal = total <= 0 ? 1 : total;\n const ratio = Math.max(0, Math.min(1, completed / safeTotal));\n const filled = Math.round(ratio * width);\n\n return `[${\"#\".repeat(filled)}${\".\".repeat(width - filled)}]`;\n}\n\nfunction formatNumber(value: number): string {\n return new Intl.NumberFormat(\"en-US\").format(value);\n}\n","import { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSONLine } from \"../support/index.js\";\nimport { getCLIStdoutIsTTY } from \"./context.js\";\n\nexport interface ProgressCounter {\n readonly done: number;\n readonly name: string;\n readonly total: number;\n readonly unit: string;\n}\n\nexport interface ProgressMetric {\n readonly name: string;\n readonly value: number;\n}\n\nexport interface ProgressMetricGroup {\n readonly metrics: readonly ProgressMetric[];\n readonly name: string;\n}\n\nexport type ProgressOutputEvent =\n | {\n readonly json: unknown;\n readonly kind: \"lifecycle\";\n readonly text: string;\n }\n | {\n readonly counters?: readonly ProgressCounter[];\n readonly json: unknown;\n readonly kind: \"status\";\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n };\n\nexport class ProgressOutputWriter {\n readonly #jsonl: boolean;\n readonly #throttleMs: number;\n readonly #tty: boolean;\n #lastStatusAt: number | undefined;\n #lastStatusKey: string | undefined;\n #statusLineOpen = false;\n\n public constructor(input: {\n readonly jsonl: boolean;\n readonly throttleMs: number;\n readonly tty?: boolean;\n }) {\n this.#jsonl = input.jsonl;\n this.#throttleMs = input.throttleMs;\n this.#tty = input.tty ?? getCLIStdoutIsTTY() === true;\n }\n\n public async write(event: ProgressOutputEvent): Promise<void> {\n if (event.kind === \"status\" && !this.#shouldWriteStatus(event)) {\n return;\n }\n\n if (this.#jsonl) {\n await this.#writeLine(formatCLIJSONLine(event.json));\n return;\n }\n\n if (event.kind === \"status\") {\n await this.#writeStatus(formatStatusText(event));\n return;\n }\n\n await this.#writeLifecycle(event.text);\n }\n\n async #writeLifecycle(text: string): Promise<void> {\n if (this.#tty && this.#statusLineOpen) {\n await writeTextToStdout(\"\\n\");\n this.#statusLineOpen = false;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n async #writeLine(text: string): Promise<void> {\n await writeTextToStdout(text);\n }\n\n async #writeStatus(text: string): Promise<void> {\n if (this.#tty) {\n await writeTextToStdout(`\\r\\x1B[2K${text}`);\n this.#statusLineOpen = true;\n return;\n }\n\n await this.#writeLine(`${text}\\n`);\n }\n\n #shouldWriteStatus(\n event: Extract<ProgressOutputEvent, { readonly kind: \"status\" }>,\n ): boolean {\n const key = event.phase;\n const completed = isStatusComplete(event);\n const now = Date.now();\n const elapsed =\n this.#lastStatusAt === undefined\n ? Number.POSITIVE_INFINITY\n : now - this.#lastStatusAt;\n\n if (\n key !== this.#lastStatusKey ||\n completed ||\n this.#lastStatusAt === undefined ||\n elapsed >= this.#throttleMs\n ) {\n this.#lastStatusAt = now;\n this.#lastStatusKey = key;\n return true;\n }\n\n return false;\n }\n}\n\nexport function formatStatusText(input: {\n readonly counters?: readonly ProgressCounter[];\n readonly metricGroups?: readonly ProgressMetricGroup[];\n readonly phase: string;\n}): string {\n const counters = input.counters ?? [];\n const counterText =\n counters.length === 0\n ? \"\"\n : ` ${counters.map(formatCounterText).join(\" | \")}`;\n const metricText = formatMetricGroupsText(input.metricGroups);\n\n return `${input.phase}${counterText}${metricText === \"\" ? \"\" : ` ${metricText}`}`;\n}\n\nfunction formatCounterText(counter: ProgressCounter): string {\n if (counter.name === counter.unit) {\n return `${counter.name} ${counter.done}/${counter.total}`;\n }\n\n return `${counter.name} ${counter.done}/${counter.total} ${counter.unit}`;\n}\n\nfunction formatMetricGroupsText(\n metricGroups: readonly ProgressMetricGroup[] | undefined,\n): string {\n if (metricGroups === undefined) {\n return \"\";\n }\n\n const parts = metricGroups.flatMap((group) => {\n const metrics = group.metrics.map(\n (metric) => `${metric.name}: ${metric.value}`,\n );\n\n return metrics.length === 0\n ? []\n : [`[${group.name} ${metrics.join(\" / \")}]`];\n });\n\n return parts.join(\" \");\n}\n\nfunction isStatusComplete(input: {\n readonly counters?: readonly ProgressCounter[];\n}): boolean {\n const counters = input.counters ?? [];\n\n return (\n counters.length > 0 &&\n counters.every(\n (counter) => counter.total > 0 && counter.done >= counter.total,\n )\n );\n}\n","import { resolveDataDirPath } from \"wiki-graph-core\";\nexport {\n DEFAULT_EXTRACTION_PROMPT,\n DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"wiki-graph-core\";\nimport type { WikiGraphScope } from \"wiki-graph-core\";\nimport { createDefaultWikiGraphSampling } from \"wiki-graph-core\";\nimport { LLM } from \"wiki-graph-core\";\nimport type {\n LLMStreamProgressCallback,\n LLMTokenUsageCallback,\n} from \"wiki-graph-core\";\n\nimport { loadCLIConfig, type CLIConfig } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { buildLLMOptions } from \"./llm.js\";\n\nexport function createStageLLM(\n config: CLIConfig,\n options?: {\n readonly cacheDirPath?: string;\n readonly logDirPath?: string;\n readonly onStreamProgress?: LLMStreamProgressCallback;\n readonly onTokenUsage?: LLMTokenUsageCallback;\n },\n): LLM<WikiGraphScope> {\n const llmOptions = buildLLMOptions(config);\n\n return new LLM<WikiGraphScope>({\n dataDirPath: resolveDataDirPath(),\n sampling: createDefaultWikiGraphSampling({\n ...(llmOptions.temperature === undefined\n ? {}\n : { temperature: llmOptions.temperature }),\n ...(llmOptions.topP === undefined ? {} : { topP: llmOptions.topP }),\n }),\n ...llmOptions,\n ...(options?.cacheDirPath === undefined\n ? {}\n : { cacheDirPath: options.cacheDirPath }),\n ...(options?.logDirPath === undefined\n ? {}\n : { logDirPath: options.logDirPath }),\n ...(options?.onStreamProgress === undefined\n ? {}\n : { onStreamProgress: options.onStreamProgress }),\n ...(options?.onTokenUsage === undefined\n ? {}\n : { onTokenUsage: options.onTokenUsage }),\n });\n}\n\nexport async function loadRequiredStageConfig(options: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n const config = await loadCLIConfig({\n ...(options.llmJSON === undefined ? {} : { llmJSON: options.llmJSON }),\n });\n\n if (config.llm?.provider === undefined || config.llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n","export * from \"./config.js\";\nexport * from \"./llm.js\";\nexport * from \"./local-config.js\";\nexport * from \"./planning.js\";\nexport * from \"./progress.js\";\nexport * from \"./progress-output.js\";\nexport * from \"./stage.js\";\n","import { rm } from \"fs/promises\";\nimport { resolve } from \"path\";\n\nimport { WikiGraph, type WikiGraphOptions } from \"wiki-graph-core\";\nimport type { WikiGraphArchive } from \"wiki-graph-core\";\n\nimport type { CLIArguments } from \"../args/index.js\";\nimport { loadCLIConfig, type CLIConfig } from \"../runtime/config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport {\n type CLIFormat,\n inferCLIFormatFromPath,\n isTextCLIFormat,\n} from \"../support/index.js\";\nimport { buildLLMOptions } from \"../runtime/llm.js\";\nimport {\n createTemporaryOutputPath,\n readTextStreamFromStdin,\n removeTemporaryDirectory,\n writeTextFileToStdout,\n} from \"../support/index.js\";\nimport { createCLIProgressRenderer } from \"../runtime/index.js\";\n\ntype TextCLIFormat = Extract<CLIFormat, \"markdown\" | \"txt\">;\n\ntype ResolvedInputEndpoint =\n | {\n readonly format: Exclude<CLIFormat, \"markdown\" | \"txt\"> | TextCLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdin\";\n };\n\ntype ResolvedOutputEndpoint =\n | {\n readonly format: CLIFormat;\n readonly path: string;\n readonly standardStream?: undefined;\n }\n | {\n readonly format: TextCLIFormat;\n readonly path?: undefined;\n readonly standardStream: \"stdout\";\n };\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const input = resolveInputEndpoint(args);\n const output = resolveOutputEndpoint(args);\n const targetStage = args.targetStage ?? \"summarized\";\n\n if (args.verbose && output.standardStream === \"stdout\") {\n throw new Error(\n withHelpRoute(\n \"Cannot use --verbose when writing digest output to stdout. Use --output <path> or disable --verbose.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n if (args.targetStage !== undefined && output.format !== \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when output format is wikg.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n const inputFormat = input.format;\n if (args.targetStage !== undefined && inputFormat === \"wikg\") {\n throw new Error(\n withHelpRoute(\n \"--stage is only supported when creating .wikg from source input.\",\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n const requiresDigest = inputFormat !== \"wikg\";\n const requiresLLM =\n requiresDigest && targetStage !== \"planned\" && targetStage !== \"sourced\";\n const digestDirPath = await prepareDigestDirPath(args, requiresDigest);\n const config = await loadRequiredConfig(args, requiresLLM);\n const app = new WikiGraph(createAppOptions(args, config, requiresLLM));\n const progressRenderer = createCLIProgressRenderer({\n enabled:\n requiresDigest &&\n output.standardStream !== \"stdout\" &&\n process.stderr.isTTY === true &&\n !args.verbose,\n });\n\n if (inputFormat === \"wikg\") {\n if (input.path === undefined) {\n throw new Error(\"Internal error: wikg input requires a file path.\");\n }\n\n try {\n await app.openSession(input.path, async (digest) => {\n await writeDigestOutput(digest, output);\n });\n return;\n } finally {\n await progressRenderer.stop();\n }\n }\n\n const extractionPrompt = args.prompt ?? config.prompt;\n\n try {\n if (input.path === undefined) {\n if (process.stdin.isTTY) {\n throw new Error(\n withHelpRoute(\n \"Missing --input. Refusing to read from interactive stdin. Use --input <path> or pipe text into stdin.\",\n CLI_HELP_ROUTES.runtime,\n ),\n );\n }\n\n await app.digestTextStreamSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirPath: digestDirPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n sourceFormat: input.format,\n stream: readTextStreamFromStdin(),\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n }\n\n switch (inputFormat) {\n case \"epub\":\n await app.digestEpubSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirPath: digestDirPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: input.path,\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n case \"markdown\":\n await app.digestMarkdownSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirPath: digestDirPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: input.path,\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n case \"txt\":\n await app.digestTxtSession(\n {\n ...(digestDirPath === undefined\n ? {}\n : { documentDirPath: digestDirPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: input.path,\n ...(extractionPrompt === undefined ? {} : { extractionPrompt }),\n targetStage,\n },\n async (digest) => {\n await writeDigestOutput(digest, output);\n },\n );\n return;\n }\n } finally {\n await progressRenderer.stop();\n }\n}\n\nasync function prepareDigestDirPath(\n args: CLIArguments,\n requiresDigest: boolean,\n): Promise<string | undefined> {\n const normalizedPath = normalizeIOPath(args.digestDirPath);\n\n if (normalizedPath === undefined || !requiresDigest) {\n return undefined;\n }\n\n const resolvedPath = resolve(normalizedPath);\n\n await rm(resolvedPath, { force: true, recursive: true });\n\n return resolvedPath;\n}\n\nasync function loadRequiredConfig(\n args: CLIArguments,\n requiresDigest: boolean,\n): Promise<CLIConfig> {\n const config = await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n\n if (!requiresDigest) {\n return config;\n }\n\n if (config.llm?.provider === undefined || config.llm.model === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing LLM configuration. Set --llm for one run, or configure `wikg://local/config/llm` with provider and model.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n\n return config;\n}\n\nfunction createAppOptions(\n args: CLIArguments,\n config: CLIConfig,\n requiresDigest: boolean,\n): WikiGraphOptions {\n const llmOptions = !requiresDigest ? undefined : buildLLMOptions(config);\n\n return {\n ...(args.verbose ? { verbose: true } : {}),\n ...(llmOptions === undefined ? {} : { llm: llmOptions }),\n };\n}\n\nasync function writeDigestOutput(\n digest: WikiGraphArchive,\n output: ResolvedOutputEndpoint,\n): Promise<void> {\n if (output.path !== undefined) {\n await writeDigestToFile(digest, output.path, output.format);\n return;\n }\n\n if (output.standardStream !== \"stdout\") {\n throw new Error(\"Internal error: missing output target.\");\n }\n\n const temporaryOutput = await createTemporaryOutputPath(\n \"wikigraph-cli-output-\",\n extensionForFormat(output.format),\n );\n\n try {\n await writeDigestToFile(digest, temporaryOutput.filePath, output.format);\n await writeTextFileToStdout(temporaryOutput.filePath);\n } finally {\n await removeTemporaryDirectory(temporaryOutput.directoryPath);\n }\n}\n\nasync function writeDigestToFile(\n digest: WikiGraphArchive,\n path: string,\n format: CLIFormat,\n): Promise<void> {\n switch (format) {\n case \"epub\":\n await digest.exportEpub(path);\n return;\n case \"markdown\":\n case \"txt\":\n await digest.exportText(path);\n return;\n case \"wikg\":\n await digest.saveAs(path);\n return;\n }\n}\n\nfunction resolveInputEndpoint(args: CLIArguments): ResolvedInputEndpoint {\n const normalizedPath = normalizeIOPath(args.inputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.inputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer input format from stdin. Set --input-format.\"\n : `Cannot infer input format from ${normalizedPath}. Set --input-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdin only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdin\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction resolveOutputEndpoint(args: CLIArguments): ResolvedOutputEndpoint {\n const normalizedPath = normalizeIOPath(args.outputPath);\n const inferredFormat =\n normalizedPath === undefined\n ? undefined\n : inferCLIFormatFromPath(normalizedPath);\n const format = args.outputFormat ?? inferredFormat;\n\n if (format === undefined) {\n throw new Error(\n withHelpRoute(\n normalizedPath === undefined\n ? \"Cannot infer output format for stdout. Set --output-format.\"\n : `Cannot infer output format from ${normalizedPath}. Set --output-format.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n if (normalizedPath === undefined && !isTextCLIFormat(format)) {\n throw new Error(\n withHelpRoute(\n `stdout only supports txt or markdown, but got ${format}.`,\n CLI_HELP_ROUTES.format,\n ),\n );\n }\n\n if (normalizedPath === undefined) {\n const textFormat = format as TextCLIFormat;\n\n return {\n format: textFormat,\n standardStream: \"stdout\",\n };\n }\n\n return {\n format,\n path: normalizedPath,\n };\n}\n\nfunction normalizeIOPath(path: string | undefined): string | undefined {\n if (path === undefined) {\n return undefined;\n }\n\n return path === \"-\" ? undefined : path;\n}\n\nfunction extensionForFormat(format: CLIFormat): string {\n switch (format) {\n case \"epub\":\n return \".epub\";\n case \"markdown\":\n return \".md\";\n case \"wikg\":\n return \".wikg\";\n case \"txt\":\n return \".txt\";\n }\n}\n","import { rename, rm, stat } from \"fs/promises\";\nimport { basename, dirname, join } from \"path\";\n\nimport {\n createWikiGraphTempDirectory,\n DirectoryDocument,\n formatLocatedWikiGraphUri,\n formatWikiGraphCommandUri,\n TOC_FILE_VERSION,\n writeWikgArchive,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { runConvertCommand } from \"../convert.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\nexport async function createArchive(args: CLIArchiveArguments): Promise<void> {\n const outputPath = await prepareCreateArchiveOutputPath(args);\n\n try {\n await writeCreatedArchiveFile(args, outputPath);\n await finalizeCreatedArchiveFile(args, outputPath);\n } finally {\n if (outputPath !== args.archivePath) {\n await rm(outputPath, { force: true, recursive: true });\n }\n }\n\n await writeCreatedArchive(args);\n}\n\nasync function writeCreatedArchiveFile(\n args: CLIArchiveArguments,\n outputPath: string,\n): Promise<void> {\n if (args.importPath === undefined) {\n await createEmptyArchive(outputPath);\n return;\n }\n\n await runConvertCommand({\n help: false,\n inputPath: args.importPath,\n outputFormat: \"wikg\",\n outputPath,\n targetStage: \"sourced\",\n verbose: false,\n });\n}\n\nasync function createEmptyArchive(outputPath: string): Promise<void> {\n const directoryPath = await createWikiGraphTempDirectory(\"archive-write\");\n const document = await DirectoryDocument.open(directoryPath);\n\n try {\n try {\n await document.openSession(async (openedDocument) => {\n await openedDocument.writeToc({\n items: [],\n version: TOC_FILE_VERSION,\n });\n });\n } finally {\n await document.release();\n }\n await writeWikgArchive(directoryPath, outputPath);\n } finally {\n await rm(directoryPath, { force: true, recursive: true });\n }\n}\n\nasync function prepareCreateArchiveOutputPath(\n args: CLIArchiveArguments,\n): Promise<string> {\n if (args.replace !== true && (await fileExists(args.archivePath))) {\n throw new Error(formatArchiveAlreadyExistsMessage(args.archivePath));\n }\n\n if (args.replace !== true) {\n return args.archivePath;\n }\n\n return join(\n dirname(args.archivePath),\n `.${basename(args.archivePath)}.${process.pid}.${Date.now()}.tmp.wikg`,\n );\n}\n\nasync function finalizeCreatedArchiveFile(\n args: CLIArchiveArguments,\n outputPath: string,\n): Promise<void> {\n if (outputPath === args.archivePath) {\n return;\n }\n\n await rename(outputPath, args.archivePath);\n}\n\nasync function fileExists(path: string): Promise<boolean> {\n try {\n await stat(path);\n return true;\n } catch (error) {\n if (isNodeENOENTError(error)) {\n return false;\n }\n\n throw error;\n }\n}\n\nfunction isNodeENOENTError(error: unknown): error is NodeJS.ErrnoException {\n return (\n error instanceof Error &&\n \"code\" in error &&\n (error as NodeJS.ErrnoException).code === \"ENOENT\"\n );\n}\n\nfunction formatArchiveAlreadyExistsMessage(archivePath: string): string {\n const uri = formatWikiGraphCommandUri(archivePath);\n\n return [\n `Archive already exists: ${archivePath}`,\n `Use \\`${formatCliCommand([uri, \"inspect\"])}\\` to view it, or rerun with \\`--replace\\` to overwrite it.`,\n ].join(\"\\n\");\n}\n\nasync function writeCreatedArchive(args: CLIArchiveArguments): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(\n formatCLIJSON({ uri: formatLocatedWikiGraphUri(args.archivePath) }),\n );\n return;\n }\n\n await writeTextToStdout(\"<archive>\\n\");\n}\n","import {\n formatWikiGraphCommandUri,\n isArchiveSearchIndexCurrent,\n listChapters,\n readArchiveIndexSettings,\n type ChapterEntry,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningDuration,\n formatGenerationPlanningModel,\n planGenerationTask,\n type GenerationPerformanceHint,\n type GenerationPlanningCost,\n} from \"../../runtime/index.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\ninterface InspectChapter extends ChapterEntry {\n readonly knowledgeGraphReady: boolean;\n readonly readingGraphReady: boolean;\n readonly summaryReady: boolean;\n}\n\ninterface InspectImprovement {\n readonly command: string;\n readonly missingChapters?: number;\n readonly missingWords?: number;\n readonly planning?: GenerationPlanningCost;\n readonly recommendation: string;\n readonly title: string;\n}\n\ninterface InspectCoverage {\n readonly coveredChapters: number;\n readonly coveredWords: number;\n readonly percent: string;\n readonly totalChapters: number;\n readonly totalWords: number;\n}\n\ninterface InspectReport {\n readonly uri: string;\n readonly scope: {\n readonly chapterId?: number;\n readonly type: \"archive\" | \"chapter\";\n };\n readonly content: {\n readonly chapters: {\n readonly content: number;\n readonly planned: number;\n readonly total: number;\n };\n readonly sourceWords: number;\n readonly summaryWords: number;\n };\n readonly index: {\n readonly current: boolean;\n readonly fixCommand?: string;\n readonly impact?: string;\n readonly querySupport: boolean;\n readonly resource?: string;\n readonly status: \"current\" | \"missing-or-outdated\";\n readonly storage: \"archive\" | \"cache\";\n };\n readonly coverage: {\n readonly knowledgeGraph: InspectCoverage;\n readonly readingGraph: InspectCoverage;\n readonly summary: InspectCoverage;\n };\n readonly retrievalGuidance: readonly string[];\n readonly improvements: readonly InspectImprovement[];\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly help: {\n readonly readiness: string;\n };\n}\n\nexport async function writeArchiveInspectReport(\n document: ReadonlyDocument,\n args: CLIArchiveArguments,\n): Promise<void> {\n const report = await createArchiveInspectReport(document, args);\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(report));\n return;\n }\n\n await writeTextToStdout(formatArchiveInspectText(report));\n}\n\nasync function createArchiveInspectReport(\n document: ReadonlyDocument,\n args: CLIArchiveArguments,\n): Promise<InspectReport> {\n const archiveUri = formatArchiveInspectCommandUri(args.archivePath);\n const scopeUri =\n args.chapterId === undefined\n ? archiveUri\n : `${archiveUri}/chapter/${args.chapterId}`;\n const [chapters, summaryWords, ftsCurrent, indexSettings, config] =\n await Promise.all([\n readInspectChapters(document, args.chapterId),\n readSummaryWords(document, args.chapterId),\n isArchiveSearchIndexCurrent(document),\n readArchiveIndexSettings(document),\n loadCLIConfig(),\n ]);\n const concurrent = {\n job: config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n request:\n config.concurrent?.request ?? DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n };\n const planningModel = formatGenerationPlanningModel(config.llm);\n const contentChapters = chapters.filter(\n (chapter) => chapter.stage !== \"planned\",\n );\n const sourceWords = sumWords(contentChapters);\n const readingGraphCovered = contentChapters.filter(\n (chapter) => chapter.readingGraphReady,\n );\n const knowledgeGraphCovered = contentChapters.filter(\n (chapter) => chapter.knowledgeGraphReady,\n );\n const summaryCovered = contentChapters.filter(\n (chapter) => chapter.summaryReady,\n );\n const improvements = createInspectImprovements({\n archiveUri,\n concurrent,\n contentChapters,\n ftsCurrent,\n planningModel,\n scopeUri,\n summaryCovered,\n knowledgeGraphCovered,\n readingGraphCovered,\n });\n const performanceHints = createGenerationPerformanceHints({\n chapters: Math.max(\n 0,\n ...improvements.map((improvement) => improvement.missingChapters ?? 0),\n ),\n concurrent,\n hasGenerationWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n });\n\n return {\n uri: scopeUri,\n scope:\n args.chapterId === undefined\n ? { type: \"archive\" }\n : { chapterId: args.chapterId, type: \"chapter\" },\n content: {\n chapters: {\n content: contentChapters.length,\n planned: chapters.length - contentChapters.length,\n total: chapters.length,\n },\n sourceWords,\n summaryWords,\n },\n index: {\n current: ftsCurrent,\n ...(ftsCurrent\n ? {}\n : {\n fixCommand: formatCliCommand([`${archiveUri}/index`, \"enable\"]),\n impact:\n \"--query, related --query, and evidence --query are unavailable.\",\n resource: \"local CPU/disk time only; no LLM tokens.\",\n }),\n querySupport: ftsCurrent,\n status: ftsCurrent ? \"current\" : \"missing-or-outdated\",\n storage: indexSettings.ftsEmbedded ? \"archive\" : \"cache\",\n },\n coverage: {\n knowledgeGraph: createInspectCoverage(\n knowledgeGraphCovered,\n contentChapters,\n ),\n readingGraph: createInspectCoverage(readingGraphCovered, contentChapters),\n summary: createInspectCoverage(summaryCovered, contentChapters),\n },\n retrievalGuidance: formatRetrievalGuidance({\n ftsCurrent,\n knowledgeGraphCovered,\n readingGraphCovered,\n contentChapters,\n sourceWords,\n }),\n improvements,\n performanceHints,\n help: { readiness: \"wg help readiness\" },\n };\n}\n\nfunction formatArchiveInspectCommandUri(archivePath: string): string {\n if (archivePath.startsWith(\"wikg://lib/\")) {\n return archivePath;\n }\n\n return formatWikiGraphCommandUri(archivePath);\n}\n\nfunction formatArchiveInspectText(report: InspectReport): string {\n return (\n [\n \"Archive Inspect\",\n `URI: ${report.uri}`,\n `Scope: ${report.scope.type === \"archive\" ? \"archive\" : `chapter ${report.scope.chapterId}`}`,\n \"\",\n \"Content\",\n `Chapters: ${report.content.chapters.content} content / ${report.content.chapters.total} total`,\n `Planned chapters: ${report.content.chapters.planned}`,\n `Source words: ${report.content.sourceWords}`,\n `Summary words: ${report.content.summaryWords}`,\n \"\",\n \"FTS Index\",\n `Status: ${report.index.current ? \"current\" : \"missing or outdated\"}`,\n `Storage: ${report.index.storage === \"archive\" ? \"embedded in archive\" : \"local cache\"}`,\n `Query support: ${report.index.querySupport ? \"available\" : \"unavailable\"}`,\n ...(report.index.current\n ? []\n : [\n `Impact: ${report.index.impact}`,\n `Fix: ${report.index.fixCommand}`,\n `Resource: ${report.index.resource}`,\n ]),\n \"\",\n \"Coverage\",\n formatCoverageLine(\"Reading Graph\", report.coverage.readingGraph),\n formatCoverageLine(\"Knowledge Graph\", report.coverage.knowledgeGraph),\n formatCoverageLine(\"Summary\", report.coverage.summary),\n \"\",\n \"Retrieval Guidance\",\n ...report.retrievalGuidance,\n \"\",\n \"Improvements\",\n ...(report.improvements.length === 0\n ? [\"No immediate improvements recommended.\"]\n : [\n ...report.improvements.flatMap(formatInspectImprovement),\n \"\",\n ...formatInspectPerformanceHints(report.performanceHints),\n ...(report.performanceHints.length === 0 ? [] : [\"\"]),\n `Readiness details: ${report.help.readiness}`,\n ]),\n ].join(\"\\n\") + \"\\n\"\n );\n}\n\nasync function readInspectChapters(\n document: ReadonlyDocument,\n chapterId: number | undefined,\n): Promise<readonly InspectChapter[]> {\n const chapters =\n chapterId === undefined\n ? await listChapters(document)\n : (await listChapters(document)).filter(\n (chapter) => chapter.chapterId === chapterId,\n );\n\n if (chapterId !== undefined && chapters.length === 0) {\n throw new Error(`Chapter ${chapterId} does not exist.`);\n }\n\n return await Promise.all(\n chapters.map(async (chapter) => {\n const serial = await document.serials.getById(chapter.chapterId);\n\n return {\n ...chapter,\n knowledgeGraphReady: serial?.knowledgeGraphReady === true,\n readingGraphReady: serial?.topologyReady === true,\n summaryReady: chapter.stage === \"summarized\",\n };\n }),\n );\n}\n\nasync function readSummaryWords(\n document: ReadonlyDocument,\n chapterId: number | undefined,\n): Promise<number> {\n return await document.readDatabase(\n async (database) =>\n (await database.queryOne(\n `\n SELECT COALESCE(SUM(words_count), 0) AS words\n FROM text_sentence_records\n WHERE kind = 2\n ${chapterId === undefined ? \"\" : \"AND chapter_id = ?\"}\n `,\n chapterId === undefined ? undefined : [chapterId],\n (row) => Number(row.words),\n )) ?? 0,\n );\n}\n\nfunction createInspectCoverage(\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n): InspectCoverage {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n\n return {\n coveredChapters: covered.length,\n coveredWords,\n percent: formatPercent(coveredWords, totalWords),\n totalChapters: total.length,\n totalWords,\n };\n}\n\nfunction formatCoverageLine(label: string, coverage: InspectCoverage): string {\n if (coverage.totalChapters === 0 && coverage.totalWords === 0) {\n return `${label}: n/a, no source content`;\n }\n\n return `${label}: ${coverage.coveredChapters}/${coverage.totalChapters} chapters, ${coverage.coveredWords}/${coverage.totalWords} words, ${coverage.percent}`;\n}\n\nfunction formatRetrievalGuidance(input: {\n readonly contentChapters: readonly InspectChapter[];\n readonly ftsCurrent: boolean;\n readonly knowledgeGraphCovered: readonly InspectChapter[];\n readonly readingGraphCovered: readonly InspectChapter[];\n readonly sourceWords: number;\n}): readonly string[] {\n if (input.sourceWords === 0 || input.contentChapters.length === 0) {\n return [\n \"Source content: empty.\",\n \"Add source text before using query coverage or graph-based retrieval.\",\n ];\n }\n\n const lines = [\n `Query support: ${input.ftsCurrent ? \"available\" : \"unavailable until the searchable index is enabled\"}.`,\n ];\n\n lines.push(\n formatObjectSearchGuidance(\n \"Reading Graph object retrieval\",\n input.readingGraphCovered,\n input.contentChapters,\n ),\n );\n lines.push(\n formatObjectSearchGuidance(\n \"Entity/triple retrieval\",\n input.knowledgeGraphCovered,\n input.contentChapters,\n ),\n );\n\n return lines;\n}\n\nfunction formatObjectSearchGuidance(\n label: string,\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n): string {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n const ratio = totalWords === 0 ? 0 : coveredWords / totalWords;\n const coverage = formatPercent(coveredWords, totalWords);\n\n if (ratio >= 1) {\n return `${label}: covers all source content; it can represent the full scope for object retrieval.`;\n }\n if (ratio >= 0.9) {\n return `${label}: covers ${coverage}; use it as the main path, but source --query is needed for uncovered content.`;\n }\n if (ratio >= 0.5) {\n return `${label}: covers ${coverage}; use it as leads, not as a full-scope substitute for source --query.`;\n }\n\n return `${label}: covers ${coverage}; build missing graph coverage before relying on object retrieval.`;\n}\n\nfunction createInspectImprovements(input: {\n readonly archiveUri: string;\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly contentChapters: readonly InspectChapter[];\n readonly ftsCurrent: boolean;\n readonly knowledgeGraphCovered: readonly InspectChapter[];\n readonly planningModel: string;\n readonly readingGraphCovered: readonly InspectChapter[];\n readonly scopeUri: string;\n readonly summaryCovered: readonly InspectChapter[];\n}): readonly InspectImprovement[] {\n const improvements: InspectImprovement[] = [];\n\n if (!input.ftsCurrent) {\n improvements.push({\n command: formatCliCommand([`${input.archiveUri}/index`, \"enable\"]),\n recommendation:\n \"Enable the searchable FTS index so --query filtering is available for scopes, related results, and evidence.\",\n title: \"Enable searchable index\",\n });\n }\n\n if (input.contentChapters.length === 0) {\n improvements.push({\n command: formatCliCommand([\n `${input.archiveUri}/chapter`,\n \"add\",\n \"--input\",\n \"source.txt\",\n ]),\n recommendation:\n \"No source content is available yet; add or import source text before graph or summary generation.\",\n title: \"Add source content\",\n });\n return improvements;\n }\n\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.readingGraphCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"reading-graph\",\n title: \"Complete Reading Graph coverage\",\n total: input.contentChapters,\n }),\n );\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.knowledgeGraphCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"knowledge-graph\",\n title: \"Complete Knowledge Graph coverage\",\n total: input.contentChapters,\n }),\n );\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.summaryCovered,\n planningModel: input.planningModel,\n scopeUri: input.scopeUri,\n task: \"reading-summary\",\n title: \"Complete Summary coverage\",\n total: input.contentChapters,\n }),\n );\n\n return improvements;\n}\n\nfunction createGraphImprovement(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly covered: readonly InspectChapter[];\n readonly planningModel: string;\n readonly scopeUri: string;\n readonly task: \"knowledge-graph\" | \"reading-graph\" | \"reading-summary\";\n readonly title: string;\n readonly total: readonly InspectChapter[];\n}): readonly InspectImprovement[] {\n const coveredIds = new Set(input.covered.map((chapter) => chapter.chapterId));\n const missing = input.total.filter(\n (chapter) => !coveredIds.has(chapter.chapterId),\n );\n\n if (missing.length === 0) {\n return [];\n }\n\n const missingWords = sumWords(missing);\n\n return [\n {\n command: formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n input.scopeUri,\n \"--task\",\n input.task,\n \"--accept-cost\",\n ]),\n missingChapters: missing.length,\n missingWords,\n planning: planGenerationTask(\n input.task,\n missingWords,\n missing.length,\n input.concurrent,\n input.planningModel,\n ),\n recommendation: formatImprovementRecommendation(\n input.covered,\n input.total,\n missingWords,\n ),\n title: input.title,\n },\n ];\n}\n\nfunction formatImprovementRecommendation(\n covered: readonly InspectChapter[],\n total: readonly InspectChapter[],\n missingWords: number,\n): string {\n const totalWords = sumWords(total);\n const coveredWords = sumWords(covered);\n\n if (totalWords === 0) {\n return \"No source content is available.\";\n }\n if (\n total.length === 1 ||\n coveredWords / totalWords >= 0.9 ||\n missingWords <= 1000\n ) {\n return \"Queue the full scope to finish the remaining gap.\";\n }\n\n return \"Queue selected chapters first if only part of the scope matters.\";\n}\n\nfunction formatInspectImprovement(\n improvement: InspectImprovement,\n): readonly string[] {\n return [\n `${improvement.title}:`,\n ...(improvement.missingChapters === undefined\n ? []\n : [\n ` Missing: ${improvement.missingChapters} chapters / ${improvement.missingWords} words`,\n ]),\n ` Recommendation: ${improvement.recommendation}`,\n ...(improvement.planning === undefined\n ? [` Command: ${improvement.command}`]\n : [\n \" If completing this scope:\",\n ` Command: ${improvement.command}`,\n ` Model: ${improvement.planning.model}`,\n ` Tokens: ${improvement.planning.tokens.input} input / ${improvement.planning.tokens.cacheableInput} cacheable input / ${improvement.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(improvement.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(improvement.planning.timeSeconds.max)}`,\n ]),\n ];\n}\n\nfunction formatInspectPerformanceHints(\n hints: readonly GenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) {\n return [];\n }\n\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Current ${hint.kind}: ${hint.current}; suggested: ${hint.recommended}.`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n\nfunction sumWords(chapters: readonly Pick<InspectChapter, \"words\">[]): number {\n return chapters.reduce((total, chapter) => total + chapter.words, 0);\n}\n\nfunction formatPercent(numerator: number, denominator: number): string {\n if (denominator === 0) {\n return \"n/a\";\n }\n\n const percent = (numerator / denominator) * 100;\n\n return `${Number.isInteger(percent) ? percent.toFixed(0) : percent.toFixed(1)}%`;\n}\n","import {\n createContinuationCursor,\n type ContinuationCursor,\n} from \"wiki-graph-core\";\n\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function createOutputContinuationCursor(\n context: ArchiveOutputContext,\n cursor: string | null | undefined,\n): Promise<string | null> {\n if (cursor === null || cursor === undefined) {\n return null;\n }\n\n let input: ContinuationCursor;\n\n if (context.continuationKind === \"evidence\") {\n if (context.targetUri === undefined) {\n throw new Error(\"Evidence continuation cursors require a target URI.\");\n }\n\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n format: context.format,\n indexScope: context.indexScope,\n kind: \"evidence\",\n order: context.order ?? \"doc-asc\",\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n targetUri: context.targetUri,\n };\n } else if (context.continuationKind === \"related\") {\n if (context.targetUri === undefined) {\n throw new Error(\"Related continuation cursors require a target URI.\");\n }\n\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n indexScope: context.indexScope,\n kind: \"related\",\n order: context.order ?? \"doc-asc\",\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.role === undefined ? {} : { role: context.role }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n targetUri: context.targetUri,\n };\n } else if (context.continuationKind === \"collection\") {\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n chapters: context.chapters ?? null,\n cursor,\n ...(context.backlinks === undefined\n ? {}\n : { backlinks: context.backlinks }),\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n ids: context.ids ?? null,\n indexScope: context.indexScope,\n kind: \"collection\",\n order: context.order ?? \"doc-asc\",\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n ...(context.triplePattern === undefined\n ? {}\n : { triplePattern: context.triplePattern }),\n types: context.types,\n };\n } else {\n input = {\n archiveKey: context.archiveKey,\n archivePath: context.archivePath,\n cursor,\n ...(context.backlinks === undefined\n ? {}\n : { backlinks: context.backlinks }),\n ...(context.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: context.evidenceLimit }),\n format: context.format,\n indexScope: context.indexScope,\n kind: \"search\",\n ...(context.chapters === undefined ? {} : { chapters: context.chapters }),\n ...(context.query === undefined ? {} : { query: context.query }),\n ...(context.sourceContext === undefined\n ? {}\n : { sourceContext: context.sourceContext }),\n ...(context.triplePattern === undefined\n ? {}\n : { triplePattern: context.triplePattern }),\n types: context.types,\n };\n }\n\n return await createContinuationCursor(input);\n}\n","export function formatScoredLines(\n score: number | undefined,\n lines: readonly string[],\n): string[] {\n return score === undefined ? [...lines] : [`score: ${score}`, ...lines];\n}\n","import type { ArchiveOutputSource } from \"../object/types.js\";\n\nexport function formatSourceObject(source: ArchiveOutputSource): string {\n return formatSourceCitationBlock(source.uri, source.text);\n}\n\nexport function formatSourceCitationBlock(uri: string, text: string): string {\n return [`@@ ${uri} @@`, normalizeSourceText(text)].join(\"\\n\");\n}\n\nfunction normalizeSourceText(text: string): string {\n const lines = text.replace(/\\r\\n?/g, \"\\n\").split(\"\\n\");\n\n while (lines.length > 0 && lines[0]?.trim() === \"\") {\n lines.shift();\n }\n while (lines.length > 0 && lines.at(-1)?.trim() === \"\") {\n lines.pop();\n }\n\n const normalizedLines: string[] = [];\n let previousLineWasBlank = false;\n\n for (const line of lines) {\n if (line.trim() === \"\") {\n if (!previousLineWasBlank) {\n normalizedLines.push(\"\");\n }\n previousLineWasBlank = true;\n continue;\n }\n\n normalizedLines.push(line);\n previousLineWasBlank = false;\n }\n\n return normalizedLines.join(\"\\n\");\n}\n","import { type ArchiveEvidenceItem } from \"wiki-graph-core\";\nimport { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nimport type { ArchiveOutputEvidencePreview } from \"../object/types.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatSourceCitationBlock, formatSourceObject } from \"./source.js\";\n\nexport function formatEvidenceNextCursor(nextCursor: string | null): string {\n return nextCursor === null\n ? \"\"\n : `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatEvidenceItem(item: ArchiveEvidenceItem): string {\n return formatScoredLines(\n item.score,\n formatSourceCitationBlock(item.id, item.source).split(\"\\n\"),\n ).join(\"\\n\");\n}\n\nexport function formatEvidencePreviewBlocks(\n evidence: ArchiveOutputEvidencePreview,\n): string[] {\n if (evidence.sources.length === 0) {\n return [\"[none]\"];\n }\n\n const lines = evidence.sources.flatMap((item, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${evidence.shown}`,\n formatSourceObject(item),\n ]);\n const hiddenEvidenceCount = evidence.total - evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(evidence, hiddenEvidenceCount),\n );\n return lines;\n}\n\nexport function formatEvidencePreviewContinuation(\n evidence: ArchiveOutputEvidencePreview,\n hiddenEvidenceCount: number,\n): string[] {\n if (evidence.nextCursor !== null) {\n return [\n \"\",\n `${hiddenEvidenceCount} more evidence: ${CLI_PRIMARY_COMMAND} next ${evidence.nextCursor}`,\n ];\n }\n\n return hiddenEvidenceCount > 0\n ? [\"\", `${hiddenEvidenceCount} evidence more...`]\n : [];\n}\n","import type { ArchiveFindResult } from \"wiki-graph-core\";\nimport { CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\n\nexport function formatNextCursor(nextCursor: string | null): string {\n if (nextCursor === null) {\n return \"\";\n }\n\n return `\\n\\nNext page: ${CLI_PRIMARY_COMMAND} next ${nextCursor}`;\n}\n\nexport function formatNoMatches(result: ArchiveFindResult): string {\n if (result.match === \"all\" && result.terms.length > 1) {\n return `No matches. Try a more specific scope URI, for example: ${CLI_PRIMARY_COMMAND} <archive-uri>/chunk --query \"${result.query}\"${formatFindLensHint(result)}\\n`;\n }\n\n const lines = [\n \"No matches.\",\n \"Try fewer or broader keywords, or use --query on a scope URI such as `<archive-uri>/chapter`, `<archive-uri>/chunk`, `<archive-uri>/entity`, or `<archive-uri>/triple`.\",\n ];\n\n if (result.lensHint !== null) {\n lines.push(`Lens hint: ${result.lensHint.message}`);\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nexport function formatFindLensHint(result: ArchiveFindResult): string {\n if (result.lensHint === null) {\n return \"\";\n }\n\n return `\\n\\nLens hint: ${result.lensHint.message}`;\n}\n","export function isTextStreamOutputType(type: string | undefined): boolean {\n return type === \"source\" || type === \"summary\";\n}\n\nexport function getTextStreamOutputType(\n uri: string,\n): \"source\" | \"summary\" | undefined {\n const match = /^wikg:\\/\\/chapter\\/.+\\/(source|summary)(?:#.*)?$/u.exec(uri);\n\n return match?.[1] as \"source\" | \"summary\" | undefined;\n}\n\nexport function toWikiGraphUri(id: string): string {\n const [type, first, second] = id.split(\":\");\n\n switch (type) {\n case \"chapter\":\n return `wikg://chapter/${first ?? \"\"}`;\n case \"chapter-title\":\n return `wikg://chapter/${first ?? \"\"}/title`;\n case \"fragment\":\n return `wikg://chapter/${first ?? \"\"}/source/${second ?? \"0\"}`;\n case \"meta\":\n return \"wikg://\";\n case \"node\":\n return `wikg://chunk/${first ?? \"\"}`;\n case \"summary\":\n return `wikg://chapter/${first ?? \"\"}/summary`;\n default:\n return id;\n }\n}\n","import type { QueryIndexScope } from \"wiki-graph-core\";\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const PLAIN_OBJECT_KEY_PRIORITY = [\n \"uri\",\n \"title\",\n \"label\",\n \"labels\",\n \"state\",\n \"value\",\n \"authors\",\n \"publisher\",\n \"description\",\n] as const;\n\nexport interface ArchiveOutputObject {\n readonly archiveId?: number;\n readonly authors?: readonly string[];\n readonly backlinks?: ArchiveOutputBacklinks;\n readonly description?: string;\n readonly evidence?: ArchiveOutputEvidencePreview;\n readonly label?: string;\n readonly libraryArchiveUri?: string;\n readonly objectLabel?: string;\n readonly predicate?: string;\n readonly publisher?: string;\n readonly score?: number;\n readonly state?: Record<string, string>;\n readonly subjectLabel?: string;\n readonly sources?: readonly ArchiveOutputLibrarySource[];\n readonly text?: string;\n readonly title?: string;\n readonly type?: string;\n readonly uri: string;\n readonly value?: string;\n}\n\nexport interface ArchiveOutputLibrarySource {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n}\n\nexport interface ArchiveOutputBacklinks {\n readonly chunks: ArchiveOutputResultPage;\n readonly entities: ArchiveOutputResultPage;\n readonly triples: ArchiveOutputResultPage;\n}\n\nexport interface ArchiveOutputResultPage {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n}\n\nexport interface ArchiveOutputEvidencePreview {\n readonly nextCursor: string | null;\n readonly shown: number;\n readonly sources: readonly ArchiveOutputSource[];\n readonly total: number;\n}\n\nexport interface ArchiveOutputSource {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly score?: number;\n readonly text: string;\n readonly uri: string;\n}\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?: \"collection\" | \"evidence\" | \"related\" | \"search\";\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: \"doc-asc\" | \"doc-desc\";\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import { formatCLIJSON } from \"../../../support/index.js\";\nimport { PLAIN_OBJECT_KEY_PRIORITY } from \"../object/types.js\";\n\nexport function formatPlainObject(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n return Object.entries(value)\n .filter(([, item]) => item !== undefined && item !== null)\n .sort(([left], [right]) => comparePlainObjectKeys(left, right))\n .map(([key, item]) => `${key}: ${formatPlainValue(item)}`)\n .join(\"\\n\");\n}\n\nexport function formatStatePageText(value: unknown): string {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return String(value);\n }\n\n const object = value as {\n readonly state?: Record<string, string>;\n readonly uri?: string;\n readonly value?: string;\n };\n\n if (object.value !== undefined) {\n return `${object.uri ?? \"state\"} ${object.value}`;\n }\n\n if (object.state !== undefined) {\n return [object.uri, formatStateBlock(object.state)]\n .filter((line): line is string => line !== undefined && line !== \"\")\n .join(\"\\n\");\n }\n\n return formatPlainObject(value);\n}\n\nfunction formatStateBlock(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}: ${value}`)\n .join(\"\\n\");\n}\n\nexport function formatStateInline(state: Record<string, string>): string {\n return formatStateEntries(state)\n .map(([key, value]) => `${key}:${value}`)\n .join(\" \");\n}\n\nfunction formatStateEntries(\n state: Record<string, string>,\n): readonly (readonly [string, string])[] {\n const entries: readonly (readonly [string, string | undefined])[] = [\n [\"source\", state.source],\n [\"reading-graph\", state[\"reading-graph\"]],\n [\"reading-summary\", state[\"reading-summary\"]],\n [\"knowledge-graph\", state[\"knowledge-graph\"]],\n ];\n\n return entries.filter(\n (entry): entry is readonly [string, string] => entry[1] !== undefined,\n );\n}\n\nfunction comparePlainObjectKeys(left: string, right: string): number {\n return getPlainObjectKeyOrder(left) - getPlainObjectKeyOrder(right);\n}\n\nfunction getPlainObjectKeyOrder(key: string): number {\n const index = PLAIN_OBJECT_KEY_PRIORITY.indexOf(\n key as (typeof PLAIN_OBJECT_KEY_PRIORITY)[number],\n );\n\n return index < 0 ? PLAIN_OBJECT_KEY_PRIORITY.length : index;\n}\n\nfunction formatPlainValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\", \");\n }\n if (typeof value === \"object\" && value !== null) {\n return formatCLIJSON(value).trimEnd();\n }\n\n return String(value);\n}\n","import {\n formatWikiGraphCommandUri,\n parseLocatedWikiGraphUri,\n} from \"wiki-graph-core\";\n\nimport { formatCliCommand } from \"../../../support/index.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputObject,\n} from \"../object/types.js\";\nimport { getTextStreamOutputType } from \"../object/uri.js\";\nimport { formatEvidencePreviewContinuation } from \"./evidence.js\";\nimport { formatScoredLines } from \"./lines.js\";\nimport { formatPlainObject, formatStateInline } from \"./plain.js\";\nimport { formatSourceObject } from \"./source.js\";\n\nexport function formatFindObject(object: ArchiveOutputObject): string {\n const lines = formatScoredLines(\n object.score,\n formatObjectSummaryLines(object),\n );\n\n if (object.evidence !== undefined && object.evidence.sources.length > 0) {\n lines.push(\n \"\",\n ...object.evidence.sources.flatMap((source, index) => [\n ...(index === 0 ? [] : [\"\"]),\n `-- evidence ${index + 1}/${object.evidence?.shown ?? object.evidence?.sources.length}`,\n formatSourceObject(source),\n ]),\n );\n\n const hiddenEvidenceCount = object.evidence.total - object.evidence.shown;\n\n lines.push(\n ...formatEvidencePreviewContinuation(\n object.evidence,\n hiddenEvidenceCount,\n ),\n );\n }\n\n if (object.backlinks !== undefined) {\n lines.push(\"\", ...formatBacklinkLines(object.backlinks));\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function formatOpenShortUriHint(\n objects: readonly ArchiveOutputObject[],\n context: ArchiveOutputContext,\n): string {\n const shortObject = objects.find((object) => isShortOutputUri(object.uri));\n if (shortObject === undefined) {\n return \"\";\n }\n\n const locator = shortObject.libraryArchiveUri ?? context.archivePath;\n\n return `\\n\\nOpen short URIs with the archive locator, for example:\\n ${formatCliCommand([formatOpenShortUriCommand(locator, shortObject.uri)])}`;\n}\n\nfunction formatOpenShortUriCommand(locator: string, objectUri: string): string {\n if (locator.startsWith(\"wikg://lib/\")) {\n return `${locator.replace(/\\/+$/u, \"\")}/${objectUri.slice(\"wikg://\".length)}`;\n }\n\n return formatWikiGraphCommandUri(locator, objectUri);\n}\n\nfunction isShortOutputUri(uri: string): boolean {\n return (\n uri.startsWith(\"wikg://\") &&\n parseLocatedWikiGraphUri(uri).archivePath === undefined\n );\n}\n\nfunction formatBacklinkLines(backlinks: ArchiveOutputBacklinks): string[] {\n const lines = [\n ...backlinks.chunks.objects,\n ...backlinks.entities.objects,\n ...backlinks.triples.objects,\n ].flatMap((object, index) => [\n ...(index === 0 ? [] : [\"\"]),\n formatFindObject(object),\n ]);\n\n return lines.length === 0 ? [] : [\"Backlinks:\", \"\", ...lines];\n}\n\nfunction formatObjectSummaryLines(object: ArchiveOutputObject): string[] {\n const sourceLines = formatLibrarySourceLines(object);\n\n if (\n getTextStreamOutputType(object.uri) !== undefined &&\n object.text !== undefined\n ) {\n return [\n ...formatSourceObject({\n text: object.text,\n uri: object.uri,\n }).split(\"\\n\"),\n ...sourceLines,\n ];\n }\n\n if (object.predicate !== undefined) {\n return [object.uri, formatTripleObjectLabel(object), ...sourceLines];\n }\n\n if (isChapterStateListObject(object)) {\n return [\n [object.uri, object.title, formatStateInline(object.state)]\n .filter((part): part is string => part !== undefined && part !== \"\")\n .join(\" \"),\n ...sourceLines,\n ];\n }\n\n return [\n object.uri,\n object.title,\n object.label,\n object.state === undefined ? undefined : formatStateInline(object.state),\n object.evidence === undefined ? object.text : undefined,\n ...sourceLines,\n ].filter((line): line is string => line !== undefined && line !== \"\");\n}\n\nfunction formatLibrarySourceLines(object: ArchiveOutputObject): string[] {\n const sources =\n object.sources !== undefined && object.sources.length > 0\n ? object.sources\n : object.archiveId === undefined && object.libraryArchiveUri === undefined\n ? []\n : [\n {\n archiveId: object.archiveId,\n libraryArchiveUri: object.libraryArchiveUri,\n },\n ];\n\n return sources.map((source) =>\n [\n source.archiveId === undefined\n ? undefined\n : `archiveId:${source.archiveId}`,\n source.libraryArchiveUri,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\" \"),\n );\n}\n\nexport function getListObjectSeparator(\n objects: readonly ArchiveOutputObject[],\n): string {\n return objects.every(isChapterStateListObject) ? \"\\n\" : \"\\n\\n\";\n}\n\nfunction isChapterStateListObject(\n object: ArchiveOutputObject,\n): object is ArchiveOutputObject & {\n readonly state: Record<string, string>;\n} {\n return (\n object.state !== undefined &&\n object.uri.startsWith(\"wikg://chapter/\") &&\n !object.uri.includes(\"/state\")\n );\n}\n\nfunction formatTripleObjectLabel(object: ArchiveOutputObject): string {\n const triple = parseTripleOutputUri(object.uri);\n\n if (triple === undefined) {\n return `${object.subjectLabel ?? \"[subject]\"} ${object.predicate ?? \"[predicate]\"} ${object.objectLabel ?? \"[object]\"}`;\n }\n\n return `${object.subjectLabel ?? triple.subjectQid}(${triple.subjectQid}) ${object.predicate ?? triple.predicate} ${object.objectLabel ?? triple.objectQid}(${triple.objectQid})`;\n}\n\nfunction parseTripleOutputUri(uri: string):\n | {\n readonly objectQid: string;\n readonly predicate: string;\n readonly subjectQid: string;\n }\n | undefined {\n const match =\n /^wikg:\\/\\/triple\\/(Q[1-9][0-9]*)\\/([^/]+)\\/(Q[1-9][0-9]*)\\/?$/u.exec(uri);\n\n if (\n match?.[1] === undefined ||\n match[2] === undefined ||\n match[3] === undefined\n ) {\n return undefined;\n }\n\n return {\n objectQid: match[3],\n predicate: decodeURIComponent(match[2]),\n subjectQid: match[1],\n };\n}\n\nexport function formatChapterObjectText(object: ArchiveOutputObject): string {\n if (isChapterStateListObject(object)) {\n return formatObjectSummaryLines(object).join(\"\\n\");\n }\n\n return formatPlainObject(object);\n}\n","import type {\n ArchiveBacklinkBucket,\n ArchiveBacklinks,\n ArchiveEvidenceItem,\n ArchiveFindEvidencePreview,\n ArchiveFindHit,\n ArchiveListItem,\n ArchivePack,\n ArchivePage,\n} from \"wiki-graph-core\";\n\nimport { createOutputContinuationCursor } from \"./cursor.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputEvidencePreview,\n ArchiveOutputObject,\n ArchiveOutputResultPage,\n ArchiveOutputSource,\n} from \"./types.js\";\nimport {\n getTextStreamOutputType,\n isTextStreamOutputType,\n toWikiGraphUri,\n} from \"./uri.js\";\n\nexport async function createListObject(\n item: ArchiveListItem,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const librarySource = createLibrarySourceObject(item);\n\n if (item.type === \"triple\") {\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n objectLabel: item.objectLabel,\n predicate: item.predicate,\n ...(item.score === undefined ? {} : { score: item.score }),\n subjectLabel: item.subjectLabel,\n uri: toWikiGraphUri(item.id),\n };\n }\n\n return {\n ...librarySource,\n ...(context.evidenceLimit === undefined || item.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(item.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: toWikiGraphUri(item.id),\n }),\n }),\n label: item.label,\n ...(item.score === undefined ? {} : { score: item.score }),\n ...(isTextStreamOutputType(item.type)\n ? { text: item.summary }\n : { type: item.type }),\n uri: toWikiGraphUri(item.id),\n };\n}\n\nexport function createObjectResultPage(\n objects: readonly ArchiveOutputObject[],\n nextCursor: string | null,\n limit: number,\n): {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n} {\n return {\n limit,\n nextCursor,\n objects,\n };\n}\n\nexport async function createFindObject(\n hit: ArchiveFindHit,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputObject> {\n const uri = toWikiGraphUri(hit.id);\n const librarySource = createLibrarySourceObject(hit);\n\n if (hit.type === \"chapter\") {\n return {\n ...librarySource,\n ...(hit.state === undefined ? {} : { state: hit.state }),\n title: hit.title,\n uri,\n };\n }\n if (hit.type === \"chapter-title\") {\n return {\n ...librarySource,\n title: hit.title,\n type: \"chapter-title\",\n uri,\n };\n }\n if (hit.type === \"meta\") {\n return {\n ...librarySource,\n title: hit.title,\n uri,\n };\n }\n if (hit.type === \"triple\") {\n const triple = hit.triple;\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n objectLabel: triple?.objectLabel ?? \"\",\n predicate: triple?.predicate ?? \"\",\n subjectLabel: triple?.subjectLabel ?? \"\",\n uri,\n };\n }\n\n return {\n ...librarySource,\n ...(hit.backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(hit.backlinks, context) }),\n ...(context.evidenceLimit === undefined || hit.evidence === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(hit.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n }),\n label: hit.title,\n ...(isTextStreamOutputType(hit.type)\n ? { text: hit.snippet }\n : { type: hit.type === \"node\" ? \"chunk\" : hit.type }),\n uri,\n };\n}\n\nexport async function createEvidencePreviewObject(\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputEvidencePreview> {\n return {\n nextCursor: await createOutputContinuationCursor(\n {\n ...context,\n continuationKind: \"evidence\",\n },\n evidence.nextCursor,\n ),\n shown: evidence.shown,\n sources: evidence.sources.map(createSourceObject),\n total: evidence.total,\n };\n}\n\nexport function createSourceObject(\n item: ArchiveEvidenceItem,\n): ArchiveOutputSource {\n return {\n ...createLibrarySourceObject(item),\n ...(item.score === undefined ? {} : { score: item.score }),\n text: item.source,\n uri: item.id,\n };\n}\n\nasync function createBacklinksObject(\n backlinks: ArchiveBacklinks,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputBacklinks> {\n return {\n chunks: await createBacklinkBucketObject(backlinks.chunks, context),\n entities: await createBacklinkBucketObject(backlinks.entities, context),\n triples: await createBacklinkBucketObject(backlinks.triples, context),\n };\n}\n\nasync function createBacklinkBucketObject(\n bucket: ArchiveBacklinkBucket,\n context: ArchiveOutputContext,\n): Promise<ArchiveOutputResultPage> {\n const objects = await Promise.all(\n bucket.items.map(\n async (item) =>\n await createFindObject(item, {\n ...context,\n backlinks: false,\n }),\n ),\n );\n\n return createObjectResultPage(objects, bucket.nextCursor, bucket.limit);\n}\n\nexport async function createPageObject(\n page: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<unknown> {\n const librarySource = createLibrarySourceObject(page);\n\n switch (page.type) {\n case \"entity-wikipage\":\n return {\n ...librarySource,\n en: page.en,\n uri: page.id,\n zh: page.zh,\n };\n case \"entity\":\n return {\n ...librarySource,\n labels: page.labels.slice(0, 7),\n qid: page.qid,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"triple\":\n return {\n ...librarySource,\n label: page.label,\n ...(context.evidenceLimit === undefined\n ? {}\n : {\n evidence: await createEvidencePreviewObject(page.evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: page.id,\n }),\n }),\n uri: page.id,\n };\n case \"chapter\": {\n return {\n ...librarySource,\n state: page.state,\n title: page.title,\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"chapter-title\":\n return {\n ...librarySource,\n title: page.title,\n type: \"chapter-title\",\n uri: toWikiGraphUri(page.id),\n };\n case \"chapter-tree\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"fragment\": {\n const {\n backlinks,\n id: _id,\n nextFragmentId,\n previousFragmentId,\n ...rest\n } = page;\n const textStreamType = getTextStreamOutputType(page.id);\n\n if (textStreamType !== undefined) {\n return {\n ...librarySource,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n text: page.fragment.text,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n ...rest,\n ...(backlinks === undefined\n ? {}\n : { backlinks: await createBacklinksObject(backlinks, context) }),\n ...(nextFragmentId === undefined\n ? {}\n : { nextUri: toWikiGraphUri(nextFragmentId) }),\n ...(previousFragmentId === undefined\n ? {}\n : { previousUri: toWikiGraphUri(previousFragmentId) }),\n uri: toWikiGraphUri(page.id),\n };\n }\n case \"meta\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"state\": {\n if (\"state\" in page) {\n return {\n ...librarySource,\n ...page.state,\n uri: toWikiGraphUri(page.id),\n };\n }\n\n return {\n ...librarySource,\n uri: toWikiGraphUri(page.id),\n value: page.value,\n };\n }\n case \"node\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n case \"summary\": {\n const { id: _id, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: toWikiGraphUri(page.id) };\n }\n }\n}\n\nfunction createLibrarySourceObject(source: {\n readonly archiveId?: number;\n readonly libraryArchiveUri?: string;\n readonly sources?: readonly {\n readonly archiveId: number;\n readonly libraryArchiveUri: string;\n }[];\n}): Pick<ArchiveOutputObject, \"archiveId\" | \"libraryArchiveUri\" | \"sources\"> {\n return {\n ...(source.archiveId === undefined ? {} : { archiveId: source.archiveId }),\n ...(source.libraryArchiveUri === undefined\n ? {}\n : { libraryArchiveUri: source.libraryArchiveUri }),\n ...(source.sources === undefined ? {} : { sources: source.sources }),\n };\n}\n\nexport async function createPackObject(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n): Promise<{\n readonly anchor: unknown;\n readonly related: {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n };\n}> {\n const relatedObjects = await Promise.all(\n pack.related.map(async (item) => await createListObject(item, context)),\n );\n\n return {\n anchor: await createPageObject(pack.anchor, context),\n related: createObjectResultPage(\n relatedObjects,\n null,\n relatedObjects.length,\n ),\n };\n}\n","import {\n formatWikiGraphCommandUri,\n type ArchiveFindEvidencePreview,\n type ArchivePage,\n} from \"wiki-graph-core\";\n\nimport { formatCLIJSON, formatCliCommand } from \"../../../support/index.js\";\nimport {\n createEvidencePreviewObject,\n createPageObject,\n} from \"../object/objects.js\";\nimport type { ArchiveOutputContext } from \"../object/types.js\";\nimport { toWikiGraphUri } from \"../object/uri.js\";\nimport { formatEvidencePreviewBlocks } from \"./evidence.js\";\nimport { formatPlainObject } from \"./plain.js\";\n\nexport async function formatEvidenceBackedPageText(\n uri: string,\n label: string,\n evidence: ArchiveFindEvidencePreview,\n context: ArchiveOutputContext,\n): Promise<string> {\n if (context.evidenceLimit === undefined) {\n return [`${uri}`, label].join(\"\\n\");\n }\n\n return [\n `${uri}`,\n label,\n \"\",\n \"Evidence:\",\n ...formatEvidencePreviewBlocks(\n await createEvidencePreviewObject(evidence, {\n ...context,\n continuationKind: \"evidence\",\n targetUri: uri,\n }),\n ),\n ].join(\"\\n\");\n}\n\nexport function appendEntityNextSteps(\n text: string,\n uri: string,\n archivePath: string,\n): string {\n if (!isEntityOutputUri(uri)) {\n return text;\n }\n const entityUri = formatWikiGraphCommandUri(\n archivePath,\n uri.replace(/\\/$/u, \"\"),\n );\n\n return [\n text,\n \"\",\n \"Next:\",\n ` ${formatCliCommand([entityUri, \"evidence\"])}`,\n ` ${formatCliCommand([entityUri, \"related\"])}`,\n ` ${formatCliCommand([`${entityUri}/wikipage`])}`,\n ].join(\"\\n\");\n}\n\nfunction isEntityOutputUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*\\/?$/u.test(\n uri,\n );\n}\n\nexport function formatEntityWikipageText(\n page: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>,\n): string {\n return [\n page.id,\n \"\",\n ...formatEntityWikipageLocaleLines(\"zh\", page.zh),\n \"\",\n ...formatEntityWikipageLocaleLines(\"en\", page.en),\n ].join(\"\\n\");\n}\n\nfunction formatEntityWikipageLocaleLines(\n language: \"en\" | \"zh\",\n locale: Extract<ArchivePage, { readonly type: \"entity-wikipage\" }>[\n | \"en\"\n | \"zh\"],\n): readonly string[] {\n if (locale === null) {\n return [`${language}: [missing]`];\n }\n\n return [\n `${locale.title} ${locale.url}`,\n ...(locale.description === undefined ? [] : [locale.description]),\n ];\n}\n\nexport function formatNeighborLines(\n neighbors: Extract<ArchivePage, { readonly type: \"node\" }>[\"neighbors\"],\n): string[] {\n if (neighbors.length === 0) {\n return [\" [none]\"];\n }\n\n return neighbors.map((neighbor) => {\n const arrow = neighbor.direction === \"incoming\" ? \"<-\" : \"->\";\n\n return ` ${arrow} ${toWikiGraphUri(`node:${neighbor.node.id}`)} ${neighbor.node.label}`;\n });\n}\n\nexport function formatNodeLabels(\n nodes: readonly { readonly id: string; readonly title: string }[],\n): string[] {\n if (nodes.length === 0) {\n return [\" [none]\"];\n }\n\n return nodes.map((node) => ` ${node.id} ${node.title}`);\n}\n\nexport function formatSourceFragmentLines(\n fragments: Extract<ArchivePage, { readonly type: \"node\" }>[\"sourceFragments\"],\n): string[] {\n if (fragments.length === 0) {\n return [\" [none]\"];\n }\n\n return fragments.flatMap((fragment) => [\n ` ${fragment.id}${fragment.truncated ? \" [excerpt]\" : \"\"}`,\n ...fragment.text.split(\"\\n\").map((line) => ` ${line}`),\n ]);\n}\n\nexport function formatPosition(\n position:\n | {\n readonly chapter: number;\n readonly fragment?: number;\n }\n | undefined,\n): string {\n if (position === undefined) {\n return \"[unknown]\";\n }\n\n return [\n `chapter ${position.chapter}`,\n position.fragment === undefined\n ? undefined\n : `fragment ${position.fragment}`,\n ]\n .filter((part): part is string => part !== undefined)\n .join(\", \");\n}\n\nexport async function formatPackAnchor(\n anchor: ArchivePage,\n context: ArchiveOutputContext,\n): Promise<string> {\n switch (anchor.type) {\n case \"chapter-title\":\n case \"chapter\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"chapter-tree\":\n return `${anchor.id} ${anchor.title}\\n${formatCLIJSON(anchor.tree).trimEnd()}`;\n case \"fragment\":\n return `${anchor.id}\\n${anchor.fragment.text}`;\n case \"meta\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"state\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"node\":\n return [\n `${anchor.id} ${anchor.title}`,\n \"\",\n \"Generated Node Summary:\",\n anchor.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(anchor.sourceFragments),\n ].join(\"\\n\");\n case \"summary\":\n return `${anchor.id} ${anchor.title}\\n${anchor.content}`;\n case \"entity\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n case \"entity-wikipage\":\n return formatEntityWikipageText(anchor);\n case \"triple\":\n return await formatEvidenceBackedPageText(\n anchor.id,\n anchor.label,\n anchor.evidence,\n context,\n );\n }\n}\n\nexport function truncateToBudget(text: string, budget: number): string {\n if (text.length <= budget) {\n return text;\n }\n\n return `${text.slice(0, Math.max(0, budget - 20))}\\n[truncated]`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./lens.js\";\nexport * from \"./lines.js\";\nexport * from \"./object.js\";\nexport * from \"./page.js\";\nexport * from \"./plain.js\";\nexport * from \"./source.js\";\n","import {\n formatCLIJSONLine,\n writeTextToStdout,\n} from \"../../../support/index.js\";\n\nexport async function writeJSONL(items: readonly unknown[]): Promise<void> {\n await writeTextToStdout(\n items.map((item) => formatCLIJSONLine(item)).join(\"\") +\n (items.length === 0 ? \"\" : \"\"),\n );\n}\n","export function createPageCursorObject(nextCursor: string | null): {\n readonly nextCursor: string | null;\n readonly type: \"page\";\n} {\n return {\n nextCursor,\n type: \"page\",\n };\n}\n","import type { ArchiveEvidence } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { formatEvidenceItem, formatEvidenceNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport {\n createObjectResultPage,\n createSourceObject,\n} from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writeEvidence(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n evidence.nextCursor,\n );\n const objects = evidence.items.map(createSourceObject);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, evidence.limit),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...objects, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(\"No evidence.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}${formatEvidenceNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllEvidence(\n readPage: (cursor: string | undefined) => Promise<ArchiveEvidence>,\n initialCursor: string | undefined,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveEvidence[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeEvidenceWithoutContinuation(page, format);\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeEvidenceWithoutContinuation(mergeEvidencePages(pages), format);\n}\n\nexport async function writeEvidenceWithoutContinuation(\n evidence: ArchiveEvidence,\n format: ResultFormat,\n): Promise<void> {\n const objects = evidence.items.map(createSourceObject);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(createObjectResultPage(objects, null, evidence.limit)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL(objects);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(\"No evidence.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${evidence.items.map(formatEvidenceItem).join(\"\\n\\n\")}\\n`,\n );\n}\n\nfunction mergeEvidencePages(\n pages: readonly ArchiveEvidence[],\n): ArchiveEvidence {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no evidence pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveFindResult } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindLensHint,\n formatFindObject,\n formatNextCursor,\n formatNoMatches,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createFindObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writeFindHits(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(createObjectResultPage(objects, nextCursor, result.limit)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...objects, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(formatNoMatches(result));\n return;\n }\n\n await writeTextToStdout(\n `${objects\n .map((object) => formatFindObject(object))\n .join(\n getListObjectSeparator(objects),\n )}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}${formatFindLensHint(result)}\\n`,\n );\n}\n\nexport async function writeAllFindHits(\n readPage: (cursor: string | undefined) => Promise<ArchiveFindResult>,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveFindResult[] = [];\n let cursor: string | undefined;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeFindHitsWithoutContinuation(page, context, format);\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n const merged = mergeFindResultPages(pages);\n await writeFindHitsWithoutContinuation(merged, context, format);\n}\n\nexport async function writeFindHitsWithoutContinuation(\n result: ArchiveFindResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(createObjectResultPage(objects, null, result.limit)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL(objects);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(formatNoMatches(result));\n return;\n }\n\n await writeTextToStdout(\n `${objects\n .map((object) => formatFindObject(object))\n .join(getListObjectSeparator(objects))}${formatFindLensHint(result)}\\n`,\n );\n}\n\nfunction mergeFindResultPages(\n pages: readonly ArchiveFindResult[],\n): ArchiveFindResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no result pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchiveRelatedResult } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport {\n formatFindObject,\n formatNextCursor,\n formatOpenShortUriHint,\n getListObjectSeparator,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createObjectResultPage } from \"../object/objects.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writeList(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(createObjectResultPage(objects, nextCursor, result.limit)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...objects, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\"No objects.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${objects.map(formatFindObject).join(getListObjectSeparator(objects))}${formatOpenShortUriHint(objects, context)}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllRelatedItems(\n readPage: (cursor: string | undefined) => Promise<ArchiveRelatedResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveRelatedResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n\n if (format === \"jsonl\") {\n await writeListWithoutContinuation(page, context, format);\n } else {\n pages.push(page);\n }\n\n if (page.nextCursor === null) {\n break;\n }\n\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") {\n return;\n }\n\n await writeListWithoutContinuation(mergeRelatedPages(pages), context, format);\n}\n\nexport async function writeListWithoutContinuation(\n result: ArchiveRelatedResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(createObjectResultPage(objects, null, result.limit)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL(objects);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\"No objects.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${objects.map(formatFindObject).join(getListObjectSeparator(objects))}\\n`,\n );\n}\n\nfunction mergeRelatedPages(\n pages: readonly ArchiveRelatedResult[],\n): ArchiveRelatedResult {\n const [first] = pages;\n\n if (first === undefined) {\n throw new Error(\"Internal error: no related pages were loaded.\");\n }\n\n return {\n ...first,\n items: pages.flatMap((page) => page.items),\n limit: pages.reduce((total, page) => total + page.items.length, 0),\n nextCursor: null,\n };\n}\n","import type { ArchivePack } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n formatFindObject,\n formatPackAnchor,\n truncateToBudget,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createListObject, createPackObject } from \"../object/objects.js\";\nimport { DEFAULT_GET_EVIDENCE_LIMIT } from \"../object/types.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\n\nexport async function writePack(\n pack: ArchivePack,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const packContext =\n context.evidenceDisabled === true\n ? context\n : {\n ...context,\n evidenceLimit: context.evidenceLimit ?? DEFAULT_GET_EVIDENCE_LIMIT,\n };\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPackObject(pack, packContext)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPackObject(pack, packContext)]);\n return;\n }\n\n const lines = [\n `Pack Budget: ${pack.budget}`,\n \"\",\n \"# Anchor\",\n await formatPackAnchor(pack.anchor, packContext),\n \"\",\n \"# Related\",\n (\n await Promise.all(\n pack.related.map(async (item) =>\n formatFindObject(await createListObject(item, packContext)),\n ),\n )\n ).join(\"\\n\\n\"),\n ];\n\n await writeTextToStdout(\n `${truncateToBudget(lines.join(\"\\n\"), pack.budget)}\\n`,\n );\n}\n","import type { ArchivePage } from \"wiki-graph-core\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport {\n appendEntityNextSteps,\n formatChapterObjectText,\n formatEntityWikipageText,\n formatEvidenceBackedPageText,\n formatFindObject,\n formatNeighborLines,\n formatNodeLabels,\n formatPlainObject,\n formatPosition,\n formatSourceFragmentLines,\n formatStatePageText,\n} from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\nimport { createPageObject } from \"../object/objects.js\";\nimport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"../object/types.js\";\n\nexport async function writePage(\n page: ArchivePage,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(await createPageObject(page, context)),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([await createPageObject(page, context)]);\n return;\n }\n\n switch (page.type) {\n case \"chapter-title\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"chapter\":\n await writeTextToStdout(\n `${formatChapterObjectText(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n case \"meta\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"state\":\n await writeTextToStdout(\n `${formatStatePageText(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"fragment\":\n if (\n page.id.startsWith(\"wikg://\") &&\n !page.id.includes(\"#\") &&\n page.backlinks === undefined\n ) {\n await writeTextToStdout(`${page.fragment.text}\\n`);\n return;\n }\n if (page.id.startsWith(\"wikg://chapter/\")) {\n await writeTextToStdout(\n `${formatFindObject(\n (await createPageObject(page, context)) as ArchiveOutputObject,\n )}\\n`,\n );\n return;\n }\n await writeTextToStdout(\n [\n `${page.id}`,\n `Words: ${page.fragment.wordsCount}`,\n `Previous: ${page.previousFragmentId ?? \"[none]\"}`,\n `Next: ${page.nextFragmentId ?? \"[none]\"}`,\n \"\",\n page.fragment.text,\n \"\",\n \"Related Nodes:\",\n ...formatNodeLabels(page.nodes),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"node\":\n await writeTextToStdout(\n [\n `${page.id} ${page.title}`,\n `Chapter: ${page.position === undefined ? \"[unknown]\" : `chapter:${page.position.chapter}`}`,\n `Position: ${formatPosition(page.position)}`,\n \"\",\n \"Generated Node Summary:\",\n page.generatedNodeSummary,\n \"\",\n \"Source Fragments:\",\n ...formatSourceFragmentLines(page.sourceFragments),\n \"\",\n \"Outgoing Nodes:\",\n ...formatNeighborLines(page.outgoing),\n \"\",\n \"Incoming Nodes:\",\n ...formatNeighborLines(page.incoming),\n ].join(\"\\n\") + \"\\n\",\n );\n return;\n case \"summary\":\n await writeTextToStdout(`${page.id} ${page.title}\\n\\n${page.content}\\n`);\n return;\n case \"entity\":\n await writeTextToStdout(\n `${appendEntityNextSteps(\n await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n ),\n page.id,\n context.archivePath,\n )}\\n`,\n );\n return;\n case \"entity-wikipage\":\n await writeTextToStdout(`${formatEntityWikipageText(page)}\\n`);\n return;\n case \"triple\":\n await writeTextToStdout(\n `${await formatEvidenceBackedPageText(\n page.id,\n page.label,\n page.evidence,\n context,\n )}\\n`,\n );\n return;\n }\n}\n","export * from \"./evidence.js\";\nexport * from \"./find.js\";\nexport * from \"./list.js\";\nexport * from \"./pack.js\";\nexport * from \"./page.js\";\n","export * from \"./write/index.js\";\nexport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"./object/types.js\";\n","import {\n formatLocatedWikiGraphUri,\n parseWikiGraphLibraryUri,\n parseLocatedWikiGraphUri,\n requireLocatedObjectOrArchiveUri,\n resolveWikiGraphLibraryArchivePath,\n type ParsedWikiGraphLibraryUri,\n type QueryIndexScope,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport interface ArchiveRuntimeLocation {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly indexScope: QueryIndexScope;\n readonly libraryArchiveTarget?: ParsedWikiGraphLibraryUri;\n readonly libraryDirtyTarget?: ParsedWikiGraphLibraryUri;\n readonly locatedUri: string;\n}\n\nexport async function resolveArchiveRuntimeLocation(\n uriOrPath: string,\n): Promise<ArchiveRuntimeLocation> {\n if (!uriOrPath.startsWith(\"wikg://\")) {\n return {\n archiveKey: uriOrPath,\n archivePath: uriOrPath,\n indexScope: {\n archiveKey: uriOrPath,\n archivePath: uriOrPath,\n kind: \"archive-index\",\n },\n locatedUri: formatLocatedWikiGraphUri(uriOrPath),\n };\n }\n\n const parsed = parseLocatedWikiGraphUri(uriOrPath);\n const archiveLocator = parsed.archivePath ?? uriOrPath;\n const libraryArchiveTarget = archiveLocator.startsWith(\"wikg://lib/\")\n ? parseWikiGraphLibraryUri(archiveLocator)\n : undefined;\n const archivePath =\n libraryArchiveTarget?.kind === \"archive\"\n ? await resolveWikiGraphLibraryArchivePath(archiveLocator)\n : archiveLocator;\n\n return {\n archiveKey: archivePath,\n archivePath,\n indexScope: { archiveKey: archivePath, archivePath, kind: \"archive-index\" },\n ...(libraryArchiveTarget?.kind === \"archive\"\n ? {\n libraryArchiveTarget,\n libraryDirtyTarget: {\n isDefault: libraryArchiveTarget.isDefault,\n kind: \"scope\",\n ...(libraryArchiveTarget.publicId === undefined\n ? {}\n : { publicId: libraryArchiveTarget.publicId }),\n },\n }\n : {}),\n locatedUri: formatLocatedWikiGraphUri(archivePath, parsed.objectUri),\n };\n}\n\nexport async function resolveArchiveCommandRuntimeArguments(\n args: CLIArchiveArguments,\n): Promise<CLIArchiveArguments> {\n if (\n args.action === \"create\" ||\n args.action === \"export\" ||\n args.action === \"inspect\" ||\n args.action === \"next\"\n ) {\n return args;\n }\n if (!args.archivePath.startsWith(\"wikg://lib/\")) {\n return args;\n }\n\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n return {\n ...args,\n archivePath: location.locatedUri,\n ...(args.objectId === args.archivePath\n ? { objectId: location.locatedUri }\n : {}),\n };\n}\n\nexport function getArchivePath(uri: string): string {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return uri;\n }\n\n return requireLocatedObjectOrArchiveUri(uri).archivePath;\n}\n\nexport function getArchiveIndexScope(uri: string): QueryIndexScope {\n if (parseWikiGraphLibraryUri(uri)?.kind === \"scope\") {\n return { kind: \"library-index\", libraryId: -1 };\n }\n\n const archivePath = getArchivePath(uri);\n return { archiveKey: archivePath, archivePath, kind: \"archive-index\" };\n}\n\nexport function getObjectUri(uri: string): string {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== undefined\n ) {\n return libraryTarget.objectUri;\n }\n\n const parsed = requireLocatedObjectOrArchiveUri(uri);\n\n return parsed.objectUri ?? \"wikg://\";\n}\n\nexport function isArchiveRootGet(args: CLIArchiveArguments): boolean {\n return (\n args.objectId !== undefined &&\n requireLocatedObjectOrArchiveUri(args.objectId).objectUri === undefined\n );\n}\n\nexport function parseChapterScope(uri: string): number | undefined {\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)(?:\\/|$)/u.exec(uri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n","import {\n finalizeWikiGraphLibraryArchiveWrite,\n markWikiGraphLibraryIndexDirty,\n WikiGraphArchiveFile,\n type DirectoryDocument,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport { resolveArchiveRuntimeLocation } from \"./uri.js\";\n\nexport async function readArchiveDocument<T>(\n path: string,\n operation: (document: ReadonlyDocument) => Promise<T> | T,\n): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(path);\n await new WikiGraphArchiveFile(location.archivePath).readDocument(operation);\n}\n\nexport async function writeArchiveDocument<T>(\n path: string,\n operation: (document: DirectoryDocument) => Promise<T> | T,\n options: Parameters<WikiGraphArchiveFile[\"write\"]>[1] = {},\n): Promise<T> {\n const location = await resolveArchiveRuntimeLocation(path);\n const result = await new WikiGraphArchiveFile(location.archivePath).write(\n operation,\n options,\n );\n\n if (location.libraryDirtyTarget !== undefined) {\n if (location.libraryArchiveTarget !== undefined) {\n await finalizeWikiGraphLibraryArchiveWrite({\n target: location.libraryArchiveTarget,\n });\n }\n\n try {\n await markWikiGraphLibraryIndexDirty(location.libraryDirtyTarget);\n } catch (error) {\n reportLibraryDirtyMarkFailure(error);\n }\n }\n\n return result;\n}\n\nfunction reportLibraryDirtyMarkFailure(error: unknown): void {\n const message = error instanceof Error ? error.message : String(error);\n\n try {\n process.stderr.write(\n `Warning: failed to mark library index dirty after archive write: ${message}\\n`,\n );\n } catch {\n // The archive write already succeeded; diagnostics must not turn it into a\n // reported failure.\n }\n}\n","import type { ArchiveCollectionResult, QueryIndexScope } from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport type ResultFormat = \"json\" | \"jsonl\" | \"text\";\n\nexport const DEFAULT_OUTPUT_LIMIT = 20;\nexport const DEFAULT_GET_EVIDENCE_LIMIT = 3;\nexport const ALL_COLLECTION_OUTPUT_LIMIT = 1_000_000_000;\n\nexport interface ArchiveOutputContext {\n readonly archiveKey: string;\n readonly archivePath: string;\n readonly backlinks?: boolean;\n readonly chapters?: readonly number[];\n readonly continuationKind?: \"collection\" | \"evidence\" | \"related\" | \"search\";\n readonly evidenceDisabled?: boolean;\n readonly evidenceLimit?: number;\n readonly format: ResultFormat;\n readonly ids?: readonly string[];\n readonly indexScope: QueryIndexScope;\n readonly limit: number;\n readonly order?: ArchiveCollectionResult[\"order\"];\n readonly query?: string;\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly sourceContext?: number;\n readonly targetUri?: string;\n readonly triplePattern?: CLIArchiveArguments[\"triplePattern\"];\n readonly types: readonly string[] | null;\n}\n","import {\n parseLocatedWikiGraphUri,\n type ArchiveCollectionOptions,\n type ArchiveCollectionResult,\n type ArchiveFindOptions,\n type ArchiveFindResult,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport {\n DEFAULT_GET_EVIDENCE_LIMIT,\n DEFAULT_OUTPUT_LIMIT,\n type ArchiveOutputContext,\n} from \"./types.js\";\nimport {\n getArchiveIndexScope,\n getArchivePath,\n parseChapterScope,\n} from \"./uri.js\";\n\nexport function createFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveFindType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive search type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n archiveKey: getArchivePath(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createArchiveOutputContext(\n args: CLIArchiveArguments,\n options: {\n readonly continuationKind?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\";\n readonly targetUri?: string;\n } = {},\n): ArchiveOutputContext {\n return {\n archiveKey: getArchivePath(args.archivePath),\n archivePath: getArchivePath(args.archivePath),\n indexScope: getArchiveIndexScope(args.archivePath),\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(isEvidenceDisabled(args.evidenceLimit)\n ? { evidenceDisabled: true }\n : {}),\n ...(options.continuationKind === undefined\n ? {}\n : { continuationKind: options.continuationKind }),\n ...createOptionalEvidenceLimit(args),\n ...createOptionalSourceContext(args),\n format: args.format ?? \"text\",\n limit: args.limit ?? DEFAULT_OUTPUT_LIMIT,\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.action !== \"evidence\" &&\n args.action !== \"related\" &&\n args.action !== \"search\"\n ? {}\n : args.query === undefined\n ? {}\n : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(options.continuationKind === \"collection\"\n ? createScopeOptions(args)\n : {}),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(options.targetUri === undefined\n ? {}\n : { targetUri: options.targetUri }),\n types:\n args.kinds === undefined\n ? null\n : args.kinds\n .map((kind) => toArchiveFindType(kind))\n .filter(\n (type): type is NonNullable<typeof type> => type !== undefined,\n ),\n };\n}\n\nexport function getSingleObjectEvidenceLimit(\n args: CLIArchiveArguments,\n objectUri: string,\n): number | undefined {\n if (isEvidenceDisabled(args.evidenceLimit)) {\n return undefined;\n }\n\n if (args.evidenceLimit !== undefined) {\n return args.evidenceLimit;\n }\n\n return isEvidenceBackedObjectUri(objectUri)\n ? DEFAULT_GET_EVIDENCE_LIMIT\n : undefined;\n}\n\nfunction isEvidenceDisabled(evidenceLimit: number | undefined): boolean {\n return evidenceLimit === 0;\n}\n\nexport function createOptionalEvidenceLimit(args: CLIArchiveArguments): {\n readonly evidenceLimit?: number;\n} {\n if (\n args.evidenceLimit === undefined ||\n isEvidenceDisabled(args.evidenceLimit)\n ) {\n return {};\n }\n\n return { evidenceLimit: args.evidenceLimit };\n}\n\nexport function createOptionalSourceContext(args: CLIArchiveArguments): {\n readonly sourceContext?: number;\n} {\n return args.context === undefined ? {} : { sourceContext: args.context };\n}\n\nfunction isEvidenceBackedObjectUri(uri: string): boolean {\n return /^wikg:\\/\\/(?:(?:chapter\\/[1-9][0-9]*\\/)?entity\\/Q[1-9][0-9]*|(?:chapter\\/[1-9][0-9]*\\/)?triple\\/Q[1-9][0-9]*\\/[^/]+\\/Q[1-9][0-9]*)\\/?$/u.test(\n uri,\n );\n}\n\nexport function createCollectionOptions(\n args: CLIArchiveArguments,\n): ArchiveCollectionOptions {\n const types = args.kinds?.map((kind) => {\n const type = toArchiveCollectionType(kind);\n\n if (type === undefined) {\n throw new Error(`Unsupported archive list type: ${kind}`);\n }\n\n return type;\n });\n\n return {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...createScopeOptions(args),\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...createOptionalSourceContext(args),\n ...(args.triplePattern === undefined\n ? {}\n : { triplePattern: args.triplePattern }),\n ...(types === undefined ? {} : { types }),\n };\n}\n\nexport function createCollectionFindResult(\n collection: ArchiveCollectionResult,\n): ArchiveFindResult {\n return {\n chapters: collection.chapters,\n items: collection.items,\n lens: \"typed\",\n lensHint: null,\n limit: collection.limit,\n match: \"any\",\n nextCursor: collection.nextCursor,\n order: collection.order,\n query: \"\",\n terms: [],\n types: null,\n };\n}\n\nexport function createScopeOptions(\n args: Pick<CLIArchiveArguments, \"archivePath\" | \"chapters\">,\n): {\n readonly chapters?: readonly number[];\n} {\n if (args.chapters !== undefined) {\n return { chapters: args.chapters };\n }\n\n const objectUri = parseLocatedWikiGraphUri(args.archivePath).objectUri;\n\n if (objectUri === undefined) {\n return {};\n }\n\n const chapterId = parseChapterScope(objectUri);\n\n return chapterId === undefined ? {} : { chapters: [chapterId] };\n}\n\nfunction toArchiveFindType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveFindOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"triple\":\n return \"triple\";\n }\n}\n\nfunction toArchiveCollectionType(\n kind: NonNullable<CLIArchiveArguments[\"kinds\"]>[number],\n): NonNullable<ArchiveCollectionOptions[\"types\"]>[number] | undefined {\n switch (kind) {\n case \"chapter\":\n return \"chapter-title\";\n case \"chunk\":\n return \"node\";\n case \"entity\":\n return \"entity\";\n case \"meta\":\n return \"meta\";\n case \"source\":\n return \"source\";\n case \"summary\":\n return \"summary\";\n case \"triple\":\n return \"triple\";\n }\n}\n","import {\n findArchiveObjects,\n findWikiGraphLibraryObjects,\n listArchiveCollection,\n listArchiveEvidence,\n listRelatedWikiGraphLibraryObjects,\n listWikiGraphLibraryEvidence,\n listWikiGraphLibraryObjects,\n listRelatedArchiveObjects,\n readContinuationCursor,\n resolveWikiGraphLibraryQueryTargetById,\n type ArchiveCollectionOptions,\n type ArchiveFindOptions,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport {\n writeEvidence,\n writeFindHits,\n writeList,\n} from \"../../archive-output/index.js\";\nimport { readArchiveDocument } from \"./document.js\";\nimport { createCollectionFindResult } from \"./options.js\";\nimport { DEFAULT_OUTPUT_LIMIT } from \"./types.js\";\nimport { resolveArchiveRuntimeLocation } from \"./uri.js\";\n\nexport async function runNextArchivePage(\n args: CLIArchiveArguments,\n): Promise<void> {\n const cursorId = args.cursor ?? args.archivePath;\n const explicitArchivePath =\n args.cursor === undefined ? undefined : args.archivePath;\n const cursor = await readContinuationCursor(cursorId);\n\n if (explicitArchivePath !== undefined) {\n const { archivePath } =\n await resolveArchiveRuntimeLocation(explicitArchivePath);\n const cursorArchivePath = getCursorArchivePath(cursor);\n\n if (archivePath !== cursorArchivePath) {\n throw new Error(\n `Continuation cursor ${cursorId} belongs to ${cursorArchivePath}, not ${archivePath}.`,\n );\n }\n }\n\n if (cursor.indexScope?.kind === \"library-index\") {\n await runNextLibraryIndexPage(args, cursor);\n return;\n }\n\n await readArchiveDocument(getCursorArchivePath(cursor), async (document) => {\n const format = args.format ?? cursor.format;\n const limit = args.limit ?? DEFAULT_OUTPUT_LIMIT;\n\n switch (cursor.kind) {\n case \"collection\": {\n const collectionOptions: ArchiveCollectionOptions = {\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(collectionOptions, {\n types: cursor.types as ArchiveCollectionOptions[\"types\"],\n });\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listArchiveCollection(document, collectionOptions),\n ),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n continuationKind: \"collection\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n types: cursor.types,\n },\n format,\n );\n return;\n }\n case \"search\": {\n const findOptions: ArchiveFindOptions = {\n archiveKey: cursor.archiveKey,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(findOptions, {\n types: cursor.types as ArchiveFindOptions[\"types\"],\n });\n }\n\n await writeFindHits(\n await findArchiveObjects(document, cursor.query ?? \"\", findOptions),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n limit,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n types: cursor.types,\n },\n format,\n );\n return;\n }\n case \"evidence\":\n await writeEvidence(\n await listArchiveEvidence(document, cursor.targetUri, {\n cursor: cursor.cursor,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: \"evidence\",\n format,\n indexScope: cursor.indexScope,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n targetUri: cursor.targetUri,\n types: null,\n },\n format,\n );\n return;\n case \"related\":\n await writeList(\n await listRelatedArchiveObjects(document, cursor.targetUri, {\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: \"related\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n format,\n indexScope: cursor.indexScope,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n targetUri: cursor.targetUri,\n types: null,\n },\n format,\n );\n return;\n }\n });\n}\n\nasync function runNextLibraryIndexPage(\n args: CLIArchiveArguments,\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n): Promise<void> {\n if (cursor.indexScope.kind !== \"library-index\") {\n throw new Error(\"Internal error: expected a library index cursor.\");\n }\n\n const target = await resolveWikiGraphLibraryQueryTargetById(\n cursor.indexScope.libraryId,\n );\n const format = args.format ?? cursor.format;\n const limit = args.limit ?? DEFAULT_OUTPUT_LIMIT;\n\n switch (cursor.kind) {\n case \"collection\": {\n const collectionOptions: ArchiveCollectionOptions = {\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n limit,\n order: cursor.order,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(collectionOptions, {\n types: cursor.types as ArchiveCollectionOptions[\"types\"],\n });\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, collectionOptions),\n ),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"collection\",\n },\n format,\n );\n return;\n }\n case \"search\": {\n const findOptions: ArchiveFindOptions = {\n archiveKey: cursor.archiveKey,\n ...(cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }),\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n };\n\n if (cursor.types !== null) {\n Object.assign(findOptions, {\n types: cursor.types as ArchiveFindOptions[\"types\"],\n });\n }\n\n await writeFindHits(\n await findWikiGraphLibraryObjects(\n target,\n cursor.query ?? \"\",\n findOptions,\n ),\n createCursorOutputContext(cursor, format, limit),\n format,\n );\n return;\n }\n case \"evidence\":\n await writeEvidence(\n await listWikiGraphLibraryEvidence(target, cursor.targetUri, {\n cursor: cursor.cursor,\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"evidence\",\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n targetUri: cursor.targetUri,\n },\n format,\n );\n return;\n case \"related\":\n await writeList(\n await listRelatedWikiGraphLibraryObjects(target, cursor.targetUri, {\n cursor: cursor.cursor,\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n limit,\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n ...(cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }),\n }),\n {\n ...createCursorOutputContext(cursor, format, limit),\n continuationKind: \"related\",\n ...(cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }),\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.role === undefined ? {} : { role: cursor.role }),\n targetUri: cursor.targetUri,\n },\n format,\n );\n return;\n }\n}\n\nfunction createCursorOutputContext(\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n format: \"json\" | \"jsonl\" | \"text\",\n limit: number,\n) {\n return {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n format,\n indexScope: cursor.indexScope,\n limit,\n types:\n cursor.kind === \"evidence\" || cursor.kind === \"related\"\n ? null\n : cursor.types,\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }\n : {}),\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.evidenceLimit === undefined\n ? {}\n : { evidenceLimit: cursor.evidenceLimit }\n : {}),\n ...(cursor.kind === \"search\" || cursor.kind === \"collection\"\n ? cursor.sourceContext === undefined\n ? {}\n : { sourceContext: cursor.sourceContext }\n : {}),\n ...(cursor.kind === \"search\"\n ? cursor.query === undefined\n ? {}\n : { query: cursor.query }\n : {}),\n };\n}\n\nfunction getCursorArchivePath(\n cursor: Awaited<ReturnType<typeof readContinuationCursor>>,\n): string {\n if (cursor.indexScope === undefined) {\n return cursor.archivePath;\n }\n if (cursor.indexScope.kind === \"archive-index\") {\n return cursor.indexScope.archivePath;\n }\n return cursor.archivePath;\n}\n","import { formatLocatedWikiGraphUri } from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { getArchivePath } from \"./uri.js\";\n\nexport async function writeArchiveRoot(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archivePath = getArchivePath(args.objectId!);\n\n if (args.format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({ uri: formatLocatedWikiGraphUri(archivePath) }),\n );\n return;\n }\n\n await writeTextToStdout(\"<archive>\\n\");\n}\n","export * from \"./document.js\";\nexport * from \"./next.js\";\nexport * from \"./options.js\";\nexport * from \"./root.js\";\nexport * from \"./types.js\";\nexport * from \"./uri.js\";\n","import {\n listChapters,\n parseLocatedWikiGraphUri,\n resolveChapterPathReadonly,\n type ChapterEntry,\n type ReadonlyDocument,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\n\nexport interface ChapterScopeResolution {\n readonly chapterIds: readonly number[];\n readonly entries: readonly ChapterEntry[];\n}\n\nexport async function resolveArchiveChapterScope(\n document: ReadonlyDocument,\n args: Pick<CLIArchiveArguments, \"archivePath\" | \"depth\">,\n): Promise<ChapterScopeResolution | undefined> {\n const objectUri = parseLocatedWikiGraphUri(args.archivePath).objectUri;\n\n if (objectUri === undefined) {\n return undefined;\n }\n\n const scope = parseChapterScopePath(objectUri);\n if (scope === undefined) {\n return undefined;\n }\n if (scope.kind === \"collection\" && args.depth === undefined) {\n return undefined;\n }\n\n const chapters = await listChapters(document);\n const entries =\n scope.kind === \"collection\"\n ? selectRootChapterScope(chapters, args.depth)\n : selectChapterSubtreeScope(\n chapters,\n await resolveChapterPathReadonly(document, scope.chapterPath),\n args.depth,\n );\n\n return {\n chapterIds: entries.map((entry) => entry.chapterId),\n entries,\n };\n}\n\nfunction parseChapterScopePath(\n objectUri: string,\n):\n | { readonly kind: \"collection\" }\n | { readonly chapterPath: string; readonly kind: \"chapter\" }\n | undefined {\n if (objectUri === \"wikg://chapter\" || objectUri === \"wikg://chapter/\") {\n return { kind: \"collection\" };\n }\n\n const match = /^wikg:\\/\\/chapter\\/([^/].*?)(?:\\/)?$/u.exec(objectUri);\n if (match?.[1] === undefined) {\n return undefined;\n }\n\n return { chapterPath: decodeURIComponent(match[1]), kind: \"chapter\" };\n}\n\nexport function selectRootChapterScope(\n chapters: readonly ChapterEntry[],\n depth: number | undefined,\n): readonly ChapterEntry[] {\n return depth === undefined\n ? chapters\n : chapters.filter((chapter) => chapter.depth <= depth);\n}\n\nexport function selectChapterSubtreeScope(\n chapters: readonly ChapterEntry[],\n rootChapterId: number,\n depth: number | undefined,\n): readonly ChapterEntry[] {\n const root = chapters.find((chapter) => chapter.chapterId === rootChapterId);\n if (root === undefined) {\n throw new Error(`Chapter ${rootChapterId} does not exist.`);\n }\n\n const prefix = `${root.path}/`;\n return chapters.filter((chapter) => {\n if (chapter.chapterId === root.chapterId) {\n return true;\n }\n if (!chapter.path.startsWith(prefix)) {\n return false;\n }\n return depth === undefined || chapter.depth - root.depth <= depth;\n });\n}\n","import {\n listArchiveCollection,\n listArchiveEvidence,\n listRelatedArchiveObjects,\n findWikiGraphLibraryObjects,\n listRelatedWikiGraphLibraryObjects,\n listWikiGraphLibraryEvidence,\n listWikiGraphLibraryObjects,\n packArchiveContext,\n packWikiGraphLibraryContext,\n parseWikiGraphLibraryUri,\n readArchivePage,\n readWikiGraphLibraryPage,\n resolveWikiGraphLibrary,\n findArchiveObjects,\n type ArchiveRelatedResult,\n} from \"wiki-graph-core\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { runConvertCommand } from \"../convert.js\";\nimport { createArchive } from \"./create.js\";\nimport { writeArchiveInspectReport } from \"./inspect.js\";\nimport {\n writeAllEvidence,\n writeAllFindHits,\n writeAllRelatedItems,\n writeEvidence,\n writeFindHits,\n writeFindHitsWithoutContinuation,\n writeList,\n writePack,\n writePage,\n} from \"../archive-output/index.js\";\nimport {\n ALL_COLLECTION_OUTPUT_LIMIT,\n createArchiveOutputContext,\n createCollectionFindResult,\n createCollectionOptions,\n createFindOptions,\n createOptionalEvidenceLimit,\n createOptionalSourceContext,\n getArchivePath,\n getObjectUri,\n getSingleObjectEvidenceLimit,\n isArchiveRootGet,\n readArchiveDocument,\n resolveArchiveCommandRuntimeArguments,\n resolveArchiveRuntimeLocation,\n runNextArchivePage,\n writeArchiveRoot,\n} from \"./run/index.js\";\nimport { resolveArchiveChapterScope } from \"./run/scope.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const libraryTarget = parseWikiGraphLibraryUri(args.archivePath);\n if (\n libraryTarget?.kind === \"scope\" &&\n libraryTarget.objectUri !== \"wikg://index\" &&\n (libraryTarget.objectUri !== undefined ||\n args.action === \"search\" ||\n args.action === \"list\")\n ) {\n await runLibraryIndexArchiveCommand(args, libraryTarget);\n return;\n }\n\n args = await resolveArchiveCommandRuntimeArguments(args);\n\n switch (args.action) {\n case \"create\":\n await createArchive(args);\n return;\n case \"export\":\n if (args.outputFormat === undefined) {\n throw new Error(\"Internal error: missing export output format.\");\n }\n await runConvertCommand({\n help: false,\n inputFormat: \"wikg\",\n inputPath: args.archivePath,\n ...(args.outputPath === undefined\n ? {}\n : { outputPath: args.outputPath }),\n outputFormat: args.outputFormat,\n verbose: false,\n });\n return;\n case \"inspect\":\n await readArchiveDocument(\n (await resolveArchiveRuntimeLocation(args.archivePath)).archivePath,\n async (document) => {\n await writeArchiveInspectReport(document, args);\n },\n );\n return;\n case \"search\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const scope = await resolveArchiveChapterScope(document, args);\n const scopedArgs =\n scope === undefined\n ? args\n : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs);\n\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await findArchiveObjects(document, scopedArgs.query!, {\n ...createFindOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await findArchiveObjects(\n document,\n scopedArgs.query!,\n createFindOptions(scopedArgs),\n ),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"list\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const scope = await resolveArchiveChapterScope(document, args);\n const scopedArgs =\n scope === undefined\n ? args\n : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs, {\n continuationKind: \"collection\",\n });\n\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await listArchiveCollection(document, {\n ...createCollectionOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await listArchiveCollection(document, {\n ...createCollectionOptions(scopedArgs),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listArchiveCollection(\n document,\n createCollectionOptions(scopedArgs),\n ),\n ),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"get\":\n if (isArchiveRootGet(args)) {\n await writeArchiveRoot(args);\n return;\n }\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const objectUri = getObjectUri(args.objectId!);\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n const outputContext =\n evidenceLimit === undefined\n ? createArchiveOutputContext(args)\n : createArchiveOutputContext({ ...args, evidenceLimit });\n\n await writePage(\n await readArchivePage(document, objectUri, {\n ...(args.backlinks === undefined\n ? {}\n : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n outputContext,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"related\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"related\",\n targetUri: getObjectUri(args.objectId!),\n });\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await listRelatedArchiveObjects(\n document,\n getObjectUri(args.objectId!),\n {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...createOptionalSourceContext(args),\n },\n );\n\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeList(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"evidence\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"evidence\",\n targetUri: getObjectUri(args.objectId!),\n });\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await listArchiveEvidence(\n document,\n getObjectUri(args.objectId!),\n {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...createOptionalSourceContext(args),\n },\n ),\n args.cursor,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await listArchiveEvidence(document, getObjectUri(args.objectId!), {\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...createOptionalSourceContext(args),\n }),\n context,\n args.format ?? \"text\",\n );\n },\n );\n return;\n case \"next\":\n await runNextArchivePage(args);\n return;\n case \"pack\":\n await readArchiveDocument(\n getArchivePath(args.archivePath),\n async (document) => {\n await writePack(\n await packArchiveContext(\n document,\n getObjectUri(args.objectId!),\n args.budget ?? 5000,\n ),\n createArchiveOutputContext(args),\n args.format ?? \"text\",\n );\n },\n );\n return;\n }\n}\n\nasync function runLibraryIndexArchiveCommand(\n args: CLIArchiveArguments,\n target: NonNullable<ReturnType<typeof parseWikiGraphLibraryUri>>,\n): Promise<void> {\n const library = await resolveWikiGraphLibrary(target);\n const objectUri =\n target.objectUri === undefined && args.objectId === undefined\n ? \"wikg://\"\n : getObjectUri(args.objectId ?? args.archivePath);\n const context = {\n ...createArchiveOutputContext(args),\n archiveKey: args.archivePath,\n archivePath: args.archivePath,\n indexScope: { kind: \"library-index\" as const, libraryId: library.id },\n };\n\n switch (args.action) {\n case \"search\":\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await findWikiGraphLibraryObjects(target, args.query!, {\n ...createFindOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await findWikiGraphLibraryObjects(\n target,\n args.query!,\n createFindOptions(args),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n case \"list\": {\n const listContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n await listWikiGraphLibraryObjects(\n target,\n createCollectionOptions(args),\n ),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"get\": {\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n await writePage(\n await readWikiGraphLibraryPage(target, objectUri, {\n ...(args.backlinks === undefined\n ? {}\n : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceLimit === undefined ? context : { ...context, evidenceLimit },\n args.format ?? \"text\",\n );\n return;\n }\n case \"related\": {\n const relatedContext = {\n ...context,\n continuationKind: \"related\" as const,\n targetUri: objectUri,\n };\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await listRelatedWikiGraphLibraryObjects(target, objectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...createOptionalEvidenceLimit(args),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...createOptionalSourceContext(args),\n });\n\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeList(\n await readPage(args.cursor),\n relatedContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"evidence\": {\n const evidenceContext = {\n ...context,\n continuationKind: \"evidence\" as const,\n targetUri: objectUri,\n };\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await listWikiGraphLibraryEvidence(target, objectUri, {\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...createOptionalSourceContext(args),\n }),\n args.cursor,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await listWikiGraphLibraryEvidence(target, objectUri, {\n ...(args.cursor === undefined ? {} : { cursor: args.cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...(args.query === undefined ? {} : { query: args.query }),\n ...createOptionalSourceContext(args),\n }),\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"pack\":\n await writePack(\n await packWikiGraphLibraryContext(\n target,\n objectUri,\n args.budget ?? 5000,\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n case \"create\":\n case \"export\":\n case \"inspect\":\n case \"next\":\n throw new Error(\n `The library index scope does not support \\`${args.action}\\`.`,\n );\n }\n}\n","import { readFile } from \"fs/promises\";\nimport { Readable } from \"stream\";\n\nimport type { DirectoryDocument } from \"wiki-graph-core\";\nimport {\n addChapter,\n applyChapterTree,\n assertNoActiveBuildJobConflicts,\n assertNoActiveBuildJobs,\n getChapterTree,\n listChapters,\n moveChapter,\n parseChapterTreeInput,\n removeChapter,\n resetChapter,\n resolveChapterPath,\n setChapterSource,\n setChapterSummary,\n setChapterTitle,\n type ChapterTree,\n type ChapterTreeApplyResult,\n type ChapterDetails,\n type ChapterEntry,\n} from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIArchiveChapterArguments } from \"../../args/index.js\";\nimport type { RenderTreeNode } from \"../../support/index.js\";\nimport {\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { readArchiveDocument, writeArchiveDocument } from \"./run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n switch (args.action) {\n case \"add\":\n await runEditableCommand(args.path, async (document) => {\n const parentChapterId = await resolveOptionalChapterPath(\n document,\n args.parentChapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archivePath: args.path,\n operation: \"Adding chapter\",\n scope: { kind: \"archive\" },\n });\n let details = await addChapter(document, {\n ...(parentChapterId === undefined ? {} : { parentChapterId }),\n ...(args.title === undefined ? {} : { title: args.title }),\n });\n\n if (args.inputPath !== undefined) {\n details = await setChapterSource(\n document,\n details.chapterId,\n Readable.from([await readRequiredSourceText(args)]),\n );\n }\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"list\":\n await readArchiveDocument(args.path, async (document) => {\n await writeChapterList(\n await listChapters(document),\n args.json ?? false,\n );\n });\n return;\n case \"move\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n const afterChapterId = await resolveOptionalChapterPath(\n document,\n args.afterChapterPath,\n );\n const beforeChapterId = await resolveOptionalChapterPath(\n document,\n args.beforeChapterPath,\n );\n const parentChapterId = await resolveOptionalChapterPath(\n document,\n args.parentChapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archivePath: args.path,\n operation: \"Moving chapter\",\n scope: { kind: \"archive\" },\n });\n const details = await moveChapter(document, chapterId, {\n ...(afterChapterId === undefined\n ? {}\n : { afterChapterId: afterChapterId }),\n ...(beforeChapterId === undefined\n ? {}\n : { beforeChapterId: beforeChapterId }),\n ...(args.first === undefined ? {} : { first: args.first }),\n ...(args.last === undefined ? {} : { last: args.last }),\n ...(args.moveToRoot === undefined ? {} : { root: args.moveToRoot }),\n ...(parentChapterId === undefined ? {} : { parentChapterId }),\n });\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"remove\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobConflicts({\n archivePath: args.path,\n operation: \"Removing chapter\",\n scope: { kind: \"archive\" },\n });\n await removeChapter(document, chapterId, {\n recursive: args.recursive ?? false,\n });\n if (args.json === true) {\n await writeTextToStdout(\n formatCLIJSON({\n removed: true,\n uri: `wikg://chapter/${args.chapterPath}`,\n }),\n );\n return;\n }\n await writeTextToStdout(\n `Removed chapter wikg://chapter/${args.chapterPath}.\\n`,\n );\n });\n return;\n case \"reset\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertResetAllowed(args.path, chapterId, args.resetStage!);\n const details = await resetChapter(\n document,\n chapterId,\n args.resetStage!,\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-source\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archivePath: args.path,\n chapterIds: [chapterId],\n operation: \"Setting chapter source\",\n });\n const details = await setChapterSource(\n document,\n chapterId,\n Readable.from([await readRequiredSourceText(args)]),\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-summary\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archivePath: args.path,\n chapterIds: [chapterId],\n operation: \"Setting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n const details = await setChapterSummary(\n document,\n chapterId,\n await readContentText(args),\n );\n\n await writeChapterDetails(details, args.json ?? false);\n });\n return;\n case \"set-title\":\n await runEditableCommand(args.path, async (document) => {\n const chapterId = await resolveRequiredChapterPath(\n document,\n args.chapterPath,\n );\n await assertNoActiveBuildJobs({\n archivePath: args.path,\n chapterIds: [chapterId],\n operation: \"Setting chapter title\",\n });\n const details = await setChapterTitle(\n document,\n chapterId,\n args.clearTitle === true ? null : args.title,\n );\n\n await writeChapterDetails(details, false);\n });\n return;\n case \"tree\":\n if (args.treeAction === \"apply\") {\n await runEditableCommand(\n args.path,\n async (document) => {\n if (args.dryRun !== true) {\n await assertNoActiveBuildJobConflicts({\n archivePath: args.path,\n operation: \"Changing chapter tree\",\n scope: { kind: \"archive\" },\n });\n }\n await writeChapterTreeApplyResult(\n await applyChapterTree(\n document,\n parseChapterTreeInput(JSON.parse(await readContentText(args))),\n { dryRun: args.dryRun ?? false },\n ),\n args.dryRun ?? false,\n );\n },\n { markLibraryDirty: args.dryRun !== true },\n );\n return;\n }\n\n await readArchiveDocument(args.path, async (document) => {\n await writeChapterTree(\n await getChapterTree(document),\n args.json ?? false,\n );\n });\n return;\n }\n}\n\nasync function resolveRequiredChapterPath(\n document: DirectoryDocument,\n chapterPath: string | undefined,\n): Promise<number> {\n if (chapterPath === undefined) {\n throw new Error(\"Missing chapter path.\");\n }\n return await resolveChapterPath(document, chapterPath);\n}\n\nasync function resolveOptionalChapterPath(\n document: DirectoryDocument,\n chapterPath: string | undefined,\n): Promise<number | undefined> {\n return chapterPath === undefined\n ? undefined\n : await resolveChapterPath(document, chapterPath);\n}\n\nasync function runEditableCommand(\n path: string,\n operation: (document: DirectoryDocument) => Promise<void> | void,\n options: { readonly markLibraryDirty?: boolean } = {},\n): Promise<void> {\n if (options.markLibraryDirty === false) {\n const location = await resolveArchiveRuntimeLocation(path);\n await new WikiGraphArchiveFile(location.archivePath).write(operation);\n return;\n }\n\n await writeArchiveDocument(path, operation);\n}\n\nasync function readContentText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n if (args.inputValue !== undefined && args.inputPath !== undefined) {\n throw new Error(\"Choose either a positional value or --input, not both.\");\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a positional value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nasync function readRequiredSourceText(\n args: Pick<CLIArchiveChapterArguments, \"inputPath\" | \"inputValue\">,\n): Promise<string> {\n const content = await readContentText(args);\n\n if (content.trim() === \"\") {\n throw new Error(\n \"Source input is empty. Pass non-empty text with --input <path> or --input -.\",\n );\n }\n\n return content;\n}\n\nasync function writeChapterDetails(\n details: ChapterDetails,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n childCount: details.childCount,\n graphReady: details.graphReady,\n hasSummary: details.hasSummary,\n sourceUnits: details.fragmentCount,\n stage: formatStage(details.stage),\n title: details.title,\n uri: details.uri,\n }),\n );\n return;\n }\n\n const lines = [\n `Chapter: ${details.uri}`,\n `Title: ${details.title ?? \"[untitled]\"}`,\n `Stage: ${formatStage(details.stage)}`,\n `Source Units: ${details.fragmentCount}`,\n `Children: ${details.childCount}`,\n `Graph: ${details.graphReady ? \"yes\" : \"no\"}`,\n `Summary: ${details.hasSummary ? \"yes\" : \"no\"}`,\n ];\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nasync function writeChapterList(\n entries: readonly ChapterEntry[],\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n chapters: entries.map((entry) => ({\n uri: entry.uri,\n title: entry.title,\n stage: formatStage(entry.stage),\n })),\n }),\n );\n return;\n }\n\n if (entries.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${entries\n .map(\n (entry) =>\n `${\" \".repeat(entry.depth)}[${formatStage(entry.stage)}] ${entry.title ?? \"[untitled]\"} (${entry.uri})`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nasync function writeChapterTree(\n tree: ChapterTree,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(tree));\n return;\n }\n\n if (tree.chapters.length === 0) {\n await writeTextToStdout(\"No chapters.\\n\");\n return;\n }\n\n await writeTextToStdout(\n renderTreeText(tree.chapters.map(formatChapterTreeRenderNode)),\n );\n}\n\nfunction formatChapterTreeRenderNode(\n node: ChapterTree[\"chapters\"][number],\n): RenderTreeNode {\n return {\n children: node.children.map(formatChapterTreeRenderNode),\n label: `${formatChapterTreeTitle(node.title)} (${formatChapterTreeKey(node.uri)})`,\n };\n}\n\nfunction formatChapterTreeKey(uri: string): string {\n return uri.split(\"/\").at(-1) ?? uri;\n}\n\nfunction formatChapterTreeTitle(title: string | null): string {\n return title ?? \"[untitled]\";\n}\n\nasync function writeChapterTreeApplyResult(\n result: ChapterTreeApplyResult,\n dryRun: boolean,\n): Promise<void> {\n const lines = [\n dryRun ? \"Dry run: chapter tree not changed.\" : \"Applied chapter tree.\",\n `Changed: ${result.changed ? \"yes\" : \"no\"}`,\n `Moved: ${result.moved.length}`,\n `Renamed: ${result.renamed.length}`,\n `Unchanged: ${result.unchanged}`,\n ];\n\n for (const move of result.moved) {\n lines.push(\n `Move ${move.oldUri} [index ${move.oldIndex}] -> ${move.newUri} [index ${move.newIndex}]`,\n );\n }\n for (const rename of result.renamed) {\n lines.push(\n `Rename ${rename.uri}: ${formatTitle(rename.oldTitle)} -> ${formatTitle(rename.newTitle)}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatTitle(title: string | null): string {\n return title === null ? \"null\" : JSON.stringify(title);\n}\n\nfunction formatStage(stage: ChapterEntry[\"stage\"]): string {\n switch (stage) {\n case \"planned\":\n return \"planned\";\n case \"sourced\":\n return \"source\";\n case \"graphed\":\n return \"reading-graph\";\n case \"summarized\":\n return \"reading-summary\";\n }\n}\n\nasync function assertResetAllowed(\n archivePath: string,\n chapterId: number,\n stage: NonNullable<CLIArchiveChapterArguments[\"resetStage\"]>,\n): Promise<void> {\n switch (stage) {\n case \"planned\":\n await assertNoActiveBuildJobs({\n archivePath,\n chapterIds: [chapterId],\n operation: \"Resetting chapter to planned\",\n });\n return;\n case \"sourced\":\n await assertNoActiveBuildJobs({\n archivePath,\n chapterIds: [chapterId],\n operation: \"Resetting chapter graph\",\n requiresTarget: \"reading-graph\",\n });\n await assertNoActiveBuildJobs({\n archivePath,\n chapterIds: [chapterId],\n operation: \"Resetting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n return;\n case \"graphed\":\n await assertNoActiveBuildJobs({\n archivePath,\n chapterIds: [chapterId],\n operation: \"Resetting chapter summary\",\n requiresTarget: \"reading-summary\",\n });\n return;\n }\n}\n","import {\n deleteArchiveSearchSessions,\n isArchiveSearchIndexCurrent,\n rebuildArchiveSearchIndex,\n} from \"wiki-graph-core\";\nimport { readArchiveIndexSettings, setFtsIndexEmbedded } from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIArchiveIndexArguments } from \"../../args/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../../runtime/index.js\";\nimport { writeArchiveDocument } from \"./run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n switch (args.action) {\n case \"get\":\n await readIndexSettings(args);\n return;\n case \"enable\":\n await enableIndex(args);\n return;\n case \"embed\":\n await embedIndex(args);\n return;\n case \"external\":\n await externalizeIndex(args);\n return;\n case \"disable\":\n await disableIndex(args);\n return;\n }\n}\n\nasync function readIndexSettings(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n await new WikiGraphArchiveFile(location.archivePath).readDocument(\n async (document) => {\n const settings = await readArchiveIndexSettings(document);\n\n await writeIndexOutput(args, {\n ftsEmbedded: settings.ftsEmbedded,\n ftsCurrent: await isArchiveSearchIndexCurrent(document),\n });\n },\n );\n}\n\nasync function enableIndex(args: CLIArchiveIndexArguments): Promise<void> {\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await writeArchiveDocument(\n args.archivePath,\n async (document) => {\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"index enable started\\nsteps: checking -> collecting -> clearing -> indexing-text -> indexing-objects -> finalizing\",\n });\n await writer.write({\n json: { phase: \"checking\", type: \"status_snapshot\" },\n kind: \"status\",\n phase: \"checking\",\n });\n\n if (await isArchiveSearchIndexCurrent(document)) {\n await writer.write({\n json: { type: \"already-current\" },\n kind: \"lifecycle\",\n text: \"already current\",\n });\n } else {\n await rebuildArchiveSearchIndex(document, async (event) => {\n await writer.write({\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n json: {\n counters:\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)],\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n });\n }\n\n await writer.write({\n json: { type: \"completed\" },\n kind: \"lifecycle\",\n text: \"index enabled\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n },\n {\n searchIndexWritebackPolicy: await readSearchIndexWritebackPolicy(\n args.archivePath,\n ),\n },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nasync function embedIndex(args: CLIArchiveIndexArguments): Promise<void> {\n let built = false;\n\n await writeArchiveDocument(\n args.archivePath,\n async (document) => {\n await setFtsIndexEmbedded(document, true);\n if (await isArchiveSearchIndexCurrent(document)) {\n await document.writeSearchIndexDatabase(async (database) => {\n await database.run(\n \"UPDATE search_index_state SET value = value WHERE key = 'version'\",\n );\n });\n } else {\n await rebuildArchiveSearchIndex(document);\n built = true;\n }\n await writeIndexOutput(args, {\n built,\n ftsEmbedded: true,\n ftsCurrent: await isArchiveSearchIndexCurrent(document),\n });\n },\n { searchIndexWritebackPolicy: \"archive\" },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nasync function externalizeIndex(args: CLIArchiveIndexArguments): Promise<void> {\n await writeArchiveDocument(\n args.archivePath,\n async (document) => {\n await setFtsIndexEmbedded(document, false);\n await document.deleteSearchIndexDatabase();\n await writeIndexOutput(args, {\n ftsEmbedded: false,\n ftsCurrent: false,\n });\n },\n { searchIndexWritebackPolicy: \"archive\" },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nasync function disableIndex(args: CLIArchiveIndexArguments): Promise<void> {\n await writeArchiveDocument(\n args.archivePath,\n async (document) => {\n await document.deleteSearchIndexDatabase();\n const settings = await readArchiveIndexSettings(document);\n\n await writeIndexOutput(args, {\n ftsEmbedded: settings.ftsEmbedded,\n ftsCurrent: false,\n });\n },\n {\n searchIndexWritebackPolicy: await readSearchIndexWritebackPolicy(\n args.archivePath,\n ),\n },\n );\n await deleteArchiveSearchSessions(args.archivePath);\n}\n\nasync function readSearchIndexWritebackPolicy(\n archivePath: string,\n): Promise<\"archive\" | \"cache\"> {\n let embedded = false;\n const location = await resolveArchiveRuntimeLocation(archivePath);\n\n await new WikiGraphArchiveFile(location.archivePath).readDocument(\n async (document) => {\n embedded = (await readArchiveIndexSettings(document)).ftsEmbedded;\n },\n );\n\n return embedded ? \"archive\" : \"cache\";\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\";\n}): ProgressCounter {\n return {\n done: input.done ?? 0,\n name: formatIndexCounterName(input.unit),\n total: input.total ?? 0,\n unit: formatIndexUnit(input.unit),\n };\n}\n\nfunction formatIndexCounterName(\n unit: \"chapter\" | \"object\" | \"sentence\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case undefined:\n return \"items\";\n }\n}\n\nfunction formatIndexUnit(\n unit: \"chapter\" | \"object\" | \"sentence\" | undefined,\n): string {\n switch (unit) {\n case \"chapter\":\n return \"chapters\";\n case \"object\":\n return \"objects\";\n case \"sentence\":\n return \"sentences\";\n case undefined:\n return \"items\";\n }\n}\n\nasync function writeIndexOutput(\n args: CLIArchiveIndexArguments,\n payload: {\n readonly built?: boolean;\n readonly ftsCurrent: boolean;\n readonly ftsEmbedded: boolean;\n },\n): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(payload));\n return;\n }\n\n await writeTextToStdout(\n [\n `FTS embedded: ${payload.ftsEmbedded ? \"yes\" : \"no\"}`,\n `FTS current: ${payload.ftsCurrent ? \"yes\" : \"no\"}`,\n ...(payload.built === undefined\n ? []\n : [`Built: ${payload.built ? \"yes\" : \"no\"}`]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n","import { WikiGraph } from \"wiki-graph-core\";\nimport type { BookMeta } from \"wiki-graph-core\";\n\nimport type {\n ArchiveMetaPatch,\n CLIArchiveCoverArguments,\n CLIArchiveMetadataArguments,\n} from \"../../args/index.js\";\nimport { writeBinaryToStdout, writeTextToStdout } from \"../../support/index.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { writeArchiveDocument } from \"./run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./run/uri.js\";\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n if (args.metaPatch !== undefined) {\n await updateArchiveMeta(args.inputPath, args.metaPatch);\n return;\n }\n\n const app = new WikiGraph({});\n const location = await resolveArchiveRuntimeLocation(args.inputPath);\n await app.openSession(location.archivePath, async (digest) => {\n await writeArchiveMeta(await digest.readMeta(), {\n json: args.json ?? false,\n });\n });\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const app = new WikiGraph({});\n const location = await resolveArchiveRuntimeLocation(args.inputPath);\n await app.openSession(location.archivePath, async (digest) => {\n if (process.stdout.isTTY === true) {\n throw new Error(\n \"Refusing to write binary cover data to an interactive terminal. Redirect stdout or pipe it.\",\n );\n }\n\n const cover = await digest.readCover();\n\n if (cover === undefined) {\n throw new Error(\"Document cover is missing.\");\n }\n\n await writeBinaryToStdout(cover.data);\n });\n}\n\nasync function updateArchiveMeta(\n path: string,\n patch: ArchiveMetaPatch,\n): Promise<void> {\n await writeArchiveDocument(path, async (document) => {\n const meta = await document.readBookMeta();\n\n if (meta === undefined) {\n throw new Error(\"Archive metadata is missing.\");\n }\n\n const updatedMeta = applyArchiveMetaPatch(meta, patch);\n\n await document.replaceBookMeta(updatedMeta);\n await writeArchiveMeta(updatedMeta, { json: false });\n });\n}\n\nasync function writeArchiveMeta(\n meta: BookMeta | undefined,\n options: { readonly json: boolean },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatMetaJSON(meta)));\n return;\n }\n\n if (meta === undefined) {\n await writeTextToStdout(\"No document metadata is available.\\n\");\n return;\n }\n\n const lines: string[] = [];\n\n appendMetaLines(lines, meta);\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction applyArchiveMetaPatch(\n meta: BookMeta,\n patch: ArchiveMetaPatch,\n): BookMeta {\n return {\n ...meta,\n title: patch.clearTitle === true ? null : (patch.title ?? meta.title),\n authors:\n patch.clearAuthors === true\n ? []\n : patch.authors === undefined\n ? meta.authors\n : [...patch.authors],\n language:\n patch.clearLanguage === true ? null : (patch.language ?? meta.language),\n identifier:\n patch.clearIdentifier === true\n ? null\n : (patch.identifier ?? meta.identifier),\n publisher:\n patch.clearPublisher === true\n ? null\n : (patch.publisher ?? meta.publisher),\n publishedAt:\n patch.clearPublishedAt === true\n ? null\n : (patch.publishedAt ?? meta.publishedAt),\n description:\n patch.clearDescription === true\n ? null\n : (patch.description ?? meta.description),\n };\n}\n\nfunction appendMetaLines(lines: string[], meta: BookMeta | undefined): void {\n lines.push(`Source Format: ${meta?.sourceFormat ?? \"[none]\"}`);\n lines.push(`Title: ${meta?.title ?? \"[none]\"}`);\n lines.push(\n `Authors: ${\n meta?.authors.length === undefined || meta.authors.length === 0\n ? \"[none]\"\n : meta.authors.join(\", \")\n }`,\n );\n lines.push(`Language: ${meta?.language ?? \"[none]\"}`);\n lines.push(`Identifier: ${meta?.identifier ?? \"[none]\"}`);\n lines.push(`Publisher: ${meta?.publisher ?? \"[none]\"}`);\n lines.push(`Published At: ${meta?.publishedAt ?? \"[none]\"}`);\n lines.push(`Description: ${meta?.description ?? \"[none]\"}`);\n}\n\nfunction formatMetaJSON(meta: BookMeta | undefined): object {\n return {\n authors: meta?.authors ?? [],\n description: meta?.description ?? null,\n identifier: meta?.identifier ?? null,\n language: meta?.language ?? null,\n publishedAt: meta?.publishedAt ?? null,\n publisher: meta?.publisher ?? null,\n sourceFormat: meta?.sourceFormat ?? null,\n title: meta?.title ?? null,\n };\n}\n","import { spawn } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nimport {\n getCLICwd,\n getCLIDevProjectRoot,\n getCLIEnv,\n getCLIStateDir,\n} from \"./context.js\";\n\nexport type InternalChildKind = \"gc-worker\" | \"queue-worker\";\n\nexport interface InternalChildSpawnOptions {\n readonly args?: readonly string[];\n readonly detached?: boolean;\n}\n\ndeclare global {\n var __WIKIGRAPH_CLI_DIST_DIR__: string | undefined;\n}\n\nexport function spawnInternalChild(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): ReturnType<typeof spawn> {\n const command = createInternalChildCommand(kind, options.args ?? []);\n\n return spawn(command.command, command.args, {\n cwd: getCLICwd(),\n detached: options.detached === true,\n env: getCLIEnv(),\n stdio: options.detached === true ? \"ignore\" : [\"ignore\", \"pipe\", \"pipe\"],\n });\n}\n\nexport async function runInternalChildJSON<T>(\n kind: InternalChildKind,\n options: InternalChildSpawnOptions = {},\n): Promise<T> {\n const child = spawnInternalChild(kind, options);\n const stdout: Buffer[] = [];\n const stderr: Buffer[] = [];\n\n child.stdout?.on(\"data\", (chunk: Buffer) => stdout.push(chunk));\n child.stderr?.on(\"data\", (chunk: Buffer) => stderr.push(chunk));\n\n await new Promise<void>((resolvePromise, reject) => {\n child.on(\"error\", reject);\n child.on(\"close\", (code) => {\n if (code !== 0) {\n reject(\n new Error(\n `Internal ${kind} failed with exit code ${code}: ${Buffer.concat(stderr).toString(\"utf8\").trim()}`,\n ),\n );\n return;\n }\n resolvePromise();\n });\n });\n\n try {\n return JSON.parse(Buffer.concat(stdout).toString(\"utf8\")) as T;\n } catch (error) {\n throw new Error(\n `Internal ${kind} returned invalid JSON: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nexport function createInternalChildCommandForTesting(\n kind: InternalChildKind,\n args: readonly string[] = [],\n): { readonly args: readonly string[]; readonly command: string } {\n return createInternalChildCommand(kind, args);\n}\n\nfunction createInternalChildCommand(\n kind: InternalChildKind,\n args: readonly string[],\n): { readonly args: readonly string[]; readonly command: string } {\n const devProjectRoot = getCLIDevProjectRoot();\n const stateDir = getCLIStateDir();\n\n if (devProjectRoot !== undefined && stateDir !== undefined) {\n return {\n args: [\n join(devProjectRoot, \"node_modules\", \"tsx\", \"dist\", \"cli.mjs\"),\n join(devProjectRoot, \"packages\", \"cli\", \"src\", \"bin\", `${kind}.ts`),\n \"--wikigraph-internal-child\",\n kind,\n \"--wikigraph-state-dir\",\n stateDir,\n ...args,\n ],\n command: process.execPath,\n };\n }\n\n return {\n args: [\n resolveProductionEntryPath(kind),\n \"--wikigraph-internal-child\",\n kind,\n ...(stateDir === undefined ? [] : [\"--wikigraph-state-dir\", stateDir]),\n ...args,\n ],\n command: process.execPath,\n };\n}\n\nfunction resolveProductionEntryPath(kind: InternalChildKind): string {\n const filename = `${kind}.js`;\n const distDirPath =\n globalThis.__WIKIGRAPH_CLI_DIST_DIR__ ??\n resolve(getCLICwd(), \"packages\", \"cli\", \"dist\");\n const adjacent = join(distDirPath, filename);\n\n if (existsSync(adjacent)) {\n return adjacent;\n }\n\n return adjacent;\n}\n","import type { GcRunReport } from \"wiki-graph-core/gc\";\n\nimport type { CLIGcArguments } from \"../args/index.js\";\nimport { runInternalChildJSON } from \"../runtime/internal-child.js\";\nimport { writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const report = await runInternalChildJSON<GcRunReport>(\"gc-worker\", {\n args: [\n ...(args.dryRun === true ? [\"--dry-run\"] : []),\n ...(args.force === true ? [\"--force\"] : []),\n ],\n });\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(report));\n return;\n }\n\n if (report.skipped) {\n await writeTextToStdout(\"GC skipped: another GC run is active.\\n\");\n return;\n }\n\n await writeTextToStdout(\n [\n `GC completed.`,\n `Scanned: ${report.scanned}`,\n `Removed: ${report.removed}`,\n `Freed: ${formatBytes(report.freedBytes)}`,\n ...report.jobs.map((job) =>\n job.error === undefined\n ? `- ${job.name}: scanned ${job.scanned}, removed ${job.removed}, freed ${formatBytes(job.freedBytes)}`\n : `- ${job.name}: failed: ${job.error}`,\n ),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n if (bytes < 1024 * 1024 * 1024) {\n return `${(bytes / 1024 / 1024).toFixed(1)} MB`;\n }\n\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)} GB`;\n}\n","import type { CLILegacyArguments } from \"../args/index.js\";\nimport { upgradeWikiGraphMaintenanceTarget } from \"wiki-graph-core\";\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n switch (args.action) {\n case \"migrate\": {\n process.stderr.write(\n \"`wg legacy migrate` is deprecated. Use `wg maintenance upgrade <sdpub-path>`.\\n\",\n );\n const result = await upgradeWikiGraphMaintenanceTarget(args.inputPath, {\n ...(args.outputPath === undefined\n ? {}\n : { outputPath: args.outputPath }),\n });\n\n if (result.kind !== \"sdpub\") {\n throw new Error(\"Legacy migrate only supports sdpub inputs.\");\n }\n\n process.stdout.write(`Wrote ${result.outputPath}\\n`);\n return;\n }\n }\n}\n","import {\n upgradeWikiGraphMaintenanceTarget,\n type WikiGraphMaintenanceUpgradeResult,\n} from \"wiki-graph-core\";\n\nimport type { CLIMaintenanceArguments } from \"../args/index.js\";\nimport { formatCLIJSON, writeTextToStdout } from \"../support/index.js\";\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n switch (args.action) {\n case \"upgrade\": {\n const result = await upgradeWikiGraphMaintenanceTarget(args.target, {\n ...(args.outputPath === undefined\n ? {}\n : { outputPath: args.outputPath }),\n });\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(result)\n : formatMaintenanceUpgradeResult(result),\n );\n return;\n }\n }\n}\n\nfunction formatMaintenanceUpgradeResult(\n result: WikiGraphMaintenanceUpgradeResult,\n): string {\n switch (result.kind) {\n case \"home\":\n return `Home ${result.status}: ${result.path} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"archive\":\n return `Archive ${result.status}: ${result.path} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"sdpub\":\n return `Wrote ${result.outputPath}\\n`;\n case \"lib\": {\n const lines = [\n `Library ${result.status}: ${result.library.uri}`,\n `upgraded: ${result.upgraded.length}`,\n `already current: ${result.skipped.length}`,\n ];\n if (result.failed !== undefined) {\n lines.push(`failed: ${result.failed.uri} (${result.failed.message})`);\n }\n return `${lines.join(\"\\n\")}\\n`;\n }\n }\n}\n","import { Writable } from \"stream\";\nimport { createInterface } from \"readline/promises\";\n\nimport { generateText } from \"ai\";\n\nimport type { CLILocalConfigArguments } from \"../args/index.js\";\nimport type { CLIProvider } from \"../runtime/config.js\";\nimport {\n DEFAULT_WIKISPINE_FETCH_ENDPOINT,\n testWikispineRuntime,\n type WikispineProvider,\n} from \"wiki-graph-core\";\nimport { buildLLMOptions } from \"../runtime/llm.js\";\nimport { setCLIExitCode } from \"../runtime/context.js\";\nimport { writeTextToStderr, writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\nimport {\n clearLocalConfigSection,\n deleteLocalConfigValue,\n maskLocalConfigSection,\n putLocalConfigValue,\n readLocalConfigSection,\n replaceLocalConfigSection,\n type LocalConfigObject,\n} from \"../runtime/local-config.js\";\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n switch (args.action) {\n case \"get\":\n await writeConfigObject(\n args.section,\n await readLocalConfigSection(args.section),\n );\n return;\n case \"set\":\n await writeConfigObject(\n args.section,\n await replaceLocalConfigSection(\n args.section,\n mergeMaskedSecretsForSet(\n args.section,\n readJSONInput(args),\n await readLocalConfigSection(args.section),\n ),\n ),\n );\n return;\n case \"put\": {\n const key = requireConfigKey(args.key);\n const value =\n args.secret === true\n ? await readSecretValue(key)\n : await readPutValue(args);\n\n await writeConfigObject(\n args.section,\n await putLocalConfigValue(args.section, key, value),\n );\n return;\n }\n case \"delete\":\n await writeConfigObject(\n args.section,\n await deleteLocalConfigValue(args.section, requireConfigKey(args.key)),\n );\n return;\n case \"clear\":\n await writeConfigObject(\n args.section,\n await clearLocalConfigSection(args.section),\n );\n return;\n case \"test\":\n await runConfigTest(args);\n return;\n }\n}\n\nasync function runConfigTest(args: CLILocalConfigArguments): Promise<void> {\n switch (args.section) {\n case \"llm\":\n await runLLMConfigTest(args);\n return;\n case \"wikispine\":\n await runWikispineConfigTest(args);\n return;\n default:\n throw new Error(\n \"Only wikg://local/config/llm and wikg://local/config/wikispine support test.\",\n );\n }\n}\n\nasync function runLLMConfigTest(args: CLILocalConfigArguments): Promise<void> {\n if (args.section !== \"llm\") {\n throw new Error(\"Only wikg://local/config/llm supports test.\");\n }\n\n const startedAt = Date.now();\n const llm = await readLocalConfigSection(\"llm\");\n\n try {\n const llmConfig = {\n ...(typeof llm.apiKey === \"string\" ? { apiKey: llm.apiKey } : {}),\n ...(typeof llm.baseURL === \"string\" ? { baseURL: llm.baseURL } : {}),\n ...(typeof llm.model === \"string\" ? { model: llm.model } : {}),\n ...(typeof llm.name === \"string\" ? { name: llm.name } : {}),\n ...(typeof llm.provider === \"string\"\n ? { provider: parseLLMProvider(llm.provider) }\n : {}),\n };\n const options = buildLLMOptions({\n llm: llmConfig,\n });\n const result = await generateText({\n maxRetries: 0,\n messages: [\n {\n content: \"Reply with exactly: ok\",\n role: \"user\",\n },\n ],\n model: options.model,\n temperature: 0,\n });\n const output = {\n durationMs: Date.now() - startedAt,\n model: llmConfig.model,\n ok: true,\n provider: llmConfig.provider,\n response: result.text.trim(),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"LLM connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Response: ${output.response}`,\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n model: typeof llm.model === \"string\" ? llm.model : undefined,\n ok: false,\n provider: typeof llm.provider === \"string\" ? llm.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function runWikispineConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const wikispine = await readLocalConfigSection(\"wikispine\");\n\n try {\n const provider = parseWikispineProvider(wikispine.provider);\n const result = await testWikispineRuntime({\n provider,\n });\n const output = {\n durationMs: result.durationMs,\n ...(provider === \"fetch\"\n ? {\n endpoint: DEFAULT_WIKISPINE_FETCH_ENDPOINT,\n }\n : {}),\n ...(result.metadata === undefined ? {} : { metadata: result.metadata }),\n ok: true,\n provider,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"WikiSpine connection ok.\",\n `Provider: ${output.provider}`,\n ...(output.endpoint === undefined\n ? []\n : [`Endpoint: ${output.endpoint}`]),\n ...(output.metadata === undefined\n ? []\n : [\n `Runtime: ${output.metadata.format}`,\n `Surfaces: ${output.metadata.surface_count}`,\n `QIDs: ${output.metadata.qid_count}`,\n ]),\n \"\",\n ].join(\"\\n\"),\n );\n } catch (error) {\n const output = {\n durationMs: Date.now() - startedAt,\n error: {\n message: error instanceof Error ? error.message : String(error),\n },\n ok: false,\n provider:\n typeof wikispine.provider === \"string\" ? wikispine.provider : undefined,\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n setCLIExitCode(1);\n return;\n }\n\n throw error;\n }\n}\n\nasync function writeConfigObject(\n section: CLILocalConfigArguments[\"section\"],\n value: LocalConfigObject,\n): Promise<void> {\n await writeTextToStdout(\n formatCLIJSON(maskLocalConfigSection(section, value)),\n );\n}\n\nfunction readPutValue(args: CLILocalConfigArguments): unknown {\n if (args.inputValue !== undefined && args.jsonInputValue !== undefined) {\n throw new Error(\n \"Choose only one input source: positional value or --json value.\",\n );\n }\n if (args.jsonInputValue !== undefined) {\n return parseJSONInput(args.jsonInputValue);\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n\n throw new Error(\"Missing config value.\");\n}\n\nfunction readJSONInput(args: CLILocalConfigArguments): LocalConfigObject {\n const raw = args.jsonInputValue ?? args.inputValue;\n\n if (raw === undefined) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n const parsed = parseJSONInput(raw);\n\n if (parsed === null || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n throw new Error(\"Config set requires a JSON object.\");\n }\n\n return parsed as LocalConfigObject;\n}\n\nexport function mergeMaskedSecretsForSet(\n section: CLILocalConfigArguments[\"section\"],\n input: LocalConfigObject,\n current: LocalConfigObject,\n): LocalConfigObject {\n if (section !== \"llm\" || input.apiKey === undefined) {\n return input;\n }\n if (typeof input.apiKey === \"string\" && /^\\*+$/u.test(input.apiKey)) {\n return current.apiKey === undefined\n ? omitKey(input, \"apiKey\")\n : { ...input, apiKey: current.apiKey };\n }\n\n throw new Error(\n \"apiKey is sensitive and cannot be set from JSON. Use `wg wikg://local/config/llm put apiKey --secret`.\",\n );\n}\n\nfunction omitKey(input: LocalConfigObject, key: string): LocalConfigObject {\n const { [key]: _removed, ...rest } = input;\n\n return rest;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction requireConfigKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Missing config key.\");\n }\n\n return normalized;\n}\n\nfunction parseLLMProvider(value: string): CLIProvider {\n switch (value) {\n case \"anthropic\":\n case \"google\":\n case \"openai\":\n case \"openai-compatible\":\n return value;\n default:\n throw new Error(\n `Invalid llm.provider: ${value}. Expected anthropic, google, openai, or openai-compatible.`,\n );\n }\n}\n\nfunction parseWikispineProvider(value: unknown): WikispineProvider {\n switch (value) {\n case \"cli\":\n case \"fetch\":\n return value;\n default:\n throw new Error(\n \"Missing wikispine.provider. Configure `wikg://local/config/wikispine` with provider `cli` or `fetch`.\",\n );\n }\n}\n\nasync function readSecretValue(key: string): Promise<string> {\n if (process.stdin.isTTY !== true) {\n throw new Error(`${key} requires an interactive terminal.`);\n }\n\n const mutedOutput = new Writable({\n write(_chunk, _encoding, callback) {\n callback();\n },\n });\n const readline = createInterface({\n input: process.stdin,\n output: mutedOutput,\n terminal: true,\n });\n\n try {\n await writeTextToStderr(`${key}: `);\n const value = await readline.question(\"\");\n await writeTextToStderr(\"\\n\");\n if (value.trim() === \"\") {\n throw new Error(`${key} cannot be empty.`);\n }\n\n return value.trim();\n } finally {\n readline.close();\n }\n}\n","import { readFile } from \"fs/promises\";\n\nimport {\n addWikiGraphLibraryArchive,\n assertWikiGraphLibrarySchemaCurrent,\n clearWikiGraphLibraryMetadata,\n createWikiGraphLibrary,\n deleteWikiGraphLibraryMetadataKey,\n getWikiGraphLibraryMetadata,\n getWikiGraphLibraryArchive,\n listWikiGraphLibraries,\n listWikiGraphLibraryArchives,\n moveWikiGraphLibraryArchive,\n disableWikiGraphLibraryIndex,\n putWikiGraphLibraryMetadata,\n readWikiGraphLibraryIndexState,\n rebuildWikiGraphLibraryIndex,\n rebindWikiGraphLibrary,\n removeWikiGraphLibrary,\n removeWikiGraphLibraryArchive,\n replaceWikiGraphLibraryMetadata,\n resolveWikiGraphLibrary,\n scanWikiGraphLibrary,\n} from \"wiki-graph-core\";\nimport type { CLILibraryArguments } from \"../args/index.js\";\nimport type { RenderTreeNode } from \"../support/index.js\";\nimport {\n formatCLIJSON,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../runtime/index.js\";\n\nconst INDEX_PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n if (\n args.action !== \"add\" &&\n args.action !== \"create\" &&\n args.action !== \"scan\" &&\n args.action !== \"rebind\"\n ) {\n await assertWikiGraphLibrarySchemaCurrent(args.target);\n }\n\n switch (args.action) {\n case \"add\": {\n if (args.inputPath === undefined) {\n throw new Error(\"Missing --input <path> for library add.\");\n }\n await writeLibraryArchive(\n await addWikiGraphLibraryArchive({\n inputPath: args.inputPath,\n target: args.target,\n ...(args.to === undefined ? {} : { to: args.to }),\n }),\n args.json ?? false,\n );\n return;\n }\n case \"create\": {\n if (args.path === undefined) {\n throw new Error(\"Missing --path <folder> for library create.\");\n }\n const library = await createWikiGraphLibrary({ folderPath: args.path });\n await writeLibrary(library, args.json ?? false);\n return;\n }\n case \"list\": {\n if (args.target.kind === \"registry\") {\n await writeLibraries(\n await listWikiGraphLibraries(),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeEmptyLibraryScope(args.json ?? false);\n return;\n }\n await writeLibraryArchives(\n await listWikiGraphLibraryArchives(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"scan\": {\n await writeScanResult(\n \"scan\",\n async () => await scanWikiGraphLibrary(args.target),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"rebind\": {\n const folderPath = args.path;\n if (folderPath === undefined) {\n throw new Error(\"Missing path value for library path set.\");\n }\n await writeScanResult(\n \"path set\",\n async () =>\n await rebindWikiGraphLibrary({\n folderPath,\n target: args.target,\n }),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"archive-tree\": {\n await writeLibraryArchiveTree(\n await listWikiGraphLibraryArchives(args.target),\n {\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n json: args.json ?? false,\n ...(args.parent === undefined ? {} : { parent: args.parent }),\n },\n );\n return;\n }\n case \"get-index\": {\n await writeLibraryIndexState(\n await readWikiGraphLibraryIndexState(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"enable-index\": {\n const writer = new ProgressOutputWriter({\n jsonl: args.jsonl ?? false,\n throttleMs: INDEX_PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n await writer.write({\n json: { type: \"started\" },\n kind: \"lifecycle\",\n text: \"library index enable started\\nsteps: collecting -> clearing -> indexing-text -> indexing-objects -> finalizing\",\n });\n const state = await rebuildWikiGraphLibraryIndex(\n args.target,\n async (event) => {\n const counters =\n event.done === undefined || event.total === undefined\n ? []\n : [formatIndexCounter(event)];\n\n await writer.write({\n counters,\n json: {\n counters,\n phase: event.phase,\n type: \"status_snapshot\",\n },\n kind: \"status\",\n phase: event.phase,\n });\n },\n );\n await writer.write({\n json: { status: state.status, type: \"completed\" },\n kind: \"lifecycle\",\n text: \"library index enabled\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n case \"disable-index\": {\n await writeLibraryIndexState(\n await disableWikiGraphLibraryIndex(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"remove\": {\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await removeWikiGraphLibraryArchive({ target: args.target }),\n args.json ?? false,\n \"Removed library archive\",\n );\n return;\n }\n const library = await removeWikiGraphLibrary(args.target);\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ removed: library.uri })\n : `Removed library registry: ${library.uri}\\n`,\n );\n return;\n }\n case \"get\": {\n if (args.target.kind === \"path\") {\n await writeLibraryPath(\n await resolveWikiGraphLibrary(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-path\") {\n await writeLibraryArchivePath(\n await getWikiGraphLibraryArchive({ ...args.target, kind: \"archive\" }),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"metadata\") {\n await writeMetadataMap(\n await getWikiGraphLibraryMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await getWikiGraphLibraryArchive(args.target),\n args.json ?? false,\n \"Library archive\",\n );\n return;\n }\n await resolveWikiGraphLibrary(args.target);\n await writeEmptyLibraryScope(args.json ?? false);\n return;\n }\n case \"set\": {\n if (args.target.kind === \"archive-path\") {\n if (args.to === undefined) {\n throw new Error(\"Missing path value for library archive path set.\");\n }\n await writeLibraryArchive(\n await moveWikiGraphLibraryArchive({\n target: { ...args.target, kind: \"archive\" },\n to: args.to,\n }),\n args.json ?? false,\n \"Moved library archive\",\n );\n return;\n }\n const value = await readMetadataInput(args, { jsonRequired: true });\n await writeMetadataMap(\n await replaceWikiGraphLibraryMetadata(\n args.target,\n parseMetadataMap(value),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n await writeMetadataMap(\n await putWikiGraphLibraryMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n await readMetadataInput(args, { jsonRequired: false }),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"delete\": {\n await writeMetadataMap(\n await deleteWikiGraphLibraryMetadataKey(\n args.target,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"clear\": {\n await writeMetadataMap(\n await clearWikiGraphLibraryMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n }\n}\n\nasync function writeLibrary(\n library: Awaited<ReturnType<typeof createWikiGraphLibrary>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: library.uri,\n id: library.publicId,\n folderPath: library.folderPath,\n isDefault: library.isDefault,\n stagingPath: library.stagingPath,\n createdAt: library.createdAt,\n updatedAt: library.updatedAt,\n }),\n );\n return;\n }\n await writeTextToStdout(`${library.uri}\\n`);\n}\n\nasync function writeLibraries(\n libraries: Awaited<ReturnType<typeof listWikiGraphLibraries>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: libraries.map((library) => ({\n uri: library.uri,\n id: library.publicId,\n path: library.folderPath,\n isDefault: library.isDefault,\n })),\n }),\n );\n return;\n }\n await writeTextToStdout(\n libraries\n .map((library) =>\n [\n library.uri,\n library.publicId,\n library.folderPath,\n library.isDefault ? \"default\" : \"\",\n ].join(\"\\t\"),\n )\n .join(\"\\n\") + (libraries.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeLibraryPath(\n library: Awaited<ReturnType<typeof resolveWikiGraphLibrary>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ uri: `${library.uri}/path`, path: library.folderPath }),\n );\n return;\n }\n await writeTextToStdout(`${library.folderPath}\\n`);\n}\n\nasync function writeLibraryArchivePath(\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ uri: `${archive.uri}/path`, path: archive.relativePath }),\n );\n return;\n }\n await writeTextToStdout(`${archive.relativePath}\\n`);\n}\n\nasync function writeScanResult(\n label: string,\n operation: () => Promise<Awaited<ReturnType<typeof scanWikiGraphLibrary>>>,\n json: boolean,\n jsonl: boolean,\n): Promise<void> {\n if (jsonl) {\n const writer = new ProgressOutputWriter({ jsonl: true, throttleMs: 0 });\n await writer.write({\n json: { type: \"started\", action: label },\n kind: \"lifecycle\",\n text: `${label} started`,\n });\n const result = await operation();\n for (const archive of result.archives) {\n await writer.write({\n json: {\n type: \"archive\",\n action: label,\n archive: formatLibraryArchiveJSON(archive),\n },\n kind: \"status\",\n phase: label,\n });\n }\n await writer.write({\n json: {\n type: \"completed\",\n action: label,\n archives: result.archives.length,\n },\n kind: \"lifecycle\",\n text: `${label} completed`,\n });\n await writer.write({\n json: { type: \"succeeded\", action: label },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n\n const result = await operation();\n await writeLibraryArchives(result.archives, json);\n}\n\nasync function writeLibraryArchives(\n archives: Awaited<ReturnType<typeof listWikiGraphLibraryArchives>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({ items: archives.map(formatLibraryArchiveJSON) }),\n );\n return;\n }\n await writeTextToStdout(\n archives\n .map((archive) =>\n [archive.uri, archive.relativePath, archive.status].join(\"\\t\"),\n )\n .join(\"\\n\") + (archives.length === 0 ? \"\" : \"\\n\"),\n );\n}\n\nasync function writeEmptyLibraryScope(json: boolean): Promise<void> {\n await writeTextToStdout(json ? formatCLIJSON({ items: [] }) : \"\");\n}\n\nasync function writeLibraryArchive(\n archive: Awaited<ReturnType<typeof addWikiGraphLibraryArchive>>,\n json: boolean,\n label = \"Added library archive\",\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(formatLibraryArchiveJSON(archive)));\n return;\n }\n await writeTextToStdout(\n `${label}: ${archive.uri}\\n${archive.relativePath}\\n`,\n );\n}\n\nfunction formatLibraryArchiveJSON(\n archive: Awaited<ReturnType<typeof addWikiGraphLibraryArchive>>,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n relativePath: archive.relativePath,\n path: archive.path,\n exists: archive.exists,\n status: archive.status,\n lastSeenMutationToken: archive.lastSeenMutationToken,\n lastSeenSize: archive.lastSeenSize,\n lastSeenMtimeMs: archive.lastSeenMtimeMs,\n lastScannedAt: archive.lastScannedAt,\n createdAt: archive.createdAt,\n updatedAt: archive.updatedAt,\n };\n}\n\ninterface ArchiveTreeNode {\n readonly children: Map<string, ArchiveTreeNode>;\n readonly name: string;\n readonly path: string;\n archive?: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>;\n}\n\nasync function writeLibraryArchiveTree(\n archives: Awaited<ReturnType<typeof listWikiGraphLibraryArchives>>,\n options: {\n readonly depth?: number;\n readonly json: boolean;\n readonly parent?: string;\n },\n): Promise<void> {\n const parent = options.parent\n ?.replace(/\\\\/gu, \"/\")\n .replace(/^\\/+|\\/+$/gu, \"\");\n const root: ArchiveTreeNode = { children: new Map(), name: \"\", path: \"\" };\n for (const archive of archives) {\n if (\n parent !== undefined &&\n !isArchiveTreePathSelected(archive.relativePath, parent)\n ) {\n continue;\n }\n insertArchiveTreeNode(root, archive);\n }\n pruneArchiveTreeDepth(root, options.depth, 0);\n\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({ items: serializeArchiveTreeNodes(root.children) }),\n );\n return;\n }\n await writeTextToStdout(formatArchiveTreeText(root.children));\n}\n\nfunction isArchiveTreePathSelected(path: string, parent: string): boolean {\n return path === parent || path.startsWith(`${parent.replace(/\\/$/u, \"\")}/`);\n}\n\nfunction insertArchiveTreeNode(\n root: ArchiveTreeNode,\n archive: Awaited<ReturnType<typeof getWikiGraphLibraryArchive>>,\n): void {\n let current = root;\n const parts = archive.relativePath.split(\"/\");\n for (let index = 0; index < parts.length; index += 1) {\n const name = parts[index]!;\n const path = parts.slice(0, index + 1).join(\"/\");\n let child = current.children.get(name);\n if (child === undefined) {\n child = { children: new Map(), name, path };\n current.children.set(name, child);\n }\n current = child;\n }\n current.archive = archive;\n}\n\nfunction pruneArchiveTreeDepth(\n node: ArchiveTreeNode,\n depth: number | undefined,\n level: number,\n): void {\n if (depth === undefined) {\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n return;\n }\n if (level >= depth) {\n node.children.clear();\n return;\n }\n for (const child of node.children.values()) {\n pruneArchiveTreeDepth(child, depth, level + 1);\n }\n}\n\nfunction serializeArchiveTreeNodes(\n nodes: Map<string, ArchiveTreeNode>,\n): object[] {\n return [...nodes.values()].map((node) => ({\n children: serializeArchiveTreeNodes(node.children),\n name: node.name,\n path: node.path,\n ...(node.archive === undefined ? {} : { uri: node.archive.uri }),\n }));\n}\n\nfunction formatArchiveTreeText(nodes: Map<string, ArchiveTreeNode>): string {\n return renderTreeText([...nodes.values()].map(formatArchiveTreeRenderNode));\n}\n\nfunction formatArchiveTreeRenderNode(node: ArchiveTreeNode): RenderTreeNode {\n return {\n children: [...node.children.values()].map(formatArchiveTreeRenderNode),\n label:\n node.archive === undefined\n ? node.name\n : `${node.name} (${node.archive.uri})`,\n };\n}\n\nasync function writeLibraryIndexState(\n state: Awaited<ReturnType<typeof readWikiGraphLibraryIndexState>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(state));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${state.status}`,\n `Enabled: ${state.enabled ? \"yes\" : \"no\"}`,\n `Source fingerprint: ${state.sourceFingerprint}`,\n ...(state.fingerprint === undefined\n ? []\n : [`Index fingerprint: ${state.fingerprint}`]),\n `Sources: ${state.sources.length}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\";\n}): ProgressCounter {\n const unit =\n input.unit === \"chapter\"\n ? \"chapters\"\n : input.unit === \"sentence\"\n ? \"sentences\"\n : \"objects\";\n\n return {\n done: input.done ?? 0,\n name: unit,\n total: input.total ?? 0,\n unit,\n };\n}\n\nasync function readMetadataInput(\n args: CLILibraryArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n if (options.jsonRequired || args.jsonInputValue !== undefined) {\n return parseJSONInput(raw);\n }\n return raw;\n}\n\nasync function readRawInput(args: CLILibraryArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n return writeTextToStdout(lines.length === 0 ? \"\" : `${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n if (value !== null && typeof value === \"object\") {\n return JSON.stringify(value);\n }\n return String(value);\n}\n","import { readFile } from \"fs/promises\";\n\nimport { ObjectMetadataKind, type ObjectMetadataTarget } from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIObjectMetadataArguments } from \"../args/index.js\";\nimport { writeArchiveDocument } from \"./archive-command/run/document.js\";\nimport { resolveArchiveRuntimeLocation } from \"./archive-command/run/uri.js\";\nimport {\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const target = parseObjectMetadataTarget(args.objectPath);\n\n switch (args.action) {\n case \"get\": {\n const location = await resolveArchiveRuntimeLocation(args.archivePath);\n await new WikiGraphArchiveFile(location.archivePath).readDocument(\n async (document) => {\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n },\n );\n return;\n }\n case \"set\": {\n const value = await readMetadataInput(args, { jsonRequired: true });\n const map = parseMetadataMap(value);\n\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.replaceMap(target, map);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n case \"put\": {\n const key = normalizeMetadataKey(args.key);\n const value = await readMetadataInput(args, { jsonRequired: false });\n\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.put(target, key, value);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n case \"delete\":\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.deleteKey(\n args.objectPath,\n normalizeMetadataKey(args.key),\n );\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n case \"clear\":\n await writeArchiveDocument(args.archivePath, async (document) => {\n await document.metadata.clear(args.objectPath);\n await writeMetadataMap(\n await document.metadata.getMap(args.objectPath),\n args.json ?? false,\n );\n });\n return;\n }\n}\n\nasync function readMetadataInput(\n args: CLIObjectMetadataArguments,\n options: { readonly jsonRequired: boolean },\n): Promise<unknown> {\n const raw = await readRawInput(args);\n\n if (args.json === true || options.jsonRequired) {\n return parseJSONInput(raw);\n }\n\n return raw;\n}\n\nasync function readRawInput(args: CLIObjectMetadataArguments): Promise<string> {\n const sources = [\n args.inputValue === undefined ? undefined : \"positional value\",\n args.inputPath === undefined ? undefined : \"--input\",\n args.jsonInputValue === undefined ? undefined : \"--json value\",\n ].filter((source): source is string => source !== undefined);\n\n if (sources.length > 1) {\n throw new Error(`Choose only one input source: ${sources.join(\", \")}.`);\n }\n if (args.jsonInputValue !== undefined) {\n return args.jsonInputValue;\n }\n if (args.inputValue !== undefined) {\n return args.inputValue;\n }\n if (args.inputPath === \"-\") {\n let content = \"\";\n for await (const chunk of readTextStreamFromStdin()) {\n content += chunk;\n }\n return content;\n }\n if (args.inputPath !== undefined) {\n return await readFile(args.inputPath, \"utf8\");\n }\n throw new Error(\n \"Missing input. Pass a value, use --input <path>, or use --input - for stdin.\",\n );\n}\n\nfunction parseMetadataMap(value: unknown): Readonly<Record<string, unknown>> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Error(\"Metadata set requires a JSON object.\");\n }\n\n return value as Readonly<Record<string, unknown>>;\n}\n\nfunction parseJSONInput(raw: string): unknown {\n try {\n return JSON.parse(raw);\n } catch (error) {\n throw new Error(\n `Invalid JSON input: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n}\n\nfunction normalizeMetadataKey(key: string | undefined): string {\n const normalized = key?.trim() ?? \"\";\n\n if (normalized === \"\") {\n throw new Error(\"Metadata key cannot be empty.\");\n }\n\n return normalized;\n}\n\nfunction writeMetadataMap(\n map: Readonly<Record<string, unknown>>,\n json: boolean,\n): Promise<void> {\n if (json) {\n return writeTextToStdout(formatCLIJSON(map));\n }\n\n return writeTextToStdout(formatMetadataText(map));\n}\n\nfunction formatMetadataText(map: Readonly<Record<string, unknown>>): string {\n const lines = Object.entries(map).map(\n ([key, value]) => `${key}: ${formatMetadataTextValue(value)}`,\n );\n\n if (lines.length === 0) {\n return \"\";\n }\n\n return `${lines.join(\"\\n\")}\\n`;\n}\n\nfunction formatMetadataTextValue(value: unknown): string {\n if (Array.isArray(value)) {\n return value.map((item) => String(item)).join(\" \");\n }\n\n return String(value);\n}\n\nfunction parseObjectMetadataTarget(objectPath: string): ObjectMetadataTarget {\n if (objectPath === \"\") {\n return { kind: ObjectMetadataKind.Archive, objectPath };\n }\n\n const chapterMatch = /^chapter\\/([1-9][0-9]*)(?:\\/.*)?$/u.exec(objectPath);\n if (chapterMatch?.[1] !== undefined) {\n return {\n chapterId: Number(chapterMatch[1]),\n kind: ObjectMetadataKind.Chapter,\n objectPath,\n };\n }\n\n const chunkMatch = /^chunk\\/([1-9][0-9]*)$/u.exec(objectPath);\n if (chunkMatch?.[1] !== undefined) {\n return {\n chunkId: Number(chunkMatch[1]),\n kind: ObjectMetadataKind.Chunk,\n objectPath,\n };\n }\n\n const entityMatch = /^entity\\/(Q[1-9][0-9]*)$/u.exec(objectPath);\n if (entityMatch?.[1] !== undefined) {\n return {\n entityQid: entityMatch[1],\n kind: ObjectMetadataKind.Entity,\n objectPath,\n };\n }\n\n const tripleMatch = /^triple\\/(Q[1-9][0-9]*)\\/([^/]+)\\/(Q[1-9][0-9]*)$/u.exec(\n objectPath,\n );\n if (tripleMatch?.[1] !== undefined) {\n return {\n kind: ObjectMetadataKind.Triple,\n objectPath,\n tripleObjectQid: tripleMatch[3]!,\n triplePredicate: decodeURIComponent(tripleMatch[2]!),\n tripleSubjectQid: tripleMatch[1],\n };\n }\n\n return {\n kind: ObjectMetadataKind.Object,\n objectPath,\n };\n}\n","import type { BuildJobTarget, ChapterEntry } from \"wiki-graph-core\";\n\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningDuration,\n formatGenerationPlanningModel,\n planGenerationTask,\n type GenerationConcurrency,\n type GenerationPerformanceHint,\n type GenerationPlanningCost,\n} from \"../../runtime/index.js\";\n\nexport interface QueueAddEstimate {\n readonly chapters: number;\n readonly concurrent: GenerationConcurrency;\n readonly includesPrerequisites: boolean;\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly planning: GenerationPlanningCost;\n readonly steps: readonly QueueAddEstimateStep[];\n readonly target: BuildJobTarget;\n readonly words: number;\n}\n\ninterface QueueAddEstimateStep {\n readonly chapters: number;\n readonly planning: GenerationPlanningCost;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n readonly words: number;\n}\n\nexport function createQueueAddEstimate(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly config: CLIConfig;\n readonly target: BuildJobTarget;\n}): QueueAddEstimate {\n const concurrent = {\n job: input.config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n request:\n input.config.concurrent?.request ??\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n };\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n const model = formatGenerationPlanningModel(input.config.llm);\n const steps = createQueueAddEstimateSteps({\n chapters: input.chapters,\n concurrent,\n model,\n target: input.target,\n });\n const workChapters = Math.max(0, ...steps.map((step) => step.chapters));\n\n return {\n chapters: input.chapters.length,\n concurrent,\n includesPrerequisites: steps.some((step) => step.prerequisite),\n performanceHints: createGenerationPerformanceHints({\n chapters: workChapters,\n concurrent,\n hasGenerationWork: steps.length > 0,\n }),\n planning: sumGenerationPlanningCosts(model, steps),\n steps,\n target: input.target,\n words,\n };\n}\n\nfunction createQueueAddEstimateSteps(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"stage\" | \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly target: BuildJobTarget;\n}): readonly QueueAddEstimateStep[] {\n switch (input.target) {\n case \"knowledge-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"knowledge-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n ),\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-graph\",\n }),\n ].filter((step) => step.chapters > 0);\n case \"reading-summary\": {\n const graphChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\",\n );\n const summaryChapters = input.chapters.filter(\n (chapter) => chapter.stage === \"sourced\" || chapter.stage === \"graphed\",\n );\n\n return [\n createQueueAddEstimateStep({\n chapters: graphChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"reading-graph\",\n }),\n createQueueAddEstimateStep({\n chapters: summaryChapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: \"reading-summary\",\n }),\n ].filter((step) => step.chapters > 0);\n }\n }\n}\n\nfunction createQueueAddEstimateStep(input: {\n readonly chapters: readonly Pick<ChapterEntry, \"words\">[];\n readonly concurrent: GenerationConcurrency;\n readonly model: string;\n readonly prerequisite: boolean;\n readonly task: BuildJobTarget;\n}): QueueAddEstimateStep {\n const words = input.chapters.reduce(\n (total, chapter) => total + chapter.words,\n 0,\n );\n\n return {\n chapters: input.chapters.length,\n planning: planGenerationTask(\n input.task,\n words,\n input.chapters.length,\n input.concurrent,\n input.model,\n ),\n prerequisite: input.prerequisite,\n task: input.task,\n words,\n };\n}\n\nfunction sumGenerationPlanningCosts(\n model: string,\n steps: readonly QueueAddEstimateStep[],\n): GenerationPlanningCost {\n return {\n model,\n timeSeconds: {\n max: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.max,\n 0,\n ),\n min: steps.reduce(\n (total, step) => total + step.planning.timeSeconds.min,\n 0,\n ),\n },\n tokens: {\n cacheableInput: steps.reduce(\n (total, step) => total + step.planning.tokens.cacheableInput,\n 0,\n ),\n input: steps.reduce(\n (total, step) => total + step.planning.tokens.input,\n 0,\n ),\n output: steps.reduce(\n (total, step) => total + step.planning.tokens.output,\n 0,\n ),\n },\n };\n}\n\nexport function formatQueueAddEstimateJSON(\n estimate: QueueAddEstimate,\n): unknown {\n return {\n chapters: estimate.chapters,\n concurrent: estimate.concurrent,\n includesPrerequisites: estimate.includesPrerequisites,\n performanceHints: estimate.performanceHints,\n steps: estimate.steps.map((step) => ({\n chapters: step.chapters,\n prerequisite: step.prerequisite,\n task: step.task,\n tokens: step.planning.tokens,\n waitSeconds: step.planning.timeSeconds,\n words: step.words,\n })),\n target: estimate.target,\n tokens: estimate.planning.tokens,\n waitSeconds: estimate.planning.timeSeconds,\n words: estimate.words,\n model: estimate.planning.model,\n };\n}\n\nexport function formatQueueAddEstimateLines(\n estimate: QueueAddEstimate,\n): readonly string[] {\n return [\n \"Estimate:\",\n ` Work: ${estimate.target} over ${estimate.chapters} chapter${estimate.chapters === 1 ? \"\" : \"s\"} / ${estimate.words} words`,\n ...(estimate.includesPrerequisites\n ? [\" Includes prerequisite Reading Graph work where missing.\"]\n : []),\n ` Model: ${estimate.planning.model}`,\n ` Tokens: ${estimate.planning.tokens.input} input / ${estimate.planning.tokens.cacheableInput} cacheable input / ${estimate.planning.tokens.output} output`,\n ` Wait: ${formatGenerationPlanningDuration(estimate.planning.timeSeconds.min)}-${formatGenerationPlanningDuration(estimate.planning.timeSeconds.max)}`,\n ` Current concurrency: job=${estimate.concurrent.job} request=${estimate.concurrent.request}`,\n ...formatQueuePerformanceHintLines(estimate.performanceHints),\n ];\n}\n\nfunction formatQueuePerformanceHintLines(\n hints: readonly GenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) {\n return [];\n }\n\n return [\n \"Performance hints:\",\n ...hints.flatMap((hint) => [\n ` ${hint.message}`,\n ` Command: ${hint.command}`,\n ]),\n ];\n}\n","import type { BuildJob, ChapterEntry } from \"wiki-graph-core\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport {\n formatQueueAddEstimateJSON,\n formatQueueAddEstimateLines,\n type QueueAddEstimate,\n} from \"./estimate.js\";\n\nexport async function writeJobList(\n jobs: readonly BuildJob[],\n options: { readonly json: boolean },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(formatCLIJSON({ items: jobs.map(formatJobJSON) }));\n return;\n }\n\n if (jobs.length === 0) {\n await writeTextToStdout(\"No jobs.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${formatJobListHeader()}\\n${jobs\n .map(\n (job) =>\n `${job.jobId.slice(0, 8).padEnd(8)} ${job.state.padEnd(9)} ${(job.currentStep ?? \"-\").padEnd(7)} ${job.target.padEnd(7)} ${job.chapterId.toString().padStart(7)} ${formatArchiveName(job.archivePath)}`,\n )\n .join(\"\\n\")}\\n`,\n );\n}\n\nfunction formatJobListHeader(): string {\n return `${\"JOB\".padEnd(8)} ${\"STATE\".padEnd(9)} ${\"STEP\".padEnd(7)} ${\"TARGET\".padEnd(7)} ${\"CHAPTER\".padStart(7)} ARCHIVE`;\n}\n\nexport async function writeJobStatus(\n job: BuildJob,\n options: { readonly json: boolean },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatJobJSON(job)));\n return;\n }\n\n await writeTextToStdout(\n [\n `Job: ${job.jobId}`,\n `State: ${job.state}`,\n `Archive: ${job.archivePath}`,\n `Chapter: ${job.chapterId}`,\n `Target: ${job.target}`,\n `Step: ${job.currentStep ?? \"-\"}`,\n `Workspace: ${job.workspacePath}`,\n `Cache: ${job.cachePath}`,\n `Logs: ${job.logPath}`,\n ...(job.errorJSON === undefined ? [] : [`Error: ${job.errorJSON}`]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatJobJSON(job: BuildJob): Record<string, unknown> {\n return {\n archiveKey: job.archiveKey,\n archivePath: job.archivePath,\n cachePath: job.cachePath,\n chapterId: job.chapterId,\n createdAt: job.createdAt,\n ...(job.currentStep === undefined ? {} : { currentStep: job.currentStep }),\n ...(job.errorJSON === undefined ? {} : { errorJSON: job.errorJSON }),\n eventsPath: job.eventsPath,\n ...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),\n jobId: job.jobId,\n logPath: job.logPath,\n ...(job.llmJSON === undefined\n ? {}\n : { llm: formatJobLLMJSON(job.llmJSON) }),\n ...(job.ownerId === undefined ? {} : { ownerId: job.ownerId }),\n ...(job.ownerPid === undefined ? {} : { ownerPid: job.ownerPid }),\n ...(job.prompt === undefined ? {} : { prompt: job.prompt }),\n queueRank: job.queueRank,\n state: job.state,\n ...(job.readingSummaryStartedAt === undefined\n ? {}\n : { readingSummaryStartedAt: job.readingSummaryStartedAt }),\n target: job.target,\n updatedAt: job.updatedAt,\n workspacePath: job.workspacePath,\n };\n}\n\nfunction formatJobLLMJSON(value: string): unknown {\n let parsed: unknown;\n\n try {\n parsed = JSON.parse(value);\n } catch {\n return {\n configured: true,\n invalid: true,\n };\n }\n\n const llm = readJobLLMObject(parsed);\n\n return {\n configured: true,\n ...(readOptionalString(llm, \"provider\") === undefined\n ? {}\n : { provider: readOptionalString(llm, \"provider\") }),\n ...(readOptionalString(llm, \"model\") === undefined\n ? {}\n : { model: readOptionalString(llm, \"model\") }),\n ...(readOptionalString(llm, \"name\") === undefined\n ? {}\n : { name: readOptionalString(llm, \"name\") }),\n hasApiKey: readOptionalString(llm, \"apiKey\") !== undefined,\n hasBaseURL:\n readOptionalString(llm, \"baseURL\") !== undefined ||\n readOptionalString(llm, \"baseUrl\") !== undefined ||\n readOptionalString(llm, \"chatCompletionsUrl\") !== undefined,\n };\n}\n\nfunction readJobLLMObject(value: unknown): Record<string, unknown> {\n if (!isRecord(value)) {\n return {};\n }\n\n const nested = value.llm;\n\n return isRecord(nested) ? nested : value;\n}\n\nfunction readOptionalString(\n value: Record<string, unknown>,\n key: string,\n): string | undefined {\n const field = value[key];\n\n return typeof field === \"string\" && field !== \"\" ? field : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport async function writeJobSummary(\n job: BuildJob,\n options: {\n readonly estimate?: QueueAddEstimate;\n readonly json: boolean;\n readonly watch?: boolean;\n } = { json: false },\n): Promise<void> {\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n ...formatJobJSON(job),\n ...(options.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(options.estimate) }),\n ...(options.watch === true\n ? {\n watchCommand: formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ]),\n }\n : {}),\n }),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Job ${job.jobId} ${job.state} ${job.target} chapter ${job.chapterId} ${job.archivePath}`,\n ...(options.watch === true\n ? [\n `Watch: ${formatCliCommand([\n `wikg://local/job/${job.jobId}`,\n \"watch\",\n ])}`,\n ]\n : []),\n ...(options.estimate === undefined\n ? []\n : [\"\", ...formatQueueAddEstimateLines(options.estimate)]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nexport async function writeArchiveAddSummary(input: {\n readonly created: readonly {\n readonly chapter: ChapterEntry;\n readonly job: BuildJob;\n }[];\n readonly estimate?: QueueAddEstimate;\n readonly json: boolean;\n readonly skipped: readonly {\n readonly chapterId: number;\n readonly reason: string;\n }[];\n}): Promise<void> {\n if (input.json) {\n await writeTextToStdout(\n formatCLIJSON({\n created: input.created.map((item) => formatJobJSON(item.job)),\n ...(input.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(input.estimate) }),\n skipped: input.skipped,\n }),\n );\n return;\n }\n\n const lines = [\n `Created: ${input.created.length}`,\n `Skipped: ${input.skipped.length}`,\n ];\n\n for (const job of input.created) {\n lines.push(\n `Job ${job.job.jobId} ${job.job.state} ${job.job.target} chapter ${job.job.chapterId}`,\n );\n }\n for (const skipped of input.skipped) {\n lines.push(`Skipped chapter ${skipped.chapterId}: ${skipped.reason}`);\n }\n if (input.estimate !== undefined) {\n lines.push(\"\", ...formatQueueAddEstimateLines(input.estimate));\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatArchiveName(path: string): string {\n return path.split(/[\\\\/]/u).at(-1) ?? path;\n}\n","import {\n addBuildJob,\n listChapters,\n type BuildJob,\n type ChapterEntry,\n} from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport { isCLIQueueAutostartEnabled } from \"../../runtime/context.js\";\nimport { spawnInternalChild } from \"../../runtime/internal-child.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeArchiveAddSummary } from \"./output.js\";\n\nexport async function addChapterJob(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<BuildJob> {\n return await addBuildJob({\n archivePath: args.archivePath!,\n boost: args.boost ?? false,\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n}\n\nexport async function addArchiveJobs(\n args: CLIQueueArguments,\n config: CLIConfig,\n): Promise<void> {\n const created: Array<{\n readonly chapter: ChapterEntry;\n readonly job: BuildJob;\n }> = [];\n const skipped: Array<{\n readonly chapterId: number;\n readonly reason: string;\n }> = [];\n\n await new WikiGraphArchiveFile(args.archivePath!).readDocument(\n async (document) => {\n const chapterIdSet =\n args.chapterIds === undefined ? undefined : new Set(args.chapterIds);\n\n for (const chapter of await listChapters(document)) {\n if (\n chapterIdSet !== undefined &&\n !chapterIdSet.has(chapter.chapterId)\n ) {\n continue;\n }\n if (chapter.stage === \"planned\") {\n skipped.push({\n chapterId: chapter.chapterId,\n reason: \"planned\",\n });\n continue;\n }\n\n try {\n created.push({\n chapter,\n job: await addChapterJob(args, chapter.chapterId),\n });\n } catch (error) {\n skipped.push({\n chapterId: chapter.chapterId,\n reason: error instanceof Error ? error.message : String(error),\n });\n }\n }\n },\n );\n\n await writeArchiveAddSummary({\n created,\n ...(created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: created.map((item) => item.chapter),\n config,\n target: args.target ?? \"reading-summary\",\n }),\n }),\n json: args.json ?? false,\n skipped,\n });\n}\n\nexport async function assertQueueAddReady(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<void> {\n let chapter: ChapterEntry | undefined;\n await new WikiGraphArchiveFile(args.archivePath!).readDocument(\n async (document) => {\n chapter = (await listChapters(document)).find(\n (entry) => entry.chapterId === chapterId,\n );\n },\n );\n\n if (chapter === undefined) {\n throw new Error(`Chapter does not exist.`);\n }\n const chapterUri = chapter.uri;\n\n await new WikiGraphArchiveFile(args.archivePath!).read(async (digest) => {\n if ((await digest.readChapterStage(chapterId)) === \"planned\") {\n throw new Error(\n `Chapter ${chapterUri} is planned. Set source before queueing a build job.`,\n );\n }\n });\n}\n\nexport async function readQueueAddChapter(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<ChapterEntry> {\n let matched: ChapterEntry | undefined;\n\n await new WikiGraphArchiveFile(args.archivePath!).readDocument(\n async (document) => {\n matched = (await listChapters(document)).find(\n (chapter) => chapter.chapterId === chapterId,\n );\n },\n );\n\n if (matched === undefined) {\n throw new Error(`Chapter ${chapterId} does not exist.`);\n }\n\n return matched;\n}\n\nexport function assertBuildCostAccepted(args: CLIQueueArguments): void {\n if (args.acceptCost === true) {\n return;\n }\n\n throw new Error(\n \"Generation tasks can call an LLM, consume tokens, incur provider charges, and run for minutes to hours on large archives. Run `wg <archive-uri> inspect`, then rerun `wg wikg://local/job add` with --accept-cost if the cost and wait time are acceptable.\",\n );\n}\n\nexport function tryStartQueueWorker(): void {\n if (!isCLIQueueAutostartEnabled()) {\n return;\n }\n\n const child = spawnInternalChild(\"queue-worker\", {\n detached: true,\n });\n\n child.unref();\n}\n","import {\n getBuildJob,\n readBuildJobEvents,\n type BuildJobEvent,\n type BuildJobProgressCounter,\n type BuildJobState,\n type BuildJobTarget,\n} from \"wiki-graph-core\";\n\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n type ProgressMetricGroup,\n} from \"../../runtime/index.js\";\n\nconst TERMINAL_STATES = new Set<BuildJobState>([\n \"succeeded\",\n \"failed\",\n \"canceled\",\n]);\nconst PROGRESS_OUTPUT_INTERVAL_MS = 6_000;\n\nexport async function watchBuildJob(\n jobId: string,\n options: {\n readonly from: \"beginning\" | \"now\";\n readonly jsonl: boolean;\n },\n): Promise<void> {\n let seenSeq = 0;\n const writer = new ProgressOutputWriter({\n jsonl: options.jsonl,\n throttleMs: PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n if (options.from === \"now\") {\n const job = await getBuildJob(jobId);\n const events = await readBuildJobEvents(job);\n\n seenSeq = events.at(-1)?.seq ?? 0;\n }\n\n while (true) {\n const job = await getBuildJob(jobId);\n const events = (await readBuildJobEvents(job)).filter(\n (event) => event.seq > seenSeq,\n );\n\n for (const event of events) {\n seenSeq = Math.max(seenSeq, event.seq);\n await writer.write(formatWatchOutputEvent(event));\n }\n\n if (TERMINAL_STATES.has(job.state)) {\n return;\n }\n\n await delay(1_000);\n }\n}\n\nfunction formatWatchOutputEvent(event: BuildJobEvent) {\n switch (event.type) {\n case \"status_snapshot\": {\n const tokenMetrics = formatProgressTokenMetrics(event.tokens);\n return {\n counters: event.counters.map(formatProgressCounter),\n json: event,\n kind: \"status\" as const,\n ...(tokenMetrics === undefined ? {} : { metricGroups: [tokenMetrics] }),\n phase: event.phase ?? formatFallbackStatusPhase(event.step),\n };\n }\n case \"target_changed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `target ${event.from} -> ${event.to}`,\n };\n case \"step_started\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} started\\nsteps: ${formatStepPlan(event.step)}`,\n };\n case \"step_completed\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: `${event.step} completed`,\n };\n case \"created\":\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: \"created\",\n };\n default:\n return {\n json: event,\n kind: \"lifecycle\" as const,\n text: event.type,\n };\n }\n}\n\nfunction formatFallbackStatusPhase(step: BuildJobTarget | undefined): string {\n switch (step) {\n case \"reading-graph\":\n return \"extracting\";\n case \"reading-summary\":\n return \"summarizing\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n case undefined:\n return \"status\";\n default:\n return \"status\";\n }\n}\n\nfunction formatStepPlan(step: string): string {\n switch (step) {\n case \"knowledge-graph\":\n return \"matching -> screening -> enrichment -> grounding -> relation-discovery -> committing\";\n case \"reading-summary\":\n return \"reading-graph -> summarizing -> committing\";\n case \"reading-graph\":\n return \"extracting -> committing\";\n default:\n return step;\n }\n}\n\nfunction formatProgressCounter(\n counter: BuildJobProgressCounter,\n): ProgressCounter {\n return {\n done: counter.done,\n name: counter.name,\n total: counter.total,\n unit: formatProgressUnit(counter.unit),\n };\n}\n\nfunction formatProgressUnit(unit: string): string {\n switch (unit) {\n case \"candidate\":\n return \"candidates\";\n case \"char\":\n return \"chars\";\n case \"item\":\n return \"items\";\n case \"page\":\n return \"pages\";\n case \"qid\":\n return \"qids\";\n case \"record\":\n return \"records\";\n case \"sentence\":\n return \"sentences\";\n case \"word\":\n return \"words\";\n case \"window\":\n return \"windows\";\n default:\n return unit;\n }\n}\n\nfunction formatProgressTokenMetrics(\n tokens: Extract<\n BuildJobEvent,\n { readonly type: \"status_snapshot\" }\n >[\"tokens\"],\n): ProgressMetricGroup | undefined {\n if (tokens === undefined) {\n return undefined;\n }\n\n const metrics = [\n ...(tokens.inputTokens === undefined\n ? []\n : [{ name: \"input\", value: tokens.inputTokens }]),\n ...(tokens.cacheReadTokens === undefined\n ? []\n : [{ name: \"cache\", value: tokens.cacheReadTokens }]),\n ...(tokens.outputTokens === undefined\n ? []\n : [{ name: \"output\", value: tokens.outputTokens }]),\n ];\n\n return metrics.length === 0 ? undefined : { metrics, name: \"tokens\" };\n}\n\nasync function delay(ms: number): Promise<void> {\n await new Promise<void>((resolveDelay) => {\n setTimeout(resolveDelay, ms);\n });\n}\n","import { WikiGraphScope } from \"wiki-graph-core\";\nimport { withLoggingContext } from \"wiki-graph-core\";\nimport {\n assertBuildJobInputRevision,\n buildChapterGraphArtifact,\n buildChapterSummaryArtifactFromSnapshot,\n commitChapterGraphArtifact,\n commitChapterKnowledgeGraphArtifact,\n commitChapterSummaryArtifact,\n createDisambiguationProfileNormalizer,\n generateChapterKnowledgeGraphArtifactFromSnapshot,\n getBuildJob,\n readChapterBuildInput,\n recordBuildJobInputRevision,\n runBuildJobWorker,\n snapshotChapterKnowledgeGraphInput,\n snapshotChapterSummaryInput,\n type BuildJob,\n type BuildJobExecutionContext,\n type BuildJobProgressReporter,\n} from \"wiki-graph-core\";\nimport { WikiGraphArchiveFile } from \"wiki-graph-core\";\nimport type {\n GuaranteedRequest,\n GuaranteedRequestController,\n} from \"wiki-graph-core\";\nimport type { LLMessage } from \"wiki-graph-core\";\n\nimport { loadCLIConfig, type CLIConfig } from \"../../runtime/config.js\";\nimport {\n createStageLLM,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n loadRequiredStageConfig,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"../../runtime/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\n\nexport async function runQueueWorker(): Promise<void> {\n const config = await loadCLIConfig();\n\n await runBuildJobWorker({\n concurrency: config.concurrent?.job ?? DEFAULT_GENERATION_JOB_CONCURRENCY,\n executeJob: async (job, reporter, context) => {\n await executeBuildJob(job, reporter, context);\n },\n });\n}\n\nasync function executeBuildJob(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n await withLoggingContext(\n {\n logDirPath: job.logPath,\n operation: \"build-job\",\n },\n async () => {\n await executeBuildJobWithLogging(job, reporter, context);\n },\n );\n}\n\nasync function executeBuildJobWithLogging(\n job: BuildJob,\n reporter: BuildJobProgressReporter,\n context: BuildJobExecutionContext,\n): Promise<void> {\n const config = await loadRequiredStageConfig({\n ...(job.llmJSON === undefined ? {} : { llmJSON: job.llmJSON }),\n });\n const llm = createStageLLM(config, {\n cacheDirPath: job.cachePath,\n logDirPath: job.logPath,\n onStreamProgress: async (event) => {\n await reporter.addOutputCharacters(event.outputCharacters);\n },\n onTokenUsage: async (usage) => {\n await reporter.addTokenUsage({\n ...(usage.cacheReadTokens === undefined\n ? {}\n : { cacheReadTokens: usage.cacheReadTokens }),\n ...(usage.inputTokens === undefined\n ? {}\n : { inputTokens: usage.inputTokens }),\n ...(usage.outputTokens === undefined\n ? {}\n : { outputTokens: usage.outputTokens }),\n });\n },\n });\n const promptSource = job.prompt ?? config.prompt;\n const extractionPrompt = resolveExtractionPrompt(promptSource);\n const knowledgeGraphRecallPrompt =\n resolveKnowledgeGraphRecallPrompt(promptSource);\n const request: GuaranteedRequestController = async (\n messages: readonly LLMessage[],\n index: number,\n maxRetries: number,\n ): Promise<string> =>\n await llm.request(messages, {\n retryIndex: index,\n retryMax: maxRetries,\n scope: WikiGraphScope.ReaderExtraction,\n signal: context.signal,\n });\n request.lazy = async <T>(\n operation: (request: GuaranteedRequest) => Promise<T>,\n ): Promise<T> => await llm.request(async () => await operation(request));\n\n const buildInput = await new WikiGraphArchiveFile(\n job.archivePath,\n ).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n );\n let { details } = buildInput;\n const { sourceText } = buildInput;\n await recordBuildJobInputRevision({\n currentRevision: buildInput.revision,\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n\n await reporter.setTotals({\n totalGraphWords: details.stage === \"sourced\" ? details.words : 0,\n totalReadingSummaryWords:\n details.stage === \"sourced\" || details.stage === \"graphed\"\n ? details.words\n : 0,\n });\n\n if (details.stage === \"planned\") {\n throw new Error(\n `Chapter ${job.chapterId} is planned. Set source before queueing a build job.`,\n );\n }\n if (job.target === \"knowledge-graph\") {\n const wikispine = requireKnowledgeGraphWikispineConfig(config);\n\n await reporter.stepStarted(\"knowledge-graph\");\n const knowledgeGraphInput = await new WikiGraphArchiveFile(\n job.archivePath,\n ).readDocument(async (document) => {\n await assertCurrentBuildInputRevision(job, document);\n return await snapshotChapterKnowledgeGraphInput(document, job.chapterId);\n });\n const artifact = await generateChapterKnowledgeGraphArtifactFromSnapshot(\n job.chapterId,\n knowledgeGraphInput,\n {\n policyPrompt: knowledgeGraphRecallPrompt,\n progressTracker: reporter,\n request,\n resolverOptions: {\n logDirPath: job.logPath,\n normalizer: createDisambiguationProfileNormalizer({ request }),\n },\n wikispine,\n workspacePath: job.workspacePath,\n },\n );\n\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await new WikiGraphArchiveFile(job.archivePath).write(async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n await commitChapterKnowledgeGraphArtifact(document, artifact);\n });\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await reporter.stepCompleted(\"knowledge-graph\");\n assertJobStillRunning(await getBuildJob(job.jobId));\n return;\n }\n if (details.stage === \"sourced\") {\n let graphWords = 0;\n\n await reporter.stepStarted(\"reading-graph\");\n const artifact = await buildChapterGraphArtifact(job.chapterId, {\n extractionPrompt,\n llm,\n sourceText,\n workspacePath: job.workspacePath,\n progressTracker: {\n async advance(wordsCount) {\n graphWords += wordsCount;\n await reporter.updateWords({ graphWords });\n },\n async complete(finalWordsCount) {\n await reporter.updateWords({\n graphWords: finalWordsCount ?? details.words,\n });\n },\n },\n });\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n details = await new WikiGraphArchiveFile(job.archivePath).write(\n async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n return await commitChapterGraphArtifact(document, artifact);\n },\n );\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n const nextBuildInput = await new WikiGraphArchiveFile(\n job.archivePath,\n ).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n );\n details = nextBuildInput.details;\n await recordBuildJobInputRevision({\n currentRevision: nextBuildInput.revision,\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n await reporter.updateWords({ graphWords: details.words });\n await reporter.stepCompleted(\"reading-graph\");\n }\n\n const latestJob = await getBuildJob(job.jobId);\n\n assertJobStillRunning(latestJob);\n if (latestJob.target === \"reading-graph\" || details.stage === \"summarized\") {\n return;\n }\n if (details.stage !== \"graphed\") {\n ({ details } = await new WikiGraphArchiveFile(job.archivePath).readDocument(\n async (document) => await readChapterBuildInput(document, job.chapterId),\n ));\n }\n if (details.stage !== \"graphed\") {\n throw new Error(\n `Chapter ${job.chapterId} is ${details.stage}. Cannot generate summary.`,\n );\n }\n\n await reporter.stepStarted(\"reading-summary\");\n const summaryInput = await new WikiGraphArchiveFile(\n job.archivePath,\n ).readDocument(async (document) => {\n await assertCurrentBuildInputRevision(job, document);\n return await snapshotChapterSummaryInput(\n document,\n job.chapterId,\n job.workspacePath,\n );\n });\n const summary = await buildChapterSummaryArtifactFromSnapshot(job.chapterId, {\n llm,\n snapshotPath: summaryInput.filePath,\n workspacePath: job.workspacePath,\n });\n await reporter.updatePhase({\n done: 0,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n details = await new WikiGraphArchiveFile(job.archivePath).write(\n async (document) => {\n assertJobStillRunning(await getBuildJob(job.jobId));\n await assertCurrentBuildInputRevision(job, document);\n return await commitChapterSummaryArtifact(\n document,\n job.chapterId,\n summary,\n );\n },\n );\n await reporter.updatePhase({\n done: 1,\n phase: \"committing\",\n total: 1,\n unit: \"item\",\n });\n await reporter.updateWords({ readingSummaryWords: details.words });\n await reporter.stepCompleted(\"reading-summary\");\n assertJobStillRunning(await getBuildJob(job.jobId));\n}\n\nexport function requireKnowledgeGraphWikispineConfig(\n config: CLIConfig,\n): NonNullable<CLIConfig[\"wikispine\"]> {\n if (config.wikispine?.provider !== undefined) {\n return config.wikispine;\n }\n\n throw new Error(\n withHelpRoute(\n [\n \"Knowledge Graph requires WikiSpine.\",\n \"Configure `wikg://local/config/wikispine` with provider `cli` or `fetch`, then run `wg wikg://local/config/wikispine test`.\",\n ].join(\" \"),\n CLI_HELP_ROUTES.config,\n ),\n );\n}\n\nfunction assertJobStillRunning(job: BuildJob): void {\n if (job.state !== \"running\") {\n throw new Error(`Job ${job.jobId} is ${job.state}. Stop before flushing.`);\n }\n}\n\nasync function assertCurrentBuildInputRevision(\n job: BuildJob,\n document: {\n readonly serials: {\n getRevision(serialId: number): Promise<number>;\n };\n },\n): Promise<void> {\n await assertBuildJobInputRevision({\n currentRevision: await document.serials.getRevision(job.chapterId),\n jobId: job.jobId,\n ownerId: requireRunningJobOwnerId(job),\n });\n}\n\nfunction requireRunningJobOwnerId(job: BuildJob): string {\n if (job.ownerId === undefined) {\n throw new Error(`Job ${job.jobId} is not owned by this worker.`);\n }\n\n return job.ownerId;\n}\n","import {\n boostBuildJob,\n cancelBuildJob,\n cleanBuildJobs,\n formatLocatedChapterUri,\n formatLocatedWikiGraphUri,\n getBuildJob,\n listBuildJobs,\n pauseBuildJob,\n resolveChapterPathReadonly,\n resolveBuildJobId,\n resumeBuildJob,\n updateBuildJobTarget,\n WikiGraphArchiveFile,\n} from \"wiki-graph-core\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport { loadRequiredStageConfig } from \"../../runtime/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport {\n addArchiveJobs,\n addChapterJob,\n assertBuildCostAccepted,\n assertQueueAddReady,\n readQueueAddChapter,\n tryStartQueueWorker,\n} from \"./add.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeJobList, writeJobStatus, writeJobSummary } from \"./output.js\";\nimport { watchBuildJob } from \"./watch.js\";\nimport { requireKnowledgeGraphWikispineConfig } from \"./worker.js\";\nimport { resolveArchiveChapterScope } from \"../archive-command/run/scope.js\";\n\nexport { runQueueWorker } from \"./worker.js\";\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n switch (args.action) {\n case \"add\": {\n const chapterIds = await resolveQueueChapterIds(args);\n const singleChapterId =\n chapterIds?.length === 1 ? chapterIds[0]! : undefined;\n if (singleChapterId !== undefined) {\n await assertQueueAddReady(args, singleChapterId);\n }\n assertBuildCostAccepted(args);\n const config = await loadRequiredStageConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n if (args.target === \"knowledge-graph\") {\n requireKnowledgeGraphWikispineConfig(config);\n }\n\n if (chapterIds === undefined) {\n await addArchiveJobs(args, config);\n } else if (chapterIds.length === 1) {\n const chapterId = chapterIds[0]!;\n const chapter = await readQueueAddChapter(args, chapterId);\n const estimate = createQueueAddEstimate({\n chapters: [chapter],\n config,\n target: args.target ?? \"reading-summary\",\n });\n\n await writeJobSummary(await addChapterJob(args, chapterId), {\n estimate,\n json: args.json ?? false,\n watch: true,\n });\n } else {\n await addArchiveJobs({ ...args, chapterIds }, config);\n }\n\n tryStartQueueWorker();\n return;\n }\n case \"list\":\n await writeJobList(\n await listBuildJobs({\n ...(args.activeOnly === undefined\n ? {}\n : { activeOnly: args.activeOnly }),\n ...(args.all === undefined ? {} : { all: args.all }),\n ...(args.archivePath === undefined\n ? {}\n : { archivePath: args.archivePath }),\n }),\n { json: args.json ?? false },\n );\n return;\n case \"status\":\n await writeJobStatus(await getBuildJob(await resolveQueueJobId(args)), {\n json: args.json ?? false,\n });\n return;\n case \"watch\":\n await watchBuildJob(await resolveQueueJobId(args), {\n from: args.from ?? \"beginning\",\n jsonl: args.jsonl ?? !process.stdout.isTTY,\n });\n return;\n case \"pause\":\n await writeJobSummary(await pauseBuildJob(await resolveQueueJobId(args)));\n return;\n case \"resume\":\n await writeJobSummary(\n await resumeBuildJob(await resolveQueueJobId(args)),\n );\n tryStartQueueWorker();\n return;\n case \"cancel\":\n await writeJobSummary(\n await cancelBuildJob(await resolveQueueJobId(args)),\n );\n return;\n case \"boost\":\n await writeJobSummary(await boostBuildJob(await resolveQueueJobId(args)));\n tryStartQueueWorker();\n return;\n case \"target\":\n await writeJobSummary(\n await updateBuildJobTarget(\n await resolveQueueJobId(args),\n args.target ?? \"reading-summary\",\n ),\n );\n tryStartQueueWorker();\n return;\n case \"clean\":\n await writeTextToStdout(`Cleaned ${await cleanBuildJobs()} jobs.\\n`);\n return;\n }\n}\n\nasync function resolveQueueJobId(args: CLIQueueArguments): Promise<string> {\n return await resolveBuildJobId(args.jobId!);\n}\n\nasync function resolveQueueChapterIds(\n args: CLIQueueArguments,\n): Promise<readonly number[] | undefined> {\n if (args.chapterId !== undefined) {\n return [args.chapterId];\n }\n if (args.chapterPath === undefined && args.depth === undefined) {\n return undefined;\n }\n\n let chapterIds: readonly number[] | undefined;\n await new WikiGraphArchiveFile(args.archivePath!).readDocument(\n async (document) => {\n if (args.chapterPath === undefined) {\n chapterIds = (\n await resolveArchiveChapterScope(document, {\n archivePath: formatLocatedWikiGraphUri(\n args.archivePath!,\n \"wikg://chapter\",\n ),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n })\n )?.chapterIds;\n return;\n }\n chapterIds = (\n await resolveArchiveChapterScope(document, {\n archivePath: formatLocatedChapterUri(\n args.archivePath!,\n args.chapterPath,\n ),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n })\n )?.chapterIds ?? [\n await resolveChapterPathReadonly(document, args.chapterPath),\n ];\n },\n );\n return chapterIds;\n}\n","export * from \"wiki-graph-core\";\nexport {\n createWikiGraphCLI,\n runWikiGraphCLI,\n runWikiGraphCLICaptured,\n} from \"./app/index.js\";\nexport type {\n RunWikiGraphCLICapturedResult,\n RunWikiGraphCLIInput,\n RunWikiGraphCLIResult,\n WikiGraphCLI,\n} from \"./app/index.js\";\n","import { Readable, Writable } from \"stream\";\n\nimport { withWikiGraphRuntimeStateDirectoryPath } from \"wiki-graph-core\";\nimport { dispatchWikiGraphCLI } from \"./dispatch.js\";\nimport {\n getCLIExitCode,\n withWikiGraphCLIRuntimeContext,\n type WikiGraphCLIRuntimeContext,\n} from \"../runtime/context.js\";\nimport {\n createEntryRuntimeContext,\n type WikiGraphEntryEnvPolicy,\n} from \"../runtime/entry-context.js\";\n\nexport interface RunWikiGraphCLIInput {\n /**\n * CLI arguments without the executable name. For example, `[\"--help\"]`\n * simulates `wg --help`.\n */\n readonly argv?: readonly string[] | undefined;\n readonly cwd?: string | undefined;\n readonly devProjectRoot?: string | undefined;\n readonly env?: NodeJS.ProcessEnv | undefined;\n readonly signal?: AbortSignal | undefined;\n readonly stateDir?: string | undefined;\n readonly stderr?: NodeJS.WritableStream | undefined;\n readonly stderrIsTTY?: boolean | undefined;\n readonly stdin?: NodeJS.ReadableStream | Uint8Array | string | undefined;\n readonly stdinIsTTY?: boolean | undefined;\n readonly stdout?: NodeJS.WritableStream | undefined;\n readonly stdoutIsTTY?: boolean | undefined;\n}\n\nexport interface RunWikiGraphCLIResult {\n readonly exitCode: number;\n}\n\nexport interface RunWikiGraphCLICapturedResult extends RunWikiGraphCLIResult {\n readonly stderr: string;\n readonly stdout: string;\n}\n\nexport interface WikiGraphCLI {\n run(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLIResult>;\n runCaptured(\n argv?: readonly string[],\n overrides?: RunWikiGraphCLIInput,\n ): Promise<RunWikiGraphCLICapturedResult>;\n}\n\nexport async function runWikiGraphCLI(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLIResult> {\n return await runWikiGraphCLIWithEntryPolicy(input, \"production\");\n}\n\nexport async function runWikiGraphCLIWithEntryPolicy(\n input: RunWikiGraphCLIInput = {},\n envPolicy: WikiGraphEntryEnvPolicy,\n): Promise<RunWikiGraphCLIResult> {\n throwIfAborted(input.signal);\n\n const stdin = createInputStream(input.stdin ?? process.stdin);\n const stdout = input.stdout ?? process.stdout;\n const stderr = input.stderr ?? process.stderr;\n const argv = input.argv ?? process.argv.slice(2);\n let entryContext: ReturnType<typeof createEntryRuntimeContext>;\n\n try {\n entryContext = createEntryRuntimeContext({\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: input.devProjectRoot,\n env: input.env,\n envPolicy,\n stateDir: input.stateDir,\n });\n } catch (error) {\n stderr.write(`${error instanceof Error ? error.message : String(error)}\\n`);\n return { exitCode: 1 };\n }\n\n const context: WikiGraphCLIRuntimeContext = {\n argv,\n cwd: input.cwd ?? process.cwd(),\n devProjectRoot: entryContext.devProjectRoot,\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n exitCode: 0,\n queueAutostart: true,\n signal: input.signal,\n stateDir: entryContext.stateDir,\n stderr,\n stderrIsTTY: input.stderrIsTTY,\n stdin,\n stdinIsTTY: input.stdinIsTTY,\n stdout,\n stdoutIsTTY: input.stdoutIsTTY,\n };\n\n return await withWikiGraphRuntimeStateDirectoryPath(\n entryContext.stateDir,\n async () =>\n withWikiGraphCLIRuntimeContext(context, async () => {\n const result = await dispatchWikiGraphCLI({\n argv,\n stderr,\n stdinIsTTY: context.stdinIsTTY ?? stdin.isTTY,\n stdout,\n });\n throwIfAborted(input.signal);\n const exitCode = normalizeExitCode(getCLIExitCode(), result.exitCode);\n\n return { exitCode };\n }),\n );\n}\n\nexport async function runWikiGraphCLICaptured(\n input: RunWikiGraphCLIInput = {},\n): Promise<RunWikiGraphCLICapturedResult> {\n const stdout = new CaptureWritable(input.stdoutIsTTY);\n const stderr = new CaptureWritable(input.stderrIsTTY);\n const result = await runWikiGraphCLI({\n ...input,\n stderr,\n stdout,\n });\n\n return {\n exitCode: result.exitCode,\n stderr: stderr.text,\n stdout: stdout.text,\n };\n}\n\nexport function createWikiGraphCLI(\n defaults: RunWikiGraphCLIInput = {},\n): WikiGraphCLI {\n return {\n run(argv, overrides = {}) {\n return runWikiGraphCLI(mergeCLIInputs(defaults, argv, overrides));\n },\n runCaptured(argv, overrides = {}) {\n return runWikiGraphCLICaptured(mergeCLIInputs(defaults, argv, overrides));\n },\n };\n}\n\nfunction mergeCLIInputs(\n defaults: RunWikiGraphCLIInput,\n argv: readonly string[] | undefined,\n overrides: RunWikiGraphCLIInput,\n): RunWikiGraphCLIInput {\n return {\n ...defaults,\n ...overrides,\n argv: argv ?? overrides.argv ?? defaults.argv,\n };\n}\n\nfunction createInputStream(\n input: NodeJS.ReadableStream | Uint8Array | string,\n): NodeJS.ReadableStream & { isTTY?: boolean | undefined } {\n if (typeof input === \"string\" || input instanceof Uint8Array) {\n return Readable.from([input]) as NodeJS.ReadableStream & {\n isTTY?: boolean | undefined;\n };\n }\n\n return input as NodeJS.ReadableStream & { isTTY?: boolean | undefined };\n}\n\nfunction normalizeExitCode(\n currentExitCode: NodeJS.Process[\"exitCode\"],\n fallbackExitCode: number,\n): number {\n if (currentExitCode === undefined || currentExitCode === 0) {\n return fallbackExitCode;\n }\n\n const numericExitCode = Number(currentExitCode);\n\n return Number.isFinite(numericExitCode) ? numericExitCode : 1;\n}\n\nfunction throwIfAborted(signal: AbortSignal | undefined): void {\n if (signal?.aborted !== true) {\n return;\n }\n\n throw signal.reason instanceof Error\n ? signal.reason\n : new Error(\"The Wiki Graph CLI run was aborted.\");\n}\n\nclass CaptureWritable extends Writable {\n readonly #chunks: string[] = [];\n\n public constructor(isTTY: boolean | undefined) {\n super();\n Object.defineProperty(this, \"isTTY\", {\n configurable: true,\n value: isTTY ?? false,\n });\n }\n\n public get text(): string {\n return this.#chunks.join(\"\");\n }\n\n public override _write(\n chunk: Buffer | string,\n encoding: BufferEncoding,\n callback: (error?: Error | null) => void,\n ): void {\n if (typeof chunk === \"string\") {\n this.#chunks.push(chunk);\n callback();\n return;\n }\n\n const normalizedEncoding = encoding as BufferEncoding | \"buffer\";\n this.#chunks.push(\n chunk.toString(normalizedEncoding === \"buffer\" ? \"utf8\" : encoding),\n );\n callback();\n }\n}\n","import {\n formatWikiGraphLibraryUri,\n parseLocatedWikiGraphUri,\n parseWikiGraphLibraryUri,\n resolveDataDirPath,\n} from \"wiki-graph-core\";\nimport { createEnv } from \"wiki-graph-core\";\n\nimport { CLI_FULL_COMMAND, CLI_PRIMARY_COMMAND } from \"wiki-graph-core\";\nimport type { ParsedWikiGraphLibraryUri } from \"wiki-graph-core\";\nimport { CLI_FORMATS } from \"../support/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { formatCliCommand } from \"../support/index.js\";\nimport type {\n CLIArchiveAction,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLILibraryAction,\n} from \"./types.js\";\nimport { parseChapterTarget } from \"./uri/chapter/target.js\";\n\nexport const HELP_TOPICS = [\n \"format\",\n \"config\",\n \"runtime\",\n \"uri\",\n \"recipe\",\n \"readiness\",\n \"library\",\n] as const;\n\nexport type HelpTopic = (typeof HELP_TOPICS)[number];\n\nexport type UriHelpTargetName =\n | \"archive-scope\"\n | \"chapter-collection-scope\"\n | \"chapter-scope\"\n | \"chapter-source-range-object\"\n | \"chapter-source-object\"\n | \"chapter-summary-range-object\"\n | \"chapter-summary-object\"\n | \"chapter-title-object\"\n | \"chapter-tree-object\"\n | \"chapter-state-object\"\n | \"chunk-scope\"\n | \"chunk-object\"\n | \"cover-object\"\n | \"entity-scope\"\n | \"entity-object\"\n | \"entity-wikipage-object\"\n | \"index-object\"\n | \"job-collection-scope\"\n | \"job-object\"\n | \"job-target-object\"\n | \"local-config-namespace\"\n | \"local-config-section\"\n | \"metadata-object\"\n | \"summary-object\"\n | \"triple-scope\"\n | \"triple-object\";\n\nexport type UriHelpPredicateName =\n | \"add\"\n | \"boost\"\n | \"cancel\"\n | \"clear\"\n | \"clean\"\n | \"create\"\n | \"delete\"\n | \"disable\"\n | \"embed\"\n | \"enable\"\n | \"evidence\"\n | \"export\"\n | \"external\"\n | \"inspect\"\n | \"move\"\n | \"pack\"\n | \"pause\"\n | \"put\"\n | \"related\"\n | \"remove\"\n | \"reset\"\n | \"resume\"\n | \"set\"\n | \"test\"\n | \"watch\";\n\nexport type LibraryHelpPredicateName = CLILibraryAction | \"disable\" | \"enable\";\n\ninterface UriHelpTarget {\n readonly name: UriHelpTargetName;\n readonly predicates: readonly UriHelpPredicateName[];\n}\n\nconst URI_HELP_TARGETS: readonly UriHelpTarget[] = [\n {\n name: \"archive-scope\",\n predicates: [\"create\", \"export\", \"inspect\"],\n },\n {\n name: \"chapter-collection-scope\",\n predicates: [\"add\"],\n },\n {\n name: \"chapter-scope\",\n predicates: [\"move\", \"remove\", \"reset\"],\n },\n { name: \"chapter-source-range-object\", predicates: [] },\n { name: \"chapter-source-object\", predicates: [\"set\"] },\n { name: \"chapter-summary-range-object\", predicates: [] },\n { name: \"chapter-summary-object\", predicates: [\"set\"] },\n { name: \"chapter-title-object\", predicates: [\"clear\", \"set\"] },\n { name: \"chapter-tree-object\", predicates: [\"set\"] },\n { name: \"chapter-state-object\", predicates: [] },\n { name: \"chunk-scope\", predicates: [] },\n { name: \"chunk-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"cover-object\", predicates: [] },\n {\n name: \"entity-scope\",\n predicates: [],\n },\n { name: \"entity-object\", predicates: [\"evidence\", \"pack\", \"related\"] },\n { name: \"entity-wikipage-object\", predicates: [] },\n {\n name: \"index-object\",\n predicates: [\"enable\", \"disable\", \"embed\", \"external\"],\n },\n {\n name: \"job-collection-scope\",\n predicates: [\"add\", \"clean\"],\n },\n {\n name: \"job-object\",\n predicates: [\"boost\", \"cancel\", \"pause\", \"resume\", \"watch\"],\n },\n { name: \"job-target-object\", predicates: [\"set\"] },\n {\n name: \"local-config-namespace\",\n predicates: [],\n },\n {\n name: \"local-config-section\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\", \"test\"],\n },\n {\n name: \"metadata-object\",\n predicates: [\"clear\", \"delete\", \"put\", \"set\"],\n },\n { name: \"summary-object\", predicates: [] },\n { name: \"triple-scope\", predicates: [] },\n { name: \"triple-object\", predicates: [\"evidence\"] },\n] as const;\n\nconst URI_HELP_TARGET_LOOKUP = new Map<UriHelpTargetName, UriHelpTarget>(\n URI_HELP_TARGETS.map((target) => [target.name, target]),\n);\n\nexport const ARCHIVE_COMMANDS = [\n \"create\",\n \"related\",\n \"evidence\",\n \"next\",\n \"pack\",\n \"inspect\",\n \"export\",\n] as const satisfies readonly CLIArchiveAction[];\n\nexport const ARCHIVE_MAINTENANCE_COMMANDS = [\n \"cover\",\n \"meta\",\n \"chapter\",\n] as const satisfies readonly CLIArchiveMaintenanceCommand[];\n\nconst HELP_TOPIC_METADATA: readonly {\n readonly name: HelpTopic;\n readonly summary: string;\n}[] = [\n {\n name: \"format\",\n summary: \"Supported formats, inference rules, and IO constraints.\",\n },\n {\n name: \"config\",\n summary: \"Configuration overview, precedence, and when each layer applies.\",\n },\n {\n name: \"runtime\",\n summary: \"Advanced runtime, worker, cache, log, JSONL, and debug behavior.\",\n },\n {\n name: \"uri\",\n summary:\n \"URI grammar, command routing, scopes, objects, and retrieval strategy.\",\n },\n {\n name: \"recipe\",\n summary: \"Recommended workflow and best practices after root help.\",\n },\n {\n name: \"readiness\",\n summary: \"Search index, LLM, WikiSpine, and generated-data prerequisites.\",\n },\n {\n name: \"library\",\n summary:\n \"Library registries, archive memberships, path binding, and aggregate indexes.\",\n },\n] as const;\n\nconst ARCHIVE_MAINTENANCE_COMMAND_METADATA: readonly {\n readonly name: CLIArchiveMaintenanceCommand;\n readonly summary: string;\n}[] = [\n {\n name: \"cover\",\n summary: \"Write raw cover bytes to stdout for redirection or piping.\",\n },\n {\n name: \"meta\",\n summary: \"Read or edit metadata attached to an object.\",\n },\n {\n name: \"chapter\",\n summary: \"Edit the chapter tree and per-chapter digest stages.\",\n },\n] as const;\n\nconst HELP_TOPIC_TEMPLATE_NAMES: Readonly<Record<HelpTopic, string>> = {\n format: \"help/topics/format\",\n config: \"help/topics/config\",\n runtime: \"help/topics/runtime\",\n uri: \"help/topics/uri\",\n recipe: \"help/topics/recipe\",\n readiness: \"help/topics/readiness\",\n library: \"help/topics/library\",\n};\n\nlet helpTemplateEnvironment: ReturnType<typeof createEnv> | undefined;\n\nexport function renderMainHelpText(): string {\n return renderHelpTemplate(\"help/commands/root\");\n}\n\nexport function renderTransformHelpText(): string {\n return renderHelpTemplate(\"help/commands/transform\");\n}\n\nexport function renderGcCommandHelpText(): string {\n return renderHelpTemplate(\"help/commands/gc\");\n}\n\nexport function renderLegacyCommandHelpText(action?: \"migrate\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/legacy\"\n : `help/commands/legacy/${action}`,\n );\n}\n\nexport function renderMaintenanceCommandHelpText(action?: \"upgrade\"): string {\n return renderHelpTemplate(\n action === undefined\n ? \"help/commands/maintenance\"\n : `help/commands/maintenance/${action}`,\n );\n}\n\nexport function renderArchiveCommandHelpText(action: CLIArchiveAction): string {\n return renderHelpTemplate(`help/commands/archive/${action}`);\n}\n\nexport function renderHelpTopicText(topic: HelpTopic): string {\n return renderHelpTemplate(HELP_TOPIC_TEMPLATE_NAMES[topic]);\n}\n\nexport function renderUriHelpText(\n targetName: UriHelpTargetName,\n uri: string,\n): string {\n return renderHelpTemplate(\"help/commands/uri\", {\n libraryContext: getLibraryHelpContext(uri),\n target: requireUriHelpTarget(targetName),\n uriContext: getUriHelpContext(uri),\n uri,\n });\n}\n\nexport function renderUriPredicateHelpText(\n targetName: UriHelpTargetName,\n predicate: UriHelpPredicateName,\n uri: string,\n): string {\n const target = requireUriHelpTarget(targetName);\n\n if (!target.predicates.includes(predicate)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${predicate}\\`.`,\n formatCliCommand([uri, \"--help\"]),\n ),\n );\n }\n\n return renderHelpTemplate(\"help/commands/predicate\", {\n libraryContext: getLibraryHelpContext(uri),\n predicate,\n target,\n uriContext: getUriHelpContext(uri),\n uri,\n });\n}\n\nexport function renderLibraryUriHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n return renderHelpTemplate(\"help/commands/library\", {\n target,\n uri: formatLibraryHelpUri(uri, target),\n });\n}\n\nexport function renderLibraryPredicateHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n predicate: LibraryHelpPredicateName,\n): string {\n return renderHelpTemplate(\"help/commands/library-predicate\", {\n predicate,\n target,\n uri: formatLibraryHelpUri(uri, target),\n });\n}\n\nfunction formatLibraryHelpUri(\n fallbackUri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const scopeUri = formatWikiGraphLibraryUri(target.publicId);\n switch (target.kind) {\n case \"archive\":\n if (target.archivePublicId === undefined) {\n return fallbackUri.replace(/\\/+$/u, \"\");\n }\n return appendLibraryHelpPath(\n appendLibraryHelpPath(`${scopeUri}/arc`, target.archivePublicId),\n stripHelpObjectUriPrefix(target.objectUri),\n );\n case \"archive-collection\":\n return `${scopeUri}/arc`;\n case \"archive-path\":\n return target.archivePublicId === undefined\n ? `${scopeUri}/arc/path`\n : `${scopeUri}/arc/${target.archivePublicId}/path`;\n case \"archive-tree\":\n return `${scopeUri}/arc/tree`;\n case \"metadata\":\n return `${scopeUri}/meta`;\n case \"path\":\n return `${scopeUri}/path`;\n case \"registry\":\n return \"wikg://lib/registry\";\n case \"scope\":\n return appendLibraryHelpPath(\n scopeUri,\n stripHelpObjectUriPrefix(target.objectUri),\n );\n default:\n throw new Error(\"Internal error: unknown library help target.\");\n }\n}\n\nfunction appendLibraryHelpPath(\n baseUri: string,\n path: string | undefined,\n): string {\n if (path === undefined || path === \"\") {\n return baseUri;\n }\n return `${baseUri.replace(/\\/+$/u, \"\")}/${path.replace(/^\\/+|\\/+$/gu, \"\")}`;\n}\n\nfunction stripHelpObjectUriPrefix(\n objectUri: string | undefined,\n): string | undefined {\n return objectUri?.replace(/^wikg:\\/\\//u, \"\");\n}\n\nexport function isUriHelpPredicate(\n targetName: UriHelpTargetName,\n predicate: string,\n): predicate is UriHelpPredicateName {\n return requireUriHelpTarget(targetName).predicates.includes(\n predicate as UriHelpPredicateName,\n );\n}\n\nexport function renderArchiveMaintenanceCommandHelpText(\n command: CLIArchiveMaintenanceCommand,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/${command}`);\n}\n\nexport function renderArchiveMaintenanceChapterActionHelpText(\n action: CLIArchiveChapterAction,\n): string {\n return renderHelpTemplate(`help/commands/maintenance/chapter/${action}`);\n}\n\nexport function parseHelpTopic(value: string): HelpTopic {\n const normalized = value.trim().toLowerCase();\n\n if (HELP_TOPICS.includes(normalized as HelpTopic)) {\n return normalized as HelpTopic;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid help topic: ${value}. Expected one of ${HELP_TOPICS.join(\", \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction requireUriHelpTarget(name: UriHelpTargetName): UriHelpTarget {\n const target = URI_HELP_TARGET_LOOKUP.get(name);\n\n if (target === undefined) {\n throw new Error(`Internal error: unknown URI help target ${name}.`);\n }\n\n return target;\n}\n\nfunction getLibraryHelpContext(uri: string): {\n readonly isArchiveShortcut: boolean;\n readonly isLibraryUri: boolean;\n readonly isLibraryWide: boolean;\n} {\n const target = (() => {\n try {\n return parseWikiGraphLibraryUri(uri);\n } catch {\n return undefined;\n }\n })();\n\n if (target === undefined) {\n return {\n isArchiveShortcut: false,\n isLibraryUri: false,\n isLibraryWide: false,\n };\n }\n\n return {\n isArchiveShortcut: target.kind === \"archive\",\n isLibraryUri: true,\n isLibraryWide: target.kind === \"scope\" && target.objectUri !== undefined,\n };\n}\n\nfunction getUriHelpContext(uri: string): {\n readonly isChapterQualified: boolean;\n} {\n const objectUri = getHelpObjectUri(uri);\n const target =\n objectUri === undefined ? undefined : parseChapterTarget(objectUri);\n\n return {\n isChapterQualified:\n target?.kind === \"chapter-lens\" ||\n target?.kind === \"chapter-triple-pattern-lens\",\n };\n}\n\nfunction getHelpObjectUri(uri: string): string | undefined {\n try {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (libraryTarget?.objectUri !== undefined) {\n return libraryTarget.objectUri;\n }\n } catch {\n // Fall through to the generic URI parser.\n }\n\n try {\n return parseLocatedWikiGraphUri(uri).objectUri;\n } catch {\n return undefined;\n }\n}\n\nfunction renderHelpTemplate(\n templateName: string,\n extraContext: Record<string, unknown> = {},\n): string {\n return getHelpTemplateEnvironment().render(templateName, {\n formats: CLI_FORMATS,\n commandName: CLI_PRIMARY_COMMAND,\n fullCommandName: CLI_FULL_COMMAND,\n helpTopics: HELP_TOPIC_METADATA,\n archiveMaintenanceCommands: ARCHIVE_MAINTENANCE_COMMAND_METADATA,\n uriHelpTargets: URI_HELP_TARGETS,\n ...extraContext,\n });\n}\n\nfunction getHelpTemplateEnvironment(): ReturnType<typeof createEnv> {\n helpTemplateEnvironment ??= createEnv(resolveDataDirPath(), {\n autoescape: false,\n });\n\n return helpTemplateEnvironment;\n}\n","import { parseChapterPath, type ArchiveTriplePattern } from \"wiki-graph-core\";\n\nimport type { ArchiveUriLens, ChapterStateUriTarget } from \"../../types.js\";\nimport {\n parseArchiveUriLensObjectUri,\n parseTriplePatternObjectUri,\n parseTriplePatternSuffix,\n} from \"../triple-pattern.js\";\n\nexport type ChapterUriTarget =\n | { readonly kind: \"collection\" }\n | { readonly kind: \"lens\"; readonly lens: ArchiveUriLens }\n | {\n readonly kind: \"triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | { readonly kind: \"tree\" }\n | { readonly chapterPath: string; readonly kind: \"chapter\" }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-lens\";\n readonly lens: ArchiveUriLens;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-triple-pattern-lens\";\n readonly pattern: ArchiveTriplePattern;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-state\";\n readonly target?: ChapterStateUriTarget;\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-resource\";\n readonly resource: \"source\" | \"summary\" | \"title\";\n };\n\nexport function parseChapterTarget(\n objectUri: string,\n): ChapterUriTarget | undefined {\n if (objectUri === \"wikg://chapter\") {\n return { kind: \"collection\" };\n }\n\n if (objectUri === \"wikg://chapter/tree\") {\n return { kind: \"tree\" };\n }\n\n const archiveLens = parseArchiveUriLensObjectUri(objectUri);\n if (archiveLens !== undefined) {\n return { kind: \"lens\", lens: archiveLens };\n }\n\n const archiveTriplePattern = parseTriplePatternObjectUri(objectUri);\n if (archiveTriplePattern !== undefined) {\n return {\n kind: \"triple-pattern-lens\",\n pattern: archiveTriplePattern,\n };\n }\n\n const match = /^wikg:\\/\\/chapter\\/(.+)$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n return undefined;\n }\n\n const parsed = parseChapterPathAndSuffix(match[1]);\n if (parsed === undefined) {\n return undefined;\n }\n const { chapterPath, suffix } = parsed;\n const chapterTriplePattern =\n suffix === undefined ? undefined : parseTriplePatternSuffix(suffix);\n\n if (chapterTriplePattern !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-triple-pattern-lens\",\n pattern: chapterTriplePattern,\n };\n }\n\n const chapterStateTarget = parseChapterStateSuffix(suffix);\n\n if (chapterStateTarget !== undefined) {\n return {\n chapterPath,\n kind: \"chapter-state\",\n ...(chapterStateTarget === \"all\" ? {} : { target: chapterStateTarget }),\n };\n }\n\n const resource = parseChapterResourceSuffix(suffix);\n\n if (suffix !== undefined && resource === undefined) {\n return undefined;\n }\n\n if (resource === undefined) {\n return { chapterPath, kind: \"chapter\" };\n }\n if (resource === \"state\") {\n return { chapterPath, kind: \"chapter-state\" };\n }\n if (resource === \"chunk\" || resource === \"entity\" || resource === \"triple\") {\n return { chapterPath, kind: \"chapter-lens\", lens: resource };\n }\n if (resource === \"source\" || resource === \"summary\") {\n return { chapterPath, kind: \"chapter-resource\", resource };\n }\n\n return { chapterPath, kind: \"chapter-resource\", resource };\n}\n\nfunction parseChapterPathAndSuffix(\n value: string,\n): { readonly chapterPath: string; readonly suffix?: string } | undefined {\n const pathWithoutFragment = value.replace(/#.*$/u, \"\");\n const parts = pathWithoutFragment.replace(/\\/+$/u, \"\").split(\"/\");\n const suffixStart = parts.findIndex((part) =>\n [\n \"chunk\",\n \"entity\",\n \"source\",\n \"state\",\n \"summary\",\n \"title\",\n \"triple\",\n ].includes(part),\n );\n const pathParts = suffixStart === -1 ? parts : parts.slice(0, suffixStart);\n const suffixParts = suffixStart === -1 ? [] : parts.slice(suffixStart);\n\n const chapterPath = parseChapterPath(pathParts.join(\"/\"), \"chapter URI\");\n return {\n chapterPath,\n ...(suffixParts.length === 0 ? {} : { suffix: suffixParts.join(\"/\") }),\n };\n}\n\nfunction parseChapterStateSuffix(\n suffix: string | undefined,\n): ChapterStateUriTarget | \"all\" | undefined {\n if (suffix === \"state\") {\n return \"all\";\n }\n\n switch (suffix) {\n case \"state/source\":\n return \"source\";\n case \"state/reading-graph\":\n return \"reading-graph\";\n case \"state/reading-summary\":\n return \"reading-summary\";\n case \"state/knowledge-graph\":\n return \"knowledge-graph\";\n default:\n return undefined;\n }\n}\n\nfunction parseChapterResourceSuffix(\n suffix: string | undefined,\n):\n | \"chunk\"\n | \"entity\"\n | \"source\"\n | \"state\"\n | \"summary\"\n | \"title\"\n | \"triple\"\n | undefined {\n switch (suffix) {\n case undefined:\n case \"chunk\":\n case \"entity\":\n case \"source\":\n case \"state\":\n case \"summary\":\n case \"title\":\n case \"triple\":\n return suffix;\n default:\n return undefined;\n }\n}\n","import type { ArchiveTriplePattern } from \"wiki-graph-core\";\n\nimport type { ArchiveUriLens } from \"../types.js\";\n\nexport function parseTriplePatternObjectUri(\n objectUri: string,\n): ArchiveTriplePattern | undefined {\n if (!objectUri.startsWith(\"wikg://triple/\")) {\n return undefined;\n }\n\n return parseTriplePatternSuffix(objectUri.slice(\"wikg://\".length));\n}\n\nexport function parseTriplePatternSuffix(\n suffix: string,\n): ArchiveTriplePattern | undefined {\n const parts = suffix.split(\"/\");\n\n if (parts[0] !== \"triple\" || parts.length < 2 || parts.length > 4) {\n return undefined;\n }\n\n const [subject = \"_\", predicate = \"_\", object = \"_\"] = parts.slice(1);\n const hasPlaceholder = parts.slice(1).includes(\"_\");\n const hasOmittedTrailingPlaceholder = parts.length < 4;\n\n if (!hasPlaceholder && !hasOmittedTrailingPlaceholder) {\n return undefined;\n }\n\n if (\n !isTriplePatternQidSegment(subject) ||\n !isTriplePatternPredicateSegment(predicate) ||\n !isTriplePatternQidSegment(object)\n ) {\n return undefined;\n }\n\n return {\n ...(object === \"_\" ? {} : { objectQid: object }),\n ...(predicate === \"_\" ? {} : { predicate: decodeURIComponent(predicate) }),\n ...(subject === \"_\" ? {} : { subjectQid: subject }),\n };\n}\n\nexport function isTripleScopePath(path: string): boolean {\n if (path === \"triple\" || /^chapter\\/[1-9][0-9]*\\/triple$/u.test(path)) {\n return true;\n }\n\n const suffix = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n\n return suffix === undefined\n ? false\n : parseTriplePatternSuffix(suffix) !== undefined;\n}\n\nfunction isTriplePatternQidSegment(value: string): boolean {\n return value === \"_\" || /^Q[1-9][0-9]*$/u.test(value);\n}\n\nfunction isTriplePatternPredicateSegment(value: string): boolean {\n return value === \"_\" || (value !== \"\" && !value.includes(\"/\"));\n}\n\nexport function parseArchiveUriLensObjectUri(\n objectUri: string,\n): ArchiveUriLens | undefined {\n switch (objectUri) {\n case \"wikg://chapter\":\n return \"chapter\";\n case \"wikg://chunk\":\n return \"chunk\";\n case \"wikg://entity\":\n return \"entity\";\n case \"wikg://triple\":\n return \"triple\";\n default:\n return undefined;\n }\n}\n","import { inferCLIFormatFromPath, parseCLIFormat } from \"../support/index.js\";\nimport { withHelpRoute } from \"../support/index.js\";\nimport { renderArchiveCommandHelpText } from \"./help.js\";\nimport {\n parseLocatedWikiGraphUri,\n type ArchiveTriplePattern,\n} from \"wiki-graph-core\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatMissingArchiveInputMessage,\n normalizeArchiveInlineOptions,\n parseArchiveInspectChapterId,\n parseEvidenceFlag,\n parseNonNegativeIntegerFlag,\n parsePositiveIntegerFlag,\n parseRelatedRoleFlag,\n parseResultFormat,\n parseSourceContextFlag,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveNonReadFlags,\n rejectArchiveReverseQuery,\n validateArchiveCommandUriInput,\n validateEvidenceTargetUri,\n validatePackTargetUri,\n validateRelatedTargetUri,\n} from \"./helpers.js\";\n\nexport function parseArchiveArguments(\n action: CLIArchiveAction,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute = `wg ${action} --help`,\n options: {\n readonly defaultKinds?: readonly CLIObjectKind[];\n readonly triplePattern?: ArchiveTriplePattern;\n } = {},\n): ParsedCLIArguments {\n const normalized = normalizeArchiveInlineOptions(positionals, values);\n\n positionals = normalized.positionals;\n values = normalized.values;\n\n const archivePath = positionals[0];\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(action),\n kind: \"help\",\n };\n }\n\n if (archivePath === undefined || archivePath === \"-\") {\n throw new Error(\n withHelpRoute(formatMissingArchiveInputMessage(action), helpRoute),\n );\n }\n\n validateArchiveCommandUriInput(action, archivePath);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --verbose.`,\n helpRoute,\n ),\n );\n }\n\n switch (action) {\n case \"create\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (\n values.import !== undefined &&\n inferCLIFormatFromPath(values.import) !== \"epub\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`create --import` only supports EPUB input.\",\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action,\n archivePath,\n ...(values.import === undefined ? {} : { importPath: values.import }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.replace === undefined ? {} : { replace: values.replace }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"export\":\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--json\", values.json, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n outputFormat:\n values[\"output-format\"] === undefined\n ? parseCLIFormat(\"markdown\", \"--output-format\")\n : parseCLIFormat(values[\"output-format\"], \"--output-format\"),\n },\n help: false,\n kind: \"archive\",\n };\n case \"inspect\": {\n const chapterId = parseArchiveInspectChapterId(positionals[0]);\n const parsedArchivePath =\n parseLocatedWikiGraphUri(archivePath).archivePath ?? archivePath;\n\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n return {\n args: {\n action,\n archivePath: parsedArchivePath,\n ...(chapterId === undefined ? {} : { chapterId }),\n ...(values.json === true ? { json: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"search\": {\n const query = values.query;\n\n if (query === undefined) {\n throw new Error(\n withHelpRoute(\"Scope keyword retrieval requires --query.\", helpRoute),\n );\n }\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n query,\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"list\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectNonChapterDepthFlag(action, archivePath, values.depth, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(options.defaultKinds === undefined\n ? {}\n : { kinds: options.defaultKinds }),\n ...(options.triplePattern === undefined\n ? {}\n : { triplePattern: options.triplePattern }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"get\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n archivePath,\n ...(values.backlinks === undefined\n ? {}\n : { backlinks: values.backlinks }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n ...(values.reverse === true ? { reverse: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"related\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n const relatedTarget = validateRelatedTargetUri(archivePath, helpRoute);\n if (relatedTarget === \"chunk\") {\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n }\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n ...parseEvidenceFlag(values.evidence, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(relatedTarget === \"entity\"\n ? parseRelatedRoleFlag(values.role, helpRoute)\n : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"evidence\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveReverseQuery(values, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n validateEvidenceTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n ...(values.all === undefined ? {} : { all: values.all }),\n archivePath,\n ...(values.cursor === undefined ? {} : { cursor: values.cursor }),\n ...parseSourceContextFlag(values.context, helpRoute),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n objectId: archivePath,\n ...(values.query === undefined ? {} : { query: values.query }),\n ...(values.reverse === true ? { reverse: true } : {}),\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"pack\": {\n rejectArchiveExtraPositionals(action, positionals, 1, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--backlinks\",\n values.backlinks,\n helpRoute,\n );\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n validatePackTargetUri(archivePath, helpRoute);\n return {\n args: {\n action,\n archivePath,\n budget:\n values.budget === undefined\n ? 5000\n : parsePositiveIntegerFlag(values.budget, \"--budget\", helpRoute),\n format: parseResultFormat(values),\n objectId: archivePath,\n },\n help: false,\n kind: \"archive\",\n };\n }\n case \"next\": {\n rejectArchiveExtraPositionals(action, positionals, 2, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--depth\", values.depth, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(positionals[1] === undefined ? {} : { cursor: positionals[1] }),\n format: parseResultFormat(values),\n ...(values.limit === undefined\n ? {}\n : {\n limit: parsePositiveIntegerFlag(\n values.limit,\n \"--limit\",\n helpRoute,\n ),\n }),\n },\n help: false,\n kind: \"archive\",\n };\n }\n }\n}\n\nfunction rejectNonChapterDepthFlag(\n action: CLIArchiveAction,\n archivePath: string,\n depth: string | undefined,\n helpRoute: string,\n): void {\n if (depth === undefined) {\n return;\n }\n\n const objectUri = parseLocatedWikiGraphUri(archivePath).objectUri;\n if (\n objectUri === \"wikg://chapter\" ||\n objectUri?.startsWith(\"wikg://chapter/\") === true\n ) {\n return;\n }\n\n rejectArchiveFlag(action, \"--depth\", depth, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { BuildJobTarget } from \"wiki-graph-core\";\nimport type {\n CLIArchiveAction,\n CLIArchiveIndexAction,\n CLIArchiveUriAction,\n CLIJobAction,\n CLIMetadataAction,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"./chapter/index.js\";\n\nexport function isArchiveAction(\n value: string | undefined,\n): value is CLIArchiveAction {\n return (\n value === \"create\" ||\n value === \"evidence\" ||\n value === \"export\" ||\n value === \"get\" ||\n value === \"inspect\" ||\n value === \"list\" ||\n value === \"next\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isPublicArchiveCommandHelpAction(\n value: string | undefined,\n): value is \"next\" {\n return value === \"next\";\n}\n\nexport function isRemovedImplicitArchiveAction(\n value: string | undefined,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\n\nexport function formatRemovedImplicitVerbMessage(\n _action: \"get\" | \"list\" | \"search\",\n): string {\n return withHelpRoute(\n \"This command form is not available. Pass the URI directly, or add --query to a scope URI.\",\n CLI_HELP_ROUTES.uri,\n );\n}\n\nexport function isArchiveUriAction(\n value: string | undefined,\n): value is CLIArchiveUriAction {\n return (\n isArchiveAction(value) ||\n isArchiveChapterAction(value) ||\n isArchiveIndexAction(value) ||\n isMetadataAction(value)\n );\n}\n\nexport function isArchiveIndexAction(\n value: string | undefined,\n): value is CLIArchiveIndexAction {\n return (\n value === \"disable\" ||\n value === \"embed\" ||\n value === \"enable\" ||\n value === \"external\" ||\n value === \"get\"\n );\n}\n\nexport function isMetadataAction(\n value: string | undefined,\n): value is CLIMetadataAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\"\n );\n}\n\nexport function isUriFirstArchiveAction(\n value: string | undefined,\n): value is \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\" {\n return (\n value === \"evidence\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pack\" ||\n value === \"related\" ||\n value === \"search\"\n );\n}\n\nexport function isImplicitArchiveReadAction(\n value: CLIArchiveUriAction,\n): value is \"get\" | \"list\" | \"search\" {\n return value === \"get\" || value === \"list\" || value === \"search\";\n}\nexport function isJobUriAction(\n value: string | undefined,\n): value is CLIJobAction {\n return (\n value === \"add\" ||\n value === \"boost\" ||\n value === \"cancel\" ||\n value === \"clean\" ||\n value === \"get\" ||\n value === \"list\" ||\n value === \"pause\" ||\n value === \"resume\" ||\n value === \"set\" ||\n value === \"watch\"\n );\n}\n\nexport function parseBuildJobTarget(value: string | undefined): BuildJobTarget {\n switch (value) {\n case undefined:\n case \"reading-summary\":\n return \"reading-summary\";\n case \"reading-graph\":\n return \"reading-graph\";\n case \"knowledge-graph\":\n return \"knowledge-graph\";\n default:\n throw new Error(\n withHelpRoute(\n `Invalid queue task: ${value}. Expected reading-graph, reading-summary, or knowledge-graph.`,\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n}\n","import type {\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n} from \"../../types.js\";\n\nexport function isArchiveChapterAction(\n value: string | undefined,\n): value is CLIArchiveChapterAction {\n return (\n value === \"add\" ||\n value === \"list\" ||\n value === \"move\" ||\n value === \"remove\" ||\n value === \"reset\" ||\n value === \"set-source\" ||\n value === \"set-summary\" ||\n value === \"set-title\" ||\n value === \"tree\"\n );\n}\n\nexport function isArchiveMaintenanceCommand(\n value: string | undefined,\n): value is CLIArchiveMaintenanceCommand {\n return value === \"chapter\" || value === \"cover\" || value === \"meta\";\n}\n","import {\n parseChapterPath,\n parseChapterUriPath,\n parseLocatedWikiGraphUri,\n} from \"wiki-graph-core\";\n\nimport { withHelpRoute } from \"../../../support/index.js\";\nimport { isWikiGraphUri } from \"../uri.js\";\n\nexport function parseSerialId(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!/^\\d+$/u.test(normalized)) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a non-negative integer.`,\n helpRoute,\n ),\n );\n }\n\n return Number(normalized);\n}\n\nexport function parseChapterRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): number {\n const normalized = value.trim();\n\n if (!isWikiGraphUri(normalized)) {\n return parseSerialId(value, flag, helpRoute);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n\n if (parsed.archivePath !== undefined && parsed.archivePath !== archivePath) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n helpRoute,\n ),\n );\n }\n\n const objectUri = parsed.objectUri ?? normalized;\n const match = /^wikg:\\/\\/chapter\\/([1-9][0-9]*)\\/?$/u.exec(objectUri);\n\n if (match?.[1] === undefined) {\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected a chapter URI such as wikg://chapter/part/intro.`,\n helpRoute,\n ),\n );\n }\n\n return Number(match[1]);\n}\n\nexport function parseChapterPathRef(\n value: string,\n flag: string,\n archivePath: string,\n helpRoute: string,\n): string {\n const normalized = value.trim();\n try {\n if (!isWikiGraphUri(normalized)) {\n return parseChapterPath(normalized, flag);\n }\n\n const parsed = parseLocatedWikiGraphUri(normalized);\n if (\n parsed.archivePath !== undefined &&\n parsed.archivePath !== archivePath\n ) {\n throw new Error(\n `Invalid ${flag}: ${value}. Chapter URI belongs to a different archive.`,\n );\n }\n\n const path = parseChapterUriPath(parsed.objectUri ?? normalized);\n if (path === undefined) {\n throw new Error(\n `Invalid ${flag}: ${value}. Expected a chapter path or URI.`,\n );\n }\n return path;\n } catch (error) {\n throw new Error(\n withHelpRoute(\n error instanceof Error ? error.message : String(error),\n helpRoute,\n ),\n );\n }\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport {\n parseLocalConfigSection,\n type LocalConfigSection,\n} from \"../../runtime/local-config.js\";\nimport {\n parseLocatedWikiGraphUri,\n parseWikiGraphUriSyntax,\n WIKI_GRAPH_URI_PREFIX,\n} from \"wiki-graph-core\";\nimport type { CLIArchiveAction } from \"../types.js\";\n\nexport function validateArchiveCommandUriInput(\n action: CLIArchiveAction,\n value: string,\n): void {\n if (\n action === \"create\" ||\n action === \"export\" ||\n action === \"inspect\" ||\n action === \"next\"\n ) {\n return;\n }\n\n if (isWikiGraphUri(value)) {\n if (parseLocatedWikiGraphUri(value).archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(value));\n }\n return;\n }\n\n if (!looksLikeWikgPath(value)) {\n return;\n }\n\n throw new Error(formatPathAsUriMessage(value));\n}\n\nexport function parseArchiveInspectChapterId(\n uri: string | undefined,\n): number | undefined {\n if (uri === undefined || !isWikiGraphUri(uri)) {\n return undefined;\n }\n\n const objectUri = parseLocatedWikiGraphUri(uri).objectUri;\n const match =\n objectUri === undefined\n ? undefined\n : /^wikg:\\/\\/chapter\\/([1-9][0-9]*)$/u.exec(objectUri);\n\n return match?.[1] === undefined ? undefined : Number(match[1]);\n}\n\nexport function validatePackTargetUri(uri: string, helpRoute: string): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), CLI_HELP_ROUTES.uri),\n );\n }\n if (!isPackableObjectUri(parsed.objectUri)) {\n throw new Error(\n withHelpRoute(formatPackObjectMismatchMessage(uri), helpRoute),\n );\n }\n}\n\nexport function validateRelatedTargetUri(\n uri: string,\n helpRoute: string,\n): \"chunk\" | \"entity\" {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (parsed.objectUri === undefined) {\n throw new Error(\n withHelpRoute(\n `Related requires a chunk or entity URI: ${uri}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n const targetType = getRelatedObjectUriType(parsed.objectUri);\n\n if (targetType === undefined) {\n throw new Error(\n withHelpRoute(\n `Related is only available for chunk and entity objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return targetType;\n}\n\nexport function validateEvidenceTargetUri(\n uri: string,\n helpRoute: string,\n): void {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(formatMissingArchiveLocatorMessage(uri), helpRoute),\n );\n }\n if (\n parsed.objectUri === undefined ||\n !isEvidenceObjectUri(parsed.objectUri)\n ) {\n throw new Error(\n withHelpRoute(\n `Evidence is only available for chunk, entity, and triple objects: ${uri}`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function isEvidenceObjectUri(objectUri: string): boolean {\n const path = stripObjectUriPrefix(objectUri);\n const normalized = path.startsWith(\"chapter/\")\n ? /^chapter\\/[1-9][0-9]*\\/(.+)$/u.exec(path)?.[1]\n : path;\n if (normalized === undefined) {\n return false;\n }\n const parts = normalized.split(\"/\");\n return (\n (parts[0] === \"chunk\" && parts.length === 2) ||\n (parts[0] === \"entity\" && parts.length === 2) ||\n (parts[0] === \"triple\" && parts.length === 4)\n );\n}\n\nexport function isPackableObjectUri(objectUri: string): boolean {\n return (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n );\n}\n\nexport function getRelatedObjectUriType(\n objectUri: string,\n): \"chunk\" | \"entity\" | undefined {\n if (\n /^wikg:\\/\\/chunk\\/[1-9][0-9]*$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/chunk\\/[1-9][0-9]*$/u.test(objectUri)\n ) {\n return \"chunk\";\n }\n if (\n /^wikg:\\/\\/entity\\/[^/]+$/u.test(objectUri) ||\n /^wikg:\\/\\/chapter\\/[1-9][0-9]*\\/entity\\/[^/]+$/u.test(objectUri)\n ) {\n return \"entity\";\n }\n\n return undefined;\n}\n\nexport function formatUnknownCommandMessage(command: string): string {\n if (looksLikeWikgPath(command)) {\n return formatPathAsUriMessage(command);\n }\n\n return withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command);\n}\n\nexport function looksLikeWikgPath(value: string): boolean {\n const normalized = normalizeWikgPathSeparators(value);\n\n return (\n normalized.endsWith(\".wikg\") ||\n normalized.includes(\".wikg/\") ||\n normalized.includes(\".wikg#\")\n );\n}\n\nexport function formatPathAsUriMessage(path: string): string {\n const normalized = normalizeWikgPathSeparators(path);\n const [archivePath = normalized, suffix = \"\"] = splitWikgPath(normalized);\n const uri = archivePath.startsWith(\"/\")\n ? `wikg://${archivePath}${suffix}`\n : `wikg://${archivePath.replace(/^\\.\\/+/u, \"\")}${suffix}`;\n\n return [\n `Expected a Wiki Graph URI, not a filesystem path: ${path}`,\n `Use: ${uri}`,\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function splitWikgPath(path: string): readonly [string, string] {\n const archiveEnd = path.indexOf(\".wikg\") + \".wikg\".length;\n\n return [path.slice(0, archiveEnd), path.slice(archiveEnd)];\n}\n\nexport function normalizeWikgPathSeparators(path: string): string {\n return path.replace(/\\\\/gu, \"/\");\n}\n\nexport function formatMissingArchiveLocatorMessage(uri: string): string {\n return [\n `Expected a located Wiki Graph URI with a .wikg archive locator: ${uri}`,\n \"Short object URIs from output are archive-relative handles.\",\n \"Example: wikg://book.wikg/entity/Q9957\",\n \"See: wg help uri\",\n ].join(\"\\n\");\n}\n\nexport function formatPackObjectMismatchMessage(uri: string): string {\n return [\n `Pack requires a graph object URI: ${uri}`,\n \"Supported pack targets are chunk and entity objects.\",\n \"Use `wg <uri> --help` to inspect valid predicates.\",\n ].join(\"\\n\");\n}\n\nexport function formatMissingArchiveInputMessage(\n action: CLIArchiveAction,\n): string {\n switch (action) {\n case \"create\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> create`.\";\n case \"export\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> export --output-format <format>`.\";\n case \"inspect\":\n return \"Missing archive URI. Use `wg wikg://<archive.wikg> inspect`.\";\n case \"search\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg> --query <query>`.\";\n case \"list\":\n return \"Missing scope URI with .wikg locator. Use `wg wikg://<archive.wikg>`.\";\n case \"get\":\n return \"Missing object URI with .wikg locator. Use `wg wikg://<archive.wikg>/<object>`.\";\n case \"related\":\n case \"evidence\":\n case \"pack\":\n return `Missing object URI. Use \\`wg wikg://<archive.wikg>/<object> ${action}\\`.`;\n case \"next\":\n return \"Missing continuation cursor. Use `wg next <cursor>`.\";\n }\n}\nexport function isWikiGraphUri(value: string | undefined): boolean {\n return value?.startsWith(WIKI_GRAPH_URI_PREFIX) === true;\n}\n\nexport function stripObjectUriPrefix(objectUri: string): string {\n const prefix = getWikiGraphUriPrefix(objectUri);\n\n if (prefix === undefined) {\n throw new Error(`Expected Wiki Graph object URI: ${objectUri}`);\n }\n\n return objectUri.slice(prefix.length).replace(/^\\/+|\\/+$/gu, \"\");\n}\n\nexport function isWikiGraphJobUri(value: string | undefined): boolean {\n return isWikiGraphLocalJobUri(value);\n}\n\nexport function isWikiGraphLocalConfigUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"config\" && path.length >= 2;\n}\n\nexport function parseLocalConfigUriSection(\n uri: string,\n): LocalConfigSection | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"config\") {\n return undefined;\n }\n const section = path[2];\n\n return parseLocalConfigSection(section);\n}\n\nexport function parseWikiGraphJobUri(uri: string): string | undefined {\n const body = parseWikiGraphJobUriBody(uri);\n\n if (body === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected a Wiki Graph job URI: ${uri}`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const jobId = stripLeadingSlash(body).trim();\n if (jobId === \"\") {\n return undefined;\n }\n\n return jobId;\n}\n\nexport function parseWikiGraphJobTargetUri(\n uri: string | undefined,\n): string | undefined {\n if (uri === undefined) {\n return undefined;\n }\n\n const body = parseWikiGraphJobUriBody(uri);\n if (body === undefined) {\n return undefined;\n }\n if (!body.endsWith(\"/target\")) {\n return undefined;\n }\n\n const jobId = stripLeadingSlash(body.slice(0, -\"/target\".length)).trim();\n if (jobId === \"\") {\n throw new Error(\n withHelpRoute(\n `Expected a job id before /target: ${uri}`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n return jobId;\n}\n\nexport function getWikiGraphUriPrefix(uri: string): string | undefined {\n if (uri.startsWith(WIKI_GRAPH_URI_PREFIX)) {\n return WIKI_GRAPH_URI_PREFIX;\n }\n\n return undefined;\n}\n\nexport function isWikiGraphLocalJobUri(value: string | undefined): boolean {\n const path = parseWikiGraphPath(value);\n return path?.[0] === \"local\" && path[1] === \"job\";\n}\n\nexport function parseWikiGraphJobUriBody(uri: string): string | undefined {\n const path = parseWikiGraphPath(uri);\n if (path?.[0] !== \"local\" || path[1] !== \"job\") {\n return undefined;\n }\n if (path.length === 2) {\n return \"\";\n }\n\n return `/${path.slice(2).join(\"/\")}`;\n}\n\nexport function stripLeadingSlash(value: string): string {\n return value.replace(/^\\/+/u, \"\");\n}\n\nfunction parseWikiGraphPath(\n value: string | undefined,\n): readonly string[] | undefined {\n if (value === undefined) {\n return undefined;\n }\n try {\n const parsed = parseWikiGraphUriSyntax(value);\n return parsed.protocol === \"wikg\" ? parsed.path : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function requireArchiveUriPath(uri: string, helpRoute: string): string {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined || parsed.objectUri !== undefined) {\n throw new Error(\n withHelpRoute(`Expected an archive Wiki Graph URI: ${uri}`, helpRoute),\n );\n }\n\n return parsed.archivePath;\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\nimport type {\n CLIArchiveChapterAction,\n CLIArchiveChapterArguments,\n} from \"../../types.js\";\nimport { parseChapterPathRef } from \"./ids.js\";\nimport { parseResetStage } from \"./stages.js\";\nimport {\n rejectActionBooleanFlag,\n rejectActionFlag,\n rejectConflictingMoveFlags,\n} from \"./rejections.js\";\n\nexport function normalizeArchiveChapterArguments(\n action: CLIArchiveChapterAction,\n path: string,\n values: {\n readonly chapter?: string;\n readonly after?: string;\n readonly before?: string;\n readonly clear?: boolean;\n readonly \"dry-run\"?: boolean;\n readonly first?: boolean;\n readonly import?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly \"json-input\"?: string;\n readonly llm?: string;\n readonly parent?: string;\n readonly prompt?: string;\n readonly recursive?: boolean;\n readonly root?: boolean;\n readonly last?: boolean;\n readonly stage?: string;\n readonly title?: string;\n readonly to?: string;\n },\n helpRoute: string,\n treeAction?: \"apply\",\n inputValue?: string,\n): CLIArchiveChapterArguments {\n const chapterPath =\n values.chapter === undefined\n ? undefined\n : parseChapterPathRef(values.chapter, \"--chapter\", path, helpRoute);\n const parentChapterPath =\n values.parent === undefined\n ? undefined\n : parseChapterPathRef(values.parent, \"--parent\", path, helpRoute);\n const beforeChapterPath =\n values.before === undefined\n ? undefined\n : parseChapterPathRef(values.before, \"--before\", path, helpRoute);\n const afterChapterPath =\n values.after === undefined\n ? undefined\n : parseChapterPathRef(values.after, \"--after\", path, helpRoute);\n const resetStage =\n values.to === undefined ? undefined : parseResetStage(values.to, helpRoute);\n\n switch (action) {\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`set` requires a concrete chapter sub-resource URI such as `/source`, `/summary`, or `/title`.\",\n helpRoute,\n ),\n );\n case \"add\":\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n return {\n action,\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n ...(values.title === undefined ? {} : { title: values.title }),\n };\n case \"list\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"move\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n rejectConflictingMoveFlags(values, helpRoute);\n return {\n action,\n ...(afterChapterPath === undefined ? {} : { afterChapterPath }),\n ...(beforeChapterPath === undefined ? {} : { beforeChapterPath }),\n chapterPath,\n ...(values.first === undefined ? {} : { first: values.first }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.last === undefined ? {} : { last: values.last }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.root === undefined ? {} : { moveToRoot: values.root }),\n ...(parentChapterPath === undefined ? {} : { parentChapterPath }),\n path,\n };\n case \"remove\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.recursive === undefined\n ? {}\n : { recursive: values.recursive }),\n };\n case \"reset\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n if (resetStage === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing --to. `chapter reset` requires planned, source, or reading-graph.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n resetStage,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-source\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n ...(values.json === undefined ? {} : { json: values.json }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-summary\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(inputValue === undefined ? {} : { inputValue }),\n path,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"set-title\":\n requireChapterPath(chapterPath, action, helpRoute);\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(values[\"json-input\"], \"--json\", action, helpRoute);\n rejectActionBooleanFlag(values.json, \"--json\", action, helpRoute);\n if (values.title !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter title set` uses a positional value instead of --title.\",\n helpRoute,\n ),\n );\n }\n if (inputValue === undefined && values.clear !== true) {\n throw new Error(withHelpRoute(\"Missing title value.\", helpRoute));\n }\n if (inputValue !== undefined && values.clear === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter title clear` cannot combine with a title value.\",\n helpRoute,\n ),\n );\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n return {\n action,\n chapterPath,\n ...(values.clear === undefined ? {} : { clearTitle: values.clear }),\n path,\n ...(inputValue === undefined ? {} : { title: inputValue }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n };\n case \"tree\":\n rejectActionFlag(values.stage, \"--stage\", action, helpRoute);\n rejectActionFlag(values.chapter, \"--chapter\", action, helpRoute);\n rejectActionFlag(values.after, \"--after\", action, helpRoute);\n rejectActionFlag(values.before, \"--before\", action, helpRoute);\n rejectActionFlag(values.import, \"--import\", action, helpRoute);\n rejectActionFlag(\n values[\"input-format\"],\n \"--input-format\",\n action,\n helpRoute,\n );\n rejectActionFlag(values.parent, \"--parent\", action, helpRoute);\n rejectActionFlag(values.prompt, \"--prompt\", action, helpRoute);\n rejectActionFlag(values.title, \"--title\", action, helpRoute);\n rejectActionFlag(values.to, \"--to\", action, helpRoute);\n rejectActionBooleanFlag(values.clear, \"--clear\", action, helpRoute);\n rejectActionBooleanFlag(values.first, \"--first\", action, helpRoute);\n rejectActionBooleanFlag(values.root, \"--root\", action, helpRoute);\n rejectActionBooleanFlag(values.last, \"--last\", action, helpRoute);\n rejectActionBooleanFlag(\n values.recursive,\n \"--recursive\",\n action,\n helpRoute,\n );\n if (treeAction === \"apply\" && values.json === true) {\n throw new Error(\n withHelpRoute(\n \"`chapter tree apply` does not support --json.\",\n helpRoute,\n ),\n );\n }\n if (treeAction === \"apply\") {\n return {\n action,\n ...(values[\"dry-run\"] === undefined\n ? {}\n : { dryRun: values[\"dry-run\"] }),\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"apply\",\n };\n }\n rejectActionFlag(values.input, \"--input\", action, helpRoute);\n rejectActionBooleanFlag(\n values[\"dry-run\"],\n \"--dry-run\",\n action,\n helpRoute,\n );\n return {\n action,\n json: values.json ?? false,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n path,\n treeAction: \"show\",\n };\n }\n}\n\nfunction requireChapterPath(\n chapterPath: string | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterPath is string {\n if (chapterPath === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. ` +\n `chapter ${action}` +\n ` requires a complete absolute chapter path.`,\n helpRoute,\n ),\n );\n }\n}\n","import type { ChapterStage } from \"wiki-graph-core\";\n\nimport { withHelpRoute } from \"../../../support/index.js\";\n\nexport function parseChapterStage(\n value: string,\n flag: string,\n helpRoute: string,\n): ChapterStage {\n const stage = parseExternalChapterStage(value);\n\n if (stage !== undefined) {\n return stage;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid ${flag}: ${value}. Expected planned, source, reading-graph, or reading-summary.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResetStage(\n value: string,\n helpRoute: string,\n): Exclude<ChapterStage, \"summarized\"> {\n const stage = parseExternalChapterStage(value);\n\n if (stage === \"planned\" || stage === \"sourced\" || stage === \"graphed\") {\n return stage;\n }\n if (stage !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`chapter reset` does not support --to reading-summary.\",\n helpRoute,\n ),\n );\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --to: ${value}. Expected planned, source, or reading-graph.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseExternalChapterStage(\n value: string,\n): ChapterStage | undefined {\n switch (value.trim().toLowerCase()) {\n case \"planned\":\n return \"planned\";\n case \"source\":\n return \"sourced\";\n case \"reading-graph\":\n return \"graphed\";\n case \"reading-summary\":\n return \"summarized\";\n default:\n return undefined;\n }\n}\n","import { withHelpRoute } from \"../../../support/index.js\";\n\nexport function rejectActionFlag(\n value: string | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectActionBooleanFlag(\n value: boolean | undefined,\n flag: string,\n action: string,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter ${action}\\` action does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectConflictingMoveFlags(\n values: {\n readonly after?: string;\n readonly before?: string;\n readonly first?: boolean;\n readonly last?: boolean;\n readonly parent?: string;\n readonly root?: boolean;\n },\n helpRoute: string,\n): void {\n const parentTargets = [\n values.parent === undefined ? undefined : \"--parent\",\n values.root === undefined ? undefined : \"--root\",\n ].filter((flag): flag is string => flag !== undefined);\n const positionTargets = [\n values.before === undefined ? undefined : \"--before\",\n values.after === undefined ? undefined : \"--after\",\n values.first === undefined ? undefined : \"--first\",\n values.last === undefined ? undefined : \"--last\",\n ].filter((flag): flag is string => flag !== undefined);\n\n if (parentTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one parent target: ${parentTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (positionTargets.length > 1) {\n throw new Error(\n withHelpRoute(\n `Choose only one position target: ${positionTargets.join(\", \")}.`,\n helpRoute,\n ),\n );\n }\n if (\n parentTargets.length > 0 &&\n (values.before !== undefined || values.after !== undefined)\n ) {\n throw new Error(\n withHelpRoute(\n \"Do not combine --parent or --root with --before or --after.\",\n helpRoute,\n ),\n );\n }\n if (parentTargets.length === 0 && positionTargets.length === 0) {\n throw new Error(\n withHelpRoute(\n \"`chapter move` requires --parent, --root, --before, --after, --first, or --last.\",\n helpRoute,\n ),\n );\n }\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-core\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n CLIArchiveChapterAction,\n CLIArchiveMaintenanceCommand,\n CLIQueueAction,\n} from \"../types.js\";\n\nexport function rejectArchiveChapterFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveChapterMetaFlags(\n values: ArchiveMetaFlagValues,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values, { includeTitle: false })) {\n throw new Error(\n withHelpRoute(\n `The \\`chapter\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"help\", CLI_HELP_ROUTES.root);\n}\n\nexport function rejectNonGcForceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.force !== true || positionals[0] === \"gc\") {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --force option is only supported by `gc`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectNonCreateReplaceFlag(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): void {\n if (values.replace !== true) {\n return;\n }\n\n const [command, action] = positionals;\n if (\n command?.startsWith(WIKI_GRAPH_URI_PREFIX) === true &&\n action === \"create\"\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --replace option is only supported by `wg <archive-uri> create`.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nexport function rejectGcMetaFlags(values: ArchiveMetaFlagValues): void {\n rejectCommandMetaFlags(values, \"gc\", \"wg gc --help\");\n}\n\nexport function rejectCommandMetaFlags(\n values: ArchiveMetaFlagValues,\n command: string,\n helpRoute: string,\n): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`${command}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectGcFlag(\n name: string,\n value: string | boolean | readonly string[] | undefined,\n helpRoute: string,\n): void {\n if (value === undefined || value === false) {\n return;\n }\n\n throw new Error(\n withHelpRoute(`The \\`gc\\` command does not support --${name}.`, helpRoute),\n );\n}\n\nexport function rejectTransformFlag(\n name: string,\n value: boolean | string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectTransformMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`transform\\` command does not support ${flag}.`,\n \"wg transform --help\",\n ),\n );\n }\n}\n\nexport function listPresentMetaFlags(\n values: ArchiveMetaFlagValues,\n options: { readonly includeTitle?: boolean } = {},\n): readonly string[] {\n const includeTitle = options.includeTitle ?? true;\n const flags: string[] = [];\n\n if (values.author !== undefined) flags.push(\"--author\");\n if (values[\"clear-authors\"] !== undefined) flags.push(\"--clear-authors\");\n if (values[\"clear-description\"] !== undefined) {\n flags.push(\"--clear-description\");\n }\n if (values[\"clear-identifier\"] !== undefined) {\n flags.push(\"--clear-identifier\");\n }\n if (values[\"clear-language\"] !== undefined) flags.push(\"--clear-language\");\n if (values[\"clear-published-at\"] !== undefined) {\n flags.push(\"--clear-published-at\");\n }\n if (values[\"clear-publisher\"] !== undefined) flags.push(\"--clear-publisher\");\n if (includeTitle && values[\"clear-title\"] !== undefined) {\n flags.push(\"--clear-title\");\n }\n if (values.description !== undefined) flags.push(\"--description\");\n if (values.identifier !== undefined) flags.push(\"--identifier\");\n if (values.language !== undefined) flags.push(\"--language\");\n if (values[\"published-at\"] !== undefined) flags.push(\"--published-at\");\n if (values.publisher !== undefined) flags.push(\"--publisher\");\n if (includeTitle && values.title !== undefined) flags.push(\"--title\");\n\n return flags;\n}\n\nexport function requireChapterId(\n chapterId: number | undefined,\n action: CLIArchiveChapterAction,\n helpRoute: string,\n): asserts chapterId is number {\n if (chapterId === undefined) {\n throw new Error(\n withHelpRoute(\n `Missing --chapter. \\`chapter ${action}\\` requires a chapter id.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectHelpFlag(\n name: string,\n value: boolean | string | undefined,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`help\\` command does not support --${name}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n}\nexport function rejectArchiveReverseQuery(\n values: Pick<ArchiveArgumentValues, \"query\" | \"reverse\">,\n helpRoute: string,\n): void {\n if (values.query !== undefined && values.reverse === true) {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n}\n\nexport function parseRelatedRoleFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly role?: \"any\" | \"object\" | \"self\" | \"subject\" } {\n if (value === undefined) {\n return {};\n }\n if (\n value !== \"any\" &&\n value !== \"object\" &&\n value !== \"self\" &&\n value !== \"subject\"\n ) {\n throw new Error(\n withHelpRoute(\n \"--role must be one of: any, subject, object, self.\",\n helpRoute,\n ),\n );\n }\n\n return { role: value };\n}\nexport function rejectArchiveExtraPositionals(\n action: string,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectQueueExtraPositionals(\n action: CLIQueueAction,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`queue ${action}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveMaintenanceExtraPositionals(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n allowed: number,\n helpRoute: string,\n): void {\n if (positionals.length > allowed) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`${command}\\`: ${positionals.slice(allowed).join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectMetaCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`meta\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandFlag(\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverCommandBooleanFlag(\n name: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support --${name}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectCoverMetaFlags(values: ArchiveMetaFlagValues): void {\n for (const flag of listPresentMetaFlags(values)) {\n throw new Error(\n withHelpRoute(\n `The \\`cover\\` command does not support ${flag}.`,\n \"wg cover --help\",\n ),\n );\n }\n}\n\nexport function rejectArchiveFlag(\n action: string,\n flag: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectArchiveBooleanFlag(\n action: string,\n flag: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support ${flag}.`,\n helpRoute,\n ),\n );\n }\n}\n\nexport function rejectStreamingJSONFlag(\n action: string,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.`,\n helpRoute,\n ),\n );\n}\n\nexport function rejectArchiveNonReadFlags(\n action: string,\n values: {\n readonly input?: string;\n readonly import?: string;\n readonly \"input-format\"?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly prompt?: string;\n },\n helpRoute: string,\n): void {\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--import\", values.import, helpRoute);\n rejectArchiveFlag(\n action,\n \"--input-format\",\n values[\"input-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveFlag(action, \"--prompt\", values.prompt, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { formatCliCommand } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, CLIResultFormat } from \"../types.js\";\nimport { isWikiGraphLocalConfigUri, isWikiGraphUri } from \"./uri.js\";\n\nexport function parseWatchFrom(\n value: string | undefined,\n helpRoute: string,\n): \"beginning\" | \"now\" | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === \"beginning\" || value === \"now\") {\n return value;\n }\n\n throw new Error(\n withHelpRoute(\n `Invalid --from: ${value}. Expected beginning or now.`,\n helpRoute,\n ),\n );\n}\n\nexport function parseResultFormat(values: {\n readonly json?: boolean;\n readonly jsonl?: boolean;\n}): CLIResultFormat {\n if (values.json === true && values.jsonl === true) {\n throw new Error(\n withHelpRoute(\n \"`--json` and `--jsonl` cannot be combined.\",\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n\n if (values.json === true) {\n return \"json\";\n }\n if (values.jsonl === true) {\n return \"jsonl\";\n }\n\n return \"text\";\n}\n\nexport function parseEvidenceFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly evidenceLimit?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n evidenceLimit: parseNonNegativeIntegerFlag(value, \"--evidence\", helpRoute),\n };\n}\n\nexport function parseSourceContextFlag(\n value: string | undefined,\n helpRoute: string,\n): { readonly context?: number } {\n if (value === undefined) {\n return {};\n }\n\n return {\n context: parseNonNegativeIntegerFlag(value, \"--context\", helpRoute),\n };\n}\nexport function parseNonNegativeIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed < 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a non-negative integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function parsePositiveIntegerFlag(\n value: string,\n flag: string,\n helpRoute: string,\n): number {\n const parsed = Number(value);\n\n if (!Number.isInteger(parsed) || parsed <= 0) {\n throw new Error(\n withHelpRoute(`${flag} must be a positive integer.`, helpRoute),\n );\n }\n\n return parsed;\n}\n\nexport function normalizeArchiveInlineOptions(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): {\n readonly positionals: readonly string[];\n readonly values: ArchiveArgumentValues;\n} {\n const normalizedPositionals: string[] = [];\n const normalizedValues: Record<\n string,\n boolean | readonly string[] | string | undefined\n > = {\n ...values,\n };\n\n for (let index = 0; index < positionals.length; index += 1) {\n const item = positionals[index];\n\n if (item === undefined) {\n continue;\n }\n\n switch (item) {\n case \"--json\":\n case \"--confirm\":\n case \"--reverse\":\n normalizedValues[item.slice(2)] = true;\n continue;\n case \"--budget\":\n case \"--chapter\":\n case \"--context\":\n case \"--cursor\":\n case \"--depth\":\n case \"--import\":\n case \"--input\":\n case \"--input-format\":\n case \"--limit\":\n case \"--llm\":\n case \"--output\":\n case \"--output-format\":\n case \"--path\":\n case \"--prompt\":\n case \"--stage\":\n case \"--to\": {\n const value = positionals[index + 1];\n\n if (value === undefined) {\n normalizedPositionals.push(item);\n continue;\n }\n\n normalizedValues[item.slice(2)] = value;\n index += 1;\n continue;\n }\n default:\n normalizedPositionals.push(item);\n }\n }\n\n return {\n positionals: normalizedPositionals,\n values: normalizedValues,\n };\n}\n\nexport function normalizeArchiveValueFlagArgv(\n argv: readonly string[],\n): readonly string[] {\n const normalized: string[] = [];\n let stopped = false;\n const jsonMayTakeValue = isValueInputJsonFlagContext(argv);\n\n for (let index = 0; index < argv.length; index += 1) {\n const item = argv[index];\n\n if (item === undefined) {\n continue;\n }\n\n if (stopped) {\n normalized.push(item);\n continue;\n }\n\n if (item === \"--\") {\n normalized.push(item);\n stopped = true;\n continue;\n }\n\n if (item.startsWith(\"--json=\") && jsonMayTakeValue) {\n normalized.push(\"--json\");\n normalized.push(`--json-input=${item.slice(\"--json=\".length)}`);\n continue;\n }\n\n if (item === \"--json\" && jsonMayTakeValue) {\n const value = argv[index + 1];\n\n normalized.push(item);\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(\"--json-input\");\n normalized.push(value);\n index += 1;\n }\n continue;\n }\n\n if (item !== \"--evidence\" && item !== \"--context\" && item !== \"--depth\") {\n normalized.push(item);\n continue;\n }\n\n const value = argv[index + 1];\n\n if (value !== undefined && !value.startsWith(\"-\")) {\n normalized.push(item);\n normalized.push(value);\n index += 1;\n continue;\n }\n\n if (value !== undefined && /^-\\d/.test(value)) {\n normalized.push(`${item}=${value}`);\n index += 1;\n continue;\n }\n\n normalized.push(item);\n if (item === \"--evidence\") {\n normalized.push(\"3\");\n }\n }\n\n return normalized;\n}\n\nexport function isValueInputJsonFlagContext(argv: readonly string[]): boolean {\n const first = argv[0];\n const second = argv[1];\n\n if (second !== \"set\" && second !== \"put\") {\n return false;\n }\n if (isWikiGraphLocalConfigUri(first)) {\n return true;\n }\n\n return (\n isWikiGraphUri(first) &&\n argv.some((item) => item.includes(\"/meta\") || item.endsWith(\".wikg/meta\"))\n );\n}\nexport function formatWikiGraphHelpCommand(\n uri: string,\n action?: string,\n): string {\n return formatCliCommand([\n uri,\n ...(action === undefined ? [] : [action]),\n \"--help\",\n ]);\n}\n","import { parseArgs } from \"util\";\nimport { isWikiGraphLibraryUri } from \"wiki-graph-core\";\n\nimport { renderMainHelpText } from \"./help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nimport type { ParsedCLIArguments } from \"./types.js\";\n\nimport { parseArchiveArguments } from \"./archive.js\";\nimport {\n formatUnknownCommandMessage,\n isArchiveMaintenanceCommand,\n isPublicArchiveCommandHelpAction,\n isWikiGraphJobUri,\n isWikiGraphLocalConfigUri,\n isWikiGraphUri,\n normalizeArchiveValueFlagArgv,\n rejectArchiveBooleanFlag,\n rejectNonCreateReplaceFlag,\n rejectNonGcForceFlag,\n} from \"./helpers.js\";\nimport { parseJobUriFirstArguments } from \"./queue.js\";\nimport {\n parseArchiveMaintenanceArguments,\n parseGcArguments,\n parseHelpArguments,\n parseLegacyArguments,\n parseLocalConfigUriFirstArguments,\n parseMaintenanceArguments,\n parseTransformArguments,\n} from \"./root/index.js\";\nimport { parseArchiveUriFirstArguments } from \"./uri/index.js\";\nimport { parseLibraryUriFirstArguments } from \"./uri/library.js\";\nexport function parseCLIArguments(\n argv = process.argv.slice(2),\n): ParsedCLIArguments {\n const { positionals, values } = parseArgs({\n allowPositionals: true,\n args: normalizeArchiveValueFlagArgv(argv),\n options: {\n author: {\n multiple: true,\n type: \"string\",\n },\n after: {\n type: \"string\",\n },\n before: {\n type: \"string\",\n },\n backlinks: {\n type: \"boolean\",\n },\n budget: {\n type: \"string\",\n },\n clear: {\n type: \"boolean\",\n },\n \"clear-authors\": {\n type: \"boolean\",\n },\n \"clear-description\": {\n type: \"boolean\",\n },\n \"clear-identifier\": {\n type: \"boolean\",\n },\n \"clear-language\": {\n type: \"boolean\",\n },\n \"clear-published-at\": {\n type: \"boolean\",\n },\n \"clear-publisher\": {\n type: \"boolean\",\n },\n \"clear-title\": {\n type: \"boolean\",\n },\n description: {\n type: \"string\",\n },\n help: {\n short: \"h\",\n type: \"boolean\",\n },\n \"digest-dir\": {\n type: \"string\",\n },\n depth: {\n type: \"string\",\n },\n \"dry-run\": {\n type: \"boolean\",\n },\n active: {\n type: \"boolean\",\n },\n \"accept-cost\": {\n type: \"boolean\",\n },\n all: {\n type: \"boolean\",\n },\n boost: {\n type: \"boolean\",\n },\n first: {\n type: \"boolean\",\n },\n identifier: {\n type: \"string\",\n },\n from: {\n type: \"string\",\n },\n force: {\n type: \"boolean\",\n },\n input: {\n type: \"string\",\n },\n import: {\n type: \"string\",\n },\n \"input-format\": {\n type: \"string\",\n },\n limit: {\n type: \"string\",\n },\n language: {\n type: \"string\",\n },\n json: {\n type: \"boolean\",\n },\n \"json-input\": {\n type: \"string\",\n },\n jsonl: {\n type: \"boolean\",\n },\n llm: {\n type: \"string\",\n },\n output: {\n type: \"string\",\n },\n path: {\n type: \"string\",\n },\n \"output-format\": {\n type: \"string\",\n },\n prompt: {\n type: \"string\",\n },\n query: {\n type: \"string\",\n },\n replace: {\n type: \"boolean\",\n },\n reverse: {\n type: \"boolean\",\n },\n stage: {\n type: \"string\",\n },\n task: {\n type: \"string\",\n },\n chapter: {\n type: \"string\",\n },\n confirm: {\n type: \"boolean\",\n },\n context: {\n type: \"string\",\n },\n cursor: {\n type: \"string\",\n },\n evidence: {\n type: \"string\",\n },\n parent: {\n type: \"string\",\n },\n \"published-at\": {\n type: \"string\",\n },\n publisher: {\n type: \"string\",\n },\n recursive: {\n type: \"boolean\",\n },\n secret: {\n type: \"boolean\",\n },\n role: {\n type: \"string\",\n },\n root: {\n type: \"boolean\",\n },\n last: {\n type: \"boolean\",\n },\n title: {\n type: \"string\",\n },\n to: {\n type: \"string\",\n },\n verbose: {\n short: \"v\",\n type: \"boolean\",\n },\n version: {\n type: \"boolean\",\n },\n },\n strict: true,\n });\n\n rejectNonGcForceFlag(positionals, values);\n rejectNonCreateReplaceFlag(positionals, values);\n\n if (values.version === true) {\n return {\n help: false,\n kind: \"version\",\n };\n }\n\n if (values.help === true && positionals.length === 0) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (\n values[\"accept-cost\"] === true &&\n !(isWikiGraphJobUri(positionals[0]) && positionals[1] === \"add\")\n ) {\n throw new Error(\n withHelpRoute(\n \"`--accept-cost` is only valid for `wg wikg://local/job add`.\",\n \"wg wikg://local/job add --help\",\n ),\n );\n }\n\n if (\n values.reverse === true &&\n (positionals[0] === undefined ||\n (!isWikiGraphUri(positionals[0]) && positionals[0] !== \"next\"))\n ) {\n throw new Error(\"The current command does not support --reverse.\");\n }\n\n if (positionals[0] === \"help\") {\n return parseHelpArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"gc\") {\n return parseGcArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"legacy\") {\n return parseLegacyArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"maintenance\") {\n return parseMaintenanceArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"transform\") {\n return parseTransformArguments(positionals.slice(1), values);\n }\n\n if (positionals[0] === \"next\") {\n return parseArchiveArguments(\"next\", positionals.slice(1), values);\n }\n\n if (\n isArchiveMaintenanceCommand(positionals[0]) &&\n values.help === true &&\n positionals.length <= 2\n ) {\n return parseArchiveMaintenanceArguments(\n positionals[0],\n positionals.slice(1),\n values,\n );\n }\n\n if (isWikiGraphJobUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"job\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/job --help\",\n );\n return parseJobUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLocalConfigUri(positionals[0])) {\n rejectArchiveBooleanFlag(\n positionals[1] ?? \"config\",\n \"--reverse\",\n values.reverse,\n \"wg wikg://local/config --help\",\n );\n return parseLocalConfigUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphLibraryUri(positionals[0])) {\n return parseLibraryUriFirstArguments(positionals, values);\n }\n\n if (isWikiGraphUri(positionals[0])) {\n return parseArchiveUriFirstArguments(positionals, values);\n }\n\n if (\n isPublicArchiveCommandHelpAction(positionals[0]) &&\n values.help === true &&\n positionals.length === 1\n ) {\n return parseArchiveArguments(positionals[0], positionals.slice(1), values);\n }\n\n if (positionals.length === 0) {\n throw new Error(withHelpRoute(\"Missing command.\", CLI_HELP_ROUTES.command));\n }\n throw new Error(formatUnknownCommandMessage(positionals[0]!));\n}\n","import { parseLocatedWikiGraphUri } from \"wiki-graph-core\";\nimport { withHelpRoute } from \"../support/index.js\";\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"./help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIQueueAction,\n ParsedCLIArguments,\n} from \"./types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isJobUriAction,\n isRemovedImplicitArchiveAction,\n parseBuildJobTarget,\n parseNonNegativeIntegerFlag,\n parseWatchFrom,\n parseWikiGraphJobTargetUri,\n parseWikiGraphJobUri,\n rejectQueueExtraPositionals,\n rejectStreamingJSONFlag,\n requireArchiveUriPath,\n} from \"./helpers.js\";\nimport { parseChapterTarget } from \"./uri/index.js\";\n\nexport function parseJobUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const jobTargetUri = parseWikiGraphJobTargetUri(uri);\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing job URI.\");\n }\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true) {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\",\n uri,\n ),\n kind: \"help\",\n };\n }\n const targetName =\n jobTargetUri === undefined && parseWikiGraphJobUri(uri) === undefined\n ? \"job-collection-scope\"\n : jobTargetUri === undefined\n ? \"job-object\"\n : \"job-target-object\";\n if (isUriHelpPredicate(targetName, explicitAction)) {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(targetName, explicitAction, uri),\n kind: \"help\",\n };\n }\n }\n\n const jobId = jobTargetUri ?? parseWikiGraphJobUri(uri);\n const action =\n explicitAction ??\n (jobTargetUri !== undefined\n ? undefined\n : jobId === undefined\n ? \"list\"\n : \"get\");\n\n if (!isJobUriAction(action)) {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? `Missing action after ${uri}.`\n : `The job URI form does not support \\`${action}\\`.`,\n \"wg wikg://local/job --help\",\n ),\n );\n }\n\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n const tail = explicitAction === undefined ? [] : positionals.slice(2);\n\n if (jobTargetUri !== undefined) {\n if (action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The job target URI form does not support \\`${action}\\`. Expected set.`,\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n return parseQueueJobTargetUriArguments(\n jobTargetUri,\n tail,\n values,\n helpRoute,\n );\n }\n\n switch (action) {\n case \"add\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job add requires `wikg://local/job`.\", helpRoute),\n );\n }\n return parseQueueAddArguments(tail, values, helpRoute);\n case \"clean\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job clean requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONFlag(\"clean\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"clean\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"clean\", [\"clean\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"clean\",\n },\n help: false,\n kind: \"queue\",\n };\n case \"list\":\n if (jobId !== undefined) {\n throw new Error(\n withHelpRoute(\"Job list requires `wikg://local/job`.\", helpRoute),\n );\n }\n rejectQueueJSONLFlag(\"list\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\"list\", [\"list\", ...tail], 1, helpRoute);\n return {\n args: {\n action: \"list\",\n ...(values.active === undefined ? {} : { activeOnly: values.active }),\n ...(values.all === undefined ? {} : { all: values.all }),\n ...(values.input === undefined\n ? {}\n : { archivePath: requireArchiveUriPath(values.input, helpRoute) }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n case \"get\":\n return parseQueueJobArguments(\"status\", jobId, tail, values, helpRoute);\n case \"watch\":\n case \"pause\":\n case \"resume\":\n case \"cancel\":\n case \"boost\":\n return parseQueueJobArguments(action, jobId, tail, values, helpRoute);\n case \"set\":\n throw new Error(\n withHelpRoute(\n \"`wikg://local/job/<job-id> set` is not supported. Use `wikg://local/job/<job-id>/target set <target>`.\",\n \"wg wikg://local/job/<job-id>/target set --help\",\n ),\n );\n }\n\n throw new Error(\"Internal error: unsupported job URI action.\");\n}\n\nfunction parseQueueJobTargetUriArguments(\n jobId: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectQueueJSONFlag(\"target\", values.json, helpRoute);\n rejectQueueJSONLFlag(\"target\", values.jsonl, helpRoute);\n rejectQueueExtraPositionals(\n \"target\",\n [\"target\", jobId, ...tail],\n 3,\n helpRoute,\n );\n\n const target = tail[0];\n if (target === undefined) {\n throw new Error(withHelpRoute(\"Missing build job target.\", helpRoute));\n }\n\n return {\n args: {\n action: \"target\",\n jobId,\n target: parseBuildJobTarget(target),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --json.`,\n helpRoute,\n ),\n );\n}\n\nfunction parseQueueAddArguments(\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const action = \"add\";\n\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n rejectQueueFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectQueueExtraPositionals(action, [action, ...tail], 1, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input.\", helpRoute));\n }\n\n const input = parseQueueAddInput(values.input, helpRoute);\n\n return {\n args: {\n action,\n ...(values[\"accept-cost\"] === undefined\n ? {}\n : { acceptCost: values[\"accept-cost\"] }),\n archivePath: input.archivePath,\n ...(values.boost === undefined ? {} : { boost: values.boost }),\n ...(input.chapterPath === undefined\n ? {}\n : { chapterPath: input.chapterPath }),\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n inputPath: values.input,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction parseQueueAddInput(\n uri: string,\n helpRoute: string,\n): { readonly archivePath: string; readonly chapterPath?: string } {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n if (parsed.objectUri === undefined) {\n return { archivePath: parsed.archivePath };\n }\n\n const chapterTarget = parseChapterTarget(parsed.objectUri);\n if (chapterTarget?.kind !== \"chapter\") {\n throw new Error(\n withHelpRoute(\n `Expected an archive or chapter Wiki Graph URI: ${uri}`,\n helpRoute,\n ),\n );\n }\n\n return {\n archivePath: parsed.archivePath,\n chapterPath: chapterTarget.chapterPath,\n };\n}\n\nfunction parseQueueJobArguments(\n action: Exclude<CLIQueueAction, \"add\" | \"clean\" | \"list\">,\n jobId: string | undefined,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"status\") {\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n } else if (action === \"watch\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectQueueJSONFlag(action, values.json, helpRoute);\n rejectQueueJSONLFlag(action, values.jsonl, helpRoute);\n }\n\n if (action !== \"target\") {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n } else {\n rejectQueueFlag(action, \"--stage\", values.stage, helpRoute);\n rejectQueueFlag(action, \"--to\", values.to, helpRoute);\n }\n\n if (jobId === undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job/<job-id> ${action}\\` requires <job-id>.`,\n helpRoute,\n ),\n );\n }\n\n rejectQueueExtraPositionals(action, [action, jobId, ...tail], 2, helpRoute);\n\n if (action === \"watch\") {\n const watchFrom = parseWatchFrom(values.from, helpRoute);\n\n return {\n args: {\n action,\n jobId,\n ...(watchFrom === undefined ? {} : { from: watchFrom }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"status\") {\n return {\n args: {\n action,\n jobId,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n if (action === \"target\") {\n return {\n args: {\n action,\n jobId,\n target: parseBuildJobTarget(values.task),\n },\n help: false,\n kind: \"queue\",\n };\n }\n\n return {\n args: {\n action,\n jobId,\n },\n help: false,\n kind: \"queue\",\n };\n}\n\nfunction rejectQueueJSONLFlag(\n action: CLIQueueAction,\n value: boolean | undefined,\n helpRoute: string,\n): void {\n if (value !== true) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support --jsonl.`,\n helpRoute,\n ),\n );\n}\n\nfunction rejectQueueFlag(\n action: CLIQueueAction,\n name: string,\n value: string | undefined,\n helpRoute: string,\n): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n `\\`wg wikg://local/job ${action}\\` does not support ${name}.`,\n helpRoute,\n ),\n );\n}\n","import {\n formatLocatedChapterResourceUri,\n formatLocatedChapterSourceCollectionUri,\n formatLocatedChapterUri,\n type ArchiveTriplePattern,\n} from \"wiki-graph-core\";\n\nimport { renderArchiveMaintenanceChapterActionHelpText } from \"../../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../../support/index.js\";\nimport { parseArchiveArguments } from \"../../archive.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveUriLens,\n CLIArchiveChapterAction,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n normalizeArchiveChapterArguments,\n rejectArchiveChapterFlag,\n rejectArchiveChapterMetaFlags,\n} from \"../../helpers.js\";\nimport type { ChapterUriTarget } from \"./target.js\";\n\nexport function parseArchiveChapterUriArguments(\n uri: string,\n archivePath: string,\n target: ChapterUriTarget,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n switch (target.kind) {\n case \"collection\":\n return parseChapterCollectionUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"lens\":\n return parseArchiveLensUriArguments(\n uri,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"triple-pattern-lens\":\n return parseArchiveTriplePatternLensUriArguments(\n uri,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"tree\":\n return parseChapterTreeUriArguments(\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter\":\n return parseSingleChapterUriArguments(\n archivePath,\n target.chapterPath,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-lens\":\n return parseChapterLensUriArguments(\n archivePath,\n target.chapterPath,\n target.lens,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-triple-pattern-lens\":\n return parseChapterTriplePatternLensUriArguments(\n archivePath,\n target.chapterPath,\n target.pattern,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-state\":\n return parseChapterStateUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n case \"chapter-resource\":\n return parseChapterResourceUriArguments(\n uri,\n archivePath,\n target.chapterPath,\n target.resource,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n}\n\nfunction parseChapterCollectionUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action === \"list\" || action === \"search\") {\n return parseArchiveLensUriArguments(\n uri,\n \"chapter\",\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (!isChapterCollectionMaintenanceAction(action)) {\n throw new Error(\n withHelpRoute(\n `The chapter collection does not support \\`${action}\\`. Read it directly, add --query, or use add.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n values,\n helpRoute,\n );\n}\n\nfunction isChapterCollectionMaintenanceAction(\n action: CLIArchiveUriAction,\n): action is Extract<\n CLIArchiveChapterAction,\n \"add\" | \"move\" | \"remove\" | \"reset\"\n> {\n return (\n action === \"add\" ||\n action === \"move\" ||\n action === \"remove\" ||\n action === \"reset\"\n );\n}\n\nfunction parseArchiveLensUriArguments(\n uri: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [lens],\n });\n}\n\nfunction parseArchiveTriplePatternLensUriArguments(\n uri: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute, {\n defaultKinds: [\"triple\"],\n triplePattern: pattern,\n });\n}\n\nfunction parseChapterTreeUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\" && action !== \"set\") {\n throw new Error(\n withHelpRoute(\n `The chapter tree does not support \\`${action}\\`. Read it directly, or use set.`,\n \"wg <archive-uri>/chapter/tree --help\",\n ),\n );\n }\n\n return parseArchiveChapterLikeArguments(\n \"tree\",\n archivePath,\n tail,\n values,\n helpRoute,\n action === \"set\" ? \"apply\" : undefined,\n );\n}\n\nfunction parseSingleChapterUriArguments(\n archivePath: string,\n chapterPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n switch (action) {\n case \"search\":\n case \"list\":\n return parseArchiveArguments(\n action,\n [formatLocatedChapterUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n );\n case \"get\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` is a scope URI. Use `chapter/<path>/title` or `chapter/<path>/state` to read a concrete chapter object.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"inspect\":\n throw new Error(\n withHelpRoute(\n \"`chapter/<path>` inspect is not available. Inspect the archive or read concrete chapter resources instead.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n case \"move\":\n case \"remove\":\n case \"reset\":\n return parseArchiveChapterLikeArguments(\n action,\n archivePath,\n tail,\n { ...values, chapter: chapterPath },\n helpRoute,\n );\n default:\n throw new Error(\n withHelpRoute(\n `The chapter object does not support \\`${action}\\`.`,\n \"wg <chapter-uri> --help\",\n ),\n );\n }\n}\n\nfunction parseChapterLensUriArguments(\n archivePath: string,\n chapterPath: string,\n lens: ArchiveUriLens,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${lens} collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n `wg <scope-uri> --help`,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [lens] },\n );\n}\n\nfunction parseChapterTriplePatternLensUriArguments(\n archivePath: string,\n chapterPath: string,\n pattern: ArchiveTriplePattern,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\" && action !== \"search\") {\n throw new Error(\n withHelpRoute(\n `The chapter triple pattern collection does not support \\`${action}\\`. Read it directly, or add --query.`,\n \"wg <triple-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [formatChapterScopedArchiveUri(archivePath, chapterPath), ...tail],\n values,\n helpRoute,\n { defaultKinds: [\"triple\"], triplePattern: pattern },\n );\n}\n\nfunction parseChapterStateUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The chapter state object does not support \\`${action}\\`. Read the state URI directly.`,\n \"wg <chapter-uri>/state --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\"get\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterResourceUriArguments(\n uri: string,\n archivePath: string,\n chapterPath: string,\n resource: \"source\" | \"summary\" | \"title\",\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n const resourceHelpRoute = `wg <chapter-uri>/${resource} --help`;\n\n if (action === \"list\" || action === \"search\") {\n if (resource === \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [\n resource === \"source\" || resource === \"summary\"\n ? formatChapterScopedArchiveUri(archivePath, chapterPath)\n : formatLocatedChapterUri(archivePath, chapterPath),\n ...tail,\n ],\n values,\n helpRoute,\n { defaultKinds: [resource] },\n );\n }\n\n if (action !== \"set\" && action !== \"get\" && action !== \"clear\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support \\`${action}\\`. Read it directly, or use set.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"clear\" && resource !== \"title\") {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} resource does not support clear.`,\n resourceHelpRoute,\n ),\n );\n }\n if (action === \"set\" && values.clear === true) {\n throw new Error(\n withHelpRoute(\n `The chapter ${resource} set command does not support --clear. Use \\`clear\\`.`,\n resourceHelpRoute,\n ),\n );\n }\n\n if (action === \"get\") {\n const objectUri =\n uri.includes(\"#\") && (resource === \"source\" || resource === \"summary\")\n ? uri\n : isLibraryArchiveLocator(archivePath)\n ? uri\n : resource === \"source\"\n ? formatLocatedChapterSourceCollectionUri(archivePath, chapterPath)\n : formatLocatedChapterResourceUri(\n archivePath,\n chapterPath,\n resource,\n );\n\n return parseArchiveArguments(\n \"get\",\n [objectUri, ...tail],\n values,\n helpRoute,\n );\n }\n\n const mappedAction =\n resource === \"source\"\n ? \"set-source\"\n : resource === \"summary\"\n ? \"set-summary\"\n : \"set-title\";\n\n return parseArchiveChapterLikeArguments(\n mappedAction,\n archivePath,\n tail,\n {\n ...values,\n chapter: chapterPath,\n ...(action === \"clear\" ? { clear: true } : {}),\n },\n helpRoute,\n );\n}\n\nfunction formatChapterScopedArchiveUri(\n archivePath: string,\n chapterPath: string,\n): string {\n return isLibraryArchiveLocator(archivePath)\n ? `${archivePath}/chapter/${chapterPath}`\n : formatLocatedChapterUri(archivePath, chapterPath);\n}\n\nfunction isLibraryArchiveLocator(archivePath: string): boolean {\n return (\n archivePath.startsWith(\"wikg://lib/arc/\") ||\n /^wikg:\\/\\/lib\\/[^/]+\\/arc\\//u.test(archivePath)\n );\n}\n\nfunction parseArchiveChapterLikeArguments(\n action: CLIArchiveChapterAction,\n archivePath: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n treeAction?: \"apply\",\n): ParsedCLIArguments {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n\n rejectArchiveChapterFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterFlag(\"limit\", values.limit, helpRoute);\n rejectArchiveChapterFlag(\"output\", values.output, helpRoute);\n rejectArchiveChapterFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The chapter command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n\n const maxPositionals =\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ? 1\n : 0;\n if (tail.length > maxPositionals) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${tail.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: normalizeArchiveChapterArguments(\n action,\n archivePath,\n values,\n helpRoute,\n treeAction,\n tail[0],\n ),\n help: false,\n kind: \"chapter\",\n };\n}\n","import {\n type ParsedWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n parseLocatedWikiGraphUri,\n} from \"wiki-graph-core\";\n\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatMissingArchiveLocatorMessage,\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isArchiveUriAction,\n isImplicitArchiveReadAction,\n isUriFirstArchiveAction,\n rejectArchiveBooleanFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseArchiveChapterUriArguments } from \"./chapter/routing.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport {\n parseArchiveUriArchiveArguments,\n parseArchiveCoverUriArguments,\n parseArchiveIndexUriArguments,\n} from \"./archive-objects.js\";\nimport {\n containsMetadataKeySuffix,\n parseMetadataTarget,\n parseMetadataUriArguments,\n} from \"./metadata.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nexport function parseArchiveUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing URI-first archive URI.\");\n }\n\n const action = normalizeArchiveUriAction(\n uri,\n explicitAction ?? resolveImplicitArchiveUriAction(uri, values.query),\n );\n\n if (explicitAction === \"get\") {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n if (values.help === true && explicitAction === undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n\n if (values.help === true && explicitAction !== undefined) {\n const helpTarget = classifyArchiveUriHelpTarget(uri);\n\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isArchiveUriAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI-first form does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveUriTargetArguments(\n uri,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\ntype ArchiveUriKind = \"object\" | \"scope\";\n\nfunction normalizeArchiveUriAction(uri: string, action: string): string {\n if (action !== \"apply\") {\n return action;\n }\n\n const parsed = parseLocatedWikiGraphUri(uri);\n if (parsed.objectUri === \"wikg://chapter/tree\") {\n return \"set\";\n }\n\n return action;\n}\n\nfunction resolveImplicitArchiveUriAction(\n uri: string,\n query: string | undefined,\n): CLIArchiveUriAction {\n const parsed = parseLocatedWikiGraphUri(uri);\n\n if (parsed.archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n\n const kind = classifyArchiveUri(parsed.objectUri);\n\n if (kind === \"scope\") {\n return query === undefined ? \"list\" : \"search\";\n }\n if (query !== undefined) {\n throw new Error(\n withHelpRoute(\n \"`--query` requires a scope URI, or an explicit `related` or `evidence` command for supported object URIs.\",\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n return \"get\";\n}\n\nfunction classifyArchiveUri(objectUri: string | undefined): ArchiveUriKind {\n if (objectUri === undefined) {\n return \"scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n case \"lens\":\n case \"triple-pattern-lens\":\n case \"chapter-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"scope\";\n case \"tree\":\n case \"chapter-resource\":\n case \"chapter-state\":\n return \"object\";\n }\n }\n if (isTripleScopePath(path)) {\n return \"scope\";\n }\n if (/^(?:chunk|entity)$/u.test(path)) {\n return \"scope\";\n }\n\n return \"object\";\n}\n\nfunction classifyArchiveUriHelpTarget(uri: string): UriHelpTargetName {\n const parsed = parseLocatedWikiGraphUri(uri);\n const objectUri = parsed.objectUri;\n\n if (objectUri === undefined) {\n return \"archive-scope\";\n }\n\n const path = stripObjectUriPrefix(objectUri);\n rejectPredicateLikeObjectSuffix(uri, path);\n\n if (parseMetadataTarget(objectUri) !== undefined) {\n return \"metadata-object\";\n }\n if (path === \"cover\") {\n return \"cover-object\";\n }\n if (path === \"index\") {\n return \"index-object\";\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasUriFragment(uri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasUriFragment(uri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk$/u.test(path)) {\n return \"chunk-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity$/u.test(path)) {\n return \"entity-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^(?:chapter\\/[1-9][0-9]*\\/)?triple\\/[^/]+\\/[^/]+\\/[^/]+$/u.test(path)) {\n return \"triple-object\";\n }\n\n throw new Error(\n withHelpRoute(\n `Unknown Wiki Graph URI target: ${uri}. Use the archive root help or URI guide to choose a valid target.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction rejectPredicateLikeObjectSuffix(uri: string, path: string): void {\n const suggestion = getPredicateLikeObjectSuffixSuggestion(uri, path);\n if (suggestion === undefined) {\n return;\n }\n throw new Error(\n withHelpRoute(\n `Predicate-like URI suffixes are not object URIs: ${uri}. Use predicate form: ${suggestion}`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n}\n\nfunction getPredicateLikeObjectSuffixSuggestion(\n uri: string,\n path: string,\n): string | undefined {\n const parts = path.split(\"/\");\n const suffix = parts.at(-1);\n if (suffix !== \"evidence\" && suffix !== \"related\" && suffix !== \"pack\") {\n return undefined;\n }\n const objectParts = stripOptionalChapterObjectPrefix(parts.slice(0, -1));\n if (objectParts[0] === \"entity\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"chunk\" && objectParts.length === 2) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n if (objectParts[0] === \"triple\" && objectParts.length === 4) {\n return `${uri.slice(0, -suffix.length - 1)} ${suffix}`;\n }\n return undefined;\n}\n\nfunction stripOptionalChapterObjectPrefix(\n parts: readonly string[],\n): readonly string[] {\n if (parts[0] === \"chapter\" && parts[1] !== undefined) {\n return parts.slice(2);\n }\n return parts;\n}\n\nfunction hasUriFragment(uri: string): boolean {\n return uri.includes(\"#\");\n}\n\nfunction parseArchiveUriTargetArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const parsed = parseLocatedWikiGraphUri(uri);\n const libraryArchiveObjectTarget = parseLibraryArchiveObjectTarget(uri);\n const archivePath =\n libraryArchiveObjectTarget === undefined\n ? parsed.archivePath\n : formatLibraryArchiveLocator(libraryArchiveObjectTarget);\n const objectUri = libraryArchiveObjectTarget?.objectUri ?? parsed.objectUri;\n const helpRoute = isImplicitArchiveReadAction(action)\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (archivePath === undefined) {\n throw new Error(formatMissingArchiveLocatorMessage(uri));\n }\n rejectUnsupportedArchiveReverse(action, values.reverse, helpRoute);\n\n if (objectUri === undefined) {\n return parseArchiveUriArchiveArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n const metadataTarget = parseMetadataTarget(objectUri);\n if (metadataTarget !== undefined) {\n return parseMetadataUriArguments(\n archivePath,\n metadataTarget,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n\n if (containsMetadataKeySuffix(objectUri)) {\n throw new Error(\n withHelpRoute(\n \"Metadata keys are not addressed in the URI. Read `<object>/meta` and filter the output, or use `<object>/meta put <key> ...`.\",\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n\n if (objectUri === \"wikg://cover\") {\n return parseArchiveCoverUriArguments(\n uri,\n archivePath,\n action,\n tail,\n values,\n );\n }\n\n if (objectUri === \"wikg://index\") {\n return parseArchiveIndexUriArguments(archivePath, action, tail, values);\n }\n\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n return parseArchiveChapterUriArguments(\n uri,\n archivePath,\n chapterTarget,\n action,\n tail,\n values,\n );\n }\n\n const uriKind = classifyArchiveUri(objectUri);\n if (uriKind === \"object\" && (action === \"list\" || action === \"search\")) {\n throw new Error(\n withHelpRoute(\n `The object URI ${uri} does not support \\`${action}\\`. Use a scope URI directly, or add --query to a scope URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n if (uriKind === \"scope\" && action === \"get\") {\n throw new Error(\n withHelpRoute(\n `The scope URI ${uri} cannot be read as one object. Use a concrete object URI.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n\n if (!isUriFirstArchiveAction(action)) {\n const helpCommand = formatWikiGraphHelpCommand(uri);\n\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`. Use \\`${helpCommand}\\` to inspect valid predicates.`,\n helpCommand,\n ),\n );\n }\n\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n}\n\nfunction parseLibraryArchiveObjectTarget(\n uri: string,\n): ParsedWikiGraphLibraryUri | undefined {\n const target = parseWikiGraphLibraryUri(uri);\n\n if (target?.kind === \"archive\" && target.objectUri !== undefined) {\n return target;\n }\n\n return undefined;\n}\n\nfunction formatLibraryArchiveLocator(\n target: ParsedWikiGraphLibraryUri,\n): string {\n if (target.kind !== \"archive\" || target.archivePublicId === undefined) {\n throw new Error(\"Internal error: expected library archive object target.\");\n }\n\n return target.publicId === undefined\n ? `wikg://lib/arc/${target.archivePublicId}`\n : `wikg://lib/${target.publicId}/arc/${target.archivePublicId}`;\n}\n\nfunction rejectUnsupportedArchiveReverse(\n action: CLIArchiveUriAction,\n reverse: boolean | undefined,\n helpRoute: string,\n): void {\n if (reverse !== true) {\n return;\n }\n if (action === \"search\") {\n throw new Error(\n withHelpRoute(\"`--reverse` cannot be combined with --query.\", helpRoute),\n );\n }\n if (\n action === \"evidence\" ||\n action === \"get\" ||\n action === \"list\" ||\n action === \"related\"\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(action, \"--reverse\", reverse, helpRoute);\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport {\n renderArchiveMaintenanceCommandHelpText,\n renderUriHelpText,\n} from \"../help.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n isArchiveAction,\n isArchiveIndexAction,\n rejectArchiveBooleanFlag,\n rejectArchiveExtraPositionals,\n rejectArchiveFlag,\n rejectArchiveMaintenanceExtraPositionals,\n rejectArchiveNonReadFlags,\n rejectCommandMetaFlags,\n rejectCoverCommandBooleanFlag,\n rejectCoverCommandFlag,\n rejectCoverMetaFlags,\n rejectStreamingJSONFlag,\n} from \"../helpers.js\";\n\nexport function parseArchiveUriArchiveArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isArchiveAction(action)) {\n throw new Error(\n withHelpRoute(\n `The archive URI form does not support \\`${action}\\`. Use \\`wg <archive-uri> --help\\` to inspect valid verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n if (action === \"get\") {\n return parseArchiveArguments(action, [uri, ...tail], values, helpRoute);\n }\n\n if (\n action !== \"create\" &&\n action !== \"export\" &&\n action !== \"inspect\" &&\n action !== \"list\" &&\n action !== \"search\"\n ) {\n throw new Error(\n withHelpRoute(\n `The archive URI ${uri} cannot be used with \\`${action}\\`; use a concrete object URI. Use \\`wg <archive-uri> --help\\` to inspect valid archive verbs.`,\n \"wg <archive-uri> --help\",\n ),\n );\n }\n\n return parseArchiveArguments(\n action,\n [action === \"create\" || action === \"export\" ? archivePath : uri, ...tail],\n values,\n helpRoute,\n );\n}\n\nexport function parseArchiveCoverUriArguments(\n uri: string,\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"cover\"),\n kind: \"maintenance\",\n };\n }\n\n if (action !== \"get\") {\n throw new Error(\n withHelpRoute(\n `The cover object does not support \\`${action}\\`. Read the cover URI directly.`,\n \"wg <cover-uri> --help\",\n ),\n );\n }\n\n rejectArchiveMaintenanceExtraPositionals(\"cover\", tail, 0, helpRoute);\n rejectCoverCommandFlag(\"budget\", values.budget, helpRoute);\n rejectCoverCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectCoverCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectCoverCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectCoverCommandFlag(\"import\", values.import, helpRoute);\n rejectCoverCommandFlag(\"input\", values.input, helpRoute);\n rejectCoverCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectCoverCommandFlag(\"limit\", values.limit, helpRoute);\n rejectCoverCommandFlag(\"output\", values.output, helpRoute);\n rejectCoverCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectCoverCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectCoverCommandFlag(\"stage\", values.stage, helpRoute);\n rejectCoverCommandFlag(\"to\", values.to, helpRoute);\n rejectCoverCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectCoverCommandBooleanFlag(\"json\", values.json, helpRoute);\n rejectCoverMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The cover command does not support --verbose.\", helpRoute),\n );\n }\n\n return {\n args: {\n inputPath: archivePath,\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n },\n help: false,\n kind: \"cover\",\n };\n}\n\nexport function parseArchiveIndexUriArguments(\n archivePath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = `wg wikg://<archive.wikg>/index ${action} --help`;\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderUriHelpText(\n \"index-object\",\n \"wikg://<archive.wikg>/index\",\n ),\n kind: \"help\",\n };\n }\n\n if (!isArchiveIndexAction(action)) {\n throw new Error(\n withHelpRoute(\n `The index object does not support \\`${action}\\`. Read the index object directly, or use enable, disable, embed, or external.`,\n CLI_HELP_ROUTES.uri,\n ),\n );\n }\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveNonReadFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--after\", values.after, helpRoute);\n rejectArchiveFlag(action, \"--budget\", values.budget, helpRoute);\n rejectArchiveFlag(action, \"--before\", values.before, helpRoute);\n rejectArchiveFlag(action, \"--chapter\", values.chapter, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--from\", values.from, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--parent\", values.parent, helpRoute);\n rejectArchiveFlag(action, \"--predicate\", values.predicate, helpRoute);\n rejectArchiveFlag(action, \"--role\", values.role, helpRoute);\n rejectArchiveFlag(action, \"--stage\", values.stage, helpRoute);\n rejectArchiveFlag(action, \"--task\", values.task, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--accept-cost\",\n values[\"accept-cost\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--active\", values.active, helpRoute);\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--boost\", values.boost, helpRoute);\n rejectArchiveBooleanFlag(action, \"--clear\", values.clear, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n rejectArchiveBooleanFlag(action, \"--dry-run\", values[\"dry-run\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--first\", values.first, helpRoute);\n if (action === \"enable\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n }\n rejectArchiveBooleanFlag(action, \"--last\", values.last, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n rejectArchiveBooleanFlag(action, \"--root\", values.root, helpRoute);\n rejectArchiveBooleanFlag(action, \"--verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n return {\n args: {\n action,\n archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n },\n help: false,\n kind: \"archive-index\",\n };\n}\n","import { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveUriAction,\n CLIMetadataAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n rejectArchiveChapterMetaFlags,\n rejectArchiveMaintenanceExtraPositionals,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { isMetadataAction } from \"../helpers.js\";\n\nexport function parseMetadataUriArguments(\n archivePath: string,\n objectPath: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (!isMetadataAction(action)) {\n throw new Error(\n withHelpRoute(\n `The metadata object does not support \\`${action}\\`. Read it directly, or use set, put, delete, or clear.`,\n \"wg <object-uri>/meta --help\",\n ),\n );\n }\n rejectMetadataFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 2, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing metadata key.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveMaintenanceExtraPositionals(\"meta\", tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n archivePath,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n objectPath,\n },\n help: false,\n kind: \"object-metadata\",\n };\n}\n\nfunction rejectMetadataFlags(\n action: CLIMetadataAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"budget\", values.budget, helpRoute);\n rejectMetaCommandFlag(\"chapter\", values.chapter, helpRoute);\n rejectMetaCommandFlag(\"cursor\", values.cursor, helpRoute);\n rejectMetaCommandFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectMetaCommandFlag(\"import\", values.import, helpRoute);\n rejectMetaCommandFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectMetaCommandFlag(\"limit\", values.limit, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"stage\", values.stage, helpRoute);\n rejectMetaCommandFlag(\"to\", values.to, helpRoute);\n rejectMetaCommandBooleanFlag(\"confirm\", values.confirm, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectArchiveChapterMetaFlags(values, helpRoute);\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\n \"The metadata command does not support --verbose.\",\n helpRoute,\n ),\n );\n }\n if (action === \"get\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n return;\n }\n if (action === \"clear\" || action === \"delete\") {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"json-input\", values[\"json-input\"], helpRoute);\n }\n}\n\nexport function parseMetadataTarget(objectUri: string): string | undefined {\n const path = stripObjectUriPrefix(objectUri);\n\n if (path === \"meta\") {\n return \"\";\n }\n if (!path.endsWith(\"/meta\")) {\n return undefined;\n }\n\n return path.slice(0, -\"/meta\".length);\n}\n\nexport function containsMetadataKeySuffix(objectUri: string): boolean {\n return /(?:^|\\/)meta\\/.+/u.test(stripObjectUriPrefix(objectUri));\n}\n","import { renderGcCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n ArchiveMetaFlagValues,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { rejectGcFlag, rejectGcMetaFlags } from \"../helpers.js\";\n\nexport function parseGcArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues & ArchiveMetaFlagValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg gc --help\";\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderGcCommandHelpText(),\n kind: \"help\",\n };\n }\n\n rejectGcFlag(\"digest-dir\", values[\"digest-dir\"], helpRoute);\n rejectGcFlag(\"import\", values.import, helpRoute);\n rejectGcFlag(\"input\", values.input, helpRoute);\n rejectGcFlag(\"input-format\", values[\"input-format\"], helpRoute);\n rejectGcFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectGcFlag(\"limit\", values.limit, helpRoute);\n rejectGcFlag(\"llm\", values.llm, helpRoute);\n rejectGcFlag(\"output\", values.output, helpRoute);\n rejectGcFlag(\"output-format\", values[\"output-format\"], helpRoute);\n rejectGcFlag(\"prompt\", values.prompt, helpRoute);\n rejectGcFlag(\"stage\", values.stage, helpRoute);\n rejectGcMetaFlags(values);\n\n if (values.verbose === true) {\n throw new Error(\n withHelpRoute(\"The `gc` command does not support --verbose.\", helpRoute),\n );\n }\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments for \\`gc\\`: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n\n return {\n args: {\n ...(values[\"dry-run\"] === undefined ? {} : { dryRun: values[\"dry-run\"] }),\n ...(values.force === undefined ? {} : { force: values.force }),\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"gc\",\n };\n}\n","import {\n parseHelpTopic,\n renderArchiveCommandHelpText,\n renderHelpTopicText,\n renderMainHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { ParsedCLIArguments } from \"../types.js\";\nimport {\n isPublicArchiveCommandHelpAction,\n rejectHelpFlag,\n rejectHelpMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseHelpArguments(\n positionals: readonly string[],\n values: {\n readonly author?: readonly string[];\n readonly \"clear-authors\"?: boolean;\n readonly \"clear-description\"?: boolean;\n readonly \"clear-identifier\"?: boolean;\n readonly \"clear-language\"?: boolean;\n readonly \"clear-published-at\"?: boolean;\n readonly \"clear-publisher\"?: boolean;\n readonly \"clear-title\"?: boolean;\n readonly description?: string;\n readonly \"digest-dir\"?: string;\n readonly help?: boolean;\n readonly import?: string;\n readonly identifier?: string;\n readonly input?: string;\n readonly \"input-format\"?: string;\n readonly json?: boolean;\n readonly language?: string;\n readonly limit?: string;\n readonly llm?: string;\n readonly output?: string;\n readonly \"output-format\"?: string;\n readonly \"published-at\"?: string;\n readonly publisher?: string;\n readonly prompt?: string;\n readonly stage?: string;\n readonly verbose?: boolean;\n },\n): ParsedCLIArguments {\n rejectHelpFlag(\"digest-dir\", values[\"digest-dir\"]);\n rejectHelpFlag(\"import\", values.import);\n rejectHelpFlag(\"input\", values.input);\n rejectHelpFlag(\"input-format\", values[\"input-format\"]);\n rejectHelpFlag(\"json\", values.json);\n rejectHelpFlag(\"limit\", values.limit);\n rejectHelpFlag(\"llm\", values.llm);\n rejectHelpFlag(\"output\", values.output);\n rejectHelpFlag(\"output-format\", values[\"output-format\"]);\n rejectHelpFlag(\"prompt\", values.prompt);\n rejectHelpFlag(\"stage\", values.stage);\n rejectHelpMetaFlags(values);\n\n if (values.verbose) {\n throw new Error(\n withHelpRoute(\n \"The `help` command does not support --verbose.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.root,\n ),\n );\n }\n\n if (positionals[0] === undefined) {\n return {\n help: true,\n helpText: renderMainHelpText(),\n kind: \"help\",\n };\n }\n\n if (isPublicArchiveCommandHelpAction(positionals[0])) {\n return {\n help: true,\n helpText: renderArchiveCommandHelpText(positionals[0]),\n kind: \"help\",\n };\n }\n\n return {\n help: true,\n helpText: renderHelpTopicText(parseHelpTopic(positionals[0])),\n kind: \"help\",\n };\n}\n","import { renderLegacyCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseLegacyArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(),\n kind: \"help\",\n };\n }\n if (action === \"migrate\") {\n if (values.help === true) {\n return {\n help: true,\n helpText: renderLegacyCommandHelpText(\"migrate\"),\n kind: \"help\",\n };\n }\n\n rejectLegacyFlag(\"--input\", values.input);\n rejectLegacyFlag(\"--import\", values.import);\n rejectLegacyFlag(\"--input-format\", values[\"input-format\"]);\n rejectLegacyFlag(\"--output-format\", values[\"output-format\"]);\n rejectLegacyFlag(\"--llm\", values.llm);\n rejectLegacyFlag(\"--prompt\", values.prompt);\n rejectLegacyBooleanFlag(\"--json\", values.json);\n rejectLegacyBooleanFlag(\"--jsonl\", values.jsonl);\n rejectLegacyBooleanFlag(\"--verbose\", values.verbose);\n\n const inputPath = positionals[1];\n\n if (inputPath === undefined) {\n throw new Error(\n withHelpRoute(\"Missing legacy input path.\", \"wg legacy migrate --help\"),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n inputPath,\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n },\n help: false,\n kind: \"legacy\",\n };\n }\n\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing legacy command.\"\n : `Invalid legacy command: ${action}.`,\n \"wg legacy --help\",\n ),\n );\n}\n\nfunction rejectLegacyFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg legacy migrate\\` does not support ${flag}.`,\n \"wg legacy migrate --help\",\n ),\n );\n }\n}\n\nfunction rejectLegacyBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectLegacyFlag(flag, value);\n }\n}\n","import {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n} from \"../help.js\";\nimport type { LocalConfigSection } from \"../../runtime/local-config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLILocalConfigAction,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatRemovedImplicitVerbMessage,\n formatWikiGraphHelpCommand,\n isRemovedImplicitArchiveAction,\n parseLocalConfigUriSection,\n rejectArchiveExtraPositionals,\n rejectCommandMetaFlags,\n rejectMetaCommandBooleanFlag,\n rejectMetaCommandFlag,\n} from \"../helpers.js\";\n\nexport function parseLocalConfigUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing local config URI.\");\n }\n\n const section = parseLocalConfigUriSection(uri);\n const explicitAction = positionals[1];\n\n if (isRemovedImplicitArchiveAction(explicitAction)) {\n throw new Error(formatRemovedImplicitVerbMessage(explicitAction));\n }\n\n const action = explicitAction ?? \"get\";\n const helpRoute =\n explicitAction === undefined\n ? formatWikiGraphHelpCommand(uri)\n : formatWikiGraphHelpCommand(uri, action);\n\n if (section === undefined) {\n if (\n values.help === true &&\n explicitAction === undefined &&\n parseLocalConfigUriSection(uri) === undefined\n ) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-namespace\", uri),\n kind: \"help\",\n };\n }\n throw new Error(\n withHelpRoute(\n \"Expected a local config section URI such as wikg://local/config/llm.\",\n CLI_HELP_ROUTES.config,\n ),\n );\n }\n if (values.help === true && explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(\"local-config-section\", uri),\n kind: \"help\",\n };\n }\n if (values.help === true && explicitAction !== undefined) {\n if (!isUriHelpPredicate(\"local-config-section\", action)) {\n throw new Error(\n withHelpRoute(\n `The URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"local-config-section\", action, uri),\n kind: \"help\",\n };\n }\n if (!isLocalConfigAction(action)) {\n throw new Error(\n withHelpRoute(\n `The local config URI form does not support \\`${action}\\`. Pass the URI directly to read it, or use set, put, delete, clear, or test.`,\n helpRoute,\n ),\n );\n }\n\n return parseLocalConfigArguments(\n section,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n helpRoute,\n );\n}\n\nfunction parseLocalConfigArguments(\n section: LocalConfigSection,\n action: CLILocalConfigAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectLocalConfigFlags(action, values, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n case \"test\":\n rejectArchiveExtraPositionals(action, tail, 0, helpRoute);\n break;\n case \"delete\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n break;\n case \"put\":\n rejectArchiveExtraPositionals(\n action,\n tail,\n values.secret === true ? 1 : 2,\n helpRoute,\n );\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing config key.\", helpRoute));\n }\n if (\n values.secret !== true &&\n tail[1] === undefined &&\n values[\"json-input\"] === undefined\n ) {\n throw new Error(withHelpRoute(\"Missing config value.\", helpRoute));\n }\n break;\n case \"set\":\n rejectArchiveExtraPositionals(action, tail, 1, helpRoute);\n break;\n }\n\n return {\n args: {\n action,\n ...(tail[0] === undefined || (action !== \"put\" && action !== \"delete\")\n ? {}\n : { key: tail[0] }),\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values[\"json-input\"] === undefined\n ? {}\n : { jsonInputValue: values[\"json-input\"] }),\n ...(action !== \"set\" && action !== \"put\"\n ? {}\n : tail[action === \"put\" ? 1 : 0] === undefined\n ? {}\n : { inputValue: tail[action === \"put\" ? 1 : 0] }),\n section,\n ...(values.secret === undefined ? {} : { secret: values.secret }),\n },\n help: false,\n kind: \"local-config\",\n };\n}\n\nfunction rejectLocalConfigFlags(\n action: CLILocalConfigAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n rejectMetaCommandFlag(\"input\", values.input, helpRoute);\n rejectMetaCommandFlag(\"llm\", values.llm, helpRoute);\n rejectMetaCommandFlag(\"output\", values.output, helpRoute);\n rejectMetaCommandFlag(\"prompt\", values.prompt, helpRoute);\n rejectMetaCommandFlag(\"task\", values.task, helpRoute);\n rejectMetaCommandBooleanFlag(\"jsonl\", values.jsonl, helpRoute);\n rejectMetaCommandBooleanFlag(\"verbose\", values.verbose, helpRoute);\n rejectCommandMetaFlags(values, action, helpRoute);\n\n if (values.secret === true && action !== \"put\") {\n throw new Error(\n withHelpRoute(\"`--secret` is only valid for config put.\", helpRoute),\n );\n }\n if (action === \"get\" || action === \"test\") {\n return;\n }\n if (values.json === true && action !== \"set\" && action !== \"put\") {\n throw new Error(\n withHelpRoute(`\\`${action}\\` does not support --json.`, helpRoute),\n );\n }\n}\n\nfunction isLocalConfigAction(\n value: string | undefined,\n): value is CLILocalConfigAction {\n return (\n value === \"clear\" ||\n value === \"delete\" ||\n value === \"get\" ||\n value === \"put\" ||\n value === \"set\" ||\n value === \"test\"\n );\n}\n","import { renderMaintenanceCommandHelpText } from \"../help.js\";\nimport { withHelpRoute } from \"../../support/index.js\";\nimport type { ArchiveArgumentValues, ParsedCLIArguments } from \"../types.js\";\n\nexport function parseMaintenanceArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const action = positionals[0];\n\n if (values.help === true && action === undefined) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(),\n kind: \"help\",\n };\n }\n\n if (action !== \"upgrade\") {\n throw new Error(\n withHelpRoute(\n action === undefined\n ? \"Missing maintenance command.\"\n : `Invalid maintenance command: ${action}.`,\n \"wg maintenance --help\",\n ),\n );\n }\n\n if (values.help === true) {\n return {\n help: true,\n helpText: renderMaintenanceCommandHelpText(\"upgrade\"),\n kind: \"help\",\n };\n }\n\n rejectMaintenanceFlag(\"--input\", values.input);\n rejectMaintenanceFlag(\"--import\", values.import);\n rejectMaintenanceFlag(\"--input-format\", values[\"input-format\"]);\n rejectMaintenanceFlag(\"--output-format\", values[\"output-format\"]);\n rejectMaintenanceFlag(\"--llm\", values.llm);\n rejectMaintenanceFlag(\"--prompt\", values.prompt);\n rejectMaintenanceBooleanFlag(\"--jsonl\", values.jsonl);\n rejectMaintenanceBooleanFlag(\"--verbose\", values.verbose);\n\n const target = positionals[1];\n if (target === undefined) {\n throw new Error(\n withHelpRoute(\n \"Missing maintenance upgrade target.\",\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n if (positionals.length > 2) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(2).join(\" \")}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n\n return {\n args: {\n action,\n ...(values.json === undefined ? {} : { json: values.json }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n target,\n },\n help: false,\n kind: \"maintenance-command\",\n };\n}\n\nfunction rejectMaintenanceFlag(flag: string, value: unknown): void {\n if (value !== undefined) {\n throw new Error(\n withHelpRoute(\n `\\`wg maintenance upgrade\\` does not support ${flag}.`,\n \"wg maintenance upgrade --help\",\n ),\n );\n }\n}\n\nfunction rejectMaintenanceBooleanFlag(\n flag: string,\n value: boolean | undefined,\n): void {\n if (value === true) {\n rejectMaintenanceFlag(flag, value);\n }\n}\n","import {\n renderArchiveMaintenanceChapterActionHelpText,\n renderArchiveMaintenanceCommandHelpText,\n} from \"../help.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArchiveMaintenanceCommand,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport { isArchiveChapterAction } from \"../helpers.js\";\n\nexport function parseArchiveMaintenanceArguments(\n command: CLIArchiveMaintenanceCommand,\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (values.help !== true) {\n throw new Error(\n withHelpRoute(`Unknown command: ${command}.`, CLI_HELP_ROUTES.command),\n );\n }\n\n switch (command) {\n case \"cover\":\n case \"meta\":\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(command),\n kind: \"maintenance\",\n };\n case \"chapter\": {\n const action = positionals[0];\n if (action === undefined) {\n return {\n help: true,\n helpText: renderArchiveMaintenanceCommandHelpText(\"chapter\"),\n kind: \"chapter\",\n };\n }\n if (!isArchiveChapterAction(action)) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use the chapter collection URI directly, add --query, or use add, move, remove, reset, or tree. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (\n action === \"set-source\" ||\n action === \"set-summary\" ||\n action === \"set-title\"\n ) {\n throw new Error(\n withHelpRoute(\n `Invalid chapter action: ${action}. Use concrete chapter resource URIs such as /source, /summary, or /title for set operations.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n if (positionals.length > 1) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.slice(1).join(\" \")}.`,\n CLI_HELP_ROUTES.command,\n ),\n );\n }\n return {\n help: true,\n helpText: renderArchiveMaintenanceChapterActionHelpText(action),\n kind: \"chapter\",\n };\n }\n }\n}\n","import { parseCLIFormat, withHelpRoute } from \"../../support/index.js\";\nimport { renderTransformHelpText } from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLIArguments,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n parseChapterStage,\n rejectTransformFlag,\n rejectTransformMetaFlags,\n} from \"../helpers.js\";\n\nexport function parseTransformArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = \"wg transform --help\";\n\n if (positionals.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected positional arguments: ${positionals.join(\" \")}.`,\n helpRoute,\n ),\n );\n }\n rejectTransformMetaFlags(values);\n rejectTransformFlag(\"budget\", values.budget, helpRoute);\n rejectTransformFlag(\"chapter\", values.chapter, helpRoute);\n rejectTransformFlag(\"confirm\", values.confirm, helpRoute);\n rejectTransformFlag(\"cursor\", values.cursor, helpRoute);\n rejectTransformFlag(\"evidence\", values.evidence, helpRoute);\n rejectTransformFlag(\"json\", values.json, helpRoute);\n rejectTransformFlag(\"import\", values.import, helpRoute);\n rejectTransformFlag(\"limit\", values.limit, helpRoute);\n rejectTransformFlag(\"parent\", values.parent, helpRoute);\n rejectTransformFlag(\"to\", values.to, helpRoute);\n\n const args = {\n ...(values[\"digest-dir\"] === undefined\n ? {}\n : { digestDirPath: values[\"digest-dir\"] }),\n help: values.help ?? false,\n ...(values.input === undefined ? {} : { inputPath: values.input }),\n ...(values[\"input-format\"] === undefined\n ? {}\n : {\n inputFormat: parseCLIFormat(values[\"input-format\"], \"--input-format\"),\n }),\n ...(values.llm === undefined ? {} : { llmJSON: values.llm }),\n ...(values.output === undefined ? {} : { outputPath: values.output }),\n ...(values[\"output-format\"] === undefined\n ? {}\n : {\n outputFormat: parseCLIFormat(\n values[\"output-format\"],\n \"--output-format\",\n ),\n }),\n ...(values.prompt === undefined ? {} : { prompt: values.prompt }),\n ...(values.stage === undefined\n ? {}\n : {\n targetStage: parseChapterStage(values.stage, \"--stage\", helpRoute),\n }),\n verbose: values.verbose ?? false,\n } satisfies CLIArguments;\n\n if (values.help ?? false) {\n return {\n args,\n help: true,\n helpText: renderTransformHelpText(),\n kind: \"convert\",\n };\n }\n\n return {\n args,\n help: false,\n kind: \"convert\",\n };\n}\n","import {\n parseWikiGraphLibraryUri,\n type ParsedWikiGraphLibraryUri,\n} from \"wiki-graph-core\";\n\nimport { withHelpRoute } from \"../../support/index.js\";\nimport {\n renderLibraryPredicateHelpText,\n renderLibraryUriHelpText,\n renderUriHelpText,\n renderUriPredicateHelpText,\n isUriHelpPredicate,\n type LibraryHelpPredicateName,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport type {\n ArchiveArgumentValues,\n CLILibraryAction,\n CLIObjectKind,\n ParsedCLIArguments,\n} from \"../types.js\";\nimport {\n formatWikiGraphHelpCommand,\n rejectArchiveBooleanFlag,\n rejectArchiveFlag,\n stripObjectUriPrefix,\n} from \"../helpers.js\";\nimport { parseNonNegativeIntegerFlag } from \"../helper/parse.js\";\nimport { parseArchiveArguments } from \"../archive.js\";\nimport { parseChapterTarget } from \"./chapter/target.js\";\nimport { isTripleScopePath } from \"./triple-pattern.js\";\n\nconst LIBRARY_ARCHIVE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_ARCHIVE_COLLECTION_ACTIONS = new Set([\"add\", \"get\", \"scan\"]);\nconst LIBRARY_ARCHIVE_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_ARCHIVE_TREE_ACTIONS = new Set([\"archive-tree\"]);\nconst LIBRARY_METADATA_ACTIONS = new Set([\n \"clear\",\n \"delete\",\n \"get\",\n \"put\",\n \"set\",\n]);\nconst LIBRARY_PATH_ACTIONS = new Set([\"get\", \"set\"]);\nconst LIBRARY_REGISTRY_ACTIONS = new Set([\"add\", \"list\"]);\nconst LIBRARY_SCOPE_ACTIONS = new Set([\"get\", \"remove\"]);\nconst LIBRARY_INDEX_ACTIONS = new Set([\"disable\", \"enable\", \"get\"]);\nconst LIBRARY_QUERY_ACTIONS = new Set([\n \"evidence\",\n \"get\",\n \"list\",\n \"pack\",\n \"related\",\n \"search\",\n]);\n\nexport function parseLibraryUriFirstArguments(\n positionals: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const uri = positionals[0];\n const explicitAction = positionals[1];\n\n if (uri === undefined) {\n throw new Error(\"Internal error: missing library URI.\");\n }\n\n const target = parseWikiGraphLibraryUri(uri);\n if (target === undefined) {\n throw new Error(`Expected a Wiki Graph library URI: ${uri}`);\n }\n\n const action =\n explicitAction ??\n (target.kind === \"scope\" &&\n ((target.objectUri !== undefined && target.objectUri !== \"wikg://index\") ||\n values.query !== undefined)\n ? resolveImplicitLibraryQueryAction(target.objectUri, values.query)\n : target.kind === \"scope\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"metadata\" ||\n target.kind === \"path\" ||\n target.kind === \"archive\" ||\n target.kind === \"archive-path\" ||\n target.objectUri === \"wikg://index\"\n ? \"get\"\n : target.kind === \"archive-tree\"\n ? \"archive-tree\"\n : \"list\");\n\n if (action === \"inspect\" && target.kind !== \"archive\") {\n throw new Error(\n withHelpRoute(\n \"Library-level inspection is not supported. Inspect one managed archive with `wg wikg://lib/arc/<archive-id> inspect`.\",\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n\n if (values.help === true) {\n return parseLibraryHelpArguments(uri, target, action, explicitAction);\n }\n\n if (target.kind === \"archive\" && action === \"inspect\") {\n return parseLibraryArchiveInspectArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"archive\" &&\n target.objectUri === undefined &&\n (action === \"search\" || values.query !== undefined)\n ) {\n return parseLibraryArchiveRootQueryArguments(\n uri,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"registry\") {\n return parseLibraryRegistryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"path\" || target.kind === \"archive-path\") {\n return parseLibraryPathArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-tree\") {\n return parseLibraryArchiveTreeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"archive-collection\") {\n return parseLibraryArchiveCollectionArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n return parseLibraryIndexArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (\n target.kind === \"scope\" &&\n (target.objectUri !== undefined || action === \"search\")\n ) {\n return parseLibraryQueryArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n\n if (target.kind === \"archive\") {\n return parseLibraryArchiveArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n if (target.kind === \"metadata\") {\n return parseLibraryMetadataArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n }\n\n return parseLibraryScopeArguments(\n uri,\n target,\n action,\n explicitAction === undefined ? [] : positionals.slice(2),\n values,\n );\n}\n\nfunction parseLibraryHelpArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n explicitAction: string | undefined,\n): ParsedCLIArguments {\n if (target.kind === \"archive\" && action === \"inspect\") {\n return {\n help: true,\n helpText: renderUriPredicateHelpText(\"archive-scope\", \"inspect\", uri),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"scope\" &&\n target.objectUri === undefined &&\n action === \"search\" &&\n explicitAction === undefined\n ) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n\n if (\n target.kind === \"registry\" ||\n target.kind === \"path\" ||\n target.kind === \"archive-collection\" ||\n target.kind === \"archive-tree\" ||\n target.kind === \"archive-path\"\n ) {\n if (explicitAction !== undefined && !isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (isLibraryAction(action)) {\n validateLibraryActionForTarget(uri, target, action);\n }\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri === \"wikg://index\") {\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderLibraryUriHelpText(uri, target),\n kind: \"help\",\n };\n }\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderLibraryPredicateHelpText(\n uri,\n target,\n action as LibraryHelpPredicateName,\n ),\n kind: \"help\",\n };\n }\n\n if (target.kind === \"scope\" && target.objectUri !== undefined) {\n const helpTarget = classifyLibraryObjectHelpTarget(target.objectUri);\n if (explicitAction === undefined) {\n return {\n help: true,\n helpText: renderUriHelpText(helpTarget, uri),\n kind: \"help\",\n };\n }\n if (isReadOnlyLibraryChapterHelpTarget(helpTarget)) {\n throw new Error(\n withHelpRoute(\n `The library-wide chapter target ${uri} is read-only and does not support \\`${action}\\`. Use a standalone archive URI or a library archive shortcut such as wikg://lib/arc/<archive-id>/chapter/... for chapter maintenance.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n if (!isUriHelpPredicate(helpTarget, action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n return {\n help: true,\n helpText: renderUriPredicateHelpText(helpTarget, action, uri),\n kind: \"help\",\n };\n }\n\n if (!isLibraryAction(action)) {\n throw new Error(\n withHelpRoute(\n `The library URI target ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n validateLibraryActionForTarget(uri, target, action);\n return {\n help: true,\n helpText:\n explicitAction === undefined\n ? renderLibraryUriHelpText(uri, target)\n : renderLibraryPredicateHelpText(uri, target, action),\n kind: \"help\",\n };\n}\n\nfunction classifyLibraryObjectHelpTarget(objectUri: string): UriHelpTargetName {\n const path = stripObjectUriPrefix(objectUri);\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n return \"chapter-collection-scope\";\n case \"chapter\":\n return \"chapter-scope\";\n case \"tree\":\n return \"chapter-tree-object\";\n case \"chapter-state\":\n return \"chapter-state-object\";\n case \"chapter-resource\":\n switch (chapterTarget.resource) {\n case \"source\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-source-range-object\"\n : \"chapter-source-object\";\n case \"summary\":\n return hasObjectUriFragment(objectUri)\n ? \"chapter-summary-range-object\"\n : \"chapter-summary-object\";\n case \"title\":\n return \"chapter-title-object\";\n }\n break;\n case \"lens\":\n case \"chapter-lens\":\n switch (chapterTarget.lens) {\n case \"chunk\":\n return \"chunk-scope\";\n case \"entity\":\n return \"entity-scope\";\n case \"source\":\n return \"chapter-source-object\";\n case \"summary\":\n return \"chapter-summary-object\";\n case \"triple\":\n return \"triple-scope\";\n }\n break;\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return \"triple-scope\";\n }\n }\n if (path === \"chunk\") {\n return \"chunk-scope\";\n }\n if (/^chunk\\/.+$/u.test(path)) {\n return \"chunk-object\";\n }\n if (path === \"entity\") {\n return \"entity-scope\";\n }\n if (/^entity\\/[^/]+\\/wikipage$/u.test(path)) {\n return \"entity-wikipage-object\";\n }\n if (/^entity\\/.+$/u.test(path)) {\n return \"entity-object\";\n }\n if (isTripleScopePath(path)) {\n return \"triple-scope\";\n }\n if (/^triple(?:\\/.*)?$/u.test(path)) {\n return \"triple-object\";\n }\n\n return \"archive-scope\";\n}\n\nfunction hasObjectUriFragment(objectUri: string): boolean {\n return objectUri.includes(\"#\");\n}\n\nfunction isReadOnlyLibraryChapterHelpTarget(\n targetName: UriHelpTargetName,\n): boolean {\n return (\n targetName === \"chapter-collection-scope\" ||\n targetName === \"chapter-scope\" ||\n targetName === \"chapter-source-object\" ||\n targetName === \"chapter-summary-object\" ||\n targetName === \"chapter-title-object\" ||\n targetName === \"chapter-tree-object\"\n );\n}\n\nfunction parseLibraryQueryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n if (!LIBRARY_QUERY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\n }\n if (\n target.objectUri === undefined &&\n action !== \"search\" &&\n action !== \"list\"\n ) {\n throw new Error(\"Internal error: missing library query object URI.\");\n }\n\n const parsed = parseArchiveArguments(\n action as \"evidence\" | \"get\" | \"list\" | \"pack\" | \"related\" | \"search\",\n [\n target.objectUri === undefined\n ? \"wikg://__library_index__.wikg\"\n : formatTemporaryLocatedLibraryQueryUri(target.objectUri),\n ...tail,\n ],\n values,\n formatWikiGraphHelpCommand(uri, action),\n {\n ...optionalDefaultKinds(getLibraryQueryDefaultKinds(target.objectUri)),\n },\n );\n\n if (parsed.kind !== \"archive\") {\n return parsed;\n }\n\n const temporaryArchivePath = parsed.args.archivePath;\n const replaceTemporaryUri = (\n value: string | undefined,\n ): string | undefined =>\n value === undefined\n ? undefined\n : value === temporaryArchivePath\n ? uri\n : value.replace(temporaryArchivePath, uri);\n\n return {\n ...parsed,\n args: {\n ...parsed.args,\n archivePath: uri,\n ...optionalObjectId(replaceTemporaryUri(parsed.args.objectId)),\n },\n };\n}\n\nfunction optionalDefaultKinds(\n defaultKinds: readonly CLIObjectKind[] | undefined,\n): { readonly defaultKinds?: readonly CLIObjectKind[] } {\n return defaultKinds === undefined ? {} : { defaultKinds };\n}\n\nfunction optionalObjectId(objectId: string | undefined): {\n readonly objectId?: string;\n} {\n return objectId === undefined ? {} : { objectId };\n}\n\nfunction formatTemporaryLocatedLibraryQueryUri(objectUri: string): string {\n const path = stripObjectUriPrefix(objectUri);\n return `wikg://__library_index__.wikg/${path}`;\n}\n\nfunction getLibraryQueryDefaultKinds(\n objectUri: string | undefined,\n): readonly CLIObjectKind[] | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const path = stripObjectUriPrefix(objectUri);\n const [head] = path.split(\"/\");\n\n switch (head) {\n case \"chapter\":\n return [\"chapter\"];\n case \"chunk\":\n return [\"chunk\"];\n case \"entity\":\n return [\"entity\"];\n case \"source\":\n return [\"source\"];\n case \"summary\":\n return [\"summary\"];\n case \"triple\":\n return [\"triple\"];\n default:\n return undefined;\n }\n}\n\nfunction resolveImplicitLibraryQueryAction(\n objectUri: string | undefined,\n query: string | undefined,\n): \"get\" | \"list\" | \"search\" {\n if (objectUri === undefined) {\n return query === undefined ? \"list\" : \"search\";\n }\n const path = stripObjectUriPrefix(objectUri);\n if (/^(?:chapter|chunk|entity|source|summary|triple)$/u.test(path)) {\n return query === undefined ? \"list\" : \"search\";\n }\n\n return \"get\";\n}\n\nfunction parseLibraryRegistryArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_REGISTRY_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library registry ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (action === \"add\") {\n if (values.path === undefined) {\n throw new Error(withHelpRoute(\"Missing --path <folder>.\", helpRoute));\n }\n return {\n args: { action: \"create\", json: values.json, path: values.path, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n return {\n args: { action: \"list\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryPathArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_PATH_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library path object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"get\") {\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"get\", json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n rejectExtraPositionals(action, tail, 1, helpRoute);\n if (tail[0] === undefined) {\n throw new Error(withHelpRoute(\"Missing path value.\", helpRoute));\n }\n if (target.kind === \"archive-path\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: { action: \"set\", json: values.json, target, to: tail[0] },\n help: false,\n kind: \"library\",\n };\n }\n return {\n args: {\n action: \"rebind\",\n json: values.json,\n jsonl: values.jsonl,\n path: tail[0],\n target: getLibraryScopeForPathTarget(target),\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction getLibraryScopeForPathTarget(\n target: ParsedWikiGraphLibraryUri,\n): ParsedWikiGraphLibraryUri {\n if (target.kind !== \"path\") {\n throw new Error(\"Internal error: expected library path target.\");\n }\n return {\n isDefault: target.isDefault,\n kind: \"scope\",\n ...(target.publicId === undefined ? {} : { publicId: target.publicId }),\n };\n}\n\nfunction parseLibraryArchiveCollectionArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_COLLECTION_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member collection ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n if (action === \"add\") {\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input <path>.\", helpRoute));\n }\n return {\n args: {\n action: \"add\",\n inputPath: values.input,\n json: values.json,\n target,\n ...(values.to === undefined ? {} : { to: values.to }),\n },\n help: false,\n kind: \"library\",\n };\n }\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: {\n action: action === \"get\" ? \"get\" : \"scan\",\n json: values.json,\n jsonl: values.jsonl,\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveTreeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_TREE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The archive member tree ${uri} is read-only and does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: \"archive-tree\",\n ...(values.depth === undefined\n ? {}\n : {\n depth: parseNonNegativeIntegerFlag(\n values.depth,\n \"--depth\",\n helpRoute,\n ),\n }),\n json: values.json,\n ...(values.parent === undefined ? {} : { parent: values.parent }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryIndexArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_INDEX_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library index ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n\n if (action === \"enable\") {\n if (values.json === true) {\n throw new Error(\n withHelpRoute(\n \"The `enable` command does not support --json because it streams progress events. Use --jsonl for line-delimited progress output.\",\n helpRoute,\n ),\n );\n }\n return {\n args: { action: \"enable-index\", jsonl: values.jsonl, target },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: action === \"disable\" ? \"disable-index\" : \"get-index\",\n ...(values.json === undefined ? {} : { json: values.json }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n}\n\nfunction parseLibraryArchiveArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectExtraPositionals(action, tail, 0, helpRoute);\n\n if (action === \"get\") {\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n if (action === \"remove\") {\n if (values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, confirm: true, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n throw new Error(\n \"Internal error: unsupported action routed to library archive.\",\n );\n}\n\nfunction parseLibraryArchiveInspectArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"inspect\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"inspect\"),\n );\n}\n\nfunction parseLibraryArchiveRootQueryArguments(\n uri: string,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n return parseArchiveArguments(\n \"search\",\n [uri, ...tail],\n values,\n formatWikiGraphHelpCommand(uri, \"search\"),\n );\n}\n\nfunction parseLibraryScopeArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute, {\n allowConfirm: action === \"remove\",\n });\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveFlag(action, \"--json-input\", values[\"json-input\"], helpRoute);\n\n switch (action) {\n case \"remove\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n if (!target.isDefault && values.confirm !== true) {\n throw new Error(withHelpRoute(\"Missing --confirm.\", helpRoute));\n }\n return {\n args: {\n action,\n ...(values.confirm === undefined ? {} : { confirm: values.confirm }),\n json: values.json,\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"get\":\n case \"list\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveFlag(action, \"--input\", values.input, helpRoute);\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n case \"put\":\n case \"delete\":\n case \"disable-index\":\n case \"enable-index\":\n case \"get-index\":\n case \"clear\":\n case \"archive-tree\":\n case \"add\":\n case \"create\":\n case \"rebind\":\n case \"scan\":\n throw new Error(\n \"Internal error: unsupported action routed to library scope.\",\n );\n }\n}\n\nfunction parseLibraryMetadataArguments(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n): ParsedCLIArguments {\n const helpRoute = formatWikiGraphHelpCommand(uri, action);\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n rejectCommonLibraryFlags(action, values, helpRoute);\n rejectArchiveFlag(action, \"--path\", values.path, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n\n switch (action) {\n case \"get\":\n case \"clear\":\n rejectExtraPositionals(action, tail, 0, helpRoute);\n return {\n args: { action, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n case \"set\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[0],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"put\":\n rejectExtraPositionals(action, tail, 2, helpRoute);\n return {\n args: {\n action,\n inputPath: values.input,\n inputValue: tail[1],\n json: values.json,\n jsonInputValue: values[\"json-input\"],\n key: tail[0],\n target,\n },\n help: false,\n kind: \"library\",\n };\n case \"delete\":\n rejectExtraPositionals(action, tail, 1, helpRoute);\n return {\n args: { action, json: values.json, key: tail[0], target },\n help: false,\n kind: \"library\",\n };\n case \"create\":\n case \"list\":\n case \"remove\":\n case \"add\":\n case \"rebind\":\n case \"disable-index\":\n case \"enable-index\":\n case \"get-index\":\n case \"scan\":\n case \"archive-tree\":\n throw new Error(\n \"Internal error: scope action routed to library metadata.\",\n );\n }\n}\n\nfunction rejectCommonLibraryFlags(\n action: string,\n values: ArchiveArgumentValues,\n helpRoute: string,\n options: { readonly allowConfirm?: boolean } = {},\n): void {\n rejectArchiveFlag(action, \"--query\", values.query, helpRoute);\n rejectArchiveFlag(action, \"--limit\", values.limit, helpRoute);\n rejectArchiveFlag(action, \"--cursor\", values.cursor, helpRoute);\n rejectArchiveFlag(action, \"--context\", values.context, helpRoute);\n rejectArchiveFlag(action, \"--evidence\", values.evidence, helpRoute);\n rejectArchiveFlag(action, \"--llm\", values.llm, helpRoute);\n rejectArchiveFlag(action, \"--output\", values.output, helpRoute);\n rejectArchiveFlag(\n action,\n \"--output-format\",\n values[\"output-format\"],\n helpRoute,\n );\n rejectArchiveBooleanFlag(action, \"--all\", values.all, helpRoute);\n rejectArchiveBooleanFlag(action, \"--backlinks\", values.backlinks, helpRoute);\n rejectArchiveBooleanFlag(action, \"--reverse\", values.reverse, helpRoute);\n if (options.allowConfirm !== true) {\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n }\n}\n\nfunction rejectExtraPositionals(\n action: string,\n positionals: readonly string[],\n expected: number,\n helpRoute: string,\n): void {\n if (positionals.length > expected) {\n throw new Error(\n withHelpRoute(\n `The \\`${action}\\` command received too many positional arguments.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction isLibraryAction(action: string): action is CLILibraryAction {\n return (\n action === \"add\" ||\n action === \"archive-tree\" ||\n action === \"clear\" ||\n action === \"create\" ||\n action === \"delete\" ||\n action === \"disable-index\" ||\n action === \"enable-index\" ||\n action === \"get\" ||\n action === \"get-index\" ||\n action === \"list\" ||\n action === \"put\" ||\n action === \"rebind\" ||\n action === \"remove\" ||\n action === \"scan\" ||\n action === \"set\"\n );\n}\n\nfunction validateTargetAction(\n uri: string,\n label: string,\n actions: ReadonlySet<string>,\n action: CLILibraryAction,\n): void {\n if (!actions.has(action)) {\n throw new Error(\n withHelpRoute(\n `The ${label} ${uri} does not support \\`${action}\\`.`,\n formatWikiGraphHelpCommand(uri),\n ),\n );\n }\n}\n\nfunction validateLibraryActionForTarget(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n action: CLILibraryAction,\n): void {\n const helpRoute = formatWikiGraphHelpCommand(uri);\n if (target.kind === \"metadata\") {\n if (!LIBRARY_METADATA_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library metadata object ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n\n if (target.kind === \"archive\") {\n if (!LIBRARY_ARCHIVE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library archive ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n return;\n }\n if (target.kind === \"registry\") {\n validateTargetAction(\n uri,\n \"library registry\",\n LIBRARY_REGISTRY_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"path\") {\n validateTargetAction(\n uri,\n \"library path object\",\n LIBRARY_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-collection\") {\n validateTargetAction(\n uri,\n \"archive member collection\",\n LIBRARY_ARCHIVE_COLLECTION_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-tree\") {\n validateTargetAction(\n uri,\n \"archive member tree\",\n LIBRARY_ARCHIVE_TREE_ACTIONS,\n action,\n );\n return;\n }\n\n if (target.kind === \"archive-path\") {\n validateTargetAction(\n uri,\n \"archive path object\",\n LIBRARY_ARCHIVE_PATH_ACTIONS,\n action,\n );\n return;\n }\n\n if (!LIBRARY_SCOPE_ACTIONS.has(action)) {\n throw new Error(\n withHelpRoute(\n `The library scope ${uri} does not support \\`${action}\\`.`,\n helpRoute,\n ),\n );\n }\n if (action === \"create\" && !target.isDefault) {\n throw new Error(\n withHelpRoute(\"Create libraries from wikg://lib.\", helpRoute),\n );\n }\n if (action === \"remove\" && target.isDefault) {\n throw new Error(\n withHelpRoute(\n \"The default library cannot be removed. Use a non-default library URI such as wikg://lib/<lib-id> for library registry removal.\",\n helpRoute,\n ),\n );\n }\n}\n","import type {\n CLIArguments,\n CLIArchiveArguments,\n CLIArchiveChapterArguments,\n CLIArchiveCoverArguments,\n CLIArchiveIndexArguments,\n CLIArchiveMetadataArguments,\n CLILibraryArguments,\n CLIGcArguments,\n CLILegacyArguments,\n CLILocalConfigArguments,\n CLIMaintenanceArguments,\n CLIObjectMetadataArguments,\n CLIQueueArguments,\n} from \"../args/index.js\";\n\nexport async function runArchiveCommand(\n args: CLIArchiveArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/index.js\");\n\n return command.runArchiveCommand(args);\n}\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/chapter.js\");\n\n return command.runArchiveChapterCommand(args);\n}\n\nexport async function runArchiveIndexCommand(\n args: CLIArchiveIndexArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/search-index.js\");\n\n return command.runArchiveIndexCommand(args);\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveCoverCommand(args);\n}\n\nexport async function runArchiveMetaCommand(\n args: CLIArchiveMetadataArguments,\n): Promise<void> {\n const command = await import(\"./archive-command/maintenance.js\");\n\n return command.runArchiveMetaCommand(args);\n}\n\nexport async function runConvertCommand(args: CLIArguments): Promise<void> {\n const command = await import(\"./convert.js\");\n\n return command.runConvertCommand(args);\n}\n\nexport async function runGcCommand(args: CLIGcArguments): Promise<void> {\n const command = await import(\"./gc.js\");\n\n return command.runGcCommand(args);\n}\n\nexport async function runLegacyCommand(\n args: CLILegacyArguments,\n): Promise<void> {\n const command = await import(\"./legacy.js\");\n\n return command.runLegacyCommand(args);\n}\n\nexport async function runMaintenanceCommand(\n args: CLIMaintenanceArguments,\n): Promise<void> {\n const command = await import(\"./maintenance.js\");\n\n return command.runMaintenanceCommand(args);\n}\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const command = await import(\"./local-config.js\");\n\n return command.runLocalConfigCommand(args);\n}\n\nexport async function runLibraryCommand(\n args: CLILibraryArguments,\n): Promise<void> {\n const command = await import(\"./library.js\");\n\n return command.runLibraryCommand(args);\n}\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const command = await import(\"./object-metadata.js\");\n\n return command.runObjectMetadataCommand(args);\n}\n\nexport async function runQueueCommand(args: CLIQueueArguments): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueCommand(args);\n}\n\nexport async function runQueueWorker(): Promise<void> {\n const command = await import(\"./queue/index.js\");\n\n return command.runQueueWorker();\n}\n","import { renderMainHelpText } from \"../args/help.js\";\nimport { parseCLIArguments } from \"../args/index.js\";\nimport {\n runArchiveChapterCommand,\n runArchiveCommand,\n runArchiveCoverCommand,\n runArchiveIndexCommand,\n runArchiveMetaCommand,\n runConvertCommand,\n runGcCommand,\n runLegacyCommand,\n runLibraryCommand,\n runLocalConfigCommand,\n runMaintenanceCommand,\n runObjectMetadataCommand,\n runQueueCommand,\n} from \"../commands/index.js\";\nimport { formatCLIJSON, formatCLIJSONLine } from \"../support/index.js\";\nimport { readCLIVersion } from \"../support/index.js\";\nimport {\n ensureWikiGraphHomeSchemaCurrent,\n formatError,\n LLMPaymentRequiredError,\n} from \"wiki-graph-core\";\n\nexport interface WikiGraphCLIDispatchInput {\n readonly argv: readonly string[];\n readonly stdinIsTTY?: boolean | undefined;\n readonly stderr: NodeJS.WritableStream;\n readonly stdout: NodeJS.WritableStream;\n}\n\nexport interface WikiGraphCLIDispatchResult {\n readonly exitCode: number;\n}\n\nexport async function dispatchWikiGraphCLI(\n input: WikiGraphCLIDispatchInput,\n): Promise<WikiGraphCLIDispatchResult> {\n try {\n if (shouldPrintDefaultHelp(input.argv, input.stdinIsTTY)) {\n input.stdout.write(`${renderMainHelpText()}\\n`);\n return { exitCode: 0 };\n }\n\n const parsed = parseCLIArguments([...input.argv]);\n\n if (parsed.help) {\n input.stdout.write(`${parsed.helpText}\\n`);\n return { exitCode: 0 };\n }\n\n switch (parsed.kind) {\n case \"version\":\n input.stdout.write(`${readCLIVersion()}\\n`);\n return { exitCode: 0 };\n }\n\n await ensureWikiGraphHomeSchemaCurrent();\n\n switch (parsed.kind) {\n case \"convert\":\n await runConvertCommand(parsed.args);\n return { exitCode: 0 };\n case \"meta\":\n await runArchiveMetaCommand(parsed.args);\n return { exitCode: 0 };\n case \"cover\":\n await runArchiveCoverCommand(parsed.args);\n return { exitCode: 0 };\n case \"object-metadata\":\n await runObjectMetadataCommand(parsed.args);\n return { exitCode: 0 };\n case \"library\":\n await runLibraryCommand(parsed.args);\n return { exitCode: 0 };\n case \"chapter\":\n await runArchiveChapterCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive\":\n await runArchiveCommand(parsed.args);\n return { exitCode: 0 };\n case \"archive-index\":\n await runArchiveIndexCommand(parsed.args);\n return { exitCode: 0 };\n case \"queue\":\n await runQueueCommand(parsed.args);\n return { exitCode: 0 };\n case \"gc\":\n await runGcCommand(parsed.args);\n return { exitCode: 0 };\n case \"legacy\":\n await runLegacyCommand(parsed.args);\n return { exitCode: 0 };\n case \"maintenance-command\":\n await runMaintenanceCommand(parsed.args);\n return { exitCode: 0 };\n case \"local-config\":\n await runLocalConfigCommand(parsed.args);\n return { exitCode: 0 };\n }\n } catch (error) {\n if (shouldWriteJSONError(input.argv)) {\n input.stdout.write(formatCLIJSON(createCLIErrorObject(error)));\n return { exitCode: 1 };\n }\n if (shouldWriteJSONLError(input.argv)) {\n input.stdout.write(formatCLIJSONLine(createCLIErrorObject(error)));\n return { exitCode: 1 };\n }\n input.stderr.write(`${formatCLIError(error)}\\n`);\n return { exitCode: 1 };\n }\n}\n\nfunction shouldPrintDefaultHelp(\n argv: readonly string[],\n stdinIsTTY: boolean | undefined,\n): boolean {\n return argv.length === 0 && stdinIsTTY === true;\n}\n\nfunction formatCLIError(error: unknown): string {\n if (error instanceof LLMPaymentRequiredError) {\n return \"LLM payment required. Check your provider billing status or account balance.\";\n }\n\n return formatError(error);\n}\n\nfunction createCLIErrorObject(error: unknown): {\n readonly error: {\n readonly message: string;\n readonly type: string;\n };\n} {\n return {\n error: {\n message: formatCLIError(error),\n type:\n error instanceof LLMPaymentRequiredError\n ? \"llm_payment_required\"\n : \"error\",\n },\n };\n}\n\nfunction shouldWriteJSONError(argv: readonly string[]): boolean {\n return argv.some((item) => item === \"--json\" || item.startsWith(\"--json=\"));\n}\n\nfunction shouldWriteJSONLError(argv: readonly string[]): boolean {\n return argv.includes(\"--jsonl\");\n}\n","export type WikiGraphEntryEnvPolicy = \"development\" | \"production\";\n\nexport interface WikiGraphEntryRuntimeOptions {\n readonly argv?: readonly string[] | undefined;\n readonly cwd?: string | undefined;\n readonly devProjectRoot?: string | undefined;\n readonly env?: NodeJS.ProcessEnv | undefined;\n readonly envPolicy: WikiGraphEntryEnvPolicy;\n readonly stateDir?: string | undefined;\n}\n\nexport interface WikiGraphEntryRuntimeContext {\n readonly devProjectRoot?: string | undefined;\n readonly env: NodeJS.ProcessEnv;\n readonly envPolicy: WikiGraphEntryEnvPolicy;\n readonly stateDir?: string | undefined;\n}\n\nconst DANGEROUS_RUNTIME_ENV_NAMES = [\n \"WIKIGRAPH_DEV\",\n \"WIKIGRAPH_ENV_POLICY\",\n \"WIKIGRAPH_QUEUE_DISABLE_AUTOSTART\",\n \"WIKIGRAPH_STATE_DIR\",\n] as const;\n\nexport function createEntryRuntimeContext(\n options: WikiGraphEntryRuntimeOptions,\n): WikiGraphEntryRuntimeContext {\n const environment = createMergedEnvironment(options.env);\n\n if (options.envPolicy === \"production\") {\n const blocked = DANGEROUS_RUNTIME_ENV_NAMES.filter(\n (name) => environment[name] !== undefined,\n );\n\n if (blocked.length > 0) {\n throw new Error(\n `Wiki Graph production entries do not support runtime env overrides: ${blocked.join(\", \")}. Use the development entry or explicit SDK options instead.`,\n );\n }\n\n return {\n env: environment,\n envPolicy: options.envPolicy,\n stateDir: options.stateDir,\n };\n }\n\n const envStateDir =\n environment.WIKIGRAPH_DEV ?? environment.WIKIGRAPH_STATE_DIR;\n const stateDir = normalizeOptionalPath(options.stateDir ?? envStateDir);\n\n if (stateDir === undefined) {\n throw new Error(\n \"Wiki Graph development entries require an explicit runtime state directory.\",\n );\n }\n\n const devProjectRoot = normalizeOptionalPath(options.devProjectRoot);\n\n if (devProjectRoot === undefined) {\n throw new Error(\n \"Wiki Graph development entries require an explicit project root.\",\n );\n }\n\n return {\n devProjectRoot,\n env: environment,\n envPolicy: options.envPolicy,\n stateDir,\n };\n}\n\nfunction createMergedEnvironment(\n environment: NodeJS.ProcessEnv | undefined,\n): NodeJS.ProcessEnv {\n if (environment === undefined) {\n return { ...process.env };\n }\n\n return {\n ...process.env,\n ...environment,\n };\n}\n\nfunction normalizeOptionalPath(path: string | undefined): string | undefined {\n if (path === undefined || path.trim() === \"\") {\n return undefined;\n }\n\n return path;\n}\n"],"mappings":"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","names":["resolve","CLI_PRIMARY_COMMAND","join","formatError","resolveDataDirPath","rm","resolve","rm","dirname","join","createWikiGraphTempDirectory","formatWikiGraphCommandUri","CLI_PRIMARY_COMMAND","CLI_PRIMARY_COMMAND","formatWikiGraphCommandUri","parseLocatedWikiGraphUri","formatWikiGraphCommandUri","init_evidence","init_page","init_evidence","init_page","formatLocatedWikiGraphUri","parseWikiGraphLibraryUri","parseLocatedWikiGraphUri","init_uri","init_uri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","parseLocatedWikiGraphUri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","init_uri","init_types","init_uri","formatLocatedWikiGraphUri","init_uri","init_types","init_uri","listChapters","parseLocatedWikiGraphUri","listArchiveCollection","listArchiveEvidence","listRelatedArchiveObjects","findWikiGraphLibraryObjects","listRelatedWikiGraphLibraryObjects","listWikiGraphLibraryEvidence","listWikiGraphLibraryObjects","parseWikiGraphLibraryUri","findArchiveObjects","listChapters","WikiGraphArchiveFile","rename","init_uri","isArchiveSearchIndexCurrent","readArchiveIndexSettings","WikiGraphArchiveFile","init_uri","WikiGraph","init_uri","existsSync","join","resolve","maintenance_exports","upgradeWikiGraphMaintenanceTarget","init_maintenance","init_local_config","readFile","resolveWikiGraphLibrary","INDEX_PROGRESS_OUTPUT_INTERVAL_MS","formatIndexCounter","result","parseJSONInput","readFile","WikiGraphArchiveFile","writeMetadataMap","readMetadataInput","parseMetadataMap","normalizeMetadataKey","readRawInput","parseJSONInput","formatMetadataTextValue","init_uri","listChapters","WikiGraphArchiveFile","getBuildJob","WikiGraphArchiveFile","formatLocatedChapterUri","formatLocatedWikiGraphUri","getBuildJob","resolveChapterPathReadonly","WikiGraphArchiveFile","Readable","Writable","CLI_PRIMARY_COMMAND","CLI_PRIMARY_COMMAND","parseLocatedWikiGraphUri","parseChapterPath","parseLocatedWikiGraphUri","parseLocatedWikiGraphUri","parseChapterPath","parseLocatedWikiGraphUri","WIKI_GRAPH_URI_PREFIX","value","parseLocatedWikiGraphUri","parseLocatedWikiGraphUri","parseWikiGraphLibraryUri","parseLocatedWikiGraphUri","parseLocatedWikiGraphUri","parseWikiGraphLibraryUri","parseLocatedWikiGraphUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","runArchiveCommand","runArchiveChapterCommand","runArchiveIndexCommand","runArchiveCoverCommand","runArchiveMetaCommand","runConvertCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","runLibraryCommand","runObjectMetadataCommand","runQueueCommand","formatError","runConvertCommand","runArchiveMetaCommand","runArchiveCoverCommand","runObjectMetadataCommand","runLibraryCommand","runArchiveChapterCommand","runArchiveCommand","runArchiveIndexCommand","runQueueCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","Readable","Writable"]}
|