jp_lit_export_view
Export cache-based view results (list, cross-search, re-extraction) directly to an exports folder. Supports full export of refined results with duplicate check notes.
Instructions
キャッシュ系ビュー(一覧・横断検索・再抽出)の結果を exports/ に直接書き出す。refined_results は全件 export と重複確認ノートに対応
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | ||
| format | Yes | ||
| path | Yes | ||
| exported_at | Yes | ||
| item_count | Yes |
Implementation Reference
- src/tools/jpLitExportView.ts:204-252 (handler)The main handler function 'createJpLitExportViewTool' that executes the export view logic. It parses input (cache_list, cache_query, or refined_results), calls the appropriate view tool, formats output as JSON or Markdown, writes to a file under exports/, and returns structured content.
export function createJpLitExportViewTool( tools: ViewTools, baseDir = process.cwd() ) { return async (input: unknown) => { const parsed = exportViewInputSchema.parse(input); let output: ViewOutput; if (parsed.view === "cache_list") { const result = await tools.listCache(parsed.params); output = result.structuredContent; } else if (parsed.view === "cache_query") { const result = await tools.searchCacheIndex(parsed.params); output = result.structuredContent; } else { output = await resolveRefinedResultsOutput(tools, parsed); } const target = parsed.output_path ?? defaultExportPath(baseDir, parsed.view, parsed.format); const exportedAt = new Date().toISOString(); const itemCount = resolveItemCount(parsed.view, output); await mkdir(path.dirname(target), { recursive: true }); if (parsed.format === "json") { await writeFile(target, JSON.stringify(output, null, 2), "utf8"); } else { await writeFile(target, renderMarkdown(parsed.view, output, exportedAt), "utf8"); } const structuredContent: ExportViewOutput = exportViewOutputSchema.parse({ view: parsed.view, format: parsed.format, path: target, exported_at: exportedAt, item_count: itemCount }); return { content: [ { type: "text" as const, text: JSON.stringify(structuredContent, null, 2) } ], structuredContent }; }; } - src/tools/jpLitExportView.ts:26-43 (helper)Helper functions: defaultExportPath generates a timestamped export file path under exports/; resolveItemCount extracts the item count from different view output types.
function defaultExportPath( baseDir: string, view: "cache_list" | "cache_query" | "refined_results", format: "markdown" | "json" ) { const extension = format === "markdown" ? "md" : "json"; const stamp = new Date().toISOString().replace(/[:.]/g, "-"); return path.join(getExportsRoot(baseDir), `${view}.${stamp}.${extension}`); } function resolveItemCount(view: "cache_list" | "cache_query" | "refined_results", output: ViewOutput) { if (view === "refined_results") { const payload = output as RefineResultsOutput; return payload.total_after; } const payload = output as ListCacheOutput | SearchCacheIndexOutput; return payload.total; }