@jingyi0605/codingns 0.8.5 → 0.9.5
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-kkJDsnCO.js +2 -0
- package/dist/public/assets/{App-BOHBGFOd.js → App-DrNI9lWA.js} +6 -6
- package/dist/public/assets/{BootstrapPage-BxHQT4nA.js → BootstrapPage-QgVH5Mps.js} +1 -1
- package/dist/public/assets/{ConversationPage-DWFsF6BB.js → ConversationPage-DVk8VfIj.js} +6 -6
- package/dist/public/assets/{DesktopDetachPreviewPage-DOgEjYEf.js → DesktopDetachPreviewPage-BhfP0TpH.js} +1 -1
- package/dist/public/assets/DesktopModal-DRmDrv0S.js +1 -0
- package/dist/public/assets/DesktopWindowPage-DNbJXnSs.js +2 -0
- package/dist/public/assets/FileContextPanel---fLO4ve.js +1 -0
- package/dist/public/assets/GitSidebar-sXUE0TqT.js +6 -0
- package/dist/public/assets/MobileCreateSessionSheet-BftZ5pvb.js +1 -0
- package/dist/public/assets/MobileSheet-nw5SCa3N.js +1 -0
- package/dist/public/assets/{MobileTopHeaderFrame-lcp2GscV.js → MobileTopHeaderFrame-DH_D02Wy.js} +1 -1
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-2K406G5p.js +1 -0
- package/dist/public/assets/{PluginAccessOverview-DGcKAMQl.js → PluginAccessOverview-BVJihw3D.js} +1 -1
- package/dist/public/assets/PluginContainerPage-CR4vStvr.js +1 -0
- package/dist/public/assets/{PluginDetailPage-CAJ7LFpD.js → PluginDetailPage-CrMX0Mnm.js} +1 -1
- package/dist/public/assets/{PluginsListPage-BxZG1NyT.js → PluginsListPage-FtIL71Yg.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-CfNO_TIl.js → RelayConnectEntryPage-Bt1apX53.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-by36Z_5k.js → ServerSettingsModal-D-guzPrI.js} +1 -1
- package/dist/public/assets/SessionIndexPage-CX2FppcJ.js +1 -0
- package/dist/public/assets/SettingsPage-BI2Olcvr.js +2 -0
- package/dist/public/assets/TerminalManagerPanel-B5MKGPy-.js +1 -0
- package/dist/public/assets/{TerminalPage-C4LNoPBp.js → TerminalPage-C2dTNGHK.js} +2 -2
- package/dist/public/assets/TerminalRuntimeFallbackModal-DAqOxFD8.js +1 -0
- package/dist/public/assets/{ToolFilesPage-47zbdgTW.js → ToolFilesPage-IsNwyE6T.js} +1 -1
- package/dist/public/assets/{ToolGitPage-Fuk_b_jg.js → ToolGitPage-BK1JBERN.js} +1 -1
- package/dist/public/assets/{ToolProcessesPage-sWSMWD-9.js → ToolProcessesPage-DwTYUQCK.js} +1 -1
- package/dist/public/assets/{ToolsHomePage-R1mZlbZi.js → ToolsHomePage-BLOy7lPg.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-CqmiFH2u.js → WorkbenchLandingPage-CqZKR6EA.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-BksVkkFF.css +1 -0
- package/dist/public/assets/WorkbenchLayout-CJHQtwuL.js +1022 -0
- package/dist/public/assets/{WorkbenchModal-C7qoQElW.js → WorkbenchModal-BM-OeW-b.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-2bKI6Q9k.js +1 -0
- package/dist/public/assets/WorkbenchShellRoute-BjuZD101.css +1 -0
- package/dist/public/assets/WorkspaceDebugDetailPage-BMsEN5iG.js +1 -0
- package/dist/public/assets/WorkspaceDetailPage-5H9Gosx2.js +1 -0
- package/dist/public/assets/WorkspaceHomePage-DQiXKgiP.js +1 -0
- package/dist/public/assets/{client-runtime-manager-wmCJZKYd.js → client-runtime-manager-CgPJq21V.js} +1 -1
- package/dist/public/assets/index-BARqMVSw.css +1 -0
- package/dist/public/assets/index-BUoNjVrY.js +50 -0
- package/dist/public/assets/{login-direct-candidate-resolver-BOAgTuUf.js → login-direct-candidate-resolver-CGaxAXV8.js} +1 -1
- package/dist/public/assets/{plugin-permission-copy-Cq99cnzV.js → plugin-permission-copy-BR9gWy8b.js} +1 -1
- package/dist/public/assets/{plugins-api-BQTV5DOp.js → plugins-api-CdCsrG2e.js} +1 -1
- package/dist/public/assets/{preferences-service-DJxbEEeg.js → preferences-service-lOhnlxzP.js} +1 -1
- package/dist/public/assets/{relay-entry-D-LfvdiX.js → relay-entry-CQpxTS8y.js} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-BJmy8dyK.js → terminal-runtime-meta-oteTx66X.js} +1 -1
- package/dist/public/assets/useRegisteredDebugTemplates-Bu2ykZ6s.js +1 -0
- package/dist/public/assets/workbench-navigation-DlgXuFW2.js +1 -0
- package/dist/public/index.html +2 -2
- package/dist/server/config/env.d.ts +1 -0
- package/dist/server/config/env.js +3 -0
- package/dist/server/config/env.js.map +1 -1
- 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 +26 -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.d.ts +3 -0
- package/dist/server/modules/butler/butler-follow-up-service.js +11 -1
- package/dist/server/modules/butler/butler-follow-up-service.js.map +1 -1
- package/dist/server/modules/butler/butler-inbox-service.d.ts +3 -0
- package/dist/server/modules/butler/butler-inbox-service.js +14 -2
- package/dist/server/modules/butler/butler-inbox-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 +4 -0
- package/dist/server/modules/butler/butler-session-service.js +127 -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 +36 -2
- package/dist/server/modules/file/file-controller.js +461 -19
- 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/file-search-service.js +200 -12
- package/dist/server/modules/file/file-search-service.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 +24 -5
- package/dist/server/modules/file/workspace-file-bridge-service.d.ts +20 -0
- package/dist/server/modules/file/workspace-file-bridge-service.js +22 -0
- package/dist/server/modules/file/workspace-file-bridge-service.js.map +1 -1
- package/dist/server/modules/file/workspace-file-bridge-watch-service.d.ts +9 -0
- package/dist/server/modules/file/workspace-file-bridge-watch-service.js +28 -0
- package/dist/server/modules/file/workspace-file-bridge-watch-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 +29 -3
- package/dist/server/modules/tasks/task-types.js +15 -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 +303 -0
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -0
- package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
- package/dist/server/modules/workbench/workbench-controller.js +31 -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 +55 -18
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-library-controller.d.ts +125 -0
- package/dist/server/modules/workspace/affairs-library-controller.js +175 -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 +30 -0
- package/dist/server/modules/workspace/affairs-library-preview-link-service.js +167 -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 +353 -0
- package/dist/server/modules/workspace/affairs-library-service.js +3895 -0
- package/dist/server/modules/workspace/affairs-library-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +86 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +193 -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 +146 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js +1593 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -0
- package/dist/server/modules/workspace/affairs-tag-controller.d.ts +110 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js +102 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -0
- package/dist/server/modules/workspace/affairs-tag-service.d.ts +174 -0
- package/dist/server/modules/workspace/affairs-tag-service.js +719 -0
- package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-api-client.d.ts +118 -0
- package/dist/server/modules/workspace/teable-api-client.js +142 -0
- package/dist/server/modules/workspace/teable-api-client.js.map +1 -0
- package/dist/server/modules/workspace/teable-catalog-controller.d.ts +18 -0
- package/dist/server/modules/workspace/teable-catalog-controller.js +17 -0
- package/dist/server/modules/workspace/teable-catalog-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-catalog-service.d.ts +36 -0
- package/dist/server/modules/workspace/teable-catalog-service.js +124 -0
- package/dist/server/modules/workspace/teable-catalog-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-credential-service.d.ts +8 -0
- package/dist/server/modules/workspace/teable-credential-service.js +37 -0
- package/dist/server/modules/workspace/teable-credential-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-field-mapping-controller.d.ts +25 -0
- package/dist/server/modules/workspace/teable-field-mapping-controller.js +31 -0
- package/dist/server/modules/workspace/teable-field-mapping-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-field-mapping-service.d.ts +38 -0
- package/dist/server/modules/workspace/teable-field-mapping-service.js +215 -0
- package/dist/server/modules/workspace/teable-field-mapping-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-global-binding-controller.d.ts +22 -0
- package/dist/server/modules/workspace/teable-global-binding-controller.js +25 -0
- package/dist/server/modules/workspace/teable-global-binding-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-global-binding-service.d.ts +35 -0
- package/dist/server/modules/workspace/teable-global-binding-service.js +151 -0
- package/dist/server/modules/workspace/teable-global-binding-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-mirror-sync-controller.d.ts +29 -0
- package/dist/server/modules/workspace/teable-mirror-sync-controller.js +50 -0
- package/dist/server/modules/workspace/teable-mirror-sync-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-mirror-sync-service.d.ts +157 -0
- package/dist/server/modules/workspace/teable-mirror-sync-service.js +917 -0
- package/dist/server/modules/workspace/teable-mirror-sync-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-runtime-controller.d.ts +58 -0
- package/dist/server/modules/workspace/teable-runtime-controller.js +60 -0
- package/dist/server/modules/workspace/teable-runtime-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-runtime-service.d.ts +96 -0
- package/dist/server/modules/workspace/teable-runtime-service.js +362 -0
- package/dist/server/modules/workspace/teable-runtime-service.js.map +1 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-controller.d.ts +22 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js +20 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-controller.js.map +1 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-service.d.ts +22 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-service.js +159 -0
- package/dist/server/modules/workspace/teable-workbench-sync-config-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 +11 -0
- package/dist/server/routes/affairs.js +126 -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/workbench.js +15 -0
- package/dist/server/routes/workbench.js.map +1 -1
- package/dist/server/routes/workspaces.d.ts +4 -1
- package/dist/server/routes/workspaces.js +56 -1
- package/dist/server/routes/workspaces.js.map +1 -1
- package/dist/server/server/create-server.d.ts +20 -2
- package/dist/server/server/create-server.js +180 -33
- 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 +72 -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/user-teable-credential-repository.d.ts +9 -0
- package/dist/server/storage/repositories/user-teable-credential-repository.js +45 -0
- package/dist/server/storage/repositories/user-teable-credential-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-field-mapping-repository.d.ts +10 -0
- package/dist/server/storage/repositories/user-teable-field-mapping-repository.js +69 -0
- package/dist/server/storage/repositories/user-teable-field-mapping-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-global-setting-repository.d.ts +8 -0
- package/dist/server/storage/repositories/user-teable-global-setting-repository.js +52 -0
- package/dist/server/storage/repositories/user-teable-global-setting-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.d.ts +9 -0
- package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js +66 -0
- package/dist/server/storage/repositories/user-teable-mirror-record-mapping-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.d.ts +9 -0
- package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js +67 -0
- package/dist/server/storage/repositories/user-teable-mirror-table-binding-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-sync-log-repository.d.ts +14 -0
- package/dist/server/storage/repositories/user-teable-sync-log-repository.js +97 -0
- package/dist/server/storage/repositories/user-teable-sync-log-repository.js.map +1 -0
- package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.d.ts +8 -0
- package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js +55 -0
- package/dist/server/storage/repositories/user-teable-workbench-sync-config-repository.js.map +1 -0
- 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 +633 -123
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +214 -25
- package/dist/server/types/domain.d.ts +133 -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/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.d.ts +22 -3
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js +29 -2
- package/node_modules/@codingns/session-sync-core/dist/sqlite/node-sqlite.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/package.json +3 -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/TerminalManagerPanel-NVZRxxmH.js +0 -1
- 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/WorkspaceDetailPage-BPsrFffw.js +0 -1
- package/dist/public/assets/WorkspaceHomePage-KAtqZOAb.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/public/assets/useRegisteredDebugTemplates-DQAWVdCo.js +0 -1
- package/dist/public/assets/workbench-navigation-MEzCSmsK.js +0 -1
|
@@ -16,6 +16,7 @@ export function createDatabaseClient(databasePath) {
|
|
|
16
16
|
ensureWorkspaceRemovalColumn(db);
|
|
17
17
|
ensureWorkspaceSortOrderColumn(db);
|
|
18
18
|
ensureWorkspaceNavigationBackgroundColorColumn(db);
|
|
19
|
+
ensureWorkspaceNavigationAffairsLibraryColumns(db);
|
|
19
20
|
ensureOpenCliProviderSchema(db);
|
|
20
21
|
ensureOpenCliCatalogSchema(db);
|
|
21
22
|
ensureOpenCliRuntimeProfileSchema(db);
|
|
@@ -27,6 +28,7 @@ export function createDatabaseClient(databasePath) {
|
|
|
27
28
|
ensureSessionRelationColumns(db);
|
|
28
29
|
ensureSessionForkSchema(db);
|
|
29
30
|
ensureSessionChangedFileTables(db);
|
|
31
|
+
ensureAffairsAssistantSessionSnapshotSchema(db);
|
|
30
32
|
ensureTerminalInstanceProcessIdColumn(db);
|
|
31
33
|
ensureTerminalRuntimeSchema(db);
|
|
32
34
|
ensureTerminalLogSchema(db);
|
|
@@ -45,11 +47,20 @@ export function createDatabaseClient(databasePath) {
|
|
|
45
47
|
ensureTerminalCommandTemplateDebugSchema(db);
|
|
46
48
|
ensureTerminalInstanceDebugSchema(db);
|
|
47
49
|
ensureUserPreferenceProfileSchema(db);
|
|
50
|
+
ensureUserAffairsLibrarySettingsSchema(db);
|
|
51
|
+
ensureUserTeableGlobalSettingsSchema(db);
|
|
52
|
+
ensureUserTeableCredentialsSchema(db);
|
|
53
|
+
ensureUserTeableWorkbenchSyncConfigsSchema(db);
|
|
54
|
+
ensureUserTeableMirrorTableBindingsSchema(db);
|
|
55
|
+
ensureUserTeableMirrorRecordMappingsSchema(db);
|
|
56
|
+
ensureUserTeableFormBindingsSchema(db);
|
|
57
|
+
ensureUserTeableFieldMappingsSchema(db);
|
|
58
|
+
ensureUserTeableInboundRecordMappingsSchema(db);
|
|
48
59
|
ensureButlerProfileSchema(db);
|
|
49
60
|
ensureButlerControlSessionSchema(db);
|
|
50
61
|
ensureButlerControlTimerSchema(db);
|
|
51
62
|
ensureAssistantAutomationSchema(db);
|
|
52
|
-
|
|
63
|
+
ensureOnlyOfficeSettingsSchema(db);
|
|
53
64
|
ensureDocumentTemplateSchema(db);
|
|
54
65
|
ensurePluginRegistrySchema(db);
|
|
55
66
|
ensurePluginRuntimeSessionSchema(db);
|
|
@@ -68,6 +79,7 @@ export function createDatabaseClient(databasePath) {
|
|
|
68
79
|
function ensurePreSchemaCompatibility(db) {
|
|
69
80
|
// 旧库还没有这些列时,schema.sql 里的索引会先炸掉,所以必须先补齐。
|
|
70
81
|
ensureAuthTokenDeviceColumns(db);
|
|
82
|
+
ensureUserTeableFormBindingsPreSchemaCompatibility(db);
|
|
71
83
|
ensureOpsTargetWorkspaceSchema(db);
|
|
72
84
|
ensureManagedSkillScopeSchema(db);
|
|
73
85
|
ensureAuthTokenCallerKindSchema(db);
|
|
@@ -102,6 +114,18 @@ function ensureAuthTokenDeviceColumns(db) {
|
|
|
102
114
|
db.exec("CREATE INDEX IF NOT EXISTS idx_auth_tokens_workspace_id ON auth_tokens(workspace_id)");
|
|
103
115
|
db.exec("CREATE INDEX IF NOT EXISTS idx_auth_tokens_session_id ON auth_tokens(session_id)");
|
|
104
116
|
}
|
|
117
|
+
function ensureUserTeableFormBindingsPreSchemaCompatibility(db) {
|
|
118
|
+
if (!tableExists(db, "user_teable_form_bindings")) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
const columns = db
|
|
122
|
+
.prepare("PRAGMA table_info(user_teable_form_bindings)")
|
|
123
|
+
.all();
|
|
124
|
+
const columnNames = new Set(columns.map((column) => column.name ?? ""));
|
|
125
|
+
if (!columnNames.has("enabled")) {
|
|
126
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
105
129
|
function ensureAuthTokenCallerKindSchema(db) {
|
|
106
130
|
if (!tableExists(db, "auth_tokens")) {
|
|
107
131
|
return;
|
|
@@ -248,6 +272,24 @@ function ensureAuthDeviceSchema(db) {
|
|
|
248
272
|
db.exec("ALTER TABLE auth_devices ADD COLUMN user_agent TEXT");
|
|
249
273
|
}
|
|
250
274
|
}
|
|
275
|
+
function ensureWorkspaceNavigationAffairsLibraryColumns(db) {
|
|
276
|
+
if (!tableExists(db, "workspace_navigation_states")) {
|
|
277
|
+
return;
|
|
278
|
+
}
|
|
279
|
+
const columns = db
|
|
280
|
+
.prepare("PRAGMA table_info(workspace_navigation_states)")
|
|
281
|
+
.all();
|
|
282
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
283
|
+
if (!columnNames.has("affairs_library_root_path")) {
|
|
284
|
+
db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_root_path TEXT");
|
|
285
|
+
}
|
|
286
|
+
if (!columnNames.has("affairs_library_enabled")) {
|
|
287
|
+
db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_enabled INTEGER NOT NULL DEFAULT 0 CHECK (affairs_library_enabled IN (0, 1))");
|
|
288
|
+
}
|
|
289
|
+
if (!columnNames.has("affairs_library_favorites_json")) {
|
|
290
|
+
db.exec("ALTER TABLE workspace_navigation_states ADD COLUMN affairs_library_favorites_json TEXT");
|
|
291
|
+
}
|
|
292
|
+
}
|
|
251
293
|
function ensurePluginRegistrySchema(db) {
|
|
252
294
|
db.exec(`
|
|
253
295
|
CREATE TABLE IF NOT EXISTS plugin_definitions (
|
|
@@ -635,10 +677,13 @@ function ensureButlerProfileSchema(db) {
|
|
|
635
677
|
const columns = db
|
|
636
678
|
.prepare("PRAGMA table_info(butler_profiles)")
|
|
637
679
|
.all();
|
|
638
|
-
|
|
639
|
-
|
|
680
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
681
|
+
if (!columnNames.has("display_name")) {
|
|
682
|
+
db.exec("ALTER TABLE butler_profiles ADD COLUMN display_name TEXT NOT NULL DEFAULT '代码助手'");
|
|
683
|
+
}
|
|
684
|
+
if (!columnNames.has("setup_completed")) {
|
|
685
|
+
db.exec("ALTER TABLE butler_profiles ADD COLUMN setup_completed INTEGER NOT NULL DEFAULT 0 CHECK (setup_completed IN (0, 1))");
|
|
640
686
|
}
|
|
641
|
-
db.exec("ALTER TABLE butler_profiles ADD COLUMN display_name TEXT NOT NULL DEFAULT '代码助手'");
|
|
642
687
|
}
|
|
643
688
|
function ensureUserPreferenceProfileSchema(db) {
|
|
644
689
|
const columns = db
|
|
@@ -655,6 +700,497 @@ function ensureUserPreferenceProfileSchema(db) {
|
|
|
655
700
|
db.exec(`ALTER TABLE user_preference_profiles
|
|
656
701
|
ADD COLUMN debug_port_pools_json TEXT NOT NULL DEFAULT '{"start":43000,"end":47999}'`);
|
|
657
702
|
}
|
|
703
|
+
if (!columnNames.has("affairs_dashboard_states_json")) {
|
|
704
|
+
db.exec(`ALTER TABLE user_preference_profiles
|
|
705
|
+
ADD COLUMN affairs_dashboard_states_json TEXT NOT NULL DEFAULT '{}'`);
|
|
706
|
+
}
|
|
707
|
+
migrateLegacyAffairsShortcutAppsColumn(db, columnNames);
|
|
708
|
+
}
|
|
709
|
+
function migrateLegacyAffairsShortcutAppsColumn(db, columnNames) {
|
|
710
|
+
if (!tableExists(db, "user_preference_profiles")) {
|
|
711
|
+
return;
|
|
712
|
+
}
|
|
713
|
+
const resolvedColumnNames = columnNames
|
|
714
|
+
?? new Set(db.prepare("PRAGMA table_info(user_preference_profiles)").all()
|
|
715
|
+
.map((column) => column.name));
|
|
716
|
+
if (!resolvedColumnNames.has("affairs_shortcut_apps_json")) {
|
|
717
|
+
return;
|
|
718
|
+
}
|
|
719
|
+
const rows = db
|
|
720
|
+
.prepare(`SELECT
|
|
721
|
+
user_id,
|
|
722
|
+
language,
|
|
723
|
+
theme,
|
|
724
|
+
auto_theme,
|
|
725
|
+
default_permission_mode,
|
|
726
|
+
providers_json,
|
|
727
|
+
debug_port_pools_json,
|
|
728
|
+
affairs_dashboard_states_json,
|
|
729
|
+
affairs_shortcut_apps_json,
|
|
730
|
+
created_at,
|
|
731
|
+
updated_at
|
|
732
|
+
FROM user_preference_profiles`)
|
|
733
|
+
.all();
|
|
734
|
+
const migratedRows = rows.map((row) => ({
|
|
735
|
+
...row,
|
|
736
|
+
affairs_dashboard_states_json: JSON.stringify(mergeLegacyShortcutAppsIntoDashboardStates(parseJsonObjectRecord(row.affairs_dashboard_states_json), parseJsonObjectRecord(row.affairs_shortcut_apps_json)))
|
|
737
|
+
}));
|
|
738
|
+
db.exec("BEGIN IMMEDIATE");
|
|
739
|
+
try {
|
|
740
|
+
db.exec(`
|
|
741
|
+
ALTER TABLE user_preference_profiles RENAME TO user_preference_profiles_legacy;
|
|
742
|
+
|
|
743
|
+
CREATE TABLE user_preference_profiles (
|
|
744
|
+
user_id TEXT PRIMARY KEY,
|
|
745
|
+
language TEXT NOT NULL CHECK (language IN ('zh-CN', 'en-US')),
|
|
746
|
+
theme TEXT NOT NULL CHECK (theme IN ('light', 'dark', 'sky-blue', 'eye-green')),
|
|
747
|
+
auto_theme INTEGER NOT NULL DEFAULT 0 CHECK (auto_theme IN (0, 1)),
|
|
748
|
+
default_permission_mode TEXT NOT NULL CHECK (
|
|
749
|
+
default_permission_mode IN ('default', 'acceptEdits', 'bypassPermissions')
|
|
750
|
+
),
|
|
751
|
+
providers_json TEXT NOT NULL,
|
|
752
|
+
debug_port_pools_json TEXT NOT NULL,
|
|
753
|
+
affairs_dashboard_states_json TEXT NOT NULL DEFAULT '{}',
|
|
754
|
+
created_at TEXT NOT NULL,
|
|
755
|
+
updated_at TEXT NOT NULL,
|
|
756
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
757
|
+
)
|
|
758
|
+
`);
|
|
759
|
+
const insertStatement = db.prepare(`
|
|
760
|
+
INSERT INTO user_preference_profiles (
|
|
761
|
+
user_id,
|
|
762
|
+
language,
|
|
763
|
+
theme,
|
|
764
|
+
auto_theme,
|
|
765
|
+
default_permission_mode,
|
|
766
|
+
providers_json,
|
|
767
|
+
debug_port_pools_json,
|
|
768
|
+
affairs_dashboard_states_json,
|
|
769
|
+
created_at,
|
|
770
|
+
updated_at
|
|
771
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
772
|
+
`);
|
|
773
|
+
for (const row of migratedRows) {
|
|
774
|
+
insertStatement.run(row.user_id, row.language, row.theme, row.auto_theme, row.default_permission_mode, row.providers_json, row.debug_port_pools_json, row.affairs_dashboard_states_json, row.created_at, row.updated_at);
|
|
775
|
+
}
|
|
776
|
+
db.exec("DROP TABLE user_preference_profiles_legacy");
|
|
777
|
+
db.exec("COMMIT");
|
|
778
|
+
}
|
|
779
|
+
catch (error) {
|
|
780
|
+
db.exec("ROLLBACK");
|
|
781
|
+
throw error;
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
function parseJsonObjectRecord(value) {
|
|
785
|
+
try {
|
|
786
|
+
const parsed = JSON.parse(value);
|
|
787
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
788
|
+
return {};
|
|
789
|
+
}
|
|
790
|
+
return { ...parsed };
|
|
791
|
+
}
|
|
792
|
+
catch {
|
|
793
|
+
return {};
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
function mergeLegacyShortcutAppsIntoDashboardStates(dashboardStatesByWorkspace, legacyShortcutAppsByWorkspace) {
|
|
797
|
+
const result = {
|
|
798
|
+
...dashboardStatesByWorkspace
|
|
799
|
+
};
|
|
800
|
+
for (const [workspaceId, shortcutApps] of Object.entries(legacyShortcutAppsByWorkspace)) {
|
|
801
|
+
const normalizedWorkspaceId = workspaceId.trim();
|
|
802
|
+
if (!normalizedWorkspaceId || Object.prototype.hasOwnProperty.call(result, normalizedWorkspaceId)) {
|
|
803
|
+
continue;
|
|
804
|
+
}
|
|
805
|
+
if (!Array.isArray(shortcutApps)) {
|
|
806
|
+
continue;
|
|
807
|
+
}
|
|
808
|
+
result[normalizedWorkspaceId] = {
|
|
809
|
+
workspaceId: normalizedWorkspaceId,
|
|
810
|
+
shortcutApps
|
|
811
|
+
};
|
|
812
|
+
}
|
|
813
|
+
return result;
|
|
814
|
+
}
|
|
815
|
+
function ensureUserAffairsLibrarySettingsSchema(db) {
|
|
816
|
+
if (!tableExists(db, "user_affairs_library_settings")) {
|
|
817
|
+
db.exec(`
|
|
818
|
+
CREATE TABLE user_affairs_library_settings (
|
|
819
|
+
user_id TEXT PRIMARY KEY,
|
|
820
|
+
root_dir TEXT,
|
|
821
|
+
enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
|
|
822
|
+
favorites_json TEXT,
|
|
823
|
+
last_workspace_id TEXT,
|
|
824
|
+
dashboard_state_json TEXT NOT NULL DEFAULT '{}',
|
|
825
|
+
created_at TEXT NOT NULL,
|
|
826
|
+
updated_at TEXT NOT NULL,
|
|
827
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
828
|
+
)
|
|
829
|
+
`);
|
|
830
|
+
}
|
|
831
|
+
const columns = db
|
|
832
|
+
.prepare("PRAGMA table_info(user_affairs_library_settings)")
|
|
833
|
+
.all();
|
|
834
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
835
|
+
if (!columnNames.has("favorites_json")) {
|
|
836
|
+
db.exec("ALTER TABLE user_affairs_library_settings ADD COLUMN favorites_json TEXT");
|
|
837
|
+
}
|
|
838
|
+
if (!columnNames.has("last_workspace_id")) {
|
|
839
|
+
db.exec("ALTER TABLE user_affairs_library_settings ADD COLUMN last_workspace_id TEXT");
|
|
840
|
+
}
|
|
841
|
+
if (!columnNames.has("dashboard_state_json")) {
|
|
842
|
+
db.exec("ALTER TABLE user_affairs_library_settings ADD COLUMN dashboard_state_json TEXT NOT NULL DEFAULT '{}'");
|
|
843
|
+
}
|
|
844
|
+
migrateLegacyAffairsLibrarySettings(db);
|
|
845
|
+
migrateLegacyDashboardStatesIntoGlobalAffairsSettings(db);
|
|
846
|
+
}
|
|
847
|
+
function migrateLegacyDashboardStatesIntoGlobalAffairsSettings(db) {
|
|
848
|
+
if (!tableExists(db, "user_preference_profiles") || !tableExists(db, "user_affairs_library_settings")) {
|
|
849
|
+
return;
|
|
850
|
+
}
|
|
851
|
+
const rows = db
|
|
852
|
+
.prepare("SELECT user_id, affairs_dashboard_states_json FROM user_preference_profiles")
|
|
853
|
+
.all();
|
|
854
|
+
const updateStatement = db.prepare(`
|
|
855
|
+
UPDATE user_affairs_library_settings
|
|
856
|
+
SET dashboard_state_json = ?
|
|
857
|
+
WHERE user_id = ?
|
|
858
|
+
AND (dashboard_state_json IS NULL OR TRIM(dashboard_state_json) = '' OR dashboard_state_json = '{}')
|
|
859
|
+
`);
|
|
860
|
+
for (const row of rows) {
|
|
861
|
+
const dashboardState = pickLatestLegacyDashboardState(parseJsonObjectRecord(row.affairs_dashboard_states_json));
|
|
862
|
+
if (!dashboardState) {
|
|
863
|
+
continue;
|
|
864
|
+
}
|
|
865
|
+
updateStatement.run(JSON.stringify(dashboardState), row.user_id);
|
|
866
|
+
}
|
|
867
|
+
}
|
|
868
|
+
function pickLatestLegacyDashboardState(dashboardStatesByWorkspace) {
|
|
869
|
+
const candidates = Object.entries(dashboardStatesByWorkspace)
|
|
870
|
+
.map(([workspaceId, rawState]) => normalizeLegacyDashboardStateCandidate(workspaceId, rawState))
|
|
871
|
+
.filter((item) => item !== null)
|
|
872
|
+
.sort((left, right) => {
|
|
873
|
+
if (right.score !== left.score) {
|
|
874
|
+
return right.score - left.score;
|
|
875
|
+
}
|
|
876
|
+
return right.updatedAt.localeCompare(left.updatedAt);
|
|
877
|
+
});
|
|
878
|
+
return candidates[0]?.state ?? null;
|
|
879
|
+
}
|
|
880
|
+
function normalizeLegacyDashboardStateCandidate(workspaceId, rawState) {
|
|
881
|
+
if (typeof rawState !== "object" || rawState === null || Array.isArray(rawState)) {
|
|
882
|
+
return null;
|
|
883
|
+
}
|
|
884
|
+
const state = {
|
|
885
|
+
...rawState,
|
|
886
|
+
workspaceId: "affairs-global"
|
|
887
|
+
};
|
|
888
|
+
const shortcutApps = Array.isArray(state.shortcutApps) ? state.shortcutApps : [];
|
|
889
|
+
const tabs = Array.isArray(state.tabs) ? state.tabs : [];
|
|
890
|
+
const widgetCount = tabs.reduce((total, tab) => {
|
|
891
|
+
if (typeof tab !== "object" || tab === null || Array.isArray(tab)) {
|
|
892
|
+
return total;
|
|
893
|
+
}
|
|
894
|
+
return total + (Array.isArray(tab.widgets) ? tab.widgets.length : 0);
|
|
895
|
+
}, 0);
|
|
896
|
+
const updatedAt = typeof state.updatedAt === "string" && state.updatedAt.trim()
|
|
897
|
+
? state.updatedAt.trim()
|
|
898
|
+
: "";
|
|
899
|
+
return {
|
|
900
|
+
state,
|
|
901
|
+
score: shortcutApps.length * 100 + widgetCount,
|
|
902
|
+
updatedAt: updatedAt || workspaceId
|
|
903
|
+
};
|
|
904
|
+
}
|
|
905
|
+
function ensureUserTeableGlobalSettingsSchema(db) {
|
|
906
|
+
if (!tableExists(db, "user_teable_global_settings")) {
|
|
907
|
+
db.exec(`
|
|
908
|
+
CREATE TABLE user_teable_global_settings (
|
|
909
|
+
user_id TEXT PRIMARY KEY,
|
|
910
|
+
base_url TEXT,
|
|
911
|
+
space_id TEXT,
|
|
912
|
+
base_id TEXT,
|
|
913
|
+
auth_ref TEXT,
|
|
914
|
+
enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
|
|
915
|
+
mirror_mode TEXT NOT NULL DEFAULT 'manual' CHECK (mirror_mode IN ('manual', 'scheduled', 'event_driven')),
|
|
916
|
+
created_at TEXT NOT NULL,
|
|
917
|
+
updated_at TEXT NOT NULL,
|
|
918
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
919
|
+
)
|
|
920
|
+
`);
|
|
921
|
+
return;
|
|
922
|
+
}
|
|
923
|
+
const columns = db
|
|
924
|
+
.prepare("PRAGMA table_info(user_teable_global_settings)")
|
|
925
|
+
.all();
|
|
926
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
927
|
+
if (!columnNames.has("base_id")) {
|
|
928
|
+
db.exec("ALTER TABLE user_teable_global_settings ADD COLUMN base_id TEXT");
|
|
929
|
+
}
|
|
930
|
+
if (!columnNames.has("mirror_mode")) {
|
|
931
|
+
db.exec("ALTER TABLE user_teable_global_settings ADD COLUMN mirror_mode TEXT NOT NULL DEFAULT 'manual'");
|
|
932
|
+
}
|
|
933
|
+
}
|
|
934
|
+
function ensureUserTeableCredentialsSchema(db) {
|
|
935
|
+
if (!tableExists(db, "user_teable_credentials")) {
|
|
936
|
+
db.exec(`
|
|
937
|
+
CREATE TABLE user_teable_credentials (
|
|
938
|
+
user_id TEXT NOT NULL,
|
|
939
|
+
auth_ref TEXT NOT NULL,
|
|
940
|
+
token_ciphertext TEXT NOT NULL,
|
|
941
|
+
created_at TEXT NOT NULL,
|
|
942
|
+
updated_at TEXT NOT NULL,
|
|
943
|
+
PRIMARY KEY (user_id, auth_ref),
|
|
944
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
945
|
+
)
|
|
946
|
+
`);
|
|
947
|
+
}
|
|
948
|
+
db.exec(`
|
|
949
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_credentials_user_updated_at
|
|
950
|
+
ON user_teable_credentials(user_id, updated_at DESC)
|
|
951
|
+
`);
|
|
952
|
+
}
|
|
953
|
+
function ensureUserTeableWorkbenchSyncConfigsSchema(db) {
|
|
954
|
+
if (!tableExists(db, "user_teable_workbench_sync_configs")) {
|
|
955
|
+
db.exec(`
|
|
956
|
+
CREATE TABLE user_teable_workbench_sync_configs (
|
|
957
|
+
config_id TEXT PRIMARY KEY,
|
|
958
|
+
user_id TEXT NOT NULL,
|
|
959
|
+
source_type TEXT NOT NULL CHECK (source_type IN ('tags', 'sessions', 'todos')),
|
|
960
|
+
enabled INTEGER NOT NULL DEFAULT 0 CHECK (enabled IN (0, 1)),
|
|
961
|
+
scope_json TEXT NOT NULL,
|
|
962
|
+
target_table_id TEXT,
|
|
963
|
+
created_at TEXT NOT NULL,
|
|
964
|
+
updated_at TEXT NOT NULL,
|
|
965
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id),
|
|
966
|
+
UNIQUE (user_id, source_type)
|
|
967
|
+
)
|
|
968
|
+
`);
|
|
969
|
+
db.exec(`
|
|
970
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_workbench_sync_configs_user
|
|
971
|
+
ON user_teable_workbench_sync_configs(user_id, source_type)
|
|
972
|
+
`);
|
|
973
|
+
return;
|
|
974
|
+
}
|
|
975
|
+
db.exec(`
|
|
976
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_workbench_sync_configs_user
|
|
977
|
+
ON user_teable_workbench_sync_configs(user_id, source_type)
|
|
978
|
+
`);
|
|
979
|
+
}
|
|
980
|
+
function ensureUserTeableMirrorTableBindingsSchema(db) {
|
|
981
|
+
if (!tableExists(db, "user_teable_mirror_table_bindings")) {
|
|
982
|
+
db.exec(`
|
|
983
|
+
CREATE TABLE user_teable_mirror_table_bindings (
|
|
984
|
+
binding_id TEXT PRIMARY KEY,
|
|
985
|
+
user_id TEXT NOT NULL,
|
|
986
|
+
mirror_type TEXT NOT NULL CHECK (mirror_type IN ('tags', 'sessions', 'todos')),
|
|
987
|
+
table_id TEXT NOT NULL,
|
|
988
|
+
table_name TEXT NOT NULL,
|
|
989
|
+
read_only_mode TEXT NOT NULL CHECK (read_only_mode IN ('role_based', 'matrix_based', 'unknown')),
|
|
990
|
+
last_synced_at TEXT,
|
|
991
|
+
created_at TEXT NOT NULL,
|
|
992
|
+
updated_at TEXT NOT NULL,
|
|
993
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id),
|
|
994
|
+
UNIQUE (user_id, mirror_type)
|
|
995
|
+
)
|
|
996
|
+
`);
|
|
997
|
+
}
|
|
998
|
+
db.exec(`
|
|
999
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_mirror_table_bindings_user
|
|
1000
|
+
ON user_teable_mirror_table_bindings(user_id, mirror_type)
|
|
1001
|
+
`);
|
|
1002
|
+
}
|
|
1003
|
+
function ensureUserTeableMirrorRecordMappingsSchema(db) {
|
|
1004
|
+
if (!tableExists(db, "user_teable_mirror_record_mappings")) {
|
|
1005
|
+
db.exec(`
|
|
1006
|
+
CREATE TABLE user_teable_mirror_record_mappings (
|
|
1007
|
+
mapping_id TEXT PRIMARY KEY,
|
|
1008
|
+
user_id TEXT NOT NULL,
|
|
1009
|
+
mirror_type TEXT NOT NULL CHECK (mirror_type IN ('tags', 'sessions', 'todos')),
|
|
1010
|
+
local_id TEXT NOT NULL,
|
|
1011
|
+
teable_record_id TEXT NOT NULL,
|
|
1012
|
+
fingerprint TEXT NOT NULL,
|
|
1013
|
+
last_synced_at TEXT NOT NULL,
|
|
1014
|
+
deleted_at TEXT,
|
|
1015
|
+
created_at TEXT NOT NULL,
|
|
1016
|
+
updated_at TEXT NOT NULL,
|
|
1017
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id),
|
|
1018
|
+
UNIQUE (user_id, mirror_type, local_id)
|
|
1019
|
+
)
|
|
1020
|
+
`);
|
|
1021
|
+
}
|
|
1022
|
+
db.exec(`
|
|
1023
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_mirror_record_mappings_user
|
|
1024
|
+
ON user_teable_mirror_record_mappings(user_id, mirror_type, updated_at DESC)
|
|
1025
|
+
`);
|
|
1026
|
+
}
|
|
1027
|
+
function ensureUserTeableFormBindingsSchema(db) {
|
|
1028
|
+
if (!tableExists(db, "user_teable_form_bindings")) {
|
|
1029
|
+
db.exec(`
|
|
1030
|
+
CREATE TABLE user_teable_form_bindings (
|
|
1031
|
+
form_binding_id TEXT PRIMARY KEY,
|
|
1032
|
+
user_id TEXT NOT NULL,
|
|
1033
|
+
workspace_id TEXT NOT NULL,
|
|
1034
|
+
source_workspace_ids_json TEXT NOT NULL DEFAULT '[]',
|
|
1035
|
+
table_id TEXT NOT NULL,
|
|
1036
|
+
view_id TEXT NOT NULL,
|
|
1037
|
+
name TEXT NOT NULL,
|
|
1038
|
+
linked_mirror_types_json TEXT NOT NULL,
|
|
1039
|
+
teable_table_id TEXT NOT NULL DEFAULT '',
|
|
1040
|
+
teable_view_id TEXT NOT NULL DEFAULT '',
|
|
1041
|
+
teable_share_id TEXT,
|
|
1042
|
+
teable_form_name TEXT NOT NULL DEFAULT '',
|
|
1043
|
+
display_name TEXT NOT NULL DEFAULT '',
|
|
1044
|
+
open_mode TEXT NOT NULL DEFAULT 'embed' CHECK (open_mode IN ('embed', 'external')),
|
|
1045
|
+
enabled INTEGER NOT NULL DEFAULT 1 CHECK (enabled IN (0, 1)),
|
|
1046
|
+
inbound_action TEXT NOT NULL CHECK (inbound_action IN ('create_todo', 'append_session_context', 'request_tag_assignment', 'none')),
|
|
1047
|
+
open_url TEXT NOT NULL,
|
|
1048
|
+
created_at TEXT NOT NULL,
|
|
1049
|
+
updated_at TEXT NOT NULL,
|
|
1050
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
1051
|
+
)
|
|
1052
|
+
`);
|
|
1053
|
+
}
|
|
1054
|
+
const columns = db
|
|
1055
|
+
.prepare("PRAGMA table_info(user_teable_form_bindings)")
|
|
1056
|
+
.all();
|
|
1057
|
+
const columnNames = new Set(columns.map((item) => item.name ?? ""));
|
|
1058
|
+
if (!columnNames.has("source_workspace_ids_json")) {
|
|
1059
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN source_workspace_ids_json TEXT NOT NULL DEFAULT '[]'");
|
|
1060
|
+
db.exec(`
|
|
1061
|
+
UPDATE user_teable_form_bindings
|
|
1062
|
+
SET source_workspace_ids_json = json_array(workspace_id)
|
|
1063
|
+
WHERE COALESCE(TRIM(source_workspace_ids_json), '') = ''
|
|
1064
|
+
OR source_workspace_ids_json = '[]'
|
|
1065
|
+
`);
|
|
1066
|
+
}
|
|
1067
|
+
if (!columnNames.has("teable_table_id")) {
|
|
1068
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN teable_table_id TEXT NOT NULL DEFAULT ''");
|
|
1069
|
+
db.exec("UPDATE user_teable_form_bindings SET teable_table_id = table_id WHERE COALESCE(TRIM(teable_table_id), '') = ''");
|
|
1070
|
+
}
|
|
1071
|
+
if (!columnNames.has("teable_view_id")) {
|
|
1072
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN teable_view_id TEXT NOT NULL DEFAULT ''");
|
|
1073
|
+
db.exec("UPDATE user_teable_form_bindings SET teable_view_id = view_id WHERE COALESCE(TRIM(teable_view_id), '') = ''");
|
|
1074
|
+
}
|
|
1075
|
+
if (!columnNames.has("teable_share_id")) {
|
|
1076
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN teable_share_id TEXT");
|
|
1077
|
+
}
|
|
1078
|
+
if (!columnNames.has("teable_form_name")) {
|
|
1079
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN teable_form_name TEXT NOT NULL DEFAULT ''");
|
|
1080
|
+
db.exec("UPDATE user_teable_form_bindings SET teable_form_name = name WHERE COALESCE(TRIM(teable_form_name), '') = ''");
|
|
1081
|
+
}
|
|
1082
|
+
if (!columnNames.has("display_name")) {
|
|
1083
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN display_name TEXT NOT NULL DEFAULT ''");
|
|
1084
|
+
db.exec("UPDATE user_teable_form_bindings SET display_name = name WHERE COALESCE(TRIM(display_name), '') = ''");
|
|
1085
|
+
}
|
|
1086
|
+
if (!columnNames.has("open_mode")) {
|
|
1087
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN open_mode TEXT NOT NULL DEFAULT 'embed'");
|
|
1088
|
+
}
|
|
1089
|
+
if (!columnNames.has("enabled")) {
|
|
1090
|
+
db.exec("ALTER TABLE user_teable_form_bindings ADD COLUMN enabled INTEGER NOT NULL DEFAULT 1");
|
|
1091
|
+
}
|
|
1092
|
+
db.exec(`
|
|
1093
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_form_bindings_user_workspace
|
|
1094
|
+
ON user_teable_form_bindings(user_id, workspace_id, updated_at DESC)
|
|
1095
|
+
`);
|
|
1096
|
+
db.exec(`
|
|
1097
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_form_bindings_user_enabled
|
|
1098
|
+
ON user_teable_form_bindings(user_id, enabled, updated_at DESC)
|
|
1099
|
+
`);
|
|
1100
|
+
}
|
|
1101
|
+
function ensureUserTeableFieldMappingsSchema(db) {
|
|
1102
|
+
if (!tableExists(db, "user_teable_field_mappings")) {
|
|
1103
|
+
db.exec(`
|
|
1104
|
+
CREATE TABLE user_teable_field_mappings (
|
|
1105
|
+
mapping_id TEXT PRIMARY KEY,
|
|
1106
|
+
user_id TEXT NOT NULL,
|
|
1107
|
+
config_id TEXT NOT NULL,
|
|
1108
|
+
source_type TEXT NOT NULL CHECK (source_type IN ('tags', 'sessions', 'todos')),
|
|
1109
|
+
target_table_id TEXT NOT NULL,
|
|
1110
|
+
items_json TEXT NOT NULL,
|
|
1111
|
+
created_at TEXT NOT NULL,
|
|
1112
|
+
updated_at TEXT NOT NULL,
|
|
1113
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id),
|
|
1114
|
+
UNIQUE (user_id, config_id)
|
|
1115
|
+
)
|
|
1116
|
+
`);
|
|
1117
|
+
}
|
|
1118
|
+
db.exec(`
|
|
1119
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_field_mappings_user
|
|
1120
|
+
ON user_teable_field_mappings(user_id, source_type, updated_at DESC)
|
|
1121
|
+
`);
|
|
1122
|
+
}
|
|
1123
|
+
function ensureUserTeableInboundRecordMappingsSchema(db) {
|
|
1124
|
+
if (!tableExists(db, "user_teable_inbound_record_mappings")) {
|
|
1125
|
+
db.exec(`
|
|
1126
|
+
CREATE TABLE user_teable_inbound_record_mappings (
|
|
1127
|
+
mapping_id TEXT PRIMARY KEY,
|
|
1128
|
+
user_id TEXT NOT NULL,
|
|
1129
|
+
form_binding_id TEXT NOT NULL,
|
|
1130
|
+
teable_record_id TEXT NOT NULL,
|
|
1131
|
+
teable_record_fingerprint TEXT NOT NULL,
|
|
1132
|
+
inbound_action TEXT NOT NULL CHECK (inbound_action IN ('create_todo', 'append_session_context', 'request_tag_assignment', 'none')),
|
|
1133
|
+
target_local_id TEXT,
|
|
1134
|
+
status TEXT NOT NULL CHECK (status IN ('applied', 'skipped', 'failed')),
|
|
1135
|
+
error_detail TEXT,
|
|
1136
|
+
last_synced_at TEXT NOT NULL,
|
|
1137
|
+
created_at TEXT NOT NULL,
|
|
1138
|
+
updated_at TEXT NOT NULL,
|
|
1139
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id),
|
|
1140
|
+
UNIQUE (user_id, form_binding_id, teable_record_id)
|
|
1141
|
+
)
|
|
1142
|
+
`);
|
|
1143
|
+
}
|
|
1144
|
+
db.exec(`
|
|
1145
|
+
CREATE INDEX IF NOT EXISTS idx_user_teable_inbound_record_mappings_user_form
|
|
1146
|
+
ON user_teable_inbound_record_mappings(user_id, form_binding_id, updated_at DESC)
|
|
1147
|
+
`);
|
|
1148
|
+
}
|
|
1149
|
+
function migrateLegacyAffairsLibrarySettings(db) {
|
|
1150
|
+
if (!tableExists(db, "workspace_navigation_states") || !tableExists(db, "user_affairs_library_settings")) {
|
|
1151
|
+
return;
|
|
1152
|
+
}
|
|
1153
|
+
db.exec(`
|
|
1154
|
+
INSERT INTO user_affairs_library_settings (
|
|
1155
|
+
user_id,
|
|
1156
|
+
root_dir,
|
|
1157
|
+
enabled,
|
|
1158
|
+
favorites_json,
|
|
1159
|
+
last_workspace_id,
|
|
1160
|
+
created_at,
|
|
1161
|
+
updated_at
|
|
1162
|
+
)
|
|
1163
|
+
SELECT
|
|
1164
|
+
legacy.user_id,
|
|
1165
|
+
legacy.affairs_library_root_path,
|
|
1166
|
+
legacy.affairs_library_enabled,
|
|
1167
|
+
legacy.affairs_library_favorites_json,
|
|
1168
|
+
legacy.workspace_id,
|
|
1169
|
+
legacy.updated_at,
|
|
1170
|
+
legacy.updated_at
|
|
1171
|
+
FROM (
|
|
1172
|
+
SELECT
|
|
1173
|
+
workspace_id,
|
|
1174
|
+
user_id,
|
|
1175
|
+
affairs_library_root_path,
|
|
1176
|
+
affairs_library_enabled,
|
|
1177
|
+
affairs_library_favorites_json,
|
|
1178
|
+
updated_at,
|
|
1179
|
+
ROW_NUMBER() OVER (
|
|
1180
|
+
PARTITION BY user_id
|
|
1181
|
+
ORDER BY datetime(updated_at) DESC
|
|
1182
|
+
) AS row_number
|
|
1183
|
+
FROM workspace_navigation_states
|
|
1184
|
+
WHERE affairs_library_root_path IS NOT NULL
|
|
1185
|
+
AND TRIM(affairs_library_root_path) <> ''
|
|
1186
|
+
) AS legacy
|
|
1187
|
+
WHERE legacy.row_number = 1
|
|
1188
|
+
AND NOT EXISTS (
|
|
1189
|
+
SELECT 1
|
|
1190
|
+
FROM user_affairs_library_settings AS current
|
|
1191
|
+
WHERE current.user_id = legacy.user_id
|
|
1192
|
+
)
|
|
1193
|
+
`);
|
|
658
1194
|
}
|
|
659
1195
|
function ensureManagedSkillScopeSchema(db) {
|
|
660
1196
|
if (!tableExists(db, "managed_skills")) {
|
|
@@ -912,125 +1448,6 @@ function ensureAssistantAutomationSchema(db) {
|
|
|
912
1448
|
ON assistant_automation_runs(automation_id, created_at DESC);
|
|
913
1449
|
`);
|
|
914
1450
|
}
|
|
915
|
-
function ensureAssistantSandboxSchema(db) {
|
|
916
|
-
const columns = db
|
|
917
|
-
.prepare("PRAGMA table_info(assistant_sandboxes)")
|
|
918
|
-
.all();
|
|
919
|
-
if (columns.length > 0) {
|
|
920
|
-
const columnNames = new Set(columns.map((column) => column.name));
|
|
921
|
-
const tableSql = db
|
|
922
|
-
.prepare("SELECT sql FROM sqlite_master WHERE type = 'table' AND name = 'assistant_sandboxes'")
|
|
923
|
-
.get()?.sql ?? "";
|
|
924
|
-
const needsStatusConstraintRebuild = !tableSql.includes("'orphaned'");
|
|
925
|
-
if (needsStatusConstraintRebuild) {
|
|
926
|
-
const hasControlSessionId = columnNames.has("control_session_id");
|
|
927
|
-
const rebuild = db.transaction(() => {
|
|
928
|
-
db.exec("ALTER TABLE assistant_sandboxes RENAME TO assistant_sandboxes_legacy");
|
|
929
|
-
db.exec(`
|
|
930
|
-
CREATE TABLE assistant_sandboxes (
|
|
931
|
-
id TEXT PRIMARY KEY,
|
|
932
|
-
user_id TEXT NOT NULL,
|
|
933
|
-
workspace_id TEXT NOT NULL UNIQUE,
|
|
934
|
-
control_session_id TEXT,
|
|
935
|
-
title TEXT NOT NULL,
|
|
936
|
-
description TEXT,
|
|
937
|
-
source_kind TEXT NOT NULL CHECK (source_kind IN ('blank', 'clone')),
|
|
938
|
-
source_ref TEXT,
|
|
939
|
-
visibility TEXT NOT NULL CHECK (visibility IN ('assistant_only', 'pinned')),
|
|
940
|
-
status TEXT NOT NULL CHECK (status IN ('active', 'archived', 'expired', 'orphaned', 'deleted')),
|
|
941
|
-
purpose TEXT,
|
|
942
|
-
expires_at TEXT,
|
|
943
|
-
promoted_at TEXT,
|
|
944
|
-
created_at TEXT NOT NULL,
|
|
945
|
-
updated_at TEXT NOT NULL,
|
|
946
|
-
FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
|
|
947
|
-
FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
948
|
-
FOREIGN KEY (control_session_id) REFERENCES butler_control_sessions(id) ON DELETE SET NULL
|
|
949
|
-
);
|
|
950
|
-
`);
|
|
951
|
-
db.exec(`
|
|
952
|
-
INSERT INTO assistant_sandboxes (
|
|
953
|
-
id,
|
|
954
|
-
user_id,
|
|
955
|
-
workspace_id,
|
|
956
|
-
control_session_id,
|
|
957
|
-
title,
|
|
958
|
-
description,
|
|
959
|
-
source_kind,
|
|
960
|
-
source_ref,
|
|
961
|
-
visibility,
|
|
962
|
-
status,
|
|
963
|
-
purpose,
|
|
964
|
-
expires_at,
|
|
965
|
-
promoted_at,
|
|
966
|
-
created_at,
|
|
967
|
-
updated_at
|
|
968
|
-
)
|
|
969
|
-
SELECT
|
|
970
|
-
id,
|
|
971
|
-
user_id,
|
|
972
|
-
workspace_id,
|
|
973
|
-
${hasControlSessionId ? "control_session_id" : "NULL"},
|
|
974
|
-
title,
|
|
975
|
-
description,
|
|
976
|
-
source_kind,
|
|
977
|
-
source_ref,
|
|
978
|
-
visibility,
|
|
979
|
-
status,
|
|
980
|
-
purpose,
|
|
981
|
-
expires_at,
|
|
982
|
-
promoted_at,
|
|
983
|
-
created_at,
|
|
984
|
-
updated_at
|
|
985
|
-
FROM assistant_sandboxes_legacy;
|
|
986
|
-
`);
|
|
987
|
-
db.exec("DROP TABLE assistant_sandboxes_legacy");
|
|
988
|
-
});
|
|
989
|
-
rebuild();
|
|
990
|
-
}
|
|
991
|
-
else if (!columnNames.has("control_session_id")) {
|
|
992
|
-
db.exec("ALTER TABLE assistant_sandboxes ADD COLUMN control_session_id TEXT");
|
|
993
|
-
}
|
|
994
|
-
db.exec(`
|
|
995
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_user_status
|
|
996
|
-
ON assistant_sandboxes(user_id, status, updated_at DESC);
|
|
997
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_workspace
|
|
998
|
-
ON assistant_sandboxes(workspace_id, status, updated_at DESC);
|
|
999
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_control_session
|
|
1000
|
-
ON assistant_sandboxes(control_session_id, status, updated_at DESC);
|
|
1001
|
-
`);
|
|
1002
|
-
return;
|
|
1003
|
-
}
|
|
1004
|
-
db.exec(`
|
|
1005
|
-
CREATE TABLE IF NOT EXISTS assistant_sandboxes (
|
|
1006
|
-
id TEXT PRIMARY KEY,
|
|
1007
|
-
user_id TEXT NOT NULL,
|
|
1008
|
-
workspace_id TEXT NOT NULL UNIQUE,
|
|
1009
|
-
control_session_id TEXT,
|
|
1010
|
-
title TEXT NOT NULL,
|
|
1011
|
-
description TEXT,
|
|
1012
|
-
source_kind TEXT NOT NULL CHECK (source_kind IN ('blank', 'clone')),
|
|
1013
|
-
source_ref TEXT,
|
|
1014
|
-
visibility TEXT NOT NULL CHECK (visibility IN ('assistant_only', 'pinned')),
|
|
1015
|
-
status TEXT NOT NULL CHECK (status IN ('active', 'archived', 'expired', 'orphaned', 'deleted')),
|
|
1016
|
-
purpose TEXT,
|
|
1017
|
-
expires_at TEXT,
|
|
1018
|
-
promoted_at TEXT,
|
|
1019
|
-
created_at TEXT NOT NULL,
|
|
1020
|
-
updated_at TEXT NOT NULL,
|
|
1021
|
-
FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
|
|
1022
|
-
FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE,
|
|
1023
|
-
FOREIGN KEY (control_session_id) REFERENCES butler_control_sessions(id) ON DELETE SET NULL
|
|
1024
|
-
);
|
|
1025
|
-
|
|
1026
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_user_status
|
|
1027
|
-
ON assistant_sandboxes(user_id, status, updated_at DESC);
|
|
1028
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_workspace
|
|
1029
|
-
ON assistant_sandboxes(workspace_id, status, updated_at DESC);
|
|
1030
|
-
CREATE INDEX IF NOT EXISTS idx_assistant_sandboxes_control_session
|
|
1031
|
-
ON assistant_sandboxes(control_session_id, status, updated_at DESC);
|
|
1032
|
-
`);
|
|
1033
|
-
}
|
|
1034
1451
|
function ensureVerificationRunSchema(db) {
|
|
1035
1452
|
const verificationRunSql = readTableSql(db, "verification_runs");
|
|
1036
1453
|
if (!verificationRunSql.includes("status IN ('queued', 'running', 'passed', 'failed', 'skipped')")) {
|
|
@@ -1121,6 +1538,21 @@ function ensureDocumentTemplateSchema(db) {
|
|
|
1121
1538
|
db.exec("ALTER TABLE document_templates ADD COLUMN template_source_path TEXT");
|
|
1122
1539
|
}
|
|
1123
1540
|
}
|
|
1541
|
+
function ensureOnlyOfficeSettingsSchema(db) {
|
|
1542
|
+
if (!tableExists(db, "office_onlyoffice_settings")) {
|
|
1543
|
+
return;
|
|
1544
|
+
}
|
|
1545
|
+
const columns = db
|
|
1546
|
+
.prepare("PRAGMA table_info(office_onlyoffice_settings)")
|
|
1547
|
+
.all();
|
|
1548
|
+
const columnNames = new Set(columns.map((column) => column.name));
|
|
1549
|
+
if (!columnNames.has("user_display_name")) {
|
|
1550
|
+
db.exec("ALTER TABLE office_onlyoffice_settings ADD COLUMN user_display_name TEXT");
|
|
1551
|
+
}
|
|
1552
|
+
if (!columnNames.has("user_avatar_url")) {
|
|
1553
|
+
db.exec("ALTER TABLE office_onlyoffice_settings ADD COLUMN user_avatar_url TEXT");
|
|
1554
|
+
}
|
|
1555
|
+
}
|
|
1124
1556
|
function ensureOpsTargetWorkspaceSchema(db) {
|
|
1125
1557
|
if (!tableExists(db, "ops_targets")) {
|
|
1126
1558
|
return;
|
|
@@ -1526,6 +1958,9 @@ function ensureSessionRelationColumns(db) {
|
|
|
1526
1958
|
.prepare("PRAGMA table_info(session_indices)")
|
|
1527
1959
|
.all();
|
|
1528
1960
|
const columnNames = new Set(columns.map((column) => column.name));
|
|
1961
|
+
if (!columnNames.has("session_visibility")) {
|
|
1962
|
+
db.exec("ALTER TABLE session_indices ADD COLUMN session_visibility TEXT NOT NULL DEFAULT 'workspace' CHECK (session_visibility IN ('workspace', 'affairs_lightweight'))");
|
|
1963
|
+
}
|
|
1529
1964
|
if (!columnNames.has("parent_session_id")) {
|
|
1530
1965
|
db.exec("ALTER TABLE session_indices ADD COLUMN parent_session_id TEXT");
|
|
1531
1966
|
}
|
|
@@ -1570,6 +2005,81 @@ function ensureSessionChangedFileTables(db) {
|
|
|
1570
2005
|
);
|
|
1571
2006
|
`);
|
|
1572
2007
|
}
|
|
2008
|
+
function ensureAffairsAssistantSessionSnapshotSchema(db) {
|
|
2009
|
+
const currentSql = readTableSql(db, "affairs_assistant_session_snapshots");
|
|
2010
|
+
if (!currentSql) {
|
|
2011
|
+
db.exec(`
|
|
2012
|
+
CREATE TABLE affairs_assistant_session_snapshots (
|
|
2013
|
+
workspace_id TEXT NOT NULL,
|
|
2014
|
+
user_id TEXT NOT NULL,
|
|
2015
|
+
project_id TEXT,
|
|
2016
|
+
project_workspace_id TEXT,
|
|
2017
|
+
agent_workspace_path TEXT,
|
|
2018
|
+
sessions_json TEXT NOT NULL,
|
|
2019
|
+
updated_at TEXT NOT NULL,
|
|
2020
|
+
PRIMARY KEY (workspace_id, user_id),
|
|
2021
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
2022
|
+
);
|
|
2023
|
+
|
|
2024
|
+
CREATE INDEX IF NOT EXISTS idx_affairs_assistant_session_snapshots_user_id
|
|
2025
|
+
ON affairs_assistant_session_snapshots(user_id, updated_at DESC);
|
|
2026
|
+
`);
|
|
2027
|
+
return;
|
|
2028
|
+
}
|
|
2029
|
+
if (!currentSql.includes("FOREIGN KEY (workspace_id) REFERENCES workspaces(id)")) {
|
|
2030
|
+
db.exec(`
|
|
2031
|
+
CREATE INDEX IF NOT EXISTS idx_affairs_assistant_session_snapshots_user_id
|
|
2032
|
+
ON affairs_assistant_session_snapshots(user_id, updated_at DESC);
|
|
2033
|
+
`);
|
|
2034
|
+
return;
|
|
2035
|
+
}
|
|
2036
|
+
db.exec(`
|
|
2037
|
+
PRAGMA foreign_keys = OFF;
|
|
2038
|
+
|
|
2039
|
+
DROP TABLE IF EXISTS affairs_assistant_session_snapshots_next;
|
|
2040
|
+
|
|
2041
|
+
CREATE TABLE affairs_assistant_session_snapshots_next (
|
|
2042
|
+
workspace_id TEXT NOT NULL,
|
|
2043
|
+
user_id TEXT NOT NULL,
|
|
2044
|
+
project_id TEXT,
|
|
2045
|
+
project_workspace_id TEXT,
|
|
2046
|
+
agent_workspace_path TEXT,
|
|
2047
|
+
sessions_json TEXT NOT NULL,
|
|
2048
|
+
updated_at TEXT NOT NULL,
|
|
2049
|
+
PRIMARY KEY (workspace_id, user_id),
|
|
2050
|
+
FOREIGN KEY (user_id) REFERENCES auth_users(id)
|
|
2051
|
+
);
|
|
2052
|
+
|
|
2053
|
+
INSERT INTO affairs_assistant_session_snapshots_next (
|
|
2054
|
+
workspace_id,
|
|
2055
|
+
user_id,
|
|
2056
|
+
project_id,
|
|
2057
|
+
project_workspace_id,
|
|
2058
|
+
agent_workspace_path,
|
|
2059
|
+
sessions_json,
|
|
2060
|
+
updated_at
|
|
2061
|
+
)
|
|
2062
|
+
SELECT
|
|
2063
|
+
workspace_id,
|
|
2064
|
+
user_id,
|
|
2065
|
+
project_id,
|
|
2066
|
+
project_workspace_id,
|
|
2067
|
+
agent_workspace_path,
|
|
2068
|
+
sessions_json,
|
|
2069
|
+
updated_at
|
|
2070
|
+
FROM affairs_assistant_session_snapshots;
|
|
2071
|
+
|
|
2072
|
+
DROP TABLE affairs_assistant_session_snapshots;
|
|
2073
|
+
|
|
2074
|
+
ALTER TABLE affairs_assistant_session_snapshots_next
|
|
2075
|
+
RENAME TO affairs_assistant_session_snapshots;
|
|
2076
|
+
|
|
2077
|
+
PRAGMA foreign_keys = ON;
|
|
2078
|
+
|
|
2079
|
+
CREATE INDEX IF NOT EXISTS idx_affairs_assistant_session_snapshots_user_id
|
|
2080
|
+
ON affairs_assistant_session_snapshots(user_id, updated_at DESC);
|
|
2081
|
+
`);
|
|
2082
|
+
}
|
|
1573
2083
|
function ensureTerminalCommandTemplatePortColumn(db) {
|
|
1574
2084
|
const columns = db
|
|
1575
2085
|
.prepare("PRAGMA table_info(terminal_command_templates)")
|