@jingyi0605/codingns 0.5.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/public/assets/{AdaptiveButlerPage-CUyNL98E.js → AdaptiveButlerPage-uFwDdN-F.js} +3 -3
- package/dist/public/assets/{App-BFP7LCSC.js → App-BZvapsi8.js} +3 -3
- package/dist/public/assets/App-CcDXqFl1.css +1 -0
- package/dist/public/assets/{BootstrapPage-G74dX2Us.js → BootstrapPage-gHSoa4JN.js} +1 -1
- package/dist/public/assets/ConversationPage-z3sXtKZ7.js +4 -0
- package/dist/public/assets/{DesktopDetachPreviewPage-IV7oEdOX.js → DesktopDetachPreviewPage-4eMRxiBW.js} +1 -1
- package/dist/public/assets/DesktopWindowPage-CZcoGApB.js +2 -0
- package/dist/public/assets/FileContextPanel-C3qex8bb.js +1 -0
- package/dist/public/assets/GitSidebar-BK6H16XU.js +6 -0
- package/dist/public/assets/{MobileCreateSessionSheet-DqVwz_Hp.js → MobileCreateSessionSheet-BYfbvK8o.js} +1 -1
- package/dist/public/assets/MobileSheet-Ckug8hTb.js +1 -0
- package/dist/public/assets/{MobileTopHeaderFrame-COTc7cRr.js → MobileTopHeaderFrame-Bwv8Ovm_.js} +1 -1
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-RqWrBdn2.js +1 -0
- package/dist/public/assets/RelayConnectEntryPage-D_4YL-YH.js +1 -0
- package/dist/public/assets/ServerSettingsModal-CMSm3BZU.js +1 -0
- package/dist/public/assets/SessionIndexPage-DuK10DL5.js +1 -0
- package/dist/public/assets/SettingsPage-fyD-xaHL.js +1 -0
- package/dist/public/assets/TerminalManagerPanel-CCLr1Ypk.js +1 -0
- package/dist/public/assets/{TerminalPage-DpsvQQVR.js → TerminalPage-DaooFaJ4.js} +19 -19
- package/dist/public/assets/{TerminalRuntimeFallbackModal-CNzOt5v5.js → TerminalRuntimeFallbackModal-aUzjEBwP.js} +1 -1
- package/dist/public/assets/ToolFilesPage-CGxBvYG0.js +1 -0
- package/dist/public/assets/ToolGitPage-C264yjS9.js +1 -0
- package/dist/public/assets/ToolProcessesPage-BOP4A1cb.js +1 -0
- package/dist/public/assets/ToolsHomePage-CQxGiKQA.js +1 -0
- package/dist/public/assets/WorkbenchLandingPage-CvAY68ca.js +1 -0
- package/dist/public/assets/WorkbenchLayout-DGm8Tc5M.js +3 -0
- package/dist/public/assets/{WorkbenchModal-CbDxaCOR.js → WorkbenchModal-0tPIIhca.js} +1 -1
- package/dist/public/assets/{WorkbenchShellRoute-BMcnFadA.css → WorkbenchShellRoute-BF0nHWOk.css} +1 -1
- package/dist/public/assets/WorkbenchShellRoute-DBBOsJo9.js +1 -0
- package/dist/public/assets/WorkspaceDebugDetailPage-CDerFYd2.js +1 -0
- package/dist/public/assets/WorkspaceDetailPage-BlJc1CHE.js +1 -0
- package/dist/public/assets/WorkspaceHomePage-BUsKJ3lv.js +1 -0
- package/dist/public/assets/client-runtime-manager-BZpL17fc.js +1 -0
- package/dist/public/assets/{default-session-permission-mode-Cu5SreTG.js → default-session-permission-mode-DT4SGiwp.js} +1 -1
- package/dist/public/assets/{file-tree-icon-BMKuc5pw.js → file-tree-icon-Db5LXC8h.js} +7 -7
- package/dist/public/assets/index-BZLcEHW3.js +42 -0
- package/dist/public/assets/index-BbspQPC2.css +1 -0
- package/dist/public/assets/login-direct-candidate-resolver-1mxe_Oh8.js +1 -0
- package/dist/public/assets/{preferences-service-gv_9vGKz.js → preferences-service-DWnzl5a0.js} +1 -1
- package/dist/public/assets/relay-entry-C5_Iay0I.js +1 -0
- package/dist/public/assets/session-runtime-machine-DdLeDqQr.js +17 -0
- package/dist/public/assets/{styles-BWPBZvze.css → styles-CsEMfdaS.css} +1 -1
- package/dist/public/assets/{terminal-runtime-meta-B9xJGY__.js → terminal-runtime-meta-cdtWVfCm.js} +1 -1
- package/dist/public/assets/{useRegisteredDebugTemplates-CDfl54Wt.js → useRegisteredDebugTemplates-oFAQNIqh.js} +1 -1
- package/dist/public/assets/window-BVUB8gMK.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/client/npm-global-package-service.d.ts +7 -1
- package/dist/server/modules/client/npm-global-package-service.js +149 -43
- package/dist/server/modules/client/npm-global-package-service.js.map +1 -1
- package/dist/server/modules/client/service-update-task-service.js +6 -2
- package/dist/server/modules/client/service-update-task-service.js.map +1 -1
- package/dist/server/modules/client/service-update-types.d.ts +2 -0
- package/dist/server/modules/git/git-controller.d.ts +3 -0
- package/dist/server/modules/git/git-controller.js +3 -0
- package/dist/server/modules/git/git-controller.js.map +1 -1
- package/dist/server/modules/git/git-read-service.js +47 -1
- package/dist/server/modules/git/git-read-service.js.map +1 -1
- package/dist/server/modules/git/git-write-service.d.ts +4 -0
- package/dist/server/modules/git/git-write-service.js +24 -0
- package/dist/server/modules/git/git-write-service.js.map +1 -1
- package/dist/server/modules/git/types.d.ts +1 -0
- package/dist/server/modules/git/workspace-repo-guard.d.ts +2 -0
- package/dist/server/modules/git/workspace-repo-guard.js +24 -10
- package/dist/server/modules/git/workspace-repo-guard.js.map +1 -1
- package/dist/server/modules/parallel-sessions/parallel-session-controller.d.ts +53 -0
- package/dist/server/modules/parallel-sessions/parallel-session-controller.js +70 -0
- package/dist/server/modules/parallel-sessions/parallel-session-controller.js.map +1 -0
- package/dist/server/modules/parallel-sessions/parallel-session-group-service.d.ts +83 -0
- package/dist/server/modules/parallel-sessions/parallel-session-group-service.js +591 -0
- package/dist/server/modules/parallel-sessions/parallel-session-group-service.js.map +1 -0
- package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.d.ts +56 -0
- package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js +483 -0
- package/dist/server/modules/parallel-sessions/session-isolated-workspace-service.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.d.ts +2 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js +129 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-candidate-endpoints.js.map +1 -0
- package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js +12 -9
- package/dist/server/modules/relay-tunnel/relay-tunnel-runtime-adapter.js.map +1 -1
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js +1 -128
- package/dist/server/modules/relay-tunnel/relay-tunnel-service.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-client.d.ts +3 -0
- package/dist/server/modules/sessions/codex-app-server-helper-client.js +56 -45
- package/dist/server/modules/sessions/codex-app-server-helper-client.js.map +1 -1
- package/dist/server/modules/sessions/codex-app-server-helper-process.js +21 -2
- package/dist/server/modules/sessions/codex-app-server-helper-process.js.map +1 -1
- package/dist/server/modules/sessions/session-history-service.d.ts +10 -1
- package/dist/server/modules/sessions/session-history-service.js +142 -14
- package/dist/server/modules/sessions/session-history-service.js.map +1 -1
- package/dist/server/modules/sessions/session-live-runtime-service.d.ts +8 -0
- package/dist/server/modules/sessions/session-live-runtime-service.js +208 -25
- package/dist/server/modules/sessions/session-live-runtime-service.js.map +1 -1
- package/dist/server/modules/workbench/codex-archive-watcher.d.ts +16 -0
- package/dist/server/modules/workbench/codex-archive-watcher.js +50 -0
- package/dist/server/modules/workbench/codex-archive-watcher.js.map +1 -0
- package/dist/server/modules/workbench/workbench-service.d.ts +11 -2
- package/dist/server/modules/workbench/workbench-service.js +37 -8
- package/dist/server/modules/workbench/workbench-service.js.map +1 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.d.ts +1 -1
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js +26 -3
- package/dist/server/modules/workbench/workspace-panel-snapshot-service.js.map +1 -1
- package/dist/server/modules/workspace/workspace-service.d.ts +3 -1
- package/dist/server/modules/workspace/workspace-service.js +10 -2
- package/dist/server/modules/workspace/workspace-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-base-ref-resolver.d.ts +20 -0
- package/dist/server/modules/worktree/worktree-base-ref-resolver.js +111 -0
- package/dist/server/modules/worktree/worktree-base-ref-resolver.js.map +1 -0
- package/dist/server/modules/worktree/worktree-cleanup-service.js +9 -3
- package/dist/server/modules/worktree/worktree-cleanup-service.js.map +1 -1
- package/dist/server/modules/worktree/worktree-manager.d.ts +0 -1
- package/dist/server/modules/worktree/worktree-manager.js +14 -20
- package/dist/server/modules/worktree/worktree-manager.js.map +1 -1
- package/dist/server/routes/git.js +1 -0
- package/dist/server/routes/git.js.map +1 -1
- package/dist/server/routes/parallel-groups.d.ts +3 -0
- package/dist/server/routes/parallel-groups.js +9 -0
- package/dist/server/routes/parallel-groups.js.map +1 -0
- package/dist/server/server/create-server.d.ts +8 -0
- package/dist/server/server/create-server.js +38 -4
- package/dist/server/server/create-server.js.map +1 -1
- package/dist/server/server/workbench-runtime-terminal-sync.d.ts +14 -0
- package/dist/server/server/workbench-runtime-terminal-sync.js +17 -0
- package/dist/server/server/workbench-runtime-terminal-sync.js.map +1 -0
- package/dist/server/storage/repositories/parallel-session-group-repository.d.ts +11 -0
- package/dist/server/storage/repositories/parallel-session-group-repository.js +131 -0
- package/dist/server/storage/repositories/parallel-session-group-repository.js.map +1 -0
- package/dist/server/storage/repositories/parallel-session-member-repository.d.ts +12 -0
- package/dist/server/storage/repositories/parallel-session-member-repository.js +150 -0
- package/dist/server/storage/repositories/parallel-session-member-repository.js.map +1 -0
- package/dist/server/storage/repositories/session-isolated-workspace-repository.d.ts +15 -0
- package/dist/server/storage/repositories/session-isolated-workspace-repository.js +230 -0
- package/dist/server/storage/repositories/session-isolated-workspace-repository.js.map +1 -0
- package/dist/server/storage/sqlite/schema.sql +73 -0
- package/dist/server/types/domain.d.ts +72 -0
- package/dist/server/ws/workbench-ws-hub.d.ts +3 -1
- package/dist/server/ws/workbench-ws-hub.js +23 -4
- package/dist/server/ws/workbench-ws-hub.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.d.ts +1 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js +34 -0
- package/node_modules/@codingns/session-sync-core/dist/providers/codex.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.d.ts +3 -0
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js +46 -22
- package/node_modules/@codingns/session-sync-core/dist/runtime/active-run-registry.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js +488 -281
- package/node_modules/@codingns/session-sync-core/dist/runtime/codex-runtime.js.map +1 -1
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js +29 -5
- package/node_modules/@codingns/session-sync-core/dist/runtime/opencode-runtime.js.map +1 -1
- package/package.json +1 -1
- package/dist/public/assets/App-DUAg5urj.css +0 -1
- package/dist/public/assets/ConversationPage-Bz0_tvvM.js +0 -2
- package/dist/public/assets/DesktopWindowPage-BBmHyRg5.js +0 -2
- package/dist/public/assets/FileContextPanel--FVTxDrq.js +0 -1
- package/dist/public/assets/GitSidebar-DAiSi9oc.js +0 -6
- package/dist/public/assets/MobileSheet-D1lMrcvD.js +0 -1
- package/dist/public/assets/MobileWorkspaceSwitcherHeader-DJPV9ym2.js +0 -1
- package/dist/public/assets/RelayConnectEntryPage-dSwU8VzK.js +0 -1
- package/dist/public/assets/ServerSettingsModal-B34ms3ze.js +0 -1
- package/dist/public/assets/SessionIndexPage-D3tG1gmM.js +0 -1
- package/dist/public/assets/SettingsPage-B3-6-5GL.js +0 -1
- package/dist/public/assets/TerminalManagerPanel-DhuTEdzV.js +0 -1
- package/dist/public/assets/ToolFilesPage-BX9QDi9Y.js +0 -1
- package/dist/public/assets/ToolGitPage-4VtFox3p.js +0 -1
- package/dist/public/assets/ToolProcessesPage-DZJC6Qnt.js +0 -1
- package/dist/public/assets/ToolsHomePage-D7JbrAWv.js +0 -1
- package/dist/public/assets/WorkbenchLandingPage-C0yqnzqh.js +0 -1
- package/dist/public/assets/WorkbenchLayout-Brlj8K3i.js +0 -3
- package/dist/public/assets/WorkbenchShellRoute-puGpdDFY.js +0 -1
- package/dist/public/assets/WorkspaceDebugDetailPage-fTGweC9N.js +0 -1
- package/dist/public/assets/WorkspaceDetailPage-BtaIzSDB.js +0 -1
- package/dist/public/assets/WorkspaceHomePage-CUmmYDrM.js +0 -1
- package/dist/public/assets/client-runtime-manager-RHFa_iWo.js +0 -1
- package/dist/public/assets/index-Cq3ue0za.css +0 -1
- package/dist/public/assets/index-DEbFT-Aq.js +0 -42
- package/dist/public/assets/session-runtime-machine-Bfnxkk9B.js +0 -17
- package/dist/public/assets/window-BWqRixxq.js +0 -1
- /package/dist/public/assets/{styles-CSUx5LGe.js → styles-DRVvx_kv.js} +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
export class ParallelSessionGroupRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(record) {
|
|
7
|
+
this.db
|
|
8
|
+
.prepare(`INSERT INTO parallel_session_groups (
|
|
9
|
+
id,
|
|
10
|
+
workspace_id,
|
|
11
|
+
source_type,
|
|
12
|
+
source_session_id,
|
|
13
|
+
source_message_id,
|
|
14
|
+
shared_prompt,
|
|
15
|
+
requested_count,
|
|
16
|
+
anchor_session_id,
|
|
17
|
+
status,
|
|
18
|
+
created_by_user_id,
|
|
19
|
+
created_at,
|
|
20
|
+
updated_at,
|
|
21
|
+
deleted_at
|
|
22
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
23
|
+
.run(record.id, record.workspaceId, record.sourceType, record.sourceSessionId, record.sourceMessageId, record.sharedPrompt, record.requestedCount, record.anchorSessionId, record.status, record.createdByUserId, record.createdAt, record.updatedAt, record.deletedAt);
|
|
24
|
+
return record;
|
|
25
|
+
}
|
|
26
|
+
update(record) {
|
|
27
|
+
this.db
|
|
28
|
+
.prepare(`UPDATE parallel_session_groups
|
|
29
|
+
SET workspace_id = ?,
|
|
30
|
+
source_type = ?,
|
|
31
|
+
source_session_id = ?,
|
|
32
|
+
source_message_id = ?,
|
|
33
|
+
shared_prompt = ?,
|
|
34
|
+
requested_count = ?,
|
|
35
|
+
anchor_session_id = ?,
|
|
36
|
+
status = ?,
|
|
37
|
+
created_by_user_id = ?,
|
|
38
|
+
created_at = ?,
|
|
39
|
+
updated_at = ?,
|
|
40
|
+
deleted_at = ?
|
|
41
|
+
WHERE id = ?`)
|
|
42
|
+
.run(record.workspaceId, record.sourceType, record.sourceSessionId, record.sourceMessageId, record.sharedPrompt, record.requestedCount, record.anchorSessionId, record.status, record.createdByUserId, record.createdAt, record.updatedAt, record.deletedAt, record.id);
|
|
43
|
+
return this.findById(record.id);
|
|
44
|
+
}
|
|
45
|
+
findById(groupId) {
|
|
46
|
+
const row = this.db
|
|
47
|
+
.prepare(`SELECT
|
|
48
|
+
id,
|
|
49
|
+
workspace_id,
|
|
50
|
+
source_type,
|
|
51
|
+
source_session_id,
|
|
52
|
+
source_message_id,
|
|
53
|
+
shared_prompt,
|
|
54
|
+
requested_count,
|
|
55
|
+
anchor_session_id,
|
|
56
|
+
status,
|
|
57
|
+
created_by_user_id,
|
|
58
|
+
created_at,
|
|
59
|
+
updated_at,
|
|
60
|
+
deleted_at
|
|
61
|
+
FROM parallel_session_groups
|
|
62
|
+
WHERE id = ?`)
|
|
63
|
+
.get(groupId);
|
|
64
|
+
return row ? mapParallelSessionGroupRow(row) : null;
|
|
65
|
+
}
|
|
66
|
+
listByWorkspaceId(workspaceId) {
|
|
67
|
+
return this.db
|
|
68
|
+
.prepare(`SELECT
|
|
69
|
+
id,
|
|
70
|
+
workspace_id,
|
|
71
|
+
source_type,
|
|
72
|
+
source_session_id,
|
|
73
|
+
source_message_id,
|
|
74
|
+
shared_prompt,
|
|
75
|
+
requested_count,
|
|
76
|
+
anchor_session_id,
|
|
77
|
+
status,
|
|
78
|
+
created_by_user_id,
|
|
79
|
+
created_at,
|
|
80
|
+
updated_at,
|
|
81
|
+
deleted_at
|
|
82
|
+
FROM parallel_session_groups
|
|
83
|
+
WHERE workspace_id = ?
|
|
84
|
+
ORDER BY updated_at DESC, created_at DESC`)
|
|
85
|
+
.all(workspaceId)
|
|
86
|
+
.map((row) => mapParallelSessionGroupRow(row));
|
|
87
|
+
}
|
|
88
|
+
listByIds(groupIds) {
|
|
89
|
+
if (groupIds.length === 0) {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
const placeholders = groupIds.map(() => "?").join(", ");
|
|
93
|
+
return this.db
|
|
94
|
+
.prepare(`SELECT
|
|
95
|
+
id,
|
|
96
|
+
workspace_id,
|
|
97
|
+
source_type,
|
|
98
|
+
source_session_id,
|
|
99
|
+
source_message_id,
|
|
100
|
+
shared_prompt,
|
|
101
|
+
requested_count,
|
|
102
|
+
anchor_session_id,
|
|
103
|
+
status,
|
|
104
|
+
created_by_user_id,
|
|
105
|
+
created_at,
|
|
106
|
+
updated_at,
|
|
107
|
+
deleted_at
|
|
108
|
+
FROM parallel_session_groups
|
|
109
|
+
WHERE id IN (${placeholders})`)
|
|
110
|
+
.all(...groupIds)
|
|
111
|
+
.map((row) => mapParallelSessionGroupRow(row));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function mapParallelSessionGroupRow(row) {
|
|
115
|
+
return {
|
|
116
|
+
id: row.id,
|
|
117
|
+
workspaceId: row.workspace_id,
|
|
118
|
+
sourceType: row.source_type,
|
|
119
|
+
sourceSessionId: row.source_session_id,
|
|
120
|
+
sourceMessageId: row.source_message_id,
|
|
121
|
+
sharedPrompt: row.shared_prompt,
|
|
122
|
+
requestedCount: row.requested_count,
|
|
123
|
+
anchorSessionId: row.anchor_session_id,
|
|
124
|
+
status: row.status,
|
|
125
|
+
createdByUserId: row.created_by_user_id,
|
|
126
|
+
createdAt: row.created_at,
|
|
127
|
+
updatedAt: row.updated_at,
|
|
128
|
+
deletedAt: row.deleted_at
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=parallel-session-group-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel-session-group-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/parallel-session-group-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { ParallelSessionMemberRecord } from "../../types/domain.js";
|
|
3
|
+
export declare class ParallelSessionMemberRepository {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: Database.Database);
|
|
6
|
+
create(record: ParallelSessionMemberRecord): ParallelSessionMemberRecord;
|
|
7
|
+
update(record: ParallelSessionMemberRecord): ParallelSessionMemberRecord | null;
|
|
8
|
+
findBySessionId(sessionId: string): ParallelSessionMemberRecord | null;
|
|
9
|
+
listByGroupId(groupId: string): ParallelSessionMemberRecord[];
|
|
10
|
+
listBySessionIds(sessionIds: readonly string[]): ParallelSessionMemberRecord[];
|
|
11
|
+
listByGroupIds(groupIds: readonly string[]): ParallelSessionMemberRecord[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
export class ParallelSessionMemberRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(record) {
|
|
7
|
+
this.db
|
|
8
|
+
.prepare(`INSERT INTO parallel_session_members (
|
|
9
|
+
group_id,
|
|
10
|
+
session_id,
|
|
11
|
+
ordinal,
|
|
12
|
+
role,
|
|
13
|
+
provider,
|
|
14
|
+
model,
|
|
15
|
+
member_prompt,
|
|
16
|
+
workspace_isolation_mode,
|
|
17
|
+
temporary_workspace_id,
|
|
18
|
+
created_at,
|
|
19
|
+
updated_at,
|
|
20
|
+
deleted_at
|
|
21
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
22
|
+
.run(record.groupId, record.sessionId, record.ordinal, record.role, record.provider, record.model, record.memberPrompt, record.workspaceIsolationMode, record.temporaryWorkspaceId, record.createdAt, record.updatedAt, record.deletedAt);
|
|
23
|
+
return record;
|
|
24
|
+
}
|
|
25
|
+
update(record) {
|
|
26
|
+
this.db
|
|
27
|
+
.prepare(`UPDATE parallel_session_members
|
|
28
|
+
SET group_id = ?,
|
|
29
|
+
ordinal = ?,
|
|
30
|
+
role = ?,
|
|
31
|
+
provider = ?,
|
|
32
|
+
model = ?,
|
|
33
|
+
member_prompt = ?,
|
|
34
|
+
workspace_isolation_mode = ?,
|
|
35
|
+
temporary_workspace_id = ?,
|
|
36
|
+
created_at = ?,
|
|
37
|
+
updated_at = ?,
|
|
38
|
+
deleted_at = ?
|
|
39
|
+
WHERE session_id = ?`)
|
|
40
|
+
.run(record.groupId, record.ordinal, record.role, record.provider, record.model, record.memberPrompt, record.workspaceIsolationMode, record.temporaryWorkspaceId, record.createdAt, record.updatedAt, record.deletedAt, record.sessionId);
|
|
41
|
+
return this.findBySessionId(record.sessionId);
|
|
42
|
+
}
|
|
43
|
+
findBySessionId(sessionId) {
|
|
44
|
+
const row = this.db
|
|
45
|
+
.prepare(`SELECT
|
|
46
|
+
group_id,
|
|
47
|
+
session_id,
|
|
48
|
+
ordinal,
|
|
49
|
+
role,
|
|
50
|
+
provider,
|
|
51
|
+
model,
|
|
52
|
+
member_prompt,
|
|
53
|
+
workspace_isolation_mode,
|
|
54
|
+
temporary_workspace_id,
|
|
55
|
+
created_at,
|
|
56
|
+
updated_at,
|
|
57
|
+
deleted_at
|
|
58
|
+
FROM parallel_session_members
|
|
59
|
+
WHERE session_id = ?`)
|
|
60
|
+
.get(sessionId);
|
|
61
|
+
return row ? mapParallelSessionMemberRow(row) : null;
|
|
62
|
+
}
|
|
63
|
+
listByGroupId(groupId) {
|
|
64
|
+
return this.db
|
|
65
|
+
.prepare(`SELECT
|
|
66
|
+
group_id,
|
|
67
|
+
session_id,
|
|
68
|
+
ordinal,
|
|
69
|
+
role,
|
|
70
|
+
provider,
|
|
71
|
+
model,
|
|
72
|
+
member_prompt,
|
|
73
|
+
workspace_isolation_mode,
|
|
74
|
+
temporary_workspace_id,
|
|
75
|
+
created_at,
|
|
76
|
+
updated_at,
|
|
77
|
+
deleted_at
|
|
78
|
+
FROM parallel_session_members
|
|
79
|
+
WHERE group_id = ?
|
|
80
|
+
ORDER BY ordinal ASC, created_at ASC`)
|
|
81
|
+
.all(groupId)
|
|
82
|
+
.map((row) => mapParallelSessionMemberRow(row));
|
|
83
|
+
}
|
|
84
|
+
listBySessionIds(sessionIds) {
|
|
85
|
+
if (sessionIds.length === 0) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
const placeholders = sessionIds.map(() => "?").join(", ");
|
|
89
|
+
return this.db
|
|
90
|
+
.prepare(`SELECT
|
|
91
|
+
group_id,
|
|
92
|
+
session_id,
|
|
93
|
+
ordinal,
|
|
94
|
+
role,
|
|
95
|
+
provider,
|
|
96
|
+
model,
|
|
97
|
+
member_prompt,
|
|
98
|
+
workspace_isolation_mode,
|
|
99
|
+
temporary_workspace_id,
|
|
100
|
+
created_at,
|
|
101
|
+
updated_at,
|
|
102
|
+
deleted_at
|
|
103
|
+
FROM parallel_session_members
|
|
104
|
+
WHERE session_id IN (${placeholders})`)
|
|
105
|
+
.all(...sessionIds)
|
|
106
|
+
.map((row) => mapParallelSessionMemberRow(row));
|
|
107
|
+
}
|
|
108
|
+
listByGroupIds(groupIds) {
|
|
109
|
+
if (groupIds.length === 0) {
|
|
110
|
+
return [];
|
|
111
|
+
}
|
|
112
|
+
const placeholders = groupIds.map(() => "?").join(", ");
|
|
113
|
+
return this.db
|
|
114
|
+
.prepare(`SELECT
|
|
115
|
+
group_id,
|
|
116
|
+
session_id,
|
|
117
|
+
ordinal,
|
|
118
|
+
role,
|
|
119
|
+
provider,
|
|
120
|
+
model,
|
|
121
|
+
member_prompt,
|
|
122
|
+
workspace_isolation_mode,
|
|
123
|
+
temporary_workspace_id,
|
|
124
|
+
created_at,
|
|
125
|
+
updated_at,
|
|
126
|
+
deleted_at
|
|
127
|
+
FROM parallel_session_members
|
|
128
|
+
WHERE group_id IN (${placeholders})
|
|
129
|
+
ORDER BY group_id ASC, ordinal ASC`)
|
|
130
|
+
.all(...groupIds)
|
|
131
|
+
.map((row) => mapParallelSessionMemberRow(row));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function mapParallelSessionMemberRow(row) {
|
|
135
|
+
return {
|
|
136
|
+
groupId: row.group_id,
|
|
137
|
+
sessionId: row.session_id,
|
|
138
|
+
ordinal: row.ordinal,
|
|
139
|
+
role: row.role,
|
|
140
|
+
provider: row.provider,
|
|
141
|
+
model: row.model,
|
|
142
|
+
memberPrompt: row.member_prompt,
|
|
143
|
+
workspaceIsolationMode: row.workspace_isolation_mode,
|
|
144
|
+
temporaryWorkspaceId: row.temporary_workspace_id,
|
|
145
|
+
createdAt: row.created_at,
|
|
146
|
+
updatedAt: row.updated_at,
|
|
147
|
+
deletedAt: row.deleted_at
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=parallel-session-member-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parallel-session-member-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/parallel-session-member-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type Database from "better-sqlite3";
|
|
2
|
+
import type { SessionIsolatedWorkspaceRecord } from "../../types/domain.js";
|
|
3
|
+
export declare class SessionIsolatedWorkspaceRepository {
|
|
4
|
+
private readonly db;
|
|
5
|
+
constructor(db: Database.Database);
|
|
6
|
+
create(record: SessionIsolatedWorkspaceRecord): SessionIsolatedWorkspaceRecord;
|
|
7
|
+
update(record: SessionIsolatedWorkspaceRecord): SessionIsolatedWorkspaceRecord | null;
|
|
8
|
+
findById(id: string): SessionIsolatedWorkspaceRecord | null;
|
|
9
|
+
findByOwnerSessionId(ownerSessionId: string): SessionIsolatedWorkspaceRecord | null;
|
|
10
|
+
findByWorkspaceId(workspaceId: string): SessionIsolatedWorkspaceRecord | null;
|
|
11
|
+
listByGroupId(groupId: string): SessionIsolatedWorkspaceRecord[];
|
|
12
|
+
listByOwnerSessionIds(ownerSessionIds: readonly string[]): SessionIsolatedWorkspaceRecord[];
|
|
13
|
+
listByLifecycleStatuses(lifecycleStatuses: readonly SessionIsolatedWorkspaceRecord["lifecycleStatus"][]): SessionIsolatedWorkspaceRecord[];
|
|
14
|
+
listBySourceWorkspaceId(sourceWorkspaceId: string): SessionIsolatedWorkspaceRecord[];
|
|
15
|
+
}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
export class SessionIsolatedWorkspaceRepository {
|
|
2
|
+
db;
|
|
3
|
+
constructor(db) {
|
|
4
|
+
this.db = db;
|
|
5
|
+
}
|
|
6
|
+
create(record) {
|
|
7
|
+
this.db
|
|
8
|
+
.prepare(`INSERT INTO session_isolated_workspaces (
|
|
9
|
+
id,
|
|
10
|
+
group_id,
|
|
11
|
+
owner_session_id,
|
|
12
|
+
workspace_id,
|
|
13
|
+
source_workspace_id,
|
|
14
|
+
branch_name,
|
|
15
|
+
base_ref,
|
|
16
|
+
base_commit,
|
|
17
|
+
head_commit,
|
|
18
|
+
lifecycle_status,
|
|
19
|
+
promoted_at,
|
|
20
|
+
removed_at,
|
|
21
|
+
created_at,
|
|
22
|
+
updated_at
|
|
23
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
|
|
24
|
+
.run(record.id, record.groupId, record.ownerSessionId, record.workspaceId, record.sourceWorkspaceId, record.branchName, record.baseRef, record.baseCommit, record.headCommit, record.lifecycleStatus, record.promotedAt, record.removedAt, record.createdAt, record.updatedAt);
|
|
25
|
+
return record;
|
|
26
|
+
}
|
|
27
|
+
update(record) {
|
|
28
|
+
this.db
|
|
29
|
+
.prepare(`UPDATE session_isolated_workspaces
|
|
30
|
+
SET group_id = ?,
|
|
31
|
+
owner_session_id = ?,
|
|
32
|
+
workspace_id = ?,
|
|
33
|
+
source_workspace_id = ?,
|
|
34
|
+
branch_name = ?,
|
|
35
|
+
base_ref = ?,
|
|
36
|
+
base_commit = ?,
|
|
37
|
+
head_commit = ?,
|
|
38
|
+
lifecycle_status = ?,
|
|
39
|
+
promoted_at = ?,
|
|
40
|
+
removed_at = ?,
|
|
41
|
+
created_at = ?,
|
|
42
|
+
updated_at = ?
|
|
43
|
+
WHERE id = ?`)
|
|
44
|
+
.run(record.groupId, record.ownerSessionId, record.workspaceId, record.sourceWorkspaceId, record.branchName, record.baseRef, record.baseCommit, record.headCommit, record.lifecycleStatus, record.promotedAt, record.removedAt, record.createdAt, record.updatedAt, record.id);
|
|
45
|
+
return this.findById(record.id);
|
|
46
|
+
}
|
|
47
|
+
findById(id) {
|
|
48
|
+
const row = this.db
|
|
49
|
+
.prepare(`SELECT
|
|
50
|
+
id,
|
|
51
|
+
group_id,
|
|
52
|
+
owner_session_id,
|
|
53
|
+
workspace_id,
|
|
54
|
+
source_workspace_id,
|
|
55
|
+
branch_name,
|
|
56
|
+
base_ref,
|
|
57
|
+
base_commit,
|
|
58
|
+
head_commit,
|
|
59
|
+
lifecycle_status,
|
|
60
|
+
promoted_at,
|
|
61
|
+
removed_at,
|
|
62
|
+
created_at,
|
|
63
|
+
updated_at
|
|
64
|
+
FROM session_isolated_workspaces
|
|
65
|
+
WHERE id = ?`)
|
|
66
|
+
.get(id);
|
|
67
|
+
return row ? mapSessionIsolatedWorkspaceRow(row) : null;
|
|
68
|
+
}
|
|
69
|
+
findByOwnerSessionId(ownerSessionId) {
|
|
70
|
+
const row = this.db
|
|
71
|
+
.prepare(`SELECT
|
|
72
|
+
id,
|
|
73
|
+
group_id,
|
|
74
|
+
owner_session_id,
|
|
75
|
+
workspace_id,
|
|
76
|
+
source_workspace_id,
|
|
77
|
+
branch_name,
|
|
78
|
+
base_ref,
|
|
79
|
+
base_commit,
|
|
80
|
+
head_commit,
|
|
81
|
+
lifecycle_status,
|
|
82
|
+
promoted_at,
|
|
83
|
+
removed_at,
|
|
84
|
+
created_at,
|
|
85
|
+
updated_at
|
|
86
|
+
FROM session_isolated_workspaces
|
|
87
|
+
WHERE owner_session_id = ?`)
|
|
88
|
+
.get(ownerSessionId);
|
|
89
|
+
return row ? mapSessionIsolatedWorkspaceRow(row) : null;
|
|
90
|
+
}
|
|
91
|
+
findByWorkspaceId(workspaceId) {
|
|
92
|
+
const row = this.db
|
|
93
|
+
.prepare(`SELECT
|
|
94
|
+
id,
|
|
95
|
+
group_id,
|
|
96
|
+
owner_session_id,
|
|
97
|
+
workspace_id,
|
|
98
|
+
source_workspace_id,
|
|
99
|
+
branch_name,
|
|
100
|
+
base_ref,
|
|
101
|
+
base_commit,
|
|
102
|
+
head_commit,
|
|
103
|
+
lifecycle_status,
|
|
104
|
+
promoted_at,
|
|
105
|
+
removed_at,
|
|
106
|
+
created_at,
|
|
107
|
+
updated_at
|
|
108
|
+
FROM session_isolated_workspaces
|
|
109
|
+
WHERE workspace_id = ?`)
|
|
110
|
+
.get(workspaceId);
|
|
111
|
+
return row ? mapSessionIsolatedWorkspaceRow(row) : null;
|
|
112
|
+
}
|
|
113
|
+
listByGroupId(groupId) {
|
|
114
|
+
return this.db
|
|
115
|
+
.prepare(`SELECT
|
|
116
|
+
id,
|
|
117
|
+
group_id,
|
|
118
|
+
owner_session_id,
|
|
119
|
+
workspace_id,
|
|
120
|
+
source_workspace_id,
|
|
121
|
+
branch_name,
|
|
122
|
+
base_ref,
|
|
123
|
+
base_commit,
|
|
124
|
+
head_commit,
|
|
125
|
+
lifecycle_status,
|
|
126
|
+
promoted_at,
|
|
127
|
+
removed_at,
|
|
128
|
+
created_at,
|
|
129
|
+
updated_at
|
|
130
|
+
FROM session_isolated_workspaces
|
|
131
|
+
WHERE group_id = ?
|
|
132
|
+
ORDER BY created_at ASC`)
|
|
133
|
+
.all(groupId)
|
|
134
|
+
.map((row) => mapSessionIsolatedWorkspaceRow(row));
|
|
135
|
+
}
|
|
136
|
+
listByOwnerSessionIds(ownerSessionIds) {
|
|
137
|
+
if (ownerSessionIds.length === 0) {
|
|
138
|
+
return [];
|
|
139
|
+
}
|
|
140
|
+
const placeholders = ownerSessionIds.map(() => "?").join(", ");
|
|
141
|
+
return this.db
|
|
142
|
+
.prepare(`SELECT
|
|
143
|
+
id,
|
|
144
|
+
group_id,
|
|
145
|
+
owner_session_id,
|
|
146
|
+
workspace_id,
|
|
147
|
+
source_workspace_id,
|
|
148
|
+
branch_name,
|
|
149
|
+
base_ref,
|
|
150
|
+
base_commit,
|
|
151
|
+
head_commit,
|
|
152
|
+
lifecycle_status,
|
|
153
|
+
promoted_at,
|
|
154
|
+
removed_at,
|
|
155
|
+
created_at,
|
|
156
|
+
updated_at
|
|
157
|
+
FROM session_isolated_workspaces
|
|
158
|
+
WHERE owner_session_id IN (${placeholders})`)
|
|
159
|
+
.all(...ownerSessionIds)
|
|
160
|
+
.map((row) => mapSessionIsolatedWorkspaceRow(row));
|
|
161
|
+
}
|
|
162
|
+
listByLifecycleStatuses(lifecycleStatuses) {
|
|
163
|
+
if (lifecycleStatuses.length === 0) {
|
|
164
|
+
return [];
|
|
165
|
+
}
|
|
166
|
+
const placeholders = lifecycleStatuses.map(() => "?").join(", ");
|
|
167
|
+
return this.db
|
|
168
|
+
.prepare(`SELECT
|
|
169
|
+
id,
|
|
170
|
+
group_id,
|
|
171
|
+
owner_session_id,
|
|
172
|
+
workspace_id,
|
|
173
|
+
source_workspace_id,
|
|
174
|
+
branch_name,
|
|
175
|
+
base_ref,
|
|
176
|
+
base_commit,
|
|
177
|
+
head_commit,
|
|
178
|
+
lifecycle_status,
|
|
179
|
+
promoted_at,
|
|
180
|
+
removed_at,
|
|
181
|
+
created_at,
|
|
182
|
+
updated_at
|
|
183
|
+
FROM session_isolated_workspaces
|
|
184
|
+
WHERE lifecycle_status IN (${placeholders})`)
|
|
185
|
+
.all(...lifecycleStatuses)
|
|
186
|
+
.map((row) => mapSessionIsolatedWorkspaceRow(row));
|
|
187
|
+
}
|
|
188
|
+
listBySourceWorkspaceId(sourceWorkspaceId) {
|
|
189
|
+
return this.db
|
|
190
|
+
.prepare(`SELECT
|
|
191
|
+
id,
|
|
192
|
+
group_id,
|
|
193
|
+
owner_session_id,
|
|
194
|
+
workspace_id,
|
|
195
|
+
source_workspace_id,
|
|
196
|
+
branch_name,
|
|
197
|
+
base_ref,
|
|
198
|
+
base_commit,
|
|
199
|
+
head_commit,
|
|
200
|
+
lifecycle_status,
|
|
201
|
+
promoted_at,
|
|
202
|
+
removed_at,
|
|
203
|
+
created_at,
|
|
204
|
+
updated_at
|
|
205
|
+
FROM session_isolated_workspaces
|
|
206
|
+
WHERE source_workspace_id = ?
|
|
207
|
+
ORDER BY created_at ASC`)
|
|
208
|
+
.all(sourceWorkspaceId)
|
|
209
|
+
.map((row) => mapSessionIsolatedWorkspaceRow(row));
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
function mapSessionIsolatedWorkspaceRow(row) {
|
|
213
|
+
return {
|
|
214
|
+
id: row.id,
|
|
215
|
+
groupId: row.group_id,
|
|
216
|
+
ownerSessionId: row.owner_session_id,
|
|
217
|
+
workspaceId: row.workspace_id,
|
|
218
|
+
sourceWorkspaceId: row.source_workspace_id,
|
|
219
|
+
branchName: row.branch_name,
|
|
220
|
+
baseRef: row.base_ref,
|
|
221
|
+
baseCommit: row.base_commit,
|
|
222
|
+
headCommit: row.head_commit,
|
|
223
|
+
lifecycleStatus: row.lifecycle_status,
|
|
224
|
+
promotedAt: row.promoted_at,
|
|
225
|
+
removedAt: row.removed_at,
|
|
226
|
+
createdAt: row.created_at,
|
|
227
|
+
updatedAt: row.updated_at
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=session-isolated-workspace-repository.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-isolated-workspace-repository.js","sourceRoot":"","sources":["../../../../src/storage/repositories/session-isolated-workspace-repository.ts"],"names":[],"mappings":"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"}
|
|
@@ -236,6 +236,79 @@ CREATE INDEX IF NOT EXISTS idx_session_forks_parent_session_id
|
|
|
236
236
|
CREATE INDEX IF NOT EXISTS idx_session_forks_source_message_id
|
|
237
237
|
ON session_forks(fork_source_message_id);
|
|
238
238
|
|
|
239
|
+
CREATE TABLE IF NOT EXISTS parallel_session_groups (
|
|
240
|
+
id TEXT PRIMARY KEY,
|
|
241
|
+
workspace_id TEXT NOT NULL,
|
|
242
|
+
source_type TEXT NOT NULL CHECK (source_type IN ('fork', 'new')),
|
|
243
|
+
source_session_id TEXT,
|
|
244
|
+
source_message_id TEXT,
|
|
245
|
+
shared_prompt TEXT,
|
|
246
|
+
requested_count INTEGER NOT NULL CHECK (requested_count BETWEEN 2 AND 4),
|
|
247
|
+
anchor_session_id TEXT,
|
|
248
|
+
status TEXT NOT NULL CHECK (status IN ('active', 'deleting', 'deleted')),
|
|
249
|
+
created_by_user_id TEXT NOT NULL,
|
|
250
|
+
created_at TEXT NOT NULL,
|
|
251
|
+
updated_at TEXT NOT NULL,
|
|
252
|
+
deleted_at TEXT,
|
|
253
|
+
FOREIGN KEY (workspace_id) REFERENCES workspaces(id),
|
|
254
|
+
FOREIGN KEY (created_by_user_id) REFERENCES auth_users(id)
|
|
255
|
+
);
|
|
256
|
+
|
|
257
|
+
CREATE INDEX IF NOT EXISTS idx_parallel_session_groups_workspace_id
|
|
258
|
+
ON parallel_session_groups(workspace_id, status, updated_at DESC);
|
|
259
|
+
CREATE INDEX IF NOT EXISTS idx_parallel_session_groups_anchor_session_id
|
|
260
|
+
ON parallel_session_groups(anchor_session_id);
|
|
261
|
+
|
|
262
|
+
CREATE TABLE IF NOT EXISTS parallel_session_members (
|
|
263
|
+
group_id TEXT NOT NULL,
|
|
264
|
+
session_id TEXT NOT NULL PRIMARY KEY,
|
|
265
|
+
ordinal INTEGER NOT NULL CHECK (ordinal >= 0),
|
|
266
|
+
role TEXT NOT NULL CHECK (role IN ('anchor', 'member')),
|
|
267
|
+
provider TEXT NOT NULL,
|
|
268
|
+
model TEXT,
|
|
269
|
+
member_prompt TEXT,
|
|
270
|
+
workspace_isolation_mode TEXT NOT NULL CHECK (
|
|
271
|
+
workspace_isolation_mode IN ('none', 'temporary_worktree')
|
|
272
|
+
),
|
|
273
|
+
temporary_workspace_id TEXT,
|
|
274
|
+
created_at TEXT NOT NULL,
|
|
275
|
+
updated_at TEXT NOT NULL,
|
|
276
|
+
deleted_at TEXT,
|
|
277
|
+
FOREIGN KEY (group_id) REFERENCES parallel_session_groups(id) ON DELETE CASCADE
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_parallel_session_members_group_ordinal
|
|
281
|
+
ON parallel_session_members(group_id, ordinal);
|
|
282
|
+
CREATE INDEX IF NOT EXISTS idx_parallel_session_members_group_id
|
|
283
|
+
ON parallel_session_members(group_id, deleted_at, ordinal ASC);
|
|
284
|
+
|
|
285
|
+
CREATE TABLE IF NOT EXISTS session_isolated_workspaces (
|
|
286
|
+
id TEXT PRIMARY KEY,
|
|
287
|
+
group_id TEXT NOT NULL,
|
|
288
|
+
owner_session_id TEXT NOT NULL UNIQUE,
|
|
289
|
+
workspace_id TEXT NOT NULL,
|
|
290
|
+
source_workspace_id TEXT NOT NULL,
|
|
291
|
+
branch_name TEXT NOT NULL,
|
|
292
|
+
base_ref TEXT NOT NULL,
|
|
293
|
+
base_commit TEXT NOT NULL,
|
|
294
|
+
head_commit TEXT,
|
|
295
|
+
lifecycle_status TEXT NOT NULL CHECK (
|
|
296
|
+
lifecycle_status IN ('active', 'promoted', 'removing', 'removed')
|
|
297
|
+
),
|
|
298
|
+
promoted_at TEXT,
|
|
299
|
+
removed_at TEXT,
|
|
300
|
+
created_at TEXT NOT NULL,
|
|
301
|
+
updated_at TEXT NOT NULL,
|
|
302
|
+
FOREIGN KEY (group_id) REFERENCES parallel_session_groups(id) ON DELETE CASCADE,
|
|
303
|
+
FOREIGN KEY (workspace_id) REFERENCES workspaces(id),
|
|
304
|
+
FOREIGN KEY (source_workspace_id) REFERENCES workspaces(id)
|
|
305
|
+
);
|
|
306
|
+
|
|
307
|
+
CREATE INDEX IF NOT EXISTS idx_session_isolated_workspaces_group_id
|
|
308
|
+
ON session_isolated_workspaces(group_id, lifecycle_status, updated_at DESC);
|
|
309
|
+
CREATE INDEX IF NOT EXISTS idx_session_isolated_workspaces_workspace_id
|
|
310
|
+
ON session_isolated_workspaces(workspace_id, lifecycle_status, updated_at DESC);
|
|
311
|
+
|
|
239
312
|
CREATE TABLE IF NOT EXISTS session_changed_files (
|
|
240
313
|
session_id TEXT NOT NULL,
|
|
241
314
|
workspace_id TEXT NOT NULL,
|