@tom2012/cc-web 2026.4.19-o → 2026.4.19-q
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/README.md +2 -2
- package/backend/dist/adapters/claude-adapter.d.ts +1 -2
- package/backend/dist/adapters/claude-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/claude-adapter.js +0 -22
- package/backend/dist/adapters/claude-adapter.js.map +1 -1
- package/backend/dist/adapters/codex-adapter.d.ts +3 -4
- package/backend/dist/adapters/codex-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/codex-adapter.js +2 -40
- package/backend/dist/adapters/codex-adapter.js.map +1 -1
- package/backend/dist/adapters/gemini-adapter.d.ts +1 -7
- package/backend/dist/adapters/gemini-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/gemini-adapter.js +0 -8
- package/backend/dist/adapters/gemini-adapter.js.map +1 -1
- package/backend/dist/adapters/opencode-adapter.d.ts +1 -2
- package/backend/dist/adapters/opencode-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/opencode-adapter.js +0 -1
- package/backend/dist/adapters/opencode-adapter.js.map +1 -1
- package/backend/dist/adapters/qwen-adapter.d.ts +1 -2
- package/backend/dist/adapters/qwen-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/qwen-adapter.js +0 -1
- package/backend/dist/adapters/qwen-adapter.js.map +1 -1
- package/backend/dist/adapters/terminal-adapter.d.ts +1 -2
- package/backend/dist/adapters/terminal-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/terminal-adapter.js +0 -1
- package/backend/dist/adapters/terminal-adapter.js.map +1 -1
- package/backend/dist/adapters/types.d.ts +1 -3
- package/backend/dist/adapters/types.d.ts.map +1 -1
- package/backend/dist/agent-prompts.d.ts +70 -0
- package/backend/dist/agent-prompts.d.ts.map +1 -0
- package/backend/dist/agent-prompts.js +227 -0
- package/backend/dist/agent-prompts.js.map +1 -0
- package/backend/dist/auth.d.ts +12 -2
- package/backend/dist/auth.d.ts.map +1 -1
- package/backend/dist/auth.js +24 -12
- package/backend/dist/auth.js.map +1 -1
- package/backend/dist/config.d.ts +0 -1
- package/backend/dist/config.d.ts.map +1 -1
- package/backend/dist/config.js +0 -4
- package/backend/dist/config.js.map +1 -1
- package/backend/dist/index.d.ts.map +1 -1
- package/backend/dist/index.js +2 -25
- package/backend/dist/index.js.map +1 -1
- package/backend/dist/middleware/authz.d.ts +13 -0
- package/backend/dist/middleware/authz.d.ts.map +1 -0
- package/backend/dist/middleware/authz.js +40 -0
- package/backend/dist/middleware/authz.js.map +1 -0
- package/backend/dist/routes/agent-prompts.d.ts +3 -0
- package/backend/dist/routes/agent-prompts.d.ts.map +1 -0
- package/backend/dist/routes/agent-prompts.js +200 -0
- package/backend/dist/routes/agent-prompts.js.map +1 -0
- package/backend/dist/routes/backup.d.ts.map +1 -1
- package/backend/dist/routes/backup.js +10 -1
- package/backend/dist/routes/backup.js.map +1 -1
- package/backend/dist/routes/filesystem.d.ts.map +1 -1
- package/backend/dist/routes/filesystem.js +40 -5
- package/backend/dist/routes/filesystem.js.map +1 -1
- package/backend/dist/routes/hooks.d.ts.map +1 -1
- package/backend/dist/routes/hooks.js +21 -23
- package/backend/dist/routes/hooks.js.map +1 -1
- package/backend/dist/routes/plugin-bridge.d.ts.map +1 -1
- package/backend/dist/routes/plugin-bridge.js +16 -8
- package/backend/dist/routes/plugin-bridge.js.map +1 -1
- package/backend/dist/routes/plugins.d.ts.map +1 -1
- package/backend/dist/routes/plugins.js +8 -17
- package/backend/dist/routes/plugins.js.map +1 -1
- package/backend/dist/routes/projects.d.ts.map +1 -1
- package/backend/dist/routes/projects.js +24 -208
- package/backend/dist/routes/projects.js.map +1 -1
- package/backend/dist/routes/skillhub.d.ts.map +1 -1
- package/backend/dist/routes/skillhub.js +14 -4
- package/backend/dist/routes/skillhub.js.map +1 -1
- package/backend/dist/routes/update.d.ts.map +1 -1
- package/backend/dist/routes/update.js +19 -27
- package/backend/dist/routes/update.js.map +1 -1
- package/backend/dist/session-manager.d.ts +43 -35
- package/backend/dist/session-manager.d.ts.map +1 -1
- package/backend/dist/session-manager.js +148 -259
- package/backend/dist/session-manager.js.map +1 -1
- package/backend/dist/types.d.ts +12 -0
- package/backend/dist/types.d.ts.map +1 -1
- package/frontend/dist/assets/AssistantMessageContent-DLBIfRoa.js +13 -0
- package/frontend/dist/assets/{GraphPreview-BIuzGAbi.js → GraphPreview-CAHAPSNV.js} +1 -1
- package/frontend/dist/assets/MobilePage-j50EdDNc.js +14 -0
- package/frontend/dist/assets/{OfficePreview-DURcco1V.js → OfficePreview-BFdVaUwH.js} +2 -2
- package/frontend/dist/assets/{PlanPanel-BjNmFaVk.js → PlanPanel-BZEXnj25.js} +3 -3
- package/frontend/dist/assets/{ProjectPage-OChorfDC.js → ProjectPage-C-KJDFbz.js} +5 -5
- package/frontend/dist/assets/SettingsPage-DzSCqUzP.js +13 -0
- package/frontend/dist/assets/{SkillHubPage-jgiKwTgm.js → SkillHubPage-BWsT-k9U.js} +3 -3
- package/frontend/dist/assets/{chevron-down-Bzon7hPT.js → chevron-down-HPq7YAwV.js} +1 -1
- package/frontend/dist/assets/{chevron-up-CPpzmtnj.js → chevron-up-BGtmxzk3.js} +1 -1
- package/frontend/dist/assets/{index-Bs_kzF7I.js → index-A-o6g_qw.js} +7 -7
- package/frontend/dist/assets/{index-B_-Wdt1O.js → index-BjZ5yznR.js} +1 -1
- package/frontend/dist/assets/index-D7xFwrL6.css +1 -0
- package/frontend/dist/assets/index-DvERL7tB.js +7 -0
- package/frontend/dist/assets/{jszip.min-B96GO4qd.js → jszip.min-vX7H_FIl.js} +1 -1
- package/frontend/dist/assets/{maximize-2-Dil4Qhky.js → maximize-2-DxjkIxPt.js} +1 -1
- package/frontend/dist/assets/{search-CVR9qZ6f.js → search-9lLW2Oo_.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/AssistantMessageContent-DqROC6KU.js +0 -13
- package/frontend/dist/assets/MobilePage-DlL0D36Y.js +0 -14
- package/frontend/dist/assets/SettingsPage-BnD3RAIW.js +0 -13
- package/frontend/dist/assets/ShareViewPage-BmNNrInp.js +0 -1
- package/frontend/dist/assets/bot-DiR-1KP3.js +0 -7
- package/frontend/dist/assets/index-CdG-i6ZW.css +0 -1
- package/frontend/dist/assets/index-eYA5tcCV.js +0 -7
- package/frontend/dist/assets/user-D1xnGKon.js +0 -7
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* SessionManager — reads conversation history directly from
|
|
4
|
-
* native JSONL files
|
|
3
|
+
* SessionManager — reads conversation history directly from the CLI's
|
|
4
|
+
* native JSONL files (e.g. ~/.claude/projects/{encoded-path}/{uuid}.jsonl).
|
|
5
5
|
*
|
|
6
|
-
* No PTY parsing, no ANSI stripping, no heuristics
|
|
6
|
+
* No PTY parsing, no ANSI stripping, no heuristics. The JSONL is the single
|
|
7
|
+
* source of truth; ccweb maintains no separate conversation store.
|
|
7
8
|
*/
|
|
8
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -44,7 +45,6 @@ const fs = __importStar(require("fs"));
|
|
|
44
45
|
const path = __importStar(require("path"));
|
|
45
46
|
const crypto = __importStar(require("crypto"));
|
|
46
47
|
const events_1 = require("events");
|
|
47
|
-
const uuid_1 = require("uuid");
|
|
48
48
|
const config_1 = require("./config");
|
|
49
49
|
const adapters_1 = require("./adapters");
|
|
50
50
|
/** Generate a stable 16-hex-char id for a chat block.
|
|
@@ -53,22 +53,6 @@ const adapters_1 = require("./adapters");
|
|
|
53
53
|
function makeBlockId(jsonlPath, source) {
|
|
54
54
|
return crypto.createHash('sha1').update(jsonlPath + '\0' + source).digest('hex').slice(0, 16);
|
|
55
55
|
}
|
|
56
|
-
// ── Path helpers ─────────────────────────────────────────────────────────────
|
|
57
|
-
const LEGACY_SESSIONS_DIR = path.join(config_1.DATA_DIR, 'sessions');
|
|
58
|
-
/** New location: {folderPath}/.ccweb/sessions/ */
|
|
59
|
-
function projectSessionsDir(folderPath) {
|
|
60
|
-
return (0, config_1.ccwebSessionsDir)(folderPath);
|
|
61
|
-
}
|
|
62
|
-
function projectSessionFile(folderPath, sessionId) {
|
|
63
|
-
return path.join(projectSessionsDir(folderPath), `${sessionId}.json`);
|
|
64
|
-
}
|
|
65
|
-
/** Legacy location: data/sessions/{projectId}/ */
|
|
66
|
-
function legacySessionsDir(projectId) {
|
|
67
|
-
return path.join(LEGACY_SESSIONS_DIR, projectId);
|
|
68
|
-
}
|
|
69
|
-
function legacySessionFile(projectId, sessionId) {
|
|
70
|
-
return path.join(legacySessionsDir(projectId), `${sessionId}.json`);
|
|
71
|
-
}
|
|
72
56
|
// ── SessionManager ────────────────────────────────────────────────────────────
|
|
73
57
|
class SessionManager extends events_1.EventEmitter {
|
|
74
58
|
constructor() {
|
|
@@ -91,20 +75,56 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
91
75
|
getJsonlPath(projectId) {
|
|
92
76
|
return this.watchers.get(projectId)?.jsonlPath ?? null;
|
|
93
77
|
}
|
|
94
|
-
/** Return all parsed ChatBlocks from the
|
|
78
|
+
/** Return all parsed ChatBlocks from the project's latest JSONL file.
|
|
79
|
+
*
|
|
80
|
+
* Resolution order:
|
|
81
|
+
* 1. Active watcher already has `jsonlPath` discovered via hooks → use it.
|
|
82
|
+
* 2. Watcher exists but hasn't discovered the file yet → lazily scan the
|
|
83
|
+
* adapter's session dir, pick the latest JSONL, cache on the watcher.
|
|
84
|
+
* 3. No watcher (stopped project, user just navigated in) → resolve
|
|
85
|
+
* project config on-the-fly and pick the latest JSONL. Do NOT
|
|
86
|
+
* persist to `this.watchers` because a watcher without a PTY
|
|
87
|
+
* would drift (no hooks, no triggerRead).
|
|
88
|
+
*
|
|
89
|
+
* This indirection exists because chat history has to be loadable without
|
|
90
|
+
* a hook ever firing (e.g. immediately after ccweb restart — triggerRead
|
|
91
|
+
* only runs when Claude Code's hooks call `/api/hooks`).
|
|
92
|
+
*/
|
|
95
93
|
getChatHistory(projectId) {
|
|
96
94
|
const state = this.watchers.get(projectId);
|
|
97
|
-
if (
|
|
95
|
+
if (state) {
|
|
96
|
+
if (!state.jsonlPath) {
|
|
97
|
+
state.jsonlPath = this.findLatestJsonlForProject(state.folderPath, state.cliTool);
|
|
98
|
+
}
|
|
99
|
+
if (!state.jsonlPath)
|
|
100
|
+
return [];
|
|
101
|
+
return this.parseJsonlFile(state.jsonlPath, state.cliTool);
|
|
102
|
+
}
|
|
103
|
+
// No active watcher — fall back to project config for stopped projects
|
|
104
|
+
const project = (0, config_1.getProject)(projectId);
|
|
105
|
+
if (!project) {
|
|
106
|
+
console.warn(`[SessionManager] getChatHistory(${projectId}): project not in registry`);
|
|
98
107
|
return [];
|
|
99
|
-
|
|
108
|
+
}
|
|
109
|
+
const cliTool = project.cliTool ?? 'claude';
|
|
110
|
+
const jsonlPath = this.findLatestJsonlForProject(project.folderPath, cliTool);
|
|
111
|
+
if (!jsonlPath) {
|
|
112
|
+
console.warn(`[SessionManager] getChatHistory(${projectId}): no JSONL found for ${project.folderPath} (${cliTool})`);
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
115
|
+
return this.parseJsonlFile(jsonlPath, cliTool);
|
|
116
|
+
}
|
|
117
|
+
/** Parse a JSONL/JSON session file into ChatBlocks with stable ids. */
|
|
118
|
+
parseJsonlFile(jsonlPath, cliTool) {
|
|
119
|
+
const adapter = (0, adapters_1.getAdapter)(cliTool);
|
|
100
120
|
try {
|
|
101
|
-
const content = fs.readFileSync(
|
|
121
|
+
const content = fs.readFileSync(jsonlPath, 'utf-8');
|
|
102
122
|
// Whole-file JSON tools (e.g. Gemini): parse entire file at once
|
|
103
123
|
if (typeof adapter.parseSessionFile === 'function') {
|
|
104
124
|
const blocks = adapter.parseSessionFile(content);
|
|
105
125
|
return blocks.map((b) => ({
|
|
106
126
|
...b,
|
|
107
|
-
id: b.id ?? makeBlockId(
|
|
127
|
+
id: b.id ?? makeBlockId(jsonlPath, b.timestamp + '|' + JSON.stringify(b.blocks)),
|
|
108
128
|
}));
|
|
109
129
|
}
|
|
110
130
|
// JSONL tools (Claude, Codex): parse line by line
|
|
@@ -113,7 +133,7 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
113
133
|
for (const line of lines) {
|
|
114
134
|
const block = adapter.parseLineBlocks(line);
|
|
115
135
|
if (block)
|
|
116
|
-
blocks.push({ ...block, id: makeBlockId(
|
|
136
|
+
blocks.push({ ...block, id: makeBlockId(jsonlPath, line) });
|
|
117
137
|
}
|
|
118
138
|
return blocks;
|
|
119
139
|
}
|
|
@@ -121,6 +141,53 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
121
141
|
return [];
|
|
122
142
|
}
|
|
123
143
|
}
|
|
144
|
+
/** Find the latest JSONL file for a project (single source of truth for
|
|
145
|
+
* both chat-history HTTP and hook-driven tail paths).
|
|
146
|
+
*
|
|
147
|
+
* Strategy: pick the newest file (by mtime) in the adapter's session dir.
|
|
148
|
+
* For adapters that store sessions in a shared tree (e.g. Codex's
|
|
149
|
+
* date-partitioned dir), use `getSessionFilesForProject` to scope by cwd.
|
|
150
|
+
*
|
|
151
|
+
* Deliberately has NO startedAt/recency filter — historical requirement
|
|
152
|
+
* was for "the file THIS session is writing", but that caused HTTP and
|
|
153
|
+
* WS paths to disagree on which file to read, breaking block-id dedup.
|
|
154
|
+
* Using "newest" works because Claude --continue updates the mtime of
|
|
155
|
+
* the continued file, and any new file it creates has the highest mtime.
|
|
156
|
+
* The caller (triggerRead) handles mid-session file switches by re-
|
|
157
|
+
* checking on each call.
|
|
158
|
+
*/
|
|
159
|
+
findLatestJsonlForProject(folderPath, cliTool) {
|
|
160
|
+
const adapter = (0, adapters_1.getAdapter)(cliTool);
|
|
161
|
+
if (typeof adapter.getSessionFilesForProject === 'function') {
|
|
162
|
+
const files = adapter.getSessionFilesForProject(folderPath);
|
|
163
|
+
if (files.length === 0)
|
|
164
|
+
return null;
|
|
165
|
+
try {
|
|
166
|
+
return files
|
|
167
|
+
.map((f) => ({ f, mtime: fs.statSync(f).mtimeMs }))
|
|
168
|
+
.sort((a, b) => b.mtime - a.mtime)[0].f;
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
const dir = adapter.getSessionDir(folderPath);
|
|
175
|
+
if (!dir || !fs.existsSync(dir))
|
|
176
|
+
return null;
|
|
177
|
+
const ext = typeof adapter.getSessionFileExtension === 'function'
|
|
178
|
+
? adapter.getSessionFileExtension()
|
|
179
|
+
: '.jsonl';
|
|
180
|
+
try {
|
|
181
|
+
const files = fs.readdirSync(dir)
|
|
182
|
+
.filter((f) => f.endsWith(ext))
|
|
183
|
+
.map((f) => ({ f, mtime: fs.statSync(path.join(dir, f)).mtimeMs }))
|
|
184
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
185
|
+
return files.length > 0 ? path.join(dir, files[0].f) : null;
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
124
191
|
registerChatListener(projectId, cb) {
|
|
125
192
|
if (!this.chatListeners.has(projectId))
|
|
126
193
|
this.chatListeners.set(projectId, new Set());
|
|
@@ -134,51 +201,18 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
134
201
|
if (listeners.size === 0)
|
|
135
202
|
this.chatListeners.delete(projectId);
|
|
136
203
|
}
|
|
137
|
-
/** Call when a new PTY starts for a project
|
|
204
|
+
/** Call when a new PTY starts for a project. Registers a watcher so that
|
|
205
|
+
* subsequent hook-driven `triggerRead()` calls can tail the JSONL. */
|
|
138
206
|
startSession(projectId, folderPath, cliTool = 'claude') {
|
|
139
|
-
// Stop any previous watcher
|
|
140
207
|
this.stopWatcher(projectId);
|
|
141
|
-
|
|
142
|
-
const startedAt = Date.now();
|
|
143
|
-
// Create our session file in .ccweb/sessions/
|
|
144
|
-
fs.mkdirSync(projectSessionsDir(folderPath), { recursive: true });
|
|
145
|
-
const session = { id: sessionId, projectId, startedAt: new Date(startedAt).toISOString(), messages: [] };
|
|
146
|
-
fs.writeFileSync(projectSessionFile(folderPath, sessionId), JSON.stringify(session, null, 2), 'utf-8');
|
|
147
|
-
const state = {
|
|
148
|
-
sessionId,
|
|
208
|
+
this.watchers.set(projectId, {
|
|
149
209
|
folderPath,
|
|
150
210
|
cliTool,
|
|
151
211
|
jsonlPath: null,
|
|
152
212
|
fileOffset: 0,
|
|
153
|
-
startedAt,
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// Prune old sessions (keep latest 20)
|
|
157
|
-
this.pruneOldSessions(folderPath, projectId);
|
|
158
|
-
console.log(`[SessionManager] Started session ${sessionId} for project ${projectId}`);
|
|
159
|
-
}
|
|
160
|
-
pruneOldSessions(folderPath, projectId, keep = 20) {
|
|
161
|
-
const dirs = [projectSessionsDir(folderPath), legacySessionsDir(projectId)];
|
|
162
|
-
for (const dir of dirs) {
|
|
163
|
-
if (!fs.existsSync(dir))
|
|
164
|
-
continue;
|
|
165
|
-
try {
|
|
166
|
-
const files = fs.readdirSync(dir)
|
|
167
|
-
.filter((f) => f.endsWith('.json'))
|
|
168
|
-
.sort(); // session filenames start with timestamp, so sort = chronological
|
|
169
|
-
if (files.length <= keep)
|
|
170
|
-
continue;
|
|
171
|
-
const toDelete = files.slice(0, files.length - keep);
|
|
172
|
-
for (const f of toDelete) {
|
|
173
|
-
try {
|
|
174
|
-
fs.unlinkSync(path.join(dir, f));
|
|
175
|
-
}
|
|
176
|
-
catch { /**/ }
|
|
177
|
-
}
|
|
178
|
-
console.log(`[SessionManager] Pruned ${toDelete.length} old sessions in ${dir}`);
|
|
179
|
-
}
|
|
180
|
-
catch { /**/ }
|
|
181
|
-
}
|
|
213
|
+
startedAt: Date.now(),
|
|
214
|
+
});
|
|
215
|
+
console.log(`[SessionManager] Started watcher for project ${projectId}`);
|
|
182
216
|
}
|
|
183
217
|
/** Stop the session poller for a project (public for cleanup on terminal stop) */
|
|
184
218
|
stopWatcherForProject(projectId) {
|
|
@@ -200,49 +234,61 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
200
234
|
this.semanticStatus.set(projectId, newStatus);
|
|
201
235
|
this.emit('semantic', { projectId, status: newStatus });
|
|
202
236
|
}
|
|
203
|
-
/** Called by hooks route on PostToolUse/Stop.
|
|
204
|
-
*
|
|
237
|
+
/** Called by hooks route on PostToolUse/Stop. Discovers the latest JSONL
|
|
238
|
+
* file if not already cached, detects mid-session file switches (e.g.
|
|
239
|
+
* Claude --continue creating a fresh JSONL), then reads new content and
|
|
240
|
+
* emits block events to chat listeners. */
|
|
205
241
|
triggerRead(projectId) {
|
|
206
242
|
const state = this.watchers.get(projectId);
|
|
207
243
|
if (!state)
|
|
208
244
|
return;
|
|
209
|
-
//
|
|
245
|
+
// Re-check latest file each call: shares the single `findLatestJsonlForProject`
|
|
246
|
+
// path with getChatHistory so HTTP and WS paths always agree on which file
|
|
247
|
+
// is authoritative (→ consistent block ids → frontend dedup works).
|
|
248
|
+
const latest = this.findLatestJsonlForProject(state.folderPath, state.cliTool);
|
|
249
|
+
if (latest && latest !== state.jsonlPath) {
|
|
250
|
+
state.jsonlPath = latest;
|
|
251
|
+
state.fileOffset = 0;
|
|
252
|
+
}
|
|
210
253
|
if (!state.jsonlPath) {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
setTimeout(() => {
|
|
220
|
-
const s = this.watchers.get(projectId);
|
|
221
|
-
if (!s)
|
|
222
|
-
return;
|
|
223
|
-
if (s.jsonlPath) {
|
|
224
|
-
s.retrying = false;
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
s.jsonlPath = this.findJsonl(s.folderPath, s.startedAt, s.cliTool);
|
|
228
|
-
if (s.jsonlPath) {
|
|
229
|
-
s.retrying = false;
|
|
230
|
-
s.fileOffset = 0;
|
|
231
|
-
this.readNewLines(projectId, s);
|
|
232
|
-
}
|
|
233
|
-
else if (attempt + 1 < delays.length) {
|
|
234
|
-
retry(attempt + 1);
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
s.retrying = false;
|
|
238
|
-
console.warn(`[SessionManager] JSONL file not found for project ${projectId} after ${delays.length} retries — chat history unavailable`);
|
|
239
|
-
}
|
|
240
|
-
}, delays[attempt]);
|
|
241
|
-
};
|
|
242
|
-
retry(0);
|
|
254
|
+
// Brand-new project or session dir not yet created — retry a few times.
|
|
255
|
+
// Use `retryChainActive` only to avoid stacking MULTIPLE identical
|
|
256
|
+
// findLatestJsonlForProject() disk scans when Stop hook's 300ms/1500ms
|
|
257
|
+
// re-trigger chain arrives while the first retry chain hasn't finished.
|
|
258
|
+
// Unlike the prior `state.retrying` guard, this does NOT short-circuit
|
|
259
|
+
// a triggerRead that arrives AFTER jsonlPath is resolved — the check
|
|
260
|
+
// above at line 264 handles that case synchronously.
|
|
261
|
+
if (state.retryChainActive)
|
|
243
262
|
return;
|
|
244
|
-
|
|
245
|
-
|
|
263
|
+
state.retryChainActive = true;
|
|
264
|
+
const delays = [500, 1000, 2000];
|
|
265
|
+
const retry = (attempt) => {
|
|
266
|
+
setTimeout(() => {
|
|
267
|
+
const s = this.watchers.get(projectId);
|
|
268
|
+
if (!s)
|
|
269
|
+
return;
|
|
270
|
+
if (s.jsonlPath) {
|
|
271
|
+
s.retryChainActive = false;
|
|
272
|
+
return;
|
|
273
|
+
} // resolved by a concurrent trigger
|
|
274
|
+
const later = this.findLatestJsonlForProject(s.folderPath, s.cliTool);
|
|
275
|
+
if (later) {
|
|
276
|
+
s.jsonlPath = later;
|
|
277
|
+
s.fileOffset = 0;
|
|
278
|
+
s.retryChainActive = false;
|
|
279
|
+
this.readNewLines(projectId, s);
|
|
280
|
+
}
|
|
281
|
+
else if (attempt + 1 < delays.length) {
|
|
282
|
+
retry(attempt + 1);
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
s.retryChainActive = false;
|
|
286
|
+
console.warn(`[SessionManager] JSONL file not found for project ${projectId} after ${delays.length} retries — chat history unavailable`);
|
|
287
|
+
}
|
|
288
|
+
}, delays[attempt]);
|
|
289
|
+
};
|
|
290
|
+
retry(0);
|
|
291
|
+
return;
|
|
246
292
|
}
|
|
247
293
|
this.readNewLines(projectId, state);
|
|
248
294
|
}
|
|
@@ -253,27 +299,6 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
253
299
|
this.semanticStatus.delete(projectId);
|
|
254
300
|
this.emit('semantic', { projectId, status: null });
|
|
255
301
|
}
|
|
256
|
-
/** Find the newest session file created after startedAt in the tool's session dir */
|
|
257
|
-
findJsonl(folderPath, startedAt, cliTool = 'claude') {
|
|
258
|
-
const adapter = (0, adapters_1.getAdapter)(cliTool);
|
|
259
|
-
const dir = adapter.getSessionDir(folderPath);
|
|
260
|
-
if (!dir || !fs.existsSync(dir))
|
|
261
|
-
return null;
|
|
262
|
-
const ext = typeof adapter.getSessionFileExtension === 'function'
|
|
263
|
-
? adapter.getSessionFileExtension()
|
|
264
|
-
: '.jsonl';
|
|
265
|
-
try {
|
|
266
|
-
const files = fs.readdirSync(dir)
|
|
267
|
-
.filter((f) => f.endsWith(ext))
|
|
268
|
-
.map((f) => ({ f, mtime: fs.statSync(path.join(dir, f)).mtimeMs }))
|
|
269
|
-
.filter(({ mtime }) => mtime >= startedAt - 5000) // 5s grace
|
|
270
|
-
.sort((a, b) => b.mtime - a.mtime);
|
|
271
|
-
return files.length > 0 ? path.join(dir, files[0].f) : null;
|
|
272
|
-
}
|
|
273
|
-
catch {
|
|
274
|
-
return null;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
302
|
/** Read new data from the session file and extract messages */
|
|
278
303
|
readNewLines(projectId, state) {
|
|
279
304
|
if (!state.jsonlPath)
|
|
@@ -298,18 +323,6 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
298
323
|
const blocks = adapter.parseSessionFile(content);
|
|
299
324
|
if (blocks.length === 0)
|
|
300
325
|
return;
|
|
301
|
-
// Extract SessionMessages for our ccweb session file
|
|
302
|
-
const newMsgs = [];
|
|
303
|
-
for (const block of blocks) {
|
|
304
|
-
const text = block.blocks.filter(b => b.type === 'text').map(b => b.content).join('\n').trim();
|
|
305
|
-
if (text) {
|
|
306
|
-
newMsgs.push({ role: block.role, content: text, timestamp: block.timestamp });
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
if (newMsgs.length > 0) {
|
|
310
|
-
// Overwrite (not append) since we re-parsed the whole file
|
|
311
|
-
this.overwriteMessages(state.folderPath, state.sessionId, newMsgs);
|
|
312
|
-
}
|
|
313
326
|
// Emit latest blocks to chat listeners + update semantic status
|
|
314
327
|
for (const block of blocks) {
|
|
315
328
|
const blockWithId = {
|
|
@@ -351,17 +364,6 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
351
364
|
fs.readSync(fd, buf, 0, toRead, state.fileOffset);
|
|
352
365
|
state.fileOffset = stat.size;
|
|
353
366
|
const lines = buf.toString('utf-8').split('\n').filter((l) => l.trim());
|
|
354
|
-
let changed = false;
|
|
355
|
-
const newMsgs = [];
|
|
356
|
-
for (const line of lines) {
|
|
357
|
-
const msg = adapter.parseLine(line);
|
|
358
|
-
if (msg)
|
|
359
|
-
newMsgs.push(msg);
|
|
360
|
-
}
|
|
361
|
-
if (newMsgs.length > 0) {
|
|
362
|
-
this.appendMessages(state.folderPath, state.sessionId, newMsgs);
|
|
363
|
-
changed = true;
|
|
364
|
-
}
|
|
365
367
|
// Emit to chat listeners + update semantic status
|
|
366
368
|
for (const line of lines) {
|
|
367
369
|
const parsed = adapter.parseLineBlocks(line);
|
|
@@ -391,9 +393,6 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
391
393
|
}
|
|
392
394
|
}
|
|
393
395
|
}
|
|
394
|
-
if (changed) {
|
|
395
|
-
console.log(`[SessionManager] Updated session ${state.sessionId}`);
|
|
396
|
-
}
|
|
397
396
|
}
|
|
398
397
|
catch {
|
|
399
398
|
// file may be temporarily locked or missing — try again next poll
|
|
@@ -406,116 +405,6 @@ class SessionManager extends events_1.EventEmitter {
|
|
|
406
405
|
catch { /**/ }
|
|
407
406
|
}
|
|
408
407
|
}
|
|
409
|
-
appendMessages(folderPath, sessionId, msgs) {
|
|
410
|
-
const file = projectSessionFile(folderPath, sessionId);
|
|
411
|
-
try {
|
|
412
|
-
const session = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
413
|
-
session.messages.push(...msgs);
|
|
414
|
-
const tmpPath = file + `.tmp.${process.pid}`;
|
|
415
|
-
fs.writeFileSync(tmpPath, JSON.stringify(session, null, 2), 'utf-8');
|
|
416
|
-
fs.renameSync(tmpPath, file);
|
|
417
|
-
}
|
|
418
|
-
catch (err) {
|
|
419
|
-
console.error(`[SessionManager] Failed to append messages to session ${sessionId}:`, err);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
/** Overwrite all messages (for whole-file JSON tools that re-parse the entire session) */
|
|
423
|
-
overwriteMessages(folderPath, sessionId, msgs) {
|
|
424
|
-
const file = projectSessionFile(folderPath, sessionId);
|
|
425
|
-
try {
|
|
426
|
-
const session = JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
427
|
-
session.messages = msgs;
|
|
428
|
-
const tmpPath = file + `.tmp.${process.pid}`;
|
|
429
|
-
fs.writeFileSync(tmpPath, JSON.stringify(session, null, 2), 'utf-8');
|
|
430
|
-
fs.renameSync(tmpPath, file);
|
|
431
|
-
}
|
|
432
|
-
catch (err) {
|
|
433
|
-
console.error(`[SessionManager] Failed to overwrite messages for session ${sessionId}:`, err);
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
// ── Query API ──────────────────────────────────────────────────────────────
|
|
437
|
-
/** Resolve folderPath for a project — from active watcher or project config */
|
|
438
|
-
resolveFolderPath(projectId) {
|
|
439
|
-
const watcher = this.watchers.get(projectId);
|
|
440
|
-
if (watcher)
|
|
441
|
-
return watcher.folderPath;
|
|
442
|
-
const project = (0, config_1.getProject)(projectId);
|
|
443
|
-
return project?.folderPath ?? null;
|
|
444
|
-
}
|
|
445
|
-
/** Read session files from a directory */
|
|
446
|
-
readSessionsFromDir(dir, currentId) {
|
|
447
|
-
if (!fs.existsSync(dir))
|
|
448
|
-
return [];
|
|
449
|
-
try {
|
|
450
|
-
return fs.readdirSync(dir)
|
|
451
|
-
.filter((f) => f.endsWith('.json'))
|
|
452
|
-
.map((f) => {
|
|
453
|
-
try {
|
|
454
|
-
const s = JSON.parse(fs.readFileSync(path.join(dir, f), 'utf-8'));
|
|
455
|
-
return {
|
|
456
|
-
id: s.id,
|
|
457
|
-
projectId: s.projectId,
|
|
458
|
-
startedAt: s.startedAt,
|
|
459
|
-
messageCount: s.messages.length,
|
|
460
|
-
isCurrent: s.id === currentId,
|
|
461
|
-
};
|
|
462
|
-
}
|
|
463
|
-
catch {
|
|
464
|
-
return null;
|
|
465
|
-
}
|
|
466
|
-
})
|
|
467
|
-
.filter((s) => s !== null);
|
|
468
|
-
}
|
|
469
|
-
catch {
|
|
470
|
-
return [];
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
listSessions(projectId) {
|
|
474
|
-
const currentId = this.watchers.get(projectId)?.sessionId;
|
|
475
|
-
const folderPath = this.resolveFolderPath(projectId);
|
|
476
|
-
// Collect from .ccweb/sessions/ (primary) and legacy data/sessions/ (fallback)
|
|
477
|
-
const results = [];
|
|
478
|
-
const seenIds = new Set();
|
|
479
|
-
if (folderPath) {
|
|
480
|
-
for (const s of this.readSessionsFromDir(projectSessionsDir(folderPath), currentId)) {
|
|
481
|
-
results.push(s);
|
|
482
|
-
seenIds.add(s.id);
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
// Legacy fallback — include sessions not already in .ccweb/
|
|
486
|
-
for (const s of this.readSessionsFromDir(legacySessionsDir(projectId), currentId)) {
|
|
487
|
-
if (!seenIds.has(s.id)) {
|
|
488
|
-
results.push(s);
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
return results.sort((a, b) => b.startedAt.localeCompare(a.startedAt));
|
|
492
|
-
}
|
|
493
|
-
/** Validate sessionId to prevent path traversal */
|
|
494
|
-
isValidSessionId(sessionId) {
|
|
495
|
-
return /^[\w-]+$/.test(sessionId) && !sessionId.includes('..');
|
|
496
|
-
}
|
|
497
|
-
getSession(projectId, sessionId) {
|
|
498
|
-
if (!this.isValidSessionId(sessionId))
|
|
499
|
-
return null;
|
|
500
|
-
const folderPath = this.resolveFolderPath(projectId);
|
|
501
|
-
// Try .ccweb/ first
|
|
502
|
-
if (folderPath) {
|
|
503
|
-
const file = projectSessionFile(folderPath, sessionId);
|
|
504
|
-
try {
|
|
505
|
-
if (fs.existsSync(file)) {
|
|
506
|
-
return JSON.parse(fs.readFileSync(file, 'utf-8'));
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
catch { /* fall through */ }
|
|
510
|
-
}
|
|
511
|
-
// Legacy fallback
|
|
512
|
-
try {
|
|
513
|
-
return JSON.parse(fs.readFileSync(legacySessionFile(projectId, sessionId), 'utf-8'));
|
|
514
|
-
}
|
|
515
|
-
catch {
|
|
516
|
-
return null;
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
408
|
}
|
|
520
409
|
exports.sessionManager = new SessionManager();
|
|
521
410
|
//# sourceMappingURL=session-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"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"}
|
package/backend/dist/types.d.ts
CHANGED
|
@@ -21,4 +21,16 @@ export interface Config {
|
|
|
21
21
|
passwordHash: string;
|
|
22
22
|
jwtSecret: string;
|
|
23
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* Agent Prompt — a saved prompt snippet that the user can "plug into" the
|
|
26
|
+
* project's CLAUDE.md via a click, and "unplug" later by exact text match.
|
|
27
|
+
* Stored per-user globally (~/.ccweb/agent-prompts[-user].json) or per-project
|
|
28
|
+
* ({projectFolder}/.ccweb/agent-prompts.json).
|
|
29
|
+
*/
|
|
30
|
+
export interface AgentPrompt {
|
|
31
|
+
id: string;
|
|
32
|
+
label: string;
|
|
33
|
+
command: string;
|
|
34
|
+
createdAt: string;
|
|
35
|
+
}
|
|
24
36
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,GAAG,WAAW,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAGD,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEvF,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,SAAS,GAAG,WAAW,CAAC;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,YAAY,EAAE,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAGD,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|