@mdfriday/foundry 26.4.20 → 26.5.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/dist/cjs/index.js +1 -1
- package/dist/cjs/obsidian/mobile.js +1 -1
- package/dist/cjs/worker/pool-manager.js +2 -2
- package/dist/cjs/worker/worker-node.js +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/obsidian/mobile.js +1 -1
- package/dist/types/internal/application/batch-task-queue.d.ts +17 -0
- package/dist/types/internal/application/container.d.ts +66 -0
- package/dist/types/internal/application/identity.d.ts +173 -0
- package/dist/types/internal/application/incremental-build-coordinator.d.ts +28 -0
- package/dist/types/internal/application/incremental-ssg.d.ts +4 -0
- package/dist/types/internal/application/index.d.ts +5 -4
- package/dist/types/internal/application/publish.d.ts +37 -0
- package/dist/types/internal/application/ssg-parallel.d.ts +6 -0
- package/dist/types/internal/application/ssg.d.ts +15 -0
- package/dist/types/internal/application/wiki-service-config.d.ts +65 -0
- package/dist/types/internal/application/wiki-service.d.ts +199 -0
- package/dist/types/internal/application/worker/pool-manager.d.ts +43 -0
- package/dist/types/internal/application/worker/worker-browser.d.ts +6 -0
- package/dist/types/internal/application/worker/worker-main.d.ts +12 -0
- package/dist/types/internal/application/worker/worker-state.d.ts +23 -0
- package/dist/types/internal/application/workspace.d.ts +98 -0
- package/dist/types/internal/domain/config/entity/config.d.ts +40 -0
- package/dist/types/internal/domain/config/entity/language.d.ts +51 -0
- package/dist/types/internal/domain/config/entity/markdown.d.ts +36 -0
- package/dist/types/internal/domain/config/entity/module.d.ts +36 -0
- package/dist/types/internal/domain/config/entity/root.d.ts +39 -0
- package/dist/types/internal/domain/config/entity/service.d.ts +36 -0
- package/dist/types/internal/domain/config/entity/social.d.ts +43 -0
- package/dist/types/internal/domain/config/entity/taxonomy.d.ts +39 -0
- package/dist/types/internal/domain/config/factory/config.d.ts +3 -0
- package/dist/types/internal/domain/config/factory/loader.d.ts +24 -0
- package/dist/types/internal/domain/config/factory/provider.d.ts +10 -0
- package/dist/types/internal/domain/config/factory/sourcedescriptor.d.ts +12 -0
- package/dist/types/internal/domain/config/type.d.ts +56 -0
- package/dist/types/internal/domain/config/vo/language.d.ts +6 -0
- package/dist/types/internal/domain/config/vo/markdown.d.ts +13 -0
- package/dist/types/internal/domain/config/vo/module.d.ts +9 -0
- package/dist/types/internal/domain/config/vo/root.d.ts +6 -0
- package/dist/types/internal/domain/config/vo/service.d.ts +6 -0
- package/dist/types/internal/domain/config/vo/social.d.ts +16 -0
- package/dist/types/internal/domain/config/vo/taxonomy.d.ts +12 -0
- package/dist/types/internal/domain/content/entity/content.d.ts +36 -0
- package/dist/types/internal/domain/content/entity/page.d.ts +23 -0
- package/dist/types/internal/domain/content/entity/pagebuilder.d.ts +83 -0
- package/dist/types/internal/domain/content/entity/pagecollector.d.ts +3 -0
- package/dist/types/internal/domain/content/entity/pagecontent.d.ts +14 -0
- package/dist/types/internal/domain/content/entity/pagemap.d.ts +69 -0
- package/dist/types/internal/domain/content/entity/pagesource.d.ts +52 -0
- package/dist/types/internal/domain/content/entity/pagetrees.d.ts +12 -0
- package/dist/types/internal/domain/content/entity/paginator.d.ts +19 -0
- package/dist/types/internal/domain/content/entity/section.d.ts +15 -0
- package/dist/types/internal/domain/content/entity/shortcode.d.ts +39 -0
- package/dist/types/internal/domain/content/entity/standalone.d.ts +9 -0
- package/dist/types/internal/domain/content/entity/taxonomy.d.ts +15 -0
- package/dist/types/internal/domain/content/entity/term.d.ts +6 -0
- package/dist/types/internal/domain/content/entity/translator.d.ts +22 -0
- package/dist/types/internal/domain/content/type.d.ts +6 -0
- package/dist/types/internal/domain/content/vo/classifier.d.ts +24 -0
- package/dist/types/internal/domain/content/vo/frontmatter.d.ts +65 -0
- package/dist/types/internal/domain/content/vo/kind.d.ts +10 -0
- package/dist/types/internal/domain/fs/entity/basefs.d.ts +23 -0
- package/dist/types/internal/domain/fs/entity/fs.d.ts +13 -0
- package/dist/types/internal/domain/fs/entity/originfs.d.ts +6 -0
- package/dist/types/internal/domain/fs/entity/overlaydir.d.ts +44 -0
- package/dist/types/internal/domain/fs/entity/overlayfs.d.ts +79 -0
- package/dist/types/internal/domain/fs/entity/service.d.ts +15 -0
- package/dist/types/internal/domain/fs/factory/fs.d.ts +4 -0
- package/dist/types/internal/domain/fs/type.d.ts +95 -0
- package/dist/types/internal/domain/fs/vo/dir.d.ts +41 -0
- package/dist/types/internal/domain/fs/vo/file.d.ts +28 -0
- package/dist/types/internal/domain/fs/vo/fileinfo.d.ts +23 -0
- package/dist/types/internal/domain/fs/vo/filemeta.d.ts +45 -0
- package/dist/types/internal/domain/fs/vo/filesystemscollector.d.ts +17 -0
- package/dist/types/internal/domain/fs/vo/filevitural.d.ts +8 -0
- package/dist/types/internal/domain/fs/vo/osfs.d.ts +12 -0
- package/dist/types/internal/domain/fs/vo/overlay-factory.d.ts +4 -0
- package/dist/types/internal/domain/fs/vo/overlayfs-factory.d.ts +42 -0
- package/dist/types/internal/domain/fs/vo/overlayoptions.d.ts +44 -0
- package/dist/types/internal/domain/fs/vo/static-copier.d.ts +22 -0
- package/dist/types/internal/domain/fs/vo/walkway.d.ts +22 -0
- package/dist/types/internal/domain/identity/entity/user.d.ts +100 -0
- package/dist/types/internal/domain/identity/factory/user-factory.d.ts +183 -0
- package/dist/types/internal/domain/identity/repository/index.d.ts +30 -0
- package/dist/types/internal/domain/identity/type.d.ts +17 -0
- package/dist/types/internal/domain/identity/value-object/device.d.ts +26 -0
- package/dist/types/internal/domain/identity/value-object/email.d.ts +29 -0
- package/dist/types/internal/domain/identity/value-object/license.d.ts +91 -0
- package/dist/types/internal/domain/identity/value-object/server-config.d.ts +37 -0
- package/dist/types/internal/domain/identity/value-object/sync-config.d.ts +47 -0
- package/dist/types/internal/domain/identity/value-object/token.d.ts +35 -0
- package/dist/types/internal/domain/markdown/entity/markdown.d.ts +41 -0
- package/dist/types/internal/domain/markdown/factory/it/config.d.ts +60 -0
- package/dist/types/internal/domain/markdown/factory/it/index.d.ts +21 -1
- package/dist/types/internal/domain/markdown/factory/it/parserresult.d.ts +3 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/callout-plugin.d.ts +40 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/latex-plugin.d.ts +23 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/mermaid-plugin.d.ts +24 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/tag-plugin.d.ts +71 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/wikilink-plugin.d.ts +28 -0
- package/dist/types/internal/domain/markdown/factory/it/plugins/wikilink.d.ts +31 -0
- package/dist/types/internal/domain/markdown/factory/it/tableofcontents.d.ts +21 -0
- package/dist/types/internal/domain/markdown/factory/it/util/path.d.ts +11 -0
- package/dist/types/internal/domain/markdown/factory/it/util/slugger-fallback.d.ts +6 -0
- package/dist/types/internal/domain/markdown/type.d.ts +159 -0
- package/dist/types/internal/domain/markdown/vo/config.d.ts +48 -0
- package/dist/types/internal/domain/markdown/vo/content.d.ts +92 -0
- package/dist/types/internal/domain/markdown/vo/context.d.ts +9 -0
- package/dist/types/internal/domain/markdown/vo/highlight.d.ts +15 -0
- package/dist/types/internal/domain/markdown/vo/pageparser.d.ts +9 -0
- package/dist/types/internal/domain/markdown/vo/parseinfo.d.ts +36 -0
- package/dist/types/internal/domain/markdown/vo/parserresult.d.ts +6 -0
- package/dist/types/internal/domain/markdown/vo/shortcode.d.ts +31 -1
- package/dist/types/internal/domain/markdown/vo/tableofcontents.d.ts +21 -0
- package/dist/types/internal/domain/module/entity/lang.d.ts +12 -0
- package/dist/types/internal/domain/module/entity/module.d.ts +73 -0
- package/dist/types/internal/domain/module/factory/module.d.ts +6 -0
- package/dist/types/internal/domain/module/type.d.ts +58 -0
- package/dist/types/internal/domain/module/vo/cache.d.ts +48 -0
- package/dist/types/internal/domain/module/vo/httpclient.d.ts +14 -0
- package/dist/types/internal/domain/module/vo/module.d.ts +76 -0
- package/dist/types/internal/domain/module/vo/mount.d.ts +39 -0
- package/dist/types/internal/domain/module/vo/themes.d.ts +38 -0
- package/dist/types/internal/domain/module/vo/zipextractor.d.ts +31 -0
- package/dist/types/internal/domain/paths/entity/path.d.ts +28 -0
- package/dist/types/internal/domain/paths/factory/pathfactory.d.ts +82 -0
- package/dist/types/internal/domain/paths/type.d.ts +132 -0
- package/dist/types/internal/domain/paths/vo/pathcomponents.d.ts +94 -0
- package/dist/types/internal/domain/paths/vo/pathparser.d.ts +77 -0
- package/dist/types/internal/domain/publish/entity/publisher.d.ts +26 -0
- package/dist/types/internal/domain/publish/factory/publisher-factory.d.ts +17 -0
- package/dist/types/internal/domain/publish/repository/http-client.d.ts +21 -0
- package/dist/types/internal/domain/publish/repository/manifest-repository.d.ts +27 -0
- package/dist/types/internal/domain/publish/type.d.ts +49 -0
- package/dist/types/internal/domain/publish/value-object/ftp-publisher.d.ts +30 -0
- package/dist/types/internal/domain/publish/value-object/mdfriday-publisher.d.ts +57 -0
- package/dist/types/internal/domain/publish/value-object/netlify-publisher.d.ts +55 -0
- package/dist/types/internal/domain/publish/value-object/publish-config.d.ts +38 -0
- package/dist/types/internal/domain/publish/value-object/publish-manifest.d.ts +50 -0
- package/dist/types/internal/domain/resources/entity/http.d.ts +11 -0
- package/dist/types/internal/domain/resources/entity/integrity.d.ts +4 -0
- package/dist/types/internal/domain/resources/entity/minifier.d.ts +4 -0
- package/dist/types/internal/domain/resources/entity/publisher.d.ts +24 -0
- package/dist/types/internal/domain/resources/entity/resource.d.ts +4 -0
- package/dist/types/internal/domain/resources/entity/resources.d.ts +40 -0
- package/dist/types/internal/domain/resources/entity/template.d.ts +4 -0
- package/dist/types/internal/domain/resources/factory/resource.d.ts +4 -0
- package/dist/types/internal/domain/site/entity/language.d.ts +55 -0
- package/dist/types/internal/domain/site/entity/menu-builder.d.ts +50 -0
- package/dist/types/internal/domain/site/entity/navigation.d.ts +8 -0
- package/dist/types/internal/domain/site/entity/page.d.ts +88 -0
- package/dist/types/internal/domain/site/entity/pagegraph.d.ts +85 -0
- package/dist/types/internal/domain/site/entity/pager.d.ts +6 -0
- package/dist/types/internal/domain/site/entity/publisher.d.ts +26 -0
- package/dist/types/internal/domain/site/entity/ref.d.ts +27 -0
- package/dist/types/internal/domain/site/entity/site.d.ts +178 -0
- package/dist/types/internal/domain/site/factory/navigation-factory.d.ts +6 -0
- package/dist/types/internal/domain/site/factory/site.d.ts +4 -0
- package/dist/types/internal/domain/site/service/html-link-processor.d.ts +44 -0
- package/dist/types/internal/domain/site/type.d.ts +100 -0
- package/dist/types/internal/domain/site/valueobject/author.d.ts +16 -0
- package/dist/types/internal/domain/site/valueobject/baseurl.d.ts +39 -0
- package/dist/types/internal/domain/site/valueobject/menu.d.ts +49 -0
- package/dist/types/internal/domain/site/valueobject/organization.d.ts +37 -0
- package/dist/types/internal/domain/site/valueobject/path.d.ts +50 -0
- package/dist/types/internal/domain/site/valueobject/version.d.ts +14 -0
- package/dist/types/internal/domain/template/entity/executor.d.ts +22 -0
- package/dist/types/internal/domain/template/entity/lookup.d.ts +55 -0
- package/dist/types/internal/domain/template/entity/parser.d.ts +40 -0
- package/dist/types/internal/domain/template/entity/template.d.ts +87 -0
- package/dist/types/internal/domain/template/factory/template.d.ts +61 -0
- package/dist/types/internal/domain/template/type.d.ts +109 -0
- package/dist/types/internal/domain/template/vo/baseof.d.ts +47 -0
- package/dist/types/internal/domain/template/vo/info.d.ts +28 -0
- package/dist/types/internal/domain/template/vo/namespace.d.ts +91 -0
- package/dist/types/internal/domain/template/vo/registry.d.ts +160 -0
- package/dist/types/internal/domain/wiki/entity/concept.d.ts +31 -0
- package/dist/types/internal/domain/wiki/entity/connection.d.ts +29 -0
- package/dist/types/internal/domain/wiki/entity/conversation.d.ts +65 -0
- package/dist/types/internal/domain/wiki/entity/embedding-index.d.ts +60 -0
- package/dist/types/internal/domain/wiki/entity/entity.d.ts +32 -0
- package/dist/types/internal/domain/wiki/entity/knowledge-base.d.ts +292 -0
- package/dist/types/internal/domain/wiki/entity/operation-log.d.ts +82 -0
- package/dist/types/internal/domain/wiki/factory/wiki-factory.d.ts +41 -0
- package/dist/types/internal/domain/wiki/index.d.ts +22 -0
- package/dist/types/internal/domain/wiki/repository/conversation-repository.interface.d.ts +29 -0
- package/dist/types/internal/domain/wiki/repository/crypto-service.d.ts +16 -0
- package/dist/types/internal/domain/wiki/repository/embedding-provider.d.ts +12 -0
- package/dist/types/internal/domain/wiki/repository/file-system.d.ts +43 -0
- package/dist/types/internal/domain/wiki/repository/index.d.ts +14 -0
- package/dist/types/internal/domain/wiki/repository/kb-repository.interface.d.ts +30 -0
- package/dist/types/internal/domain/wiki/repository/llm-http-client.d.ts +40 -0
- package/dist/types/internal/domain/wiki/repository/llm-provider.d.ts +34 -0
- package/dist/types/internal/domain/wiki/repository/path-service.d.ts +32 -0
- package/dist/types/internal/domain/wiki/repository/wiki-page-repository.interface.d.ts +49 -0
- package/dist/types/internal/domain/wiki/value-object/connection-type.d.ts +24 -0
- package/dist/types/internal/domain/wiki/value-object/content-annotator.d.ts +61 -0
- package/dist/types/internal/domain/wiki/value-object/entity-id.d.ts +17 -0
- package/dist/types/internal/domain/wiki/value-object/entity-type.d.ts +24 -0
- package/dist/types/internal/domain/wiki/value-object/extraction-parser.d.ts +27 -0
- package/dist/types/internal/domain/wiki/value-object/extraction-result.d.ts +32 -0
- package/dist/types/internal/domain/wiki/value-object/retrieval.d.ts +228 -0
- package/dist/types/internal/domain/wiki/value-object/source-record.d.ts +17 -0
- package/dist/types/internal/domain/wiki/value-object/wiki-config.d.ts +40 -0
- package/dist/types/internal/domain/wiki/value-object/wiki-index-generator.d.ts +31 -0
- package/dist/types/internal/domain/wiki/value-object/wiki-page-renderer.d.ts +42 -0
- package/dist/types/internal/domain/workspace/entity/authentication.d.ts +29 -0
- package/dist/types/internal/domain/workspace/entity/project.d.ts +173 -0
- package/dist/types/internal/domain/workspace/entity/workspace.d.ts +85 -0
- package/dist/types/internal/domain/workspace/factory/workspace-factory.d.ts +107 -0
- package/dist/types/internal/domain/workspace/repository/file-system.d.ts +241 -0
- package/dist/types/internal/domain/workspace/repository/index.d.ts +6 -0
- package/dist/types/internal/domain/workspace/repository.d.ts +72 -0
- package/dist/types/internal/domain/workspace/type.d.ts +18 -0
- package/dist/types/internal/domain/workspace/value-object/folder-structure.d.ts +41 -0
- package/dist/types/internal/domain/workspace/value-object/project-metadata.d.ts +36 -0
- package/dist/types/internal/domain/workspace/value-object/workspace-metadata.d.ts +7 -0
- package/dist/types/internal/infrastructure/embedding/embedding-provider.interface.d.ts +33 -0
- package/dist/types/internal/infrastructure/embedding/index.d.ts +5 -0
- package/dist/types/internal/infrastructure/embedding/ollama-embedding-provider.d.ts +24 -0
- package/dist/types/internal/infrastructure/http/netlify-http-client.d.ts +20 -0
- package/dist/types/internal/infrastructure/http/node-http-client.d.ts +3 -0
- package/dist/types/internal/infrastructure/index.d.ts +8 -0
- package/dist/types/internal/infrastructure/llm/fetch-http-client.d.ts +24 -0
- package/dist/types/internal/infrastructure/llm/index.d.ts +6 -0
- package/dist/types/internal/infrastructure/llm/llm-config.d.ts +80 -0
- package/dist/types/internal/infrastructure/llm/lmstudio-provider.d.ts +55 -0
- package/dist/types/internal/infrastructure/llm/node-llm-http-client.d.ts +21 -0
- package/dist/types/internal/infrastructure/llm/ollama-provider.d.ts +17 -0
- package/dist/types/internal/infrastructure/llm/openai-compatible-provider.d.ts +70 -0
- package/dist/types/internal/infrastructure/llm/provider-factory.d.ts +36 -0
- package/dist/types/internal/infrastructure/llm/provider.d.ts +77 -0
- package/dist/types/internal/infrastructure/node/index.d.ts +11 -0
- package/dist/types/internal/infrastructure/node/node-conversation-repository.d.ts +21 -0
- package/dist/types/internal/infrastructure/node/node-crypto-service.d.ts +10 -0
- package/dist/types/internal/infrastructure/node/node-file-system.d.ts +29 -0
- package/dist/types/internal/infrastructure/node/node-kb-repository.d.ts +18 -0
- package/dist/types/internal/infrastructure/node/node-path-service.d.ts +14 -0
- package/dist/types/internal/infrastructure/node/node-wiki-page-repository.d.ts +25 -0
- package/dist/types/internal/infrastructure/persistence/node-file-system.d.ts +8 -0
- package/dist/types/internal/infrastructure/persistence/node-manifest-repository.d.ts +31 -0
- package/dist/types/internal/infrastructure/persistence/node-snapshot-repository.d.ts +28 -0
- package/dist/types/internal/infrastructure/persistence/node-workspace-repository.d.ts +9 -0
- package/dist/types/pkg/cahce/cache.d.ts +56 -0
- package/dist/types/pkg/lang/data.d.ts +21 -0
- package/dist/types/pkg/lang/index.d.ts +46 -0
- package/dist/types/pkg/lang/service.d.ts +49 -0
- package/dist/types/pkg/lang/types.d.ts +29 -0
- package/dist/types/pkg/log/http.d.ts +16 -0
- package/dist/types/pkg/log/manager.d.ts +57 -0
- package/dist/types/pkg/maps/scratch.d.ts +25 -0
- package/dist/types/pkg/md/parser/item.d.ts +3 -3
- package/dist/types/pkg/media/type.d.ts +19 -0
- package/dist/types/pkg/page-filter/index.d.ts +29 -0
- package/dist/types/pkg/paths/index.d.ts +9 -0
- package/dist/types/pkg/text/index.d.ts +4 -0
- package/dist/types/pkg/web/server/livereload-server.d.ts +7 -0
- package/dist/types/pkg/web/watcher/content-file-watcher.d.ts +3 -0
- package/package.json +21 -15
- package/dist/types/index.d.ts +0 -20
- package/dist/types/internal/interfaces/obsidian/adapters/identity-adapter.d.ts +0 -5
- package/dist/types/internal/interfaces/obsidian/adapters/index.d.ts +0 -2
- package/dist/types/internal/interfaces/obsidian/adapters/workspace-adapter.d.ts +0 -8
- package/dist/types/internal/interfaces/obsidian/desktop/adapters/identity-adapter.d.ts +0 -6
- package/dist/types/internal/interfaces/obsidian/desktop/adapters/index.d.ts +0 -2
- package/dist/types/internal/interfaces/obsidian/desktop/adapters/workspace-adapter.d.ts +0 -12
- package/dist/types/internal/interfaces/obsidian/desktop/container.d.ts +0 -7
- package/dist/types/internal/interfaces/obsidian/desktop/index.d.ts +0 -22
- package/dist/types/internal/interfaces/obsidian/index.d.ts +0 -7
- package/dist/types/internal/interfaces/obsidian/mobile/adapters/identity-adapter.d.ts +0 -9
- package/dist/types/internal/interfaces/obsidian/mobile/adapters/index.d.ts +0 -2
- package/dist/types/internal/interfaces/obsidian/mobile/adapters/workspace-adapter.d.ts +0 -13
- package/dist/types/internal/interfaces/obsidian/mobile/config-types.d.ts +0 -13
- package/dist/types/internal/interfaces/obsidian/mobile/container.d.ts +0 -6
- package/dist/types/internal/interfaces/obsidian/mobile/index.d.ts +0 -16
- package/dist/types/internal/interfaces/obsidian/mobile.d.ts +0 -2
- package/dist/types/internal/interfaces/obsidian/services/auth.service.d.ts +0 -11
- package/dist/types/internal/interfaces/obsidian/services/build.service.d.ts +0 -9
- package/dist/types/internal/interfaces/obsidian/services/config.service.d.ts +0 -31
- package/dist/types/internal/interfaces/obsidian/services/domain.service.d.ts +0 -15
- package/dist/types/internal/interfaces/obsidian/services/license.service.d.ts +0 -22
- package/dist/types/internal/interfaces/obsidian/services/project.service.d.ts +0 -17
- package/dist/types/internal/interfaces/obsidian/services/publish.service.d.ts +0 -11
- package/dist/types/internal/interfaces/obsidian/services/serve.service.d.ts +0 -18
- package/dist/types/internal/interfaces/obsidian/services/workspace.service.d.ts +0 -10
- package/dist/types/internal/interfaces/obsidian/types/auth.d.ts +0 -27
- package/dist/types/internal/interfaces/obsidian/types/build.d.ts +0 -23
- package/dist/types/internal/interfaces/obsidian/types/config.d.ts +0 -16
- package/dist/types/internal/interfaces/obsidian/types/domain.d.ts +0 -46
- package/dist/types/internal/interfaces/obsidian/types/index.d.ts +0 -9
- package/dist/types/internal/interfaces/obsidian/types/license.d.ts +0 -87
- package/dist/types/internal/interfaces/obsidian/types/project.d.ts +0 -56
- package/dist/types/internal/interfaces/obsidian/types/publish.d.ts +0 -33
- package/dist/types/internal/interfaces/obsidian/types/serve.d.ts +0 -46
- package/dist/types/internal/interfaces/obsidian/types/workspace.d.ts +0 -27
- package/dist/types/pkg/log/browser-manager.d.ts +0 -20
- package/dist/types/pkg/log/browser.d.ts +0 -25
- package/dist/types/pkg/media/buildin.d.ts +0 -3
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* KnowledgeBase Aggregate Root
|
|
3
|
+
*
|
|
4
|
+
* 聚合根负责:
|
|
5
|
+
* - 持有所有子实体 (Entity, Concept, Connection, SourceRecord, OperationLog)
|
|
6
|
+
* - 提供所有业务方法 (ingestFromSource, query, generateWikiPages, lint)
|
|
7
|
+
* - 确保业务一致性
|
|
8
|
+
*/
|
|
9
|
+
import { Entity } from './entity';
|
|
10
|
+
import { Concept } from './concept';
|
|
11
|
+
import { Connection } from './connection';
|
|
12
|
+
import { OperationLog } from './operation-log';
|
|
13
|
+
import { EmbeddingIndex } from './embedding-index';
|
|
14
|
+
import { SourceRecord } from '../value-object/source-record';
|
|
15
|
+
import { EntityId } from '../value-object/entity-id';
|
|
16
|
+
import { ExtractionResult } from '../value-object/extraction-result';
|
|
17
|
+
import { ILLMProvider, IEmbeddingProvider, IFileSystem, IPathService, ICryptoService, IWikiPageRepository } from '../repository';
|
|
18
|
+
export { Entity, Concept, Connection, SourceRecord, OperationLog };
|
|
19
|
+
export declare class KnowledgeBase {
|
|
20
|
+
private _entities;
|
|
21
|
+
private _concepts;
|
|
22
|
+
private _connections;
|
|
23
|
+
private _sources;
|
|
24
|
+
private _operationLog;
|
|
25
|
+
private _embeddingIndex;
|
|
26
|
+
private _version;
|
|
27
|
+
private _createdAt;
|
|
28
|
+
private _updatedAt;
|
|
29
|
+
constructor();
|
|
30
|
+
/**
|
|
31
|
+
* 添加或合并实体
|
|
32
|
+
*/
|
|
33
|
+
addOrMergeEntity(name: string, type: string, aliases: string[], facts: string[], sourcePath: string): Entity;
|
|
34
|
+
/**
|
|
35
|
+
* 添加或合并概念
|
|
36
|
+
*/
|
|
37
|
+
addOrMergeConcept(name: string, definition: string, related: string[], aliases: string[], sourcePath: string): Concept;
|
|
38
|
+
/**
|
|
39
|
+
* 添加连接(去重)
|
|
40
|
+
*/
|
|
41
|
+
addConnection(from: string, to: string, type: string, description: string, sourcePath: string): Connection;
|
|
42
|
+
/**
|
|
43
|
+
* 标记源文件已处理
|
|
44
|
+
*/
|
|
45
|
+
markSource(record: SourceRecord): void;
|
|
46
|
+
/**
|
|
47
|
+
* 获取 OperationLog
|
|
48
|
+
*/
|
|
49
|
+
getOperationLog(): OperationLog;
|
|
50
|
+
/**
|
|
51
|
+
* 获取统计信息 (包含 OperationLog)
|
|
52
|
+
*/
|
|
53
|
+
getStats(): {
|
|
54
|
+
entities: number;
|
|
55
|
+
concepts: number;
|
|
56
|
+
connections: number;
|
|
57
|
+
sources: number;
|
|
58
|
+
operations: number;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* 检查文件是否需要提取(基于哈希去重)
|
|
62
|
+
*/
|
|
63
|
+
needsExtraction(path: string, mtime: number, contentHash: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* 检查文件路径是否是全新来源(从未被 ingest 过)
|
|
66
|
+
*
|
|
67
|
+
* 用于增量构建场景:区分"全新文件"与"已处理文件"。
|
|
68
|
+
* 与 needsExtraction 不同:此方法仅判断路径是否存在,不考虑内容变化。
|
|
69
|
+
*/
|
|
70
|
+
isNewSource(path: string): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* 返回当前已知的所有 source 路径集合(用于增量过滤)
|
|
73
|
+
*/
|
|
74
|
+
getIngestedPaths(): ReadonlySet<string>;
|
|
75
|
+
/**
|
|
76
|
+
* 回填 content hash(用于已存在但缺少哈希的文件)
|
|
77
|
+
*/
|
|
78
|
+
backfillContentHash(path: string, contentHash: string, mtime: number): void;
|
|
79
|
+
get entities(): IterableIterator<Entity>;
|
|
80
|
+
get concepts(): IterableIterator<Concept>;
|
|
81
|
+
get connections(): ReadonlyArray<Connection>;
|
|
82
|
+
get sources(): IterableIterator<SourceRecord>;
|
|
83
|
+
getEntity(id: string): Entity | undefined;
|
|
84
|
+
getConcept(id: string): Concept | undefined;
|
|
85
|
+
getSource(id: string): SourceRecord | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* 获取所有实体列表
|
|
88
|
+
*/
|
|
89
|
+
getAllEntities(): Entity[];
|
|
90
|
+
/**
|
|
91
|
+
* 获取所有概念列表
|
|
92
|
+
*/
|
|
93
|
+
getAllConcepts(): Concept[];
|
|
94
|
+
/**
|
|
95
|
+
* 获取所有来源列表
|
|
96
|
+
*/
|
|
97
|
+
getAllSources(): SourceRecord[];
|
|
98
|
+
/**
|
|
99
|
+
* 获取与指定实体相关的连接
|
|
100
|
+
*/
|
|
101
|
+
getConnectionsByEntity(entityId: EntityId): Connection[];
|
|
102
|
+
/**
|
|
103
|
+
* 获取来自指定来源的实体
|
|
104
|
+
*/
|
|
105
|
+
getEntitiesBySource(sourceId: string): Entity[];
|
|
106
|
+
/**
|
|
107
|
+
* 获取来自指定来源的概念
|
|
108
|
+
*/
|
|
109
|
+
getConceptsBySource(sourceId: string): Concept[];
|
|
110
|
+
/**
|
|
111
|
+
* 导出词汇表(供 LLM 提取时参考)
|
|
112
|
+
*/
|
|
113
|
+
exportVocabulary(): string;
|
|
114
|
+
toJSON(): any;
|
|
115
|
+
static fromJSON(data: any): KnowledgeBase;
|
|
116
|
+
/**
|
|
117
|
+
* Merge extraction result into knowledge base
|
|
118
|
+
*
|
|
119
|
+
* 将提取结果合并到知识库中
|
|
120
|
+
* 这是原 KBMerger.merge() 的逻辑,移入聚合根
|
|
121
|
+
*/
|
|
122
|
+
mergeExtraction(result: ExtractionResult, sourcePath: string, mtime: number, contentHash: string, origin: 'user-note' | 'daily' | string): void;
|
|
123
|
+
/**
|
|
124
|
+
* Ingest knowledge from source file (核心业务方法)
|
|
125
|
+
*
|
|
126
|
+
* 从源文件提取知识并合并到聚合根
|
|
127
|
+
* 依赖通过参数传入,不在聚合根内部持有
|
|
128
|
+
*
|
|
129
|
+
* @param sourcePath 源文件路径
|
|
130
|
+
* @param content 文件内容
|
|
131
|
+
* @param dependencies 外部依赖
|
|
132
|
+
* @returns 提取结果
|
|
133
|
+
*/
|
|
134
|
+
ingestFromSource(sourcePath: string, content: string, dependencies: {
|
|
135
|
+
llmProvider: ILLMProvider;
|
|
136
|
+
model: string;
|
|
137
|
+
temperature?: number;
|
|
138
|
+
maxTokens?: number;
|
|
139
|
+
outputLanguage?: string;
|
|
140
|
+
fileSystem: IFileSystem;
|
|
141
|
+
crypto: ICryptoService;
|
|
142
|
+
}): Promise<{
|
|
143
|
+
success: boolean;
|
|
144
|
+
extractedEntities: number;
|
|
145
|
+
extractedConcepts: number;
|
|
146
|
+
extractedConnections: number;
|
|
147
|
+
timeMs: number;
|
|
148
|
+
error?: string;
|
|
149
|
+
}>;
|
|
150
|
+
/**
|
|
151
|
+
* Build extraction prompt (辅助方法)
|
|
152
|
+
*/
|
|
153
|
+
private buildExtractionPrompt;
|
|
154
|
+
/**
|
|
155
|
+
* Retrieve entities and concepts based on query
|
|
156
|
+
*
|
|
157
|
+
* 多层混合检索 (关键词 + 路径 + [可选]语义向量)
|
|
158
|
+
* 使用 RRF 融合多路检索结果
|
|
159
|
+
* 这是原 WikiRetriever.retrieve() 的逻辑,移入聚合根
|
|
160
|
+
*/
|
|
161
|
+
retrieve(question: string, options?: {
|
|
162
|
+
maxEntities?: number;
|
|
163
|
+
maxConcepts?: number;
|
|
164
|
+
embeddingIndex?: ReadonlyMap<string, number[]>;
|
|
165
|
+
queryEmbedding?: readonly number[];
|
|
166
|
+
}): {
|
|
167
|
+
question: string;
|
|
168
|
+
queryType: string;
|
|
169
|
+
entities: Entity[];
|
|
170
|
+
concepts: Concept[];
|
|
171
|
+
connections: Connection[];
|
|
172
|
+
sources: SourceRecord[];
|
|
173
|
+
};
|
|
174
|
+
/**
|
|
175
|
+
* Lint the knowledge base for issues
|
|
176
|
+
*
|
|
177
|
+
* 执行健康检查,发现知识库中的问题
|
|
178
|
+
* 这是原 WikiLinter.lint() 的逻辑,移入聚合根
|
|
179
|
+
*/
|
|
180
|
+
lint(): Array<{
|
|
181
|
+
severity: 'error' | 'warning' | 'info';
|
|
182
|
+
type: string;
|
|
183
|
+
message: string;
|
|
184
|
+
location?: string;
|
|
185
|
+
suggestion?: string;
|
|
186
|
+
}>;
|
|
187
|
+
/**
|
|
188
|
+
* Query knowledge base (核心业务方法)
|
|
189
|
+
*
|
|
190
|
+
* 查询知识库,使用 LLM 生成答案
|
|
191
|
+
* 结合检索到的上下文
|
|
192
|
+
*
|
|
193
|
+
* @param question 用户问题
|
|
194
|
+
* @param dependencies 外部依赖
|
|
195
|
+
* @returns 查询结果
|
|
196
|
+
*/
|
|
197
|
+
query(question: string, dependencies: {
|
|
198
|
+
llmProvider: ILLMProvider;
|
|
199
|
+
embeddingProvider?: IEmbeddingProvider;
|
|
200
|
+
model: string;
|
|
201
|
+
embeddingModel?: string;
|
|
202
|
+
temperature?: number;
|
|
203
|
+
maxResults?: number;
|
|
204
|
+
}): Promise<{
|
|
205
|
+
entities: Array<{
|
|
206
|
+
id: string;
|
|
207
|
+
name: string;
|
|
208
|
+
type: string;
|
|
209
|
+
relevance: number;
|
|
210
|
+
}>;
|
|
211
|
+
concepts: Array<{
|
|
212
|
+
name: string;
|
|
213
|
+
definition: string;
|
|
214
|
+
relevance: number;
|
|
215
|
+
}>;
|
|
216
|
+
connections: Array<{
|
|
217
|
+
from: string;
|
|
218
|
+
to: string;
|
|
219
|
+
type: string;
|
|
220
|
+
description: string;
|
|
221
|
+
}>;
|
|
222
|
+
}>;
|
|
223
|
+
/**
|
|
224
|
+
* Generate all wiki pages (核心业务方法)
|
|
225
|
+
*
|
|
226
|
+
* 生成所有 Wiki 页面(entities, concepts, sources, index, glossary, log)
|
|
227
|
+
*
|
|
228
|
+
* @param dependencies 外部依赖
|
|
229
|
+
*/
|
|
230
|
+
generateWikiPages(dependencies: {
|
|
231
|
+
wikiPageRepo: IWikiPageRepository;
|
|
232
|
+
pathService: IPathService;
|
|
233
|
+
fileSystem: IFileSystem;
|
|
234
|
+
}): Promise<void>;
|
|
235
|
+
private renderEntityPage;
|
|
236
|
+
private renderConceptPage;
|
|
237
|
+
private renderSourcePage;
|
|
238
|
+
private generateIndex;
|
|
239
|
+
private generateGlossary;
|
|
240
|
+
private sanitizeFilename;
|
|
241
|
+
private getSourceFilename;
|
|
242
|
+
/**
|
|
243
|
+
* 初始化或增量更新 Embedding Index
|
|
244
|
+
*
|
|
245
|
+
* 首次调用时全量构建;后续调用时仅为尚未编入索引的实体/概念补充 embedding,
|
|
246
|
+
* 已存在的条目不重新生成,避免浪费 LLM 调用。
|
|
247
|
+
* 有新增条目时 isDirty=true,saveKB 会自动持久化。
|
|
248
|
+
*/
|
|
249
|
+
buildEmbeddingIndex(dependencies: {
|
|
250
|
+
embeddingProvider: IEmbeddingProvider;
|
|
251
|
+
model: string;
|
|
252
|
+
cachePath: string;
|
|
253
|
+
fileSystem: IFileSystem;
|
|
254
|
+
}): Promise<void>;
|
|
255
|
+
/**
|
|
256
|
+
* 保存 Embedding Index 缓存
|
|
257
|
+
*/
|
|
258
|
+
saveEmbeddingIndex(fileSystem: IFileSystem, pathService: IPathService): Promise<void>;
|
|
259
|
+
/**
|
|
260
|
+
* 获取 Embedding Index(如果存在)
|
|
261
|
+
*/
|
|
262
|
+
getEmbeddingIndex(): EmbeddingIndex | null;
|
|
263
|
+
/**
|
|
264
|
+
* 检查是否有 Embedding Index
|
|
265
|
+
*/
|
|
266
|
+
hasEmbeddingIndex(): boolean;
|
|
267
|
+
/**
|
|
268
|
+
* 构建查询上下文
|
|
269
|
+
*
|
|
270
|
+
* Domain 职责:决定如何组织知识上下文
|
|
271
|
+
*/
|
|
272
|
+
private buildQueryContext;
|
|
273
|
+
/**
|
|
274
|
+
* 构建查询 Prompt
|
|
275
|
+
*
|
|
276
|
+
* Domain 职责:决定如何提示 LLM
|
|
277
|
+
*/
|
|
278
|
+
private buildQueryPrompt;
|
|
279
|
+
/**
|
|
280
|
+
* Query Stream - 流式返回
|
|
281
|
+
*
|
|
282
|
+
* Domain 方法:使用内部 EmbeddingIndex
|
|
283
|
+
*/
|
|
284
|
+
queryStream(question: string, dependencies: {
|
|
285
|
+
llmProvider: ILLMProvider;
|
|
286
|
+
embeddingProvider?: IEmbeddingProvider;
|
|
287
|
+
model: string;
|
|
288
|
+
embeddingModel?: string;
|
|
289
|
+
temperature?: number;
|
|
290
|
+
maxResults?: number;
|
|
291
|
+
}): AsyncGenerator<string, void, unknown>;
|
|
292
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OperationLog: 操作日志实体
|
|
3
|
+
*
|
|
4
|
+
* 设计理念:
|
|
5
|
+
* - 记录 Ingest, Query, Lint 等操作
|
|
6
|
+
* - 追加到 log.md 文件
|
|
7
|
+
* - 格式:## [YYYY-MM-DD HH:MM] operation | details
|
|
8
|
+
*/
|
|
9
|
+
export interface LogEntry {
|
|
10
|
+
timestamp: Date;
|
|
11
|
+
operation: 'ingest' | 'query' | 'lint' | 'generate' | 'save-answer';
|
|
12
|
+
details: string;
|
|
13
|
+
metadata?: Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
export interface IngestStats {
|
|
16
|
+
entities: number;
|
|
17
|
+
concepts: number;
|
|
18
|
+
connections: number;
|
|
19
|
+
sourcePath: string;
|
|
20
|
+
}
|
|
21
|
+
export interface QueryStats {
|
|
22
|
+
query: string;
|
|
23
|
+
resultCount: number;
|
|
24
|
+
answerSaved?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export interface LintStats {
|
|
27
|
+
issuesCount: number;
|
|
28
|
+
categories: Record<string, number>;
|
|
29
|
+
}
|
|
30
|
+
export declare class OperationLog {
|
|
31
|
+
private entries;
|
|
32
|
+
/**
|
|
33
|
+
* 添加 Ingest 操作记录
|
|
34
|
+
*/
|
|
35
|
+
addIngest(stats: IngestStats): void;
|
|
36
|
+
/**
|
|
37
|
+
* 添加 Query 操作记录
|
|
38
|
+
*/
|
|
39
|
+
addQuery(stats: QueryStats): void;
|
|
40
|
+
/**
|
|
41
|
+
* 添加 Lint 操作记录
|
|
42
|
+
*/
|
|
43
|
+
addLint(stats: LintStats): void;
|
|
44
|
+
/**
|
|
45
|
+
* 添加 Generate 操作记录
|
|
46
|
+
*/
|
|
47
|
+
addGenerate(pageCount: number): void;
|
|
48
|
+
/**
|
|
49
|
+
* 添加 Save Answer 操作记录
|
|
50
|
+
*/
|
|
51
|
+
addSaveAnswer(query: string, filepath: string): void;
|
|
52
|
+
/**
|
|
53
|
+
* 转换为 Markdown 格式
|
|
54
|
+
* 格式:## [YYYY-MM-DD HH:MM] operation | details
|
|
55
|
+
*/
|
|
56
|
+
toMarkdown(): string;
|
|
57
|
+
/**
|
|
58
|
+
* 追加到现有的 log.md 内容
|
|
59
|
+
*/
|
|
60
|
+
appendToExisting(existingContent: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* 获取条目数量
|
|
63
|
+
*/
|
|
64
|
+
get count(): number;
|
|
65
|
+
/**
|
|
66
|
+
* 清空日志
|
|
67
|
+
*/
|
|
68
|
+
clear(): void;
|
|
69
|
+
/**
|
|
70
|
+
* 从 JSON 加载
|
|
71
|
+
*/
|
|
72
|
+
static fromJSON(data: any): OperationLog;
|
|
73
|
+
/**
|
|
74
|
+
* 转换为 JSON
|
|
75
|
+
*/
|
|
76
|
+
toJSON(): any;
|
|
77
|
+
private formatTimestamp;
|
|
78
|
+
private formatOperation;
|
|
79
|
+
private getFilename;
|
|
80
|
+
private truncate;
|
|
81
|
+
private formatCategories;
|
|
82
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wiki Factory
|
|
3
|
+
*
|
|
4
|
+
* 负责 KnowledgeBase 聚合根的生命周期管理
|
|
5
|
+
* - 创建新的 KnowledgeBase
|
|
6
|
+
* - 从 Repository 加载 KnowledgeBase
|
|
7
|
+
* - 保存 KnowledgeBase 到 Repository
|
|
8
|
+
*/
|
|
9
|
+
import { KnowledgeBase } from '../entity/knowledge-base';
|
|
10
|
+
import { IKBRepository, IWikiPageRepository } from '../repository';
|
|
11
|
+
/**
|
|
12
|
+
* Wiki Factory Options
|
|
13
|
+
*/
|
|
14
|
+
export interface WikiFactoryOptions {
|
|
15
|
+
kbRepo: IKBRepository;
|
|
16
|
+
wikiPageRepo: IWikiPageRepository;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Wiki Factory
|
|
20
|
+
*/
|
|
21
|
+
export declare class WikiFactory {
|
|
22
|
+
private kbRepo;
|
|
23
|
+
private wikiPageRepo;
|
|
24
|
+
constructor(options: WikiFactoryOptions);
|
|
25
|
+
/**
|
|
26
|
+
* Create a new empty KnowledgeBase
|
|
27
|
+
*/
|
|
28
|
+
create(): KnowledgeBase;
|
|
29
|
+
/**
|
|
30
|
+
* Load KnowledgeBase from repository
|
|
31
|
+
*/
|
|
32
|
+
load(): Promise<KnowledgeBase | null>;
|
|
33
|
+
/**
|
|
34
|
+
* Save KnowledgeBase to repository
|
|
35
|
+
*/
|
|
36
|
+
save(kb: KnowledgeBase): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Get WikiPageRepository (供 Application 层使用)
|
|
39
|
+
*/
|
|
40
|
+
getWikiPageRepository(): IWikiPageRepository;
|
|
41
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wiki Domain Exports
|
|
3
|
+
*/
|
|
4
|
+
export * from './value-object/entity-id';
|
|
5
|
+
export * from './value-object/entity-type';
|
|
6
|
+
export * from './value-object/connection-type';
|
|
7
|
+
export * from './value-object/source-record';
|
|
8
|
+
export * from './value-object/extraction-result';
|
|
9
|
+
export * from './value-object/extraction-parser';
|
|
10
|
+
export * from './value-object/wiki-config';
|
|
11
|
+
export * from './value-object/retrieval';
|
|
12
|
+
export * from './value-object/content-annotator';
|
|
13
|
+
export * from './value-object/wiki-page-renderer';
|
|
14
|
+
export * from './value-object/wiki-index-generator';
|
|
15
|
+
export * from './entity/entity';
|
|
16
|
+
export * from './entity/concept';
|
|
17
|
+
export * from './entity/connection';
|
|
18
|
+
export * from './entity/knowledge-base';
|
|
19
|
+
export * from './entity/conversation';
|
|
20
|
+
export * from './entity/embedding-index';
|
|
21
|
+
export { WikiFactory, WikiFactoryOptions } from './factory/wiki-factory';
|
|
22
|
+
export * from './repository';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Conversation Repository Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的对话存储接口
|
|
5
|
+
* Infrastructure 层提供具体实现
|
|
6
|
+
*/
|
|
7
|
+
import { Conversation } from '../entity/conversation';
|
|
8
|
+
export interface SaveConversationOptions {
|
|
9
|
+
overwrite?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface IConversationRepository {
|
|
12
|
+
/**
|
|
13
|
+
* 保存对话
|
|
14
|
+
* @returns 保存的文件路径
|
|
15
|
+
*/
|
|
16
|
+
save(conversation: Conversation, options?: SaveConversationOptions): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* 获取所有对话
|
|
19
|
+
*/
|
|
20
|
+
list(): Promise<Conversation[]>;
|
|
21
|
+
/**
|
|
22
|
+
* 检查对话是否存在
|
|
23
|
+
*/
|
|
24
|
+
exists(conversationId: string): Promise<boolean>;
|
|
25
|
+
/**
|
|
26
|
+
* 获取对话文件路径
|
|
27
|
+
*/
|
|
28
|
+
getFilePath(conversationId: string): string;
|
|
29
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crypto Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的加密/哈希服务接口
|
|
5
|
+
* Infrastructure 层提供具体实现(Node.js crypto)
|
|
6
|
+
*/
|
|
7
|
+
export interface ICryptoService {
|
|
8
|
+
/**
|
|
9
|
+
* Generate hash of content
|
|
10
|
+
*/
|
|
11
|
+
hash(content: string, algorithm: 'sha256' | 'md5'): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate random UUID
|
|
14
|
+
*/
|
|
15
|
+
randomUUID(): string;
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Provider Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的 Embedding 服务接口
|
|
5
|
+
* Infrastructure 层提供具体实现
|
|
6
|
+
*/
|
|
7
|
+
export interface IEmbeddingProvider {
|
|
8
|
+
/**
|
|
9
|
+
* Generate embedding vector for text
|
|
10
|
+
*/
|
|
11
|
+
generateEmbedding(text: string, model: string): Promise<number[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File System Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的文件系统接口
|
|
5
|
+
* Infrastructure 层提供具体实现(Node.js fs / Obsidian API)
|
|
6
|
+
*/
|
|
7
|
+
export interface FileStats {
|
|
8
|
+
mtimeMs: number;
|
|
9
|
+
isFile(): boolean;
|
|
10
|
+
isDirectory(): boolean;
|
|
11
|
+
}
|
|
12
|
+
export interface IFileSystem {
|
|
13
|
+
/**
|
|
14
|
+
* Read file content
|
|
15
|
+
*/
|
|
16
|
+
readFile(path: string, encoding: string): Promise<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Write file content
|
|
19
|
+
*/
|
|
20
|
+
writeFile(path: string, content: string, encoding: string): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Get file stats
|
|
23
|
+
*/
|
|
24
|
+
stat(path: string): Promise<FileStats>;
|
|
25
|
+
/**
|
|
26
|
+
* Check if file/directory exists
|
|
27
|
+
*/
|
|
28
|
+
exists(path: string): Promise<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Create directory
|
|
31
|
+
*/
|
|
32
|
+
mkdir(path: string, options?: {
|
|
33
|
+
recursive?: boolean;
|
|
34
|
+
}): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Read directory
|
|
37
|
+
*/
|
|
38
|
+
readdir(path: string): Promise<string[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Delete file
|
|
41
|
+
*/
|
|
42
|
+
unlink(path: string): Promise<void>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wiki Domain Repository Interfaces
|
|
3
|
+
*
|
|
4
|
+
* 统一导出所有 Repository 接口
|
|
5
|
+
*/
|
|
6
|
+
export * from './kb-repository.interface';
|
|
7
|
+
export * from './wiki-page-repository.interface';
|
|
8
|
+
export * from './conversation-repository.interface';
|
|
9
|
+
export * from './llm-provider';
|
|
10
|
+
export * from './llm-http-client';
|
|
11
|
+
export * from './embedding-provider';
|
|
12
|
+
export * from './file-system';
|
|
13
|
+
export * from './path-service';
|
|
14
|
+
export * from './crypto-service';
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knowledge Base Repository Interface
|
|
3
|
+
*
|
|
4
|
+
* 定义 KB 持久化的抽象接口
|
|
5
|
+
*/
|
|
6
|
+
import { KnowledgeBase } from '../entity/knowledge-base';
|
|
7
|
+
export interface IKBRepository {
|
|
8
|
+
/**
|
|
9
|
+
* 加载知识库
|
|
10
|
+
* @returns KnowledgeBase 或 null(如果不存在)
|
|
11
|
+
*/
|
|
12
|
+
load(): Promise<KnowledgeBase | null>;
|
|
13
|
+
/**
|
|
14
|
+
* 检查知识库是否存在
|
|
15
|
+
*/
|
|
16
|
+
exists(): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* 保存知识库
|
|
19
|
+
* @param kb 要保存的知识库
|
|
20
|
+
*/
|
|
21
|
+
save(kb: KnowledgeBase): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* 获取最后修改时间
|
|
24
|
+
*/
|
|
25
|
+
getLastModified(): Promise<number>;
|
|
26
|
+
/**
|
|
27
|
+
* 获取文件大小(字节)
|
|
28
|
+
*/
|
|
29
|
+
getSize(): Promise<number>;
|
|
30
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM HTTP Client Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的 HTTP 客户端接口,用于 LLM Provider
|
|
5
|
+
* 由 Infrastructure 层或外部环境(如 Obsidian Plugin)提供具体实现
|
|
6
|
+
*
|
|
7
|
+
* 设计目的:
|
|
8
|
+
* - 依赖倒置:Domain 定义接口,Infrastructure 提供实现
|
|
9
|
+
* - 解决 CORS:允许 Obsidian 使用 Electron net 模块绕过浏览器限制
|
|
10
|
+
* - 灵活扩展:支持不同环境的 HTTP 实现
|
|
11
|
+
*/
|
|
12
|
+
export interface LLMHttpRequest {
|
|
13
|
+
url: string;
|
|
14
|
+
method: 'GET' | 'POST';
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
body?: string;
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}
|
|
19
|
+
export interface LLMHttpResponse {
|
|
20
|
+
status: number;
|
|
21
|
+
statusText: string;
|
|
22
|
+
ok: boolean;
|
|
23
|
+
body: ReadableStream<Uint8Array> | null;
|
|
24
|
+
text(): Promise<string>;
|
|
25
|
+
json(): Promise<any>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* LLM HTTP Client 接口
|
|
29
|
+
*
|
|
30
|
+
* 提供 HTTP 请求能力,用于与 LLM 服务通信
|
|
31
|
+
*/
|
|
32
|
+
export interface LLMHttpClient {
|
|
33
|
+
/**
|
|
34
|
+
* 发送 HTTP 请求
|
|
35
|
+
*
|
|
36
|
+
* @param request - 请求配置
|
|
37
|
+
* @returns HTTP 响应(支持流式响应)
|
|
38
|
+
*/
|
|
39
|
+
fetch(request: LLMHttpRequest): Promise<LLMHttpResponse>;
|
|
40
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的 LLM 服务接口
|
|
5
|
+
* Infrastructure 层提供具体实现
|
|
6
|
+
*/
|
|
7
|
+
export interface LLMOptions {
|
|
8
|
+
model: string;
|
|
9
|
+
temperature?: number;
|
|
10
|
+
maxTokens?: number;
|
|
11
|
+
systemMessage?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface LLMStreamChunk {
|
|
14
|
+
text: string;
|
|
15
|
+
done: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface ILLMProvider {
|
|
18
|
+
/**
|
|
19
|
+
* Stream completion (yields chunks as they arrive)
|
|
20
|
+
*/
|
|
21
|
+
complete(prompt: string, options: LLMOptions, signal?: AbortSignal): AsyncIterable<LLMStreamChunk>;
|
|
22
|
+
/**
|
|
23
|
+
* Synchronous completion (wait for full response)
|
|
24
|
+
*/
|
|
25
|
+
completeSync(prompt: string, options: LLMOptions, signal?: AbortSignal): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* Health check
|
|
28
|
+
*/
|
|
29
|
+
healthCheck(): Promise<boolean>;
|
|
30
|
+
/**
|
|
31
|
+
* Provider name
|
|
32
|
+
*/
|
|
33
|
+
readonly name: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Path Service Interface
|
|
3
|
+
*
|
|
4
|
+
* Domain 层定义的路径操作接口
|
|
5
|
+
* Infrastructure 层提供具体实现(Node.js path)
|
|
6
|
+
*/
|
|
7
|
+
export interface IPathService {
|
|
8
|
+
/**
|
|
9
|
+
* Join path segments
|
|
10
|
+
*/
|
|
11
|
+
join(...paths: string[]): string;
|
|
12
|
+
/**
|
|
13
|
+
* Get basename of path
|
|
14
|
+
*/
|
|
15
|
+
basename(path: string, ext?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Get directory name
|
|
18
|
+
*/
|
|
19
|
+
dirname(path: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get relative path
|
|
22
|
+
*/
|
|
23
|
+
relative(from: string, to: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Resolve path to absolute
|
|
26
|
+
*/
|
|
27
|
+
resolve(...paths: string[]): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get file extension
|
|
30
|
+
*/
|
|
31
|
+
extname(path: string): string;
|
|
32
|
+
}
|