@jingyi0605/codingns 0.9.5 → 0.9.7

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.
Files changed (206) hide show
  1. package/bin/codingns.mjs +75 -0
  2. package/dist/public/assets/{AdaptiveButlerPage-kkJDsnCO.js → AdaptiveButlerPage-DclGPzEx.js} +2 -2
  3. package/dist/public/assets/{App-DrNI9lWA.js → App-BxX5mm9o.js} +6 -6
  4. package/dist/public/assets/{BootstrapPage-QgVH5Mps.js → BootstrapPage-Bl21SsuW.js} +1 -1
  5. package/dist/public/assets/{ConversationPage-DVk8VfIj.js → ConversationPage-CmiVCV0q.js} +7 -7
  6. package/dist/public/assets/{DesktopDetachPreviewPage-BhfP0TpH.js → DesktopDetachPreviewPage-uaOHVsjV.js} +1 -1
  7. package/dist/public/assets/{DesktopModal-DRmDrv0S.js → DesktopModal-BxsogpLf.js} +1 -1
  8. package/dist/public/assets/{DesktopWindowPage-DNbJXnSs.js → DesktopWindowPage-Bubfw1nC.js} +1 -1
  9. package/dist/public/assets/{FileContextPanel---fLO4ve.js → FileContextPanel-DrYWcTkp.js} +1 -1
  10. package/dist/public/assets/{GitSidebar-sXUE0TqT.js → GitSidebar-CQsfJqun.js} +1 -1
  11. package/dist/public/assets/{MobileCreateSessionSheet-BftZ5pvb.js → MobileCreateSessionSheet-CqtmfVNo.js} +1 -1
  12. package/dist/public/assets/{MobileSheet-nw5SCa3N.js → MobileSheet-C5IVmUsO.js} +1 -1
  13. package/dist/public/assets/{MobileTopHeaderFrame-DH_D02Wy.js → MobileTopHeaderFrame-EoBm3-X0.js} +1 -1
  14. package/dist/public/assets/{MobileWorkspaceSwitcherHeader-2K406G5p.js → MobileWorkspaceSwitcherHeader-BC8MMQs_.js} +1 -1
  15. package/dist/public/assets/{PluginAccessOverview-BVJihw3D.js → PluginAccessOverview-CrQiQxxZ.js} +1 -1
  16. package/dist/public/assets/{PluginContainerPage-CR4vStvr.js → PluginContainerPage-_2u-9thM.js} +1 -1
  17. package/dist/public/assets/{PluginDetailPage-CrMX0Mnm.js → PluginDetailPage-F9cKjSCp.js} +1 -1
  18. package/dist/public/assets/{PluginsListPage-FtIL71Yg.js → PluginsListPage-BOhcua_4.js} +1 -1
  19. package/dist/public/assets/{RelayConnectEntryPage-Bt1apX53.js → RelayConnectEntryPage-Ck_uZLzj.js} +1 -1
  20. package/dist/public/assets/{ServerSettingsModal-D-guzPrI.js → ServerSettingsModal-ICd82a_x.js} +1 -1
  21. package/dist/public/assets/SessionIndexPage-Cox6P6dw.js +1 -0
  22. package/dist/public/assets/SettingsPage-BI5cM3j5.js +2 -0
  23. package/dist/public/assets/{TerminalManagerPanel-B5MKGPy-.js → TerminalManagerPanel-DiVhBQhf.js} +1 -1
  24. package/dist/public/assets/{TerminalPage-C2dTNGHK.js → TerminalPage-DUMUO7Ng.js} +1 -1
  25. package/dist/public/assets/{TerminalRuntimeFallbackModal-DAqOxFD8.js → TerminalRuntimeFallbackModal-DGPR_CMh.js} +1 -1
  26. package/dist/public/assets/{ToolFilesPage-IsNwyE6T.js → ToolFilesPage-m88CAp-r.js} +1 -1
  27. package/dist/public/assets/{ToolGitPage-BK1JBERN.js → ToolGitPage-DCYpfTsb.js} +1 -1
  28. package/dist/public/assets/{ToolProcessesPage-DwTYUQCK.js → ToolProcessesPage-Bk5ulsyq.js} +1 -1
  29. package/dist/public/assets/{ToolsHomePage-BLOy7lPg.js → ToolsHomePage-BrTwfjI7.js} +1 -1
  30. package/dist/public/assets/{WorkbenchLandingPage-CqZKR6EA.js → WorkbenchLandingPage-q4AAmdMV.js} +1 -1
  31. package/dist/public/assets/WorkbenchLayout-DD8b-m2G.js +1027 -0
  32. package/dist/public/assets/{WorkbenchModal-BM-OeW-b.js → WorkbenchModal-CsZeLArg.js} +1 -1
  33. package/dist/public/assets/WorkbenchShellRoute-BaiW_vfb.js +1 -0
  34. package/dist/public/assets/WorkbenchShellRoute-CxKYZ6uF.css +1 -0
  35. package/dist/public/assets/{WorkspaceDebugDetailPage-BMsEN5iG.js → WorkspaceDebugDetailPage-BcUUDEyw.js} +1 -1
  36. package/dist/public/assets/WorkspaceDetailPage-zEZ1VARA.js +1 -0
  37. package/dist/public/assets/{WorkspaceHomePage-DQiXKgiP.js → WorkspaceHomePage-CR0rqS4e.js} +1 -1
  38. package/dist/public/assets/{client-runtime-manager-CgPJq21V.js → client-runtime-manager-BgGugw8T.js} +1 -1
  39. package/dist/public/assets/index-CFyk1rgJ.js +50 -0
  40. package/dist/public/assets/index-CrU73EIV.css +1 -0
  41. package/dist/public/assets/{login-direct-candidate-resolver-CGaxAXV8.js → login-direct-candidate-resolver-ty2uOY5y.js} +1 -1
  42. package/dist/public/assets/{plugin-permission-copy-BR9gWy8b.js → plugin-permission-copy-iK3faI3n.js} +1 -1
  43. package/dist/public/assets/{plugins-api-CdCsrG2e.js → plugins-api-CmV7aDGA.js} +1 -1
  44. package/dist/public/assets/{preferences-service-lOhnlxzP.js → preferences-service-BoSmT_ny.js} +1 -1
  45. package/dist/public/assets/{relay-entry-CQpxTS8y.js → relay-entry-C8k5qsl5.js} +1 -1
  46. package/dist/public/assets/styles-BhKoKfQ_.css +1 -0
  47. package/dist/public/assets/{terminal-runtime-meta-oteTx66X.js → terminal-runtime-meta-okQIDzfA.js} +1 -1
  48. package/dist/public/assets/{useRegisteredDebugTemplates-Bu2ykZ6s.js → useRegisteredDebugTemplates-B_vXUtSe.js} +1 -1
  49. package/dist/public/assets/{workbench-navigation-DlgXuFW2.js → workbench-navigation-DoDaQR4z.js} +1 -1
  50. package/dist/public/index.html +2 -2
  51. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.d.ts +1 -0
  52. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js +31 -0
  53. package/dist/server/modules/affairs-indexer/core/src/repositories/catalog-repository.js.map +1 -1
  54. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.d.ts +1 -0
  55. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js +1 -0
  56. package/dist/server/modules/affairs-indexer/core/src/services/dirty/dirty-scope-resolver.js.map +1 -1
  57. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js +4 -1
  58. package/dist/server/modules/affairs-indexer/core/src/services/export/export-builder.js.map +1 -1
  59. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js +140 -16
  60. package/dist/server/modules/affairs-indexer/core/src/services/search/search-index-builder.js.map +1 -1
  61. package/dist/server/modules/assistant-capability/assistant-capability-controller.d.ts +1 -1
  62. package/dist/server/modules/assistant-capability/assistant-capability-controller.js +8 -7
  63. package/dist/server/modules/assistant-capability/assistant-capability-controller.js.map +1 -1
  64. package/dist/server/modules/assistant-capability/assistant-capability-service.d.ts +14 -13
  65. package/dist/server/modules/assistant-capability/assistant-capability-service.js +27 -24
  66. package/dist/server/modules/assistant-capability/assistant-capability-service.js.map +1 -1
  67. package/dist/server/modules/auth/auth-controller.d.ts +27 -1
  68. package/dist/server/modules/auth/auth-controller.js +20 -0
  69. package/dist/server/modules/auth/auth-controller.js.map +1 -1
  70. package/dist/server/modules/auth/auth-service.d.ts +32 -1
  71. package/dist/server/modules/auth/auth-service.js +217 -2
  72. package/dist/server/modules/auth/auth-service.js.map +1 -1
  73. package/dist/server/modules/bootstrap/bootstrap-service.js +1 -0
  74. package/dist/server/modules/bootstrap/bootstrap-service.js.map +1 -1
  75. package/dist/server/modules/butler/assistant-automation-service.d.ts +1 -1
  76. package/dist/server/modules/butler/assistant-automation-service.js +9 -10
  77. package/dist/server/modules/butler/assistant-automation-service.js.map +1 -1
  78. package/dist/server/modules/butler/butler-action-context-service.js +2 -2
  79. package/dist/server/modules/butler/butler-action-context-service.js.map +1 -1
  80. package/dist/server/modules/butler/butler-control-action-service.d.ts +5 -5
  81. package/dist/server/modules/butler/butler-control-action-service.js +19 -19
  82. package/dist/server/modules/butler/butler-control-action-service.js.map +1 -1
  83. package/dist/server/modules/butler/butler-control-session-service.d.ts +1 -1
  84. package/dist/server/modules/butler/butler-control-session-service.js +27 -26
  85. package/dist/server/modules/butler/butler-control-session-service.js.map +1 -1
  86. package/dist/server/modules/butler/butler-control-timer-service.js +4 -5
  87. package/dist/server/modules/butler/butler-control-timer-service.js.map +1 -1
  88. package/dist/server/modules/butler/butler-controller.d.ts +2 -2
  89. package/dist/server/modules/butler/butler-controller.js +19 -17
  90. package/dist/server/modules/butler/butler-controller.js.map +1 -1
  91. package/dist/server/modules/butler/butler-profile-service.d.ts +5 -5
  92. package/dist/server/modules/butler/butler-profile-service.js +17 -16
  93. package/dist/server/modules/butler/butler-profile-service.js.map +1 -1
  94. package/dist/server/modules/butler/butler-project-service.d.ts +7 -6
  95. package/dist/server/modules/butler/butler-project-service.js +35 -21
  96. package/dist/server/modules/butler/butler-project-service.js.map +1 -1
  97. package/dist/server/modules/butler/butler-session-service.d.ts +2 -2
  98. package/dist/server/modules/butler/butler-session-service.js +33 -27
  99. package/dist/server/modules/butler/butler-session-service.js.map +1 -1
  100. package/dist/server/modules/butler/butler-session-summary-service.d.ts +2 -2
  101. package/dist/server/modules/butler/butler-session-summary-service.js +23 -9
  102. package/dist/server/modules/butler/butler-session-summary-service.js.map +1 -1
  103. package/dist/server/modules/butler/context-aggregator.js +9 -9
  104. package/dist/server/modules/butler/context-aggregator.js.map +1 -1
  105. package/dist/server/modules/butler/patrol-execution-service.d.ts +0 -1
  106. package/dist/server/modules/butler/patrol-execution-service.js +6 -12
  107. package/dist/server/modules/butler/patrol-execution-service.js.map +1 -1
  108. package/dist/server/modules/provider/provider-discovery-runtime.js +16 -1
  109. package/dist/server/modules/provider/provider-discovery-runtime.js.map +1 -1
  110. package/dist/server/modules/sessions/codex-app-server-helper-client.js +14 -0
  111. package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
  112. package/dist/server/modules/sessions/codex-app-server-helper-process.js +59 -0
  113. package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
  114. package/dist/server/modules/sessions/codex-session-title-generator.d.ts +19 -0
  115. package/dist/server/modules/sessions/codex-session-title-generator.js +295 -0
  116. package/dist/server/modules/sessions/codex-session-title-generator.js.map +1 -0
  117. package/dist/server/modules/sessions/session-controller.js +3 -3
  118. package/dist/server/modules/sessions/session-controller.js.map +1 -1
  119. package/dist/server/modules/sessions/session-history-service.d.ts +13 -3
  120. package/dist/server/modules/sessions/session-history-service.js +309 -11
  121. package/dist/server/modules/sessions/session-history-service.js.map +1 -1
  122. package/dist/server/modules/sessions/session-live-runtime-service.js +25 -15
  123. package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
  124. package/dist/server/modules/sessions/session-permission-request-service.js +28 -15
  125. package/dist/server/modules/sessions/session-permission-request-service.js.map +1 -1
  126. package/dist/server/modules/tasks/task-types.d.ts +1 -0
  127. package/dist/server/modules/tasks/task-types.js +1 -0
  128. package/dist/server/modules/tasks/task-types.js.map +1 -1
  129. package/dist/server/modules/workbench/workbench-service.js +9 -9
  130. package/dist/server/modules/workbench/workbench-service.js.map +1 -1
  131. package/dist/server/modules/workspace/affairs-library-service.d.ts +3 -1
  132. package/dist/server/modules/workspace/affairs-library-service.js +112 -54
  133. package/dist/server/modules/workspace/affairs-library-service.js.map +1 -1
  134. package/dist/server/modules/workspace/affairs-lightweight-session-service.js +13 -9
  135. package/dist/server/modules/workspace/affairs-lightweight-session-service.js.map +1 -1
  136. package/dist/server/modules/workspace/affairs-tag-service.d.ts +12 -0
  137. package/dist/server/modules/workspace/affairs-tag-service.js +527 -2
  138. package/dist/server/modules/workspace/affairs-tag-service.js.map +1 -1
  139. package/dist/server/modules/workspace/workspace-controller.d.ts +1 -1
  140. package/dist/server/modules/workspace/workspace-controller.js +7 -7
  141. package/dist/server/modules/workspace/workspace-controller.js.map +1 -1
  142. package/dist/server/modules/workspace/workspace-service.d.ts +7 -0
  143. package/dist/server/modules/workspace/workspace-service.js +151 -10
  144. package/dist/server/modules/workspace/workspace-service.js.map +1 -1
  145. package/dist/server/routes/auth.js +6 -0
  146. package/dist/server/routes/auth.js.map +1 -1
  147. package/dist/server/server/create-server.d.ts +4 -0
  148. package/dist/server/server/create-server.js +26 -0
  149. package/dist/server/server/create-server.js.map +1 -1
  150. package/dist/server/server/start-host.js +20 -0
  151. package/dist/server/server/start-host.js.map +1 -1
  152. package/dist/server/shared/http/request-diagnostics.d.ts +56 -0
  153. package/dist/server/shared/http/request-diagnostics.js +256 -0
  154. package/dist/server/shared/http/request-diagnostics.js.map +1 -0
  155. package/dist/server/storage/repositories/auth-token-repository.d.ts +1 -0
  156. package/dist/server/storage/repositories/auth-token-repository.js +8 -0
  157. package/dist/server/storage/repositories/auth-token-repository.js.map +1 -1
  158. package/dist/server/storage/repositories/auth-user-repository.d.ts +50 -0
  159. package/dist/server/storage/repositories/auth-user-repository.js +198 -27
  160. package/dist/server/storage/repositories/auth-user-repository.js.map +1 -1
  161. package/dist/server/storage/repositories/butler-control-session-repository.d.ts +4 -1
  162. package/dist/server/storage/repositories/butler-control-session-repository.js +55 -8
  163. package/dist/server/storage/repositories/butler-control-session-repository.js.map +1 -1
  164. package/dist/server/storage/repositories/butler-profile-repository.d.ts +2 -1
  165. package/dist/server/storage/repositories/butler-profile-repository.js +35 -6
  166. package/dist/server/storage/repositories/butler-profile-repository.js.map +1 -1
  167. package/dist/server/storage/repositories/butler-project-repository.d.ts +2 -0
  168. package/dist/server/storage/repositories/butler-project-repository.js +38 -4
  169. package/dist/server/storage/repositories/butler-project-repository.js.map +1 -1
  170. package/dist/server/storage/repositories/butler-session-repository.d.ts +2 -1
  171. package/dist/server/storage/repositories/butler-session-repository.js +35 -6
  172. package/dist/server/storage/repositories/butler-session-repository.js.map +1 -1
  173. package/dist/server/storage/repositories/session-binding-repository.d.ts +3 -0
  174. package/dist/server/storage/repositories/session-binding-repository.js +70 -2
  175. package/dist/server/storage/repositories/session-binding-repository.js.map +1 -1
  176. package/dist/server/storage/repositories/session-index-repository.js +7 -5
  177. package/dist/server/storage/repositories/session-index-repository.js.map +1 -1
  178. package/dist/server/storage/repositories/workspace-repository.d.ts +3 -1
  179. package/dist/server/storage/repositories/workspace-repository.js +24 -10
  180. package/dist/server/storage/repositories/workspace-repository.js.map +1 -1
  181. package/dist/server/storage/sqlite/client.js +288 -0
  182. package/dist/server/storage/sqlite/client.js.map +1 -1
  183. package/dist/server/storage/sqlite/schema.sql +33 -9
  184. package/dist/server/types/domain.d.ts +8 -1
  185. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js +34 -7
  186. package/node_modules/@codingns/session-sync-core/dist/providers/claude-session-store.js.map +1 -1
  187. package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +7 -0
  188. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +596 -6
  189. package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
  190. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js +3 -7
  191. package/node_modules/@codingns/session-sync-core/dist/runtime/claude-runtime.js.map +1 -1
  192. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.d.ts +1 -0
  193. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +249 -6
  194. package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
  195. package/node_modules/@codingns/session-sync-core/dist/types.d.ts +11 -0
  196. package/package.json +1 -1
  197. package/dist/public/assets/SessionIndexPage-CX2FppcJ.js +0 -1
  198. package/dist/public/assets/SettingsPage-BI2Olcvr.js +0 -2
  199. package/dist/public/assets/WorkbenchLayout-CJHQtwuL.js +0 -1022
  200. package/dist/public/assets/WorkbenchShellRoute-2bKI6Q9k.js +0 -1
  201. package/dist/public/assets/WorkbenchShellRoute-BjuZD101.css +0 -1
  202. package/dist/public/assets/WorkspaceDetailPage-5H9Gosx2.js +0 -1
  203. package/dist/public/assets/index-BARqMVSw.css +0 -1
  204. package/dist/public/assets/index-BUoNjVrY.js +0 -50
  205. package/dist/public/assets/styles-DkbkRgWw.css +0 -1
  206. /package/dist/public/assets/{styles-JKFlsYFv.js → styles-DwSuZo1w.js} +0 -0
