@jingyi0605/codingns 0.9.0 → 0.9.6
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 +75 -0
- package/dist/public/assets/{AdaptiveButlerPage-B17QiMyT.js → AdaptiveButlerPage-khJQh6a_.js} +2 -2
- package/dist/public/assets/{App-CFBwDUNA.js → App-If9gThKM.js} +6 -6
- package/dist/public/assets/{BootstrapPage-W5wU3BPh.js → BootstrapPage-DcfYtoLC.js} +1 -1
- package/dist/public/assets/{ConversationPage-DQLX1bUh.js → ConversationPage-Bfb7GLTM.js} +1 -1
- package/dist/public/assets/{DesktopDetachPreviewPage-DTPeuAW-.js → DesktopDetachPreviewPage-CXUPMcBz.js} +1 -1
- package/dist/public/assets/{DesktopModal-6ii53_Y9.js → DesktopModal-bMdI1jEe.js} +1 -1
- package/dist/public/assets/DesktopWindowPage-D1xwgS-7.js +2 -0
- package/dist/public/assets/FileContextPanel-C4syif3B.js +1 -0
- package/dist/public/assets/GitSidebar-DduL9aTV.js +6 -0
- package/dist/public/assets/MobileCreateSessionSheet-DWPBsEx8.js +1 -0
- package/dist/public/assets/{MobileSheet-opTWyRe1.js → MobileSheet-BXvQPkxt.js} +1 -1
- package/dist/public/assets/{MobileTopHeaderFrame-BbNON3Y4.js → MobileTopHeaderFrame-vdYOyaaB.js} +1 -1
- package/dist/public/assets/{MobileWorkspaceSwitcherHeader-BZEzPeMj.js → MobileWorkspaceSwitcherHeader-DT330cAx.js} +1 -1
- package/dist/public/assets/{PluginAccessOverview-mQDmAljp.js → PluginAccessOverview-C77TeZTK.js} +1 -1
- package/dist/public/assets/{PluginContainerPage-CcxUJpM4.js → PluginContainerPage-DdSwOCw-.js} +1 -1
- package/dist/public/assets/{PluginDetailPage-D5--ACIt.js → PluginDetailPage-BK1yTzvO.js} +1 -1
- package/dist/public/assets/{PluginsListPage-D_oJxYXT.js → PluginsListPage-DAAwSc6W.js} +1 -1
- package/dist/public/assets/{RelayConnectEntryPage-DROxpnkv.js → RelayConnectEntryPage-4Yyo2p8b.js} +1 -1
- package/dist/public/assets/{ServerSettingsModal-CUUOPqSe.js → ServerSettingsModal-C_DEisHs.js} +1 -1
- package/dist/public/assets/{SessionIndexPage-C2Jxh6Gp.js → SessionIndexPage-DyMikN_x.js} +1 -1
- package/dist/public/assets/SettingsPage-CDAVsPr3.js +2 -0
- package/dist/public/assets/TerminalManagerPanel-4OR47vcf.js +1 -0
- package/dist/public/assets/{TerminalPage-CwWyFDj8.js → TerminalPage-Pvx396YX.js} +1 -1
- package/dist/public/assets/{TerminalRuntimeFallbackModal-CSVVbO8r.js → TerminalRuntimeFallbackModal-KvG6k4AQ.js} +1 -1
- package/dist/public/assets/{ToolFilesPage-QBEY8oCf.js → ToolFilesPage-DrYHk0N-.js} +1 -1
- package/dist/public/assets/{ToolGitPage-BKoZ2l9v.js → ToolGitPage-Dz1q-Ns_.js} +1 -1
- package/dist/public/assets/{ToolProcessesPage-BOH0ib4G.js → ToolProcessesPage-CRhphOmM.js} +1 -1
- package/dist/public/assets/{ToolsHomePage-BcMZ3BCQ.js → ToolsHomePage-BJSDLR6T.js} +1 -1
- package/dist/public/assets/{WorkbenchLandingPage-B5zoppEl.js → WorkbenchLandingPage-BlkxdOLC.js} +1 -1
- package/dist/public/assets/WorkbenchLayout-D-U7ghT0.js +1022 -0
- package/dist/public/assets/{WorkbenchModal-NGmPgqaE.js → WorkbenchModal-xbx1o6MO.js} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-DyWSCHz_.js +1 -0
- package/dist/public/assets/WorkbenchShellRoute-htbkGbtW.css +1 -0
- package/dist/public/assets/WorkspaceDebugDetailPage-B4ol2_a5.js +1 -0
- package/dist/public/assets/WorkspaceDetailPage-DMakfmHR.js +1 -0
- package/dist/public/assets/WorkspaceHomePage-tmCafatd.js +1 -0
- package/dist/public/assets/{client-runtime-manager-DXbI9K1K.js → client-runtime-manager-Bwau7p1v.js} +1 -1
- package/dist/public/assets/index-DmUJ8tIw.css +1 -0
- package/dist/public/assets/index-_OCkVmfl.js +50 -0
- package/dist/public/assets/{login-direct-candidate-resolver-DkKyFtQJ.js → login-direct-candidate-resolver-CKUQ07IA.js} +1 -1
- package/dist/public/assets/{plugin-permission-copy-CzN269Bk.js → plugin-permission-copy-DIVk5jNp.js} +1 -1
- package/dist/public/assets/{plugins-api-Bv9DHpLF.js → plugins-api-DHJVvPZw.js} +1 -1
- package/dist/public/assets/{preferences-service-D2ISL2Zz.js → preferences-service-CyxxeBmS.js} +1 -1
- package/dist/public/assets/{relay-entry-Bg0OisQy.js → relay-entry-B5GmiOrR.js} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-C8t-CIDF.js → terminal-runtime-meta-DBsyT35T.js} +1 -1
- package/dist/public/assets/useRegisteredDebugTemplates-wCGD2SLW.js +1 -0
- package/dist/public/assets/workbench-navigation-RyUjchbD.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/modules/affairs-indexer/core/src/parser/parser-skip-repository.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +1 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +31 -0
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-write-repository.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +1 -0
- package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +4 -1
- package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +140 -16
- package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js +2 -2
- package/dist/server/modules/affairs-indexer/core/src/sqlite/detect-catalog-schema.js.map +1 -1
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.d.ts +20 -3
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js +3 -3
- package/dist/server/modules/affairs-indexer/core/src/sqlite/open-database.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js +8 -7
- package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
- package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +14 -13
- package/dist/server/modules/assistant-capability/assistant-capability-service.js +27 -24
- package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
- package/dist/server/modules/auth/auth-controller.d.ts +27 -1
- package/dist/server/modules/auth/auth-controller.js +20 -0
- package/dist/server/modules/auth/auth-controller.js.map +1 -1
- package/dist/server/modules/auth/auth-service.d.ts +32 -1
- package/dist/server/modules/auth/auth-service.js +217 -2
- package/dist/server/modules/auth/auth-service.js.map +1 -1
- package/dist/server/modules/bootstrap/bootstrap-service.js +1 -0
- package/dist/server/modules/bootstrap/bootstrap-service.js.map +1 -1
- package/dist/server/modules/butler/assistant-automation-service.d.ts +1 -1
- package/dist/server/modules/butler/assistant-automation-service.js +9 -10
- package/dist/server/modules/butler/assistant-automation-service.js.map +1 -1
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.d.ts +32 -0
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js +93 -0
- package/dist/server/modules/butler/assistant-sandbox-cleanup-scheduler.js.map +1 -0
- package/dist/server/modules/butler/assistant-sandbox-service.d.ts +69 -0
- package/dist/server/modules/butler/assistant-sandbox-service.js +399 -0
- package/dist/server/modules/butler/assistant-sandbox-service.js.map +1 -0
- package/dist/server/modules/butler/butler-action-context-service.js +2 -2
- package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
- package/dist/server/modules/butler/butler-control-action-service.d.ts +5 -5
- package/dist/server/modules/butler/butler-control-action-service.js +19 -19
- package/dist/server/modules/butler/butler-control-action-service.js.map +1 -1
- package/dist/server/modules/butler/butler-control-session-service.d.ts +1 -1
- package/dist/server/modules/butler/butler-control-session-service.js +27 -26
- package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-control-timer-service.js +4 -5
- package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -1
- package/dist/server/modules/butler/butler-controller.d.ts +2 -2
- package/dist/server/modules/butler/butler-controller.js +19 -17
- 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 +5 -5
- package/dist/server/modules/butler/butler-profile-service.js +17 -16
- package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
- package/dist/server/modules/butler/butler-project-service.d.ts +7 -6
- package/dist/server/modules/butler/butler-project-service.js +35 -21
- package/dist/server/modules/butler/butler-project-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-service.d.ts +5 -2
- package/dist/server/modules/butler/butler-session-service.js +51 -27
- package/dist/server/modules/butler/butler-session-service.js.map +1 -1
- package/dist/server/modules/butler/butler-session-summary-service.d.ts +2 -2
- package/dist/server/modules/butler/butler-session-summary-service.js +23 -9
- package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
- package/dist/server/modules/butler/context-aggregator.js +9 -9
- package/dist/server/modules/butler/context-aggregator.js.map +1 -1
- package/dist/server/modules/butler/patrol-execution-service.d.ts +0 -1
- package/dist/server/modules/butler/patrol-execution-service.js +6 -12
- package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
- package/dist/server/modules/channels/wechat-claw-client.d.ts +51 -0
- package/dist/server/modules/channels/wechat-claw-client.js +245 -0
- package/dist/server/modules/channels/wechat-claw-client.js.map +1 -0
- package/dist/server/modules/file/file-controller.d.ts +11 -2
- package/dist/server/modules/file/file-controller.js +404 -17
- package/dist/server/modules/file/file-controller.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/runtime/codingns-workspace-bridge.js +18 -5
- package/dist/server/modules/file/workspace-file-bridge-service.d.ts +9 -0
- package/dist/server/modules/file/workspace-file-bridge-service.js +3 -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/sessions/session-controller.js +3 -3
- package/dist/server/modules/sessions/session-controller.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +8 -3
- package/dist/server/modules/sessions/session-history-service.js +126 -11
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.js +25 -15
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/sessions/session-permission-request-service.js +28 -15
- package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
- package/dist/server/modules/tasks/task-types.d.ts +1 -0
- package/dist/server/modules/tasks/task-types.js +1 -0
- package/dist/server/modules/tasks/task-types.js.map +1 -1
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.d.ts +1 -1
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js +22 -5
- package/dist/server/modules/workbench/affairs-assistant-session-snapshot-service.js.map +1 -1
- package/dist/server/modules/workbench/workbench-controller.d.ts +5 -0
- package/dist/server/modules/workbench/workbench-controller.js +20 -0
- package/dist/server/modules/workbench/workbench-controller.js.map +1 -1
- package/dist/server/modules/workbench/workbench-service.d.ts +6 -6
- package/dist/server/modules/workbench/workbench-service.js +42 -45
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-library-controller.d.ts +8 -0
- package/dist/server/modules/workspace/affairs-library-controller.js +11 -0
- package/dist/server/modules/workspace/affairs-library-controller.js.map +1 -1
- package/dist/server/modules/workspace/affairs-library-preview-link-service.d.ts +6 -0
- package/dist/server/modules/workspace/affairs-library-preview-link-service.js +12 -2
- package/dist/server/modules/workspace/affairs-library-preview-link-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-library-service.d.ts +12 -1
- package/dist/server/modules/workspace/affairs-library-service.js +294 -96
- package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.d.ts +8 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.js +55 -8
- package/dist/server/modules/workspace/affairs-lightweight-session-controller.js.map +1 -1
- package/dist/server/modules/workspace/affairs-lightweight-session-service.d.ts +13 -0
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js +167 -21
- package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
- package/dist/server/modules/workspace/affairs-tag-controller.d.ts +3 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js +5 -0
- package/dist/server/modules/workspace/affairs-tag-controller.js.map +1 -1
- package/dist/server/modules/workspace/affairs-tag-service.d.ts +34 -1
- package/dist/server/modules/workspace/affairs-tag-service.js +568 -4
- package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
- 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 +1 -1
- package/dist/server/modules/workspace/workspace-controller.js +7 -7
- package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
- package/dist/server/modules/workspace/workspace-service.d.ts +7 -0
- package/dist/server/modules/workspace/workspace-service.js +151 -10
- package/dist/server/modules/workspace/workspace-service.js.map +1 -1
- package/dist/server/routes/affairs.d.ts +9 -1
- package/dist/server/routes/affairs.js +120 -1
- package/dist/server/routes/affairs.js.map +1 -1
- package/dist/server/routes/auth.js +6 -0
- package/dist/server/routes/auth.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.js +51 -41
- package/dist/server/routes/workspaces.js.map +1 -1
- package/dist/server/server/create-server.d.ts +18 -0
- package/dist/server/server/create-server.js +99 -7
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/server/start-host.js +20 -0
- package/dist/server/server/start-host.js.map +1 -1
- package/dist/server/shared/http/request-diagnostics.d.ts +56 -0
- package/dist/server/shared/http/request-diagnostics.js +256 -0
- package/dist/server/shared/http/request-diagnostics.js.map +1 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.d.ts +18 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js +191 -0
- package/dist/server/storage/repositories/assistant-sandbox-workspace-repository.js.map +1 -0
- package/dist/server/storage/repositories/auth-token-repository.d.ts +1 -0
- package/dist/server/storage/repositories/auth-token-repository.js +8 -0
- package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
- package/dist/server/storage/repositories/auth-user-repository.d.ts +50 -0
- package/dist/server/storage/repositories/auth-user-repository.js +198 -27
- package/dist/server/storage/repositories/auth-user-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-control-session-repository.d.ts +4 -1
- package/dist/server/storage/repositories/butler-control-session-repository.js +55 -8
- package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-profile-repository.d.ts +2 -1
- package/dist/server/storage/repositories/butler-profile-repository.js +35 -6
- package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-project-repository.d.ts +2 -0
- package/dist/server/storage/repositories/butler-project-repository.js +38 -4
- package/dist/server/storage/repositories/butler-project-repository.js.map +1 -1
- package/dist/server/storage/repositories/butler-session-repository.d.ts +2 -1
- package/dist/server/storage/repositories/butler-session-repository.js +35 -6
- package/dist/server/storage/repositories/butler-session-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-binding-repository.d.ts +3 -0
- package/dist/server/storage/repositories/session-binding-repository.js +70 -2
- package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
- package/dist/server/storage/repositories/session-index-repository.js +7 -5
- package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
- package/dist/server/storage/repositories/user-affairs-library-setting-repository.js +8 -5
- package/dist/server/storage/repositories/user-affairs-library-setting-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-repository.d.ts +3 -1
- package/dist/server/storage/repositories/workspace-repository.js +24 -10
- package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
- package/dist/server/storage/sqlite/client.js +692 -1
- package/dist/server/storage/sqlite/client.js.map +1 -1
- package/dist/server/storage/sqlite/schema.sql +200 -10
- package/dist/server/types/domain.d.ts +114 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +34 -7
- package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +3 -7
- package/node_modules/@codingns/session-sync-core/dist/runtime/claude-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/DesktopWindowPage-D0blSuKd.js +0 -2
- package/dist/public/assets/FileContextPanel-BrKO8Xt6.js +0 -1
- package/dist/public/assets/GitSidebar-BdwiDtOr.js +0 -6
- package/dist/public/assets/MobileCreateSessionSheet-Cx_dBiBb.js +0 -1
- package/dist/public/assets/SettingsPage-BlAZCHsy.js +0 -2
- package/dist/public/assets/TerminalManagerPanel-CjzbiWjl.js +0 -1
- package/dist/public/assets/WorkbenchLayout-CikJBS62.js +0 -1019
- package/dist/public/assets/WorkbenchShellRoute-BbbSOiZw.js +0 -1
- package/dist/public/assets/WorkbenchShellRoute-DT3VMjWD.css +0 -1
- package/dist/public/assets/WorkspaceDebugDetailPage-CVivdPx5.js +0 -1
- package/dist/public/assets/WorkspaceDetailPage-DgOSjscR.js +0 -1
- package/dist/public/assets/WorkspaceHomePage-HPa7M_Vh.js +0 -1
- package/dist/public/assets/index-BxJPQpFM.css +0 -1
- package/dist/public/assets/index-CeXGOT_T.js +0 -50
- package/dist/public/assets/useRegisteredDebugTemplates-Bol3NVfN.js +0 -1
- package/dist/public/assets/workbench-navigation-B7IjRQd8.js +0 -1
|
@@ -156,7 +156,7 @@ export declare class SessionHistoryService {
|
|
|
156
156
|
listWorkspaceSessions(workspaceId: string, userId: string): SessionListItem[];
|
|
157
157
|
getProviderCapabilitiesSnapshot(provider: string): ProviderCapabilities;
|
|
158
158
|
getProviderCapabilities(provider: string, workspaceId?: string | null): Promise<ProviderCapabilities>;
|
|
159
|
-
getSessionCapabilities(sessionId: string): Promise<ProviderCapabilities>;
|
|
159
|
+
getSessionCapabilities(sessionId: string, userId: string): Promise<ProviderCapabilities>;
|
|
160
160
|
private enrichProviderCapabilities;
|
|
161
161
|
private resolveProviderCapabilitiesImmediate;
|
|
162
162
|
private scheduleProviderCapabilityRefresh;
|
|
@@ -167,7 +167,7 @@ export declare class SessionHistoryService {
|
|
|
167
167
|
private assertProviderCapabilityEnabled;
|
|
168
168
|
private assertProviderSendEnabled;
|
|
169
169
|
getSessionContextUsage(sessionId: string): Promise<ContextUsageSnapshot | null>;
|
|
170
|
-
resumeSession(sessionId: string): Promise<{
|
|
170
|
+
resumeSession(sessionId: string, userId: string): Promise<{
|
|
171
171
|
sessionId: string;
|
|
172
172
|
provider: string;
|
|
173
173
|
providerSessionId: string;
|
|
@@ -182,7 +182,7 @@ export declare class SessionHistoryService {
|
|
|
182
182
|
private readForkSourceMessages;
|
|
183
183
|
private assertForkDepthWithinLimit;
|
|
184
184
|
private getSessionForkDepth;
|
|
185
|
-
sendMessage(sessionId: string, content: string, clientRequestId: string | null, permissionMode?: string | null): Promise<SendMessageResult & {
|
|
185
|
+
sendMessage(sessionId: string, userId: string, content: string, clientRequestId: string | null, permissionMode?: string | null): Promise<SendMessageResult & {
|
|
186
186
|
sessionId: string;
|
|
187
187
|
}>;
|
|
188
188
|
subscribeSession(sessionId: string, cursor: string | null, limit: number, onEnvelope: (envelope: SessionHistoryEnvelope) => Promise<void> | void, userId?: string | null): Promise<ProviderSubscription>;
|
|
@@ -198,6 +198,7 @@ export declare class SessionHistoryService {
|
|
|
198
198
|
provider: string;
|
|
199
199
|
providerSessionId: string | null;
|
|
200
200
|
rawStoreRef: string | null;
|
|
201
|
+
userId?: string | null;
|
|
201
202
|
}): void;
|
|
202
203
|
private runDiscoverWorkspaceSessions;
|
|
203
204
|
private readPage;
|
|
@@ -220,6 +221,9 @@ export declare class SessionHistoryService {
|
|
|
220
221
|
private ensureSessionChangedFilesIndexed;
|
|
221
222
|
private persistSessionChangedFiles;
|
|
222
223
|
private getWorkspaceOrThrow;
|
|
224
|
+
private getWorkspaceForUserOrThrow;
|
|
225
|
+
private getBindingForUserOrThrow;
|
|
226
|
+
private resolveWorkspaceOwnerUserId;
|
|
223
227
|
private getSessionListItemOrThrow;
|
|
224
228
|
private findSessionListItem;
|
|
225
229
|
private repairMissingSessionListItem;
|
|
@@ -250,6 +254,7 @@ export declare class SessionHistoryService {
|
|
|
250
254
|
private refreshSessionState;
|
|
251
255
|
private inspectGeminiHistoryActivity;
|
|
252
256
|
private repairCodexDirtyBindingBeforeHistoryRead;
|
|
257
|
+
private repairClaudeEmptyBindingBeforeHistoryRead;
|
|
253
258
|
private resolveLiveActivityObservation;
|
|
254
259
|
private upsertSnapshot;
|
|
255
260
|
private markSessionError;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname, join } from "node:path";
|
|
2
3
|
import { CapabilityService, ClaudeCodeAdapter, CodexAdapter, GeminiAdapter, KimiAdapter, LegnaCodeAdapter, OpenCodeAdapter, ProviderRegistry, SessionSyncService } from "@codingns/session-sync-core";
|
|
3
4
|
import { AppError } from "../../shared/errors/app-error.js";
|
|
4
5
|
import { hashContent } from "../../shared/utils/hash.js";
|
|
@@ -314,6 +315,7 @@ export class SessionHistoryService {
|
|
|
314
315
|
binding = await this.repairCodexDirtyBindingBeforeHistoryRead(resolvedSessionId, userId, binding);
|
|
315
316
|
repairBindingMs = Date.now() - repairStartedAt;
|
|
316
317
|
}
|
|
318
|
+
binding = this.repairClaudeEmptyBindingBeforeHistoryRead(resolvedSessionId, binding);
|
|
317
319
|
const current = this.sessionStatusSnapshotRepository.findBySessionId(resolvedSessionId);
|
|
318
320
|
const safeLimit = clampLimit(limit);
|
|
319
321
|
const knownTotalLookupStartedAt = Date.now();
|
|
@@ -495,8 +497,8 @@ export class SessionHistoryService {
|
|
|
495
497
|
throw mapSessionProviderError(error);
|
|
496
498
|
}
|
|
497
499
|
}
|
|
498
|
-
async getSessionCapabilities(sessionId) {
|
|
499
|
-
const binding = this.
|
|
500
|
+
async getSessionCapabilities(sessionId, userId) {
|
|
501
|
+
const binding = this.getBindingForUserOrThrow(sessionId, userId);
|
|
500
502
|
const workspace = this.getWorkspaceOrThrow(binding.workspaceId);
|
|
501
503
|
const workspacePath = workspace.path;
|
|
502
504
|
return this.capabilityService
|
|
@@ -632,8 +634,8 @@ export class SessionHistoryService {
|
|
|
632
634
|
throw mapSessionProviderError(error);
|
|
633
635
|
}
|
|
634
636
|
}
|
|
635
|
-
async resumeSession(sessionId) {
|
|
636
|
-
const binding = this.
|
|
637
|
+
async resumeSession(sessionId, userId) {
|
|
638
|
+
const binding = this.getBindingForUserOrThrow(sessionId, userId);
|
|
637
639
|
this.assertProviderCapabilityEnabled(binding.provider, "canResumeSession", "当前 provider 不支持继续会话");
|
|
638
640
|
try {
|
|
639
641
|
const result = await this.sessionSyncService.resumeSession(binding.provider, binding.providerSessionId, binding.rawStoreRef);
|
|
@@ -670,7 +672,7 @@ export class SessionHistoryService {
|
|
|
670
672
|
return this.startSessionDirect(input);
|
|
671
673
|
}
|
|
672
674
|
async startSessionDirect(input) {
|
|
673
|
-
const workspace = this.
|
|
675
|
+
const workspace = this.getWorkspaceForUserOrThrow(input.workspaceId, input.userId);
|
|
674
676
|
this.assertProviderCapabilityEnabled(input.provider, "canStartSession", "当前 provider 不支持创建会话");
|
|
675
677
|
const sessionId = createId();
|
|
676
678
|
const providerBinding = this.prepareDirectSessionBinding({
|
|
@@ -687,6 +689,7 @@ export class SessionHistoryService {
|
|
|
687
689
|
const persist = this.db.transaction(() => {
|
|
688
690
|
this.sessionBindingRepository.upsert({
|
|
689
691
|
sessionId,
|
|
692
|
+
userId: input.userId,
|
|
690
693
|
workspaceId: workspace.id,
|
|
691
694
|
provider: result.session.provider,
|
|
692
695
|
providerSessionId: result.session.providerSessionId,
|
|
@@ -745,9 +748,9 @@ export class SessionHistoryService {
|
|
|
745
748
|
}
|
|
746
749
|
}
|
|
747
750
|
async forkSession(input) {
|
|
748
|
-
const binding = this.
|
|
751
|
+
const binding = this.getBindingForUserOrThrow(input.sessionId, input.userId);
|
|
749
752
|
const targetWorkspaceId = input.targetWorkspaceId?.trim() || binding.workspaceId;
|
|
750
|
-
const workspace = this.
|
|
753
|
+
const workspace = this.getWorkspaceForUserOrThrow(targetWorkspaceId, input.userId);
|
|
751
754
|
const targetProvider = input.targetProvider?.trim() || binding.provider;
|
|
752
755
|
this.assertProviderCapabilityEnabled(targetProvider, "canStartSession", "当前 provider 不支持 fork 创建会话");
|
|
753
756
|
const sourceMessageId = input.sourceType === "message"
|
|
@@ -789,6 +792,7 @@ export class SessionHistoryService {
|
|
|
789
792
|
this.db.transaction(() => {
|
|
790
793
|
this.sessionBindingRepository.upsert({
|
|
791
794
|
sessionId,
|
|
795
|
+
userId: input.userId,
|
|
792
796
|
workspaceId: workspace.id,
|
|
793
797
|
provider: result.session.provider,
|
|
794
798
|
providerSessionId: result.session.providerSessionId,
|
|
@@ -1037,8 +1041,8 @@ export class SessionHistoryService {
|
|
|
1037
1041
|
}
|
|
1038
1042
|
return depth;
|
|
1039
1043
|
}
|
|
1040
|
-
async sendMessage(sessionId, content, clientRequestId, permissionMode = null) {
|
|
1041
|
-
const binding = this.
|
|
1044
|
+
async sendMessage(sessionId, userId, content, clientRequestId, permissionMode = null) {
|
|
1045
|
+
const binding = this.getBindingForUserOrThrow(sessionId, userId);
|
|
1042
1046
|
this.assertProviderSendEnabled(binding.provider, "sessionId", "当前 provider 不支持继续发送消息");
|
|
1043
1047
|
const result = await this.sessionSyncService
|
|
1044
1048
|
.sendMessage(binding.provider, binding.providerSessionId, binding.rawStoreRef, content, clientRequestId, permissionMode)
|
|
@@ -1235,6 +1239,7 @@ export class SessionHistoryService {
|
|
|
1235
1239
|
});
|
|
1236
1240
|
this.sessionBindingRepository.upsert({
|
|
1237
1241
|
...binding,
|
|
1242
|
+
userId: input.userId,
|
|
1238
1243
|
rawStoreRef: result.rawStoreRef,
|
|
1239
1244
|
updatedAt: timestamp
|
|
1240
1245
|
});
|
|
@@ -1365,6 +1370,10 @@ export class SessionHistoryService {
|
|
|
1365
1370
|
const currentIndex = this.sessionIndexRepository.findIndexRecordBySessionId(sessionId);
|
|
1366
1371
|
this.sessionBindingRepository.upsert({
|
|
1367
1372
|
sessionId,
|
|
1373
|
+
userId: snapshot.userId
|
|
1374
|
+
?? currentBinding?.userId
|
|
1375
|
+
?? duplicateBinding?.userId
|
|
1376
|
+
?? this.resolveWorkspaceOwnerUserId(workspaceId),
|
|
1368
1377
|
workspaceId,
|
|
1369
1378
|
provider: resolvedSnapshot.provider,
|
|
1370
1379
|
providerSessionId: resolvedSnapshot.providerSessionId,
|
|
@@ -1402,7 +1411,7 @@ export class SessionHistoryService {
|
|
|
1402
1411
|
async runDiscoverWorkspaceSessions(workspaceId, userId, refreshStateMode = "inline", signal) {
|
|
1403
1412
|
const startedAt = Date.now();
|
|
1404
1413
|
const debugStartedAtMs = terminalDebugNowMs();
|
|
1405
|
-
const workspace = this.
|
|
1414
|
+
const workspace = this.getWorkspaceForUserOrThrow(workspaceId, userId);
|
|
1406
1415
|
let discoverDurationMs = 0;
|
|
1407
1416
|
let persistDurationMs = 0;
|
|
1408
1417
|
let persistPass1DurationMs = 0;
|
|
@@ -1470,6 +1479,7 @@ export class SessionHistoryService {
|
|
|
1470
1479
|
: null;
|
|
1471
1480
|
const nextBinding = {
|
|
1472
1481
|
sessionId,
|
|
1482
|
+
userId,
|
|
1473
1483
|
workspaceId: workspace.id,
|
|
1474
1484
|
provider: session.provider,
|
|
1475
1485
|
providerSessionId: session.providerSessionId,
|
|
@@ -2241,6 +2251,31 @@ export class SessionHistoryService {
|
|
|
2241
2251
|
}
|
|
2242
2252
|
return workspace;
|
|
2243
2253
|
}
|
|
2254
|
+
getWorkspaceForUserOrThrow(workspaceId, userId) {
|
|
2255
|
+
const workspace = this.getWorkspaceOrThrow(workspaceId);
|
|
2256
|
+
if (workspace.ownerUserId !== userId) {
|
|
2257
|
+
throw new AppError({
|
|
2258
|
+
statusCode: 404,
|
|
2259
|
+
errorCode: "WORKSPACE_NOT_FOUND",
|
|
2260
|
+
detail: "工作区不存在"
|
|
2261
|
+
});
|
|
2262
|
+
}
|
|
2263
|
+
return workspace;
|
|
2264
|
+
}
|
|
2265
|
+
getBindingForUserOrThrow(sessionId, userId) {
|
|
2266
|
+
const binding = this.sessionBindingRepository.findBySessionIdForUser(sessionId, userId);
|
|
2267
|
+
if (!binding) {
|
|
2268
|
+
throw new AppError({
|
|
2269
|
+
statusCode: 404,
|
|
2270
|
+
errorCode: "SESSION_NOT_FOUND",
|
|
2271
|
+
detail: "session 不存在"
|
|
2272
|
+
});
|
|
2273
|
+
}
|
|
2274
|
+
return this.resolvePendingSessionAliasBinding(binding) ?? binding;
|
|
2275
|
+
}
|
|
2276
|
+
resolveWorkspaceOwnerUserId(workspaceId) {
|
|
2277
|
+
return this.workspaceRepository.findById(workspaceId)?.ownerUserId ?? null;
|
|
2278
|
+
}
|
|
2244
2279
|
getSessionListItemOrThrow(sessionId, userId) {
|
|
2245
2280
|
const canonicalSessionId = this.resolveCanonicalSessionId(sessionId, userId);
|
|
2246
2281
|
const item = this.findSessionListItem(canonicalSessionId, sessionId, userId)
|
|
@@ -2614,6 +2649,7 @@ export class SessionHistoryService {
|
|
|
2614
2649
|
if (!targetBinding) {
|
|
2615
2650
|
this.sessionBindingRepository.upsert({
|
|
2616
2651
|
sessionId: input.targetSessionId,
|
|
2652
|
+
userId: sourceBinding.userId ?? this.resolveWorkspaceOwnerUserId(input.workspaceId),
|
|
2617
2653
|
workspaceId: input.workspaceId,
|
|
2618
2654
|
provider: input.provider,
|
|
2619
2655
|
providerSessionId: buildPendingBindingValue(input.provider, input.targetSessionId),
|
|
@@ -2698,6 +2734,7 @@ export class SessionHistoryService {
|
|
|
2698
2734
|
// 保留旧 session_id 作为 alias,避免前端或 Butler 还拿着旧 id 时直接炸成 SESSION_NOT_FOUND。
|
|
2699
2735
|
this.sessionBindingRepository.upsert({
|
|
2700
2736
|
sessionId: input.sourceSessionId,
|
|
2737
|
+
userId: sourceBinding.userId ?? this.resolveWorkspaceOwnerUserId(sourceBinding.workspaceId),
|
|
2701
2738
|
workspaceId: sourceBinding.workspaceId,
|
|
2702
2739
|
provider: sourceBinding.provider,
|
|
2703
2740
|
providerSessionId: buildAliasBindingValue(input.provider, input.targetSessionId, input.sourceSessionId),
|
|
@@ -3101,6 +3138,21 @@ export class SessionHistoryService {
|
|
|
3101
3138
|
this.codexDirtyBindingRepairStates.set(sessionId, currentState);
|
|
3102
3139
|
});
|
|
3103
3140
|
}
|
|
3141
|
+
repairClaudeEmptyBindingBeforeHistoryRead(sessionId, binding) {
|
|
3142
|
+
if (!shouldRepairClaudeEmptyHistoryBinding(binding)) {
|
|
3143
|
+
return binding;
|
|
3144
|
+
}
|
|
3145
|
+
const repairedRawStoreRef = findBestClaudeHistoryFileNearBinding(binding);
|
|
3146
|
+
if (!repairedRawStoreRef || repairedRawStoreRef === binding.rawStoreRef) {
|
|
3147
|
+
return binding;
|
|
3148
|
+
}
|
|
3149
|
+
this.persistSessionBinding(sessionId, binding.workspaceId, {
|
|
3150
|
+
provider: binding.provider,
|
|
3151
|
+
providerSessionId: binding.providerSessionId,
|
|
3152
|
+
rawStoreRef: repairedRawStoreRef
|
|
3153
|
+
});
|
|
3154
|
+
return this.getBindingOrThrow(sessionId);
|
|
3155
|
+
}
|
|
3104
3156
|
resolveLiveActivityObservation(sessionId) {
|
|
3105
3157
|
for (const resolver of this.liveActivityObservationResolvers) {
|
|
3106
3158
|
const observation = resolver(sessionId);
|
|
@@ -3596,6 +3648,69 @@ function shouldSkipClaudePendingBinding(binding) {
|
|
|
3596
3648
|
function isPendingBindingValue(value) {
|
|
3597
3649
|
return value.trim().toLowerCase().startsWith("pending://");
|
|
3598
3650
|
}
|
|
3651
|
+
function shouldRepairClaudeEmptyHistoryBinding(binding) {
|
|
3652
|
+
if (binding.provider !== "claude-code") {
|
|
3653
|
+
return false;
|
|
3654
|
+
}
|
|
3655
|
+
if (isPendingBindingValue(binding.providerSessionId) || isPendingBindingValue(binding.rawStoreRef)) {
|
|
3656
|
+
return false;
|
|
3657
|
+
}
|
|
3658
|
+
const currentStats = safeStat(binding.rawStoreRef);
|
|
3659
|
+
return !currentStats || currentStats.size === 0;
|
|
3660
|
+
}
|
|
3661
|
+
function findBestClaudeHistoryFileNearBinding(binding) {
|
|
3662
|
+
const providerSessionId = binding.providerSessionId.trim();
|
|
3663
|
+
if (!providerSessionId || isPendingBindingValue(providerSessionId)) {
|
|
3664
|
+
return null;
|
|
3665
|
+
}
|
|
3666
|
+
const candidates = new Set();
|
|
3667
|
+
for (const projectsRoot of collectClaudeProjectsRootsNearBinding(binding)) {
|
|
3668
|
+
for (const candidate of listClaudeSessionCandidates(projectsRoot, providerSessionId)) {
|
|
3669
|
+
candidates.add(candidate);
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3672
|
+
const nonEmptyCandidates = Array.from(candidates)
|
|
3673
|
+
.map((filePath) => ({
|
|
3674
|
+
filePath,
|
|
3675
|
+
stats: safeStat(filePath)
|
|
3676
|
+
}))
|
|
3677
|
+
.filter((candidate) => Boolean(candidate.stats && candidate.stats.size > 0))
|
|
3678
|
+
.sort((left, right) => {
|
|
3679
|
+
if (right.stats.size !== left.stats.size) {
|
|
3680
|
+
return right.stats.size - left.stats.size;
|
|
3681
|
+
}
|
|
3682
|
+
return right.stats.mtimeMs - left.stats.mtimeMs;
|
|
3683
|
+
});
|
|
3684
|
+
return nonEmptyCandidates[0]?.filePath ?? null;
|
|
3685
|
+
}
|
|
3686
|
+
function collectClaudeProjectsRootsNearBinding(binding) {
|
|
3687
|
+
const roots = new Set();
|
|
3688
|
+
const rawStoreRef = binding.rawStoreRef.trim();
|
|
3689
|
+
if (rawStoreRef && !isPendingBindingValue(rawStoreRef)) {
|
|
3690
|
+
// rawStoreRef 通常是 <home>/projects/<workspace-slug>/<session>.jsonl。
|
|
3691
|
+
// 即使 <workspace-slug> 算错了,向上两级仍然能拿到正确的 projects 根。
|
|
3692
|
+
roots.add(dirname(dirname(rawStoreRef)));
|
|
3693
|
+
}
|
|
3694
|
+
const runtimeHomeDir = binding.runtimeHomeDir?.trim() ?? "";
|
|
3695
|
+
if (runtimeHomeDir) {
|
|
3696
|
+
roots.add(join(runtimeHomeDir, "projects"));
|
|
3697
|
+
}
|
|
3698
|
+
return Array.from(roots);
|
|
3699
|
+
}
|
|
3700
|
+
function listClaudeSessionCandidates(projectsRoot, providerSessionId) {
|
|
3701
|
+
if (!projectsRoot || !existsSync(projectsRoot)) {
|
|
3702
|
+
return [];
|
|
3703
|
+
}
|
|
3704
|
+
try {
|
|
3705
|
+
return readdirSync(projectsRoot, { withFileTypes: true })
|
|
3706
|
+
.filter((entry) => entry.isDirectory())
|
|
3707
|
+
.map((entry) => join(projectsRoot, entry.name, `${providerSessionId}.jsonl`))
|
|
3708
|
+
.filter((filePath) => existsSync(filePath));
|
|
3709
|
+
}
|
|
3710
|
+
catch {
|
|
3711
|
+
return [];
|
|
3712
|
+
}
|
|
3713
|
+
}
|
|
3599
3714
|
function isSessionBindingProviderUniqueConflict(error) {
|
|
3600
3715
|
if (!(error instanceof Error)) {
|
|
3601
3716
|
return false;
|