wiki-graph 0.8.3 → 0.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/support/command.ts","../src/runtime/context.ts","../src/support/errors.ts","../src/support/formats.ts","../src/support/io.ts","../src/support/json.ts","../src/support/shell.ts","../src/support/tree.ts","../src/support/uri.ts","../src/support/version.ts","../src/support/archive-target.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/wikispine.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/warnings.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/source-locators.ts","../src/commands/archive-output/write/index.ts","../src/commands/archive-output/index.ts","../src/commands/archive-command/run/types.ts","../src/commands/archive-command/run/uri.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/index.ts","../src/commands/archive-title.ts","../src/runtime/entry-context.ts","../src/runtime/internal-child.ts","../src/commands/queue/estimate.ts","../src/commands/queue/output.ts","../src/commands/queue/add.ts","../src/commands/archive-command/chapter.ts","../src/commands/archive-command/search-index.ts","../src/commands/archive-command/maintenance.ts","../src/commands/gc.ts","../src/commands/legacy.ts","../src/runtime/home-target.ts","../src/commands/maintenance.ts","../src/commands/local-config.ts","../src/commands/library.ts","../src/commands/object-metadata.ts","../src/commands/queue/watch.ts","../src/commands/queue/worker.ts","../src/commands/queue/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/node-platform.ts"],"sourcesContent":["export const CLI_PRIMARY_COMMAND = \"wg\";\nexport const CLI_FULL_COMMAND = \"wikigraph\";\n","import { AsyncLocalStorage } from \"async_hooks\";\nimport { withWikiGraphSDKRuntimeContext } from \"wiki-graph-sdk\";\nimport { createWikiGraphSDK, type WikiGraphSDK } from \"wiki-graph-sdk\";\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 sdk?: WikiGraphSDK | undefined;\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(\n context,\n async () =>\n await withWikiGraphSDKRuntimeContext(\n {\n cwd: context.cwd,\n env: context.env,\n envPolicy: context.envPolicy,\n providers: {},\n ...(context.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n },\n operation,\n ),\n );\n}\n\nexport function getCLIArgv(): readonly string[] {\n return cliRuntimeContext.getStore()?.argv ?? process.argv.slice(2);\n}\n\nexport function getWikiGraphSDK(): WikiGraphSDK {\n const context = cliRuntimeContext.getStore();\n return (\n context?.sdk ??\n createWikiGraphSDK({\n ...(context?.cwd === undefined ? {} : { cwd: context.cwd }),\n ...(context?.env === undefined ? {} : { env: context.env }),\n ...(context?.envPolicy === undefined\n ? {}\n : { envPolicy: context.envPolicy }),\n ...(context?.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n })\n );\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 getCLIEnvPolicy(): \"development\" | \"production\" {\n return cliRuntimeContext.getStore()?.envPolicy ?? \"production\";\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 { CLI_PRIMARY_COMMAND } from \"./command.js\";\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 { createReadStream } from \"fs\";\nimport { mkdtemp, rm } from \"fs/promises\";\nimport { join } from \"path\";\nimport { tmpdir } from \"os\";\n\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 mkdtemp(join(tmpdir(), \"wikigraph-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 \"./command.js\";\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 { homedir } from \"os\";\nimport { isAbsolute, relative, resolve } from \"path\";\n\nimport {\n formatWikiGraphCommandUri as formatPortableWikiGraphCommandUri,\n parseLocatedWikiGraphUri as parsePortableLocatedWikiGraphUri,\n type LocatedWikiGraphUri,\n} from \"wiki-graph-sdk\";\n\nimport { getCLICwd, getCLIEnvValue } from \"../runtime/context.js\";\n\nexport interface RelativeArchiveUriResolution {\n readonly inputUri: string;\n readonly resolvedArchivePath: string;\n readonly workingDirectory: string;\n}\n\n/** Apply Node path semantics at the CLI boundary, after Core parses URI syntax. */\nexport function parseLocatedWikiGraphUri(uri: string): LocatedWikiGraphUri {\n const parsed = parsePortableLocatedWikiGraphUri(uri);\n if (\n parsed.archivePath === undefined ||\n parsed.archivePath.startsWith(\"wikg://lib/\")\n ) {\n return parsed;\n }\n return {\n ...parsed,\n archivePath: resolveCLIArchivePath(parsed.archivePath),\n };\n}\n\nexport function formatWikiGraphCommandUri(\n archivePath: string,\n objectUri?: string,\n cwd = getCLICwd(),\n): string {\n let locator = archivePath;\n if (isAbsolute(archivePath)) {\n const candidate = relative(cwd, archivePath);\n if (\n candidate !== \"\" &&\n !candidate.startsWith(\"..\") &&\n !isAbsolute(candidate)\n ) {\n locator = candidate;\n }\n }\n return formatPortableWikiGraphCommandUri(locator, objectUri);\n}\n\nexport function getRelativeArchiveUriResolution(\n uri: string,\n): RelativeArchiveUriResolution | undefined {\n let parsed: LocatedWikiGraphUri;\n try {\n parsed = parsePortableLocatedWikiGraphUri(uri);\n } catch {\n return undefined;\n }\n\n const locator = parsed.archivePath;\n if (\n locator === undefined ||\n locator === \"~\" ||\n locator.startsWith(\"~/\") ||\n locator.startsWith(\"wikg://lib/\") ||\n isAbsolute(locator)\n ) {\n return undefined;\n }\n\n const workingDirectory = getCLICwd();\n return {\n inputUri: uri,\n resolvedArchivePath: resolve(workingDirectory, locator),\n workingDirectory,\n };\n}\n\nfunction resolveCLIArchivePath(locator: string): string {\n if (locator === \"~\") return getCLIHomeDirectory();\n if (locator.startsWith(\"~/\")) {\n return resolve(getCLIHomeDirectory(), locator.slice(2));\n }\n return resolve(getCLICwd(), locator);\n}\n\nfunction getCLIHomeDirectory(): string {\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n return environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome;\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","import {\n parseLocatedWikiGraphUri,\n type WikiGraphArchiveTarget,\n} from \"wiki-graph-sdk\";\n\n/** Convert the CLI's explicit URI syntax into the SDK's discriminated target. */\nexport function parseCLIArchiveTarget(locator: string): WikiGraphArchiveTarget {\n if (locator.startsWith(\"wikg://lib/\")) {\n return { kind: \"library\", uri: locator };\n }\n if (!locator.includes(\"://\")) {\n return { kind: \"standalone\", path: locator };\n }\n const parsed = parseLocatedWikiGraphUri(locator);\n return {\n kind: \"standalone\",\n path: parsed.archivePath ?? locator,\n ...(parsed.objectUri === undefined ? {} : { objectUri: parsed.objectUri }),\n };\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 \"./uri.js\";\nexport * from \"./version.js\";\nexport * from \"./command.js\";\nexport * from \"./archive-target.js\";\n","export * from \"wiki-graph-sdk/local-config\";\n","import {\n loadWikiGraphRuntimeConfig,\n resolveHostedProviderEndpoint as resolveSDKHostedProviderEndpoint,\n resolveWikispineConfig as resolveSDKWikispineConfig,\n type HostedProviderScope,\n type WikiGraphProvider,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { getCLIEnvPolicy } from \"./context.js\";\n\nexport type CLIConfig = WikiGraphRuntimeConfig;\nexport type CLIProvider = WikiGraphProvider;\nexport type { HostedProviderScope };\n\nexport async function loadCLIConfig(options?: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n try {\n return await loadWikiGraphRuntimeConfig(options);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveWikispineConfig(\n value: Record<string, unknown>,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): CLIConfig[\"wikispine\"] | undefined {\n try {\n return resolveSDKWikispineConfig(value, envPolicy);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveHostedProviderEndpoint(\n scope: HostedProviderScope,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): string {\n return resolveSDKHostedProviderEndpoint(scope, envPolicy);\n}\n\nfunction withConfigHelp(error: unknown): Error {\n const message = error instanceof Error ? error.message : String(error);\n return new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n}\n","import {\n buildWikiGraphLLMOptions,\n type WikiGraphLLMOptions,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIConfig } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport function buildLLMOptions(config: CLIConfig): WikiGraphLLMOptions {\n try {\n return buildWikiGraphLLMOptions(config);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/planning\";\n\nimport type { GenerationPerformanceHint } from \"wiki-graph-sdk/planning\";\n\nexport type CLIGenerationPerformanceHint = Omit<\n GenerationPerformanceHint,\n \"configKey\" | \"configValue\"\n> & { readonly command: string };\n\nexport function toCLIGenerationPerformanceHints(\n hints: readonly GenerationPerformanceHint[],\n): readonly CLIGenerationPerformanceHint[] {\n return hints.map(({ configKey, configValue, ...hint }) => ({\n ...hint,\n command: `wg wikg://local/config/concurrent put ${configKey} ${configValue}`,\n }));\n}\n","import { clearLine, cursorTo, moveCursor } from \"readline\";\n\nimport type {\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"wiki-graph-sdk\";\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","export {\n createStageLLM,\n DEFAULT_EXTRACTION_PROMPT,\n DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"wiki-graph-sdk\";\n\nimport {\n loadRequiredStageConfig as loadSDKRequiredStageConfig,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport async function loadRequiredStageConfig(options: {\n readonly llmJSON?: string;\n}): Promise<WikiGraphRuntimeConfig> {\n try {\n return await loadSDKRequiredStageConfig(options);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/wikispine\";\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\";\nexport * from \"./wikispine.js\";\n","import type { CLIArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport {\n type CLIFormat,\n inferCLIFormatFromPath,\n isTextCLIFormat,\n} from \"../support/index.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 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 if (args.targetStage !== undefined && input.format === \"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 progressRenderer = createCLIProgressRenderer({\n enabled:\n input.format !== \"wikg\" &&\n output.standardStream !== \"stdout\" &&\n process.stderr.isTTY === true &&\n !args.verbose,\n });\n\n const temporaryOutput =\n output.path === undefined\n ? await createTemporaryOutputPath(\n \"wikigraph-cli-output-\",\n extensionForFormat(output.format),\n )\n : undefined;\n const outputPath = output.path ?? temporaryOutput?.filePath;\n if (outputPath === undefined)\n throw new Error(\"Internal error: missing output target.\");\n try {\n if (input.path === undefined && 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 try {\n await getWikiGraphSDK().conversions.convert({\n ...(args.digestDirPath === undefined\n ? {}\n : { digestDirectory: args.digestDirPath }),\n input:\n input.path === undefined\n ? {\n format: input.format,\n stream: readTextStreamFromStdin(),\n }\n : { format: input.format, path: input.path },\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n output: { format: output.format, path: outputPath },\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n ...(args.targetStage === undefined\n ? {}\n : { targetStage: args.targetStage }),\n ...(args.verbose ? { verbose: true } : {}),\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (isConfigurationErrorMessage(message)) {\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n throw error;\n }\n if (temporaryOutput !== undefined) {\n await writeTextFileToStdout(temporaryOutput.filePath);\n }\n } finally {\n await progressRenderer.stop();\n if (temporaryOutput !== undefined) {\n await removeTemporaryDirectory(temporaryOutput.directoryPath);\n }\n }\n}\n\nfunction isConfigurationErrorMessage(message: string): boolean {\n return /(?:configuration|--llm|llm\\.|embeddings\\.|API key|provider|model)/iu.test(\n message,\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 { WikiGraphArchiveExistsError } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { createCLIProgressRenderer } from \"../../runtime/index.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\nexport async function createArchive(args: CLIArchiveArguments): Promise<void> {\n const progressRenderer = createCLIProgressRenderer({\n enabled: args.importPath !== undefined && process.stderr.isTTY === true,\n });\n try {\n const result = await getWikiGraphSDK().archives.create({\n ...(args.importPath === undefined ? {} : { importPath: args.importPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: args.archivePath,\n replace: args.replace ?? false,\n });\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ uri: result.locatedUri })\n : \"<archive>\\n\",\n );\n } catch (error) {\n if (!(error instanceof WikiGraphArchiveExistsError)) throw error;\n throw new Error(formatArchiveAlreadyExistsMessage(error.path), {\n cause: error,\n });\n } finally {\n await progressRenderer.stop();\n }\n}\n\nfunction formatArchiveAlreadyExistsMessage(archivePath: string): string {\n const uri = formatWikiGraphCommandUri(archivePath);\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","import type {\n BuildJobTarget,\n GenerationPerformanceHint,\n GenerationPlanningCost,\n WikiGraphArchiveChapterInspection,\n WikiGraphArchiveInspection,\n} from \"wiki-graph-sdk\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningModel,\n loadWikiGraphRuntimeConfig,\n planGenerationTask,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport {\n formatGenerationPlanningDuration,\n toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\n\ninterface InspectImprovement {\n readonly kind: \"add-source\" | \"build\" | \"sync-index\";\n readonly missingChapters?: number;\n readonly missingWords?: number;\n readonly planning?: GenerationPlanningCost;\n readonly recommendation: string;\n readonly task?: BuildJobTarget;\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 InspectChapterReference {\n readonly chapterId: number;\n readonly locatedUri: string;\n readonly title: string | null;\n readonly uri: string;\n}\n\ninterface InspectReport {\n readonly archiveUri: string;\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 coverage: {\n readonly ftsIndexArtifact: InspectCoverage;\n readonly knowledgeGraph: InspectCoverage;\n readonly readingGraph: InspectCoverage;\n readonly sourceEmbeddingIndexArtifact: InspectCoverage;\n readonly summary: InspectCoverage;\n readonly summaryEmbeddingIndexArtifact: InspectCoverage;\n };\n readonly improvements: readonly InspectImprovement[];\n readonly localIndexCache: {\n readonly blockedBy?: \"missing-search-artifacts\";\n readonly current: boolean;\n readonly impact?: string;\n readonly resource?: string;\n readonly status: \"blocked\" | \"current\" | \"missing-or-outdated\";\n readonly syncAvailable: boolean;\n };\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly query: { readonly ready: boolean };\n readonly retrievalGuidance: readonly string[];\n readonly scope: WikiGraphArchiveInspection[\"scope\"];\n readonly searchArtifacts: {\n readonly blockedChapters: readonly InspectChapterReference[];\n readonly ready: boolean;\n readonly resource?: string;\n readonly status: \"incomplete\" | \"ready\";\n };\n readonly summaryCoverageNote: string;\n readonly uri: string;\n}\n\ninterface CLIInspectImprovement extends InspectImprovement {\n readonly command: string;\n}\n\ninterface CLIInspectReport extends Omit<\n InspectReport,\n \"archiveUri\" | \"improvements\" | \"performanceHints\" | \"summaryCoverageNote\"\n> {\n readonly localIndexCache: InspectReport[\"localIndexCache\"] & {\n readonly fixCommand?: string;\n };\n readonly searchArtifacts: InspectReport[\"searchArtifacts\"] & {\n readonly fixCommand?: string;\n readonly helpCommand: string;\n };\n readonly improvements: readonly CLIInspectImprovement[];\n readonly performanceHints: readonly CLIGenerationPerformanceHint[];\n readonly help: {\n readonly readiness: string;\n readonly summaryCoverage: string;\n };\n}\n\nexport async function writeArchiveInspectReport(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const report = toCLIInspectReport(\n await createInspectReport(\n await archive.inspect({\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n }),\n ),\n );\n\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(report)\n : formatArchiveInspectText(report),\n );\n}\n\nasync function createInspectReport(\n inspection: WikiGraphArchiveInspection,\n): Promise<InspectReport> {\n const config = await loadWikiGraphRuntimeConfig();\n const chapters = inspection.chapters;\n const contentChapters = chapters.filter(\n ({ chapter }) => chapter.stage !== \"planned\",\n );\n const readingGraphCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.readingGraph.completed,\n );\n const knowledgeGraphCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.knowledgeGraph.completed,\n );\n const summaryCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.readingSummary.completed,\n );\n const ftsArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.fts.current,\n );\n const sourceEmbeddingArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.sourceEmbedding.current,\n );\n const summaryEmbeddingArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.summaryEmbedding.current,\n );\n const queryBlockedChapters = contentChapters.filter(\n (chapter) =>\n !ftsArtifactCovered.includes(chapter) &&\n !sourceEmbeddingArtifactCovered.includes(chapter),\n );\n const queryReady = queryBlockedChapters.length === 0;\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 improvements = createInspectImprovements({\n concurrent,\n contentChapters,\n indexCacheCurrent: inspection.localIndexCache.current,\n knowledgeGraphCovered,\n planningModel: formatGenerationPlanningModel(config.llm),\n queryBlockedChapters,\n readingGraphCovered,\n summaryCovered,\n });\n const performanceHints = createGenerationPerformanceHints({\n chapters: Math.max(\n 0,\n ...improvements.map((improvement) => improvement.missingChapters ?? 0),\n ),\n concurrent,\n hasJobWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n hasRequestWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n });\n const sourceWords = sumWords(contentChapters);\n const indexCacheCurrent = inspection.localIndexCache.current;\n\n return {\n archiveUri: inspection.archiveUri,\n content: {\n chapters: {\n content: contentChapters.length,\n planned: chapters.length - contentChapters.length,\n total: chapters.length,\n },\n sourceWords,\n summaryWords: chapters.reduce(\n (total, chapter) => total + chapter.summaryWords,\n 0,\n ),\n },\n coverage: {\n ftsIndexArtifact: createInspectCoverage(\n ftsArtifactCovered,\n contentChapters,\n ),\n knowledgeGraph: createInspectCoverage(\n knowledgeGraphCovered,\n contentChapters,\n ),\n readingGraph: createInspectCoverage(readingGraphCovered, contentChapters),\n sourceEmbeddingIndexArtifact: createInspectCoverage(\n sourceEmbeddingArtifactCovered,\n contentChapters,\n ),\n summary: createInspectCoverage(summaryCovered, contentChapters),\n summaryEmbeddingIndexArtifact: createInspectCoverage(\n summaryEmbeddingArtifactCovered,\n contentChapters,\n ),\n },\n improvements,\n localIndexCache: {\n current: indexCacheCurrent,\n ...(!queryReady\n ? {\n blockedBy: \"missing-search-artifacts\" as const,\n impact:\n \"The cache cannot be built until every content chapter has a current FTS or source embedding artifact.\",\n }\n : indexCacheCurrent\n ? {}\n : {\n impact:\n \"The next archive query may need to sync index cache first.\",\n resource: \"local CPU/disk time only; no provider calls.\",\n }),\n status: !queryReady\n ? \"blocked\"\n : indexCacheCurrent\n ? \"current\"\n : \"missing-or-outdated\",\n syncAvailable: queryReady && !indexCacheCurrent,\n },\n performanceHints,\n query: { ready: queryReady },\n retrievalGuidance: formatRetrievalGuidance({\n contentChapters,\n indexCacheCurrent,\n knowledgeGraphCovered,\n queryReady,\n readingGraphCovered,\n sourceWords,\n }),\n scope: inspection.scope,\n searchArtifacts: {\n blockedChapters: queryBlockedChapters.map((item) =>\n createInspectChapterReference(inspection.archiveUri, item),\n ),\n ...(!queryReady\n ? { resource: \"local CPU/disk time only; no provider calls.\" }\n : {}),\n ready: queryReady,\n status: queryReady ? \"ready\" : \"incomplete\",\n },\n summaryCoverageNote:\n \"Summary coverage means a current summary artifact exists for the chapter; it does not guarantee that every source topic is represented in the summary text.\",\n uri: inspection.uri,\n };\n}\n\nfunction createInspectChapterReference(\n archiveUri: string,\n inspection: WikiGraphArchiveChapterInspection,\n): InspectChapterReference {\n return {\n chapterId: inspection.chapter.chapterId,\n locatedUri: `${archiveUri.replace(/\\/+$/u, \"\")}/${inspection.chapter.uri.replace(/^wikg:\\/\\//u, \"\")}`,\n title: inspection.chapter.title,\n uri: inspection.chapter.uri,\n };\n}\n\nfunction createInspectCoverage(\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\n): InspectCoverage {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n return {\n coveredChapters: covered.length,\n coveredWords,\n percent: formatPercent(coveredWords, totalWords),\n totalChapters: total.length,\n totalWords,\n };\n}\n\nfunction createInspectImprovements(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly contentChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly planningModel: string;\n readonly queryBlockedChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly readingGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly summaryCovered: readonly WikiGraphArchiveChapterInspection[];\n}): readonly InspectImprovement[] {\n if (input.contentChapters.length === 0) {\n return [\n {\n kind: \"add-source\",\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 ];\n }\n\n const improvements: InspectImprovement[] = [];\n if (input.queryBlockedChapters.length > 0) {\n improvements.push({\n kind: \"build\",\n missingChapters: input.queryBlockedChapters.length,\n missingWords: sumWords(input.queryBlockedChapters),\n recommendation:\n \"Build local FTS artifacts to make this scope queryable. This does not call a provider.\",\n task: \"index-fts\",\n title: \"Enable query with local FTS\",\n });\n } else if (!input.indexCacheCurrent) {\n improvements.push({\n kind: \"sync-index\",\n recommendation:\n \"Sync the index cache from chapter index artifacts so query starts without a lazy cache rebuild.\",\n title: \"Sync index cache\",\n });\n }\n\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.readingGraphCovered,\n planningModel: input.planningModel,\n task: \"reading-graph\",\n title: \"Complete Reading Graph coverage\",\n total: input.contentChapters,\n }),\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.knowledgeGraphCovered,\n planningModel: input.planningModel,\n task: \"knowledge-graph\",\n title: \"Complete Knowledge Graph coverage\",\n total: input.contentChapters,\n }),\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.summaryCovered,\n planningModel: input.planningModel,\n task: \"reading-summary\",\n title: \"Complete Summary coverage\",\n total: input.contentChapters,\n }),\n );\n return improvements;\n}\n\nfunction createGraphImprovement(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly covered: readonly WikiGraphArchiveChapterInspection[];\n readonly planningModel: string;\n readonly task: \"knowledge-graph\" | \"reading-graph\" | \"reading-summary\";\n readonly title: string;\n readonly total: readonly WikiGraphArchiveChapterInspection[];\n}): readonly InspectImprovement[] {\n const coveredIds = new Set(\n input.covered.map(({ chapter }) => chapter.chapterId),\n );\n const missing = input.total.filter(\n ({ chapter }) => !coveredIds.has(chapter.chapterId),\n );\n if (missing.length === 0) return [];\n const missingWords = sumWords(missing);\n return [\n {\n kind: \"build\",\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 task: input.task,\n title: input.title,\n },\n ];\n}\n\nfunction formatImprovementRecommendation(\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\n missingWords: number,\n): string {\n const totalWords = sumWords(total);\n const coveredWords = sumWords(covered);\n if (totalWords === 0) return \"No source content is available.\";\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 return \"Queue selected chapters first if only part of the scope matters.\";\n}\n\nfunction formatRetrievalGuidance(input: {\n readonly contentChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly queryReady: boolean;\n readonly readingGraphCovered: readonly WikiGraphArchiveChapterInspection[];\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 return [\n input.queryReady\n ? `Query: available; local index cache is ${input.indexCacheCurrent ? \"current\" : \"missing or outdated and can be synced from artifacts\"}.`\n : \"Query: unavailable until every content chapter has a current FTS or source embedding artifact.\",\n formatObjectSearchGuidance(\n \"Reading Graph object retrieval\",\n input.readingGraphCovered,\n input.contentChapters,\n ),\n formatObjectSearchGuidance(\n \"Entity/triple retrieval\",\n input.knowledgeGraphCovered,\n input.contentChapters,\n ),\n ];\n}\n\nfunction formatObjectSearchGuidance(\n label: string,\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\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 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 return `${label}: covers ${coverage}; build missing graph coverage before relying on object retrieval.`;\n}\n\nfunction sumWords(\n chapters: readonly WikiGraphArchiveChapterInspection[],\n): number {\n return chapters.reduce((total, { chapter }) => total + chapter.words, 0);\n}\n\nfunction formatPercent(numerator: number, denominator: number): string {\n if (denominator === 0) return \"n/a\";\n const percent = (numerator / denominator) * 100;\n return `${Number.isInteger(percent) ? percent.toFixed(0) : percent.toFixed(1)}%`;\n}\n\nfunction toCLIInspectReport(report: InspectReport): CLIInspectReport {\n const { archiveUri, summaryCoverageNote, ...base } = report;\n return {\n ...base,\n localIndexCache: {\n ...report.localIndexCache,\n ...(report.localIndexCache.syncAvailable\n ? { fixCommand: formatCliCommand([`${archiveUri}/index`, \"sync\"]) }\n : {}),\n },\n searchArtifacts: {\n ...report.searchArtifacts,\n ...(report.searchArtifacts.ready\n ? {}\n : {\n fixCommand: formatBuildCommand(report.uri, \"index-fts\", false),\n }),\n helpCommand: \"wg help readiness\",\n },\n improvements: report.improvements.map((improvement) => ({\n ...improvement,\n command: formatImprovementCommand(improvement, archiveUri, report.uri),\n })),\n performanceHints: toCLIGenerationPerformanceHints(report.performanceHints),\n help: {\n readiness: \"wg help readiness\",\n summaryCoverage: summaryCoverageNote,\n },\n };\n}\n\nfunction formatImprovementCommand(\n improvement: InspectImprovement,\n archiveUri: string,\n scopeUri: string,\n): string {\n switch (improvement.kind) {\n case \"add-source\":\n return formatCliCommand([\n `${archiveUri}/chapter`,\n \"add\",\n \"--input\",\n \"source.txt\",\n ]);\n case \"sync-index\":\n return formatCliCommand([`${archiveUri}/index`, \"sync\"]);\n case \"build\":\n return formatBuildCommand(\n scopeUri,\n improvement.task!,\n improvement.planning !== undefined,\n );\n }\n}\n\nfunction formatBuildCommand(\n scopeUri: string,\n task: NonNullable<InspectImprovement[\"task\"]>,\n acceptCost: boolean,\n): string {\n return formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n scopeUri,\n \"--task\",\n task,\n ...(acceptCost ? [\"--accept-cost\"] : []),\n ]);\n}\n\nfunction formatArchiveInspectText(report: CLIInspectReport): string {\n return (\n [\n \"Archive Inspect\",\n `URI: ${report.uri}`,\n `Scope: ${report.scope.type === \"archive\" ? \"archive\" : report.uri}`,\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 \"Query Readiness\",\n `Status: ${report.query.ready ? \"available\" : \"unavailable\"}`,\n `Search artifacts: ${report.searchArtifacts.status}`,\n ...(report.searchArtifacts.ready\n ? []\n : [\n `Fix: ${report.searchArtifacts.fixCommand}`,\n `Resource: ${report.searchArtifacts.resource}`,\n `Help: ${report.searchArtifacts.helpCommand}`,\n ]),\n \"\",\n \"Index Cache\",\n `Status: ${report.localIndexCache.status === \"missing-or-outdated\" ? \"missing or outdated\" : report.localIndexCache.status}`,\n ...(report.localIndexCache.current\n ? []\n : [\n `Impact: ${report.localIndexCache.impact}`,\n ...(report.localIndexCache.fixCommand === undefined\n ? []\n : [`Fix: ${report.localIndexCache.fixCommand}`]),\n ...(report.localIndexCache.resource === undefined\n ? []\n : [`Resource: ${report.localIndexCache.resource}`]),\n ]),\n \"\",\n \"Coverage\",\n formatCoverageLine(\n \"FTS Index Artifact\",\n report.coverage.ftsIndexArtifact,\n ),\n formatCoverageLine(\n \"Source Embedding Index Artifact\",\n report.coverage.sourceEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\n \"Summary Embedding Index Artifact\",\n report.coverage.summaryEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\"Reading Graph\", report.coverage.readingGraph),\n formatCoverageLine(\"Knowledge Graph\", report.coverage.knowledgeGraph),\n formatCoverageLine(\"Summary Artifact\", report.coverage.summary),\n `Summary note: ${report.help.summaryCoverage}`,\n ...(report.searchArtifacts.blockedChapters.length === 0\n ? []\n : [\n \"Query blockers: these chapters have neither FTS nor source embedding index artifacts:\",\n ...report.searchArtifacts.blockedChapters.map(\n (chapter) =>\n `- ${chapter.title === null ? \"[untitled]\" : chapter.title}: ${chapter.locatedUri}`,\n ),\n ]),\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\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 return `${label}: ${coverage.coveredChapters}/${coverage.totalChapters} chapters, ${coverage.coveredWords}/${coverage.totalWords} words, ${coverage.percent}`;\n}\n\nfunction formatInspectImprovement(\n improvement: CLIInspectImprovement,\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 CLIGenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) return [];\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","import { getWikiGraphSDK } from \"../../../runtime/context.js\";\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 (context.continuationCursorIsDurable === true) return cursor ?? null;\n return await getWikiGraphSDK().continuations.create(context, cursor);\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?/gu, \"\\n\").split(\"\\n\");\n\n while (lines.length > 0 && lines[0]?.trim() === \"\") lines.shift();\n while (lines.length > 0 && lines.at(-1)?.trim() === \"\") lines.pop();\n\n const normalizedLines: string[] = [];\n for (const line of lines) {\n if (line.trim() === \"\" && normalizedLines.at(-1) === \"\") continue;\n normalizedLines.push(line.trim() === \"\" ? \"\" : line);\n }\n\n return normalizedLines.join(\"\\n\");\n}\n","import { type ArchiveEvidenceItem } from \"wiki-graph-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\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-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\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://meta\";\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-sdk\";\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 \"digest\",\n \"mediaType\",\n \"name\",\n \"identifier\",\n \"locator\",\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 digest?: string;\n readonly evidence?: ArchiveOutputEvidencePreview;\n readonly label?: string;\n readonly identifier?: string;\n readonly libraryArchiveUri?: string;\n readonly locator?: Readonly<Record<string, unknown>>;\n readonly mediaType?: string;\n readonly name?: 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 libraryQuery?: \"archive-members\" | \"objects\";\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n}\n\nexport interface ArchiveOutputWarning {\n readonly message: string;\n readonly type: \"skip-unindexed\";\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?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly continuationCursorIsDurable?: boolean;\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 queryMode?: \"embedding\" | \"fts\" | \"hybrid\";\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly skipUnindexed?: boolean;\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 \"../../../support/index.js\";\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-sdk\";\n\nimport { createOutputContinuationCursor } from \"./cursor.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputEvidencePreview,\n ArchiveOutputObject,\n ArchiveOutputResultPage,\n ArchiveOutputSource,\n ArchiveOutputWarning,\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 warnings: readonly ArchiveOutputWarning[] = [],\n): {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n} {\n return {\n limit,\n nextCursor,\n objects,\n ...(warnings.length === 0 ? {} : { warnings }),\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 === \"archive-title\") {\n return {\n ...librarySource,\n title: hit.title,\n type: \"archive-title\",\n uri,\n };\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 text: hit.snippet,\n title: hit.title,\n type: \"meta\",\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 \"artifact\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: page.id };\n }\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 \"archive-title\":\n return {\n ...librarySource,\n title: page.title,\n type: \"archive-title\",\n uri: toWikiGraphUri(page.id),\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 type { ArchiveFindEvidencePreview, ArchivePage } from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n} 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.label} ${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 \"artifact\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"archive-title\":\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 { ArchiveOutputContext } from \"../object/types.js\";\n\nexport function createOutputWarnings(\n context: ArchiveOutputContext,\n): readonly { readonly message: string; readonly type: \"skip-unindexed\" }[] {\n if (context.skipUnindexed !== true) {\n return [];\n }\n\n return [\n {\n message:\n \"--skip-unindexed was used; this command searched only chapters that already have a current FTS or source embedding index artifact. Run `inspect` to check index coverage before treating missing results as missing knowledge.\",\n type: \"skip-unindexed\",\n },\n ];\n}\n\nexport function formatOutputWarnings(\n warnings: readonly { readonly message: string }[],\n): string {\n if (warnings.length === 0) {\n return \"\";\n }\n\n return `${warnings.map((warning) => `Warning: ${warning.message}`).join(\"\\n\")}\\n\\n`;\n}\n\nexport function createWarningJSONLObject(warning: {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}): {\n readonly message: string;\n readonly type: \"warning\";\n readonly warning: \"skip-unindexed\";\n} {\n return {\n message: warning.message,\n type: \"warning\",\n warning: warning.type,\n };\n}\n","import type { ArchiveEvidence } from \"wiki-graph-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 context: ArchiveOutputContext,\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, context, format, {\n emitWarnings: cursor === initialCursor,\n });\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(\n mergeEvidencePages(pages),\n context,\n format,\n );\n}\n\nexport async function writeEvidenceWithoutContinuation(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = evidence.items.map(createSourceObject);\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 emitWarnings: cursor === undefined,\n });\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 options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 emitWarnings: cursor === initialCursor,\n });\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 options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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-sdk\";\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 \"artifact\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"archive-title\":\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","import type {\n ArchiveSourceLocator,\n ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport { formatNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\n\nexport async function writeSourceLocators(\n result: ArchiveSourceLocatorResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({\n limit: result.limit,\n nextCursor,\n objects: result.items,\n }),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...result.items, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (result.items.length === 0) {\n await writeTextToStdout(\"No source locators.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${result.items.map(formatSourceLocator).join(\"\\n\")}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllSourceLocators(\n readPage: (cursor: string | undefined) => Promise<ArchiveSourceLocatorResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveSourceLocatorResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n if (format === \"jsonl\") {\n await writeJSONL(page.items);\n } else {\n pages.push(page);\n }\n if (page.nextCursor === null) break;\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") return;\n\n const items = pages.flatMap((page) => page.items);\n await writeSourceLocators(\n { items, limit: items.length, nextCursor: null },\n context,\n format,\n );\n}\n\nfunction formatSourceLocator(locator: ArchiveSourceLocator): string {\n return `${locator.range[0]}..${locator.range[1]} -> ${locator.uri}`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./find.js\";\nexport * from \"./list.js\";\nexport * from \"./pack.js\";\nexport * from \"./page.js\";\nexport * from \"./source-locators.js\";\n","export * from \"./write/index.js\";\nexport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"./object/types.js\";\n","import type { ArchiveCollectionResult, QueryIndexScope } from \"wiki-graph-sdk\";\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?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\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 { parseWikiGraphLibraryUri, type QueryIndexScope } from \"wiki-graph-sdk\";\nimport { parseLocatedWikiGraphUri } from \"../../../support/index.js\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nexport function resolveArchiveCommandRuntimeArguments(\n args: CLIArchiveArguments,\n): CLIArchiveArguments {\n if (args.action === \"create\" || args.action === \"export\") {\n return { ...args, archivePath: getArchivePath(args.archivePath) };\n }\n return args;\n}\n\nexport function getArchivePath(uri: string): string {\n if (!uri.includes(\"://\")) return uri;\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" ||\n libraryTarget?.kind === \"archive-collection\"\n ) {\n return uri;\n }\n\n const archivePath = parseLocatedWikiGraphUri(uri).archivePath;\n if (archivePath === undefined) {\n throw new Error(`Missing archive locator in URI: ${uri}`);\n }\n return archivePath;\n}\n\nexport function getArchiveIndexScope(uri: string): QueryIndexScope {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" ||\n libraryTarget?.kind === \"archive-collection\"\n ) {\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 = parseLocatedWikiGraphUri(uri);\n\n return parsed.objectUri ?? \"wikg://\";\n}\n\nexport function isArchiveRootGet(args: CLIArchiveArguments): boolean {\n return (\n args.objectId !== undefined &&\n parseLocatedWikiGraphUri(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 parseLocatedWikiGraphUri,\n type ArchiveCollectionOptions,\n type ArchiveCollectionResult,\n type ArchiveFindOptions,\n type ArchiveFindResult,\n} from \"wiki-graph-sdk\";\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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\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 | \"source-locators\";\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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\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 type { ContinuationCursor } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { parseCLIArchiveTarget } from \"../../../support/archive-target.js\";\nimport { getWikiGraphSDK } from \"../../../runtime/context.js\";\nimport {\n writeEvidence,\n writeFindHits,\n writeList,\n writeSourceLocators,\n} from \"../../archive-output/index.js\";\nimport { createCollectionFindResult } from \"./options.js\";\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function runNextArchivePage(\n args: CLIArchiveArguments,\n): Promise<void> {\n const cursorId = args.cursor ?? args.archivePath;\n const page = await getWikiGraphSDK().continuations.next({\n ...(args.cursor === undefined\n ? {}\n : { archive: parseCLIArchiveTarget(args.archivePath) }),\n cursor: cursorId,\n ...(args.format === undefined ? {} : { format: args.format }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n });\n const format = args.format ?? page.format;\n const context = {\n ...createCursorOutputContext(page.cursor, format, page.limit),\n continuationCursorIsDurable: true,\n };\n\n switch (page.kind) {\n case \"source-locators\":\n await writeSourceLocators(page.result, context, format);\n return;\n case \"collection\":\n await writeFindHits(\n createCollectionFindResult(page.result),\n context,\n format,\n );\n return;\n case \"search\":\n await writeFindHits(page.result, context, format);\n return;\n case \"evidence\":\n await writeEvidence(page.result, context, format);\n return;\n case \"related\":\n await writeList(page.result, context, format);\n return;\n }\n}\n\nfunction createCursorOutputContext(\n cursor: ContinuationCursor,\n format: \"json\" | \"jsonl\" | \"text\",\n limit: number,\n): ArchiveOutputContext {\n return {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: cursor.kind,\n format,\n indexScope: cursor.indexScope,\n limit,\n ...((cursor.kind === \"collection\" || cursor.kind === \"search\") &&\n cursor.libraryQuery !== undefined\n ? { libraryQuery: cursor.libraryQuery }\n : {}),\n types:\n cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.types\n : null,\n ...(cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }\n : {}),\n ...(cursor.kind === \"collection\"\n ? {\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n order: cursor.order,\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"search\"\n ? {\n ...(cursor.chapters == null ? {} : { chapters: cursor.chapters }),\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"evidence\" || cursor.kind === \"related\"\n ? {\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n targetUri: cursor.targetUri,\n }\n : {}),\n ...(cursor.kind === \"related\" && cursor.role !== undefined\n ? { role: cursor.role }\n : {}),\n ...((cursor.kind === \"search\" ||\n cursor.kind === \"evidence\" ||\n cursor.kind === \"related\") &&\n cursor.queryMode !== undefined\n ? { queryMode: cursor.queryMode }\n : {}),\n ...(cursor.kind === \"source-locators\"\n ? { targetUri: cursor.targetUri }\n : {}),\n ...(\"evidenceLimit\" in cursor && cursor.evidenceLimit !== undefined\n ? { evidenceLimit: cursor.evidenceLimit }\n : {}),\n ...(\"sourceContext\" in cursor && cursor.sourceContext !== undefined\n ? { sourceContext: cursor.sourceContext }\n : {}),\n };\n}\n","import { formatLocatedWikiGraphUri } from \"wiki-graph-sdk\";\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 \"./next.js\";\nexport * from \"./options.js\";\nexport * from \"./root.js\";\nexport * from \"./types.js\";\nexport * from \"./uri.js\";\n","import {\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n isSourceLocatorScopeUri,\n type ArchiveFindOptions,\n type ArchiveRelatedResult,\n type ArchiveCollectionResult,\n type ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { formatCliCommand } from \"../../support/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 writeAllSourceLocators,\n writeSourceLocators,\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 getObjectUri,\n getSingleObjectEvidenceLimit,\n isArchiveRootGet,\n resolveArchiveCommandRuntimeArguments,\n runNextArchivePage,\n writeArchiveRoot,\n} from \"./run/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.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 === \"related\" ||\n args.action === \"evidence\" ||\n args.action === \"pack\" ||\n args.action === \"search\" ||\n args.action === \"list\")) ||\n (libraryTarget?.kind === \"archive-collection\" && args.action === \"search\")\n ) {\n await runLibraryIndexArchiveCommand(args, libraryTarget);\n return;\n }\n\n args = 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 writeArchiveInspectReport(args);\n return;\n case \"search\":\n await runArchiveSearch(args);\n return;\n case \"list\":\n await runArchiveList(args);\n return;\n case \"get\":\n if (isArchiveRootGet(args)) {\n await writeArchiveRoot(args);\n return;\n }\n await runArchiveGet(args);\n return;\n case \"related\":\n await runArchiveRelated(args);\n return;\n case \"evidence\":\n await runArchiveEvidence(args);\n return;\n case \"next\":\n await runNextArchivePage(args);\n return;\n case \"pack\":\n await writePack(\n await (\n await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n )\n ).pack(getObjectUri(args.objectId!), args.budget ?? 5000),\n createArchiveOutputContext(args),\n args.format ?? \"text\",\n );\n return;\n }\n}\n\nasync function runArchiveList(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const objectUri = getObjectUri(args.archivePath);\n if (isSourceLocatorScopeUri(objectUri)) {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"source-locators\",\n targetUri: objectUri,\n });\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveSourceLocatorResult> =>\n (await archive.list({\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n })) as ArchiveSourceLocatorResult;\n if (args.all === true) {\n await writeAllSourceLocators(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeSourceLocators(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n if (args.query !== undefined) {\n await archive.ensureSearchIndex({\n ...(scopedArgs.chapters === undefined\n ? {}\n : { chapters: scopedArgs.chapters }),\n });\n }\n const context = createArchiveOutputContext(scopedArgs, {\n continuationKind: \"collection\",\n });\n const readPage = async (\n cursor: string | undefined,\n limit = args.limit,\n ): Promise<ArchiveCollectionResult> =>\n (await archive.list({\n ...createCollectionOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n ...(limit === undefined ? {} : { limit }),\n })) as ArchiveCollectionResult;\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) => createCollectionFindResult(await readPage(cursor)),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await readPage(undefined, ALL_COLLECTION_OUTPUT_LIMIT),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(await readPage(args.cursor)),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveSearch(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs);\n const findOptions = createSearchFindOptions(scopedArgs);\n const { archiveKey: _archiveKey, chapters, ...options } = findOptions;\n const readPage = async (cursor: string | undefined) =>\n await archive.search(scopedArgs.query!, {\n ...options,\n ...(chapters === undefined ? {} : { chapters }),\n ...(cursor === undefined ? {} : { cursor }),\n });\n try {\n if (args.all === true) {\n await writeAllFindHits(readPage, context, args.format ?? \"text\");\n return;\n }\n await writeFindHits(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n } catch (error) {\n if (isArchiveQueryNotReadyError(error)) {\n throw createArchiveQueryNotReadyError(args, error.message);\n }\n throw error;\n }\n}\n\nasync function runArchiveGet(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n const context =\n evidenceLimit === undefined\n ? createArchiveOutputContext(args)\n : createArchiveOutputContext({ ...args, evidenceLimit });\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writePage(\n await archive.page(objectUri, {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveRelated(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"related\",\n targetUri: objectUri,\n },\n );\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await archive.related(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.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\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 await writeList(await readPage(args.cursor), context, args.format ?? \"text\");\n}\n\nasync function runArchiveEvidence(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"evidence\",\n targetUri: objectUri,\n },\n );\n const readPage = async (cursor: string | undefined) =>\n await archive.evidence(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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n });\n if (args.all === true) {\n await writeAllEvidence(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeEvidence(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n}\n\nfunction createArchiveQueryNotReadyError(\n args: Pick<CLIArchiveArguments, \"archivePath\">,\n reason: string,\n): Error {\n const buildCommand = formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n args.archivePath,\n \"--task\",\n \"index-fts\",\n ]);\n\n return new Error(\n [\n reason,\n \"\",\n \"Build local FTS artifacts without provider calls:\",\n ` ${buildCommand}`,\n \"\",\n \"Help:\",\n \" wg help readiness\",\n ].join(\"\\n\"),\n );\n}\n\nfunction isArchiveQueryNotReadyError(error: unknown): error is Error {\n return error instanceof Error && error.name === \"ArchiveQueryNotReadyError\";\n}\n\nasync function runLibraryIndexArchiveCommand(\n args: CLIArchiveArguments,\n target: NonNullable<ReturnType<typeof parseWikiGraphLibraryUri>>,\n): Promise<void> {\n const libraries = getWikiGraphSDK().libraries;\n const library = await libraries.get(\n formatWikiGraphLibraryUri(target.publicId),\n );\n const isArchiveMemberCollection = target.kind === \"archive-collection\";\n const isLibraryRootCollection =\n !isArchiveMemberCollection &&\n target.objectUri === undefined &&\n args.objectId === undefined;\n const objectUri = isLibraryRootCollection\n ? undefined\n : isArchiveMemberCollection\n ? undefined\n : getObjectUri(args.objectId ?? args.archivePath);\n const context = {\n ...createArchiveOutputContext(args),\n archiveKey: args.archivePath,\n archivePath: args.archivePath,\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n libraryQuery: isArchiveMemberCollection\n ? (\"archive-members\" as const)\n : (\"objects\" as const),\n };\n\n switch (args.action) {\n case \"search\": {\n const findOptions = createSearchFindOptions(args);\n if (objectUri === undefined) {\n const search = async (cursor: string | undefined) =>\n await (isArchiveMemberCollection\n ? libraries.searchArchiveMembers(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n })\n : libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }));\n if (args.all === true) {\n await writeAllFindHits(search, context, args.format ?? \"text\");\n return;\n }\n await writeFindHits(\n await search(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n await libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n await libraries.search(target, args.query!, findOptions),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"list\": {\n const listContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n if (objectUri === undefined) {\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await libraries.objects(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 libraries.objects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n }),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n await libraries.objects(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 libraries.objects(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 libraries.objects(target, createCollectionOptions(args)),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"get\": {\n if (objectUri === undefined) {\n const getContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n await writeFindHits(\n createCollectionFindResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n getContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n await writePage(\n await libraries.page(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 concreteObjectUri = requireLibraryObjectUri(\"related\", objectUri);\n const relatedContext = {\n ...context,\n continuationKind: \"related\" as const,\n targetUri: concreteObjectUri,\n };\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n await libraries.related(target, concreteObjectUri, {\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.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\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 concreteObjectUri = requireLibraryObjectUri(\"evidence\", objectUri);\n const evidenceContext = {\n ...context,\n continuationKind: \"evidence\" as const,\n targetUri: concreteObjectUri,\n };\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n await libraries.evidence(target, concreteObjectUri, {\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 ...(args.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n args.cursor,\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n await libraries.evidence(target, concreteObjectUri, {\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 ...(args.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n }),\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"pack\": {\n const concreteObjectUri = requireLibraryObjectUri(\"pack\", objectUri);\n await writePack(\n await libraries.pack(target, concreteObjectUri, args.budget ?? 5000),\n context,\n args.format ?? \"text\",\n );\n return;\n }\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\nfunction createSearchFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n return createFindOptions(args);\n}\n\nfunction requireLibraryObjectUri(\n action: \"related\" | \"evidence\" | \"pack\",\n objectUri: string | undefined,\n): string {\n if (objectUri === undefined) {\n throw new Error(\n `The library \\`${action}\\` predicate requires a concrete library object URI.`,\n );\n }\n\n return objectUri;\n}\n","import type { CLIArchiveTitleArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { parseCLIArchiveTarget } from \"../support/archive-target.js\";\nimport { writeTextToStdout } from \"../support/index.js\";\n\nexport async function runArchiveTitleCommand(\n args: CLIArchiveTitleArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n\n if (args.action === \"clear\") {\n await archive.setArchiveTitle(null);\n await writeTextToStdout(\"Cleared archive title.\\n\");\n return;\n }\n\n const title = args.title;\n if (title === undefined) {\n throw new Error(\"Missing archive title.\");\n }\n const stored = await archive.setArchiveTitle(title);\n await writeTextToStdout(`${stored}\\n`);\n}\n","export * from \"wiki-graph-sdk/entry-context\";\n","import { spawn } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nimport {\n getCLICwd,\n getCLIDevProjectRoot,\n getCLIEnv,\n getCLIEnvPolicy,\n getCLIStateDir,\n} from \"./context.js\";\nimport { DANGEROUS_RUNTIME_ENV_NAMES } from \"./entry-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: createInternalChildEnvironment(),\n stdio: options.detached === true ? \"ignore\" : [\"ignore\", \"pipe\", \"pipe\"],\n });\n}\n\nexport function createInternalChildEnvironmentForTesting(): NodeJS.ProcessEnv {\n return createInternalChildEnvironment();\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 \"--wikigraph-env-policy\",\n getCLIEnvPolicy(),\n \"--wikigraph-dev-project-root\",\n devProjectRoot,\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 createInternalChildEnvironment(): NodeJS.ProcessEnv {\n const environment = { ...getCLIEnv() };\n\n for (const name of DANGEROUS_RUNTIME_ENV_NAMES) {\n delete environment[name];\n }\n\n return environment;\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 { BuildJobTarget, ChapterEntry } from \"wiki-graph-sdk\";\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 toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n type GenerationConcurrency,\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 CLIGenerationPerformanceHint[];\n readonly planning: GenerationPlanningCost;\n readonly steps: readonly QueueAddEstimateStep[];\n readonly target: BuildJobTarget;\n readonly usesProvider: boolean;\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 const usesProvider = steps.some((step) => step.task !== \"index-fts\");\n\n return {\n chapters: input.chapters.length,\n concurrent,\n includesPrerequisites: steps.some((step) => step.prerequisite),\n performanceHints: toCLIGenerationPerformanceHints(\n createGenerationPerformanceHints({\n chapters: workChapters,\n concurrent,\n hasJobWork: steps.length > 0,\n hasRequestWork: usesProvider,\n }),\n ),\n planning: sumGenerationPlanningCosts(model, steps),\n steps,\n target: input.target,\n usesProvider,\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 \"index-fts\":\n case \"index-embedding-source\":\n case \"index-embedding-summary\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: input.target,\n }),\n ].filter((step) => step.chapters > 0);\n case \"knowledge-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\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: true,\n task: \"index-fts\",\n }),\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.usesProvider\n ? estimate.concurrent\n : { job: estimate.concurrent.job },\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 ...(estimate.usesProvider ? { 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 ...(estimate.usesProvider ? [` 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}${estimate.usesProvider ? ` request=${estimate.concurrent.request}` : \"\"}`,\n ...formatQueuePerformanceHintLines(estimate.performanceHints),\n ];\n}\n\nfunction formatQueuePerformanceHintLines(\n hints: readonly CLIGenerationPerformanceHint[],\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 {\n formatLocatedChapterUri,\n type WikiGraphJobSnapshot as BuildJob,\n type ChapterEntry,\n type WikiGraphJobChapterReference,\n} from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport {\n formatQueueAddEstimateJSON,\n formatQueueAddEstimateLines,\n type QueueAddEstimate,\n} from \"./estimate.js\";\nimport {\n getCLIEnvValue,\n getCLIStateDir,\n getWikiGraphSDK,\n} from \"../../runtime/context.js\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\ntype JobChapterReference = WikiGraphJobChapterReference;\n\nexport async function writeJobList(\n jobs: readonly BuildJob[],\n options: { readonly json: boolean },\n): Promise<void> {\n const chapters = await resolveJobChapters(jobs);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: jobs.map((job) => formatJobJSON(job, chapters.get(job.jobId))),\n }),\n );\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)} ${formatJobChapterListLabel(job, chapters.get(job.jobId))}`,\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`;\n}\n\nexport async function writeJobStatus(\n job: BuildJob,\n options: { readonly json: boolean },\n): Promise<void> {\n const chapter = await resolveJobChapter(job);\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatJobJSON(job, chapter)));\n return;\n }\n\n await writeTextToStdout(\n [\n `Job: ${job.jobId}`,\n `State: ${job.state}`,\n `Archive: ${requireJobResourcePath(job, \"archive\", \"archivePath\")}`,\n `Chapter: ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n `Target: ${job.target}`,\n `Step: ${job.currentStep ?? \"-\"}`,\n `Workspace: ${getJobResourcePath(job, \"workspace\", \"workspacePath\") ?? \"-\"}`,\n `Cache: ${getJobResourcePath(job, \"cache\", \"cachePath\") ?? \"-\"}`,\n `Logs: ${getJobResourcePath(job, \"log\", \"logPath\") ?? \"-\"}`,\n ...(job.errorJSON === undefined ? [] : [`Error: ${job.errorJSON}`]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatJobJSON(\n job: BuildJob,\n chapter?: JobChapterReference,\n): Record<string, unknown> {\n return {\n archiveKey: job.archiveKey,\n archivePath: getJobResourcePath(job, \"archive\", \"archivePath\"),\n cachePath: getJobResourcePath(job, \"cache\", \"cachePath\"),\n chapterId: job.chapterId,\n ...(chapter === undefined\n ? {}\n : {\n chapter: {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n },\n }),\n createdAt: job.createdAt,\n ...(job.currentStep === undefined ? {} : { currentStep: job.currentStep }),\n ...(job.errorJSON === undefined ? {} : { errorJSON: job.errorJSON }),\n eventsPath: getJobResourcePath(job, \"events\", \"eventsPath\"),\n ...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),\n jobId: job.jobId,\n logPath: getJobResourcePath(job, \"log\", \"logPath\"),\n ...(job.llmJSON === undefined\n ? {}\n : { llm: formatJobLLMJSON(job.llmJSON) }),\n ...(job.ownerId === undefined ? {} : { ownerId: job.ownerId }),\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: getJobResourcePath(job, \"workspace\", \"workspacePath\"),\n };\n}\n\nexport function formatJobQueuedNotice(job: BuildJob): string | undefined {\n if (job.state !== \"queued\") {\n return undefined;\n }\n\n return \"Job is queued; the requested artifact or generated data is not ready until the job succeeds.\";\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 chapter?: ChapterEntry;\n readonly json: boolean;\n readonly watch?: boolean;\n } = { json: false },\n): Promise<void> {\n const chapter =\n options.chapter === undefined\n ? await resolveJobChapter(job)\n : createJobChapterReference(job, options.chapter);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n ...formatJobJSON(job, chapter),\n ...(formatJobQueuedNotice(job) === undefined\n ? {}\n : { notice: formatJobQueuedNotice(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 ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n ...(formatJobQueuedNotice(job) === undefined\n ? []\n : [formatJobQueuedNotice(job)!]),\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 archivePath: string;\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 chapter: ChapterEntry;\n readonly reason: string;\n }[];\n}): Promise<void> {\n const jobsCommand = formatCliCommand([\"wikg://local/job\", \"--json\"]);\n const verifyCommand = formatCliCommand([\n formatWikiGraphCommandUri(input.archivePath),\n \"inspect\",\n ]);\n\n if (input.json) {\n await writeTextToStdout(\n formatCLIJSON({\n created: input.created.map((item) =>\n formatJobJSON(\n item.job,\n createJobChapterReference(item.job, item.chapter),\n ),\n ),\n ...(input.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(input.estimate) }),\n ...(input.created.length === 0 ? {} : { jobsCommand, verifyCommand }),\n skipped: input.skipped.map((item) => ({\n chapterId: item.chapter.chapterId,\n chapter: formatChapterJSON(\n createJobChapterReferenceFromPath(input.archivePath, item.chapter),\n ),\n reason: item.reason,\n })),\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 ${formatChapterLabel(job.chapter)}`,\n `Chapter URI: ${createJobChapterReference(job.job, job.chapter).locatedUri}`,\n );\n }\n for (const skipped of input.skipped) {\n lines.push(\n `Skipped chapter ${formatChapterLabel(skipped.chapter)}: ${skipped.reason}`,\n );\n }\n if (input.estimate !== undefined) {\n lines.push(\"\", ...formatQueueAddEstimateLines(input.estimate));\n }\n if (input.created.length > 0) {\n lines.push(\n \"\",\n `Jobs: ${jobsCommand}`,\n `Verify after the jobs finish: ${verifyCommand}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatJobChapterLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : formatChapterLabel(chapter);\n}\n\nfunction formatJobChapterListLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : `${chapter.title ?? \"[untitled]\"} ${chapter.locatedUri}`;\n}\n\nfunction formatChapterLabel(\n chapter: Pick<JobChapterReference, \"title\" | \"uri\">,\n): string {\n return chapter.title === null || chapter.title === undefined\n ? chapter.uri\n : `${JSON.stringify(chapter.title)} (${chapter.uri})`;\n}\n\nfunction formatChapterJSON(\n chapter: JobChapterReference,\n): Record<string, unknown> {\n return {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nfunction createJobChapterReference(\n job: BuildJob,\n chapter: ChapterEntry,\n): JobChapterReference {\n return createJobChapterReferenceFromPath(\n requireJobResourcePath(job, \"archive\", \"archivePath\"),\n chapter,\n );\n}\n\nfunction createJobChapterReferenceFromPath(\n archivePath: string,\n chapter: ChapterEntry,\n): JobChapterReference {\n return {\n locatedUri: formatLocatedChapterUri(archivePath, chapter.path),\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nasync function resolveJobChapters(\n jobs: readonly BuildJob[],\n): Promise<ReadonlyMap<string, JobChapterReference>> {\n return await getWikiGraphSDK().jobs.resolveChapters(jobs);\n}\n\nasync function resolveJobChapter(\n job: BuildJob,\n): Promise<JobChapterReference | undefined> {\n return await getWikiGraphSDK().jobs.resolveChapter(job);\n}\n\nfunction getJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string | undefined {\n const record = job as unknown as Record<string, unknown>;\n if (resourceKey === \"archive\") {\n return job.archive.kind === \"library\" ? job.archive.uri : job.archive.path;\n }\n const legacyPath = record[legacyKey];\n if (typeof legacyPath === \"string\") {\n return resolveManagedJobResourcePath(legacyPath) ?? legacyPath;\n }\n return undefined;\n}\n\nfunction resolveManagedJobResourcePath(identity: string): string | undefined {\n if (!identity.startsWith(\"managed:library:\")) return undefined;\n const relativePath = identity.slice(\"managed:library:\".length);\n const segments = relativePath.split(\"/\");\n if (\n relativePath === \"\" ||\n segments.some(\n (segment) =>\n segment === \"\" ||\n segment === \".\" ||\n segment === \"..\" ||\n segment.includes(\"\\\\\"),\n )\n ) {\n throw new TypeError(`Invalid managed job resource: ${identity}`);\n }\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n const stateDirectory =\n getCLIStateDir() ??\n join(\n environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome,\n \".wikigraph\",\n );\n return join(stateDirectory, ...segments);\n}\n\nfunction requireJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string {\n const path = getJobResourcePath(job, resourceKey, legacyKey);\n if (path !== undefined) return path;\n throw new TypeError(`Build job is missing ${resourceKey}`);\n}\n","import type {\n WikiGraphJobSnapshot as BuildJob,\n ChapterEntry,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport { isCLIQueueAutostartEnabled } from \"../../runtime/context.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { spawnInternalChild } from \"../../runtime/internal-child.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeArchiveAddSummary } from \"./output.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\n\nexport async function addChapterJob(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<BuildJob> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: parseCLIArchiveTarget(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 const created = result.created[0];\n if (created === undefined)\n throw new Error(`Chapter ${chapterId} was not queued.`);\n return created.job.snapshot;\n}\n\nexport async function addArchiveJobs(\n args: CLIQueueArguments,\n config: CLIConfig,\n): Promise<void> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: parseCLIArchiveTarget(args.archivePath!),\n boost: args.boost ?? false,\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n const created = result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n }));\n\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\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: result.skipped,\n });\n}\n\nexport async function assertQueueAddReady(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<void> {\n await getWikiGraphSDK().jobs.planEnqueue({\n archive: parseCLIArchiveTarget(args.archivePath!),\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n target: args.target ?? \"reading-summary\",\n });\n}\n\nexport async function readQueueAddChapter(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<ChapterEntry> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath!),\n );\n const matched = (await archive.listChapters()).find(\n (chapter) => chapter.chapterId === chapterId,\n );\n if (matched === undefined)\n throw new Error(`Chapter ${chapterId} does not exist.`);\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 { readFile } from \"fs/promises\";\n\nimport {\n formatLocatedChapterUri,\n parseChapterTreeInput,\n parseSourceTextJsonl,\n type BuildJobTarget,\n type ChapterTree,\n type ChapterTreeApplyResult,\n type ChapterDetails,\n type ChapterEntry,\n type IndexArtifactKind,\n type WikiGraphChapterArtifactStatus,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\n\nimport type { CLIArchiveChapterArguments } from \"../../args/index.js\";\nimport type { RenderTreeNode } from \"../../support/index.js\";\nimport {\n parseLocatedWikiGraphUri,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { tryStartQueueWorker } from \"../queue/add.js\";\nimport { writeJobSummary } from \"../queue/output.js\";\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const sdk = getWikiGraphSDK();\n const archive = await sdk.archives.open(parseCLIArchiveTarget(args.path));\n switch (args.action) {\n case \"add\": {\n const details = await archive.addChapter({\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n ...(args.inputPath === undefined\n ? {}\n : { source: await readRequiredSourceText(args) }),\n ...(args.title === undefined ? {} : { title: args.title }),\n });\n await writeChapterDetails(details, args.json ?? false, {\n locatedUri: formatChapterCommandUri(args.path, details.path),\n });\n return;\n }\n case \"list\":\n await writeChapterList(await archive.listChapters(), args.json ?? false);\n return;\n case \"get-index-artifact\":\n await writeIndexArtifactStatus(\n await archive.getChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n ),\n args.json ?? false,\n );\n return;\n case \"build-index-artifact\": {\n const chapter = await archive.getChapter(\n requireChapterPath(args.chapterPath),\n );\n const job = await sdk.jobs.create({\n archive: archive.target,\n chapterId: chapter.chapterId,\n target: requireIndexArtifactTarget(args.indexArtifactTarget),\n });\n\n tryStartQueueWorker();\n await writeJobSummary(job.snapshot, {\n chapter,\n json: args.json ?? false,\n watch: true,\n });\n return;\n }\n case \"delete-index-artifact\": {\n const deleted = await archive.deleteChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(deleted)\n : `Deleted ${formatIndexArtifactKind(deleted.kind)} index artifact for chapter ${deleted.chapterId}.\\n`,\n );\n return;\n }\n case \"move\":\n await writeChapterDetails(\n await archive.moveChapter(requireChapterPath(args.chapterPath), {\n ...(args.afterChapterPath === undefined\n ? {}\n : { afterPath: args.afterChapterPath }),\n ...(args.beforeChapterPath === undefined\n ? {}\n : { beforePath: args.beforeChapterPath }),\n ...(args.first === undefined ? {} : { first: args.first }),\n ...(args.last === undefined ? {} : { last: args.last }),\n ...(args.moveToRoot === undefined ? {} : { root: args.moveToRoot }),\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n }),\n args.json ?? false,\n );\n return;\n case \"remove\":\n await archive.removeChapter(\n requireChapterPath(args.chapterPath),\n args.recursive ?? false,\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({\n removed: true,\n uri: `wikg://chapter/${args.chapterPath}`,\n })\n : `Removed chapter wikg://chapter/${args.chapterPath}.\\n`,\n );\n return;\n case \"reset\":\n await writeChapterDetails(\n await archive.resetChapter(\n requireChapterPath(args.chapterPath),\n args.resetStage!,\n ),\n args.json ?? false,\n );\n return;\n case \"set-source\": {\n const sourceText = await readRequiredSourceText(args);\n const parsed =\n args.inputFormat === \"jsonl\"\n ? parseSourceTextJsonl(sourceText)\n : undefined;\n await writeChapterDetails(\n await archive.setChapterSource(\n requireChapterPath(args.chapterPath),\n parsed?.text ?? sourceText,\n parsed === undefined ? {} : { provenance: parsed.provenance },\n ),\n args.json ?? false,\n );\n return;\n }\n case \"set-summary\":\n await writeChapterDetails(\n await archive.setChapterSummary(\n requireChapterPath(args.chapterPath),\n await readContentText(args),\n ),\n args.json ?? false,\n );\n return;\n case \"set-title\":\n await writeChapterDetails(\n await archive.setChapterTitle(\n requireChapterPath(args.chapterPath),\n args.clearTitle === true ? null : args.title,\n ),\n false,\n );\n return;\n case \"tree\":\n if (args.treeAction === \"apply\") {\n await writeChapterTreeApplyResult(\n await archive.applyChapterTree(\n parseChapterTreeInput(JSON.parse(await readContentText(args))),\n { dryRun: args.dryRun ?? false },\n ),\n args.dryRun ?? false,\n );\n return;\n }\n await writeChapterTree(\n await archive.getChapterTree(),\n args.json ?? false,\n );\n return;\n }\n}\nfunction requireChapterPath(chapterPath: string | undefined): string {\n if (chapterPath === undefined) {\n throw new Error(\"Missing chapter path.\");\n }\n return chapterPath;\n}\n\nfunction requireIndexArtifactKind(\n kind: IndexArtifactKind | undefined,\n): IndexArtifactKind {\n if (kind === undefined) {\n throw new Error(\"Missing index artifact kind.\");\n }\n\n return kind;\n}\n\nfunction requireIndexArtifactTarget(\n target: BuildJobTarget | undefined,\n): BuildJobTarget {\n if (target === undefined) {\n throw new Error(\"Missing index artifact build target.\");\n }\n\n return target;\n}\n\nasync function writeIndexArtifactStatus(\n status: WikiGraphChapterArtifactStatus,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(status));\n return;\n }\n\n const state =\n status.artifact === undefined\n ? \"missing\"\n : status.current\n ? \"current\"\n : \"outdated\";\n\n await writeTextToStdout(\n [\n `Chapter: ${status.chapterId}`,\n `Index artifact: ${formatIndexArtifactKind(status.kind)}`,\n `State: ${state}`,\n ...(status.artifact === undefined\n ? []\n : [\n `Source revision: ${status.artifact.sourceRevision}`,\n `Current revision: ${status.revision}`,\n ]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatIndexArtifactKind(kind: IndexArtifactKind): string {\n switch (kind) {\n case \"fts\":\n return \"FTS\";\n case \"embedding-source\":\n return \"source embedding\";\n case \"embedding-summary\":\n return \"summary embedding\";\n }\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 positional text, use --input <path>, or use --input - for stdin.\",\n );\n }\n\n return content;\n}\n\nasync function writeChapterDetails(\n details: ChapterDetails,\n json: boolean,\n options: { readonly locatedUri?: string } = {},\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n childCount: details.childCount,\n graphReady: details.graphReady,\n hasSummary: details.hasSummary,\n ...(options.locatedUri === undefined\n ? {}\n : { locatedUri: options.locatedUri }),\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 ...(options.locatedUri === undefined\n ? []\n : [`Located URI: ${options.locatedUri}`]),\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\nfunction formatChapterCommandUri(\n archiveLocator: string,\n chapterPath: string,\n): string {\n if (archiveLocator.startsWith(\"wikg://lib/\")) {\n return `${archiveLocator.replace(/\\/+$/u, \"\")}/chapter/${chapterPath}`;\n }\n if (archiveLocator.startsWith(\"wikg://\")) {\n const parsed = parseLocatedWikiGraphUri(archiveLocator);\n\n if (parsed.archivePath !== undefined) {\n return formatLocatedChapterUri(parsed.archivePath, chapterPath);\n }\n }\n\n return formatLocatedChapterUri(archiveLocator, chapterPath);\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","import type { WikiGraphArchiveIndexStatus } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveIndexArguments } from \"../../args/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.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 readIndexCache(args);\n return;\n case \"sync\":\n await syncIndexCache(args);\n return;\n case \"clean\":\n await cleanIndexCache(args);\n return;\n }\n}\n\nasync function readIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writeIndexOutput(args, await archive.getSearchIndexStatus());\n}\n\nasync function syncIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\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: \"index cache sync started\\nsteps: checking -> collecting -> clearing -> indexing-text -> indexing-dense -> finalizing\",\n });\n await writer.write({\n json: { phase: \"checking\", type: \"status_snapshot\" },\n kind: \"status\",\n phase: \"checking\",\n });\n const result = await archive.syncSearchIndex({\n onProgress: 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 skipUnindexed: args.skipUnindexed ?? false,\n });\n if (!result.rebuilt) {\n await writer.write({\n json: { type: \"already-current\" },\n kind: \"lifecycle\",\n text: \"already current\",\n });\n }\n await writer.write({\n json: { type: \"completed\" },\n kind: \"lifecycle\",\n text: \"index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n}\n\nasync function cleanIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writeIndexOutput(args, await archive.cleanSearchIndex());\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\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\" | \"vector\" | 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 \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nfunction formatIndexUnit(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | 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 \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nasync function writeIndexOutput(\n args: CLIArchiveIndexArguments,\n payload: WikiGraphArchiveIndexStatus,\n): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(payload));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${formatArchiveIndexStatus(payload)}`,\n `Enabled indexes: ${payload.capabilities.indexes}`,\n `Dense current: ${payload.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(payload.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${payload.capabilities.dense.model}`]),\n ...(payload.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${payload.capabilities.dense.dimensions}`]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatArchiveIndexStatus(\n input: WikiGraphArchiveIndexStatus,\n): \"current\" | \"missing\" | \"outdated\" {\n if (input.current) {\n return \"current\";\n }\n if (input.capabilities.indexes === \"missing\") {\n return \"missing\";\n }\n return \"outdated\";\n}\n","import type { BookMeta } from \"wiki-graph-sdk\";\n\nimport type {\n ArchiveMetaPatch,\n CLIArchiveCoverArguments,\n CLIArchiveMetadataArguments,\n} from \"../../args/index.js\";\nimport { writeBinaryToStdout, writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.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 archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.inputPath),\n );\n await writeArchiveMeta(await archive.readBookMeta(), {\n json: args.json ?? false,\n });\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.inputPath),\n );\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 archive.readCover();\n\n if (cover === undefined) {\n throw new Error(\"Document cover is missing.\");\n }\n\n await writeBinaryToStdout(cover.data);\n}\n\nasync function updateArchiveMeta(\n path: string,\n patch: ArchiveMetaPatch,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(path),\n );\n const meta = await archive.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 archive.replaceBookMeta(updatedMeta);\n await writeArchiveMeta(updatedMeta, { json: false });\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 type { GcRunReport } from \"wiki-graph-sdk/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 { getWikiGraphSDK } from \"../runtime/context.js\";\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 getWikiGraphSDK().maintenance.migrateLegacy(\n args.inputPath,\n args.outputPath,\n );\n process.stdout.write(`Wrote ${result.outputPath}\\n`);\n return;\n }\n }\n}\n","import { homedir } from \"os\";\nimport { join, resolve } from \"path\";\n\nimport { getCLICwd, getCLIStateDir } from \"./context.js\";\n\nexport function isWikiGraphHomeTarget(target: string): boolean {\n if (target === \"home\" || target === \"~/.wikigraph\") return true;\n\n const configuredHome = resolve(\n getCLIStateDir() ?? join(homedir(), \".wikigraph\"),\n );\n return resolve(getCLICwd(), target) === configuredHome;\n}\n","import type {\n WikiGraphMaintenanceTarget,\n WikiGraphMaintenanceUpgradeResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIMaintenanceArguments } from \"../args/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.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 if (args.outputPath !== undefined || args.target.endsWith(\".sdpub\")) {\n throw new Error(\n \"Legacy sdpub migration is available through `wg legacy migrate`.\",\n );\n }\n const result = await getWikiGraphSDK().maintenance.upgrade(\n parseMaintenanceTarget(args.target),\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} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"archive\":\n return `Archive ${result.status}: ${result.fileName} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\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\nfunction parseMaintenanceTarget(target: string): WikiGraphMaintenanceTarget {\n if (isWikiGraphHomeTarget(target)) {\n return { kind: \"home\" as const };\n }\n if (target.startsWith(\"wikg://lib\")) {\n return { kind: \"library\", uri: target };\n }\n if (!target.endsWith(\".wikg\")) {\n throw new Error(`Unsupported maintenance upgrade target: ${target}`);\n }\n return { kind: \"archive\", path: target };\n}\n","import { Writable } from \"stream\";\nimport { createInterface } from \"readline/promises\";\n\nimport type { CLILocalConfigArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK, setCLIExitCode } from \"../runtime/context.js\";\nimport { writeTextToStderr, writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\nimport {\n maskLocalConfigSection,\n type LocalConfigObject,\n} from \"../runtime/local-config.js\";\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const config = getWikiGraphSDK().config;\n switch (args.action) {\n case \"get\":\n await writeConfigObject(args.section, await config.get(args.section));\n return;\n case \"set\":\n await writeConfigObject(\n args.section,\n await config.replace(\n args.section,\n mergeMaskedSecretsForSet(\n args.section,\n readJSONInput(args),\n await config.get(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 config.put(args.section, key, value),\n );\n return;\n }\n case \"delete\":\n await writeConfigObject(\n args.section,\n await config.delete(args.section, requireConfigKey(args.key)),\n );\n return;\n case \"clear\":\n await writeConfigObject(args.section, await config.clear(args.section));\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 case \"embeddings\":\n await runEmbeddingConfigTest(args);\n return;\n default:\n throw new Error(\n \"Only wikg://local/config/llm, wikg://local/config/embeddings, and wikg://local/config/wikispine support test.\",\n );\n }\n}\n\nasync function runEmbeddingConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const embedding = await getWikiGraphSDK().config.get(\"embeddings\");\n\n try {\n const result = await getWikiGraphSDK().config.testEmbedding();\n const output = {\n dimensions: result.dimensions!,\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider!,\n ...(result.tokens === undefined ? {} : { tokens: result.tokens }),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"Embedding connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Dimensions: ${output.dimensions}`,\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: embedding.model,\n ok: false,\n provider: embedding.provider,\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 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 getWikiGraphSDK().config.get(\"llm\");\n\n try {\n const result = await getWikiGraphSDK().config.testLLM();\n const output = {\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider,\n response: result.response,\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 getWikiGraphSDK().config.get(\"wikispine\");\n\n try {\n const result = await getWikiGraphSDK().config.testWikispine();\n const output = {\n durationMs: result.durationMs,\n ...(result.endpoint === undefined ? {} : { endpoint: result.endpoint }),\n ...(result.metadata === undefined ? {} : { metadata: result.metadata }),\n ok: true,\n provider: result.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 === \"wikimedia\" || section === \"wikispine\") {\n return mergeMaskedSecret(section, input, current, \"token\");\n }\n if (\n (section !== \"llm\" && section !== \"embeddings\") ||\n input.apiKey === undefined\n ) {\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/${section} put apiKey --secret\\`.`,\n );\n}\n\nfunction mergeMaskedSecret(\n section: \"wikimedia\" | \"wikispine\",\n input: LocalConfigObject,\n current: LocalConfigObject,\n key: \"token\",\n): LocalConfigObject {\n const value = input[key];\n if (value === undefined) return input;\n if (typeof value === \"string\" && /^\\*+$/u.test(value)) {\n return current[key] === undefined\n ? omitKey(input, key)\n : { ...input, [key]: current[key] };\n }\n throw new Error(\n `${key} is sensitive and cannot be set from JSON. Use \\`wg wikg://local/config/${section} put ${key} --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\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 formatWikiGraphLibraryUri,\n type ParsedWikiGraphLibraryUri,\n type WikiGraphLibraryArchiveSnapshot as WikiGraphLibraryArchiveRecord,\n type WikiGraphLibraryIndexState,\n type WikiGraphLibrarySnapshot as WikiGraphLibraryRecord,\n type WikiGraphLibraryScanSnapshot as WikiGraphLibraryScanResult,\n} from \"wiki-graph-sdk\";\nimport type { CLILibraryArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport type { RenderTreeNode } from \"../support/index.js\";\nimport {\n formatCLIJSON,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { createCollectionFindResult } from \"./archive-command/run/index.js\";\nimport { writeFindHits } from \"./archive-output/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 const libraries = getWikiGraphSDK().libraries;\n if (\n args.action !== \"add\" &&\n args.action !== \"create\" &&\n args.action !== \"scan\" &&\n args.action !== \"rebind\"\n ) {\n await libraries.assertCurrent(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 libraries.addArchive({\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 await writeLibrary(\n (await libraries.create(args.path)).snapshot,\n args.json ?? false,\n );\n return;\n }\n case \"list\": {\n if (args.target.kind === \"registry\") {\n await writeLibraries(\n (await libraries.list()).map((library) => library.snapshot),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"scan\": {\n await writeScanResult(\n \"scan\",\n async () => await libraries.scan(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 () => await libraries.rebind(args.target, folderPath),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"archive-tree\": {\n await writeLibraryArchiveTree(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\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 libraries.indexState(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"sync-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 cache sync started\\nsteps: collecting -> clearing -> indexing-text -> indexing-objects -> indexing-dense -> finalizing\",\n });\n const state = await libraries.rebuildIndex(args.target, 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 await writer.write({\n json: { status: state.status, type: \"completed\" },\n kind: \"lifecycle\",\n text: \"library index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n case \"clean-index\": {\n await writeLibraryIndexState(\n await libraries.cleanIndex(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"remove\": {\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await libraries.removeArchive(args.target),\n args.json ?? false,\n \"Removed library archive\",\n );\n return;\n }\n const library = await libraries.remove(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 \"replace\": {\n if (args.inputPath === undefined) {\n throw new Error(\"Missing --input <path> for library archive replace.\");\n }\n await writeLibraryArchive(\n await libraries.replaceArchive({\n inputPath: args.inputPath,\n target: args.target,\n }),\n args.json ?? false,\n \"Replaced library archive\",\n );\n return;\n }\n case \"get\": {\n if (args.target.kind === \"path\") {\n await writeLibraryPath(\n (await libraries.get(formatWikiGraphLibraryUri(args.target.publicId)))\n .snapshot,\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-path\") {\n await writeLibraryArchivePath(\n await libraries.getArchive({ ...args.target, kind: \"archive\" }),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"metadata\") {\n await writeMetadataMap(\n await libraries.getMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive\") {\n await writeLibraryArchivePage(\n await libraries.getArchive(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, 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 libraries.moveArchive({\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 libraries.replaceMetadata(args.target, parseMetadataMap(value)),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n await writeMetadataMap(\n await libraries.putMetadata(\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 libraries.deleteMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"clear\": {\n await writeMetadataMap(\n await libraries.clearMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n }\n}\n\nasync function writeLibrary(\n library: WikiGraphLibraryRecord,\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 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: readonly WikiGraphLibraryRecord[],\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: WikiGraphLibraryRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: `${library.uri}/path`,\n path: library.folderPath,\n }),\n );\n return;\n }\n await writeTextToStdout(`${library.folderPath}\\n`);\n}\n\nasync function writeLibraryArchivePath(\n archive: WikiGraphLibraryArchiveRecord,\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<WikiGraphLibraryScanResult>,\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: readonly WikiGraphLibraryArchiveRecord[],\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 writeLibraryScopeCollection(\n target: ParsedWikiGraphLibraryUri,\n json: boolean,\n): Promise<void> {\n const manager = getWikiGraphSDK().libraries;\n const library = await manager.get(formatWikiGraphLibraryUri(target.publicId));\n const baseUri = formatWikiGraphLibraryUri(target.publicId);\n const context = {\n archiveKey: baseUri,\n archivePath: baseUri,\n continuationKind: \"collection\" as const,\n format: json ? (\"json\" as const) : (\"text\" as const),\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n limit: 20,\n libraryQuery: \"objects\" as const,\n types: null,\n };\n\n await writeFindHits(\n createCollectionFindResult(await manager.objects(target)),\n context,\n json ? \"json\" : \"text\",\n );\n}\n\nasync function writeLibraryArchive(\n archive: WikiGraphLibraryArchiveRecord,\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\nasync function writeLibraryArchivePage(\n archive: WikiGraphLibraryArchiveRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON(formatLibraryArchivePageJSON(archive)),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Library archive: ${archive.uri}`,\n `Label: ${archive.relativePath}`,\n `Status: ${archive.status}${archive.exists ? \"\" : \" (missing file)\"}`,\n `Chapter: ${archive.uri}/chapter`,\n `Entity: ${archive.uri}/entity`,\n `Triple: ${archive.uri}/triple`,\n `Inspect: ${archive.uri} inspect`,\n `Metadata path: ${formatArchiveHostPath(archive)}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatLibraryArchiveJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n relativePath: archive.relativePath,\n path: formatArchiveHostPath(archive),\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\nfunction formatLibraryArchivePageJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n label: archive.relativePath,\n relativePath: archive.relativePath,\n status: archive.status,\n entries: {\n chapter: `${archive.uri}/chapter`,\n entity: `${archive.uri}/entity`,\n triple: `${archive.uri}/triple`,\n inspect: `${archive.uri} inspect`,\n },\n metadata: {\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\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}\n\ninterface ArchiveTreeNode {\n readonly children: Map<string, ArchiveTreeNode>;\n readonly name: string;\n readonly path: string;\n archive?: WikiGraphLibraryArchiveRecord;\n}\n\nasync function writeLibraryArchiveTree(\n archives: readonly WikiGraphLibraryArchiveRecord[],\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: WikiGraphLibraryArchiveRecord,\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: WikiGraphLibraryIndexState,\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 ...(state.capabilities === undefined\n ? []\n : [\n `Enabled indexes: ${state.capabilities.indexes}`,\n `Dense current: ${state.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(state.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${state.capabilities.dense.model}`]),\n ...(state.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${state.capabilities.dense.dimensions}`]),\n ]),\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\" | \"vector\";\n}): ProgressCounter {\n const unit =\n input.unit === \"chapter\"\n ? \"chapters\"\n : input.unit === \"sentence\"\n ? \"sentences\"\n : input.unit === \"vector\"\n ? \"vectors\"\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\nfunction formatArchiveHostPath(archive: {\n readonly relativePath: string;\n}): string {\n return archive.relativePath;\n}\n","import { readFile } from \"fs/promises\";\n\nimport type { CLIObjectMetadataArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport {\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../support/archive-target.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n\n switch (args.action) {\n case \"get\": {\n await writeMetadataMap(\n await archive.getMetadata(args.objectPath),\n args.json ?? false,\n );\n return;\n }\n case \"set\": {\n const value = await readMetadataInput(args, { jsonRequired: true });\n const map = parseMetadataMap(value);\n\n await writeMetadataMap(\n await archive.replaceMetadata(args.objectPath, map),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n const key = normalizeMetadataKey(args.key);\n const value = await readMetadataInput(args, { jsonRequired: false });\n\n await writeMetadataMap(\n await archive.putMetadata(args.objectPath, key, value),\n args.json ?? false,\n );\n return;\n }\n case \"delete\":\n await writeMetadataMap(\n await archive.deleteMetadata(\n args.objectPath,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n case \"clear\":\n await writeMetadataMap(\n await archive.clearMetadata(args.objectPath),\n args.json ?? false,\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","import {\n type BuildJobEvent,\n type BuildJobProgressCounter,\n type BuildJobTarget,\n} from \"wiki-graph-sdk\";\n\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n type ProgressMetricGroup,\n} from \"../../runtime/index.js\";\nimport { getCLISignal, getWikiGraphSDK } from \"../../runtime/context.js\";\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 const writer = new ProgressOutputWriter({\n jsonl: options.jsonl,\n throttleMs: PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n const job = await getWikiGraphSDK().jobs.get(jobId);\n const signal = getCLISignal();\n for await (const event of job.events({\n from: options.from,\n ...(signal === undefined ? {} : { signal }),\n })) {\n await writer.write(formatWatchOutputEvent(event));\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","import {\n requireKnowledgeGraphWikispineConfig,\n runWikiGraphQueueWorker,\n} from \"wiki-graph-sdk\";\n\nexport { requireKnowledgeGraphWikispineConfig };\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\n\nexport async function runQueueWorker(): Promise<void> {\n const controller = new AbortController();\n const stop = (): void => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n try {\n await runWikiGraphQueueWorker({ signal: controller.signal });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n } finally {\n process.removeListener(\"SIGINT\", stop);\n process.removeListener(\"SIGTERM\", stop);\n }\n}\n","import type { WikiGraphJobEnqueueOptions } from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { assertBuildCostAccepted, tryStartQueueWorker } from \"./add.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport {\n writeArchiveAddSummary,\n writeJobList,\n writeJobStatus,\n writeJobSummary,\n} from \"./output.js\";\nimport { watchBuildJob } from \"./watch.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 enqueueOptions = createEnqueueOptions(args);\n const plan = await getWikiGraphSDK().jobs.planEnqueue(enqueueOptions);\n const target = args.target ?? \"reading-summary\";\n if (target !== \"index-fts\") {\n assertBuildCostAccepted(args);\n }\n const config = await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n const result = await getWikiGraphSDK().jobs.enqueue(enqueueOptions);\n const singleSelection =\n (args.chapterId !== undefined ||\n args.chapterPath !== undefined ||\n args.chapterIds?.length === 1) &&\n plan.ready.length + plan.skipped.length === 1;\n if (result.created.length === 1 && singleSelection) {\n const created = result.created[0]!;\n const estimate = createQueueAddEstimate({\n chapters: [created.chapter],\n config,\n target,\n });\n await writeJobSummary(created.job.snapshot, {\n chapter: created.chapter,\n estimate,\n json: args.json ?? false,\n watch: true,\n });\n } else {\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\n created: result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n })),\n ...(result.created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: result.created.map((item) => item.chapter),\n config,\n target,\n }),\n }),\n json: args.json ?? false,\n skipped: result.skipped,\n });\n }\n\n tryStartQueueWorker();\n return;\n }\n case \"list\":\n await writeJobList(\n (\n await getWikiGraphSDK().jobs.list({\n ...(args.activeOnly === undefined\n ? {}\n : { activeOnly: args.activeOnly }),\n ...(args.all === undefined ? {} : { all: args.all }),\n ...(args.archivePath === undefined\n ? {}\n : { archive: parseCLIArchiveTarget(args.archivePath) }),\n })\n ).map((job) => job.snapshot),\n { json: args.json ?? false },\n );\n return;\n case \"status\":\n await writeJobStatus(await (await getQueueJob(args)).status(), {\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 (await getQueueJob(args)).pause());\n return;\n case \"resume\":\n await writeJobSummary(await (await getQueueJob(args)).resume());\n tryStartQueueWorker();\n return;\n case \"cancel\":\n await writeJobSummary(await (await getQueueJob(args)).cancel());\n return;\n case \"boost\":\n await writeJobSummary(await (await getQueueJob(args)).boost());\n tryStartQueueWorker();\n return;\n case \"target\":\n await writeJobSummary(\n await (\n await getQueueJob(args)\n ).setTarget(args.target ?? \"reading-summary\"),\n );\n tryStartQueueWorker();\n return;\n case \"clean\":\n await writeTextToStdout(\n `Cleaned ${await getWikiGraphSDK().jobs.clean()} jobs.\\n`,\n );\n return;\n }\n}\n\nasync function resolveQueueJobId(args: CLIQueueArguments): Promise<string> {\n return await getWikiGraphSDK().jobs.resolveId(args.jobId!);\n}\n\nasync function getQueueJob(args: CLIQueueArguments) {\n return await getWikiGraphSDK().jobs.get(await resolveQueueJobId(args));\n}\n\nfunction createEnqueueOptions(\n args: CLIQueueArguments,\n): WikiGraphJobEnqueueOptions {\n return {\n archive: parseCLIArchiveTarget(args.archivePath!),\n ...(args.boost === undefined ? {} : { boost: args.boost }),\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.chapterPath === undefined\n ? {}\n : { chapterPath: args.chapterPath }),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n };\n}\n","import { Readable, Writable } from \"stream\";\n\nimport { createWikiGraphSDK } from \"wiki-graph-sdk\";\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 sdk: createWikiGraphSDK({\n cwd: input.cwd ?? process.cwd(),\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n ...(entryContext.stateDir === undefined\n ? {}\n : { stateDir: entryContext.stateDir }),\n }),\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 try {\n return await context.sdk!.run(\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 input.signal,\n { skipHomeBootstrap: true },\n );\n } finally {\n context.sdk!.close();\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 createNodeTemplateEnvironment,\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\nimport { existsSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { CLI_FULL_COMMAND, CLI_PRIMARY_COMMAND } from \"../support/command.js\";\nimport { getCLIDevProjectRoot } from \"../runtime/context.js\";\nimport type { ParsedWikiGraphLibraryUri } from \"wiki-graph-sdk\";\nimport { CLI_FORMATS, parseLocatedWikiGraphUri } from \"../support/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { formatCliCommand, formatShellArgument } 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 \"file-import\",\n \"source-locators\",\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 | \"archive-title-object\"\n | \"artifact-object\"\n | \"chapter-collection-scope\"\n | \"chapter-scope\"\n | \"chapter-source-range-object\"\n | \"chapter-source-locator-scope\"\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 | \"chapter-index-artifact\"\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 | \"build\"\n | \"cancel\"\n | \"clear\"\n | \"clean\"\n | \"create\"\n | \"delete\"\n | \"evidence\"\n | \"export\"\n | \"inspect\"\n | \"move\"\n | \"pack\"\n | \"pause\"\n | \"put\"\n | \"related\"\n | \"remove\"\n | \"reset\"\n | \"resume\"\n | \"set\"\n | \"sync\"\n | \"test\"\n | \"watch\";\n\nexport type LibraryHelpPredicateName = CLILibraryAction | \"clean\" | \"sync\";\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 { name: \"archive-title-object\", predicates: [\"clear\", \"set\"] },\n { name: \"artifact-object\", predicates: [] },\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-locator-scope\", 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: \"chapter-index-artifact\", predicates: [\"build\", \"delete\"] },\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: [\"clean\", \"sync\"],\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 readonly rootVisible?: boolean;\n}[] = [\n {\n name: \"format\",\n summary: \"Supported formats, inference rules, and IO constraints.\",\n },\n {\n name: \"file-import\",\n rootVisible: false,\n summary: \"Advanced source-file import and source-text provenance behavior.\",\n },\n {\n name: \"source-locators\",\n rootVisible: false,\n summary: \"Source artifact URIs and source-text locator mappings.\",\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 \"file-import\": \"help/topics/file-import\",\n \"source-locators\": \"help/topics/source-locators\",\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:\n | ReturnType<typeof createNodeTemplateEnvironment>\n | 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 displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n target: requireUriHelpTarget(targetName),\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(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 displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n predicate,\n target,\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderLibraryUriHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library\", {\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nexport function renderLibraryPredicateHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n predicate: LibraryHelpPredicateName,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library-predicate\", {\n displayUri: helpUri,\n predicate,\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nfunction formatHelpCommandUri(uri: string): string {\n return formatShellArgument(uri);\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<\n typeof createNodeTemplateEnvironment\n> {\n helpTemplateEnvironment ??= createNodeTemplateEnvironment(\n resolveCLIDataDirectory(),\n {\n autoescape: false,\n },\n );\n\n return helpTemplateEnvironment;\n}\n\nfunction resolveCLIDataDirectory(): string {\n const distDirectory = (\n globalThis as { readonly __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n const explicitProjectRoot = getCLIDevProjectRoot();\n const candidates = [\n typeof distDirectory === \"string\"\n ? resolve(distDirectory, \"data\")\n : undefined,\n explicitProjectRoot === undefined\n ? undefined\n : resolve(explicitProjectRoot, \"packages\", \"cli\", \"data\"),\n ];\n\n let directory = process.cwd();\n const root = parse(directory).root;\n while (true) {\n candidates.push(join(directory, \"packages\", \"cli\", \"data\"));\n if (directory === root) break;\n directory = dirname(directory);\n }\n\n const dataDirectory = candidates.find(\n (candidate): candidate is string =>\n candidate !== undefined && existsSync(join(candidate, \"help\")),\n );\n if (dataDirectory === undefined) {\n throw new Error(\"Could not locate CLI help data directory.\");\n }\n return dataDirectory;\n}\n","import {\n parseChapterPath,\n type ArchiveTriplePattern,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\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 indexArtifactKind: IndexArtifactKind;\n readonly kind: \"chapter-index-artifact\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-resource\";\n readonly resource: \"source\" | \"summary\" | \"title\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"source-locator-scope\";\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 indexArtifactKind = parseChapterIndexArtifactSuffix(suffix);\n\n if (indexArtifactKind !== undefined) {\n return {\n chapterPath,\n indexArtifactKind,\n kind: \"chapter-index-artifact\",\n };\n }\n\n if (suffix === \"source/locators\") {\n return { chapterPath, kind: \"source-locator-scope\" };\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 \"index\",\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 parseChapterIndexArtifactSuffix(\n suffix: string | undefined,\n): IndexArtifactKind | undefined {\n switch (suffix) {\n case \"index/fts\":\n return \"fts\";\n case \"index/embedding/source\":\n return \"embedding-source\";\n case \"index/embedding/summary\":\n return \"embedding-summary\";\n default:\n return undefined;\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-sdk\";\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 {\n inferCLIFormatFromPath,\n parseCLIFormat,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../support/index.js\";\nimport { renderArchiveCommandHelpText } from \"./help.js\";\nimport { type ArchiveTriplePattern } from \"wiki-graph-sdk\";\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 rejectNonQuerySkipUnindexedFlag(action, values, helpRoute);\n const queryMode = parseQueryModeFlag(values, helpRoute);\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 ...queryMode,\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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 \"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 ...queryMode,\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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 ...queryMode,\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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\nfunction rejectNonQuerySkipUnindexedFlag(\n action: CLIArchiveAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n if (\n action === \"search\" ||\n ((action === \"related\" || action === \"evidence\") &&\n values.query !== undefined)\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n}\n\nfunction parseQueryModeFlag(\n values: ArchiveArgumentValues,\n helpRoute: string,\n): { readonly queryMode?: \"embedding\" | \"fts\" | \"hybrid\" } {\n const value = values[\"query-mode\"];\n if (value === undefined) return {};\n if (values.query === undefined) {\n throw new Error(\n withHelpRoute(\"`--query-mode` requires `--query`.\", helpRoute),\n );\n }\n if (value !== \"hybrid\" && value !== \"fts\" && value !== \"embedding\") {\n throw new Error(\n withHelpRoute(\n \"--query-mode must be one of: hybrid, fts, embedding.\",\n helpRoute,\n ),\n );\n }\n return { queryMode: value };\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { BuildJobTarget } from \"wiki-graph-sdk\";\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 value === \"build\" ||\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 value === \"clean\" || value === \"get\" || value === \"sync\";\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 \"index-fts\":\n return \"index-fts\";\n case \"index-embedding-source\":\n return \"index-embedding-source\";\n case \"index-embedding-summary\":\n return \"index-embedding-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 index-fts, index-embedding-source, index-embedding-summary, 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 { parseChapterPath, parseChapterUriPath } from \"wiki-graph-sdk\";\n\nimport {\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} 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 {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport {\n parseLocalConfigSection,\n type LocalConfigSection,\n} from \"../../runtime/local-config.js\";\nimport { parseWikiGraphUriSyntax, WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-sdk\";\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 \"build-index-artifact\":\n case \"delete-index-artifact\":\n case \"get-index-artifact\":\n throw new Error(\n withHelpRoute(\n \"Internal chapter index artifact actions are only available through chapter index artifact URIs.\",\n helpRoute,\n ),\n );\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 if (\n values[\"input-format\"] !== undefined &&\n values[\"input-format\"] !== \"jsonl\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`--input-format` for chapter source set only accepts `jsonl`.\",\n helpRoute,\n ),\n );\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[\"input-format\"] === undefined\n ? {}\n : { inputFormat: \"jsonl\" as const }),\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-sdk\";\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-sdk\";\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-sdk\";\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 indexes: {\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 \"query-mode\": {\n type: \"string\",\n },\n replace: {\n type: \"boolean\",\n },\n reverse: {\n type: \"boolean\",\n },\n \"skip-unindexed\": {\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 rejectNonWikiGraphSkipUnindexedFlag(positionals, values);\n rejectUnsupportedIndexesFlag(values.indexes);\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\nfunction rejectUnsupportedIndexesFlag(value: string | undefined): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --indexes option has been removed. Build chapter index artifacts explicitly, then sync the archive or library index cache.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction rejectNonWikiGraphSkipUnindexedFlag(\n positionals: readonly string[],\n values: { readonly \"skip-unindexed\"?: boolean },\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n\n const command = positionals[0];\n if (\n command !== undefined &&\n (isWikiGraphUri(command) || isWikiGraphLibraryUri(command))\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The current command does not support --skip-unindexed.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n","import { parseLocatedWikiGraphUri, 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 type BuildJobTarget,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\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-index-artifact\":\n return parseChapterIndexArtifactUriArguments(\n archivePath,\n target.chapterPath,\n target.indexArtifactKind,\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 case \"source-locator-scope\":\n return parseSourceLocatorScopeUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n}\n\nfunction parseSourceLocatorScopeUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\") {\n throw new Error(\n withHelpRoute(\n \"The source locator scope is read-only. Read it directly to enumerate locator mappings.\",\n \"wg <chapter-uri>/source/locators --help\",\n ),\n );\n }\n\n rejectArchiveChapterFlag(\"backlinks\", values.backlinks, helpRoute);\n rejectArchiveChapterFlag(\"context\", values.context, helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"evidence\", values.evidence, helpRoute);\n rejectArchiveChapterFlag(\"reverse\", values.reverse, helpRoute);\n rejectArchiveChapterFlag(\n \"skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n\n return parseArchiveArguments(\"list\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterIndexArtifactUriArguments(\n archivePath: string,\n chapterPath: string,\n indexArtifactKind: IndexArtifactKind,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectArchiveChapterMetaFlags(values, helpRoute);\n rejectArchiveChapterFlag(\"input\", values.input, helpRoute);\n rejectArchiveChapterFlag(\"import\", values.import, helpRoute);\n rejectArchiveChapterFlag(\"to\", values.to, helpRoute);\n\n if (tail.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected argument for chapter index artifact: ${tail[0]}`,\n helpRoute,\n ),\n );\n }\n\n switch (action) {\n case \"get\":\n return {\n args: {\n action: \"get-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"build\":\n return {\n args: {\n action: \"build-index-artifact\",\n chapterPath,\n indexArtifactKind,\n indexArtifactTarget:\n mapIndexArtifactKindToBuildTarget(indexArtifactKind),\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"delete\":\n return {\n args: {\n action: \"delete-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n default:\n throw new Error(\n withHelpRoute(\n `The chapter index artifact does not support \\`${action}\\`. Use get, build, or delete.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction mapIndexArtifactKindToBuildTarget(\n kind: IndexArtifactKind,\n): BuildJobTarget {\n switch (kind) {\n case \"fts\":\n return \"index-fts\";\n case \"embedding-source\":\n return \"index-embedding-source\";\n case \"embedding-summary\":\n return \"index-embedding-summary\";\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} from \"wiki-graph-sdk\";\n\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} 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 case \"source-locator-scope\":\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 if (path === \"title\") {\n return \"archive-title-object\";\n }\n if (/^artifact\\/[0-9a-f]{12,64}(?:#.+)?$/iu.test(path)) {\n return \"artifact-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-index-artifact\":\n return \"chapter-index-artifact\";\n case \"source-locator-scope\":\n return \"chapter-source-locator-scope\";\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 if (objectUri === \"wikg://title\") {\n if (action === \"get\") {\n return parseArchiveArguments(\"get\", [uri, ...tail], values, helpRoute);\n }\n if (action !== \"set\" && action !== \"clear\") {\n throw new Error(\n withHelpRoute(\n `The archive title resource does not support \\`${action}\\`. Read it directly, or use set or clear.`,\n \"wg <archive-uri>/title --help\",\n ),\n );\n }\n const expected = action === \"set\" ? 1 : 0;\n if (tail.length !== expected) {\n throw new Error(\n withHelpRoute(\n action === \"set\"\n ? \"Archive title set requires exactly one title value.\"\n : \"Archive title clear does not accept a value.\",\n helpRoute,\n ),\n );\n }\n const unsupported = Object.entries(values).find(\n ([key, value]) =>\n key !== \"help\" && value !== undefined && value !== false,\n );\n if (unsupported !== undefined) {\n throw new Error(\n withHelpRoute(\n `Archive title ${action} does not support --${unsupported[0]}.`,\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action,\n archivePath,\n ...(tail[0] === undefined ? {} : { title: tail[0] }),\n },\n help: false,\n kind: \"archive-title\",\n };\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 cache does not support \\`${action}\\`. Read the index cache directly, or use sync or clean.`,\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 === \"sync\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\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 ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\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 ArchiveTriplePattern,\n type ParsedWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\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\", \"replace\"]);\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([\"clean\", \"get\", \"sync\"]);\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\" || target.kind === \"archive-collection\") &&\n ((target.kind === \"scope\" &&\n target.objectUri !== undefined &&\n target.objectUri !== \"wikg://index\") ||\n values.query !== undefined ||\n (target.kind === \"scope\" && values.limit !== undefined) ||\n (target.kind === \"scope\" && values.cursor !== 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 (\n target.kind === \"archive-collection\" &&\n (action === \"search\" || values.query !== undefined)\n ) {\n return parseLibraryQueryArguments(\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 ||\n action === \"related\" ||\n action === \"evidence\" ||\n action === \"pack\" ||\n action === \"search\" ||\n (action === \"list\" && explicitAction === undefined))\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(\n withHelpRoute(\n formatMissingLibraryQueryObjectUriMessage(action),\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\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 ...optionalTriplePattern(getLibraryQueryTriplePattern(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 formatMissingLibraryQueryObjectUriMessage(action: string): string {\n return `The library \\`${action}\\` predicate requires a concrete library object URI.`;\n}\n\nfunction optionalDefaultKinds(\n defaultKinds: readonly CLIObjectKind[] | undefined,\n): { readonly defaultKinds?: readonly CLIObjectKind[] } {\n return defaultKinds === undefined ? {} : { defaultKinds };\n}\n\nfunction optionalTriplePattern(\n triplePattern: ArchiveTriplePattern | undefined,\n): { readonly triplePattern?: ArchiveTriplePattern } {\n return triplePattern === undefined ? {} : { triplePattern };\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 chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n return [\"chapter\"];\n case \"lens\":\n case \"chapter-lens\":\n return [chapterTarget.lens];\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return [\"triple\"];\n case \"chapter-resource\":\n return chapterTarget.resource === \"title\"\n ? undefined\n : [chapterTarget.resource];\n case \"chapter-state\":\n case \"tree\":\n return undefined;\n }\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 getLibraryQueryTriplePattern(\n objectUri: string | undefined,\n): ArchiveTriplePattern | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget === undefined) {\n return undefined;\n }\n\n switch (chapterTarget.kind) {\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return chapterTarget.pattern;\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 if (isLibraryScopeObjectUri(objectUri)) {\n return query === undefined ? \"list\" : \"search\";\n }\n\n return \"get\";\n}\n\nfunction isLibraryScopeObjectUri(objectUri: string): boolean {\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 true;\n case \"chapter-resource\":\n case \"chapter-state\":\n case \"tree\":\n return false;\n }\n }\n\n const path = stripObjectUriPrefix(objectUri);\n return /^(?:chunk|entity|source|summary|triple)$/u.test(path)\n ? true\n : isTripleScopePath(path);\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 formatWikiGraphHelpCommand(uri),\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 === \"sync\") {\n if (values.json === true) {\n throw new Error(\n withHelpRoute(\n \"The `sync` 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: {\n action: \"sync-index\",\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: action === \"clean\" ? \"clean-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, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectExtraPositionals(action, tail, 0, helpRoute);\n\n if (action === \"replace\") {\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input <path>.\", helpRoute));\n }\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: { action, inputPath: values.input, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--input\", values.input, 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 \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"clear\":\n case \"archive-tree\":\n case \"add\":\n case \"create\":\n case \"rebind\":\n case \"replace\":\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 \"replace\":\n case \"add\":\n case \"rebind\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-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 === \"clean-index\" ||\n action === \"create\" ||\n action === \"delete\" ||\n action === \"get\" ||\n action === \"get-index\" ||\n action === \"list\" ||\n action === \"put\" ||\n action === \"rebind\" ||\n action === \"replace\" ||\n action === \"remove\" ||\n action === \"scan\" ||\n action === \"set\" ||\n action === \"sync-index\"\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 CLIArchiveTitleArguments,\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 runArchiveTitleCommand(\n args: CLIArchiveTitleArguments,\n): Promise<void> {\n const command = await import(\"./archive-title.js\");\n\n return command.runArchiveTitleCommand(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 runArchiveTitleCommand,\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 {\n formatCLIJSON,\n formatCLIJSONLine,\n getRelativeArchiveUriResolution,\n} from \"../support/index.js\";\nimport { readCLIVersion } from \"../support/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport {\n formatError,\n LLMPaymentRequiredError,\n WikiGraphError,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\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 if (\n parsed.kind !== \"maintenance-command\" ||\n !isWikiGraphHomeTarget(parsed.args.target)\n ) {\n await getWikiGraphSDK().run(() => undefined);\n }\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-title\":\n await runArchiveTitleCommand(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(\n formatCLIJSON(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n if (shouldWriteJSONLError(input.argv)) {\n input.stdout.write(\n formatCLIJSONLine(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n input.stderr.write(`${formatCLIError(error, input.argv)}\\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, argv: readonly string[]): string {\n if (error instanceof LLMPaymentRequiredError) {\n return \"LLM payment required. Check your provider billing status or account balance.\";\n }\n\n const message = formatTerminalRemediation(error, formatError(error));\n const relativeResolution = hasErrorCode(error, \"ENOENT\")\n ? getRelativeArchiveUriResolution(argv[0] ?? \"\")\n : undefined;\n if (relativeResolution === undefined) {\n return message;\n }\n\n return `${message}\\nArchive URI \\`${relativeResolution.inputUri}\\` is relative to the current working directory:\\n ${relativeResolution.workingDirectory}\\nResolved archive path:\\n ${relativeResolution.resolvedArchivePath}\\nSee: wg help uri`;\n}\n\nfunction formatTerminalRemediation(error: unknown, message: string): string {\n if (error instanceof WikiGraphError) {\n const chapterId = error.details.chapterId;\n switch (error.code) {\n case \"chapter_has_children\":\n return `${message} Use --recursive to remove it and its descendants.`;\n case \"chapter_key_missing\":\n return \"Missing chapter key in TOC. Run a writable chapter operation or `wg maintenance upgrade` before using read-only chapter paths.\";\n case \"chapter_not_found_ids\":\n return `${message} Use \\`wg <archive-uri>/chapter list\\` to discover chapter ids.`;\n case \"chapter_not_found_uris\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"parent_chapter_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"chapter_summary_missing_source\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the chapter with \\`wg <archive-uri>/chapter/${chapterId}/source get\\`.`;\n case \"chapter_summary_missing_tree\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the archive with \\`wg <archive-uri>/chapter/tree get\\`.`;\n case \"graph_node_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter/${chapterId}/chunk list\\` to discover chunk ids.`;\n case \"home_upgrade_blocked\":\n return `${message} Stop the active operation, then run \\`wg maintenance upgrade home\\`. See: \\`wg maintenance upgrade --help\\`.`;\n case \"library_query_unindexed\":\n return `${message} Build missing chapter index artifacts, or rerun with --skip-unindexed to search indexed chapters only.`;\n case \"summary_not_completed\":\n return `${message} Use \\`wg wikg://<archive.wikg>/chapter list\\` to discover chapter ids, then \\`wg wikg://<archive.wikg>/chapter/${chapterId}/summary get\\` after summary is ready.`;\n case \"uri_expected\":\n break;\n }\n }\n\n if (\n message.startsWith(\n \"Expected a Wiki Graph URI with a .wikg archive locator:\",\n ) &&\n message.includes(\"\\nExample:\")\n ) {\n return `${message}\\nSee: wg help uri`;\n }\n const roleMatch =\n /^Role filtering is only available for related entities: (.+)$/u.exec(\n message,\n );\n return roleMatch === null\n ? message\n : `--role is only available for entity related: ${roleMatch[1]}`;\n}\n\nfunction createCLIErrorObject(\n error: unknown,\n argv: readonly string[],\n): {\n readonly error: {\n readonly message: string;\n readonly type: string;\n };\n} {\n return {\n error: {\n message: formatCLIError(error, argv),\n type:\n error instanceof LLMPaymentRequiredError\n ? \"llm_payment_required\"\n : \"error\",\n },\n };\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n const visited = new Set<unknown>();\n let current: unknown = error;\n\n while (current !== undefined && !visited.has(current)) {\n visited.add(current);\n if (\n current instanceof Error &&\n \"code\" in current &&\n (current as Error & { readonly code?: unknown }).code === code\n ) {\n return true;\n }\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return false;\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 * from \"wiki-graph-sdk/node-platform\";\n"],"mappings":"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","names":["resolve","join","resolve","parseLocatedWikiGraphUri","loadWikiGraphRuntimeConfig","init_uri","init_uri","init_uri","init_uri","init_evidence","init_page","init_evidence","init_page","DEFAULT_GET_EVIDENCE_LIMIT","init_types","parseWikiGraphLibraryUri","init_uri","parseLocatedWikiGraphUri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","init_uri","init_uri","init_types","init_uri","formatWikiGraphLibraryUri","parseWikiGraphLibraryUri","context","readPage","existsSync","join","resolve","formatLocatedChapterUri","homedir","join","formatLocatedChapterUri","requireChapterPath","homedir","join","resolve","maintenance_exports","init_maintenance","local_config_exports","init_local_config","readFile","formatWikiGraphLibraryUri","INDEX_PROGRESS_OUTPUT_INTERVAL_MS","formatIndexCounter","result","parseJSONInput","readFile","writeMetadataMap","readMetadataInput","parseMetadataMap","normalizeMetadataKey","readRawInput","parseJSONInput","formatMetadataTextValue","Writable","createWikiGraphSDK","existsSync","dirname","join","parse","resolve","resolve","parse","join","dirname","existsSync","parseChapterPath","parseChapterPath","WIKI_GRAPH_URI_PREFIX","value","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","runArchiveCommand","runArchiveTitleCommand","runArchiveChapterCommand","runArchiveIndexCommand","runArchiveCoverCommand","runArchiveMetaCommand","runConvertCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","runLibraryCommand","runObjectMetadataCommand","runQueueCommand","runConvertCommand","runArchiveMetaCommand","runArchiveCoverCommand","runObjectMetadataCommand","runLibraryCommand","runArchiveChapterCommand","runArchiveCommand","runArchiveTitleCommand","runArchiveIndexCommand","runQueueCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","createWikiGraphSDK","Writable"]}
1
+ {"version":3,"sources":["../src/support/command.ts","../src/runtime/context.ts","../src/support/errors.ts","../src/support/formats.ts","../src/support/io.ts","../src/support/json.ts","../src/support/shell.ts","../src/support/tree.ts","../src/support/uri.ts","../src/support/version.ts","../src/support/archive-target.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/wikispine.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/warnings.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/source-locators.ts","../src/commands/archive-output/write/index.ts","../src/commands/archive-output/index.ts","../src/commands/archive-command/run/types.ts","../src/commands/archive-command/run/uri.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/index.ts","../src/commands/archive-title.ts","../src/runtime/entry-context.ts","../src/runtime/internal-child.ts","../src/commands/queue/estimate.ts","../src/commands/queue/output.ts","../src/commands/queue/add.ts","../src/commands/archive-command/chapter.ts","../src/commands/archive-command/search-index.ts","../src/commands/archive-command/maintenance.ts","../src/commands/gc.ts","../src/commands/legacy.ts","../src/runtime/home-target.ts","../src/commands/maintenance.ts","../src/commands/local-config.ts","../src/commands/library.ts","../src/commands/object-metadata.ts","../src/commands/queue/watch.ts","../src/commands/queue/worker.ts","../src/commands/queue/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/node-platform.ts"],"sourcesContent":["export const CLI_PRIMARY_COMMAND = \"wg\";\nexport const CLI_FULL_COMMAND = \"wikigraph\";\n","import { AsyncLocalStorage } from \"async_hooks\";\nimport { withWikiGraphSDKRuntimeContext } from \"wiki-graph-sdk\";\nimport { createWikiGraphSDK, type WikiGraphSDK } from \"wiki-graph-sdk\";\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 sdk?: WikiGraphSDK | undefined;\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(\n context,\n async () =>\n await withWikiGraphSDKRuntimeContext(\n {\n cwd: context.cwd,\n env: context.env,\n envPolicy: context.envPolicy,\n providers: {},\n ...(context.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n },\n operation,\n ),\n );\n}\n\nexport function getCLIArgv(): readonly string[] {\n return cliRuntimeContext.getStore()?.argv ?? process.argv.slice(2);\n}\n\nexport function getWikiGraphSDK(): WikiGraphSDK {\n const context = cliRuntimeContext.getStore();\n return (\n context?.sdk ??\n createWikiGraphSDK({\n ...(context?.cwd === undefined ? {} : { cwd: context.cwd }),\n ...(context?.env === undefined ? {} : { env: context.env }),\n ...(context?.envPolicy === undefined\n ? {}\n : { envPolicy: context.envPolicy }),\n ...(context?.stateDir === undefined\n ? {}\n : { stateDir: context.stateDir }),\n })\n );\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 getCLIEnvPolicy(): \"development\" | \"production\" {\n return cliRuntimeContext.getStore()?.envPolicy ?? \"production\";\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 { CLI_PRIMARY_COMMAND } from \"./command.js\";\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 { createReadStream } from \"fs\";\nimport { mkdtemp, rm } from \"fs/promises\";\nimport { join } from \"path\";\nimport { tmpdir } from \"os\";\n\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 mkdtemp(join(tmpdir(), \"wikigraph-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 \"./command.js\";\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 { homedir } from \"os\";\nimport { isAbsolute, relative, resolve } from \"path\";\n\nimport {\n formatWikiGraphCommandUri as formatPortableWikiGraphCommandUri,\n parseLocatedWikiGraphUri as parsePortableLocatedWikiGraphUri,\n type LocatedWikiGraphUri,\n} from \"wiki-graph-sdk\";\n\nimport { getCLICwd, getCLIEnvValue } from \"../runtime/context.js\";\n\nexport interface RelativeArchiveUriResolution {\n readonly inputUri: string;\n readonly resolvedArchivePath: string;\n readonly workingDirectory: string;\n}\n\n/** Apply Node path semantics at the CLI boundary, after Core parses URI syntax. */\nexport function parseLocatedWikiGraphUri(uri: string): LocatedWikiGraphUri {\n const parsed = parsePortableLocatedWikiGraphUri(uri);\n if (\n parsed.archivePath === undefined ||\n parsed.archivePath.startsWith(\"wikg://lib/\")\n ) {\n return parsed;\n }\n return {\n ...parsed,\n archivePath: resolveCLIArchivePath(parsed.archivePath),\n };\n}\n\nexport function formatWikiGraphCommandUri(\n archivePath: string,\n objectUri?: string,\n cwd = getCLICwd(),\n): string {\n let locator = archivePath;\n if (isAbsolute(archivePath)) {\n const candidate = relative(cwd, archivePath);\n if (\n candidate !== \"\" &&\n !candidate.startsWith(\"..\") &&\n !isAbsolute(candidate)\n ) {\n locator = candidate;\n }\n }\n return formatPortableWikiGraphCommandUri(locator, objectUri);\n}\n\nexport function getRelativeArchiveUriResolution(\n uri: string,\n): RelativeArchiveUriResolution | undefined {\n let parsed: LocatedWikiGraphUri;\n try {\n parsed = parsePortableLocatedWikiGraphUri(uri);\n } catch {\n return undefined;\n }\n\n const locator = parsed.archivePath;\n if (\n locator === undefined ||\n locator === \"~\" ||\n locator.startsWith(\"~/\") ||\n locator.startsWith(\"wikg://lib/\") ||\n isAbsolute(locator)\n ) {\n return undefined;\n }\n\n const workingDirectory = getCLICwd();\n return {\n inputUri: uri,\n resolvedArchivePath: resolve(workingDirectory, locator),\n workingDirectory,\n };\n}\n\nfunction resolveCLIArchivePath(locator: string): string {\n if (locator === \"~\") return getCLIHomeDirectory();\n if (locator.startsWith(\"~/\")) {\n return resolve(getCLIHomeDirectory(), locator.slice(2));\n }\n return resolve(getCLICwd(), locator);\n}\n\nfunction getCLIHomeDirectory(): string {\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n return environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome;\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","import {\n parseLocatedWikiGraphUri,\n type WikiGraphArchiveTarget,\n} from \"wiki-graph-sdk\";\n\n/** Convert the CLI's explicit URI syntax into the SDK's discriminated target. */\nexport function parseCLIArchiveTarget(locator: string): WikiGraphArchiveTarget {\n if (locator.startsWith(\"wikg://lib/\")) {\n return { kind: \"library\", uri: locator };\n }\n if (!locator.includes(\"://\")) {\n return { kind: \"standalone\", path: locator };\n }\n const parsed = parseLocatedWikiGraphUri(locator);\n return {\n kind: \"standalone\",\n path: parsed.archivePath ?? locator,\n ...(parsed.objectUri === undefined ? {} : { objectUri: parsed.objectUri }),\n };\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 \"./uri.js\";\nexport * from \"./version.js\";\nexport * from \"./command.js\";\nexport * from \"./archive-target.js\";\n","export * from \"wiki-graph-sdk/local-config\";\n","import {\n loadWikiGraphRuntimeConfig,\n resolveHostedProviderEndpoint as resolveSDKHostedProviderEndpoint,\n resolveWikispineConfig as resolveSDKWikispineConfig,\n type HostedProviderScope,\n type WikiGraphProvider,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { getCLIEnvPolicy } from \"./context.js\";\n\nexport type CLIConfig = WikiGraphRuntimeConfig;\nexport type CLIProvider = WikiGraphProvider;\nexport type { HostedProviderScope };\n\nexport async function loadCLIConfig(options?: {\n readonly llmJSON?: string;\n}): Promise<CLIConfig> {\n try {\n return await loadWikiGraphRuntimeConfig(options);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveWikispineConfig(\n value: Record<string, unknown>,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): CLIConfig[\"wikispine\"] | undefined {\n try {\n return resolveSDKWikispineConfig(value, envPolicy);\n } catch (error) {\n throw withConfigHelp(error);\n }\n}\n\nexport function resolveHostedProviderEndpoint(\n scope: HostedProviderScope,\n envPolicy: \"development\" | \"production\" = getCLIEnvPolicy(),\n): string {\n return resolveSDKHostedProviderEndpoint(scope, envPolicy);\n}\n\nfunction withConfigHelp(error: unknown): Error {\n const message = error instanceof Error ? error.message : String(error);\n return new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n}\n","import {\n buildWikiGraphLLMOptions,\n type WikiGraphLLMOptions,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIConfig } from \"./config.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport function buildLLMOptions(config: CLIConfig): WikiGraphLLMOptions {\n try {\n return buildWikiGraphLLMOptions(config);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/planning\";\n\nimport type { GenerationPerformanceHint } from \"wiki-graph-sdk/planning\";\n\nexport type CLIGenerationPerformanceHint = Omit<\n GenerationPerformanceHint,\n \"configKey\" | \"configValue\"\n> & { readonly command: string };\n\nexport function toCLIGenerationPerformanceHints(\n hints: readonly GenerationPerformanceHint[],\n): readonly CLIGenerationPerformanceHint[] {\n return hints.map(({ configKey, configValue, ...hint }) => ({\n ...hint,\n command: `wg wikg://local/config/concurrent put ${configKey} ${configValue}`,\n }));\n}\n","import { clearLine, cursorTo, moveCursor } from \"readline\";\n\nimport type {\n WikiGraphProgressCallback,\n WikiGraphProgressEvent,\n} from \"wiki-graph-sdk\";\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","export {\n createStageLLM,\n DEFAULT_EXTRACTION_PROMPT,\n DEFAULT_KNOWLEDGE_GRAPH_RECALL_PROMPT,\n resolveExtractionPrompt,\n resolveKnowledgeGraphRecallPrompt,\n} from \"wiki-graph-sdk\";\n\nimport {\n loadRequiredStageConfig as loadSDKRequiredStageConfig,\n type WikiGraphRuntimeConfig,\n} from \"wiki-graph-sdk\";\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\n\nexport async function loadRequiredStageConfig(options: {\n readonly llmJSON?: string;\n}): Promise<WikiGraphRuntimeConfig> {\n try {\n return await loadSDKRequiredStageConfig(options);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n}\n","export * from \"wiki-graph-sdk/wikispine\";\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\";\nexport * from \"./wikispine.js\";\n","import type { CLIArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport {\n type CLIFormat,\n inferCLIFormatFromPath,\n isTextCLIFormat,\n} from \"../support/index.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 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 if (args.targetStage !== undefined && input.format === \"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 progressRenderer = createCLIProgressRenderer({\n enabled:\n input.format !== \"wikg\" &&\n output.standardStream !== \"stdout\" &&\n process.stderr.isTTY === true &&\n !args.verbose,\n });\n\n const temporaryOutput =\n output.path === undefined\n ? await createTemporaryOutputPath(\n \"wikigraph-cli-output-\",\n extensionForFormat(output.format),\n )\n : undefined;\n const outputPath = output.path ?? temporaryOutput?.filePath;\n if (outputPath === undefined)\n throw new Error(\"Internal error: missing output target.\");\n try {\n if (input.path === undefined && 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 try {\n await getWikiGraphSDK().conversions.convert({\n ...(args.digestDirPath === undefined\n ? {}\n : { digestDirectory: args.digestDirPath }),\n input:\n input.path === undefined\n ? {\n format: input.format,\n stream: readTextStreamFromStdin(),\n }\n : { format: input.format, path: input.path },\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n output: { format: output.format, path: outputPath },\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n ...(args.targetStage === undefined\n ? {}\n : { targetStage: args.targetStage }),\n ...(args.verbose ? { verbose: true } : {}),\n });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (isConfigurationErrorMessage(message)) {\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n }\n throw error;\n }\n if (temporaryOutput !== undefined) {\n await writeTextFileToStdout(temporaryOutput.filePath);\n }\n } finally {\n await progressRenderer.stop();\n if (temporaryOutput !== undefined) {\n await removeTemporaryDirectory(temporaryOutput.directoryPath);\n }\n }\n}\n\nfunction isConfigurationErrorMessage(message: string): boolean {\n return /(?:configuration|--llm|llm\\.|embeddings\\.|API key|provider|model)/iu.test(\n message,\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 { WikiGraphArchiveExistsError } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { createCLIProgressRenderer } from \"../../runtime/index.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\n\nexport async function createArchive(args: CLIArchiveArguments): Promise<void> {\n const progressRenderer = createCLIProgressRenderer({\n enabled: args.importPath !== undefined && process.stderr.isTTY === true,\n });\n try {\n const result = await getWikiGraphSDK().archives.create({\n ...(args.importPath === undefined ? {} : { importPath: args.importPath }),\n ...(progressRenderer.onProgress === undefined\n ? {}\n : { onProgress: progressRenderer.onProgress }),\n path: args.archivePath,\n replace: args.replace ?? false,\n });\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({ uri: result.locatedUri })\n : \"<archive>\\n\",\n );\n } catch (error) {\n if (!(error instanceof WikiGraphArchiveExistsError)) throw error;\n throw new Error(formatArchiveAlreadyExistsMessage(error.path), {\n cause: error,\n });\n } finally {\n await progressRenderer.stop();\n }\n}\n\nfunction formatArchiveAlreadyExistsMessage(archivePath: string): string {\n const uri = formatWikiGraphCommandUri(archivePath);\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","import type {\n BuildJobTarget,\n GenerationPerformanceHint,\n GenerationPlanningCost,\n WikiGraphArchiveChapterInspection,\n WikiGraphArchiveInspection,\n} from \"wiki-graph-sdk\";\nimport {\n createGenerationPerformanceHints,\n DEFAULT_GENERATION_JOB_CONCURRENCY,\n DEFAULT_GENERATION_REQUEST_CONCURRENCY,\n formatGenerationPlanningModel,\n loadWikiGraphRuntimeConfig,\n planGenerationTask,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport {\n formatGenerationPlanningDuration,\n toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport {\n formatCLIJSON,\n formatCliCommand,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\n\ninterface InspectImprovement {\n readonly kind: \"add-source\" | \"build\" | \"sync-index\";\n readonly missingChapters?: number;\n readonly missingWords?: number;\n readonly planning?: GenerationPlanningCost;\n readonly recommendation: string;\n readonly task?: BuildJobTarget;\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 InspectChapterReference {\n readonly chapterId: number;\n readonly locatedUri: string;\n readonly title: string | null;\n readonly uri: string;\n}\n\ninterface InspectReport {\n readonly archiveUri: string;\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 coverage: {\n readonly ftsIndexArtifact: InspectCoverage;\n readonly knowledgeGraph: InspectCoverage;\n readonly readingGraph: InspectCoverage;\n readonly sourceEmbeddingIndexArtifact: InspectCoverage;\n readonly summary: InspectCoverage;\n readonly summaryEmbeddingIndexArtifact: InspectCoverage;\n };\n readonly improvements: readonly InspectImprovement[];\n readonly localIndexCache: {\n readonly blockedBy?: \"missing-search-artifacts\";\n readonly current: boolean;\n readonly impact?: string;\n readonly resource?: string;\n readonly status: \"blocked\" | \"current\" | \"missing-or-outdated\";\n readonly syncAvailable: boolean;\n };\n readonly performanceHints: readonly GenerationPerformanceHint[];\n readonly query: { readonly ready: boolean };\n readonly retrievalGuidance: readonly string[];\n readonly scope: WikiGraphArchiveInspection[\"scope\"];\n readonly searchArtifacts: {\n readonly blockedChapters: readonly InspectChapterReference[];\n readonly ready: boolean;\n readonly resource?: string;\n readonly status: \"incomplete\" | \"ready\";\n };\n readonly summaryCoverageNote: string;\n readonly uri: string;\n}\n\ninterface CLIInspectImprovement extends InspectImprovement {\n readonly command: string;\n}\n\ninterface CLIInspectReport extends Omit<\n InspectReport,\n \"archiveUri\" | \"improvements\" | \"performanceHints\" | \"summaryCoverageNote\"\n> {\n readonly localIndexCache: InspectReport[\"localIndexCache\"] & {\n readonly fixCommand?: string;\n };\n readonly searchArtifacts: InspectReport[\"searchArtifacts\"] & {\n readonly fixCommand?: string;\n readonly helpCommand: string;\n };\n readonly improvements: readonly CLIInspectImprovement[];\n readonly performanceHints: readonly CLIGenerationPerformanceHint[];\n readonly help: {\n readonly readiness: string;\n readonly summaryCoverage: string;\n };\n}\n\nexport async function writeArchiveInspectReport(\n args: CLIArchiveArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const report = toCLIInspectReport(\n await createInspectReport(\n await archive.inspect({\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n }),\n ),\n );\n\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(report)\n : formatArchiveInspectText(report),\n );\n}\n\nasync function createInspectReport(\n inspection: WikiGraphArchiveInspection,\n): Promise<InspectReport> {\n const config = await loadWikiGraphRuntimeConfig();\n const chapters = inspection.chapters;\n const contentChapters = chapters.filter(\n ({ chapter }) => chapter.stage !== \"planned\",\n );\n const readingGraphCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.readingGraph.completed,\n );\n const knowledgeGraphCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.knowledgeGraph.completed,\n );\n const summaryCovered = contentChapters.filter(\n ({ capabilities }) => capabilities.readingSummary.completed,\n );\n const ftsArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.fts.current,\n );\n const sourceEmbeddingArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.sourceEmbedding.current,\n );\n const summaryEmbeddingArtifactCovered = contentChapters.filter(\n ({ indexes }) => indexes.summaryEmbedding.current,\n );\n const queryBlockedChapters = contentChapters.filter(\n (chapter) =>\n !ftsArtifactCovered.includes(chapter) &&\n !sourceEmbeddingArtifactCovered.includes(chapter),\n );\n const queryReady = queryBlockedChapters.length === 0;\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 improvements = createInspectImprovements({\n concurrent,\n contentChapters,\n indexCacheCurrent: inspection.localIndexCache.current,\n knowledgeGraphCovered,\n planningModel: formatGenerationPlanningModel(config.llm),\n queryBlockedChapters,\n readingGraphCovered,\n summaryCovered,\n });\n const performanceHints = createGenerationPerformanceHints({\n chapters: Math.max(\n 0,\n ...improvements.map((improvement) => improvement.missingChapters ?? 0),\n ),\n concurrent,\n hasJobWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n hasRequestWork: improvements.some(\n (improvement) => improvement.planning !== undefined,\n ),\n });\n const sourceWords = sumWords(contentChapters);\n const indexCacheCurrent = inspection.localIndexCache.current;\n\n return {\n archiveUri: inspection.archiveUri,\n content: {\n chapters: {\n content: contentChapters.length,\n planned: chapters.length - contentChapters.length,\n total: chapters.length,\n },\n sourceWords,\n summaryWords: chapters.reduce(\n (total, chapter) => total + chapter.summaryWords,\n 0,\n ),\n },\n coverage: {\n ftsIndexArtifact: createInspectCoverage(\n ftsArtifactCovered,\n contentChapters,\n ),\n knowledgeGraph: createInspectCoverage(\n knowledgeGraphCovered,\n contentChapters,\n ),\n readingGraph: createInspectCoverage(readingGraphCovered, contentChapters),\n sourceEmbeddingIndexArtifact: createInspectCoverage(\n sourceEmbeddingArtifactCovered,\n contentChapters,\n ),\n summary: createInspectCoverage(summaryCovered, contentChapters),\n summaryEmbeddingIndexArtifact: createInspectCoverage(\n summaryEmbeddingArtifactCovered,\n contentChapters,\n ),\n },\n improvements,\n localIndexCache: {\n current: indexCacheCurrent,\n ...(!queryReady\n ? {\n blockedBy: \"missing-search-artifacts\" as const,\n impact:\n \"The cache cannot be built until every content chapter has a current FTS or source embedding artifact.\",\n }\n : indexCacheCurrent\n ? {}\n : {\n impact:\n \"The next archive query may need to sync index cache first.\",\n resource: \"local CPU/disk time only; no provider calls.\",\n }),\n status: !queryReady\n ? \"blocked\"\n : indexCacheCurrent\n ? \"current\"\n : \"missing-or-outdated\",\n syncAvailable: queryReady && !indexCacheCurrent,\n },\n performanceHints,\n query: { ready: queryReady },\n retrievalGuidance: formatRetrievalGuidance({\n contentChapters,\n indexCacheCurrent,\n knowledgeGraphCovered,\n queryReady,\n readingGraphCovered,\n sourceWords,\n }),\n scope: inspection.scope,\n searchArtifacts: {\n blockedChapters: queryBlockedChapters.map((item) =>\n createInspectChapterReference(inspection.archiveUri, item),\n ),\n ...(!queryReady\n ? { resource: \"local CPU/disk time only; no provider calls.\" }\n : {}),\n ready: queryReady,\n status: queryReady ? \"ready\" : \"incomplete\",\n },\n summaryCoverageNote:\n \"Summary coverage means a current summary artifact exists for the chapter; it does not guarantee that every source topic is represented in the summary text.\",\n uri: inspection.uri,\n };\n}\n\nfunction createInspectChapterReference(\n archiveUri: string,\n inspection: WikiGraphArchiveChapterInspection,\n): InspectChapterReference {\n return {\n chapterId: inspection.chapter.chapterId,\n locatedUri: `${archiveUri.replace(/\\/+$/u, \"\")}/${inspection.chapter.uri.replace(/^wikg:\\/\\//u, \"\")}`,\n title: inspection.chapter.title,\n uri: inspection.chapter.uri,\n };\n}\n\nfunction createInspectCoverage(\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\n): InspectCoverage {\n const coveredWords = sumWords(covered);\n const totalWords = sumWords(total);\n return {\n coveredChapters: covered.length,\n coveredWords,\n percent: formatPercent(coveredWords, totalWords),\n totalChapters: total.length,\n totalWords,\n };\n}\n\nfunction createInspectImprovements(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly contentChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly planningModel: string;\n readonly queryBlockedChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly readingGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly summaryCovered: readonly WikiGraphArchiveChapterInspection[];\n}): readonly InspectImprovement[] {\n if (input.contentChapters.length === 0) {\n return [\n {\n kind: \"add-source\",\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 ];\n }\n\n const improvements: InspectImprovement[] = [];\n if (input.queryBlockedChapters.length > 0) {\n improvements.push({\n kind: \"build\",\n missingChapters: input.queryBlockedChapters.length,\n missingWords: sumWords(input.queryBlockedChapters),\n recommendation:\n \"Build local FTS artifacts to make this scope queryable. This does not call a provider.\",\n task: \"index-fts\",\n title: \"Enable query with local FTS\",\n });\n } else if (!input.indexCacheCurrent) {\n improvements.push({\n kind: \"sync-index\",\n recommendation:\n \"Sync the index cache from chapter index artifacts so query starts without a lazy cache rebuild.\",\n title: \"Sync index cache\",\n });\n }\n\n improvements.push(\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.readingGraphCovered,\n planningModel: input.planningModel,\n task: \"reading-graph\",\n title: \"Complete Reading Graph coverage\",\n total: input.contentChapters,\n }),\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.knowledgeGraphCovered,\n planningModel: input.planningModel,\n task: \"knowledge-graph\",\n title: \"Complete Knowledge Graph coverage\",\n total: input.contentChapters,\n }),\n ...createGraphImprovement({\n concurrent: input.concurrent,\n covered: input.summaryCovered,\n planningModel: input.planningModel,\n task: \"reading-summary\",\n title: \"Complete Summary coverage\",\n total: input.contentChapters,\n }),\n );\n return improvements;\n}\n\nfunction createGraphImprovement(input: {\n readonly concurrent: { readonly job: number; readonly request: number };\n readonly covered: readonly WikiGraphArchiveChapterInspection[];\n readonly planningModel: string;\n readonly task: \"knowledge-graph\" | \"reading-graph\" | \"reading-summary\";\n readonly title: string;\n readonly total: readonly WikiGraphArchiveChapterInspection[];\n}): readonly InspectImprovement[] {\n const coveredIds = new Set(\n input.covered.map(({ chapter }) => chapter.chapterId),\n );\n const missing = input.total.filter(\n ({ chapter }) => !coveredIds.has(chapter.chapterId),\n );\n if (missing.length === 0) return [];\n const missingWords = sumWords(missing);\n return [\n {\n kind: \"build\",\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 task: input.task,\n title: input.title,\n },\n ];\n}\n\nfunction formatImprovementRecommendation(\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\n missingWords: number,\n): string {\n const totalWords = sumWords(total);\n const coveredWords = sumWords(covered);\n if (totalWords === 0) return \"No source content is available.\";\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 return \"Queue selected chapters first if only part of the scope matters.\";\n}\n\nfunction formatRetrievalGuidance(input: {\n readonly contentChapters: readonly WikiGraphArchiveChapterInspection[];\n readonly indexCacheCurrent: boolean;\n readonly knowledgeGraphCovered: readonly WikiGraphArchiveChapterInspection[];\n readonly queryReady: boolean;\n readonly readingGraphCovered: readonly WikiGraphArchiveChapterInspection[];\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 return [\n input.queryReady\n ? `Query: available; local index cache is ${input.indexCacheCurrent ? \"current\" : \"missing or outdated and can be synced from artifacts\"}.`\n : \"Query: unavailable until every content chapter has a current FTS or source embedding artifact.\",\n formatObjectSearchGuidance(\n \"Reading Graph object retrieval\",\n input.readingGraphCovered,\n input.contentChapters,\n ),\n formatObjectSearchGuidance(\n \"Entity/triple retrieval\",\n input.knowledgeGraphCovered,\n input.contentChapters,\n ),\n ];\n}\n\nfunction formatObjectSearchGuidance(\n label: string,\n covered: readonly WikiGraphArchiveChapterInspection[],\n total: readonly WikiGraphArchiveChapterInspection[],\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 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 return `${label}: covers ${coverage}; build missing graph coverage before relying on object retrieval.`;\n}\n\nfunction sumWords(\n chapters: readonly WikiGraphArchiveChapterInspection[],\n): number {\n return chapters.reduce((total, { chapter }) => total + chapter.words, 0);\n}\n\nfunction formatPercent(numerator: number, denominator: number): string {\n if (denominator === 0) return \"n/a\";\n const percent = (numerator / denominator) * 100;\n return `${Number.isInteger(percent) ? percent.toFixed(0) : percent.toFixed(1)}%`;\n}\n\nfunction toCLIInspectReport(report: InspectReport): CLIInspectReport {\n const { archiveUri, summaryCoverageNote, ...base } = report;\n return {\n ...base,\n localIndexCache: {\n ...report.localIndexCache,\n ...(report.localIndexCache.syncAvailable\n ? { fixCommand: formatCliCommand([`${archiveUri}/index`, \"sync\"]) }\n : {}),\n },\n searchArtifacts: {\n ...report.searchArtifacts,\n ...(report.searchArtifacts.ready\n ? {}\n : {\n fixCommand: formatBuildCommand(report.uri, \"index-fts\", false),\n }),\n helpCommand: \"wg help readiness\",\n },\n improvements: report.improvements.map((improvement) => ({\n ...improvement,\n command: formatImprovementCommand(improvement, archiveUri, report.uri),\n })),\n performanceHints: toCLIGenerationPerformanceHints(report.performanceHints),\n help: {\n readiness: \"wg help readiness\",\n summaryCoverage: summaryCoverageNote,\n },\n };\n}\n\nfunction formatImprovementCommand(\n improvement: InspectImprovement,\n archiveUri: string,\n scopeUri: string,\n): string {\n switch (improvement.kind) {\n case \"add-source\":\n return formatCliCommand([\n `${archiveUri}/chapter`,\n \"add\",\n \"--input\",\n \"source.txt\",\n ]);\n case \"sync-index\":\n return formatCliCommand([`${archiveUri}/index`, \"sync\"]);\n case \"build\":\n return formatBuildCommand(\n scopeUri,\n improvement.task!,\n improvement.planning !== undefined,\n );\n }\n}\n\nfunction formatBuildCommand(\n scopeUri: string,\n task: NonNullable<InspectImprovement[\"task\"]>,\n acceptCost: boolean,\n): string {\n return formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n scopeUri,\n \"--task\",\n task,\n ...(acceptCost ? [\"--accept-cost\"] : []),\n ]);\n}\n\nfunction formatArchiveInspectText(report: CLIInspectReport): string {\n return (\n [\n \"Archive Inspect\",\n `URI: ${report.uri}`,\n `Scope: ${report.scope.type === \"archive\" ? \"archive\" : report.uri}`,\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 \"Query Readiness\",\n `Status: ${report.query.ready ? \"available\" : \"unavailable\"}`,\n `Search artifacts: ${report.searchArtifacts.status}`,\n ...(report.searchArtifacts.ready\n ? []\n : [\n `Fix: ${report.searchArtifacts.fixCommand}`,\n `Resource: ${report.searchArtifacts.resource}`,\n `Help: ${report.searchArtifacts.helpCommand}`,\n ]),\n \"\",\n \"Index Cache\",\n `Status: ${report.localIndexCache.status === \"missing-or-outdated\" ? \"missing or outdated\" : report.localIndexCache.status}`,\n ...(report.localIndexCache.current\n ? []\n : [\n `Impact: ${report.localIndexCache.impact}`,\n ...(report.localIndexCache.fixCommand === undefined\n ? []\n : [`Fix: ${report.localIndexCache.fixCommand}`]),\n ...(report.localIndexCache.resource === undefined\n ? []\n : [`Resource: ${report.localIndexCache.resource}`]),\n ]),\n \"\",\n \"Coverage\",\n formatCoverageLine(\n \"FTS Index Artifact\",\n report.coverage.ftsIndexArtifact,\n ),\n formatCoverageLine(\n \"Source Embedding Index Artifact\",\n report.coverage.sourceEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\n \"Summary Embedding Index Artifact\",\n report.coverage.summaryEmbeddingIndexArtifact,\n ),\n formatCoverageLine(\"Reading Graph\", report.coverage.readingGraph),\n formatCoverageLine(\"Knowledge Graph\", report.coverage.knowledgeGraph),\n formatCoverageLine(\"Summary Artifact\", report.coverage.summary),\n `Summary note: ${report.help.summaryCoverage}`,\n ...(report.searchArtifacts.blockedChapters.length === 0\n ? []\n : [\n \"Query blockers: these chapters have neither FTS nor source embedding index artifacts:\",\n ...report.searchArtifacts.blockedChapters.map(\n (chapter) =>\n `- ${chapter.title === null ? \"[untitled]\" : chapter.title}: ${chapter.locatedUri}`,\n ),\n ]),\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\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 return `${label}: ${coverage.coveredChapters}/${coverage.totalChapters} chapters, ${coverage.coveredWords}/${coverage.totalWords} words, ${coverage.percent}`;\n}\n\nfunction formatInspectImprovement(\n improvement: CLIInspectImprovement,\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 CLIGenerationPerformanceHint[],\n): readonly string[] {\n if (hints.length === 0) return [];\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","import { getWikiGraphSDK } from \"../../../runtime/context.js\";\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 (context.continuationCursorIsDurable === true) return cursor ?? null;\n return await getWikiGraphSDK().continuations.create(context, cursor);\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?/gu, \"\\n\").split(\"\\n\");\n\n while (lines.length > 0 && lines[0]?.trim() === \"\") lines.shift();\n while (lines.length > 0 && lines.at(-1)?.trim() === \"\") lines.pop();\n\n const normalizedLines: string[] = [];\n for (const line of lines) {\n if (line.trim() === \"\" && normalizedLines.at(-1) === \"\") continue;\n normalizedLines.push(line.trim() === \"\" ? \"\" : line);\n }\n\n return normalizedLines.join(\"\\n\");\n}\n","import { type ArchiveEvidenceItem } from \"wiki-graph-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\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-sdk\";\nimport { CLI_PRIMARY_COMMAND } from \"../../../support/command.js\";\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://meta\";\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-sdk\";\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 \"digest\",\n \"mediaType\",\n \"name\",\n \"identifier\",\n \"locator\",\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 digest?: string;\n readonly evidence?: ArchiveOutputEvidencePreview;\n readonly label?: string;\n readonly identifier?: string;\n readonly libraryArchiveUri?: string;\n readonly locator?: Readonly<Record<string, unknown>>;\n readonly mediaType?: string;\n readonly name?: 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 libraryQuery?: \"archive-members\" | \"objects\";\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n}\n\nexport interface ArchiveOutputWarning {\n readonly message: string;\n readonly type: \"skip-unindexed\";\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?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\n readonly continuationCursorIsDurable?: boolean;\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 queryMode?: \"embedding\" | \"fts\" | \"hybrid\";\n readonly role?: CLIArchiveArguments[\"role\"];\n readonly skipUnindexed?: boolean;\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 \"../../../support/index.js\";\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-sdk\";\n\nimport { createOutputContinuationCursor } from \"./cursor.js\";\nimport type {\n ArchiveOutputBacklinks,\n ArchiveOutputContext,\n ArchiveOutputEvidencePreview,\n ArchiveOutputObject,\n ArchiveOutputResultPage,\n ArchiveOutputSource,\n ArchiveOutputWarning,\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 warnings: readonly ArchiveOutputWarning[] = [],\n): {\n readonly limit: number;\n readonly nextCursor: string | null;\n readonly objects: readonly ArchiveOutputObject[];\n readonly warnings?: readonly ArchiveOutputWarning[];\n} {\n return {\n limit,\n nextCursor,\n objects,\n ...(warnings.length === 0 ? {} : { warnings }),\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 === \"archive-title\") {\n return {\n ...librarySource,\n title: hit.title,\n type: \"archive-title\",\n uri,\n };\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 text: hit.snippet,\n title: hit.title,\n type: \"meta\",\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 \"artifact\": {\n const { id: _id, type: _type, ...rest } = page;\n\n return { ...librarySource, ...rest, uri: page.id };\n }\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 \"archive-title\":\n return {\n ...librarySource,\n title: page.title,\n type: \"archive-title\",\n uri: toWikiGraphUri(page.id),\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 type { ArchiveFindEvidencePreview, ArchivePage } from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n} 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.label} ${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 \"artifact\":\n return formatPlainObject(await createPageObject(anchor, context));\n case \"archive-title\":\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 { ArchiveOutputContext } from \"../object/types.js\";\n\nexport function createOutputWarnings(\n context: ArchiveOutputContext,\n): readonly { readonly message: string; readonly type: \"skip-unindexed\" }[] {\n if (context.skipUnindexed !== true) {\n return [];\n }\n\n return [\n {\n message:\n \"--skip-unindexed was used; this command searched only chapters that already have a current FTS or source embedding index artifact. Run `inspect` to check index coverage before treating missing results as missing knowledge.\",\n type: \"skip-unindexed\",\n },\n ];\n}\n\nexport function formatOutputWarnings(\n warnings: readonly { readonly message: string }[],\n): string {\n if (warnings.length === 0) {\n return \"\";\n }\n\n return `${warnings.map((warning) => `Warning: ${warning.message}`).join(\"\\n\")}\\n\\n`;\n}\n\nexport function createWarningJSONLObject(warning: {\n readonly message: string;\n readonly type: \"skip-unindexed\";\n}): {\n readonly message: string;\n readonly type: \"warning\";\n readonly warning: \"skip-unindexed\";\n} {\n return {\n message: warning.message,\n type: \"warning\",\n warning: warning.type,\n };\n}\n","import type { ArchiveEvidence } from \"wiki-graph-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 context: ArchiveOutputContext,\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, context, format, {\n emitWarnings: cursor === initialCursor,\n });\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(\n mergeEvidencePages(pages),\n context,\n format,\n );\n}\n\nexport async function writeEvidenceWithoutContinuation(\n evidence: ArchiveEvidence,\n context: ArchiveOutputContext,\n format: ResultFormat,\n options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = evidence.items.map(createSourceObject);\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, evidence.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (evidence.items.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No evidence.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 emitWarnings: cursor === undefined,\n });\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 options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createFindObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${formatNoMatches(result)}`,\n );\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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\";\nimport {\n createOutputWarnings,\n createWarningJSONLObject,\n formatOutputWarnings,\n} from \"./warnings.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 const warnings = createOutputWarnings(context);\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, nextCursor, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([\n ...warnings.map(createWarningJSONLObject),\n ...objects,\n createPageCursorObject(nextCursor),\n ]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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 emitWarnings: cursor === initialCursor,\n });\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 options: { readonly emitWarnings?: boolean } = {},\n): Promise<void> {\n const objects = await Promise.all(\n result.items.map(async (item) => await createListObject(item, context)),\n );\n const warnings =\n (options.emitWarnings ?? true) ? createOutputWarnings(context) : [];\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON(\n createObjectResultPage(objects, null, result.limit, warnings),\n ),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...warnings.map(createWarningJSONLObject), ...objects]);\n return;\n }\n\n if (objects.length === 0) {\n await writeTextToStdout(`${formatOutputWarnings(warnings)}No objects.\\n`);\n return;\n }\n\n await writeTextToStdout(\n `${formatOutputWarnings(warnings)}${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-sdk\";\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-sdk\";\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 \"artifact\":\n await writeTextToStdout(\n `${formatPlainObject(await createPageObject(page, context))}\\n`,\n );\n return;\n case \"archive-title\":\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","import type {\n ArchiveSourceLocator,\n ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport { formatCLIJSON, writeTextToStdout } from \"../../../support/index.js\";\nimport { createOutputContinuationCursor } from \"../object/cursor.js\";\nimport { createPageCursorObject } from \"../object/page-cursor.js\";\nimport type { ArchiveOutputContext, ResultFormat } from \"../object/types.js\";\nimport { formatNextCursor } from \"../text/index.js\";\nimport { writeJSONL } from \"./jsonl.js\";\n\nexport async function writeSourceLocators(\n result: ArchiveSourceLocatorResult,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const nextCursor = await createOutputContinuationCursor(\n context,\n result.nextCursor,\n );\n\n if (format === \"json\") {\n await writeTextToStdout(\n formatCLIJSON({\n limit: result.limit,\n nextCursor,\n objects: result.items,\n }),\n );\n return;\n }\n if (format === \"jsonl\") {\n await writeJSONL([...result.items, createPageCursorObject(nextCursor)]);\n return;\n }\n\n if (result.items.length === 0) {\n await writeTextToStdout(\"No source locators.\\n\");\n return;\n }\n\n await writeTextToStdout(\n `${result.items.map(formatSourceLocator).join(\"\\n\")}${formatNextCursor(nextCursor)}\\n`,\n );\n}\n\nexport async function writeAllSourceLocators(\n readPage: (cursor: string | undefined) => Promise<ArchiveSourceLocatorResult>,\n initialCursor: string | undefined,\n context: ArchiveOutputContext,\n format: ResultFormat,\n): Promise<void> {\n const pages: ArchiveSourceLocatorResult[] = [];\n let cursor = initialCursor;\n\n while (true) {\n const page = await readPage(cursor);\n if (format === \"jsonl\") {\n await writeJSONL(page.items);\n } else {\n pages.push(page);\n }\n if (page.nextCursor === null) break;\n cursor = page.nextCursor;\n }\n\n if (format === \"jsonl\") return;\n\n const items = pages.flatMap((page) => page.items);\n await writeSourceLocators(\n { items, limit: items.length, nextCursor: null },\n context,\n format,\n );\n}\n\nfunction formatSourceLocator(locator: ArchiveSourceLocator): string {\n return `${locator.range[0]}..${locator.range[1]} -> ${locator.uri}`;\n}\n","export * from \"./evidence.js\";\nexport * from \"./find.js\";\nexport * from \"./list.js\";\nexport * from \"./pack.js\";\nexport * from \"./page.js\";\nexport * from \"./source-locators.js\";\n","export * from \"./write/index.js\";\nexport type {\n ArchiveOutputContext,\n ArchiveOutputObject,\n ResultFormat,\n} from \"./object/types.js\";\n","import type { ArchiveCollectionResult, QueryIndexScope } from \"wiki-graph-sdk\";\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?:\n | \"collection\"\n | \"evidence\"\n | \"related\"\n | \"search\"\n | \"source-locators\";\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 { parseWikiGraphLibraryUri, type QueryIndexScope } from \"wiki-graph-sdk\";\nimport { parseLocatedWikiGraphUri } from \"../../../support/index.js\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nexport function resolveArchiveCommandRuntimeArguments(\n args: CLIArchiveArguments,\n): CLIArchiveArguments {\n if (args.action === \"create\" || args.action === \"export\") {\n return { ...args, archivePath: getArchivePath(args.archivePath) };\n }\n return args;\n}\n\nexport function getArchivePath(uri: string): string {\n if (!uri.includes(\"://\")) return uri;\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" ||\n libraryTarget?.kind === \"archive-collection\"\n ) {\n return uri;\n }\n\n const archivePath = parseLocatedWikiGraphUri(uri).archivePath;\n if (archivePath === undefined) {\n throw new Error(`Missing archive locator in URI: ${uri}`);\n }\n return archivePath;\n}\n\nexport function getArchiveIndexScope(uri: string): QueryIndexScope {\n const libraryTarget = parseWikiGraphLibraryUri(uri);\n if (\n libraryTarget?.kind === \"scope\" ||\n libraryTarget?.kind === \"archive-collection\"\n ) {\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 = parseLocatedWikiGraphUri(uri);\n\n return parsed.objectUri ?? \"wikg://\";\n}\n\nexport function isArchiveRootGet(args: CLIArchiveArguments): boolean {\n return (\n args.objectId !== undefined &&\n parseLocatedWikiGraphUri(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 parseLocatedWikiGraphUri,\n type ArchiveCollectionOptions,\n type ArchiveCollectionResult,\n type ArchiveFindOptions,\n type ArchiveFindResult,\n} from \"wiki-graph-sdk\";\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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\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 | \"source-locators\";\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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\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 type { ContinuationCursor } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../../args/index.js\";\nimport { parseCLIArchiveTarget } from \"../../../support/archive-target.js\";\nimport { getWikiGraphSDK } from \"../../../runtime/context.js\";\nimport {\n writeEvidence,\n writeFindHits,\n writeList,\n writeSourceLocators,\n} from \"../../archive-output/index.js\";\nimport { createCollectionFindResult } from \"./options.js\";\nimport type { ArchiveOutputContext } from \"./types.js\";\n\nexport async function runNextArchivePage(\n args: CLIArchiveArguments,\n): Promise<void> {\n const cursorId = args.cursor ?? args.archivePath;\n const page = await getWikiGraphSDK().continuations.next({\n ...(args.cursor === undefined\n ? {}\n : { archive: parseCLIArchiveTarget(args.archivePath) }),\n cursor: cursorId,\n ...(args.format === undefined ? {} : { format: args.format }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n });\n const format = args.format ?? page.format;\n const context = {\n ...createCursorOutputContext(page.cursor, format, page.limit),\n continuationCursorIsDurable: true,\n };\n\n switch (page.kind) {\n case \"source-locators\":\n await writeSourceLocators(page.result, context, format);\n return;\n case \"collection\":\n await writeFindHits(\n createCollectionFindResult(page.result),\n context,\n format,\n );\n return;\n case \"search\":\n await writeFindHits(page.result, context, format);\n return;\n case \"evidence\":\n await writeEvidence(page.result, context, format);\n return;\n case \"related\":\n await writeList(page.result, context, format);\n return;\n }\n}\n\nfunction createCursorOutputContext(\n cursor: ContinuationCursor,\n format: \"json\" | \"jsonl\" | \"text\",\n limit: number,\n): ArchiveOutputContext {\n return {\n archiveKey: cursor.archiveKey,\n archivePath: cursor.archivePath,\n continuationKind: cursor.kind,\n format,\n indexScope: cursor.indexScope,\n limit,\n ...((cursor.kind === \"collection\" || cursor.kind === \"search\") &&\n cursor.libraryQuery !== undefined\n ? { libraryQuery: cursor.libraryQuery }\n : {}),\n types:\n cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.types\n : null,\n ...(cursor.kind === \"collection\" || cursor.kind === \"search\"\n ? cursor.backlinks === undefined\n ? {}\n : { backlinks: cursor.backlinks }\n : {}),\n ...(cursor.kind === \"collection\"\n ? {\n ...(cursor.chapters === null ? {} : { chapters: cursor.chapters }),\n ...(cursor.ids === null ? {} : { ids: cursor.ids }),\n order: cursor.order,\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"search\"\n ? {\n ...(cursor.chapters == null ? {} : { chapters: cursor.chapters }),\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n ...(cursor.triplePattern === undefined\n ? {}\n : { triplePattern: cursor.triplePattern }),\n }\n : {}),\n ...(cursor.kind === \"evidence\" || cursor.kind === \"related\"\n ? {\n order: cursor.order,\n ...(cursor.query === undefined ? {} : { query: cursor.query }),\n ...(cursor.skipUnindexed === undefined\n ? {}\n : { skipUnindexed: cursor.skipUnindexed }),\n targetUri: cursor.targetUri,\n }\n : {}),\n ...(cursor.kind === \"related\" && cursor.role !== undefined\n ? { role: cursor.role }\n : {}),\n ...((cursor.kind === \"search\" ||\n cursor.kind === \"evidence\" ||\n cursor.kind === \"related\") &&\n cursor.queryMode !== undefined\n ? { queryMode: cursor.queryMode }\n : {}),\n ...(cursor.kind === \"source-locators\"\n ? { targetUri: cursor.targetUri }\n : {}),\n ...(\"evidenceLimit\" in cursor && cursor.evidenceLimit !== undefined\n ? { evidenceLimit: cursor.evidenceLimit }\n : {}),\n ...(\"sourceContext\" in cursor && cursor.sourceContext !== undefined\n ? { sourceContext: cursor.sourceContext }\n : {}),\n };\n}\n","import { formatLocatedWikiGraphUri } from \"wiki-graph-sdk\";\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 \"./next.js\";\nexport * from \"./options.js\";\nexport * from \"./root.js\";\nexport * from \"./types.js\";\nexport * from \"./uri.js\";\n","import {\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n isSourceLocatorScopeUri,\n type ArchiveFindOptions,\n type ArchiveRelatedResult,\n type ArchiveCollectionResult,\n type ArchiveSourceLocatorResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveArguments } from \"../../args/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { formatCliCommand } from \"../../support/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 writeAllSourceLocators,\n writeSourceLocators,\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 getObjectUri,\n getSingleObjectEvidenceLimit,\n isArchiveRootGet,\n resolveArchiveCommandRuntimeArguments,\n runNextArchivePage,\n writeArchiveRoot,\n} from \"./run/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.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 === \"related\" ||\n args.action === \"evidence\" ||\n args.action === \"pack\" ||\n args.action === \"search\" ||\n args.action === \"list\")) ||\n (libraryTarget?.kind === \"archive-collection\" && args.action === \"search\")\n ) {\n await runLibraryIndexArchiveCommand(args, libraryTarget);\n return;\n }\n\n args = 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 writeArchiveInspectReport(args);\n return;\n case \"search\":\n await runArchiveSearch(args);\n return;\n case \"list\":\n await runArchiveList(args);\n return;\n case \"get\":\n if (isArchiveRootGet(args)) {\n await writeArchiveRoot(args);\n return;\n }\n await runArchiveGet(args);\n return;\n case \"related\":\n await runArchiveRelated(args);\n return;\n case \"evidence\":\n await runArchiveEvidence(args);\n return;\n case \"next\":\n await runNextArchivePage(args);\n return;\n case \"pack\":\n await writePack(\n await (\n await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n )\n ).pack(getObjectUri(args.objectId!), args.budget ?? 5000),\n createArchiveOutputContext(args),\n args.format ?? \"text\",\n );\n return;\n }\n}\n\nasync function runArchiveList(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const objectUri = getObjectUri(args.archivePath);\n if (isSourceLocatorScopeUri(objectUri)) {\n const context = createArchiveOutputContext(args, {\n continuationKind: \"source-locators\",\n targetUri: objectUri,\n });\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveSourceLocatorResult> =>\n (\n await archive.list({\n ...(cursor === undefined ? {} : { cursor }),\n ...(args.limit === undefined ? {} : { limit: args.limit }),\n })\n ).result as ArchiveSourceLocatorResult;\n if (args.all === true) {\n await writeAllSourceLocators(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeSourceLocators(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n if (args.query !== undefined) {\n await archive.ensureSearchIndex({\n ...(scopedArgs.chapters === undefined\n ? {}\n : { chapters: scopedArgs.chapters }),\n });\n }\n const context = createArchiveOutputContext(scopedArgs, {\n continuationKind: \"collection\",\n });\n const readPage = async (\n cursor: string | undefined,\n limit = args.limit,\n ): Promise<ArchiveCollectionResult> =>\n (\n await archive.list({\n ...createCollectionOptions(scopedArgs),\n ...(cursor === undefined ? {} : { cursor }),\n ...(limit === undefined ? {} : { limit }),\n })\n ).result as ArchiveCollectionResult;\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) => createCollectionFindResult(await readPage(cursor)),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n await readPage(undefined, ALL_COLLECTION_OUTPUT_LIMIT),\n ),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(await readPage(args.cursor)),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveSearch(args: CLIArchiveArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope({\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n });\n const scopedArgs =\n scope === undefined ? args : { ...args, chapters: scope.chapterIds };\n const context = createArchiveOutputContext(scopedArgs);\n const findOptions = createSearchFindOptions(scopedArgs);\n const { archiveKey: _archiveKey, chapters, ...options } = findOptions;\n const readPage = async (cursor: string | undefined) =>\n (\n await archive.search(scopedArgs.query!, {\n ...options,\n ...(chapters === undefined ? {} : { chapters }),\n ...(cursor === undefined ? {} : { cursor }),\n })\n ).result;\n try {\n if (args.all === true) {\n await writeAllFindHits(readPage, context, args.format ?? \"text\");\n return;\n }\n await writeFindHits(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n } catch (error) {\n if (isArchiveQueryNotReadyError(error)) {\n throw createArchiveQueryNotReadyError(args, error.message);\n }\n throw error;\n }\n}\n\nasync function runArchiveGet(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n const context =\n evidenceLimit === undefined\n ? createArchiveOutputContext(args)\n : createArchiveOutputContext({ ...args, evidenceLimit });\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writePage(\n await archive.page(objectUri, {\n ...(args.backlinks === undefined ? {} : { backlinks: args.backlinks }),\n ...(evidenceLimit === undefined ? {} : { evidenceLimit }),\n ...(args.reverse === true ? { order: \"doc-desc\" } : {}),\n ...createOptionalSourceContext(args),\n }),\n context,\n args.format ?? \"text\",\n );\n}\n\nasync function runArchiveRelated(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"related\",\n targetUri: objectUri,\n },\n );\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n (\n await archive.related(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.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n })\n ).result;\n if (args.all === true) {\n await writeAllRelatedItems(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeList(await readPage(args.cursor), context, args.format ?? \"text\");\n}\n\nasync function runArchiveEvidence(args: CLIArchiveArguments): Promise<void> {\n const objectUri = getObjectUri(args.objectId!);\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n const scope = await archive.resolveScope();\n const context = createArchiveOutputContext(\n scope === undefined ? args : { ...args, chapters: scope.chapterIds },\n {\n continuationKind: \"evidence\",\n targetUri: objectUri,\n },\n );\n const readPage = async (cursor: string | undefined) =>\n (\n await archive.evidence(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 ...(args.queryMode === undefined ? {} : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n })\n ).result;\n if (args.all === true) {\n await writeAllEvidence(\n readPage,\n args.cursor,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n await writeEvidence(\n await readPage(args.cursor),\n context,\n args.format ?? \"text\",\n );\n}\n\nfunction createArchiveQueryNotReadyError(\n args: Pick<CLIArchiveArguments, \"archivePath\">,\n reason: string,\n): Error {\n const buildCommand = formatCliCommand([\n \"wikg://local/job\",\n \"add\",\n \"--input\",\n args.archivePath,\n \"--task\",\n \"index-fts\",\n ]);\n\n return new Error(\n [\n reason,\n \"\",\n \"Build local FTS artifacts without provider calls:\",\n ` ${buildCommand}`,\n \"\",\n \"Help:\",\n \" wg help readiness\",\n ].join(\"\\n\"),\n );\n}\n\nfunction isArchiveQueryNotReadyError(error: unknown): error is Error {\n return error instanceof Error && error.name === \"ArchiveQueryNotReadyError\";\n}\n\nasync function runLibraryIndexArchiveCommand(\n args: CLIArchiveArguments,\n target: NonNullable<ReturnType<typeof parseWikiGraphLibraryUri>>,\n): Promise<void> {\n const libraries = getWikiGraphSDK().libraries;\n const library = await libraries.get(\n formatWikiGraphLibraryUri(target.publicId),\n );\n const isArchiveMemberCollection = target.kind === \"archive-collection\";\n const isLibraryRootCollection =\n !isArchiveMemberCollection &&\n target.objectUri === undefined &&\n args.objectId === undefined;\n const objectUri = isLibraryRootCollection\n ? undefined\n : isArchiveMemberCollection\n ? undefined\n : getObjectUri(args.objectId ?? args.archivePath);\n const context = {\n ...createArchiveOutputContext(args),\n archiveKey: args.archivePath,\n archivePath: args.archivePath,\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n libraryQuery: isArchiveMemberCollection\n ? (\"archive-members\" as const)\n : (\"objects\" as const),\n };\n\n switch (args.action) {\n case \"search\": {\n const findOptions = createSearchFindOptions(args);\n if (objectUri === undefined) {\n const search = async (cursor: string | undefined) =>\n (\n await (isArchiveMemberCollection\n ? libraries.searchArchiveMembers(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n })\n : libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n }))\n ).result;\n if (args.all === true) {\n await writeAllFindHits(search, context, args.format ?? \"text\");\n return;\n }\n await writeFindHits(\n await search(args.cursor),\n context,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n await writeAllFindHits(\n async (cursor) =>\n (\n await libraries.search(target, args.query!, {\n ...findOptions,\n ...(cursor === undefined ? {} : { cursor }),\n })\n ).result,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n (await libraries.search(target, args.query!, findOptions)).result,\n context,\n args.format ?? \"text\",\n );\n return;\n }\n case \"list\": {\n const listContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n if (objectUri === undefined) {\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n (\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n })\n ).result,\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n (\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n })\n ).result,\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n await writeFindHits(\n createCollectionFindResult(\n (await libraries.objects(target, createCollectionOptions(args)))\n .result,\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n if (args.all === true) {\n if (args.limit !== undefined) {\n await writeAllFindHits(\n async (cursor) =>\n createCollectionFindResult(\n (\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n ...(cursor === undefined ? {} : { cursor }),\n })\n ).result,\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHitsWithoutContinuation(\n createCollectionFindResult(\n (\n await libraries.objects(target, {\n ...createCollectionOptions(args),\n limit: ALL_COLLECTION_OUTPUT_LIMIT,\n })\n ).result,\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeFindHits(\n createCollectionFindResult(\n unwrapPageResult(\n await libraries.objects(target, createCollectionOptions(args)),\n ),\n ),\n listContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"get\": {\n if (objectUri === undefined) {\n const getContext = {\n ...context,\n continuationKind: \"collection\" as const,\n };\n await writeFindHits(\n createCollectionFindResult(\n (await libraries.objects(target, createCollectionOptions(args)))\n .result,\n ),\n getContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n const evidenceLimit = getSingleObjectEvidenceLimit(args, objectUri);\n await writePage(\n await libraries.page(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 concreteObjectUri = requireLibraryObjectUri(\"related\", objectUri);\n const relatedContext = {\n ...context,\n continuationKind: \"related\" as const,\n targetUri: concreteObjectUri,\n };\n const readPage = async (\n cursor: string | undefined,\n ): Promise<ArchiveRelatedResult> =>\n (\n await libraries.related(target, concreteObjectUri, {\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.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.role === undefined ? {} : { role: args.role }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n })\n ).result;\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 concreteObjectUri = requireLibraryObjectUri(\"evidence\", objectUri);\n const evidenceContext = {\n ...context,\n continuationKind: \"evidence\" as const,\n targetUri: concreteObjectUri,\n };\n\n if (args.all === true) {\n await writeAllEvidence(\n async (cursor) =>\n (\n await libraries.evidence(target, concreteObjectUri, {\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 ...(args.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n })\n ).result,\n args.cursor,\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n\n await writeEvidence(\n (\n await libraries.evidence(target, concreteObjectUri, {\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 ...(args.queryMode === undefined\n ? {}\n : { queryMode: args.queryMode }),\n ...(args.skipUnindexed === true ? { skipUnindexed: true } : {}),\n ...createOptionalSourceContext(args),\n })\n ).result,\n evidenceContext,\n args.format ?? \"text\",\n );\n return;\n }\n case \"pack\": {\n const concreteObjectUri = requireLibraryObjectUri(\"pack\", objectUri);\n await writePack(\n await libraries.pack(target, concreteObjectUri, args.budget ?? 5000),\n context,\n args.format ?? \"text\",\n );\n return;\n }\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\nfunction unwrapPageResult<T extends object>(\n value: T | { readonly result: T },\n): T {\n return \"result\" in value ? value.result : value;\n}\n\nfunction createSearchFindOptions(\n args: CLIArchiveArguments,\n): ArchiveFindOptions {\n return createFindOptions(args);\n}\n\nfunction requireLibraryObjectUri(\n action: \"related\" | \"evidence\" | \"pack\",\n objectUri: string | undefined,\n): string {\n if (objectUri === undefined) {\n throw new Error(\n `The library \\`${action}\\` predicate requires a concrete library object URI.`,\n );\n }\n\n return objectUri;\n}\n","import type { CLIArchiveTitleArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport { parseCLIArchiveTarget } from \"../support/archive-target.js\";\nimport { writeTextToStdout } from \"../support/index.js\";\n\nexport async function runArchiveTitleCommand(\n args: CLIArchiveTitleArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n\n if (args.action === \"clear\") {\n await archive.setArchiveTitle(null);\n await writeTextToStdout(\"Cleared archive title.\\n\");\n return;\n }\n\n const title = args.title;\n if (title === undefined) {\n throw new Error(\"Missing archive title.\");\n }\n const stored = await archive.setArchiveTitle(title);\n await writeTextToStdout(`${stored}\\n`);\n}\n","export * from \"wiki-graph-sdk/entry-context\";\n","import { spawn } from \"child_process\";\nimport { existsSync } from \"fs\";\nimport { join, resolve } from \"path\";\n\nimport {\n getCLICwd,\n getCLIDevProjectRoot,\n getCLIEnv,\n getCLIEnvPolicy,\n getCLIStateDir,\n} from \"./context.js\";\nimport { DANGEROUS_RUNTIME_ENV_NAMES } from \"./entry-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: createInternalChildEnvironment(),\n stdio: options.detached === true ? \"ignore\" : [\"ignore\", \"pipe\", \"pipe\"],\n });\n}\n\nexport function createInternalChildEnvironmentForTesting(): NodeJS.ProcessEnv {\n return createInternalChildEnvironment();\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 \"--wikigraph-env-policy\",\n getCLIEnvPolicy(),\n \"--wikigraph-dev-project-root\",\n devProjectRoot,\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 createInternalChildEnvironment(): NodeJS.ProcessEnv {\n const environment = { ...getCLIEnv() };\n\n for (const name of DANGEROUS_RUNTIME_ENV_NAMES) {\n delete environment[name];\n }\n\n return environment;\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 { BuildJobTarget, ChapterEntry } from \"wiki-graph-sdk\";\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 toCLIGenerationPerformanceHints,\n type CLIGenerationPerformanceHint,\n type GenerationConcurrency,\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 CLIGenerationPerformanceHint[];\n readonly planning: GenerationPlanningCost;\n readonly steps: readonly QueueAddEstimateStep[];\n readonly target: BuildJobTarget;\n readonly usesProvider: boolean;\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 const usesProvider = steps.some((step) => step.task !== \"index-fts\");\n\n return {\n chapters: input.chapters.length,\n concurrent,\n includesPrerequisites: steps.some((step) => step.prerequisite),\n performanceHints: toCLIGenerationPerformanceHints(\n createGenerationPerformanceHints({\n chapters: workChapters,\n concurrent,\n hasJobWork: steps.length > 0,\n hasRequestWork: usesProvider,\n }),\n ),\n planning: sumGenerationPlanningCosts(model, steps),\n steps,\n target: input.target,\n usesProvider,\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 \"index-fts\":\n case \"index-embedding-source\":\n case \"index-embedding-summary\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: false,\n task: input.target,\n }),\n ].filter((step) => step.chapters > 0);\n case \"knowledge-graph\":\n return [\n createQueueAddEstimateStep({\n chapters: input.chapters,\n concurrent: input.concurrent,\n model: input.model,\n prerequisite: true,\n task: \"index-fts\",\n }),\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: true,\n task: \"index-fts\",\n }),\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.usesProvider\n ? estimate.concurrent\n : { job: estimate.concurrent.job },\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 ...(estimate.usesProvider ? { 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 ...(estimate.usesProvider ? [` 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}${estimate.usesProvider ? ` request=${estimate.concurrent.request}` : \"\"}`,\n ...formatQueuePerformanceHintLines(estimate.performanceHints),\n ];\n}\n\nfunction formatQueuePerformanceHintLines(\n hints: readonly CLIGenerationPerformanceHint[],\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 {\n formatLocatedChapterUri,\n type WikiGraphJobSnapshot as BuildJob,\n type ChapterEntry,\n type WikiGraphJobChapterReference,\n} from \"wiki-graph-sdk\";\n\nimport {\n formatCLIJSON,\n formatCliCommand,\n formatWikiGraphCommandUri,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport {\n formatQueueAddEstimateJSON,\n formatQueueAddEstimateLines,\n type QueueAddEstimate,\n} from \"./estimate.js\";\nimport {\n getCLIEnvValue,\n getCLIStateDir,\n getWikiGraphSDK,\n} from \"../../runtime/context.js\";\nimport { homedir } from \"os\";\nimport { join } from \"path\";\n\ntype JobChapterReference = WikiGraphJobChapterReference;\n\nexport async function writeJobList(\n jobs: readonly BuildJob[],\n options: { readonly json: boolean },\n): Promise<void> {\n const chapters = await resolveJobChapters(jobs);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n items: jobs.map((job) => formatJobJSON(job, chapters.get(job.jobId))),\n }),\n );\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)} ${formatJobChapterListLabel(job, chapters.get(job.jobId))}`,\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`;\n}\n\nexport async function writeJobStatus(\n job: BuildJob,\n options: { readonly json: boolean },\n): Promise<void> {\n const chapter = await resolveJobChapter(job);\n if (options.json) {\n await writeTextToStdout(formatCLIJSON(formatJobJSON(job, chapter)));\n return;\n }\n\n await writeTextToStdout(\n [\n `Job: ${job.jobId}`,\n `State: ${job.state}`,\n `Archive: ${requireJobResourcePath(job, \"archive\", \"archivePath\")}`,\n `Chapter: ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n `Target: ${job.target}`,\n `Step: ${job.currentStep ?? \"-\"}`,\n `Workspace: ${getJobResourcePath(job, \"workspace\", \"workspacePath\") ?? \"-\"}`,\n `Cache: ${getJobResourcePath(job, \"cache\", \"cachePath\") ?? \"-\"}`,\n `Logs: ${getJobResourcePath(job, \"log\", \"logPath\") ?? \"-\"}`,\n ...(job.errorJSON === undefined ? [] : [`Error: ${job.errorJSON}`]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatJobJSON(\n job: BuildJob,\n chapter?: JobChapterReference,\n): Record<string, unknown> {\n return {\n archiveKey: job.archiveKey,\n archivePath: getJobResourcePath(job, \"archive\", \"archivePath\"),\n cachePath: getJobResourcePath(job, \"cache\", \"cachePath\"),\n chapterId: job.chapterId,\n ...(chapter === undefined\n ? {}\n : {\n chapter: {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n },\n }),\n createdAt: job.createdAt,\n ...(job.currentStep === undefined ? {} : { currentStep: job.currentStep }),\n ...(job.errorJSON === undefined ? {} : { errorJSON: job.errorJSON }),\n eventsPath: getJobResourcePath(job, \"events\", \"eventsPath\"),\n ...(job.finishedAt === undefined ? {} : { finishedAt: job.finishedAt }),\n jobId: job.jobId,\n logPath: getJobResourcePath(job, \"log\", \"logPath\"),\n ...(job.llmJSON === undefined\n ? {}\n : { llm: formatJobLLMJSON(job.llmJSON) }),\n ...(job.ownerId === undefined ? {} : { ownerId: job.ownerId }),\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: getJobResourcePath(job, \"workspace\", \"workspacePath\"),\n };\n}\n\nexport function formatJobQueuedNotice(job: BuildJob): string | undefined {\n if (job.state !== \"queued\") {\n return undefined;\n }\n\n return \"Job is queued; the requested artifact or generated data is not ready until the job succeeds.\";\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 chapter?: ChapterEntry;\n readonly json: boolean;\n readonly watch?: boolean;\n } = { json: false },\n): Promise<void> {\n const chapter =\n options.chapter === undefined\n ? await resolveJobChapter(job)\n : createJobChapterReference(job, options.chapter);\n if (options.json) {\n await writeTextToStdout(\n formatCLIJSON({\n ...formatJobJSON(job, chapter),\n ...(formatJobQueuedNotice(job) === undefined\n ? {}\n : { notice: formatJobQueuedNotice(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 ${formatJobChapterLabel(job, chapter)}`,\n ...(chapter === undefined ? [] : [`Chapter URI: ${chapter.locatedUri}`]),\n ...(formatJobQueuedNotice(job) === undefined\n ? []\n : [formatJobQueuedNotice(job)!]),\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 archivePath: string;\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 chapter: ChapterEntry;\n readonly reason: string;\n }[];\n}): Promise<void> {\n const jobsCommand = formatCliCommand([\"wikg://local/job\", \"--json\"]);\n const verifyCommand = formatCliCommand([\n formatWikiGraphCommandUri(input.archivePath),\n \"inspect\",\n ]);\n\n if (input.json) {\n await writeTextToStdout(\n formatCLIJSON({\n created: input.created.map((item) =>\n formatJobJSON(\n item.job,\n createJobChapterReference(item.job, item.chapter),\n ),\n ),\n ...(input.estimate === undefined\n ? {}\n : { estimate: formatQueueAddEstimateJSON(input.estimate) }),\n ...(input.created.length === 0 ? {} : { jobsCommand, verifyCommand }),\n skipped: input.skipped.map((item) => ({\n chapterId: item.chapter.chapterId,\n chapter: formatChapterJSON(\n createJobChapterReferenceFromPath(input.archivePath, item.chapter),\n ),\n reason: item.reason,\n })),\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 ${formatChapterLabel(job.chapter)}`,\n `Chapter URI: ${createJobChapterReference(job.job, job.chapter).locatedUri}`,\n );\n }\n for (const skipped of input.skipped) {\n lines.push(\n `Skipped chapter ${formatChapterLabel(skipped.chapter)}: ${skipped.reason}`,\n );\n }\n if (input.estimate !== undefined) {\n lines.push(\"\", ...formatQueueAddEstimateLines(input.estimate));\n }\n if (input.created.length > 0) {\n lines.push(\n \"\",\n `Jobs: ${jobsCommand}`,\n `Verify after the jobs finish: ${verifyCommand}`,\n );\n }\n\n await writeTextToStdout(`${lines.join(\"\\n\")}\\n`);\n}\n\nfunction formatJobChapterLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : formatChapterLabel(chapter);\n}\n\nfunction formatJobChapterListLabel(\n job: BuildJob,\n chapter: JobChapterReference | undefined,\n): string {\n return chapter === undefined\n ? `[unavailable; internal id ${job.chapterId}]`\n : `${chapter.title ?? \"[untitled]\"} ${chapter.locatedUri}`;\n}\n\nfunction formatChapterLabel(\n chapter: Pick<JobChapterReference, \"title\" | \"uri\">,\n): string {\n return chapter.title === null || chapter.title === undefined\n ? chapter.uri\n : `${JSON.stringify(chapter.title)} (${chapter.uri})`;\n}\n\nfunction formatChapterJSON(\n chapter: JobChapterReference,\n): Record<string, unknown> {\n return {\n locatedUri: chapter.locatedUri,\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nfunction createJobChapterReference(\n job: BuildJob,\n chapter: ChapterEntry,\n): JobChapterReference {\n return createJobChapterReferenceFromPath(\n requireJobResourcePath(job, \"archive\", \"archivePath\"),\n chapter,\n );\n}\n\nfunction createJobChapterReferenceFromPath(\n archivePath: string,\n chapter: ChapterEntry,\n): JobChapterReference {\n return {\n locatedUri: formatLocatedChapterUri(archivePath, chapter.path),\n title: chapter.title,\n uri: chapter.uri,\n };\n}\n\nasync function resolveJobChapters(\n jobs: readonly BuildJob[],\n): Promise<ReadonlyMap<string, JobChapterReference>> {\n return await getWikiGraphSDK().jobs.resolveChapters(jobs);\n}\n\nasync function resolveJobChapter(\n job: BuildJob,\n): Promise<JobChapterReference | undefined> {\n return await getWikiGraphSDK().jobs.resolveChapter(job);\n}\n\nfunction getJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string | undefined {\n const record = job as unknown as Record<string, unknown>;\n if (resourceKey === \"archive\") {\n return job.archive.kind === \"library\" ? job.archive.uri : job.archive.path;\n }\n const legacyPath = record[legacyKey];\n if (typeof legacyPath === \"string\") {\n return resolveManagedJobResourcePath(legacyPath) ?? legacyPath;\n }\n return undefined;\n}\n\nfunction resolveManagedJobResourcePath(identity: string): string | undefined {\n if (!identity.startsWith(\"managed:library:\")) return undefined;\n const relativePath = identity.slice(\"managed:library:\".length);\n const segments = relativePath.split(\"/\");\n if (\n relativePath === \"\" ||\n segments.some(\n (segment) =>\n segment === \"\" ||\n segment === \".\" ||\n segment === \"..\" ||\n segment.includes(\"\\\\\"),\n )\n ) {\n throw new TypeError(`Invalid managed job resource: ${identity}`);\n }\n const environmentHome = getCLIEnvValue(\"HOME\")?.trim();\n const stateDirectory =\n getCLIStateDir() ??\n join(\n environmentHome === undefined || environmentHome === \"\"\n ? homedir()\n : environmentHome,\n \".wikigraph\",\n );\n return join(stateDirectory, ...segments);\n}\n\nfunction requireJobResourcePath(\n job: BuildJob,\n resourceKey: \"archive\" | \"cache\" | \"events\" | \"log\" | \"workspace\",\n legacyKey:\n | \"archivePath\"\n | \"cachePath\"\n | \"eventsPath\"\n | \"logPath\"\n | \"workspacePath\",\n): string {\n const path = getJobResourcePath(job, resourceKey, legacyKey);\n if (path !== undefined) return path;\n throw new TypeError(`Build job is missing ${resourceKey}`);\n}\n","import type {\n WikiGraphJobSnapshot as BuildJob,\n ChapterEntry,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport type { CLIConfig } from \"../../runtime/config.js\";\nimport { isCLIQueueAutostartEnabled } from \"../../runtime/context.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { spawnInternalChild } from \"../../runtime/internal-child.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport { writeArchiveAddSummary } from \"./output.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\n\nexport async function addChapterJob(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<BuildJob> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: parseCLIArchiveTarget(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 const created = result.created[0];\n if (created === undefined)\n throw new Error(`Chapter ${chapterId} was not queued.`);\n return created.job.snapshot;\n}\n\nexport async function addArchiveJobs(\n args: CLIQueueArguments,\n config: CLIConfig,\n): Promise<void> {\n const result = await getWikiGraphSDK().jobs.enqueue({\n archive: parseCLIArchiveTarget(args.archivePath!),\n boost: args.boost ?? false,\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n });\n const created = result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n }));\n\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\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: result.skipped,\n });\n}\n\nexport async function assertQueueAddReady(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<void> {\n await getWikiGraphSDK().jobs.planEnqueue({\n archive: parseCLIArchiveTarget(args.archivePath!),\n chapterId,\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n target: args.target ?? \"reading-summary\",\n });\n}\n\nexport async function readQueueAddChapter(\n args: CLIQueueArguments,\n chapterId: number,\n): Promise<ChapterEntry> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath!),\n );\n const matched = (await archive.listChapters()).find(\n (chapter) => chapter.chapterId === chapterId,\n );\n if (matched === undefined)\n throw new Error(`Chapter ${chapterId} does not exist.`);\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 { readFile } from \"fs/promises\";\n\nimport {\n formatLocatedChapterUri,\n parseChapterTreeInput,\n parseSourceTextJsonl,\n type BuildJobTarget,\n type ChapterTree,\n type ChapterTreeApplyResult,\n type ChapterDetails,\n type ChapterEntry,\n type IndexArtifactKind,\n type WikiGraphChapterArtifactStatus,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\n\nimport type { CLIArchiveChapterArguments } from \"../../args/index.js\";\nimport type { RenderTreeNode } from \"../../support/index.js\";\nimport {\n parseLocatedWikiGraphUri,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { tryStartQueueWorker } from \"../queue/add.js\";\nimport { writeJobSummary } from \"../queue/output.js\";\n\nexport async function runArchiveChapterCommand(\n args: CLIArchiveChapterArguments,\n): Promise<void> {\n const sdk = getWikiGraphSDK();\n const archive = await sdk.archives.open(parseCLIArchiveTarget(args.path));\n switch (args.action) {\n case \"add\": {\n const details = await archive.addChapter({\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n ...(args.inputPath === undefined\n ? {}\n : { source: await readRequiredSourceText(args) }),\n ...(args.title === undefined ? {} : { title: args.title }),\n });\n await writeChapterDetails(details, args.json ?? false, {\n locatedUri: formatChapterCommandUri(args.path, details.path),\n });\n return;\n }\n case \"list\":\n await writeChapterList(await archive.listChapters(), args.json ?? false);\n return;\n case \"get-index-artifact\":\n await writeIndexArtifactStatus(\n await archive.getChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n ),\n args.json ?? false,\n );\n return;\n case \"build-index-artifact\": {\n const chapter = await archive.getChapter(\n requireChapterPath(args.chapterPath),\n );\n const job = await sdk.jobs.create({\n archive: archive.target,\n chapterId: chapter.chapterId,\n target: requireIndexArtifactTarget(args.indexArtifactTarget),\n });\n\n tryStartQueueWorker();\n await writeJobSummary(job.snapshot, {\n chapter,\n json: args.json ?? false,\n watch: true,\n });\n return;\n }\n case \"delete-index-artifact\": {\n const deleted = await archive.deleteChapterArtifact(\n requireChapterPath(args.chapterPath),\n requireIndexArtifactKind(args.indexArtifactKind),\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON(deleted)\n : `Deleted ${formatIndexArtifactKind(deleted.kind)} index artifact for chapter ${deleted.chapterId}.\\n`,\n );\n return;\n }\n case \"move\":\n await writeChapterDetails(\n await archive.moveChapter(requireChapterPath(args.chapterPath), {\n ...(args.afterChapterPath === undefined\n ? {}\n : { afterPath: args.afterChapterPath }),\n ...(args.beforeChapterPath === undefined\n ? {}\n : { beforePath: args.beforeChapterPath }),\n ...(args.first === undefined ? {} : { first: args.first }),\n ...(args.last === undefined ? {} : { last: args.last }),\n ...(args.moveToRoot === undefined ? {} : { root: args.moveToRoot }),\n ...(args.parentChapterPath === undefined\n ? {}\n : { parentPath: args.parentChapterPath }),\n }),\n args.json ?? false,\n );\n return;\n case \"remove\":\n await archive.removeChapter(\n requireChapterPath(args.chapterPath),\n args.recursive ?? false,\n );\n await writeTextToStdout(\n args.json === true\n ? formatCLIJSON({\n removed: true,\n uri: `wikg://chapter/${args.chapterPath}`,\n })\n : `Removed chapter wikg://chapter/${args.chapterPath}.\\n`,\n );\n return;\n case \"reset\":\n await writeChapterDetails(\n await archive.resetChapter(\n requireChapterPath(args.chapterPath),\n args.resetStage!,\n ),\n args.json ?? false,\n );\n return;\n case \"set-source\": {\n const sourceText = await readRequiredSourceText(args);\n const parsed =\n args.inputFormat === \"jsonl\"\n ? parseSourceTextJsonl(sourceText)\n : undefined;\n await writeChapterDetails(\n await archive.setChapterSource(\n requireChapterPath(args.chapterPath),\n parsed?.text ?? sourceText,\n parsed === undefined ? {} : { provenance: parsed.provenance },\n ),\n args.json ?? false,\n );\n return;\n }\n case \"set-summary\":\n await writeChapterDetails(\n await archive.setChapterSummary(\n requireChapterPath(args.chapterPath),\n await readContentText(args),\n ),\n args.json ?? false,\n );\n return;\n case \"set-title\":\n await writeChapterDetails(\n await archive.setChapterTitle(\n requireChapterPath(args.chapterPath),\n args.clearTitle === true ? null : args.title,\n ),\n false,\n );\n return;\n case \"tree\":\n if (args.treeAction === \"apply\") {\n await writeChapterTreeApplyResult(\n await archive.applyChapterTree(\n parseChapterTreeInput(JSON.parse(await readContentText(args))),\n { dryRun: args.dryRun ?? false },\n ),\n args.dryRun ?? false,\n );\n return;\n }\n await writeChapterTree(\n await archive.getChapterTree(),\n args.json ?? false,\n );\n return;\n }\n}\nfunction requireChapterPath(chapterPath: string | undefined): string {\n if (chapterPath === undefined) {\n throw new Error(\"Missing chapter path.\");\n }\n return chapterPath;\n}\n\nfunction requireIndexArtifactKind(\n kind: IndexArtifactKind | undefined,\n): IndexArtifactKind {\n if (kind === undefined) {\n throw new Error(\"Missing index artifact kind.\");\n }\n\n return kind;\n}\n\nfunction requireIndexArtifactTarget(\n target: BuildJobTarget | undefined,\n): BuildJobTarget {\n if (target === undefined) {\n throw new Error(\"Missing index artifact build target.\");\n }\n\n return target;\n}\n\nasync function writeIndexArtifactStatus(\n status: WikiGraphChapterArtifactStatus,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(formatCLIJSON(status));\n return;\n }\n\n const state =\n status.artifact === undefined\n ? \"missing\"\n : status.current\n ? \"current\"\n : \"outdated\";\n\n await writeTextToStdout(\n [\n `Chapter: ${status.chapterId}`,\n `Index artifact: ${formatIndexArtifactKind(status.kind)}`,\n `State: ${state}`,\n ...(status.artifact === undefined\n ? []\n : [\n `Source revision: ${status.artifact.sourceRevision}`,\n `Current revision: ${status.revision}`,\n ]),\n ].join(\"\\n\") + \"\\n\",\n );\n}\n\nfunction formatIndexArtifactKind(kind: IndexArtifactKind): string {\n switch (kind) {\n case \"fts\":\n return \"FTS\";\n case \"embedding-source\":\n return \"source embedding\";\n case \"embedding-summary\":\n return \"summary embedding\";\n }\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 positional text, use --input <path>, or use --input - for stdin.\",\n );\n }\n\n return content;\n}\n\nasync function writeChapterDetails(\n details: ChapterDetails,\n json: boolean,\n options: { readonly locatedUri?: string } = {},\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n childCount: details.childCount,\n graphReady: details.graphReady,\n hasSummary: details.hasSummary,\n ...(options.locatedUri === undefined\n ? {}\n : { locatedUri: options.locatedUri }),\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 ...(options.locatedUri === undefined\n ? []\n : [`Located URI: ${options.locatedUri}`]),\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\nfunction formatChapterCommandUri(\n archiveLocator: string,\n chapterPath: string,\n): string {\n if (archiveLocator.startsWith(\"wikg://lib/\")) {\n return `${archiveLocator.replace(/\\/+$/u, \"\")}/chapter/${chapterPath}`;\n }\n if (archiveLocator.startsWith(\"wikg://\")) {\n const parsed = parseLocatedWikiGraphUri(archiveLocator);\n\n if (parsed.archivePath !== undefined) {\n return formatLocatedChapterUri(parsed.archivePath, chapterPath);\n }\n }\n\n return formatLocatedChapterUri(archiveLocator, chapterPath);\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","import type { WikiGraphArchiveIndexStatus } from \"wiki-graph-sdk\";\n\nimport type { CLIArchiveIndexArguments } from \"../../args/index.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n} from \"../../runtime/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.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 readIndexCache(args);\n return;\n case \"sync\":\n await syncIndexCache(args);\n return;\n case \"clean\":\n await cleanIndexCache(args);\n return;\n }\n}\n\nasync function readIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writeIndexOutput(args, await archive.getSearchIndexStatus());\n}\n\nasync function syncIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\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: \"index cache sync started\\nsteps: checking -> collecting -> clearing -> indexing-text -> indexing-dense -> finalizing\",\n });\n await writer.write({\n json: { phase: \"checking\", type: \"status_snapshot\" },\n kind: \"status\",\n phase: \"checking\",\n });\n const result = await archive.syncSearchIndex({\n onProgress: 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 skipUnindexed: args.skipUnindexed ?? false,\n });\n if (!result.rebuilt) {\n await writer.write({\n json: { type: \"already-current\" },\n kind: \"lifecycle\",\n text: \"already current\",\n });\n }\n await writer.write({\n json: { type: \"completed\" },\n kind: \"lifecycle\",\n text: \"index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n}\n\nasync function cleanIndexCache(args: CLIArchiveIndexArguments): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n await writeIndexOutput(args, await archive.cleanSearchIndex());\n}\n\nfunction formatIndexCounter(input: {\n readonly done?: number;\n readonly total?: number;\n readonly unit?: \"chapter\" | \"object\" | \"sentence\" | \"vector\";\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\" | \"vector\" | 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 \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nfunction formatIndexUnit(\n unit: \"chapter\" | \"object\" | \"sentence\" | \"vector\" | 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 \"vector\":\n return \"vectors\";\n case undefined:\n return \"items\";\n }\n}\n\nasync function writeIndexOutput(\n args: CLIArchiveIndexArguments,\n payload: WikiGraphArchiveIndexStatus,\n): Promise<void> {\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(payload));\n return;\n }\n\n await writeTextToStdout(\n [\n `Status: ${formatArchiveIndexStatus(payload)}`,\n `Enabled indexes: ${payload.capabilities.indexes}`,\n `Dense current: ${payload.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(payload.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${payload.capabilities.dense.model}`]),\n ...(payload.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${payload.capabilities.dense.dimensions}`]),\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatArchiveIndexStatus(\n input: WikiGraphArchiveIndexStatus,\n): \"current\" | \"missing\" | \"outdated\" {\n if (input.current) {\n return \"current\";\n }\n if (input.capabilities.indexes === \"missing\") {\n return \"missing\";\n }\n return \"outdated\";\n}\n","import type { BookMeta } from \"wiki-graph-sdk\";\n\nimport type {\n ArchiveMetaPatch,\n CLIArchiveCoverArguments,\n CLIArchiveMetadataArguments,\n} from \"../../args/index.js\";\nimport { writeBinaryToStdout, writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { formatCLIJSON } from \"../../support/index.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.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 archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.inputPath),\n );\n await writeArchiveMeta(await archive.readBookMeta(), {\n json: args.json ?? false,\n });\n}\n\nexport async function runArchiveCoverCommand(\n args: CLIArchiveCoverArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.inputPath),\n );\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 archive.readCover();\n\n if (cover === undefined) {\n throw new Error(\"Document cover is missing.\");\n }\n\n await writeBinaryToStdout(cover.data);\n}\n\nasync function updateArchiveMeta(\n path: string,\n patch: ArchiveMetaPatch,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(path),\n );\n const meta = await archive.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 archive.replaceBookMeta(updatedMeta);\n await writeArchiveMeta(updatedMeta, { json: false });\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 type { GcRunReport } from \"wiki-graph-sdk/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 { getWikiGraphSDK } from \"../runtime/context.js\";\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 getWikiGraphSDK().maintenance.migrateLegacy(\n args.inputPath,\n args.outputPath,\n );\n process.stdout.write(`Wrote ${result.outputPath}\\n`);\n return;\n }\n }\n}\n","import { homedir } from \"os\";\nimport { join, resolve } from \"path\";\n\nimport { getCLICwd, getCLIStateDir } from \"./context.js\";\n\nexport function isWikiGraphHomeTarget(target: string): boolean {\n if (target === \"home\" || target === \"~/.wikigraph\") return true;\n\n const configuredHome = resolve(\n getCLIStateDir() ?? join(homedir(), \".wikigraph\"),\n );\n return resolve(getCLICwd(), target) === configuredHome;\n}\n","import type {\n WikiGraphMaintenanceTarget,\n WikiGraphMaintenanceUpgradeResult,\n} from \"wiki-graph-sdk\";\n\nimport type { CLIMaintenanceArguments } from \"../args/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.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 if (args.outputPath !== undefined || args.target.endsWith(\".sdpub\")) {\n throw new Error(\n \"Legacy sdpub migration is available through `wg legacy migrate`.\",\n );\n }\n const result = await getWikiGraphSDK().maintenance.upgrade(\n parseMaintenanceTarget(args.target),\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} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\n`;\n case \"archive\":\n return `Archive ${result.status}: ${result.fileName} (schema v${result.schemaVersionBefore} -> v${result.schemaVersionAfter})\\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\nfunction parseMaintenanceTarget(target: string): WikiGraphMaintenanceTarget {\n if (isWikiGraphHomeTarget(target)) {\n return { kind: \"home\" as const };\n }\n if (target.startsWith(\"wikg://lib\")) {\n return { kind: \"library\", uri: target };\n }\n if (!target.endsWith(\".wikg\")) {\n throw new Error(`Unsupported maintenance upgrade target: ${target}`);\n }\n return { kind: \"archive\", path: target };\n}\n","import { Writable } from \"stream\";\nimport { createInterface } from \"readline/promises\";\n\nimport type { CLILocalConfigArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK, setCLIExitCode } from \"../runtime/context.js\";\nimport { writeTextToStderr, writeTextToStdout } from \"../support/index.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\nimport {\n maskLocalConfigSection,\n type LocalConfigObject,\n} from \"../runtime/local-config.js\";\n\nexport async function runLocalConfigCommand(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const config = getWikiGraphSDK().config;\n switch (args.action) {\n case \"get\":\n await writeConfigObject(args.section, await config.get(args.section));\n return;\n case \"set\":\n await writeConfigObject(\n args.section,\n await config.replace(\n args.section,\n mergeMaskedSecretsForSet(\n args.section,\n readJSONInput(args),\n await config.get(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 config.put(args.section, key, value),\n );\n return;\n }\n case \"delete\":\n await writeConfigObject(\n args.section,\n await config.delete(args.section, requireConfigKey(args.key)),\n );\n return;\n case \"clear\":\n await writeConfigObject(args.section, await config.clear(args.section));\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 case \"embeddings\":\n await runEmbeddingConfigTest(args);\n return;\n default:\n throw new Error(\n \"Only wikg://local/config/llm, wikg://local/config/embeddings, and wikg://local/config/wikispine support test.\",\n );\n }\n}\n\nasync function runEmbeddingConfigTest(\n args: CLILocalConfigArguments,\n): Promise<void> {\n const startedAt = Date.now();\n const embedding = await getWikiGraphSDK().config.get(\"embeddings\");\n\n try {\n const result = await getWikiGraphSDK().config.testEmbedding();\n const output = {\n dimensions: result.dimensions!,\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider!,\n ...(result.tokens === undefined ? {} : { tokens: result.tokens }),\n };\n\n if (args.json === true) {\n await writeTextToStdout(formatCLIJSON(output));\n return;\n }\n\n await writeTextToStdout(\n [\n \"Embedding connection ok.\",\n `Provider: ${output.provider}`,\n `Model: ${output.model}`,\n `Dimensions: ${output.dimensions}`,\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: embedding.model,\n ok: false,\n provider: embedding.provider,\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 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 getWikiGraphSDK().config.get(\"llm\");\n\n try {\n const result = await getWikiGraphSDK().config.testLLM();\n const output = {\n durationMs: result.durationMs,\n model: result.model,\n ok: true,\n provider: result.provider,\n response: result.response,\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 getWikiGraphSDK().config.get(\"wikispine\");\n\n try {\n const result = await getWikiGraphSDK().config.testWikispine();\n const output = {\n durationMs: result.durationMs,\n ...(result.endpoint === undefined ? {} : { endpoint: result.endpoint }),\n ...(result.metadata === undefined ? {} : { metadata: result.metadata }),\n ok: true,\n provider: result.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 === \"wikimedia\" || section === \"wikispine\") {\n return mergeMaskedSecret(section, input, current, \"token\");\n }\n if (\n (section !== \"llm\" && section !== \"embeddings\") ||\n input.apiKey === undefined\n ) {\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/${section} put apiKey --secret\\`.`,\n );\n}\n\nfunction mergeMaskedSecret(\n section: \"wikimedia\" | \"wikispine\",\n input: LocalConfigObject,\n current: LocalConfigObject,\n key: \"token\",\n): LocalConfigObject {\n const value = input[key];\n if (value === undefined) return input;\n if (typeof value === \"string\" && /^\\*+$/u.test(value)) {\n return current[key] === undefined\n ? omitKey(input, key)\n : { ...input, [key]: current[key] };\n }\n throw new Error(\n `${key} is sensitive and cannot be set from JSON. Use \\`wg wikg://local/config/${section} put ${key} --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\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 formatWikiGraphLibraryUri,\n type ParsedWikiGraphLibraryUri,\n type WikiGraphLibraryArchiveSnapshot as WikiGraphLibraryArchiveRecord,\n type WikiGraphLibraryIndexState,\n type WikiGraphLibrarySnapshot as WikiGraphLibraryRecord,\n type WikiGraphLibraryScanSnapshot as WikiGraphLibraryScanResult,\n} from \"wiki-graph-sdk\";\nimport type { CLILibraryArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport type { RenderTreeNode } from \"../support/index.js\";\nimport {\n formatCLIJSON,\n renderTreeText,\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { createCollectionFindResult } from \"./archive-command/run/index.js\";\nimport { writeFindHits } from \"./archive-output/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 const libraries = getWikiGraphSDK().libraries;\n if (\n args.action !== \"add\" &&\n args.action !== \"create\" &&\n args.action !== \"scan\" &&\n args.action !== \"rebind\"\n ) {\n await libraries.assertCurrent(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 libraries.addArchive({\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 await writeLibrary(\n (await libraries.create(args.path)).snapshot,\n args.json ?? false,\n );\n return;\n }\n case \"list\": {\n if (args.target.kind === \"registry\") {\n await writeLibraries(\n (await libraries.list()).map((library) => library.snapshot),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, args.json ?? false);\n return;\n }\n case \"scan\": {\n await writeScanResult(\n \"scan\",\n async () => await libraries.scan(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 () => await libraries.rebind(args.target, folderPath),\n args.json ?? false,\n args.jsonl ?? false,\n );\n return;\n }\n case \"archive-tree\": {\n await writeLibraryArchiveTree(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\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 libraries.indexState(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"sync-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 cache sync started\\nsteps: collecting -> clearing -> indexing-text -> indexing-objects -> indexing-dense -> finalizing\",\n });\n const state = await libraries.rebuildIndex(args.target, 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 await writer.write({\n json: { status: state.status, type: \"completed\" },\n kind: \"lifecycle\",\n text: \"library index cache synced\",\n });\n await writer.write({\n json: { type: \"succeeded\" },\n kind: \"lifecycle\",\n text: \"succeeded\",\n });\n return;\n }\n case \"clean-index\": {\n await writeLibraryIndexState(\n await libraries.cleanIndex(args.target),\n args.json ?? false,\n );\n return;\n }\n case \"remove\": {\n if (args.target.kind === \"archive\") {\n await writeLibraryArchive(\n await libraries.removeArchive(args.target),\n args.json ?? false,\n \"Removed library archive\",\n );\n return;\n }\n const library = await libraries.remove(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 \"replace\": {\n if (args.inputPath === undefined) {\n throw new Error(\"Missing --input <path> for library archive replace.\");\n }\n await writeLibraryArchive(\n await libraries.replaceArchive({\n inputPath: args.inputPath,\n target: args.target,\n }),\n args.json ?? false,\n \"Replaced library archive\",\n );\n return;\n }\n case \"get\": {\n if (args.target.kind === \"path\") {\n await writeLibraryPath(\n (await libraries.get(formatWikiGraphLibraryUri(args.target.publicId)))\n .snapshot,\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-path\") {\n await writeLibraryArchivePath(\n await libraries.getArchive({ ...args.target, kind: \"archive\" }),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"metadata\") {\n await writeMetadataMap(\n await libraries.getMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive\") {\n await writeLibraryArchivePage(\n await libraries.getArchive(args.target),\n args.json ?? false,\n );\n return;\n }\n if (args.target.kind === \"archive-collection\") {\n await writeLibraryArchives(\n await (\n await libraries.get(formatWikiGraphLibraryUri(args.target.publicId))\n ).archives(),\n args.json ?? false,\n );\n return;\n }\n await writeLibraryScopeCollection(args.target, 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 libraries.moveArchive({\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 libraries.replaceMetadata(args.target, parseMetadataMap(value)),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n await writeMetadataMap(\n await libraries.putMetadata(\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 libraries.deleteMetadata(\n args.target,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n }\n case \"clear\": {\n await writeMetadataMap(\n await libraries.clearMetadata(args.target),\n args.json ?? false,\n );\n return;\n }\n }\n}\n\nasync function writeLibrary(\n library: WikiGraphLibraryRecord,\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 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: readonly WikiGraphLibraryRecord[],\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: WikiGraphLibraryRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON({\n uri: `${library.uri}/path`,\n path: library.folderPath,\n }),\n );\n return;\n }\n await writeTextToStdout(`${library.folderPath}\\n`);\n}\n\nasync function writeLibraryArchivePath(\n archive: WikiGraphLibraryArchiveRecord,\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<WikiGraphLibraryScanResult>,\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: readonly WikiGraphLibraryArchiveRecord[],\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 writeLibraryScopeCollection(\n target: ParsedWikiGraphLibraryUri,\n json: boolean,\n): Promise<void> {\n const manager = getWikiGraphSDK().libraries;\n const library = await manager.get(formatWikiGraphLibraryUri(target.publicId));\n const baseUri = formatWikiGraphLibraryUri(target.publicId);\n const context = {\n archiveKey: baseUri,\n archivePath: baseUri,\n continuationKind: \"collection\" as const,\n format: json ? (\"json\" as const) : (\"text\" as const),\n indexScope: {\n kind: \"library-index\" as const,\n libraryId: library.snapshot.id,\n },\n limit: 20,\n libraryQuery: \"objects\" as const,\n types: null,\n };\n\n await writeFindHits(\n createCollectionFindResult((await manager.objects(target)).result),\n context,\n json ? \"json\" : \"text\",\n );\n}\n\nasync function writeLibraryArchive(\n archive: WikiGraphLibraryArchiveRecord,\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\nasync function writeLibraryArchivePage(\n archive: WikiGraphLibraryArchiveRecord,\n json: boolean,\n): Promise<void> {\n if (json) {\n await writeTextToStdout(\n formatCLIJSON(formatLibraryArchivePageJSON(archive)),\n );\n return;\n }\n\n await writeTextToStdout(\n [\n `Library archive: ${archive.uri}`,\n `Label: ${archive.relativePath}`,\n `Status: ${archive.status}${archive.exists ? \"\" : \" (missing file)\"}`,\n `Chapter: ${archive.uri}/chapter`,\n `Entity: ${archive.uri}/entity`,\n `Triple: ${archive.uri}/triple`,\n `Inspect: ${archive.uri} inspect`,\n `Metadata path: ${formatArchiveHostPath(archive)}`,\n \"\",\n ].join(\"\\n\"),\n );\n}\n\nfunction formatLibraryArchiveJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n relativePath: archive.relativePath,\n path: formatArchiveHostPath(archive),\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\nfunction formatLibraryArchivePageJSON(\n archive: WikiGraphLibraryArchiveRecord,\n): object {\n return {\n uri: archive.uri,\n id: archive.publicId,\n libraryUri: archive.libraryUri,\n label: archive.relativePath,\n relativePath: archive.relativePath,\n status: archive.status,\n entries: {\n chapter: `${archive.uri}/chapter`,\n entity: `${archive.uri}/entity`,\n triple: `${archive.uri}/triple`,\n inspect: `${archive.uri} inspect`,\n },\n metadata: {\n path: formatArchiveHostPath(archive),\n exists: archive.exists,\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}\n\ninterface ArchiveTreeNode {\n readonly children: Map<string, ArchiveTreeNode>;\n readonly name: string;\n readonly path: string;\n archive?: WikiGraphLibraryArchiveRecord;\n}\n\nasync function writeLibraryArchiveTree(\n archives: readonly WikiGraphLibraryArchiveRecord[],\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: WikiGraphLibraryArchiveRecord,\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: WikiGraphLibraryIndexState,\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 ...(state.capabilities === undefined\n ? []\n : [\n `Enabled indexes: ${state.capabilities.indexes}`,\n `Dense current: ${state.capabilities.dense.current ? \"yes\" : \"no\"}`,\n ...(state.capabilities.dense.model === undefined\n ? []\n : [`Dense model: ${state.capabilities.dense.model}`]),\n ...(state.capabilities.dense.dimensions === undefined\n ? []\n : [`Dense dimensions: ${state.capabilities.dense.dimensions}`]),\n ]),\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\" | \"vector\";\n}): ProgressCounter {\n const unit =\n input.unit === \"chapter\"\n ? \"chapters\"\n : input.unit === \"sentence\"\n ? \"sentences\"\n : input.unit === \"vector\"\n ? \"vectors\"\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\nfunction formatArchiveHostPath(archive: {\n readonly relativePath: string;\n}): string {\n return archive.relativePath;\n}\n","import { readFile } from \"fs/promises\";\n\nimport type { CLIObjectMetadataArguments } from \"../args/index.js\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\nimport {\n readTextStreamFromStdin,\n writeTextToStdout,\n} from \"../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../support/archive-target.js\";\nimport { formatCLIJSON } from \"../support/index.js\";\n\nexport async function runObjectMetadataCommand(\n args: CLIObjectMetadataArguments,\n): Promise<void> {\n const archive = await getWikiGraphSDK().archives.open(\n parseCLIArchiveTarget(args.archivePath),\n );\n\n switch (args.action) {\n case \"get\": {\n await writeMetadataMap(\n await archive.getMetadata(args.objectPath),\n args.json ?? false,\n );\n return;\n }\n case \"set\": {\n const value = await readMetadataInput(args, { jsonRequired: true });\n const map = parseMetadataMap(value);\n\n await writeMetadataMap(\n await archive.replaceMetadata(args.objectPath, map),\n args.json ?? false,\n );\n return;\n }\n case \"put\": {\n const key = normalizeMetadataKey(args.key);\n const value = await readMetadataInput(args, { jsonRequired: false });\n\n await writeMetadataMap(\n await archive.putMetadata(args.objectPath, key, value),\n args.json ?? false,\n );\n return;\n }\n case \"delete\":\n await writeMetadataMap(\n await archive.deleteMetadata(\n args.objectPath,\n normalizeMetadataKey(args.key),\n ),\n args.json ?? false,\n );\n return;\n case \"clear\":\n await writeMetadataMap(\n await archive.clearMetadata(args.objectPath),\n args.json ?? false,\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","import {\n type BuildJobEvent,\n type BuildJobProgressCounter,\n type BuildJobTarget,\n} from \"wiki-graph-sdk\";\n\nimport {\n ProgressOutputWriter,\n type ProgressCounter,\n type ProgressMetricGroup,\n} from \"../../runtime/index.js\";\nimport { getCLISignal, getWikiGraphSDK } from \"../../runtime/context.js\";\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 const writer = new ProgressOutputWriter({\n jsonl: options.jsonl,\n throttleMs: PROGRESS_OUTPUT_INTERVAL_MS,\n });\n\n const job = await getWikiGraphSDK().jobs.get(jobId);\n const signal = getCLISignal();\n for await (const event of job.events({\n from: options.from,\n ...(signal === undefined ? {} : { signal }),\n })) {\n await writer.write(formatWatchOutputEvent(event));\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","import {\n requireKnowledgeGraphWikispineConfig,\n runWikiGraphQueueWorker,\n} from \"wiki-graph-sdk\";\n\nexport { requireKnowledgeGraphWikispineConfig };\n\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\n\nexport async function runQueueWorker(): Promise<void> {\n const controller = new AbortController();\n const stop = (): void => controller.abort();\n process.once(\"SIGINT\", stop);\n process.once(\"SIGTERM\", stop);\n try {\n await runWikiGraphQueueWorker({ signal: controller.signal });\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(withHelpRoute(message, CLI_HELP_ROUTES.config), {\n cause: error,\n });\n } finally {\n process.removeListener(\"SIGINT\", stop);\n process.removeListener(\"SIGTERM\", stop);\n }\n}\n","import type { WikiGraphJobEnqueueOptions } from \"wiki-graph-sdk\";\n\nimport type { CLIQueueArguments } from \"../../args/index.js\";\nimport { loadCLIConfig } from \"../../runtime/config.js\";\nimport { getWikiGraphSDK } from \"../../runtime/context.js\";\nimport { writeTextToStdout } from \"../../support/index.js\";\nimport { parseCLIArchiveTarget } from \"../../support/archive-target.js\";\nimport { assertBuildCostAccepted, tryStartQueueWorker } from \"./add.js\";\nimport { createQueueAddEstimate } from \"./estimate.js\";\nimport {\n writeArchiveAddSummary,\n writeJobList,\n writeJobStatus,\n writeJobSummary,\n} from \"./output.js\";\nimport { watchBuildJob } from \"./watch.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 enqueueOptions = createEnqueueOptions(args);\n const plan = await getWikiGraphSDK().jobs.planEnqueue(enqueueOptions);\n const target = args.target ?? \"reading-summary\";\n if (target !== \"index-fts\") {\n assertBuildCostAccepted(args);\n }\n const config = await loadCLIConfig({\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n });\n const result = await getWikiGraphSDK().jobs.enqueue(enqueueOptions);\n const singleSelection =\n (args.chapterId !== undefined ||\n args.chapterPath !== undefined ||\n args.chapterIds?.length === 1) &&\n plan.ready.length + plan.skipped.length === 1;\n if (result.created.length === 1 && singleSelection) {\n const created = result.created[0]!;\n const estimate = createQueueAddEstimate({\n chapters: [created.chapter],\n config,\n target,\n });\n await writeJobSummary(created.job.snapshot, {\n chapter: created.chapter,\n estimate,\n json: args.json ?? false,\n watch: true,\n });\n } else {\n await writeArchiveAddSummary({\n archivePath: args.archivePath!,\n created: result.created.map(({ chapter, job }) => ({\n chapter,\n job: job.snapshot,\n })),\n ...(result.created.length === 0\n ? {}\n : {\n estimate: createQueueAddEstimate({\n chapters: result.created.map((item) => item.chapter),\n config,\n target,\n }),\n }),\n json: args.json ?? false,\n skipped: result.skipped,\n });\n }\n\n tryStartQueueWorker();\n return;\n }\n case \"list\":\n await writeJobList(\n (\n await getWikiGraphSDK().jobs.list({\n ...(args.activeOnly === undefined\n ? {}\n : { activeOnly: args.activeOnly }),\n ...(args.all === undefined ? {} : { all: args.all }),\n ...(args.archivePath === undefined\n ? {}\n : { archive: parseCLIArchiveTarget(args.archivePath) }),\n })\n ).map((job) => job.snapshot),\n { json: args.json ?? false },\n );\n return;\n case \"status\":\n await writeJobStatus(await (await getQueueJob(args)).status(), {\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 (await getQueueJob(args)).pause());\n return;\n case \"resume\":\n await writeJobSummary(await (await getQueueJob(args)).resume());\n tryStartQueueWorker();\n return;\n case \"cancel\":\n await writeJobSummary(await (await getQueueJob(args)).cancel());\n return;\n case \"boost\":\n await writeJobSummary(await (await getQueueJob(args)).boost());\n tryStartQueueWorker();\n return;\n case \"target\":\n await writeJobSummary(\n await (\n await getQueueJob(args)\n ).setTarget(args.target ?? \"reading-summary\"),\n );\n tryStartQueueWorker();\n return;\n case \"clean\":\n await writeTextToStdout(\n `Cleaned ${await getWikiGraphSDK().jobs.clean()} jobs.\\n`,\n );\n return;\n }\n}\n\nasync function resolveQueueJobId(args: CLIQueueArguments): Promise<string> {\n return await getWikiGraphSDK().jobs.resolveId(args.jobId!);\n}\n\nasync function getQueueJob(args: CLIQueueArguments) {\n return await getWikiGraphSDK().jobs.get(await resolveQueueJobId(args));\n}\n\nfunction createEnqueueOptions(\n args: CLIQueueArguments,\n): WikiGraphJobEnqueueOptions {\n return {\n archive: parseCLIArchiveTarget(args.archivePath!),\n ...(args.boost === undefined ? {} : { boost: args.boost }),\n ...(args.chapterId === undefined ? {} : { chapterId: args.chapterId }),\n ...(args.chapterIds === undefined ? {} : { chapterIds: args.chapterIds }),\n ...(args.chapterPath === undefined\n ? {}\n : { chapterPath: args.chapterPath }),\n ...(args.depth === undefined ? {} : { depth: args.depth }),\n ...(args.llmJSON === undefined ? {} : { llmJSON: args.llmJSON }),\n ...(args.prompt === undefined ? {} : { prompt: args.prompt }),\n target: args.target ?? \"reading-summary\",\n };\n}\n","import { Readable, Writable } from \"stream\";\n\nimport { createWikiGraphSDK } from \"wiki-graph-sdk\";\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 sdk: createWikiGraphSDK({\n cwd: input.cwd ?? process.cwd(),\n env: entryContext.env,\n envPolicy: entryContext.envPolicy,\n ...(entryContext.stateDir === undefined\n ? {}\n : { stateDir: entryContext.stateDir }),\n }),\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 try {\n return await context.sdk!.run(\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 input.signal,\n { skipHomeBootstrap: true },\n );\n } finally {\n context.sdk!.close();\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 createNodeTemplateEnvironment,\n formatWikiGraphLibraryUri,\n parseWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\nimport { existsSync } from \"fs\";\nimport { dirname, join, parse, resolve } from \"path\";\n\nimport { CLI_FULL_COMMAND, CLI_PRIMARY_COMMAND } from \"../support/command.js\";\nimport { getCLIDevProjectRoot } from \"../runtime/context.js\";\nimport type { ParsedWikiGraphLibraryUri } from \"wiki-graph-sdk\";\nimport { CLI_FORMATS, parseLocatedWikiGraphUri } from \"../support/index.js\";\nimport { CLI_HELP_ROUTES, withHelpRoute } from \"../support/index.js\";\nimport { formatCliCommand, formatShellArgument } 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 \"file-import\",\n \"source-locators\",\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 | \"archive-title-object\"\n | \"artifact-object\"\n | \"chapter-collection-scope\"\n | \"chapter-scope\"\n | \"chapter-source-range-object\"\n | \"chapter-source-locator-scope\"\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 | \"chapter-index-artifact\"\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 | \"build\"\n | \"cancel\"\n | \"clear\"\n | \"clean\"\n | \"create\"\n | \"delete\"\n | \"evidence\"\n | \"export\"\n | \"inspect\"\n | \"move\"\n | \"pack\"\n | \"pause\"\n | \"put\"\n | \"related\"\n | \"remove\"\n | \"reset\"\n | \"resume\"\n | \"set\"\n | \"sync\"\n | \"test\"\n | \"watch\";\n\nexport type LibraryHelpPredicateName = CLILibraryAction | \"clean\" | \"sync\";\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 { name: \"archive-title-object\", predicates: [\"clear\", \"set\"] },\n { name: \"artifact-object\", predicates: [] },\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-locator-scope\", 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: \"chapter-index-artifact\", predicates: [\"build\", \"delete\"] },\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: [\"clean\", \"sync\"],\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 readonly rootVisible?: boolean;\n}[] = [\n {\n name: \"format\",\n summary: \"Supported formats, inference rules, and IO constraints.\",\n },\n {\n name: \"file-import\",\n rootVisible: false,\n summary: \"Advanced source-file import and source-text provenance behavior.\",\n },\n {\n name: \"source-locators\",\n rootVisible: false,\n summary: \"Source artifact URIs and source-text locator mappings.\",\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 \"file-import\": \"help/topics/file-import\",\n \"source-locators\": \"help/topics/source-locators\",\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:\n | ReturnType<typeof createNodeTemplateEnvironment>\n | 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 displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n target: requireUriHelpTarget(targetName),\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(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 displayUri: uri,\n libraryContext: getLibraryHelpContext(uri),\n predicate,\n target,\n uriContext: getUriHelpContext(uri),\n uri: formatHelpCommandUri(uri),\n });\n}\n\nexport function renderLibraryUriHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library\", {\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nexport function renderLibraryPredicateHelpText(\n uri: string,\n target: ParsedWikiGraphLibraryUri,\n predicate: LibraryHelpPredicateName,\n): string {\n const helpUri = formatLibraryHelpUri(uri, target);\n return renderHelpTemplate(\"help/commands/library-predicate\", {\n displayUri: helpUri,\n predicate,\n target,\n uri: formatHelpCommandUri(helpUri),\n });\n}\n\nfunction formatHelpCommandUri(uri: string): string {\n return formatShellArgument(uri);\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<\n typeof createNodeTemplateEnvironment\n> {\n helpTemplateEnvironment ??= createNodeTemplateEnvironment(\n resolveCLIDataDirectory(),\n {\n autoescape: false,\n },\n );\n\n return helpTemplateEnvironment;\n}\n\nfunction resolveCLIDataDirectory(): string {\n const distDirectory = (\n globalThis as { readonly __WIKIGRAPH_CLI_DIST_DIR__?: unknown }\n ).__WIKIGRAPH_CLI_DIST_DIR__;\n const explicitProjectRoot = getCLIDevProjectRoot();\n const candidates = [\n typeof distDirectory === \"string\"\n ? resolve(distDirectory, \"data\")\n : undefined,\n explicitProjectRoot === undefined\n ? undefined\n : resolve(explicitProjectRoot, \"packages\", \"cli\", \"data\"),\n ];\n\n let directory = process.cwd();\n const root = parse(directory).root;\n while (true) {\n candidates.push(join(directory, \"packages\", \"cli\", \"data\"));\n if (directory === root) break;\n directory = dirname(directory);\n }\n\n const dataDirectory = candidates.find(\n (candidate): candidate is string =>\n candidate !== undefined && existsSync(join(candidate, \"help\")),\n );\n if (dataDirectory === undefined) {\n throw new Error(\"Could not locate CLI help data directory.\");\n }\n return dataDirectory;\n}\n","import {\n parseChapterPath,\n type ArchiveTriplePattern,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\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 indexArtifactKind: IndexArtifactKind;\n readonly kind: \"chapter-index-artifact\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"chapter-resource\";\n readonly resource: \"source\" | \"summary\" | \"title\";\n }\n | {\n readonly chapterPath: string;\n readonly kind: \"source-locator-scope\";\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 indexArtifactKind = parseChapterIndexArtifactSuffix(suffix);\n\n if (indexArtifactKind !== undefined) {\n return {\n chapterPath,\n indexArtifactKind,\n kind: \"chapter-index-artifact\",\n };\n }\n\n if (suffix === \"source/locators\") {\n return { chapterPath, kind: \"source-locator-scope\" };\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 \"index\",\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 parseChapterIndexArtifactSuffix(\n suffix: string | undefined,\n): IndexArtifactKind | undefined {\n switch (suffix) {\n case \"index/fts\":\n return \"fts\";\n case \"index/embedding/source\":\n return \"embedding-source\";\n case \"index/embedding/summary\":\n return \"embedding-summary\";\n default:\n return undefined;\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-sdk\";\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 {\n inferCLIFormatFromPath,\n parseCLIFormat,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../support/index.js\";\nimport { renderArchiveCommandHelpText } from \"./help.js\";\nimport { type ArchiveTriplePattern } from \"wiki-graph-sdk\";\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 rejectNonQuerySkipUnindexedFlag(action, values, helpRoute);\n const queryMode = parseQueryModeFlag(values, helpRoute);\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 ...queryMode,\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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 \"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 ...queryMode,\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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 ...queryMode,\n ...(values.reverse === true ? { reverse: true } : {}),\n ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: 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\nfunction rejectNonQuerySkipUnindexedFlag(\n action: CLIArchiveAction,\n values: ArchiveArgumentValues,\n helpRoute: string,\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n if (\n action === \"search\" ||\n ((action === \"related\" || action === \"evidence\") &&\n values.query !== undefined)\n ) {\n return;\n }\n\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n}\n\nfunction parseQueryModeFlag(\n values: ArchiveArgumentValues,\n helpRoute: string,\n): { readonly queryMode?: \"embedding\" | \"fts\" | \"hybrid\" } {\n const value = values[\"query-mode\"];\n if (value === undefined) return {};\n if (values.query === undefined) {\n throw new Error(\n withHelpRoute(\"`--query-mode` requires `--query`.\", helpRoute),\n );\n }\n if (value !== \"hybrid\" && value !== \"fts\" && value !== \"embedding\") {\n throw new Error(\n withHelpRoute(\n \"--query-mode must be one of: hybrid, fts, embedding.\",\n helpRoute,\n ),\n );\n }\n return { queryMode: value };\n}\n","import { CLI_HELP_ROUTES, withHelpRoute } from \"../../support/index.js\";\nimport type { BuildJobTarget } from \"wiki-graph-sdk\";\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 value === \"build\" ||\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 value === \"clean\" || value === \"get\" || value === \"sync\";\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 \"index-fts\":\n return \"index-fts\";\n case \"index-embedding-source\":\n return \"index-embedding-source\";\n case \"index-embedding-summary\":\n return \"index-embedding-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 index-fts, index-embedding-source, index-embedding-summary, 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 { parseChapterPath, parseChapterUriPath } from \"wiki-graph-sdk\";\n\nimport {\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} 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 {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} from \"../../support/index.js\";\nimport {\n parseLocalConfigSection,\n type LocalConfigSection,\n} from \"../../runtime/local-config.js\";\nimport { parseWikiGraphUriSyntax, WIKI_GRAPH_URI_PREFIX } from \"wiki-graph-sdk\";\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 \"build-index-artifact\":\n case \"delete-index-artifact\":\n case \"get-index-artifact\":\n throw new Error(\n withHelpRoute(\n \"Internal chapter index artifact actions are only available through chapter index artifact URIs.\",\n helpRoute,\n ),\n );\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 if (\n values[\"input-format\"] !== undefined &&\n values[\"input-format\"] !== \"jsonl\"\n ) {\n throw new Error(\n withHelpRoute(\n \"`--input-format` for chapter source set only accepts `jsonl`.\",\n helpRoute,\n ),\n );\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[\"input-format\"] === undefined\n ? {}\n : { inputFormat: \"jsonl\" as const }),\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-sdk\";\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-sdk\";\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-sdk\";\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 indexes: {\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 \"query-mode\": {\n type: \"string\",\n },\n replace: {\n type: \"boolean\",\n },\n reverse: {\n type: \"boolean\",\n },\n \"skip-unindexed\": {\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 rejectNonWikiGraphSkipUnindexedFlag(positionals, values);\n rejectUnsupportedIndexesFlag(values.indexes);\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\nfunction rejectUnsupportedIndexesFlag(value: string | undefined): void {\n if (value === undefined) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The --indexes option has been removed. Build chapter index artifacts explicitly, then sync the archive or library index cache.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n\nfunction rejectNonWikiGraphSkipUnindexedFlag(\n positionals: readonly string[],\n values: { readonly \"skip-unindexed\"?: boolean },\n): void {\n if (values[\"skip-unindexed\"] !== true) {\n return;\n }\n\n const command = positionals[0];\n if (\n command !== undefined &&\n (isWikiGraphUri(command) || isWikiGraphLibraryUri(command))\n ) {\n return;\n }\n\n throw new Error(\n withHelpRoute(\n \"The current command does not support --skip-unindexed.\",\n CLI_HELP_ROUTES.root,\n ),\n );\n}\n","import { parseLocatedWikiGraphUri, 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 type BuildJobTarget,\n type IndexArtifactKind,\n} from \"wiki-graph-sdk\";\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-index-artifact\":\n return parseChapterIndexArtifactUriArguments(\n archivePath,\n target.chapterPath,\n target.indexArtifactKind,\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 case \"source-locator-scope\":\n return parseSourceLocatorScopeUriArguments(\n uri,\n action,\n tail,\n values,\n helpRoute,\n );\n }\n}\n\nfunction parseSourceLocatorScopeUriArguments(\n uri: string,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n if (action !== \"list\") {\n throw new Error(\n withHelpRoute(\n \"The source locator scope is read-only. Read it directly to enumerate locator mappings.\",\n \"wg <chapter-uri>/source/locators --help\",\n ),\n );\n }\n\n rejectArchiveChapterFlag(\"backlinks\", values.backlinks, helpRoute);\n rejectArchiveChapterFlag(\"context\", values.context, helpRoute);\n rejectArchiveChapterFlag(\"depth\", values.depth, helpRoute);\n rejectArchiveChapterFlag(\"evidence\", values.evidence, helpRoute);\n rejectArchiveChapterFlag(\"reverse\", values.reverse, helpRoute);\n rejectArchiveChapterFlag(\n \"skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\n\n return parseArchiveArguments(\"list\", [uri, ...tail], values, helpRoute);\n}\n\nfunction parseChapterIndexArtifactUriArguments(\n archivePath: string,\n chapterPath: string,\n indexArtifactKind: IndexArtifactKind,\n action: CLIArchiveUriAction,\n tail: readonly string[],\n values: ArchiveArgumentValues,\n helpRoute: string,\n): ParsedCLIArguments {\n rejectArchiveChapterMetaFlags(values, helpRoute);\n rejectArchiveChapterFlag(\"input\", values.input, helpRoute);\n rejectArchiveChapterFlag(\"import\", values.import, helpRoute);\n rejectArchiveChapterFlag(\"to\", values.to, helpRoute);\n\n if (tail.length > 0) {\n throw new Error(\n withHelpRoute(\n `Unexpected argument for chapter index artifact: ${tail[0]}`,\n helpRoute,\n ),\n );\n }\n\n switch (action) {\n case \"get\":\n return {\n args: {\n action: \"get-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"build\":\n return {\n args: {\n action: \"build-index-artifact\",\n chapterPath,\n indexArtifactKind,\n indexArtifactTarget:\n mapIndexArtifactKindToBuildTarget(indexArtifactKind),\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n case \"delete\":\n return {\n args: {\n action: \"delete-index-artifact\",\n chapterPath,\n indexArtifactKind,\n path: archivePath,\n ...(values.json === undefined ? {} : { json: values.json }),\n },\n help: false,\n kind: \"chapter\",\n };\n default:\n throw new Error(\n withHelpRoute(\n `The chapter index artifact does not support \\`${action}\\`. Use get, build, or delete.`,\n helpRoute,\n ),\n );\n }\n}\n\nfunction mapIndexArtifactKindToBuildTarget(\n kind: IndexArtifactKind,\n): BuildJobTarget {\n switch (kind) {\n case \"fts\":\n return \"index-fts\";\n case \"embedding-source\":\n return \"index-embedding-source\";\n case \"embedding-summary\":\n return \"index-embedding-summary\";\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} from \"wiki-graph-sdk\";\n\nimport {\n isUriHelpPredicate,\n renderUriHelpText,\n renderUriPredicateHelpText,\n type UriHelpTargetName,\n} from \"../help.js\";\nimport {\n CLI_HELP_ROUTES,\n parseLocatedWikiGraphUri,\n withHelpRoute,\n} 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 case \"source-locator-scope\":\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 if (path === \"title\") {\n return \"archive-title-object\";\n }\n if (/^artifact\\/[0-9a-f]{12,64}(?:#.+)?$/iu.test(path)) {\n return \"artifact-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-index-artifact\":\n return \"chapter-index-artifact\";\n case \"source-locator-scope\":\n return \"chapter-source-locator-scope\";\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 if (objectUri === \"wikg://title\") {\n if (action === \"get\") {\n return parseArchiveArguments(\"get\", [uri, ...tail], values, helpRoute);\n }\n if (action !== \"set\" && action !== \"clear\") {\n throw new Error(\n withHelpRoute(\n `The archive title resource does not support \\`${action}\\`. Read it directly, or use set or clear.`,\n \"wg <archive-uri>/title --help\",\n ),\n );\n }\n const expected = action === \"set\" ? 1 : 0;\n if (tail.length !== expected) {\n throw new Error(\n withHelpRoute(\n action === \"set\"\n ? \"Archive title set requires exactly one title value.\"\n : \"Archive title clear does not accept a value.\",\n helpRoute,\n ),\n );\n }\n const unsupported = Object.entries(values).find(\n ([key, value]) =>\n key !== \"help\" && value !== undefined && value !== false,\n );\n if (unsupported !== undefined) {\n throw new Error(\n withHelpRoute(\n `Archive title ${action} does not support --${unsupported[0]}.`,\n helpRoute,\n ),\n );\n }\n return {\n args: {\n action,\n archivePath,\n ...(tail[0] === undefined ? {} : { title: tail[0] }),\n },\n help: false,\n kind: \"archive-title\",\n };\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 cache does not support \\`${action}\\`. Read the index cache directly, or use sync or clean.`,\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 === \"sync\") {\n rejectStreamingJSONFlag(action, values.json, helpRoute);\n } else {\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectArchiveBooleanFlag(\n action,\n \"--skip-unindexed\",\n values[\"skip-unindexed\"],\n helpRoute,\n );\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 ...(values[\"skip-unindexed\"] === true ? { skipUnindexed: true } : {}),\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 ArchiveTriplePattern,\n type ParsedWikiGraphLibraryUri,\n} from \"wiki-graph-sdk\";\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\", \"replace\"]);\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([\"clean\", \"get\", \"sync\"]);\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\" || target.kind === \"archive-collection\") &&\n ((target.kind === \"scope\" &&\n target.objectUri !== undefined &&\n target.objectUri !== \"wikg://index\") ||\n values.query !== undefined ||\n (target.kind === \"scope\" && values.limit !== undefined) ||\n (target.kind === \"scope\" && values.cursor !== 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 (\n target.kind === \"archive-collection\" &&\n (action === \"search\" || values.query !== undefined)\n ) {\n return parseLibraryQueryArguments(\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 ||\n action === \"related\" ||\n action === \"evidence\" ||\n action === \"pack\" ||\n action === \"search\" ||\n (action === \"list\" && explicitAction === undefined))\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(\n withHelpRoute(\n formatMissingLibraryQueryObjectUriMessage(action),\n formatWikiGraphHelpCommand(uri, action),\n ),\n );\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 ...optionalTriplePattern(getLibraryQueryTriplePattern(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 formatMissingLibraryQueryObjectUriMessage(action: string): string {\n return `The library \\`${action}\\` predicate requires a concrete library object URI.`;\n}\n\nfunction optionalDefaultKinds(\n defaultKinds: readonly CLIObjectKind[] | undefined,\n): { readonly defaultKinds?: readonly CLIObjectKind[] } {\n return defaultKinds === undefined ? {} : { defaultKinds };\n}\n\nfunction optionalTriplePattern(\n triplePattern: ArchiveTriplePattern | undefined,\n): { readonly triplePattern?: ArchiveTriplePattern } {\n return triplePattern === undefined ? {} : { triplePattern };\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 chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget !== undefined) {\n switch (chapterTarget.kind) {\n case \"collection\":\n case \"chapter\":\n return [\"chapter\"];\n case \"lens\":\n case \"chapter-lens\":\n return [chapterTarget.lens];\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return [\"triple\"];\n case \"chapter-resource\":\n return chapterTarget.resource === \"title\"\n ? undefined\n : [chapterTarget.resource];\n case \"chapter-state\":\n case \"tree\":\n return undefined;\n }\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 getLibraryQueryTriplePattern(\n objectUri: string | undefined,\n): ArchiveTriplePattern | undefined {\n if (objectUri === undefined) {\n return undefined;\n }\n const chapterTarget = parseChapterTarget(objectUri);\n if (chapterTarget === undefined) {\n return undefined;\n }\n\n switch (chapterTarget.kind) {\n case \"triple-pattern-lens\":\n case \"chapter-triple-pattern-lens\":\n return chapterTarget.pattern;\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 if (isLibraryScopeObjectUri(objectUri)) {\n return query === undefined ? \"list\" : \"search\";\n }\n\n return \"get\";\n}\n\nfunction isLibraryScopeObjectUri(objectUri: string): boolean {\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 true;\n case \"chapter-resource\":\n case \"chapter-state\":\n case \"tree\":\n return false;\n }\n }\n\n const path = stripObjectUriPrefix(objectUri);\n return /^(?:chunk|entity|source|summary|triple)$/u.test(path)\n ? true\n : isTripleScopePath(path);\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 formatWikiGraphHelpCommand(uri),\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 === \"sync\") {\n if (values.json === true) {\n throw new Error(\n withHelpRoute(\n \"The `sync` 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: {\n action: \"sync-index\",\n ...(values.jsonl === undefined ? {} : { jsonl: values.jsonl }),\n target,\n },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--indexes\", values.indexes, helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n return {\n args: {\n action: action === \"clean\" ? \"clean-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, \"--json-input\", values[\"json-input\"], helpRoute);\n rejectArchiveBooleanFlag(action, \"--jsonl\", values.jsonl, helpRoute);\n rejectExtraPositionals(action, tail, 0, helpRoute);\n\n if (action === \"replace\") {\n if (values.input === undefined) {\n throw new Error(withHelpRoute(\"Missing --input <path>.\", helpRoute));\n }\n rejectArchiveFlag(action, \"--to\", values.to, helpRoute);\n rejectArchiveBooleanFlag(action, \"--confirm\", values.confirm, helpRoute);\n return {\n args: { action, inputPath: values.input, json: values.json, target },\n help: false,\n kind: \"library\",\n };\n }\n\n rejectArchiveFlag(action, \"--input\", values.input, 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 \"clean-index\":\n case \"get-index\":\n case \"sync-index\":\n case \"clear\":\n case \"archive-tree\":\n case \"add\":\n case \"create\":\n case \"rebind\":\n case \"replace\":\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 \"replace\":\n case \"add\":\n case \"rebind\":\n case \"clean-index\":\n case \"get-index\":\n case \"sync-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 === \"clean-index\" ||\n action === \"create\" ||\n action === \"delete\" ||\n action === \"get\" ||\n action === \"get-index\" ||\n action === \"list\" ||\n action === \"put\" ||\n action === \"rebind\" ||\n action === \"replace\" ||\n action === \"remove\" ||\n action === \"scan\" ||\n action === \"set\" ||\n action === \"sync-index\"\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 CLIArchiveTitleArguments,\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 runArchiveTitleCommand(\n args: CLIArchiveTitleArguments,\n): Promise<void> {\n const command = await import(\"./archive-title.js\");\n\n return command.runArchiveTitleCommand(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 runArchiveTitleCommand,\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 {\n formatCLIJSON,\n formatCLIJSONLine,\n getRelativeArchiveUriResolution,\n} from \"../support/index.js\";\nimport { readCLIVersion } from \"../support/index.js\";\nimport { isWikiGraphHomeTarget } from \"../runtime/home-target.js\";\nimport {\n formatError,\n LLMPaymentRequiredError,\n WikiGraphError,\n} from \"wiki-graph-sdk\";\nimport { getWikiGraphSDK } from \"../runtime/context.js\";\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 if (\n parsed.kind !== \"maintenance-command\" ||\n !isWikiGraphHomeTarget(parsed.args.target)\n ) {\n await getWikiGraphSDK().run(() => undefined);\n }\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-title\":\n await runArchiveTitleCommand(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(\n formatCLIJSON(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n if (shouldWriteJSONLError(input.argv)) {\n input.stdout.write(\n formatCLIJSONLine(createCLIErrorObject(error, input.argv)),\n );\n return { exitCode: 1 };\n }\n input.stderr.write(`${formatCLIError(error, input.argv)}\\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, argv: readonly string[]): string {\n if (error instanceof LLMPaymentRequiredError) {\n return \"LLM payment required. Check your provider billing status or account balance.\";\n }\n\n const message = formatTerminalRemediation(error, formatError(error));\n const relativeResolution = hasErrorCode(error, \"ENOENT\")\n ? getRelativeArchiveUriResolution(argv[0] ?? \"\")\n : undefined;\n if (relativeResolution === undefined) {\n return message;\n }\n\n return `${message}\\nArchive URI \\`${relativeResolution.inputUri}\\` is relative to the current working directory:\\n ${relativeResolution.workingDirectory}\\nResolved archive path:\\n ${relativeResolution.resolvedArchivePath}\\nSee: wg help uri`;\n}\n\nfunction formatTerminalRemediation(error: unknown, message: string): string {\n if (error instanceof WikiGraphError) {\n const chapterId = error.details.chapterId;\n switch (error.code) {\n case \"chapter_has_children\":\n return `${message} Use --recursive to remove it and its descendants.`;\n case \"chapter_key_missing\":\n return \"Missing chapter key in TOC. Run a writable chapter operation or `wg maintenance upgrade` before using read-only chapter paths.\";\n case \"chapter_not_found_ids\":\n return `${message} Use \\`wg <archive-uri>/chapter list\\` to discover chapter ids.`;\n case \"chapter_not_found_uris\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"parent_chapter_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter\\` to discover chapter URIs.`;\n case \"chapter_summary_missing_source\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the chapter with \\`wg <archive-uri>/chapter/${chapterId}/source get\\`.`;\n case \"chapter_summary_missing_tree\":\n return `${message} Run \\`wg wikg://local/job add --input <chapter-uri> --task reading-summary --accept-cost\\` before export, or inspect the archive with \\`wg <archive-uri>/chapter/tree get\\`.`;\n case \"graph_node_not_found\":\n return `${message} Use \\`wg <archive-uri>/chapter/${chapterId}/chunk list\\` to discover chunk ids.`;\n case \"home_upgrade_blocked\":\n return `${message} Stop the active operation, then run \\`wg maintenance upgrade home\\`. See: \\`wg maintenance upgrade --help\\`.`;\n case \"library_query_unindexed\":\n return `${message} Build missing chapter index artifacts, or rerun with --skip-unindexed to search indexed chapters only.`;\n case \"summary_not_completed\":\n return `${message} Use \\`wg wikg://<archive.wikg>/chapter list\\` to discover chapter ids, then \\`wg wikg://<archive.wikg>/chapter/${chapterId}/summary get\\` after summary is ready.`;\n case \"uri_expected\":\n break;\n }\n }\n\n if (\n message.startsWith(\n \"Expected a Wiki Graph URI with a .wikg archive locator:\",\n ) &&\n message.includes(\"\\nExample:\")\n ) {\n return `${message}\\nSee: wg help uri`;\n }\n const roleMatch =\n /^Role filtering is only available for related entities: (.+)$/u.exec(\n message,\n );\n return roleMatch === null\n ? message\n : `--role is only available for entity related: ${roleMatch[1]}`;\n}\n\nfunction createCLIErrorObject(\n error: unknown,\n argv: readonly string[],\n): {\n readonly error: {\n readonly message: string;\n readonly type: string;\n };\n} {\n return {\n error: {\n message: formatCLIError(error, argv),\n type:\n error instanceof LLMPaymentRequiredError\n ? \"llm_payment_required\"\n : \"error\",\n },\n };\n}\n\nfunction hasErrorCode(error: unknown, code: string): boolean {\n const visited = new Set<unknown>();\n let current: unknown = error;\n\n while (current !== undefined && !visited.has(current)) {\n visited.add(current);\n if (\n current instanceof Error &&\n \"code\" in current &&\n (current as Error & { readonly code?: unknown }).code === code\n ) {\n return true;\n }\n current = current instanceof Error ? current.cause : undefined;\n }\n\n return false;\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 * from \"wiki-graph-sdk/node-platform\";\n"],"mappings":"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","names":["resolve","join","resolve","parseLocatedWikiGraphUri","loadWikiGraphRuntimeConfig","init_uri","init_uri","init_uri","init_uri","init_evidence","init_page","init_evidence","init_page","DEFAULT_GET_EVIDENCE_LIMIT","init_types","parseWikiGraphLibraryUri","init_uri","parseLocatedWikiGraphUri","DEFAULT_GET_EVIDENCE_LIMIT","init_types","init_uri","init_uri","init_types","init_uri","formatWikiGraphLibraryUri","parseWikiGraphLibraryUri","context","readPage","existsSync","join","resolve","formatLocatedChapterUri","homedir","join","formatLocatedChapterUri","requireChapterPath","homedir","join","resolve","maintenance_exports","init_maintenance","local_config_exports","init_local_config","readFile","formatWikiGraphLibraryUri","INDEX_PROGRESS_OUTPUT_INTERVAL_MS","formatIndexCounter","result","parseJSONInput","readFile","writeMetadataMap","readMetadataInput","parseMetadataMap","normalizeMetadataKey","readRawInput","parseJSONInput","formatMetadataTextValue","Writable","createWikiGraphSDK","existsSync","dirname","join","parse","resolve","resolve","parse","join","dirname","existsSync","parseChapterPath","parseChapterPath","WIKI_GRAPH_URI_PREFIX","value","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","parseWikiGraphLibraryUri","runArchiveCommand","runArchiveTitleCommand","runArchiveChapterCommand","runArchiveIndexCommand","runArchiveCoverCommand","runArchiveMetaCommand","runConvertCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","runLibraryCommand","runObjectMetadataCommand","runQueueCommand","runConvertCommand","runArchiveMetaCommand","runArchiveCoverCommand","runObjectMetadataCommand","runLibraryCommand","runArchiveChapterCommand","runArchiveCommand","runArchiveTitleCommand","runArchiveIndexCommand","runQueueCommand","runGcCommand","runLegacyCommand","runMaintenanceCommand","runLocalConfigCommand","createWikiGraphSDK","Writable"]}