@@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS auth_users (
14
14
  username TEXT NOT NULL UNIQUE,
15
15
  password_hash TEXT NOT NULL,
16
16
  role TEXT NOT NULL CHECK (role = 'admin'),
17
+ status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'disabled')),
17
18
  created_at TEXT NOT NULL,
18
19
  updated_at TEXT NOT NULL
19
20
  );
@@ -108,6 +109,7 @@ CREATE INDEX IF NOT EXISTS idx_auth_login_attempts_updated_at
108
109
 
109
110
  CREATE TABLE IF NOT EXISTS workspaces (
110
111
  id TEXT PRIMARY KEY,
112
+ owner_user_id TEXT,
111
113
  name TEXT NOT NULL,
112
114
  path TEXT NOT NULL UNIQUE,
113
115
  repo_root TEXT,
@@ -115,9 +117,13 @@ CREATE TABLE IF NOT EXISTS workspaces (
115
117
  sort_order INTEGER NOT NULL DEFAULT 0,
116
118
  created_at TEXT NOT NULL,
117
119
  updated_at TEXT NOT NULL,
118
- removed_at TEXT
120
+ removed_at TEXT,
121
+ FOREIGN KEY (owner_user_id) REFERENCES auth_users(id)
119
122
  );
120
123
 
124
+ CREATE INDEX IF NOT EXISTS idx_workspaces_owner_user_id
125
+ ON workspaces(owner_user_id, removed_at, sort_order);
126
+
121
127
  CREATE TABLE IF NOT EXISTS workspace_navigation_states (
122
128
  workspace_id TEXT NOT NULL,
123
129
  user_id TEXT NOT NULL,
@@ -630,6 +636,7 @@ CREATE TABLE IF NOT EXISTS commit_rule_profiles (
630
636
 
631
637
  CREATE TABLE IF NOT EXISTS session_bindings (
632
638
  session_id TEXT PRIMARY KEY,
639
+ user_id TEXT,
633
640
  workspace_id TEXT NOT NULL,
634
641
  provider TEXT NOT NULL,
635
642
  provider_session_id TEXT NOT NULL,
@@ -641,11 +648,13 @@ CREATE TABLE IF NOT EXISTS session_bindings (
641
648
  runtime_home_dir TEXT,
642
649
  created_at TEXT NOT NULL,
643
650
  updated_at TEXT NOT NULL,
651
+ FOREIGN KEY (user_id) REFERENCES auth_users(id),
644
652
  FOREIGN KEY (workspace_id) REFERENCES workspaces(id),
645
653
  UNIQUE (provider, provider_session_id)
646
654
  );
647
655
 
648
656
  CREATE INDEX IF NOT EXISTS idx_session_bindings_workspace_id ON session_bindings(workspace_id);
657
+ CREATE INDEX IF NOT EXISTS idx_session_bindings_user_id ON session_bindings(user_id, workspace_id);
649
658
 
650
659
  CREATE TABLE IF NOT EXISTS session_indices (
651
660
  session_id TEXT PRIMARY KEY,
@@ -1473,7 +1482,8 @@ CREATE INDEX IF NOT EXISTS idx_ai_fallback_edits_runtime_id
1473
1482
  ON ai_fallback_edits(runtime_id, created_at DESC);
1474
1483
 
1475
1484
  CREATE TABLE IF NOT EXISTS butler_profiles (
1476
- id TEXT PRIMARY KEY CHECK (id = 'default'),
1485
+ id TEXT PRIMARY KEY,
1486
+ user_id TEXT NOT NULL UNIQUE,
1477
1487
  display_name TEXT NOT NULL,
1478
1488
  provider_id TEXT NOT NULL CHECK (provider_id IN ('codex', 'claude-code')),
1479
1489
  workspace_path TEXT NOT NULL,
@@ -1484,11 +1494,16 @@ CREATE TABLE IF NOT EXISTS butler_profiles (
1484
1494
  focus_json TEXT NOT NULL,
1485
1495
  setup_completed INTEGER NOT NULL DEFAULT 1 CHECK (setup_completed IN (0, 1)),
1486
1496
  initialized_at TEXT NOT NULL,
1487
- updated_at TEXT NOT NULL
1497
+ updated_at TEXT NOT NULL,
1498
+ FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE
1488
1499
  );
1489
1500
 
1501
+ CREATE INDEX IF NOT EXISTS idx_butler_profiles_user_id
1502
+ ON butler_profiles(user_id);
1503
+
1490
1504
  CREATE TABLE IF NOT EXISTS butler_control_sessions (
1491
1505
  id TEXT PRIMARY KEY,
1506
+ user_id TEXT NOT NULL,
1492
1507
  provider_id TEXT NOT NULL CHECK (provider_id IN ('codex', 'claude-code')),
1493
1508
  session_id TEXT NOT NULL UNIQUE,
1494
1509
  purpose TEXT NOT NULL DEFAULT 'chat' CHECK (purpose IN ('chat', 'todo_analysis')),
@@ -1502,11 +1517,12 @@ CREATE TABLE IF NOT EXISTS butler_control_sessions (
1502
1517
  last_summary TEXT,
1503
1518
  created_at TEXT NOT NULL,
1504
1519
  updated_at TEXT NOT NULL,
1520
+ FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
1505
1521
  FOREIGN KEY (session_id) REFERENCES session_bindings(session_id)
1506
1522
  );
1507
1523
 
1508
1524
  CREATE INDEX IF NOT EXISTS idx_butler_control_sessions_provider
1509
- ON butler_control_sessions(provider_id, updated_at DESC, created_at DESC);
1525
+ ON butler_control_sessions(user_id, provider_id, updated_at DESC, created_at DESC);
1510
1526
 
1511
1527
  CREATE TABLE IF NOT EXISTS butler_control_timers (
1512
1528
  id TEXT PRIMARY KEY,
@@ -1637,6 +1653,7 @@ CREATE INDEX IF NOT EXISTS idx_butler_notification_archives_user_updated_at
1637
1653
 
1638
1654
  CREATE TABLE IF NOT EXISTS butler_projects (
1639
1655
  id TEXT PRIMARY KEY,
1656
+ user_id TEXT NOT NULL,
1640
1657
  workspace_id TEXT NOT NULL,
1641
1658
  name TEXT NOT NULL,
1642
1659
  repo_root TEXT NOT NULL,
@@ -1651,17 +1668,21 @@ CREATE TABLE IF NOT EXISTS butler_projects (
1651
1668
  created_at TEXT NOT NULL,
1652
1669
  updated_at TEXT NOT NULL,
1653
1670
  archived_at TEXT,
1671
+ FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
1654
1672
  FOREIGN KEY (workspace_id) REFERENCES workspaces(id),
1655
- UNIQUE (workspace_id, repo_root)
1673
+ UNIQUE (user_id, workspace_id, repo_root)
1656
1674
  );
1657
1675
 
1676
+ CREATE INDEX IF NOT EXISTS idx_butler_projects_user_id
1677
+ ON butler_projects(user_id, lifecycle_status, updated_at DESC);
1658
1678
  CREATE INDEX IF NOT EXISTS idx_butler_projects_workspace_id
1659
- ON butler_projects(workspace_id);
1679
+ ON butler_projects(user_id, workspace_id);
1660
1680
  CREATE INDEX IF NOT EXISTS idx_butler_projects_status
1661
- ON butler_projects(lifecycle_status, updated_at DESC);
1681
+ ON butler_projects(user_id, lifecycle_status, updated_at DESC);
1662
1682
 
1663
1683
  CREATE TABLE IF NOT EXISTS butler_sessions (
1664
1684
  id TEXT PRIMARY KEY,
1685
+ user_id TEXT NOT NULL,
1665
1686
  project_id TEXT NOT NULL,
1666
1687
  session_id TEXT NOT NULL UNIQUE,
1667
1688
  role TEXT NOT NULL CHECK (role IN ('patrol', 'execution', 'verification', 'adhoc')),
@@ -1671,14 +1692,17 @@ CREATE TABLE IF NOT EXISTS butler_sessions (
1671
1692
  last_checkpoint_at TEXT,
1672
1693
  created_at TEXT NOT NULL,
1673
1694
  updated_at TEXT NOT NULL,
1695
+ FOREIGN KEY (user_id) REFERENCES auth_users(id) ON DELETE CASCADE,
1674
1696
  FOREIGN KEY (project_id) REFERENCES butler_projects(id) ON DELETE CASCADE,
1675
1697
  FOREIGN KEY (session_id) REFERENCES session_bindings(session_id)
1676
1698
  );
1677
1699
 
1700
+ CREATE INDEX IF NOT EXISTS idx_butler_sessions_user_id
1701
+ ON butler_sessions(user_id, updated_at DESC);
1678
1702
  CREATE INDEX IF NOT EXISTS idx_butler_sessions_project_id
1679
- ON butler_sessions(project_id, updated_at DESC);
1703
+ ON butler_sessions(user_id, project_id, updated_at DESC);
1680
1704
  CREATE INDEX IF NOT EXISTS idx_butler_sessions_status
1681
- ON butler_sessions(status, updated_at DESC);
1705
+ ON butler_sessions(user_id, status, updated_at DESC);
1682
1706
 
1683
1707
  CREATE TABLE IF NOT EXISTS butler_follow_up_tasks (
1684
1708
  id TEXT PRIMARY KEY,
@@ -18,6 +18,7 @@ export interface AuthUser {
18
18
  username: string;
19
19
  passwordHash: string;
20
20
  role: "admin";
21
+ status: "active" | "disabled";
21
22
  createdAt: string;
22
23
  updatedAt: string;
23
24
  }
@@ -87,6 +88,7 @@ export interface ProviderRuntimeStateRecord {
87
88
  }
88
89
  export interface Workspace {
89
90
  id: string;
91
+ ownerUserId?: string | null;
90
92
  name: string;
91
93
  path: string;
92
94
  repoRoot: string | null;
@@ -519,6 +521,7 @@ export interface OpsTarget {
519
521
  }
520
522
  export interface SessionBinding {
521
523
  sessionId: string;
524
+ userId: string | null;
522
525
  workspaceId: string;
523
526
  provider: ProviderId;
524
527
  providerSessionId: string;
@@ -946,7 +949,8 @@ export type PatrolRunStatus = "queued" | "running" | "succeeded" | "failed" | "c
946
949
  export type VerificationType = "test" | "health" | "browser" | "visual" | "metric";
947
950
  export type VerificationRunStatus = "queued" | "running" | "passed" | "failed" | "skipped" | "cancelled";
948
951
  export interface ButlerProfile {
949
- id: "default";
952
+ id: string;
953
+ userId: string;
950
954
  displayName: string;
951
955
  providerId: ButlerProfileProviderId;
952
956
  workspacePath: string;
@@ -1029,6 +1033,7 @@ export interface ChannelDelivery {
1029
1033
  }
1030
1034
  export interface ButlerControlSession {
1031
1035
  id: string;
1036
+ userId: string;
1032
1037
  providerId: ButlerProfileProviderId;
1033
1038
  sessionId: string;
1034
1039
  purpose: ButlerControlSessionPurpose;
@@ -1116,6 +1121,7 @@ export interface ButlerControlEvent {
1116
1121
  }
1117
1122
  export interface ButlerProject {
1118
1123
  id: string;
1124
+ userId: string;
1119
1125
  workspaceId: string;
1120
1126
  name: string;
1121
1127
  repoRoot: string;
@@ -1133,6 +1139,7 @@ export interface ButlerProject {
1133
1139
  }
1134
1140
  export interface ButlerSession {
1135
1141
  id: string;
1142
+ userId: string;
1136
1143
  projectId: string;
1137
1144
  sessionId: string;
1138
1145
  role: ButlerSessionRole;
@@ -4,11 +4,21 @@ import { join } from "node:path";
4
4
  import { walkJsonlFiles, workspaceSlug } from "./utils.js";
5
5
  export const CLAUDE_CODE_SESSION_STORE_PROFILE = {
6
6
  resolveWorkspaceFiles(homeDir, workspacePath) {
7
- const exactProjectDir = join(homeDir, "projects", workspaceSlug(workspacePath));
7
+ const projectsRoot = join(homeDir, "projects");
8
+ const exactProjectDir = join(projectsRoot, workspaceSlug(workspacePath));
9
+ const files = new Set();
8
10
  if (existsSync(exactProjectDir)) {
9
- return walkJsonlFiles(exactProjectDir);
11
+ for (const filePath of walkJsonlFiles(exactProjectDir)) {
12
+ files.add(filePath);
13
+ }
14
+ }
15
+ // Claude CLI 对非 ASCII 工作区路径会使用自己的目录命名规则。
16
+ // 如果我们只扫自己算出的 exact 目录,中文路径下会被一个空的占位目录挡住,
17
+ // 真实 transcript 反而永远发现不到。
18
+ for (const filePath of walkJsonlFiles(projectsRoot)) {
19
+ files.add(filePath);
10
20
  }
11
- return walkJsonlFiles(join(homeDir, "projects"));
21
+ return Array.from(files);
12
22
  },
13
23
  resolveSessionFilePath(homeDir, workspacePath, sessionId) {
14
24
  return join(homeDir, "projects", workspaceSlug(workspacePath), `${sessionId}.jsonl`);
@@ -18,10 +28,14 @@ export const CLAUDE_CODE_SESSION_STORE_PROFILE = {
18
28
  },
19
29
  findSessionFile(homeDir, workspacePath, sessionId) {
20
30
  const exactCandidate = join(homeDir, "projects", workspaceSlug(workspacePath), `${sessionId}.jsonl`);
31
+ const candidates = new Set();
21
32
  if (existsSync(exactCandidate)) {
22
- return exactCandidate;
33
+ candidates.add(exactCandidate);
34
+ }
35
+ for (const filePath of collectSessionFileCandidates([join(homeDir, "projects")], sessionId)) {
36
+ candidates.add(filePath);
23
37
  }
24
- return findSessionFileInProjectsRoots([join(homeDir, "projects")], sessionId);
38
+ return selectBestSessionFile(Array.from(candidates));
25
39
  }
26
40
  };
27
41
  export function createLegnaSessionStoreProfile(options = {}) {
@@ -75,6 +89,9 @@ function collectJsonlFiles(roots) {
75
89
  return Array.from(uniqueFiles);
76
90
  }
77
91
  function findSessionFileInProjectsRoots(projectRoots, sessionId) {
92
+ return selectBestSessionFile(collectSessionFileCandidates(projectRoots, sessionId));
93
+ }
94
+ function collectSessionFileCandidates(projectRoots, sessionId) {
78
95
  const candidates = new Set();
79
96
  for (const projectRoot of projectRoots) {
80
97
  if (!projectRoot || !existsSync(projectRoot)) {
@@ -88,10 +105,20 @@ function findSessionFileInProjectsRoots(projectRoots, sessionId) {
88
105
  candidates.add(filePath);
89
106
  }
90
107
  }
91
- if (candidates.size === 0) {
108
+ return Array.from(candidates);
109
+ }
110
+ function selectBestSessionFile(candidates) {
111
+ if (candidates.length === 0) {
112
+ return null;
113
+ }
114
+ const existingCandidates = Array.from(new Set(candidates))
115
+ .filter((filePath) => existsSync(filePath));
116
+ const nonEmptyCandidates = existingCandidates.filter((filePath) => statSync(filePath).size > 0);
117
+ const sortableCandidates = nonEmptyCandidates.length > 0 ? nonEmptyCandidates : existingCandidates;
118
+ if (sortableCandidates.length === 0) {
92
119
  return null;
93
120
  }
94
- const sortedCandidates = Array.from(candidates).sort((left, right) => compareSessionFiles(right, left));
121
+ const sortedCandidates = sortableCandidates.sort((left, right) => compareSessionFiles(right, left));
95
122
  return sortedCandidates[0] ?? null;
96
123
  }
97
124
  function compareSessionFiles(left, right) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-session-store.js","sourceRoot":"","sources":["../../src/providers/claude-session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAa3D,MAAM,CAAC,MAAM,iCAAiC,GAA8B;IAC1E,qBAAqB,CAAC,OAAO,EAAE,aAAa;QAC1C,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;QAEhF,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YAChC,OAAO,cAAc,CAAC,eAAe,CAAC,CAAC;QACzC,CAAC;QAED,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,sBAAsB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS;QACtD,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;IACvF,CAAC;IACD,6BAA6B,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS;QAC7D,OAAO,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,YAAY,SAAS,QAAQ,CAAC,CAAC;IAChG,CAAC;IACD,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS;QAC/C,MAAM,cAAc,GAAG,IAAI,CACzB,OAAO,EACP,UAAU,EACV,aAAa,CAAC,aAAa,CAAC,EAC5B,GAAG,SAAS,QAAQ,CACrB,CAAC;QAEF,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,OAAO,cAAc,CAAC;QACxB,CAAC;QAED,OAAO,8BAA8B,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAChF,CAAC;CACF,CAAC;AAEF,MAAM,UAAU,8BAA8B,CAC5C,UAA2C,EAAE;IAE7C,MAAM,uBAAuB,GAC3B,OAAO,CAAC,mBAAmB,EAAE,IAAI,EAAE;QACjC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC;QACtD,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAE7C,OAAO;QACL,qBAAqB,CAAC,OAAO,EAAE,aAAa;YAC1C,MAAM,UAAU,GAAG;gBACjB,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC;gBACzC,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;gBACvD,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;aAC5D,CAAC;YACF,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAEjD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,OAAO,iBAAiB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACjF,CAAC;QACD,sBAAsB,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS;YACvD,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QACzE,CAAC;QACD,6BAA6B,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS;YAC9D,OAAO,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,SAAS,QAAQ,CAAC,CAAC;QAClF,CAAC;QACD,eAAe,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS;YAC/C,MAAM,gBAAgB,GAAG;gBACvB,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,SAAS,QAAQ,CAAC;gBAC/D,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC;gBAC7E,IAAI,CAAC,uBAAuB,EAAE,aAAa,CAAC,aAAa,CAAC,EAAE,GAAG,SAAS,QAAQ,CAAC;aAClF,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,CAAC;YAE1E,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;gBACzC,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1B,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,OAAO,8BAA8B,CACnC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,uBAAuB,CAAC,EACpD,SAAS,CACV,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAwB;IACjD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5C,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,8BAA8B,CACrC,YAA+B,EAC/B,SAAiB;IAEjB,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aACrE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;aACtC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;aACnE,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAE9C,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACnE,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CACjC,CAAC;IAEF,OAAO,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,KAAa;IACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"claude-session-store.js","sourceRoot":"","sources":["../../src/providers/claude-session-store.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,10 @@ export interface CodexThreadControlTransport {
31
31
  archiveThread(providerSessionId: string): Promise<void>;
32
32
  unarchiveThread(providerSessionId: string): Promise<void>;
33
33
  readThread(providerSessionId: string): Promise<Record<string, unknown>>;
34
+ setThreadName?(providerSessionId: string, name: string): Promise<void>;
35
+ listThreads?(input: {
36
+ workspacePath: string;
37
+ }): Promise<Record<string, unknown>[]>;
34
38
  close(): void;
35
39
  }
36
40
  export declare class CodexAdapter implements ProviderAdapter {
@@ -59,6 +63,9 @@ export declare class CodexAdapter implements ProviderAdapter {
59
63
  getSessionCapabilities(): Promise<ProviderCapabilities>;
60
64
  readContextUsage(providerSessionId: string, rawStoreRef: string): Promise<ContextUsageSnapshot | null>;
61
65
  private readThreadMetadataIndex;
66
+ private readThreadMetadataIndexForWorkspace;
67
+ private mergeAppServerThreadMetadata;
68
+ private mergeAppServerSubagentActivityFromParentThreads;
62
69
  private listSessionFiles;
63
70
  private listArchivedSessionFiles;
64
71
  private resolveArchivedSessionCandidate;