wiki-graph-core 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/data/editor/clue_reviewer.jinja +410 -0
- package/data/editor/clue_reviewer_generator.jinja +428 -0
- package/data/editor/revision_feedback.jinja +5 -0
- package/data/editor/text_compressor.jinja +127 -0
- package/data/guaranteed/response_intent_classifier.jinja +8 -0
- package/data/help/commands/archive/next.jinja +29 -0
- package/data/help/commands/gc.jinja +38 -0
- package/data/help/commands/legacy/migrate.jinja +20 -0
- package/data/help/commands/legacy.jinja +19 -0
- package/data/help/commands/maintenance/chapter/add.jinja +41 -0
- package/data/help/commands/maintenance/chapter/list.jinja +33 -0
- package/data/help/commands/maintenance/chapter/move.jinja +36 -0
- package/data/help/commands/maintenance/chapter/remove.jinja +26 -0
- package/data/help/commands/maintenance/chapter/reset.jinja +29 -0
- package/data/help/commands/maintenance/chapter/set-source.jinja +34 -0
- package/data/help/commands/maintenance/chapter/set-summary.jinja +31 -0
- package/data/help/commands/maintenance/chapter/set-title.jinja +29 -0
- package/data/help/commands/maintenance/chapter/tree.jinja +58 -0
- package/data/help/commands/maintenance/chapter.jinja +59 -0
- package/data/help/commands/maintenance/cover.jinja +28 -0
- package/data/help/commands/maintenance/meta.jinja +55 -0
- package/data/help/commands/predicate.jinja +460 -0
- package/data/help/commands/root.jinja +83 -0
- package/data/help/commands/transform.jinja +34 -0
- package/data/help/commands/uri.jinja +274 -0
- package/data/help/topics/config.jinja +88 -0
- package/data/help/topics/format.jinja +72 -0
- package/data/help/topics/readiness.jinja +99 -0
- package/data/help/topics/recipe.jinja +151 -0
- package/data/help/topics/runtime.jinja +62 -0
- package/data/help/topics/uri.jinja +178 -0
- package/data/output/epub/cover.xhtml.jinja +13 -0
- package/data/output/epub/nav.xhtml.jinja +12 -0
- package/data/output/epub/package.opf.xml.jinja +39 -0
- package/data/output/epub/section.xhtml.jinja +12 -0
- package/data/topologization/book_coherence_extraction.jinja +223 -0
- package/data/topologization/chunk_extraction.jinja +233 -0
- package/data/topologization/evidence_choice.jinja +38 -0
- package/data/topologization/translate_chunks.jinja +138 -0
- package/data/topologization/user_focused_extraction.jinja +378 -0
- package/dist/archive/query/archive-view.d.ts +26 -0
- package/dist/archive/query/archive-view.js +4540 -0
- package/dist/archive/query/archive-view.js.map +1 -0
- package/dist/archive/query/continuation-cursor.d.ts +61 -0
- package/dist/archive/query/continuation-cursor.js +363 -0
- package/dist/archive/query/continuation-cursor.js.map +1 -0
- package/dist/archive/query/index.d.ts +29 -0
- package/dist/archive/query/index.js +63 -0
- package/dist/archive/query/index.js.map +1 -0
- package/dist/archive/query/lexical-search.d.ts +22 -0
- package/dist/archive/query/lexical-search.js +137 -0
- package/dist/archive/query/lexical-search.js.map +1 -0
- package/dist/archive/query/search-cache.d.ts +192 -0
- package/dist/archive/query/search-cache.js +1248 -0
- package/dist/archive/query/search-cache.js.map +1 -0
- package/dist/archive/search-index/index.d.ts +26 -0
- package/dist/archive/search-index/index.js +29 -0
- package/dist/archive/search-index/index.js.map +1 -0
- package/dist/archive/search-index/search-index.d.ts +26 -0
- package/dist/archive/search-index/search-index.js +555 -0
- package/dist/archive/search-index/search-index.js.map +1 -0
- package/dist/archive/search-index/search-tokenizer.d.ts +16 -0
- package/dist/archive/search-index/search-tokenizer.js +225 -0
- package/dist/archive/search-index/search-tokenizer.js.map +1 -0
- package/dist/common/cli-command.d.ts +4 -0
- package/dist/common/cli-command.js +7 -0
- package/dist/common/cli-command.js.map +1 -0
- package/dist/common/data-dir.d.ts +3 -0
- package/dist/common/data-dir.js +48 -0
- package/dist/common/data-dir.js.map +1 -0
- package/dist/common/language.d.ts +55 -0
- package/dist/common/language.js +208 -0
- package/dist/common/language.js.map +1 -0
- package/dist/common/llm-scope.d.ts +19 -0
- package/dist/common/llm-scope.js +31 -0
- package/dist/common/llm-scope.js.map +1 -0
- package/dist/common/logging.d.ts +22 -0
- package/dist/common/logging.js +141 -0
- package/dist/common/logging.js.map +1 -0
- package/dist/common/template.d.ts +8 -0
- package/dist/common/template.js +54 -0
- package/dist/common/template.js.map +1 -0
- package/dist/common/tinyld-language.d.ts +6 -0
- package/dist/common/tinyld-language.js +34 -0
- package/dist/common/tinyld-language.js.map +1 -0
- package/dist/common/wiki-graph-dir.d.ts +10 -0
- package/dist/common/wiki-graph-dir.js +41 -0
- package/dist/common/wiki-graph-dir.js.map +1 -0
- package/dist/common/wiki-graph-temp.d.ts +6 -0
- package/dist/common/wiki-graph-temp.js +21 -0
- package/dist/common/wiki-graph-temp.js.map +1 -0
- package/dist/common/wiki-graph-uri.d.ts +28 -0
- package/dist/common/wiki-graph-uri.js +171 -0
- package/dist/common/wiki-graph-uri.js.map +1 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +13 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/task-context.d.ts +41 -0
- package/dist/context/task-context.js +111 -0
- package/dist/context/task-context.js.map +1 -0
- package/dist/document/database.d.ts +30 -0
- package/dist/document/database.js +273 -0
- package/dist/document/database.js.map +1 -0
- package/dist/document/document.d.ts +153 -0
- package/dist/document/document.js +615 -0
- package/dist/document/document.js.map +1 -0
- package/dist/document/fragments.d.ts +63 -0
- package/dist/document/fragments.js +371 -0
- package/dist/document/fragments.js.map +1 -0
- package/dist/document/index.d.ts +13 -0
- package/dist/document/index.js +62 -0
- package/dist/document/index.js.map +1 -0
- package/dist/document/schema.d.ts +8 -0
- package/dist/document/schema.js +472 -0
- package/dist/document/schema.js.map +1 -0
- package/dist/document/shared-state-database.d.ts +9 -0
- package/dist/document/shared-state-database.js +193 -0
- package/dist/document/shared-state-database.js.map +1 -0
- package/dist/document/stores.d.ts +203 -0
- package/dist/document/stores.js +1678 -0
- package/dist/document/stores.js.map +1 -0
- package/dist/document/text-streams.d.ts +86 -0
- package/dist/document/text-streams.js +515 -0
- package/dist/document/text-streams.js.map +1 -0
- package/dist/document/types.d.ts +148 -0
- package/dist/document/types.js +69 -0
- package/dist/document/types.js.map +1 -0
- package/dist/editor/clue.d.ts +27 -0
- package/dist/editor/clue.js +158 -0
- package/dist/editor/clue.js.map +1 -0
- package/dist/editor/compressor.d.ts +18 -0
- package/dist/editor/compressor.js +68 -0
- package/dist/editor/compressor.js.map +1 -0
- package/dist/editor/editor.d.ts +39 -0
- package/dist/editor/editor.js +253 -0
- package/dist/editor/editor.js.map +1 -0
- package/dist/editor/feedback.d.ts +16 -0
- package/dist/editor/feedback.js +104 -0
- package/dist/editor/feedback.js.map +1 -0
- package/dist/editor/index.d.ts +17 -0
- package/dist/editor/index.js +5 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/editor/language-review.d.ts +14 -0
- package/dist/editor/language-review.js +35 -0
- package/dist/editor/language-review.js.map +1 -0
- package/dist/editor/log.d.ts +37 -0
- package/dist/editor/log.js +202 -0
- package/dist/editor/log.js.map +1 -0
- package/dist/editor/markup.d.ts +20 -0
- package/dist/editor/markup.js +294 -0
- package/dist/editor/markup.js.map +1 -0
- package/dist/editor/prompt-templates.d.ts +6 -0
- package/dist/editor/prompt-templates.js +11 -0
- package/dist/editor/prompt-templates.js.map +1 -0
- package/dist/editor/response.d.ts +5 -0
- package/dist/editor/response.js +31 -0
- package/dist/editor/response.js.map +1 -0
- package/dist/editor/review.d.ts +34 -0
- package/dist/editor/review.js +189 -0
- package/dist/editor/review.js.map +1 -0
- package/dist/editor/types.d.ts +31 -0
- package/dist/editor/types.js +21 -0
- package/dist/editor/types.js.map +1 -0
- package/dist/evidence-selection/anchor-resolver.d.ts +43 -0
- package/dist/evidence-selection/anchor-resolver.js +783 -0
- package/dist/evidence-selection/anchor-resolver.js.map +1 -0
- package/dist/evidence-selection/anchor-types.d.ts +27 -0
- package/dist/evidence-selection/anchor-types.js +1 -0
- package/dist/evidence-selection/anchor-types.js.map +1 -0
- package/dist/evidence-selection/index.d.ts +8 -0
- package/dist/evidence-selection/index.js +32 -0
- package/dist/evidence-selection/index.js.map +1 -0
- package/dist/evidence-selection/prompt.d.ts +18 -0
- package/dist/evidence-selection/prompt.js +54 -0
- package/dist/evidence-selection/prompt.js.map +1 -0
- package/dist/evidence-selection/quote-score.d.ts +29 -0
- package/dist/evidence-selection/quote-score.js +331 -0
- package/dist/evidence-selection/quote-score.js.map +1 -0
- package/dist/evidence-selection/selection-resolver.d.ts +19 -0
- package/dist/evidence-selection/selection-resolver.js +303 -0
- package/dist/evidence-selection/selection-resolver.js.map +1 -0
- package/dist/evidence-selection/text.d.ts +4 -0
- package/dist/evidence-selection/text.js +66 -0
- package/dist/evidence-selection/text.js.map +1 -0
- package/dist/evidence-selection/types.d.ts +36 -0
- package/dist/evidence-selection/types.js +1 -0
- package/dist/evidence-selection/types.js.map +1 -0
- package/dist/facade/app.d.ts +75 -0
- package/dist/facade/app.js +141 -0
- package/dist/facade/app.js.map +1 -0
- package/dist/facade/build-queue.d.ts +181 -0
- package/dist/facade/build-queue.js +1442 -0
- package/dist/facade/build-queue.js.map +1 -0
- package/dist/facade/chapter-build.d.ts +60 -0
- package/dist/facade/chapter-build.js +1020 -0
- package/dist/facade/chapter-build.js.map +1 -0
- package/dist/facade/chapter.d.ts +168 -0
- package/dist/facade/chapter.js +944 -0
- package/dist/facade/chapter.js.map +1 -0
- package/dist/facade/digest.d.ts +55 -0
- package/dist/facade/digest.js +168 -0
- package/dist/facade/digest.js.map +1 -0
- package/dist/facade/graph.d.ts +60 -0
- package/dist/facade/graph.js +203 -0
- package/dist/facade/graph.js.map +1 -0
- package/dist/facade/import.d.ts +49 -0
- package/dist/facade/import.js +262 -0
- package/dist/facade/import.js.map +1 -0
- package/dist/facade/index.d.ts +39 -0
- package/dist/facade/index.js +171 -0
- package/dist/facade/index.js.map +1 -0
- package/dist/facade/knowledge-graph-build.d.ts +75 -0
- package/dist/facade/knowledge-graph-build.js +897 -0
- package/dist/facade/knowledge-graph-build.js.map +1 -0
- package/dist/facade/llm-sampling.d.ts +11 -0
- package/dist/facade/llm-sampling.js +58 -0
- package/dist/facade/llm-sampling.js.map +1 -0
- package/dist/facade/types.d.ts +8 -0
- package/dist/facade/types.js +1 -0
- package/dist/facade/types.js.map +1 -0
- package/dist/facade/wiki-graph-archive.d.ts +41 -0
- package/dist/facade/wiki-graph-archive.js +130 -0
- package/dist/facade/wiki-graph-archive.js.map +1 -0
- package/dist/gc/files.d.ts +15 -0
- package/dist/gc/files.js +141 -0
- package/dist/gc/files.js.map +1 -0
- package/dist/gc/index.d.ts +2 -0
- package/dist/gc/index.js +5 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/gc/lock.d.ts +3 -0
- package/dist/gc/lock.js +137 -0
- package/dist/gc/lock.js.map +1 -0
- package/dist/gc/runner.d.ts +9 -0
- package/dist/gc/runner.js +129 -0
- package/dist/gc/runner.js.map +1 -0
- package/dist/gc/tmp-gc.d.ts +5 -0
- package/dist/gc/tmp-gc.js +57 -0
- package/dist/gc/tmp-gc.js.map +1 -0
- package/dist/gc/types.d.ts +24 -0
- package/dist/gc/types.js +1 -0
- package/dist/gc/types.js.map +1 -0
- package/dist/gc.cjs +10041 -0
- package/dist/gc.cjs.map +1 -0
- package/dist/gc.d.cts +10 -0
- package/dist/gc.d.ts +2 -0
- package/dist/gc.js +5 -0
- package/dist/gc.js.map +1 -0
- package/dist/guaranteed/classifier.d.ts +10 -0
- package/dist/guaranteed/classifier.js +88 -0
- package/dist/guaranteed/classifier.js.map +1 -0
- package/dist/guaranteed/errors.d.ts +38 -0
- package/dist/guaranteed/errors.js +73 -0
- package/dist/guaranteed/errors.js.map +1 -0
- package/dist/guaranteed/index.d.ts +7 -0
- package/dist/guaranteed/index.js +21 -0
- package/dist/guaranteed/index.js.map +1 -0
- package/dist/guaranteed/request.d.ts +8 -0
- package/dist/guaranteed/request.js +206 -0
- package/dist/guaranteed/request.js.map +1 -0
- package/dist/guaranteed/response.d.ts +12 -0
- package/dist/guaranteed/response.js +98 -0
- package/dist/guaranteed/response.js.map +1 -0
- package/dist/guaranteed/types.d.ts +20 -0
- package/dist/guaranteed/types.js +1 -0
- package/dist/guaranteed/types.js.map +1 -0
- package/dist/index-B8NNnQ8P.d.ts +424 -0
- package/dist/index.cjs +34774 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2462 -0
- package/dist/index.d.ts +79 -0
- package/dist/index.js +168 -0
- package/dist/index.js.map +1 -0
- package/dist/legacy-sdpub/upgrade.d.ts +7 -0
- package/dist/legacy-sdpub/upgrade.js +795 -0
- package/dist/legacy-sdpub/upgrade.js.map +1 -0
- package/dist/llm/cache.d.ts +13 -0
- package/dist/llm/cache.js +35 -0
- package/dist/llm/cache.js.map +1 -0
- package/dist/llm/client.d.ts +26 -0
- package/dist/llm/client.js +572 -0
- package/dist/llm/client.js.map +1 -0
- package/dist/llm/context.d.ts +22 -0
- package/dist/llm/context.js +78 -0
- package/dist/llm/context.js.map +1 -0
- package/dist/llm/errors.d.ts +7 -0
- package/dist/llm/errors.js +12 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/index.d.ts +7 -0
- package/dist/llm/index.js +17 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/request-log.d.ts +9 -0
- package/dist/llm/request-log.js +35 -0
- package/dist/llm/request-log.js.map +1 -0
- package/dist/llm/sampling.d.ts +11 -0
- package/dist/llm/sampling.js +67 -0
- package/dist/llm/sampling.js.map +1 -0
- package/dist/llm/types.d.ts +50 -0
- package/dist/llm/types.js +1 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/output/epub/archive.d.ts +9 -0
- package/dist/output/epub/archive.js +81 -0
- package/dist/output/epub/archive.js.map +1 -0
- package/dist/output/epub/book.d.ts +15 -0
- package/dist/output/epub/book.js +76 -0
- package/dist/output/epub/book.js.map +1 -0
- package/dist/output/epub/content.d.ts +9 -0
- package/dist/output/epub/content.js +35 -0
- package/dist/output/epub/content.js.map +1 -0
- package/dist/output/epub/index.d.ts +20 -0
- package/dist/output/epub/index.js +14 -0
- package/dist/output/epub/index.js.map +1 -0
- package/dist/output/epub/model.d.ts +24 -0
- package/dist/output/epub/model.js +1 -0
- package/dist/output/epub/model.js.map +1 -0
- package/dist/output/epub/navigation.d.ts +10 -0
- package/dist/output/epub/navigation.js +39 -0
- package/dist/output/epub/navigation.js.map +1 -0
- package/dist/output/epub/package.d.ts +17 -0
- package/dist/output/epub/package.js +29 -0
- package/dist/output/epub/package.js.map +1 -0
- package/dist/output/epub/shared.d.ts +4 -0
- package/dist/output/epub/shared.js +12 -0
- package/dist/output/epub/shared.js.map +1 -0
- package/dist/output/epub/templates.d.ts +35 -0
- package/dist/output/epub/templates.js +26 -0
- package/dist/output/epub/templates.js.map +1 -0
- package/dist/output/index.d.ts +14 -0
- package/dist/output/index.js +11 -0
- package/dist/output/index.js.map +1 -0
- package/dist/output/plain-text.d.ts +18 -0
- package/dist/output/plain-text.js +56 -0
- package/dist/output/plain-text.js.map +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.js +14 -0
- package/dist/progress/index.js.map +1 -0
- package/dist/progress/reporter.d.ts +10 -0
- package/dist/progress/reporter.js +79 -0
- package/dist/progress/reporter.js.map +1 -0
- package/dist/progress/tracker.d.ts +37 -0
- package/dist/progress/tracker.js +119 -0
- package/dist/progress/tracker.js.map +1 -0
- package/dist/progress/types.d.ts +28 -0
- package/dist/progress/types.js +1 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/reader/attention/attention.d.ts +39 -0
- package/dist/reader/attention/attention.js +123 -0
- package/dist/reader/attention/attention.js.map +1 -0
- package/dist/reader/attention/index.d.ts +9 -0
- package/dist/reader/attention/index.js +5 -0
- package/dist/reader/attention/index.js.map +1 -0
- package/dist/reader/attention/wave-reflection.d.ts +21 -0
- package/dist/reader/attention/wave-reflection.js +153 -0
- package/dist/reader/attention/wave-reflection.js.map +1 -0
- package/dist/reader/attention/working-memory.d.ts +28 -0
- package/dist/reader/attention/working-memory.js +62 -0
- package/dist/reader/attention/working-memory.js.map +1 -0
- package/dist/reader/chunk-batch/extract.d.ts +13 -0
- package/dist/reader/chunk-batch/extract.js +14 -0
- package/dist/reader/chunk-batch/extract.js.map +1 -0
- package/dist/reader/chunk-batch/extractor.d.ts +17 -0
- package/dist/reader/chunk-batch/extractor.js +337 -0
- package/dist/reader/chunk-batch/extractor.js.map +1 -0
- package/dist/reader/chunk-batch/fragment-projection.d.ts +34 -0
- package/dist/reader/chunk-batch/fragment-projection.js +94 -0
- package/dist/reader/chunk-batch/fragment-projection.js.map +1 -0
- package/dist/reader/chunk-batch/index.d.ts +12 -0
- package/dist/reader/chunk-batch/index.js +13 -0
- package/dist/reader/chunk-batch/index.js.map +1 -0
- package/dist/reader/chunk-batch/language.d.ts +9 -0
- package/dist/reader/chunk-batch/language.js +23 -0
- package/dist/reader/chunk-batch/language.js.map +1 -0
- package/dist/reader/chunk-batch/parser.d.ts +94 -0
- package/dist/reader/chunk-batch/parser.js +640 -0
- package/dist/reader/chunk-batch/parser.js.map +1 -0
- package/dist/reader/chunk-batch/prompt-templates.d.ts +6 -0
- package/dist/reader/chunk-batch/prompt-templates.js +11 -0
- package/dist/reader/chunk-batch/prompt-templates.js.map +1 -0
- package/dist/reader/chunk-batch/types.d.ts +85 -0
- package/dist/reader/chunk-batch/types.js +1 -0
- package/dist/reader/chunk-batch/types.js.map +1 -0
- package/dist/reader/index.d.ts +13 -0
- package/dist/reader/index.js +7 -0
- package/dist/reader/index.js.map +1 -0
- package/dist/reader/reader.d.ts +37 -0
- package/dist/reader/reader.js +82 -0
- package/dist/reader/reader.js.map +1 -0
- package/dist/reader/segment/index.d.ts +2 -0
- package/dist/reader/segment/index.js +5 -0
- package/dist/reader/segment/index.js.map +1 -0
- package/dist/reader/segment/intl-segmenter.d.ts +5 -0
- package/dist/reader/segment/intl-segmenter.js +102 -0
- package/dist/reader/segment/intl-segmenter.js.map +1 -0
- package/dist/reader/segment/segment.d.ts +5 -0
- package/dist/reader/segment/segment.js +9 -0
- package/dist/reader/segment/segment.js.map +1 -0
- package/dist/reader/segment/types.d.ts +14 -0
- package/dist/reader/segment/types.js +1 -0
- package/dist/reader/segment/types.js.map +1 -0
- package/dist/reader/types.d.ts +29 -0
- package/dist/reader/types.js +1 -0
- package/dist/reader/types.js.map +1 -0
- package/dist/serial.d.ts +89 -0
- package/dist/serial.js +476 -0
- package/dist/serial.js.map +1 -0
- package/dist/source/adapter.d.ts +15 -0
- package/dist/source/adapter.js +1 -0
- package/dist/source/adapter.js.map +1 -0
- package/dist/source/epub/archive.d.ts +27 -0
- package/dist/source/epub/archive.js +189 -0
- package/dist/source/epub/archive.js.map +1 -0
- package/dist/source/epub/content.d.ts +22 -0
- package/dist/source/epub/content.js +183 -0
- package/dist/source/epub/content.js.map +1 -0
- package/dist/source/epub/document.d.ts +55 -0
- package/dist/source/epub/document.js +179 -0
- package/dist/source/epub/document.js.map +1 -0
- package/dist/source/epub/index.d.ts +10 -0
- package/dist/source/epub/index.js +6 -0
- package/dist/source/epub/index.js.map +1 -0
- package/dist/source/epub/navigation.d.ts +16 -0
- package/dist/source/epub/navigation.js +215 -0
- package/dist/source/epub/navigation.js.map +1 -0
- package/dist/source/epub/package.d.ts +33 -0
- package/dist/source/epub/package.js +237 -0
- package/dist/source/epub/package.js.map +1 -0
- package/dist/source/epub/xml.d.ts +16 -0
- package/dist/source/epub/xml.js +111 -0
- package/dist/source/epub/xml.js.map +1 -0
- package/dist/source/index.d.ts +12 -0
- package/dist/source/index.js +32 -0
- package/dist/source/index.js.map +1 -0
- package/dist/source/meta.d.ts +30 -0
- package/dist/source/meta.js +22 -0
- package/dist/source/meta.js.map +1 -0
- package/dist/source/plain-text.d.ts +16 -0
- package/dist/source/plain-text.js +86 -0
- package/dist/source/plain-text.js.map +1 -0
- package/dist/source/toc.d.ts +16 -0
- package/dist/source/toc.js +17 -0
- package/dist/source/toc.js.map +1 -0
- package/dist/source/types.d.ts +16 -0
- package/dist/source/types.js +1 -0
- package/dist/source/types.js.map +1 -0
- package/dist/topology/grouping.d.ts +15 -0
- package/dist/topology/grouping.js +18 -0
- package/dist/topology/grouping.js.map +1 -0
- package/dist/topology/index.d.ts +21 -0
- package/dist/topology/index.js +5 -0
- package/dist/topology/index.js.map +1 -0
- package/dist/topology/resource-segmentation.d.ts +13 -0
- package/dist/topology/resource-segmentation.js +111 -0
- package/dist/topology/resource-segmentation.js.map +1 -0
- package/dist/topology/segment-incision.d.ts +18 -0
- package/dist/topology/segment-incision.js +197 -0
- package/dist/topology/segment-incision.js.map +1 -0
- package/dist/topology/snake-detector.d.ts +13 -0
- package/dist/topology/snake-detector.js +520 -0
- package/dist/topology/snake-detector.js.map +1 -0
- package/dist/topology/snake-graph-builder.d.ts +14 -0
- package/dist/topology/snake-graph-builder.js +76 -0
- package/dist/topology/snake-graph-builder.js.map +1 -0
- package/dist/topology/topology.d.ts +29 -0
- package/dist/topology/topology.js +348 -0
- package/dist/topology/topology.js.map +1 -0
- package/dist/topology/weights.d.ts +10 -0
- package/dist/topology/weights.js +84 -0
- package/dist/topology/weights.js.map +1 -0
- package/dist/types-FVIqiLC9.d.cts +24 -0
- package/dist/utils/async-semaphore.d.ts +7 -0
- package/dist/utils/async-semaphore.js +40 -0
- package/dist/utils/async-semaphore.js.map +1 -0
- package/dist/utils/enum.d.ts +5 -0
- package/dist/utils/enum.js +18 -0
- package/dist/utils/enum.js.map +1 -0
- package/dist/utils/hash.d.ts +3 -0
- package/dist/utils/hash.js +132 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/node-error.d.ts +4 -0
- package/dist/utils/node-error.js +59 -0
- package/dist/utils/node-error.js.map +1 -0
- package/dist/wikg/archive-uri.d.ts +1 -0
- package/dist/wikg/archive-uri.js +37 -0
- package/dist/wikg/archive-uri.js.map +1 -0
- package/dist/wikg/archive.d.ts +28 -0
- package/dist/wikg/archive.js +496 -0
- package/dist/wikg/archive.js.map +1 -0
- package/dist/wikg/index.d.ts +31 -0
- package/dist/wikg/index.js +60 -0
- package/dist/wikg/index.js.map +1 -0
- package/dist/wikg/wikg-coordinator.d.ts +45 -0
- package/dist/wikg/wikg-coordinator.js +1687 -0
- package/dist/wikg/wikg-coordinator.js.map +1 -0
- package/dist/wikg/wiki-graph-archive-file.d.ts +42 -0
- package/dist/wikg/wiki-graph-archive-file.js +78 -0
- package/dist/wikg/wiki-graph-archive-file.js.map +1 -0
- package/dist/wikilink/index.d.ts +10 -0
- package/dist/wikilink/index.js +7 -0
- package/dist/wikilink/index.js.map +1 -0
- package/dist/wikilink/relation-discovery.d.ts +31 -0
- package/dist/wikilink/relation-discovery.js +477 -0
- package/dist/wikilink/relation-discovery.js.map +1 -0
- package/dist/wikilink/types.d.ts +23 -0
- package/dist/wikilink/types.js +1 -0
- package/dist/wikilink/types.js.map +1 -0
- package/dist/wikilink/window.d.ts +7 -0
- package/dist/wikilink/window.js +53 -0
- package/dist/wikilink/window.js.map +1 -0
- package/dist/wikimatch/enrichment.d.ts +10 -0
- package/dist/wikimatch/enrichment.js +55 -0
- package/dist/wikimatch/enrichment.js.map +1 -0
- package/dist/wikimatch/index.d.ts +16 -0
- package/dist/wikimatch/index.js +66 -0
- package/dist/wikimatch/index.js.map +1 -0
- package/dist/wikimatch/option-narrowing.d.ts +17 -0
- package/dist/wikimatch/option-narrowing.js +208 -0
- package/dist/wikimatch/option-narrowing.js.map +1 -0
- package/dist/wikimatch/options.d.ts +14 -0
- package/dist/wikimatch/options.js +155 -0
- package/dist/wikimatch/options.js.map +1 -0
- package/dist/wikimatch/policy-judge.d.ts +17 -0
- package/dist/wikimatch/policy-judge.js +430 -0
- package/dist/wikimatch/policy-judge.js.map +1 -0
- package/dist/wikimatch/range-suppression.d.ts +9 -0
- package/dist/wikimatch/range-suppression.js +27 -0
- package/dist/wikimatch/range-suppression.js.map +1 -0
- package/dist/wikimatch/surface-screening.d.ts +16 -0
- package/dist/wikimatch/surface-screening.js +168 -0
- package/dist/wikimatch/surface-screening.js.map +1 -0
- package/dist/wikimatch/surface-window.d.ts +6 -0
- package/dist/wikimatch/surface-window.js +44 -0
- package/dist/wikimatch/surface-window.js.map +1 -0
- package/dist/wikimatch/types.d.ts +151 -0
- package/dist/wikimatch/types.js +1 -0
- package/dist/wikimatch/types.js.map +1 -0
- package/dist/wikimatch/wikispine.d.ts +43 -0
- package/dist/wikimatch/wikispine.js +399 -0
- package/dist/wikimatch/wikispine.js.map +1 -0
- package/dist/wikimatch/window.d.ts +6 -0
- package/dist/wikimatch/window.js +83 -0
- package/dist/wikimatch/window.js.map +1 -0
- package/dist/wikimatch/words.d.ts +16 -0
- package/dist/wikimatch/words.js +66 -0
- package/dist/wikimatch/words.js.map +1 -0
- package/dist/wikipage/cache.d.ts +18 -0
- package/dist/wikipage/cache.js +404 -0
- package/dist/wikipage/cache.js.map +1 -0
- package/dist/wikipage/fetch-log.d.ts +17 -0
- package/dist/wikipage/fetch-log.js +143 -0
- package/dist/wikipage/fetch-log.js.map +1 -0
- package/dist/wikipage/index.d.ts +14 -0
- package/dist/wikipage/index.js +17 -0
- package/dist/wikipage/index.js.map +1 -0
- package/dist/wikipage/normalizer.d.ts +14 -0
- package/dist/wikipage/normalizer.js +147 -0
- package/dist/wikipage/normalizer.js.map +1 -0
- package/dist/wikipage/rate-limiter.d.ts +13 -0
- package/dist/wikipage/rate-limiter.js +84 -0
- package/dist/wikipage/rate-limiter.js.map +1 -0
- package/dist/wikipage/resolver.d.ts +26 -0
- package/dist/wikipage/resolver.js +325 -0
- package/dist/wikipage/resolver.js.map +1 -0
- package/dist/wikipage/types.d.ts +96 -0
- package/dist/wikipage/types.js +1 -0
- package/dist/wikipage/types.js.map +1 -0
- package/dist/wikipage/wikimedia-client.d.ts +48 -0
- package/dist/wikipage/wikimedia-client.js +397 -0
- package/dist/wikipage/wikimedia-client.js.map +1 -0
- package/dist/worker-BgQ0Xl8T.d.cts +181 -0
- package/dist/worker.cjs +5259 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +2 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.js +5 -0
- package/dist/worker.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { getLogger } from "../common/logging.js";
|
|
2
|
+
class LLMContext {
|
|
3
|
+
#cache;
|
|
4
|
+
#pendingCacheEntries = /* @__PURE__ */ new Map();
|
|
5
|
+
#requestFn;
|
|
6
|
+
#logFiles = [];
|
|
7
|
+
#finalized = false;
|
|
8
|
+
sessionId;
|
|
9
|
+
constructor(sessionId, requestFn, cache) {
|
|
10
|
+
this.sessionId = sessionId;
|
|
11
|
+
this.#cache = cache;
|
|
12
|
+
this.#requestFn = requestFn;
|
|
13
|
+
}
|
|
14
|
+
async request(messages, options = {}) {
|
|
15
|
+
this.#assertActive();
|
|
16
|
+
return await this.#requestFn({
|
|
17
|
+
logFiles: this.#logFiles,
|
|
18
|
+
messages,
|
|
19
|
+
options,
|
|
20
|
+
pendingCacheEntries: this.#pendingCacheEntries
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
async commit() {
|
|
24
|
+
if (this.#finalized) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
for (const entry of this.#pendingCacheEntries.values()) {
|
|
28
|
+
if (this.#cache !== void 0) {
|
|
29
|
+
await this.#cache.write(entry);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
this.#pendingCacheEntries.clear();
|
|
33
|
+
this.#finalized = true;
|
|
34
|
+
}
|
|
35
|
+
rollback() {
|
|
36
|
+
if (!this.#finalized) {
|
|
37
|
+
this.#pendingCacheEntries.clear();
|
|
38
|
+
this.#finalized = true;
|
|
39
|
+
}
|
|
40
|
+
return Promise.resolve();
|
|
41
|
+
}
|
|
42
|
+
async run(operation) {
|
|
43
|
+
try {
|
|
44
|
+
const result = await operation(this);
|
|
45
|
+
await this.commit();
|
|
46
|
+
return result;
|
|
47
|
+
} catch (error) {
|
|
48
|
+
await this.rollback();
|
|
49
|
+
this.#printLogFiles();
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
#assertActive() {
|
|
54
|
+
if (this.#finalized) {
|
|
55
|
+
throw new Error("LLMContext is already finalized");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
#printLogFiles() {
|
|
59
|
+
if (this.#logFiles.length === 0) {
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const logger = getLogger({
|
|
63
|
+
component: "llm-context",
|
|
64
|
+
sessionId: this.sessionId
|
|
65
|
+
});
|
|
66
|
+
logger.warn(
|
|
67
|
+
`
|
|
68
|
+
[LLMContext] Failed with ${this.#logFiles.length} log file(s):`
|
|
69
|
+
);
|
|
70
|
+
for (const [index, logFile] of this.#logFiles.entries()) {
|
|
71
|
+
logger.warn(` ${index + 1}. ${logFile}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
LLMContext
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/context.ts"],"sourcesContent":["import { getLogger } from \"../common/logging.js\";\nimport type { LLMCache, PendingCacheEntry } from \"./cache.js\";\nimport type { LLMessage, LLMRequestOptions } from \"./types.js\";\n\nexport interface LLMContextRequestInput<S extends string> {\n messages: readonly LLMessage[];\n options: LLMRequestOptions<S>;\n pendingCacheEntries?: Map<string, PendingCacheEntry>;\n logFiles?: string[];\n}\n\ntype LLMContextRequest<S extends string> = (\n input: LLMContextRequestInput<S>,\n) => Promise<string>;\n\nexport class LLMContext<S extends string> {\n readonly #cache: LLMCache | undefined;\n readonly #pendingCacheEntries = new Map<string, PendingCacheEntry>();\n readonly #requestFn: LLMContextRequest<S>;\n readonly #logFiles: string[] = [];\n #finalized = false;\n public readonly sessionId: number;\n\n public constructor(\n sessionId: number,\n requestFn: LLMContextRequest<S>,\n cache?: LLMCache,\n ) {\n this.sessionId = sessionId;\n this.#cache = cache;\n this.#requestFn = requestFn;\n }\n\n public async request(\n messages: readonly LLMessage[],\n options: LLMRequestOptions<S> = {},\n ): Promise<string> {\n this.#assertActive();\n\n return await this.#requestFn({\n logFiles: this.#logFiles,\n messages,\n options,\n pendingCacheEntries: this.#pendingCacheEntries,\n });\n }\n\n public async commit(): Promise<void> {\n if (this.#finalized) {\n return;\n }\n\n for (const entry of this.#pendingCacheEntries.values()) {\n if (this.#cache !== undefined) {\n await this.#cache.write(entry);\n }\n }\n\n this.#pendingCacheEntries.clear();\n this.#finalized = true;\n }\n\n public rollback(): Promise<void> {\n if (!this.#finalized) {\n this.#pendingCacheEntries.clear();\n this.#finalized = true;\n }\n\n return Promise.resolve();\n }\n\n public async run<T>(\n operation: (context: LLMContext<S>) => Promise<T>,\n ): Promise<T> {\n try {\n const result = await operation(this);\n await this.commit();\n return result;\n } catch (error) {\n await this.rollback();\n this.#printLogFiles();\n throw error;\n }\n }\n\n #assertActive(): void {\n if (this.#finalized) {\n throw new Error(\"LLMContext is already finalized\");\n }\n }\n\n #printLogFiles(): void {\n if (this.#logFiles.length === 0) {\n return;\n }\n\n const logger = getLogger({\n component: \"llm-context\",\n sessionId: this.sessionId,\n });\n\n logger.warn(\n `\\n[LLMContext] Failed with ${this.#logFiles.length} log file(s):`,\n );\n\n for (const [index, logFile] of this.#logFiles.entries()) {\n logger.warn(` ${index + 1}. ${logFile}`);\n }\n }\n}\n"],"mappings":"AAAA,SAAS,iBAAiB;AAenB,MAAM,WAA6B;AAAA,EAC/B;AAAA,EACA,uBAAuB,oBAAI,IAA+B;AAAA,EAC1D;AAAA,EACA,YAAsB,CAAC;AAAA,EAChC,aAAa;AAAA,EACG;AAAA,EAET,YACL,WACA,WACA,OACA;AACA,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA,EAEA,MAAa,QACX,UACA,UAAgC,CAAC,GAChB;AACjB,SAAK,cAAc;AAEnB,WAAO,MAAM,KAAK,WAAW;AAAA,MAC3B,UAAU,KAAK;AAAA,MACf;AAAA,MACA;AAAA,MACA,qBAAqB,KAAK;AAAA,IAC5B,CAAC;AAAA,EACH;AAAA,EAEA,MAAa,SAAwB;AACnC,QAAI,KAAK,YAAY;AACnB;AAAA,IACF;AAEA,eAAW,SAAS,KAAK,qBAAqB,OAAO,GAAG;AACtD,UAAI,KAAK,WAAW,QAAW;AAC7B,cAAM,KAAK,OAAO,MAAM,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,SAAK,qBAAqB,MAAM;AAChC,SAAK,aAAa;AAAA,EACpB;AAAA,EAEO,WAA0B;AAC/B,QAAI,CAAC,KAAK,YAAY;AACpB,WAAK,qBAAqB,MAAM;AAChC,WAAK,aAAa;AAAA,IACpB;AAEA,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,MAAa,IACX,WACY;AACZ,QAAI;AACF,YAAM,SAAS,MAAM,UAAU,IAAI;AACnC,YAAM,KAAK,OAAO;AAClB,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,KAAK,SAAS;AACpB,WAAK,eAAe;AACpB,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,gBAAsB;AACpB,QAAI,KAAK,YAAY;AACnB,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAAA,EACF;AAAA,EAEA,iBAAuB;AACrB,QAAI,KAAK,UAAU,WAAW,GAAG;AAC/B;AAAA,IACF;AAEA,UAAM,SAAS,UAAU;AAAA,MACvB,WAAW;AAAA,MACX,WAAW,KAAK;AAAA,IAClB,CAAC;AAED,WAAO;AAAA,MACL;AAAA,2BAA8B,KAAK,UAAU,MAAM;AAAA,IACrD;AAEA,eAAW,CAAC,OAAO,OAAO,KAAK,KAAK,UAAU,QAAQ,GAAG;AACvD,aAAO,KAAK,KAAK,QAAQ,CAAC,KAAK,OAAO,EAAE;AAAA,IAC1C;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
class LLMPaymentRequiredError extends Error {
|
|
2
|
+
isRetryable = false;
|
|
3
|
+
statusCode = 402;
|
|
4
|
+
constructor(message = "LLM payment required.", options) {
|
|
5
|
+
super(message, options);
|
|
6
|
+
this.name = "LLMPaymentRequiredError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export {
|
|
10
|
+
LLMPaymentRequiredError
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/errors.ts"],"sourcesContent":["export class LLMPaymentRequiredError extends Error {\n public readonly isRetryable = false;\n public readonly statusCode = 402;\n\n public constructor(\n message = \"LLM payment required.\",\n options?: ErrorOptions,\n ) {\n super(message, options);\n this.name = \"LLMPaymentRequiredError\";\n }\n}\n"],"mappings":"AAAO,MAAM,gCAAgC,MAAM;AAAA,EACjC,cAAc;AAAA,EACd,aAAa;AAAA,EAEtB,YACL,UAAU,yBACV,SACA;AACA,UAAM,SAAS,OAAO;AACtB,SAAK,OAAO;AAAA,EACd;AACF;","names":[]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { LLM } from './client.js';
|
|
2
|
+
export { LLMContext } from './context.js';
|
|
3
|
+
export { LLMPaymentRequiredError } from './errors.js';
|
|
4
|
+
export { getScopeDefaults, resolveSamplingSetting, resolveTemperatureSetting } from './sampling.js';
|
|
5
|
+
export { LLMLazyRequestOperation, LLMModel, LLMOptions, LLMRequestFunction, LLMRequestOptions, LLMStreamProgressCallback, LLMTokenUsage, LLMTokenUsageCallback, LLMessage, SamplingProfile, SamplingScopeConfig, TemperatureSetting } from './types.js';
|
|
6
|
+
import './cache.js';
|
|
7
|
+
import 'ai';
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LLM } from "./client.js";
|
|
2
|
+
import { LLMContext } from "./context.js";
|
|
3
|
+
import { LLMPaymentRequiredError } from "./errors.js";
|
|
4
|
+
import {
|
|
5
|
+
getScopeDefaults,
|
|
6
|
+
resolveSamplingSetting,
|
|
7
|
+
resolveTemperatureSetting
|
|
8
|
+
} from "./sampling.js";
|
|
9
|
+
export {
|
|
10
|
+
LLM,
|
|
11
|
+
LLMContext,
|
|
12
|
+
LLMPaymentRequiredError,
|
|
13
|
+
getScopeDefaults,
|
|
14
|
+
resolveSamplingSetting,
|
|
15
|
+
resolveTemperatureSetting
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/index.ts"],"sourcesContent":["export { LLM } from \"./client.js\";\nexport { LLMContext } from \"./context.js\";\nexport { LLMPaymentRequiredError } from \"./errors.js\";\nexport {\n getScopeDefaults,\n resolveSamplingSetting,\n resolveTemperatureSetting,\n} from \"./sampling.js\";\nexport type {\n LLMessage,\n LLMLazyRequestOperation,\n LLMModel,\n LLMOptions,\n LLMRequestFunction,\n LLMRequestOptions,\n LLMStreamProgressCallback,\n LLMTokenUsage,\n LLMTokenUsageCallback,\n SamplingProfile,\n SamplingScopeConfig,\n TemperatureSetting,\n} from \"./types.js\";\n"],"mappings":"AAAA,SAAS,WAAW;AACpB,SAAS,kBAAkB;AAC3B,SAAS,+BAA+B;AACxC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare class RequestLog {
|
|
2
|
+
#private;
|
|
3
|
+
constructor(filePath?: string);
|
|
4
|
+
get filePath(): string | undefined;
|
|
5
|
+
append(content: string): Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
declare function createRequestLog(logDirPath?: string): RequestLog;
|
|
8
|
+
|
|
9
|
+
export { RequestLog, createRequestLog };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { appendFile } from "fs/promises";
|
|
2
|
+
import { allocateArtifactPath } from "../common/logging.js";
|
|
3
|
+
class RequestLog {
|
|
4
|
+
#filePath;
|
|
5
|
+
constructor(filePath) {
|
|
6
|
+
this.#filePath = filePath;
|
|
7
|
+
}
|
|
8
|
+
get filePath() {
|
|
9
|
+
return this.#filePath;
|
|
10
|
+
}
|
|
11
|
+
async append(content) {
|
|
12
|
+
if (this.#filePath === void 0) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
await appendFile(this.#filePath, content, "utf8");
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function createRequestLog(logDirPath) {
|
|
19
|
+
if (logDirPath === void 0) {
|
|
20
|
+
return new RequestLog();
|
|
21
|
+
}
|
|
22
|
+
return new RequestLog(
|
|
23
|
+
allocateArtifactPath({
|
|
24
|
+
alwaysNumbered: true,
|
|
25
|
+
category: "llm",
|
|
26
|
+
logDirPath,
|
|
27
|
+
prefix: "request"
|
|
28
|
+
})
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
RequestLog,
|
|
33
|
+
createRequestLog
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=request-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/request-log.ts"],"sourcesContent":["import { appendFile } from \"fs/promises\";\nimport { allocateArtifactPath } from \"../common/logging.js\";\n\nexport class RequestLog {\n readonly #filePath: string | undefined;\n\n public constructor(filePath?: string) {\n this.#filePath = filePath;\n }\n\n public get filePath(): string | undefined {\n return this.#filePath;\n }\n\n public async append(content: string): Promise<void> {\n if (this.#filePath === undefined) {\n return;\n }\n await appendFile(this.#filePath, content, \"utf8\");\n }\n}\n\nexport function createRequestLog(logDirPath?: string): RequestLog {\n if (logDirPath === undefined) {\n return new RequestLog();\n }\n\n return new RequestLog(\n allocateArtifactPath({\n alwaysNumbered: true,\n category: \"llm\",\n logDirPath,\n prefix: \"request\",\n }),\n );\n}\n"],"mappings":"AAAA,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AAE9B,MAAM,WAAW;AAAA,EACb;AAAA,EAEF,YAAY,UAAmB;AACpC,SAAK,YAAY;AAAA,EACnB;AAAA,EAEA,IAAW,WAA+B;AACxC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAa,OAAO,SAAgC;AAClD,QAAI,KAAK,cAAc,QAAW;AAChC;AAAA,IACF;AACA,UAAM,WAAW,KAAK,WAAW,SAAS,MAAM;AAAA,EAClD;AACF;AAEO,SAAS,iBAAiB,YAAiC;AAChE,MAAI,eAAe,QAAW;AAC5B,WAAO,IAAI,WAAW;AAAA,EACxB;AAEA,SAAO,IAAI;AAAA,IACT,qBAAqB;AAAA,MACnB,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAAA,EACH;AACF;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SamplingScopeConfig, TemperatureSetting } from './types.js';
|
|
2
|
+
import 'ai';
|
|
3
|
+
|
|
4
|
+
declare function resolveSamplingSetting(value: TemperatureSetting | undefined, fieldName: string, retryIndex?: number, retryMax?: number): number | undefined;
|
|
5
|
+
declare function resolveTemperatureSetting(temperature: TemperatureSetting | undefined, retryIndex?: number, retryMax?: number): number | undefined;
|
|
6
|
+
declare function getScopeDefaults<S extends string>(scope: S | undefined, sampling: SamplingScopeConfig<S> | undefined, defaultTemperature: TemperatureSetting, defaultTopP: TemperatureSetting): {
|
|
7
|
+
temperature: TemperatureSetting;
|
|
8
|
+
topP: TemperatureSetting;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { getScopeDefaults, resolveSamplingSetting, resolveTemperatureSetting };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function resolveSamplingSetting(value, fieldName, retryIndex, retryMax) {
|
|
2
|
+
if (value === void 0) {
|
|
3
|
+
return void 0;
|
|
4
|
+
}
|
|
5
|
+
if (typeof value === "number") {
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
if (value.length === 1) {
|
|
9
|
+
return value[0];
|
|
10
|
+
}
|
|
11
|
+
if (value.length !== 2) {
|
|
12
|
+
throw new RangeError(
|
|
13
|
+
`${fieldName} must be a number or a 2-item range like [0.6, 0.98]`
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
const [start, end] = value;
|
|
17
|
+
if (start === void 0 || end === void 0) {
|
|
18
|
+
throw new RangeError(
|
|
19
|
+
`${fieldName} must be a number or a 2-item range like [0.6, 0.98]`
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
if (retryIndex === void 0 || retryMax === void 0 || retryMax <= 0) {
|
|
23
|
+
return start;
|
|
24
|
+
}
|
|
25
|
+
const boundedRetryIndex = Math.min(Math.max(retryIndex, 0), retryMax);
|
|
26
|
+
const progress = boundedRetryIndex / retryMax;
|
|
27
|
+
return start + (end - start) * progress;
|
|
28
|
+
}
|
|
29
|
+
function resolveTemperatureSetting(temperature, retryIndex, retryMax) {
|
|
30
|
+
return resolveSamplingSetting(
|
|
31
|
+
temperature,
|
|
32
|
+
"temperature",
|
|
33
|
+
retryIndex,
|
|
34
|
+
retryMax
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
function getScopeDefaults(scope, sampling, defaultTemperature, defaultTopP) {
|
|
38
|
+
if (scope === void 0) {
|
|
39
|
+
return {
|
|
40
|
+
temperature: defaultTemperature,
|
|
41
|
+
topP: defaultTopP
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (sampling === void 0) {
|
|
45
|
+
return {
|
|
46
|
+
temperature: defaultTemperature,
|
|
47
|
+
topP: defaultTopP
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const profile = sampling[scope];
|
|
51
|
+
if (profile === void 0) {
|
|
52
|
+
return {
|
|
53
|
+
temperature: defaultTemperature,
|
|
54
|
+
topP: defaultTopP
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
temperature: profile.temperature ?? defaultTemperature,
|
|
59
|
+
topP: profile.topP ?? defaultTopP
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export {
|
|
63
|
+
getScopeDefaults,
|
|
64
|
+
resolveSamplingSetting,
|
|
65
|
+
resolveTemperatureSetting
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=sampling.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/sampling.ts"],"sourcesContent":["import type { SamplingScopeConfig, TemperatureSetting } from \"./types.js\";\n\nexport function resolveSamplingSetting(\n value: TemperatureSetting | undefined,\n fieldName: string,\n retryIndex?: number,\n retryMax?: number,\n): number | undefined {\n if (value === undefined) {\n return undefined;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n if (value.length === 1) {\n return value[0];\n }\n\n if (value.length !== 2) {\n throw new RangeError(\n `${fieldName} must be a number or a 2-item range like [0.6, 0.98]`,\n );\n }\n const [start, end] = value;\n\n if (start === undefined || end === undefined) {\n throw new RangeError(\n `${fieldName} must be a number or a 2-item range like [0.6, 0.98]`,\n );\n }\n\n if (retryIndex === undefined || retryMax === undefined || retryMax <= 0) {\n return start;\n }\n const boundedRetryIndex = Math.min(Math.max(retryIndex, 0), retryMax);\n const progress = boundedRetryIndex / retryMax;\n\n return start + (end - start) * progress;\n}\n\nexport function resolveTemperatureSetting(\n temperature: TemperatureSetting | undefined,\n retryIndex?: number,\n retryMax?: number,\n): number | undefined {\n return resolveSamplingSetting(\n temperature,\n \"temperature\",\n retryIndex,\n retryMax,\n );\n}\n\nexport function getScopeDefaults<S extends string>(\n scope: S | undefined,\n sampling: SamplingScopeConfig<S> | undefined,\n defaultTemperature: TemperatureSetting,\n defaultTopP: TemperatureSetting,\n): {\n temperature: TemperatureSetting;\n topP: TemperatureSetting;\n} {\n if (scope === undefined) {\n return {\n temperature: defaultTemperature,\n topP: defaultTopP,\n };\n }\n\n if (sampling === undefined) {\n return {\n temperature: defaultTemperature,\n topP: defaultTopP,\n };\n }\n\n const profile = sampling[scope];\n\n if (profile === undefined) {\n return {\n temperature: defaultTemperature,\n topP: defaultTopP,\n };\n }\n\n return {\n temperature: profile.temperature ?? defaultTemperature,\n topP: profile.topP ?? defaultTopP,\n };\n}\n"],"mappings":"AAEO,SAAS,uBACd,OACA,WACA,YACA,UACoB;AACpB,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,WAAO,MAAM,CAAC;AAAA,EAChB;AAEA,MAAI,MAAM,WAAW,GAAG;AACtB,UAAM,IAAI;AAAA,MACR,GAAG,SAAS;AAAA,IACd;AAAA,EACF;AACA,QAAM,CAAC,OAAO,GAAG,IAAI;AAErB,MAAI,UAAU,UAAa,QAAQ,QAAW;AAC5C,UAAM,IAAI;AAAA,MACR,GAAG,SAAS;AAAA,IACd;AAAA,EACF;AAEA,MAAI,eAAe,UAAa,aAAa,UAAa,YAAY,GAAG;AACvE,WAAO;AAAA,EACT;AACA,QAAM,oBAAoB,KAAK,IAAI,KAAK,IAAI,YAAY,CAAC,GAAG,QAAQ;AACpE,QAAM,WAAW,oBAAoB;AAErC,SAAO,SAAS,MAAM,SAAS;AACjC;AAEO,SAAS,0BACd,aACA,YACA,UACoB;AACpB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,iBACd,OACA,UACA,oBACA,aAIA;AACA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,EACF;AAEA,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,EACF;AAEA,QAAM,UAAU,SAAS,KAAK;AAE9B,MAAI,YAAY,QAAW;AACzB,WAAO;AAAA,MACL,aAAa;AAAA,MACb,MAAM;AAAA,IACR;AAAA,EACF;AAEA,SAAO;AAAA,IACL,aAAa,QAAQ,eAAe;AAAA,IACpC,MAAM,QAAQ,QAAQ;AAAA,EACxB;AACF;","names":[]}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { LanguageModel, ModelMessage } from 'ai';
|
|
2
|
+
|
|
3
|
+
type LLMessage = ModelMessage;
|
|
4
|
+
type LLMModel = LanguageModel;
|
|
5
|
+
type TemperatureSetting = number | readonly number[];
|
|
6
|
+
interface SamplingProfile {
|
|
7
|
+
readonly temperature?: TemperatureSetting;
|
|
8
|
+
readonly topP?: TemperatureSetting;
|
|
9
|
+
}
|
|
10
|
+
type SamplingScopeConfig<S extends string> = {
|
|
11
|
+
readonly [scope in S]: SamplingProfile;
|
|
12
|
+
};
|
|
13
|
+
interface LLMRequestOptions<S extends string> {
|
|
14
|
+
readonly signal?: AbortSignal;
|
|
15
|
+
readonly temperature?: TemperatureSetting;
|
|
16
|
+
readonly topP?: TemperatureSetting;
|
|
17
|
+
readonly scope?: S;
|
|
18
|
+
readonly useCache?: boolean;
|
|
19
|
+
readonly retryIndex?: number;
|
|
20
|
+
readonly retryMax?: number;
|
|
21
|
+
}
|
|
22
|
+
type LLMRequestFunction<S extends string> = (messages: readonly LLMessage[], options?: LLMRequestOptions<S>) => Promise<string>;
|
|
23
|
+
type LLMLazyRequestOperation<S extends string, T> = (request: LLMRequestFunction<S>) => Promise<T>;
|
|
24
|
+
type LLMStreamProgressCallback = (event: {
|
|
25
|
+
readonly outputCharacters: number;
|
|
26
|
+
}) => void | Promise<void>;
|
|
27
|
+
interface LLMTokenUsage {
|
|
28
|
+
readonly cacheReadTokens?: number;
|
|
29
|
+
readonly inputTokens?: number;
|
|
30
|
+
readonly outputTokens?: number;
|
|
31
|
+
}
|
|
32
|
+
type LLMTokenUsageCallback = (usage: LLMTokenUsage) => void | Promise<void>;
|
|
33
|
+
interface LLMOptions<S extends string> {
|
|
34
|
+
readonly model: LLMModel;
|
|
35
|
+
readonly dataDirPath: string;
|
|
36
|
+
readonly logDirPath?: string;
|
|
37
|
+
readonly cacheDirPath?: string;
|
|
38
|
+
readonly concurrent?: number;
|
|
39
|
+
readonly stream?: boolean;
|
|
40
|
+
readonly timeout?: number;
|
|
41
|
+
readonly temperature?: TemperatureSetting;
|
|
42
|
+
readonly topP?: TemperatureSetting;
|
|
43
|
+
readonly sampling?: SamplingScopeConfig<S>;
|
|
44
|
+
readonly retryTimes?: number;
|
|
45
|
+
readonly retryIntervalSeconds?: number;
|
|
46
|
+
readonly onStreamProgress?: LLMStreamProgressCallback;
|
|
47
|
+
readonly onTokenUsage?: LLMTokenUsageCallback;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export type { LLMLazyRequestOperation, LLMModel, LLMOptions, LLMRequestFunction, LLMRequestOptions, LLMStreamProgressCallback, LLMTokenUsage, LLMTokenUsageCallback, LLMessage, SamplingProfile, SamplingScopeConfig, TemperatureSetting };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SourceAsset } from '../../source/types.js';
|
|
2
|
+
import { EpubBook } from './model.js';
|
|
3
|
+
import '../../source/meta.js';
|
|
4
|
+
import 'zod';
|
|
5
|
+
|
|
6
|
+
declare function writeEpubArchive(path: string, book: EpubBook): Promise<void>;
|
|
7
|
+
declare function createCoverImageHref(cover: SourceAsset): string;
|
|
8
|
+
|
|
9
|
+
export { createCoverImageHref, writeEpubArchive };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { createWriteStream } from "fs";
|
|
2
|
+
import { dirname, extname } from "path";
|
|
3
|
+
import { finished } from "stream/promises";
|
|
4
|
+
import { mkdir } from "fs/promises";
|
|
5
|
+
import { ZipFile } from "yazl";
|
|
6
|
+
import { normalizeLanguage } from "./shared.js";
|
|
7
|
+
import { renderCoverPage } from "./templates.js";
|
|
8
|
+
const EPUB_CONTAINER_XML = `<?xml version="1.0" encoding="UTF-8"?>
|
|
9
|
+
<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container">
|
|
10
|
+
<rootfiles>
|
|
11
|
+
<rootfile full-path="OEBPS/package.opf" media-type="application/oebps-package+xml"/>
|
|
12
|
+
</rootfiles>
|
|
13
|
+
</container>
|
|
14
|
+
`;
|
|
15
|
+
async function writeEpubArchive(path, book) {
|
|
16
|
+
await mkdir(dirname(path), { recursive: true });
|
|
17
|
+
const zip = new ZipFile();
|
|
18
|
+
zip.addBuffer(Buffer.from("application/epub+zip"), "mimetype", {
|
|
19
|
+
compress: false
|
|
20
|
+
});
|
|
21
|
+
zip.addBuffer(
|
|
22
|
+
Buffer.from(EPUB_CONTAINER_XML, "utf8"),
|
|
23
|
+
"META-INF/container.xml"
|
|
24
|
+
);
|
|
25
|
+
zip.addBuffer(Buffer.from(book.packageOpf, "utf8"), "OEBPS/package.opf");
|
|
26
|
+
zip.addBuffer(Buffer.from(book.navXhtml, "utf8"), "OEBPS/nav.xhtml");
|
|
27
|
+
for (const section of book.sections) {
|
|
28
|
+
zip.addBuffer(Buffer.from(section.xhtml, "utf8"), `OEBPS/${section.href}`);
|
|
29
|
+
}
|
|
30
|
+
if (book.cover !== void 0) {
|
|
31
|
+
const coverImageHref = createCoverImageHref(book.cover);
|
|
32
|
+
const language = normalizeLanguage(book.meta.language);
|
|
33
|
+
zip.addBuffer(Buffer.from(book.cover.data), `OEBPS/${coverImageHref}`);
|
|
34
|
+
zip.addBuffer(
|
|
35
|
+
Buffer.from(createCoverPage(book.meta, coverImageHref, language), "utf8"),
|
|
36
|
+
"OEBPS/text/cover.xhtml"
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
zip.end();
|
|
40
|
+
const output = createWriteStream(path);
|
|
41
|
+
const outputDone = finished(output);
|
|
42
|
+
const zipDone = finished(zip.outputStream);
|
|
43
|
+
zip.outputStream.pipe(output);
|
|
44
|
+
await Promise.all([outputDone, zipDone]);
|
|
45
|
+
}
|
|
46
|
+
function createCoverImageHref(cover) {
|
|
47
|
+
return `images/cover${normalizeCoverExtension(cover)}`;
|
|
48
|
+
}
|
|
49
|
+
function createCoverPage(meta, coverImageHref, language) {
|
|
50
|
+
const title = meta.title?.trim() || "Untitled";
|
|
51
|
+
return renderCoverPage({
|
|
52
|
+
coverImageHref,
|
|
53
|
+
language,
|
|
54
|
+
title
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function normalizeCoverExtension(cover) {
|
|
58
|
+
const pathExtension = extname(cover.path).toLowerCase();
|
|
59
|
+
if (pathExtension !== "") {
|
|
60
|
+
return pathExtension;
|
|
61
|
+
}
|
|
62
|
+
switch (cover.mediaType) {
|
|
63
|
+
case "image/gif":
|
|
64
|
+
return ".gif";
|
|
65
|
+
case "image/jpeg":
|
|
66
|
+
return ".jpg";
|
|
67
|
+
case "image/png":
|
|
68
|
+
return ".png";
|
|
69
|
+
case "image/svg+xml":
|
|
70
|
+
return ".svg";
|
|
71
|
+
case "image/webp":
|
|
72
|
+
return ".webp";
|
|
73
|
+
default:
|
|
74
|
+
return ".bin";
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export {
|
|
78
|
+
createCoverImageHref,
|
|
79
|
+
writeEpubArchive
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=archive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/archive.ts"],"sourcesContent":["import { createWriteStream } from \"fs\";\nimport { dirname, extname } from \"path\";\nimport { finished } from \"stream/promises\";\n\nimport { mkdir } from \"fs/promises\";\nimport { ZipFile } from \"yazl\";\n\nimport type { BookMeta, SourceAsset } from \"../../source/index.js\";\n\nimport type { EpubBook } from \"./model.js\";\nimport { normalizeLanguage } from \"./shared.js\";\nimport { renderCoverPage } from \"./templates.js\";\n\nconst EPUB_CONTAINER_XML = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<container version=\"1.0\" xmlns=\"urn:oasis:names:tc:opendocument:xmlns:container\">\n <rootfiles>\n <rootfile full-path=\"OEBPS/package.opf\" media-type=\"application/oebps-package+xml\"/>\n </rootfiles>\n</container>\n`;\n\nexport async function writeEpubArchive(\n path: string,\n book: EpubBook,\n): Promise<void> {\n await mkdir(dirname(path), { recursive: true });\n\n const zip = new ZipFile();\n\n zip.addBuffer(Buffer.from(\"application/epub+zip\"), \"mimetype\", {\n compress: false,\n });\n zip.addBuffer(\n Buffer.from(EPUB_CONTAINER_XML, \"utf8\"),\n \"META-INF/container.xml\",\n );\n zip.addBuffer(Buffer.from(book.packageOpf, \"utf8\"), \"OEBPS/package.opf\");\n zip.addBuffer(Buffer.from(book.navXhtml, \"utf8\"), \"OEBPS/nav.xhtml\");\n\n for (const section of book.sections) {\n zip.addBuffer(Buffer.from(section.xhtml, \"utf8\"), `OEBPS/${section.href}`);\n }\n\n if (book.cover !== undefined) {\n const coverImageHref = createCoverImageHref(book.cover);\n const language = normalizeLanguage(book.meta.language);\n\n zip.addBuffer(Buffer.from(book.cover.data), `OEBPS/${coverImageHref}`);\n zip.addBuffer(\n Buffer.from(createCoverPage(book.meta, coverImageHref, language), \"utf8\"),\n \"OEBPS/text/cover.xhtml\",\n );\n }\n\n zip.end();\n\n const output = createWriteStream(path);\n const outputDone = finished(output);\n const zipDone = finished(zip.outputStream);\n\n zip.outputStream.pipe(output);\n await Promise.all([outputDone, zipDone]);\n}\n\nexport function createCoverImageHref(cover: SourceAsset): string {\n return `images/cover${normalizeCoverExtension(cover)}`;\n}\n\nfunction createCoverPage(\n meta: BookMeta,\n coverImageHref: string,\n language: string,\n): string {\n const title = meta.title?.trim() || \"Untitled\";\n\n return renderCoverPage({\n coverImageHref,\n language,\n title,\n });\n}\n\nfunction normalizeCoverExtension(cover: SourceAsset): string {\n const pathExtension = extname(cover.path).toLowerCase();\n\n if (pathExtension !== \"\") {\n return pathExtension;\n }\n\n switch (cover.mediaType) {\n case \"image/gif\":\n return \".gif\";\n case \"image/jpeg\":\n return \".jpg\";\n case \"image/png\":\n return \".png\";\n case \"image/svg+xml\":\n return \".svg\";\n case \"image/webp\":\n return \".webp\";\n default:\n return \".bin\";\n }\n}\n"],"mappings":"AAAA,SAAS,yBAAyB;AAClC,SAAS,SAAS,eAAe;AACjC,SAAS,gBAAgB;AAEzB,SAAS,aAAa;AACtB,SAAS,eAAe;AAKxB,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAEhC,MAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQ3B,eAAsB,iBACpB,MACA,MACe;AACf,QAAM,MAAM,QAAQ,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAE9C,QAAM,MAAM,IAAI,QAAQ;AAExB,MAAI,UAAU,OAAO,KAAK,sBAAsB,GAAG,YAAY;AAAA,IAC7D,UAAU;AAAA,EACZ,CAAC;AACD,MAAI;AAAA,IACF,OAAO,KAAK,oBAAoB,MAAM;AAAA,IACtC;AAAA,EACF;AACA,MAAI,UAAU,OAAO,KAAK,KAAK,YAAY,MAAM,GAAG,mBAAmB;AACvE,MAAI,UAAU,OAAO,KAAK,KAAK,UAAU,MAAM,GAAG,iBAAiB;AAEnE,aAAW,WAAW,KAAK,UAAU;AACnC,QAAI,UAAU,OAAO,KAAK,QAAQ,OAAO,MAAM,GAAG,SAAS,QAAQ,IAAI,EAAE;AAAA,EAC3E;AAEA,MAAI,KAAK,UAAU,QAAW;AAC5B,UAAM,iBAAiB,qBAAqB,KAAK,KAAK;AACtD,UAAM,WAAW,kBAAkB,KAAK,KAAK,QAAQ;AAErD,QAAI,UAAU,OAAO,KAAK,KAAK,MAAM,IAAI,GAAG,SAAS,cAAc,EAAE;AACrE,QAAI;AAAA,MACF,OAAO,KAAK,gBAAgB,KAAK,MAAM,gBAAgB,QAAQ,GAAG,MAAM;AAAA,MACxE;AAAA,IACF;AAAA,EACF;AAEA,MAAI,IAAI;AAER,QAAM,SAAS,kBAAkB,IAAI;AACrC,QAAM,aAAa,SAAS,MAAM;AAClC,QAAM,UAAU,SAAS,IAAI,YAAY;AAEzC,MAAI,aAAa,KAAK,MAAM;AAC5B,QAAM,QAAQ,IAAI,CAAC,YAAY,OAAO,CAAC;AACzC;AAEO,SAAS,qBAAqB,OAA4B;AAC/D,SAAO,eAAe,wBAAwB,KAAK,CAAC;AACtD;AAEA,SAAS,gBACP,MACA,gBACA,UACQ;AACR,QAAM,QAAQ,KAAK,OAAO,KAAK,KAAK;AAEpC,SAAO,gBAAgB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAEA,SAAS,wBAAwB,OAA4B;AAC3D,QAAM,gBAAgB,QAAQ,MAAM,IAAI,EAAE,YAAY;AAEtD,MAAI,kBAAkB,IAAI;AACxB,WAAO;AAAA,EACT;AAEA,UAAQ,MAAM,WAAW;AAAA,IACvB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EACX;AACF;","names":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ReadonlyDocument } from '../../document/document.js';
|
|
2
|
+
import { EpubBook } from './model.js';
|
|
3
|
+
import '../../source/meta.js';
|
|
4
|
+
import 'zod';
|
|
5
|
+
import '../../source/toc.js';
|
|
6
|
+
import '../../source/types.js';
|
|
7
|
+
import '../../document/database.js';
|
|
8
|
+
import 'sqlite3';
|
|
9
|
+
import '../../document/text-streams.js';
|
|
10
|
+
import '../../document/types.js';
|
|
11
|
+
import '../../document/stores.js';
|
|
12
|
+
|
|
13
|
+
declare function buildEpubBook(document: ReadonlyDocument): Promise<EpubBook>;
|
|
14
|
+
|
|
15
|
+
export { buildEpubBook };
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { createCoverImageHref } from "./archive.js";
|
|
2
|
+
import { createFallbackSection, createSectionDocument } from "./content.js";
|
|
3
|
+
import { buildNavItems, createNavDocument } from "./navigation.js";
|
|
4
|
+
import { createPackageOpf } from "./package.js";
|
|
5
|
+
import { normalizeLanguage } from "./shared.js";
|
|
6
|
+
async function buildEpubBook(document) {
|
|
7
|
+
const [meta, toc, cover] = await Promise.all([
|
|
8
|
+
document.readBookMeta(),
|
|
9
|
+
document.readToc(),
|
|
10
|
+
document.readCover()
|
|
11
|
+
]);
|
|
12
|
+
if (meta === void 0) {
|
|
13
|
+
throw new Error("Archive metadata is missing");
|
|
14
|
+
}
|
|
15
|
+
if (toc === void 0) {
|
|
16
|
+
throw new Error("Document TOC is missing");
|
|
17
|
+
}
|
|
18
|
+
const sectionMap = /* @__PURE__ */ new Map();
|
|
19
|
+
const language = normalizeLanguage(meta.language);
|
|
20
|
+
const sections = await collectSections(
|
|
21
|
+
document,
|
|
22
|
+
language,
|
|
23
|
+
toc.items,
|
|
24
|
+
sectionMap
|
|
25
|
+
);
|
|
26
|
+
const navItems = buildNavItems(toc.items, sectionMap);
|
|
27
|
+
if (sections.length === 0) {
|
|
28
|
+
sections.push(createFallbackSection(meta, language));
|
|
29
|
+
}
|
|
30
|
+
const coverImageHref = cover === void 0 ? void 0 : createCoverImageHref(cover);
|
|
31
|
+
const coverPageHref = cover === void 0 ? void 0 : "text/cover.xhtml";
|
|
32
|
+
return {
|
|
33
|
+
cover,
|
|
34
|
+
meta,
|
|
35
|
+
navXhtml: createNavDocument(meta, language, navItems),
|
|
36
|
+
packageOpf: createPackageOpf({
|
|
37
|
+
coverImageHref,
|
|
38
|
+
coverMediaType: cover?.mediaType,
|
|
39
|
+
coverPageHref,
|
|
40
|
+
language,
|
|
41
|
+
meta,
|
|
42
|
+
modifiedAt: (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/u, "Z"),
|
|
43
|
+
sections
|
|
44
|
+
}),
|
|
45
|
+
sections
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
async function collectSections(document, language, items, sectionMap) {
|
|
49
|
+
const sections = [];
|
|
50
|
+
for (const item of items) {
|
|
51
|
+
if (item.serialId !== void 0) {
|
|
52
|
+
const summary = await document.readSummary(item.serialId);
|
|
53
|
+
if (summary === void 0) {
|
|
54
|
+
throw new Error(
|
|
55
|
+
`Chapter ${item.serialId} summary is missing. 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\`.`
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
const section = createSectionDocument(
|
|
59
|
+
item.serialId,
|
|
60
|
+
language,
|
|
61
|
+
item.title,
|
|
62
|
+
summary
|
|
63
|
+
);
|
|
64
|
+
sectionMap.set(item.serialId, section);
|
|
65
|
+
sections.push(section);
|
|
66
|
+
}
|
|
67
|
+
sections.push(
|
|
68
|
+
...await collectSections(document, language, item.children, sectionMap)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
return sections;
|
|
72
|
+
}
|
|
73
|
+
export {
|
|
74
|
+
buildEpubBook
|
|
75
|
+
};
|
|
76
|
+
//# sourceMappingURL=book.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/book.ts"],"sourcesContent":["import type { ReadonlyDocument } from \"../../document/index.js\";\nimport type { TocItem } from \"../../source/index.js\";\n\nimport { createCoverImageHref } from \"./archive.js\";\nimport { createFallbackSection, createSectionDocument } from \"./content.js\";\nimport type { EpubBook, EpubSection } from \"./model.js\";\nimport { buildNavItems, createNavDocument } from \"./navigation.js\";\nimport { createPackageOpf } from \"./package.js\";\nimport { normalizeLanguage } from \"./shared.js\";\n\nexport async function buildEpubBook(\n document: ReadonlyDocument,\n): Promise<EpubBook> {\n const [meta, toc, cover] = await Promise.all([\n document.readBookMeta(),\n document.readToc(),\n document.readCover(),\n ]);\n\n if (meta === undefined) {\n throw new Error(\"Archive metadata is missing\");\n }\n if (toc === undefined) {\n throw new Error(\"Document TOC is missing\");\n }\n\n const sectionMap = new Map<number, EpubSection>();\n const language = normalizeLanguage(meta.language);\n const sections = await collectSections(\n document,\n language,\n toc.items,\n sectionMap,\n );\n const navItems = buildNavItems(toc.items, sectionMap);\n\n if (sections.length === 0) {\n sections.push(createFallbackSection(meta, language));\n }\n\n const coverImageHref =\n cover === undefined ? undefined : createCoverImageHref(cover);\n const coverPageHref = cover === undefined ? undefined : \"text/cover.xhtml\";\n\n return {\n cover,\n meta,\n navXhtml: createNavDocument(meta, language, navItems),\n packageOpf: createPackageOpf({\n coverImageHref,\n coverMediaType: cover?.mediaType,\n coverPageHref,\n language,\n meta,\n modifiedAt: new Date().toISOString().replace(/\\.\\d{3}Z$/u, \"Z\"),\n sections,\n }),\n sections,\n };\n}\n\nasync function collectSections(\n document: ReadonlyDocument,\n language: string,\n items: readonly TocItem[],\n sectionMap: Map<number, EpubSection>,\n): Promise<EpubSection[]> {\n const sections: EpubSection[] = [];\n\n for (const item of items) {\n if (item.serialId !== undefined) {\n const summary = await document.readSummary(item.serialId);\n\n if (summary === undefined) {\n throw new Error(\n `Chapter ${item.serialId} summary is missing. 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 );\n }\n\n const section = createSectionDocument(\n item.serialId,\n language,\n item.title,\n summary,\n );\n\n sectionMap.set(item.serialId, section);\n sections.push(section);\n }\n\n sections.push(\n ...(await collectSections(document, language, item.children, sectionMap)),\n );\n }\n\n return sections;\n}\n"],"mappings":"AAGA,SAAS,4BAA4B;AACrC,SAAS,uBAAuB,6BAA6B;AAE7D,SAAS,eAAe,yBAAyB;AACjD,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAElC,eAAsB,cACpB,UACmB;AACnB,QAAM,CAAC,MAAM,KAAK,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IAC3C,SAAS,aAAa;AAAA,IACtB,SAAS,QAAQ;AAAA,IACjB,SAAS,UAAU;AAAA,EACrB,CAAC;AAED,MAAI,SAAS,QAAW;AACtB,UAAM,IAAI,MAAM,6BAA6B;AAAA,EAC/C;AACA,MAAI,QAAQ,QAAW;AACrB,UAAM,IAAI,MAAM,yBAAyB;AAAA,EAC3C;AAEA,QAAM,aAAa,oBAAI,IAAyB;AAChD,QAAM,WAAW,kBAAkB,KAAK,QAAQ;AAChD,QAAM,WAAW,MAAM;AAAA,IACrB;AAAA,IACA;AAAA,IACA,IAAI;AAAA,IACJ;AAAA,EACF;AACA,QAAM,WAAW,cAAc,IAAI,OAAO,UAAU;AAEpD,MAAI,SAAS,WAAW,GAAG;AACzB,aAAS,KAAK,sBAAsB,MAAM,QAAQ,CAAC;AAAA,EACrD;AAEA,QAAM,iBACJ,UAAU,SAAY,SAAY,qBAAqB,KAAK;AAC9D,QAAM,gBAAgB,UAAU,SAAY,SAAY;AAExD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU,kBAAkB,MAAM,UAAU,QAAQ;AAAA,IACpD,YAAY,iBAAiB;AAAA,MAC3B;AAAA,MACA,gBAAgB,OAAO;AAAA,MACvB;AAAA,MACA;AAAA,MACA;AAAA,MACA,aAAY,oBAAI,KAAK,GAAE,YAAY,EAAE,QAAQ,cAAc,GAAG;AAAA,MAC9D;AAAA,IACF,CAAC;AAAA,IACD;AAAA,EACF;AACF;AAEA,eAAe,gBACb,UACA,UACA,OACA,YACwB;AACxB,QAAM,WAA0B,CAAC;AAEjC,aAAW,QAAQ,OAAO;AACxB,QAAI,KAAK,aAAa,QAAW;AAC/B,YAAM,UAAU,MAAM,SAAS,YAAY,KAAK,QAAQ;AAExD,UAAI,YAAY,QAAW;AACzB,cAAM,IAAI;AAAA,UACR,WAAW,KAAK,QAAQ;AAAA,QAC1B;AAAA,MACF;AAEA,YAAM,UAAU;AAAA,QACd,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,QACL;AAAA,MACF;AAEA,iBAAW,IAAI,KAAK,UAAU,OAAO;AACrC,eAAS,KAAK,OAAO;AAAA,IACvB;AAEA,aAAS;AAAA,MACP,GAAI,MAAM,gBAAgB,UAAU,UAAU,KAAK,UAAU,UAAU;AAAA,IACzE;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BookMeta } from '../../source/meta.js';
|
|
2
|
+
import { EpubSection } from './model.js';
|
|
3
|
+
import 'zod';
|
|
4
|
+
import '../../source/types.js';
|
|
5
|
+
|
|
6
|
+
declare function createFallbackSection(meta: BookMeta, language: string): EpubSection;
|
|
7
|
+
declare function createSectionDocument(serialId: number, language: string, title: string | null | undefined, summary: string): EpubSection;
|
|
8
|
+
|
|
9
|
+
export { createFallbackSection, createSectionDocument };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { renderSectionDocument } from "./templates.js";
|
|
2
|
+
function createFallbackSection(meta, language) {
|
|
3
|
+
const title = meta.title?.trim() || "Untitled";
|
|
4
|
+
return {
|
|
5
|
+
href: "text/section-1.xhtml",
|
|
6
|
+
id: "section-1",
|
|
7
|
+
title,
|
|
8
|
+
xhtml: renderSectionDocument({
|
|
9
|
+
language,
|
|
10
|
+
paragraphs: [],
|
|
11
|
+
title
|
|
12
|
+
})
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function createSectionDocument(serialId, language, title, summary) {
|
|
16
|
+
const normalizedTitle = title?.trim() || `Section ${serialId}`;
|
|
17
|
+
return {
|
|
18
|
+
href: `text/serial-${serialId}.xhtml`,
|
|
19
|
+
id: `serial-${serialId}`,
|
|
20
|
+
title: normalizedTitle,
|
|
21
|
+
xhtml: renderSectionDocument({
|
|
22
|
+
language,
|
|
23
|
+
paragraphs: splitParagraphs(summary.trim()),
|
|
24
|
+
title: normalizedTitle
|
|
25
|
+
})
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function splitParagraphs(summary) {
|
|
29
|
+
return summary.split(/\n\s*\n/gu).map((paragraph) => paragraph.replace(/\s*\n\s*/gu, " ").trim()).filter((paragraph) => paragraph !== "");
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
createFallbackSection,
|
|
33
|
+
createSectionDocument
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/content.ts"],"sourcesContent":["import type { BookMeta } from \"../../source/index.js\";\n\nimport type { EpubSection } from \"./model.js\";\nimport { renderSectionDocument } from \"./templates.js\";\n\nexport function createFallbackSection(\n meta: BookMeta,\n language: string,\n): EpubSection {\n const title = meta.title?.trim() || \"Untitled\";\n\n return {\n href: \"text/section-1.xhtml\",\n id: \"section-1\",\n title,\n xhtml: renderSectionDocument({\n language,\n paragraphs: [],\n title,\n }),\n };\n}\n\nexport function createSectionDocument(\n serialId: number,\n language: string,\n title: string | null | undefined,\n summary: string,\n): EpubSection {\n const normalizedTitle = title?.trim() || `Section ${serialId}`;\n\n return {\n href: `text/serial-${serialId}.xhtml`,\n id: `serial-${serialId}`,\n title: normalizedTitle,\n xhtml: renderSectionDocument({\n language,\n paragraphs: splitParagraphs(summary.trim()),\n title: normalizedTitle,\n }),\n };\n}\n\nfunction splitParagraphs(summary: string): string[] {\n return summary\n .split(/\\n\\s*\\n/gu)\n .map((paragraph) => paragraph.replace(/\\s*\\n\\s*/gu, \" \").trim())\n .filter((paragraph) => paragraph !== \"\");\n}\n"],"mappings":"AAGA,SAAS,6BAA6B;AAE/B,SAAS,sBACd,MACA,UACa;AACb,QAAM,QAAQ,KAAK,OAAO,KAAK,KAAK;AAEpC,SAAO;AAAA,IACL,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,IACA,OAAO,sBAAsB;AAAA,MAC3B;AAAA,MACA,YAAY,CAAC;AAAA,MACb;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,SAAS,sBACd,UACA,UACA,OACA,SACa;AACb,QAAM,kBAAkB,OAAO,KAAK,KAAK,WAAW,QAAQ;AAE5D,SAAO;AAAA,IACL,MAAM,eAAe,QAAQ;AAAA,IAC7B,IAAI,UAAU,QAAQ;AAAA,IACtB,OAAO;AAAA,IACP,OAAO,sBAAsB;AAAA,MAC3B;AAAA,MACA,YAAY,gBAAgB,QAAQ,KAAK,CAAC;AAAA,MAC1C,OAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAEA,SAAS,gBAAgB,SAA2B;AAClD,SAAO,QACJ,MAAM,WAAW,EACjB,IAAI,CAAC,cAAc,UAAU,QAAQ,cAAc,GAAG,EAAE,KAAK,CAAC,EAC9D,OAAO,CAAC,cAAc,cAAc,EAAE;AAC3C;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ReadonlyDocument } from '../../document/document.js';
|
|
2
|
+
export { EPUB_OUTPUT_VERSION } from './package.js';
|
|
3
|
+
import '../../source/meta.js';
|
|
4
|
+
import 'zod';
|
|
5
|
+
import '../../source/toc.js';
|
|
6
|
+
import '../../source/types.js';
|
|
7
|
+
import '../../document/database.js';
|
|
8
|
+
import 'sqlite3';
|
|
9
|
+
import '../../document/text-streams.js';
|
|
10
|
+
import '../../document/types.js';
|
|
11
|
+
import '../../document/stores.js';
|
|
12
|
+
import './model.js';
|
|
13
|
+
|
|
14
|
+
interface WriteEpubOptions {
|
|
15
|
+
readonly document: ReadonlyDocument;
|
|
16
|
+
readonly path: string;
|
|
17
|
+
}
|
|
18
|
+
declare function writeEpub(options: WriteEpubOptions): Promise<void>;
|
|
19
|
+
|
|
20
|
+
export { type WriteEpubOptions, writeEpub };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { writeEpubArchive } from "./archive.js";
|
|
2
|
+
import { buildEpubBook } from "./book.js";
|
|
3
|
+
import { EPUB_OUTPUT_VERSION } from "./package.js";
|
|
4
|
+
async function writeEpub(options) {
|
|
5
|
+
const book = await options.document.openSession(async (document) => {
|
|
6
|
+
return await buildEpubBook(document);
|
|
7
|
+
});
|
|
8
|
+
await writeEpubArchive(options.path, book);
|
|
9
|
+
}
|
|
10
|
+
export {
|
|
11
|
+
EPUB_OUTPUT_VERSION,
|
|
12
|
+
writeEpub
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/output/epub/index.ts"],"sourcesContent":["import type { ReadonlyDocument } from \"../../document/index.js\";\n\nimport { writeEpubArchive } from \"./archive.js\";\nimport { buildEpubBook } from \"./book.js\";\nimport { EPUB_OUTPUT_VERSION } from \"./package.js\";\n\nexport interface WriteEpubOptions {\n readonly document: ReadonlyDocument;\n readonly path: string;\n}\n\nexport async function writeEpub(options: WriteEpubOptions): Promise<void> {\n const book = await options.document.openSession(async (document) => {\n return await buildEpubBook(document);\n });\n\n await writeEpubArchive(options.path, book);\n}\n\nexport { EPUB_OUTPUT_VERSION };\n"],"mappings":"AAEA,SAAS,wBAAwB;AACjC,SAAS,qBAAqB;AAC9B,SAAS,2BAA2B;AAOpC,eAAsB,UAAU,SAA0C;AACxE,QAAM,OAAO,MAAM,QAAQ,SAAS,YAAY,OAAO,aAAa;AAClE,WAAO,MAAM,cAAc,QAAQ;AAAA,EACrC,CAAC;AAED,QAAM,iBAAiB,QAAQ,MAAM,IAAI;AAC3C;","names":[]}
|