@jingyi0605/codingns 0.8.5 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/codingns.mjs +7 -156
- package/dist/public/assets/AdaptiveButlerPage-B17QiMyT.js +2 -0
- package/dist/public/assets/{App-BOHBGFOd.js → App-CFBwDUNA.js} +6 -6
- package/dist/public/assets/{BootstrapPage-BxHQT4nA.js → BootstrapPage-W5wU3BPh.js} +1 -1
- package/dist/public/assets/{ConversationPage-DWFsF6BB.js → ConversationPage-DQLX1bUh.js} +6 -6
- package/dist/public/assets/{DesktopDetachPreviewPage-DOgEjYEf.js → DesktopDetachPreviewPage-DTPeuAW-.js} +1 -1
- package/dist/public/assets/DesktopModal-6ii53_Y9.js +1 -0
- package/dist/public/assets/DesktopWindowPage-D0blSuKd.js +2 -0
- package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +1 -0
- package/dist/public/assets/GitSidebar-BdwiDtOr.js +6 -0
- package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +1 -0
- package/dist/public/assets/MobileSheet-opTWyRe1.js +1 -0
- package/dist/public/assets/{MobileTopHeaderFrame-lcp2GscV.js → MobileTopHeaderFrame-BbNON3Y4.js} +1 -1
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-BZEzPeMj.js +1 -0
- package/dist/public/assets/{PluginAccessOverview-DGcKAMQl.js → PluginAccessOverview-mQDmAljp.js} +1 -1
- package/dist/public/assets/PluginContainerPage-CcxUJpM4.js +1 -0
- package/dist/public/assets/{PluginDetailPage-CAJ7LFpD.js → PluginDetailPage-D5--ACIt.js} +1 -1
- package/dist/public/assets/{PluginsListPage-BxZG1NyT.js → PluginsListPage-D_oJxYXT.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-CfNO_TIl.js → RelayConnectEntryPage-DROxpnkv.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-by36Z_5k.js → ServerSettingsModal-CUUOPqSe.js} +1 -1
- package/dist/public/assets/SessionIndexPage-C2Jxh6Gp.js +1 -0
- package/dist/public/assets/SettingsPage-BlAZCHsy.js +2 -0
- package/dist/public/assets/{TerminalManagerPanel-NVZRxxmH.js → TerminalManagerPanel-CjzbiWjl.js} +1 -1
- package/dist/public/assets/{TerminalPage-C4LNoPBp.js → TerminalPage-CwWyFDj8.js} +2 -2
- package/dist/public/assets/TerminalRuntimeFallbackModal-CSVVbO8r.js +1 -0
- package/dist/public/assets/{ToolFilesPage-47zbdgTW.js → ToolFilesPage-QBEY8oCf.js} +1 -1
- package/dist/public/assets/{ToolGitPage-Fuk_b_jg.js → ToolGitPage-BKoZ2l9v.js} +1 -1
- package/dist/public/assets/{ToolProcessesPage-sWSMWD-9.js → ToolProcessesPage-BOH0ib4G.js} +1 -1
- package/dist/public/assets/{ToolsHomePage-R1mZlbZi.js → ToolsHomePage-BcMZ3BCQ.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-CqmiFH2u.js → WorkbenchLandingPage-B5zoppEl.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-BksVkkFF.css +1 -0
- package/dist/public/assets/WorkbenchLayout-CikJBS62.js +1019 -0
- package/dist/public/assets/{WorkbenchModal-C7qoQElW.js → WorkbenchModal-NGmPgqaE.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +1 -0
- package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +1 -0
- package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +1 -0
- package/dist/public/assets/{WorkspaceDetailPage-BPsrFffw.js → WorkspaceDetailPage-DgOSjscR.js} +1 -1
- package/dist/public/assets/{WorkspaceHomePage-KAtqZOAb.js → WorkspaceHomePage-HPa7M_Vh.js} +1 -1
- package/dist/public/assets/{client-runtime-manager-wmCJZKYd.js → client-runtime-manager-DXbI9K1K.js} +1 -1
- package/dist/public/assets/index-BxJPQpFM.css +1 -0
- package/dist/public/assets/index-CeXGOT_T.js +50 -0
- package/dist/public/assets/{login-direct-candidate-resolver-BOAgTuUf.js → login-direct-candidate-resolver-DkKyFtQJ.js} +1 -1
- package/dist/public/assets/{plugin-permission-copy-Cq99cnzV.js → plugin-permission-copy-CzN269Bk.js} +1 -1
- package/dist/public/assets/{plugins-api-BQTV5DOp.js → plugins-api-Bv9DHpLF.js} +1 -1
- package/dist/public/assets/{preferences-service-DJxbEEeg.js → preferences-service-D2ISL2Zz.js} +1 -1
- package/dist/public/assets/{relay-entry-D-LfvdiX.js → relay-entry-Bg0OisQy.js} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-BJmy8dyK.js → terminal-runtime-meta-C8t-CIDF.js} +1 -1
- package/dist/public/assets/{useRegisteredDebugTemplates-DQAWVdCo.js → useRegisteredDebugTemplates-Bol3NVfN.js} +1 -1
- package/dist/public/assets/{workbench-navigation-MEzCSmsK.js → workbench-navigation-B7IjRQd8.js} +1 -1
- package/dist/public/index.html +2 -2
- package/dist/server/middlewares/auth-guard.js +10 -5
- package/dist/server/middlewares/auth-guard.js.map +1 -1
- package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.d.ts +11 -0
- package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.js +22 -0
- package/dist/server/modules/affairs-indexer/contracts/src/errors/app-error.js.map +1 -0
- package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.d.ts +23 -0
- package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.js +23 -0
- package/dist/server/modules/affairs-indexer/contracts/src/errors/error-codes.js.map +1 -0
- package/dist/server/modules/affairs-indexer/contracts/src/index.d.ts +4 -0
- package/dist/server/modules/affairs-indexer/contracts/src/index.js +5 -0
- package/dist/server/modules/affairs-indexer/contracts/src/index.js.map +1 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.js +2 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/cli-command-context.js.map +1 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.d.ts +16 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.js +2 -0
- package/dist/server/modules/affairs-indexer/contracts/src/types/runtime-config.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.d.ts +10 -0
- package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.js +215 -0
- package/dist/server/modules/affairs-indexer/core/src/config/load-runtime-config.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/index.d.ts +31 -0
- package/dist/server/modules/affairs-indexer/core/src/index.js +32 -0
- package/dist/server/modules/affairs-indexer/core/src/index.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.d.ts +20 -0
- package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.js +47 -0
- package/dist/server/modules/affairs-indexer/core/src/logging/structured-logger.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.d.ts +17 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.js +63 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/base-complex-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.d.ts +12 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.js +42 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/complex-document-skip-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.js +107 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/csv-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.d.ts +19 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.js +37 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/document-parser.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.js +123 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/docx-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.d.ts +8 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.js +111 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/openxml-utils.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.d.ts +42 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.js +2 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.d.ts +18 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.js +91 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-capability-registry.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.d.ts +18 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.js +59 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-router.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.d.ts +48 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js +193 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.js +371 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pdf-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.d.ts +10 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.js +55 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.d.ts +9 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.js +2 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/plain-text-parser.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.js +130 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/pptx-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.d.ts +7 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.js +228 -0
- package/dist/server/modules/affairs-indexer/core/src/parser/xlsx-parser-adapter.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +205 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +1471 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.d.ts +161 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js +1350 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.d.ts +32 -0
- package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.js +208 -0
- package/dist/server/modules/affairs-indexer/core/src/scanner/file-scanner.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +30 -0
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +66 -0
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.d.ts +33 -0
- package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +705 -0
- package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.d.ts +80 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.js +193 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/allowed-extensions-diff-service.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.d.ts +77 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.js +467 -0
- package/dist/server/modules/affairs-indexer/core/src/services/indexer/text-indexer.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.d.ts +17 -0
- package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.js +264 -0
- package/dist/server/modules/affairs-indexer/core/src/services/mcp/mcp-stdio-server.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.d.ts +11 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.js +76 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/offline-search-service.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.d.ts +26 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +305 -0
- package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.d.ts +53 -0
- package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.js +566 -0
- package/dist/server/modules/affairs-indexer/core/src/services/tagging/tag-recompute-service.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.d.ts +47 -0
- package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.js +227 -0
- package/dist/server/modules/affairs-indexer/core/src/services/watch/watch-service.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.d.ts +5 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.js +245 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/catalog-schema.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.d.ts +14 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +87 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.d.ts +13 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.js +16 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/init-catalog.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.d.ts +22 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.js +430 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/migration-runner.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +9 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +19 -0
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.d.ts +21 -0
- package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.js +94 -0
- package/dist/server/modules/affairs-indexer/core/src/tagging/simple-tag-inference.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/abort.d.ts +2 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/abort.js +13 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/abort.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.d.ts +9 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.js +64 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/file-streaming.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.d.ts +10 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.js +230 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/root-command-lock.js.map +1 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.d.ts +2 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.js +19 -0
- package/dist/server/modules/affairs-indexer/core/src/utils/rss-log.js.map +1 -0
- package/dist/server/modules/affairs-indexer/internal-command-runner.d.ts +31 -0
- package/dist/server/modules/affairs-indexer/internal-command-runner.js +643 -0
- package/dist/server/modules/affairs-indexer/internal-command-runner.js.map +1 -0
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +0 -49
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +10 -56
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +2 -46
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +15 -158
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.d.ts +4 -2
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js +62 -21
- package/dist/server/modules/browser-runtime/opencli-bridge-browser-executor.js.map +1 -1
- package/dist/server/modules/butler/butler-control-session-service.d.ts +3 -4
- package/dist/server/modules/butler/butler-control-session-service.js +39 -62
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-controller.d.ts +11 -3
- package/dist/server/modules/butler/butler-controller.js +19 -4
- package/dist/server/modules/butler/butler-controller.js.map +1 -1
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
- package/dist/server/modules/butler/butler-profile-service.d.ts +1 -1
- package/dist/server/modules/butler/butler-profile-service.js +34 -63
- package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
- package/dist/server/modules/butler/butler-project-service.d.ts +1 -3
- package/dist/server/modules/butler/butler-project-service.js +1 -7
- package/dist/server/modules/butler/butler-project-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.d.ts +1 -0
- package/dist/server/modules/butler/butler-session-service.js +109 -0
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.js +0 -2
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/butler-workspace-context.d.ts +5 -1
- package/dist/server/modules/butler/butler-workspace-context.js +21 -12
- package/dist/server/modules/butler/butler-workspace-context.js.map +1 -1
- package/dist/server/modules/file/file-content-service.d.ts +11 -0
- package/dist/server/modules/file/file-content-service.js +55 -0
- package/dist/server/modules/file/file-content-service.js.map +1 -1
- package/dist/server/modules/file/file-controller.d.ts +26 -1
- package/dist/server/modules/file/file-controller.js +59 -4
- package/dist/server/modules/file/file-controller.js.map +1 -1
- package/dist/server/modules/file/file-preview-link-service.d.ts +1 -0
- package/dist/server/modules/file/file-preview-link-service.js +25 -0
- package/dist/server/modules/file/file-preview-link-service.js.map +1 -1
- package/dist/server/modules/file/file-preview-service.js +15 -4
- package/dist/server/modules/file/file-preview-service.js.map +1 -1
- package/dist/server/modules/file/file-preview-types.d.ts +9 -1
- package/dist/server/modules/file/file-preview-types.js +8 -1
- package/dist/server/modules/file/file-preview-types.js.map +1 -1
- package/dist/server/modules/file/recent-modified-file-service.d.ts +15 -0
- package/dist/server/modules/file/recent-modified-file-service.js +102 -0
- package/dist/server/modules/file/recent-modified-file-service.js.map +1 -0
- package/dist/server/modules/file/runtime/codingns-workspace-bridge.js +6 -0
- package/dist/server/modules/file/workspace-file-bridge-service.d.ts +11 -0
- package/dist/server/modules/file/workspace-file-bridge-service.js +19 -0
- package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
- package/dist/server/modules/file/workspace-index-apply-service.d.ts +25 -0
- package/dist/server/modules/file/workspace-index-apply-service.js +42 -0
- package/dist/server/modules/file/workspace-index-apply-service.js.map +1 -0
- package/dist/server/modules/office/office-controller.d.ts +15 -1
- package/dist/server/modules/office/office-controller.js +26 -1
- package/dist/server/modules/office/office-controller.js.map +1 -1
- package/dist/server/modules/office/onlyoffice-integration-service.d.ts +78 -0
- package/dist/server/modules/office/onlyoffice-integration-service.js +610 -0
- package/dist/server/modules/office/onlyoffice-integration-service.js.map +1 -0
- package/dist/server/modules/plugins/plugin-file-gateway-service.d.ts +12 -0
- package/dist/server/modules/plugins/plugin-file-gateway-service.js +13 -0
- package/dist/server/modules/plugins/plugin-file-gateway-service.js.map +1 -1
- package/dist/server/modules/preferences/profile-service.d.ts +1 -0
- package/dist/server/modules/preferences/profile-service.js +27 -3
- package/dist/server/modules/preferences/profile-service.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +0 -8
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-controller.d.ts +1 -0
- package/dist/server/modules/sessions/session-controller.js +3 -0
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +2 -0
- package/dist/server/modules/sessions/session-history-service.js +78 -3
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +1 -0
- package/dist/server/modules/sessions/session-live-runtime-service.js +4 -0
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-permission-request-service.js +0 -4
- package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
- package/dist/server/modules/sessions/workspace-session-instruction-watch-service.d.ts +23 -0
- package/dist/server/modules/sessions/workspace-session-instruction-watch-service.js +122 -0
- package/dist/server/modules/sessions/workspace-session-instruction-watch-service.js.map +1 -0
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.d.ts +15 -0
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.js +93 -10
- package/dist/server/modules/sessions/workspace-session-runtime-context-service.js.map +1 -1
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/SKILL.md +6 -7
- package/dist/server/modules/skills/builtin-skills/codingns-assistant/references/cli-workflow.md +2 -3
- package/dist/server/modules/system/host-resource-controller.d.ts +7 -0
- package/dist/server/modules/system/host-resource-controller.js +12 -0
- package/dist/server/modules/system/host-resource-controller.js.map +1 -0
- package/dist/server/modules/system/host-resource-service.d.ts +54 -0
- package/dist/server/modules/system/host-resource-service.js +162 -0
- package/dist/server/modules/system/host-resource-service.js.map +1 -0
- package/dist/server/modules/tasks/observability-service.d.ts +12 -2
- package/dist/server/modules/tasks/observability-service.js +13 -1
- package/dist/server/modules/tasks/observability-service.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-client.d.ts +36 -2
- package/dist/server/modules/tasks/task-helper-client.js +201 -19
- package/dist/server/modules/tasks/task-helper-client.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-pool.d.ts +37 -0
- package/dist/server/modules/tasks/task-helper-pool.js +173 -0
- package/dist/server/modules/tasks/task-helper-pool.js.map +1 -0
- package/dist/server/modules/tasks/task-helper-process-handlers.d.ts +27 -0
- package/dist/server/modules/tasks/task-helper-process-handlers.js +25 -1
- package/dist/server/modules/tasks/task-helper-process-handlers.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-process.js +75 -26
- package/dist/server/modules/tasks/task-helper-process.js.map +1 -1
- package/dist/server/modules/tasks/task-helper-scheduling.d.ts +11 -0
- package/dist/server/modules/tasks/task-helper-scheduling.js +43 -0
- package/dist/server/modules/tasks/task-helper-scheduling.js.map +1 -0
- package/dist/server/modules/tasks/task-lane-executors.js +19 -3
- package/dist/server/modules/tasks/task-lane-executors.js.map +1 -1
- package/dist/server/modules/tasks/task-manager.d.ts +1 -0
- package/dist/server/modules/tasks/task-manager.js +3 -0
- package/dist/server/modules/tasks/task-manager.js.map +1 -1
- package/dist/server/modules/tasks/task-registry.d.ts +1 -0
- package/dist/server/modules/tasks/task-registry.js +3 -0
- package/dist/server/modules/tasks/task-registry.js.map +1 -1
- package/dist/server/modules/tasks/task-scheduler.d.ts +6 -0
- package/dist/server/modules/tasks/task-scheduler.js +162 -7
- package/dist/server/modules/tasks/task-scheduler.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +28 -3
- package/dist/server/modules/tasks/task-types.js +14 -2
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +68 -0
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +286 -0
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -0
- package/dist/server/modules/workbench/workbench-controller.js +11 -1
- package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +9 -2
- package/dist/server/modules/workbench/workbench-service.js +58 -18
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-library-controller.d.ts +117 -0
- package/dist/server/modules/workspace/affairs-library-controller.js +164 -0
- package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -0
- package/dist/server/modules/workspace/affairs-library-debug-log.d.ts +23 -0
- package/dist/server/modules/workspace/affairs-library-debug-log.js +107 -0
- package/dist/server/modules/workspace/affairs-library-debug-log.js.map +1 -0
- package/dist/server/modules/workspace/affairs-library-dirty-watch-service.d.ts +52 -0
- package/dist/server/modules/workspace/affairs-library-dirty-watch-service.js +555 -0
- package/dist/server/modules/workspace/affairs-library-dirty-watch-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +24 -0
- package/dist/server/modules/workspace/affairs-library-preview-link-service.js +157 -0
- package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-library-refresh-contract.d.ts +56 -0
- package/dist/server/modules/workspace/affairs-library-refresh-contract.js +48 -0
- package/dist/server/modules/workspace/affairs-library-refresh-contract.js.map +1 -0
- package/dist/server/modules/workspace/affairs-library-service.d.ts +344 -0
- package/dist/server/modules/workspace/affairs-library-service.js +3755 -0
- package/dist/server/modules/workspace/affairs-library-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +78 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +146 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +133 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js +1447 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-tag-controller.d.ts +107 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js +97 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -0
- package/dist/server/modules/workspace/affairs-tag-service.d.ts +153 -0
- package/dist/server/modules/workspace/affairs-tag-service.js +680 -0
- package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -0
- package/dist/server/modules/workspace/workspace-controller.d.ts +2 -1
- package/dist/server/modules/workspace/workspace-controller.js +8 -2
- package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
- package/dist/server/modules/workspace/workspace-service.js +60 -9
- package/dist/server/modules/workspace/workspace-service.js.map +1 -1
- package/dist/server/routes/affairs.d.ts +3 -0
- package/dist/server/routes/affairs.js +7 -0
- package/dist/server/routes/affairs.js.map +1 -0
- package/dist/server/routes/assistant.js +0 -5
- package/dist/server/routes/assistant.js.map +1 -1
- package/dist/server/routes/files.js +5 -0
- package/dist/server/routes/files.js.map +1 -1
- package/dist/server/routes/office.js +4 -0
- package/dist/server/routes/office.js.map +1 -1
- package/dist/server/routes/system.d.ts +2 -1
- package/dist/server/routes/system.js +2 -1
- package/dist/server/routes/system.js.map +1 -1
- package/dist/server/routes/workspaces.d.ts +4 -1
- package/dist/server/routes/workspaces.js +46 -1
- package/dist/server/routes/workspaces.js.map +1 -1
- package/dist/server/server/create-server.d.ts +6 -2
- package/dist/server/server/create-server.js +113 -32
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/shared/http/error-handler.js +10 -0
- package/dist/server/shared/http/error-handler.js.map +1 -1
- package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.d.ts +10 -0
- package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.js +47 -0
- package/dist/server/storage/repositories/affairs-assistant-session-snapshot-repository.js.map +1 -0
- package/dist/server/storage/repositories/butler-profile-repository.js +7 -3
- package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
- package/dist/server/storage/repositories/office-onlyoffice-setting-repository.d.ts +19 -0
- package/dist/server/storage/repositories/office-onlyoffice-setting-repository.js +55 -0
- package/dist/server/storage/repositories/office-onlyoffice-setting-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-index-repository.js +9 -2
- package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
- package/dist/server/storage/repositories/user-affairs-library-setting-repository.d.ts +10 -0
- package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +69 -0
- package/dist/server/storage/repositories/user-affairs-library-setting-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-preference-profile-repository.js +6 -3
- package/dist/server/storage/repositories/user-preference-profile-repository.js.map +1 -1
- package/dist/server/storage/repositories/workspace-navigation-state-repository.d.ts +3 -0
- package/dist/server/storage/repositories/workspace-navigation-state-repository.js +47 -4
- package/dist/server/storage/repositories/workspace-navigation-state-repository.js.map +1 -1
- package/dist/server/storage/sqlite/client.js +230 -123
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +48 -25
- package/dist/server/types/domain.d.ts +27 -20
- package/dist/server/ws/workbench-ws-hub.js +2 -2
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js +0 -2
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-permissions.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +0 -6
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/package.json +1 -1
- package/dist/public/assets/AdaptiveButlerPage-B153lk5H.css +0 -1
- package/dist/public/assets/AdaptiveButlerPage-CJw8Ae62.js +0 -3
- package/dist/public/assets/DesktopModal-D_A8sgQU.js +0 -1
- package/dist/public/assets/DesktopWindowPage-DK7L7osV.js +0 -2
- package/dist/public/assets/FileContextPanel-BdCoubcJ.js +0 -1
- package/dist/public/assets/GitSidebar-BeZ0hj7A.js +0 -6
- package/dist/public/assets/MobileCreateSessionSheet-DfLMVu8q.js +0 -1
- package/dist/public/assets/MobileSheet-5kZ-w-gU.js +0 -1
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-C6JMiOq_.js +0 -1
- package/dist/public/assets/PluginContainerPage-BlY-xJDh.js +0 -1
- package/dist/public/assets/SessionIndexPage-DkBp9Mqz.js +0 -1
- package/dist/public/assets/SettingsPage-C-ASmJAG.js +0 -2
- package/dist/public/assets/TerminalRuntimeFallbackModal-Bzum5nZ0.js +0 -1
- package/dist/public/assets/WorkbenchLayout-OFi6CWgH.js +0 -244
- package/dist/public/assets/WorkbenchShellRoute-B4XB8SwG.css +0 -1
- package/dist/public/assets/WorkbenchShellRoute-BAQe_E0O.js +0 -1
- package/dist/public/assets/WorkspaceDebugDetailPage-DhKa6e9y.js +0 -1
- package/dist/public/assets/file-tree-icon-Mg1DiBRX.js +0 -590
- package/dist/public/assets/index-C4t-vvqk.css +0 -1
- package/dist/public/assets/index-CL97fwWB.js +0 -42
- package/dist/public/assets/realtime-client-CLafKzzJ.js +0 -1
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +0 -32
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +0 -93
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +0 -1
- package/dist/server/modules/butler/assistant-sandbox-service.d.ts +0 -69
- package/dist/server/modules/butler/assistant-sandbox-service.js +0 -399
- package/dist/server/modules/butler/assistant-sandbox-service.js.map +0 -1
- package/dist/server/modules/channels/wechat-claw-client.d.ts +0 -51
- package/dist/server/modules/channels/wechat-claw-client.js +0 -245
- package/dist/server/modules/channels/wechat-claw-client.js.map +0 -1
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +0 -18
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +0 -191
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { RuntimeConfig } from "../../../contracts/src/index.js";
|
|
2
|
+
export interface CatalogMigration {
|
|
3
|
+
version: number;
|
|
4
|
+
name: string;
|
|
5
|
+
sql: string;
|
|
6
|
+
columns?: Array<{
|
|
7
|
+
table: string;
|
|
8
|
+
name: string;
|
|
9
|
+
definition: string;
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
export interface MigrationRunResult {
|
|
13
|
+
dbPath: string;
|
|
14
|
+
schemaVersion: number;
|
|
15
|
+
appliedMigrations: string[];
|
|
16
|
+
executedAt: string;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 最小迁移执行器。
|
|
20
|
+
* 先把版本与历史机制收整齐,避免后续 schema 演进继续失控。
|
|
21
|
+
*/
|
|
22
|
+
export declare function runCatalogMigrations(config: RuntimeConfig): MigrationRunResult;
|
|
@@ -0,0 +1,430 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { openDatabase } from "./open-database.js";
|
|
4
|
+
const CATALOG_MIGRATIONS = [
|
|
5
|
+
{
|
|
6
|
+
version: 1,
|
|
7
|
+
name: "bootstrap_node_schema_v1",
|
|
8
|
+
sql: `
|
|
9
|
+
CREATE TABLE IF NOT EXISTS schema_meta (
|
|
10
|
+
key TEXT PRIMARY KEY,
|
|
11
|
+
value TEXT NOT NULL,
|
|
12
|
+
updated_at TEXT NOT NULL
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
CREATE TABLE IF NOT EXISTS migration_history (
|
|
16
|
+
id TEXT PRIMARY KEY,
|
|
17
|
+
version INTEGER NOT NULL,
|
|
18
|
+
name TEXT NOT NULL,
|
|
19
|
+
applied_at TEXT NOT NULL,
|
|
20
|
+
checksum TEXT,
|
|
21
|
+
status TEXT NOT NULL
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE TABLE IF NOT EXISTS files (
|
|
25
|
+
id TEXT PRIMARY KEY,
|
|
26
|
+
path TEXT UNIQUE NOT NULL,
|
|
27
|
+
dir_path TEXT NOT NULL,
|
|
28
|
+
name TEXT NOT NULL,
|
|
29
|
+
extension TEXT NOT NULL,
|
|
30
|
+
size INTEGER NOT NULL,
|
|
31
|
+
mtime TEXT NOT NULL,
|
|
32
|
+
ctime TEXT,
|
|
33
|
+
inode_key TEXT,
|
|
34
|
+
content_hash TEXT,
|
|
35
|
+
status TEXT NOT NULL,
|
|
36
|
+
last_seen_at TEXT NOT NULL
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
CREATE TABLE IF NOT EXISTS documents (
|
|
40
|
+
id TEXT PRIMARY KEY,
|
|
41
|
+
file_id TEXT UNIQUE NOT NULL,
|
|
42
|
+
title TEXT,
|
|
43
|
+
summary TEXT,
|
|
44
|
+
language TEXT,
|
|
45
|
+
parse_status TEXT NOT NULL,
|
|
46
|
+
parse_error TEXT,
|
|
47
|
+
index_status TEXT NOT NULL,
|
|
48
|
+
chunk_count INTEGER NOT NULL,
|
|
49
|
+
last_indexed_at TEXT,
|
|
50
|
+
FOREIGN KEY(file_id) REFERENCES files(id)
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
CREATE TABLE IF NOT EXISTS chunks (
|
|
54
|
+
id TEXT PRIMARY KEY,
|
|
55
|
+
document_id TEXT NOT NULL,
|
|
56
|
+
chunk_index INTEGER NOT NULL,
|
|
57
|
+
content TEXT NOT NULL,
|
|
58
|
+
content_hash TEXT,
|
|
59
|
+
page_no INTEGER,
|
|
60
|
+
sheet_name TEXT,
|
|
61
|
+
heading_path TEXT,
|
|
62
|
+
token_count INTEGER,
|
|
63
|
+
vector_point_id TEXT,
|
|
64
|
+
FOREIGN KEY(document_id) REFERENCES documents(id)
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
CREATE TABLE IF NOT EXISTS tags (
|
|
68
|
+
id TEXT PRIMARY KEY,
|
|
69
|
+
root_type TEXT NOT NULL,
|
|
70
|
+
path TEXT UNIQUE NOT NULL,
|
|
71
|
+
name TEXT NOT NULL,
|
|
72
|
+
parent_id TEXT,
|
|
73
|
+
canonical_name TEXT NOT NULL,
|
|
74
|
+
description TEXT,
|
|
75
|
+
status TEXT NOT NULL,
|
|
76
|
+
created_by TEXT NOT NULL,
|
|
77
|
+
created_at TEXT NOT NULL
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
CREATE TABLE IF NOT EXISTS tag_aliases (
|
|
81
|
+
id TEXT PRIMARY KEY,
|
|
82
|
+
tag_id TEXT NOT NULL,
|
|
83
|
+
alias TEXT NOT NULL,
|
|
84
|
+
alias_type TEXT NOT NULL,
|
|
85
|
+
confidence REAL NOT NULL,
|
|
86
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
CREATE TABLE IF NOT EXISTS document_tags (
|
|
90
|
+
id TEXT PRIMARY KEY,
|
|
91
|
+
document_id TEXT NOT NULL,
|
|
92
|
+
tag_id TEXT NOT NULL,
|
|
93
|
+
confidence REAL NOT NULL,
|
|
94
|
+
source TEXT NOT NULL,
|
|
95
|
+
evidence TEXT,
|
|
96
|
+
manual_override INTEGER NOT NULL,
|
|
97
|
+
updated_at TEXT NOT NULL,
|
|
98
|
+
UNIQUE(document_id, tag_id),
|
|
99
|
+
FOREIGN KEY(document_id) REFERENCES documents(id),
|
|
100
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
101
|
+
);
|
|
102
|
+
|
|
103
|
+
CREATE TABLE IF NOT EXISTS derived_document_tags (
|
|
104
|
+
id TEXT PRIMARY KEY,
|
|
105
|
+
document_id TEXT NOT NULL,
|
|
106
|
+
tag_id TEXT NOT NULL,
|
|
107
|
+
rule_name TEXT NOT NULL,
|
|
108
|
+
computed_at TEXT NOT NULL,
|
|
109
|
+
expires_at TEXT,
|
|
110
|
+
FOREIGN KEY(document_id) REFERENCES documents(id),
|
|
111
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
112
|
+
);
|
|
113
|
+
|
|
114
|
+
CREATE TABLE IF NOT EXISTS reindex_jobs (
|
|
115
|
+
id TEXT PRIMARY KEY,
|
|
116
|
+
job_type TEXT NOT NULL,
|
|
117
|
+
target_path TEXT,
|
|
118
|
+
status TEXT NOT NULL,
|
|
119
|
+
priority INTEGER NOT NULL,
|
|
120
|
+
error_message TEXT,
|
|
121
|
+
created_at TEXT NOT NULL,
|
|
122
|
+
updated_at TEXT NOT NULL
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
CREATE TABLE IF NOT EXISTS watch_events (
|
|
126
|
+
id TEXT PRIMARY KEY,
|
|
127
|
+
event_type TEXT NOT NULL,
|
|
128
|
+
path TEXT NOT NULL,
|
|
129
|
+
created_at TEXT NOT NULL
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
CREATE INDEX IF NOT EXISTS idx_files_hash ON files(content_hash);
|
|
133
|
+
CREATE INDEX IF NOT EXISTS idx_files_inode_key ON files(inode_key);
|
|
134
|
+
CREATE INDEX IF NOT EXISTS idx_chunks_document ON chunks(document_id, chunk_index);
|
|
135
|
+
CREATE INDEX IF NOT EXISTS idx_tags_path ON tags(path);
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_tag_aliases_alias ON tag_aliases(alias);
|
|
137
|
+
CREATE INDEX IF NOT EXISTS idx_reindex_jobs_status ON reindex_jobs(status, priority, created_at);
|
|
138
|
+
`,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
version: 2,
|
|
142
|
+
name: "add_parser_skip_catalog_v2",
|
|
143
|
+
sql: `
|
|
144
|
+
CREATE TABLE IF NOT EXISTS parser_skip_catalog (
|
|
145
|
+
skip_key TEXT PRIMARY KEY,
|
|
146
|
+
adapter TEXT NOT NULL,
|
|
147
|
+
reason_code TEXT NOT NULL,
|
|
148
|
+
extension TEXT NOT NULL,
|
|
149
|
+
sample_paths_json TEXT NOT NULL,
|
|
150
|
+
sample_count INTEGER NOT NULL,
|
|
151
|
+
total_count INTEGER NOT NULL,
|
|
152
|
+
last_message TEXT,
|
|
153
|
+
first_seen_at TEXT NOT NULL,
|
|
154
|
+
last_seen_at TEXT NOT NULL,
|
|
155
|
+
last_run_at TEXT NOT NULL
|
|
156
|
+
);
|
|
157
|
+
|
|
158
|
+
CREATE INDEX IF NOT EXISTS idx_parser_skip_catalog_reason ON parser_skip_catalog(reason_code, extension, last_run_at);
|
|
159
|
+
`,
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
version: 3,
|
|
163
|
+
name: "add_tag_write_indexes_v3",
|
|
164
|
+
sql: `
|
|
165
|
+
CREATE INDEX IF NOT EXISTS idx_document_tags_document ON document_tags(document_id);
|
|
166
|
+
CREATE INDEX IF NOT EXISTS idx_derived_document_tags_document ON derived_document_tags(document_id);
|
|
167
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_derived_document_tags_pair ON derived_document_tags(document_id, tag_id);
|
|
168
|
+
`,
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
version: 4,
|
|
172
|
+
name: "affairs_tag_management_v4",
|
|
173
|
+
columns: [
|
|
174
|
+
{ table: "tags", name: "updated_at", definition: "TEXT" },
|
|
175
|
+
{ table: "tags", name: "disabled_at", definition: "TEXT" },
|
|
176
|
+
{ table: "tag_aliases", name: "updated_at", definition: "TEXT" },
|
|
177
|
+
{ table: "document_tags", name: "source_ref", definition: "TEXT" },
|
|
178
|
+
{ table: "derived_document_tags", name: "source", definition: "TEXT" },
|
|
179
|
+
{ table: "derived_document_tags", name: "source_ref", definition: "TEXT" },
|
|
180
|
+
{ table: "derived_document_tags", name: "evidence", definition: "TEXT" },
|
|
181
|
+
{ table: "derived_document_tags", name: "updated_at", definition: "TEXT" },
|
|
182
|
+
],
|
|
183
|
+
sql: `
|
|
184
|
+
UPDATE tags
|
|
185
|
+
SET updated_at = COALESCE(updated_at, created_at);
|
|
186
|
+
|
|
187
|
+
UPDATE tag_aliases
|
|
188
|
+
SET updated_at = COALESCE(updated_at, (
|
|
189
|
+
SELECT tags.created_at
|
|
190
|
+
FROM tags
|
|
191
|
+
WHERE tags.id = tag_aliases.tag_id
|
|
192
|
+
), CURRENT_TIMESTAMP);
|
|
193
|
+
|
|
194
|
+
UPDATE derived_document_tags
|
|
195
|
+
SET source = COALESCE(source, 'system_derived'),
|
|
196
|
+
source_ref = COALESCE(source_ref, NULL),
|
|
197
|
+
evidence = COALESCE(evidence, NULL),
|
|
198
|
+
updated_at = COALESCE(updated_at, computed_at);
|
|
199
|
+
|
|
200
|
+
CREATE TABLE IF NOT EXISTS tag_rules (
|
|
201
|
+
id TEXT PRIMARY KEY,
|
|
202
|
+
tag_id TEXT NOT NULL,
|
|
203
|
+
enabled INTEGER NOT NULL,
|
|
204
|
+
rule_type TEXT NOT NULL,
|
|
205
|
+
scope_json TEXT NOT NULL,
|
|
206
|
+
matcher_json TEXT NOT NULL,
|
|
207
|
+
min_score REAL,
|
|
208
|
+
priority INTEGER NOT NULL,
|
|
209
|
+
source TEXT NOT NULL,
|
|
210
|
+
created_at TEXT NOT NULL,
|
|
211
|
+
updated_at TEXT NOT NULL,
|
|
212
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
213
|
+
);
|
|
214
|
+
|
|
215
|
+
CREATE TABLE IF NOT EXISTS manual_document_tag_bindings (
|
|
216
|
+
id TEXT PRIMARY KEY,
|
|
217
|
+
document_id TEXT NOT NULL,
|
|
218
|
+
tag_id TEXT NOT NULL,
|
|
219
|
+
source TEXT NOT NULL,
|
|
220
|
+
created_at TEXT NOT NULL,
|
|
221
|
+
updated_at TEXT NOT NULL,
|
|
222
|
+
UNIQUE(document_id, tag_id),
|
|
223
|
+
FOREIGN KEY(document_id) REFERENCES documents(id),
|
|
224
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
225
|
+
);
|
|
226
|
+
|
|
227
|
+
INSERT OR IGNORE INTO manual_document_tag_bindings(
|
|
228
|
+
id,
|
|
229
|
+
document_id,
|
|
230
|
+
tag_id,
|
|
231
|
+
source,
|
|
232
|
+
created_at,
|
|
233
|
+
updated_at
|
|
234
|
+
)
|
|
235
|
+
SELECT
|
|
236
|
+
'manual_binding_' || document_id || '_' || tag_id,
|
|
237
|
+
document_id,
|
|
238
|
+
tag_id,
|
|
239
|
+
'manual_document',
|
|
240
|
+
updated_at,
|
|
241
|
+
updated_at
|
|
242
|
+
FROM document_tags
|
|
243
|
+
WHERE manual_override = 1;
|
|
244
|
+
|
|
245
|
+
CREATE TABLE IF NOT EXISTS folder_tag_bindings (
|
|
246
|
+
id TEXT PRIMARY KEY,
|
|
247
|
+
folder_path TEXT NOT NULL,
|
|
248
|
+
tag_id TEXT NOT NULL,
|
|
249
|
+
apply_mode TEXT NOT NULL,
|
|
250
|
+
created_at TEXT NOT NULL,
|
|
251
|
+
updated_at TEXT NOT NULL,
|
|
252
|
+
UNIQUE(folder_path, tag_id, apply_mode),
|
|
253
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
254
|
+
);
|
|
255
|
+
|
|
256
|
+
CREATE TABLE IF NOT EXISTS tag_recommendation_batches (
|
|
257
|
+
id TEXT PRIMARY KEY,
|
|
258
|
+
status TEXT NOT NULL,
|
|
259
|
+
summary TEXT,
|
|
260
|
+
evidence_snapshot_json TEXT,
|
|
261
|
+
generated_at TEXT NOT NULL,
|
|
262
|
+
updated_at TEXT NOT NULL
|
|
263
|
+
);
|
|
264
|
+
|
|
265
|
+
CREATE TABLE IF NOT EXISTS tag_recommendation_items (
|
|
266
|
+
id TEXT PRIMARY KEY,
|
|
267
|
+
batch_id TEXT NOT NULL,
|
|
268
|
+
proposed_path TEXT NOT NULL,
|
|
269
|
+
proposed_name TEXT NOT NULL,
|
|
270
|
+
proposed_parent_path TEXT,
|
|
271
|
+
document_count INTEGER NOT NULL,
|
|
272
|
+
evidence_json TEXT NOT NULL,
|
|
273
|
+
selected_by_default INTEGER NOT NULL,
|
|
274
|
+
status TEXT NOT NULL,
|
|
275
|
+
created_at TEXT NOT NULL,
|
|
276
|
+
updated_at TEXT NOT NULL,
|
|
277
|
+
FOREIGN KEY(batch_id) REFERENCES tag_recommendation_batches(id)
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
CREATE INDEX IF NOT EXISTS idx_document_tags_source ON document_tags(document_id, source);
|
|
281
|
+
CREATE INDEX IF NOT EXISTS idx_tag_rules_tag ON tag_rules(tag_id, enabled, priority);
|
|
282
|
+
CREATE INDEX IF NOT EXISTS idx_manual_document_tag_bindings_document ON manual_document_tag_bindings(document_id);
|
|
283
|
+
CREATE INDEX IF NOT EXISTS idx_folder_tag_bindings_folder ON folder_tag_bindings(folder_path);
|
|
284
|
+
CREATE INDEX IF NOT EXISTS idx_tag_recommendation_items_batch ON tag_recommendation_items(batch_id, status);
|
|
285
|
+
`,
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
version: 5,
|
|
289
|
+
name: "files_identity_tracking_v5",
|
|
290
|
+
columns: [
|
|
291
|
+
{ table: "files", name: "inode_key", definition: "TEXT" },
|
|
292
|
+
],
|
|
293
|
+
sql: `
|
|
294
|
+
CREATE INDEX IF NOT EXISTS idx_files_inode_key ON files(inode_key);
|
|
295
|
+
`,
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
version: 6,
|
|
299
|
+
name: "manual_file_tag_bindings_v6",
|
|
300
|
+
sql: `
|
|
301
|
+
CREATE TABLE IF NOT EXISTS manual_file_tag_bindings (
|
|
302
|
+
id TEXT PRIMARY KEY,
|
|
303
|
+
inode_key TEXT,
|
|
304
|
+
content_hash TEXT,
|
|
305
|
+
file_size INTEGER NOT NULL,
|
|
306
|
+
extension TEXT NOT NULL,
|
|
307
|
+
tag_id TEXT NOT NULL,
|
|
308
|
+
source TEXT NOT NULL,
|
|
309
|
+
created_at TEXT NOT NULL,
|
|
310
|
+
updated_at TEXT NOT NULL,
|
|
311
|
+
FOREIGN KEY(tag_id) REFERENCES tags(id)
|
|
312
|
+
);
|
|
313
|
+
|
|
314
|
+
INSERT OR IGNORE INTO manual_file_tag_bindings(
|
|
315
|
+
id,
|
|
316
|
+
inode_key,
|
|
317
|
+
content_hash,
|
|
318
|
+
file_size,
|
|
319
|
+
extension,
|
|
320
|
+
tag_id,
|
|
321
|
+
source,
|
|
322
|
+
created_at,
|
|
323
|
+
updated_at
|
|
324
|
+
)
|
|
325
|
+
SELECT
|
|
326
|
+
'manual_file_binding_' || mdtb.document_id || '_' || mdtb.tag_id,
|
|
327
|
+
f.inode_key,
|
|
328
|
+
f.content_hash,
|
|
329
|
+
f.size,
|
|
330
|
+
f.extension,
|
|
331
|
+
mdtb.tag_id,
|
|
332
|
+
mdtb.source,
|
|
333
|
+
mdtb.created_at,
|
|
334
|
+
mdtb.updated_at
|
|
335
|
+
FROM manual_document_tag_bindings mdtb
|
|
336
|
+
JOIN documents d ON d.id = mdtb.document_id
|
|
337
|
+
JOIN files f ON f.id = d.file_id
|
|
338
|
+
WHERE f.status = 'active'
|
|
339
|
+
AND d.index_status IN ('indexed', 'failed', 'skipped');
|
|
340
|
+
|
|
341
|
+
CREATE INDEX IF NOT EXISTS idx_manual_file_tag_bindings_inode ON manual_file_tag_bindings(inode_key);
|
|
342
|
+
CREATE INDEX IF NOT EXISTS idx_manual_file_tag_bindings_content ON manual_file_tag_bindings(content_hash, file_size, extension);
|
|
343
|
+
CREATE INDEX IF NOT EXISTS idx_manual_file_tag_bindings_tag ON manual_file_tag_bindings(tag_id);
|
|
344
|
+
`,
|
|
345
|
+
},
|
|
346
|
+
];
|
|
347
|
+
function hasTable(db, tableName) {
|
|
348
|
+
const row = db.prepare(`SELECT name FROM sqlite_master WHERE type = 'table' AND name = ?`).get(tableName);
|
|
349
|
+
return row?.name === tableName;
|
|
350
|
+
}
|
|
351
|
+
function hasColumn(db, tableName, columnName) {
|
|
352
|
+
const rows = db.prepare(`PRAGMA table_info(${tableName})`).all();
|
|
353
|
+
return rows.some((row) => row.name === columnName);
|
|
354
|
+
}
|
|
355
|
+
function ensureMigrationColumns(db, migration) {
|
|
356
|
+
for (const column of migration.columns ?? []) {
|
|
357
|
+
if (hasColumn(db, column.table, column.name)) {
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
db.exec(`ALTER TABLE ${column.table} ADD COLUMN ${column.name} ${column.definition}`);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function readCurrentSchemaVersion(db) {
|
|
364
|
+
if (!hasTable(db, "schema_meta")) {
|
|
365
|
+
return 0;
|
|
366
|
+
}
|
|
367
|
+
const row = db.prepare(`SELECT value FROM schema_meta WHERE key = 'schema_version'`).get();
|
|
368
|
+
if (!row?.value) {
|
|
369
|
+
return 0;
|
|
370
|
+
}
|
|
371
|
+
const parsed = Number(row.value);
|
|
372
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* 最小迁移执行器。
|
|
376
|
+
* 先把版本与历史机制收整齐,避免后续 schema 演进继续失控。
|
|
377
|
+
*/
|
|
378
|
+
export function runCatalogMigrations(config) {
|
|
379
|
+
fs.mkdirSync(config.indexDir, { recursive: true });
|
|
380
|
+
fs.mkdirSync(config.exportDir, { recursive: true });
|
|
381
|
+
const db = openDatabase(config.dbPath);
|
|
382
|
+
const now = new Date().toISOString();
|
|
383
|
+
const appliedMigrations = [];
|
|
384
|
+
try {
|
|
385
|
+
db.exec("BEGIN IMMEDIATE");
|
|
386
|
+
let currentVersion = readCurrentSchemaVersion(db);
|
|
387
|
+
for (const migration of CATALOG_MIGRATIONS) {
|
|
388
|
+
if (migration.version <= currentVersion) {
|
|
389
|
+
continue;
|
|
390
|
+
}
|
|
391
|
+
ensureMigrationColumns(db, migration);
|
|
392
|
+
db.exec(migration.sql);
|
|
393
|
+
const checksum = crypto.createHash("sha1").update(migration.sql).digest("hex");
|
|
394
|
+
db.prepare(`
|
|
395
|
+
INSERT OR REPLACE INTO schema_meta(key, value, updated_at)
|
|
396
|
+
VALUES(?, ?, ?)
|
|
397
|
+
`).run("schema_version", String(migration.version), now);
|
|
398
|
+
db.prepare(`
|
|
399
|
+
INSERT OR REPLACE INTO schema_meta(key, value, updated_at)
|
|
400
|
+
VALUES(?, ?, ?)
|
|
401
|
+
`).run("managed_by", "node", now);
|
|
402
|
+
db.prepare(`
|
|
403
|
+
INSERT OR REPLACE INTO migration_history(id, version, name, applied_at, checksum, status)
|
|
404
|
+
VALUES(?, ?, ?, ?, ?, ?)
|
|
405
|
+
`).run(`migration_${migration.version}`, migration.version, migration.name, now, checksum, "done");
|
|
406
|
+
appliedMigrations.push(migration.name);
|
|
407
|
+
currentVersion = migration.version;
|
|
408
|
+
}
|
|
409
|
+
db.exec("COMMIT");
|
|
410
|
+
return {
|
|
411
|
+
dbPath: config.dbPath,
|
|
412
|
+
schemaVersion: currentVersion,
|
|
413
|
+
appliedMigrations,
|
|
414
|
+
executedAt: now,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
catch (error) {
|
|
418
|
+
try {
|
|
419
|
+
db.exec("ROLLBACK");
|
|
420
|
+
}
|
|
421
|
+
catch {
|
|
422
|
+
// ignore rollback failure
|
|
423
|
+
}
|
|
424
|
+
throw error;
|
|
425
|
+
}
|
|
426
|
+
finally {
|
|
427
|
+
db.close();
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
//# sourceMappingURL=migration-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-runner.js","sourceRoot":"","sources":["../../../../../../../src/modules/affairs-indexer/core/src/sqlite/migration-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DatabaseSync } from "node:sqlite";
|
|
2
|
+
export interface OpenDatabaseOptions {
|
|
3
|
+
tempStore?: "FILE" | "MEMORY";
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* 打开 SQLite 数据库。
|
|
7
|
+
* 当前阶段统一使用 Node 内置 sqlite,同步接口足够支撑 CLI 初始化与检测。
|
|
8
|
+
*/
|
|
9
|
+
export declare function openDatabase(dbPath: string, options?: OpenDatabaseOptions): DatabaseSync;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { DatabaseSync } from "node:sqlite";
|
|
4
|
+
/**
|
|
5
|
+
* 打开 SQLite 数据库。
|
|
6
|
+
* 当前阶段统一使用 Node 内置 sqlite,同步接口足够支撑 CLI 初始化与检测。
|
|
7
|
+
*/
|
|
8
|
+
export function openDatabase(dbPath, options = {}) {
|
|
9
|
+
fs.mkdirSync(path.dirname(dbPath), { recursive: true });
|
|
10
|
+
const db = new DatabaseSync(dbPath);
|
|
11
|
+
const tempStore = options.tempStore ?? "FILE";
|
|
12
|
+
db.exec("PRAGMA journal_mode=WAL;");
|
|
13
|
+
db.exec("PRAGMA synchronous=NORMAL;");
|
|
14
|
+
db.exec(`PRAGMA temp_store=${tempStore};`);
|
|
15
|
+
db.exec("PRAGMA foreign_keys=ON;");
|
|
16
|
+
db.exec("PRAGMA busy_timeout=5000;");
|
|
17
|
+
return db;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=open-database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-database.js","sourceRoot":"","sources":["../../../../../../../src/modules/affairs-indexer/core/src/sqlite/open-database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,UAA+B,EAAE;IAEjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,CAAC;IAC9C,EAAE,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACpC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtC,EAAE,CAAC,IAAI,CAAC,qBAAqB,SAAS,GAAG,CAAC,CAAC;IAC3C,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACnC,EAAE,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { FileScanResult } from "../scanner/file-scanner.js";
|
|
2
|
+
import type { ParsedDocument } from "../parser/plain-text-parser.js";
|
|
3
|
+
export interface TagAssignment {
|
|
4
|
+
tagPath: string;
|
|
5
|
+
confidence: number;
|
|
6
|
+
source: string;
|
|
7
|
+
evidence: string;
|
|
8
|
+
manualOverride?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface TagInferenceResult {
|
|
11
|
+
tags: TagAssignment[];
|
|
12
|
+
derivedTags: TagAssignment[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 最小系统标签推断器。
|
|
16
|
+
* 这里只保留稳定、可解释的系统派生标签,不再做业务规则识别。
|
|
17
|
+
*/
|
|
18
|
+
export declare class SimpleTagInferenceEngine {
|
|
19
|
+
constructor();
|
|
20
|
+
infer(file: FileScanResult, parsed: ParsedDocument): TagInferenceResult;
|
|
21
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const EXTENSION_TYPE_TAGS = new Map([
|
|
2
|
+
[".md", "类型/文本/Markdown"],
|
|
3
|
+
[".mdx", "类型/文本/Markdown"],
|
|
4
|
+
[".txt", "类型/文本/纯文本"],
|
|
5
|
+
[".rtf", "类型/文本/RTF"],
|
|
6
|
+
[".html", "类型/文本/HTML"],
|
|
7
|
+
[".htm", "类型/文本/HTML"],
|
|
8
|
+
[".pdf", "类型/办公/PDF"],
|
|
9
|
+
[".doc", "类型/办公/Word"],
|
|
10
|
+
[".docx", "类型/办公/Word"],
|
|
11
|
+
[".wps", "类型/办公/Word"],
|
|
12
|
+
[".ppt", "类型/办公/PPT"],
|
|
13
|
+
[".pptx", "类型/办公/PPT"],
|
|
14
|
+
[".xls", "类型/办公/Excel"],
|
|
15
|
+
[".xlsx", "类型/办公/Excel"],
|
|
16
|
+
[".csv", "类型/表格/CSV"],
|
|
17
|
+
]);
|
|
18
|
+
function setTag(target, assignment) {
|
|
19
|
+
const current = target.get(assignment.tagPath);
|
|
20
|
+
if (!current || assignment.confidence >= current.confidence) {
|
|
21
|
+
target.set(assignment.tagPath, assignment);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function startOfLocalDay(value) {
|
|
25
|
+
return new Date(value.getFullYear(), value.getMonth(), value.getDate(), 0, 0, 0, 0);
|
|
26
|
+
}
|
|
27
|
+
function resolveRecentDayDistance(now, modifiedAt) {
|
|
28
|
+
const todayStart = startOfLocalDay(now).getTime();
|
|
29
|
+
const modifiedStart = startOfLocalDay(modifiedAt).getTime();
|
|
30
|
+
if (!Number.isFinite(todayStart) || !Number.isFinite(modifiedStart)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
return Math.max(0, Math.floor((todayStart - modifiedStart) / 86400000));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 最小系统标签推断器。
|
|
37
|
+
* 这里只保留稳定、可解释的系统派生标签,不再做业务规则识别。
|
|
38
|
+
*/
|
|
39
|
+
export class SimpleTagInferenceEngine {
|
|
40
|
+
constructor() { }
|
|
41
|
+
infer(file, parsed) {
|
|
42
|
+
void parsed;
|
|
43
|
+
const derived = new Map();
|
|
44
|
+
const typeTag = EXTENSION_TYPE_TAGS.get(file.extension);
|
|
45
|
+
if (typeTag) {
|
|
46
|
+
setTag(derived, {
|
|
47
|
+
tagPath: typeTag,
|
|
48
|
+
confidence: 0.92,
|
|
49
|
+
source: "derived_extension",
|
|
50
|
+
evidence: `扩展名推导: ${file.extension}`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const modifiedAt = new Date(file.mtime);
|
|
54
|
+
if (!Number.isNaN(modifiedAt.getTime())) {
|
|
55
|
+
const now = new Date();
|
|
56
|
+
const recentDayDistance = resolveRecentDayDistance(now, modifiedAt);
|
|
57
|
+
setTag(derived, {
|
|
58
|
+
tagPath: `时间/${modifiedAt.getFullYear()}/${String(modifiedAt.getMonth() + 1).padStart(2, "0")}`,
|
|
59
|
+
confidence: 1,
|
|
60
|
+
source: "derived_time",
|
|
61
|
+
evidence: "由修改时间推导的绝对时间标签",
|
|
62
|
+
});
|
|
63
|
+
if (recentDayDistance !== null && recentDayDistance <= 29) {
|
|
64
|
+
setTag(derived, {
|
|
65
|
+
tagPath: "时间/最近30天",
|
|
66
|
+
confidence: 1,
|
|
67
|
+
source: "derived_time_window",
|
|
68
|
+
evidence: "最近30天有修改",
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
if (recentDayDistance !== null && recentDayDistance <= 6) {
|
|
72
|
+
setTag(derived, {
|
|
73
|
+
tagPath: "时间/最近7天",
|
|
74
|
+
confidence: 1,
|
|
75
|
+
source: "derived_time_window",
|
|
76
|
+
evidence: "最近7天有修改",
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
if (recentDayDistance !== null && recentDayDistance <= 2) {
|
|
80
|
+
setTag(derived, {
|
|
81
|
+
tagPath: "时间/最近3天",
|
|
82
|
+
confidence: 1,
|
|
83
|
+
source: "derived_time_window",
|
|
84
|
+
evidence: "最近3天有修改",
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
tags: [],
|
|
90
|
+
derivedTags: [...derived.values()].sort((a, b) => a.tagPath.localeCompare(b.tagPath, "zh-Hans-CN")),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=simple-tag-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple-tag-inference.js","sourceRoot":"","sources":["../../../../../../../src/modules/affairs-indexer/core/src/tagging/simple-tag-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function throwIfAborted(signal, fallbackMessage = "事务文档库任务已取消") {
|
|
2
|
+
if (signal?.aborted) {
|
|
3
|
+
throw signal.reason ?? new Error(fallbackMessage);
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
export async function yieldToEventLoop(signal, fallbackMessage) {
|
|
7
|
+
throwIfAborted(signal, fallbackMessage);
|
|
8
|
+
await new Promise((resolve) => {
|
|
9
|
+
setImmediate(resolve);
|
|
10
|
+
});
|
|
11
|
+
throwIfAborted(signal, fallbackMessage);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=abort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.js","sourceRoot":"","sources":["../../../../../../../src/modules/affairs-indexer/core/src/utils/abort.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,MAAoB,EAAE,eAAe,GAAG,YAAY;IACjF,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB,EAAE,eAAwB;IACnF,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACxC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function iterateNdjsonFileSync<T>(filePath: string, onRecord: (value: T) => void): void;
|
|
2
|
+
export interface JsonArrayFileWriter {
|
|
3
|
+
append(value: unknown): void;
|
|
4
|
+
close(): void;
|
|
5
|
+
}
|
|
6
|
+
export declare function createJsonArrayFileWriter(filePath: string, options: {
|
|
7
|
+
prefix: string;
|
|
8
|
+
suffix: string;
|
|
9
|
+
}): JsonArrayFileWriter;
|