@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skillhub.js","sourceRoot":"","sources":["../../src/routes/skillhub.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAAoD;AACpD,sCAAoF;AAEpF,+BAAoC;AACpC,6CAA+B;AAE/B,MAAM,MAAM,GAAG,IAAA,gBAAM,GAAE,CAAC;AAExB,MAAM,UAAU,GAAG,SAAS,CAAC;AAC7B,MAAM,SAAS,GAAG,gBAAgB,CAAC;AACnC,MAAM,QAAQ,GAAG,qCAAqC,UAAU,IAAI,SAAS,OAAO,CAAC;AACrF,MAAM,QAAQ,GAAG,gCAAgC,UAAU,IAAI,SAAS,EAAE,CAAC;AAE3E,gFAAgF;AAChF,
|
|
1
|
+
{"version":3,"file":"skillhub.js","sourceRoot":"","sources":["../../src/routes/skillhub.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/routes/update.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/routes/update.ts"],"names":[],"mappings":"AAcA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAySxB,eAAe,MAAM,CAAC"}
|
|
@@ -40,10 +40,12 @@ const path = __importStar(require("path"));
|
|
|
40
40
|
const os = __importStar(require("os"));
|
|
41
41
|
const config_1 = require("../config");
|
|
42
42
|
const terminal_manager_1 = require("../terminal-manager");
|
|
43
|
+
const authz_1 = require("../middleware/authz");
|
|
43
44
|
const DATA_DIR = process.env.CCWEB_DATA_DIR || path.join(os.homedir(), '.ccweb');
|
|
44
45
|
const UPDATE_STATUS_FILE = path.join(DATA_DIR, 'update-status.json');
|
|
45
46
|
const UPDATE_AGENT_LOG = path.join(DATA_DIR, 'update-agent.log');
|
|
46
47
|
const router = (0, express_1.Router)();
|
|
48
|
+
router.use(authz_1.requireAdmin);
|
|
47
49
|
const MEMORY_SAVE_COMMAND = '请更新与本项目相关的全部记忆、工作计划、已完成工作、未完成工作和后台任务\r';
|
|
48
50
|
// Idle = no PTY output for this many ms
|
|
49
51
|
const IDLE_THRESHOLD_MS = 5000;
|
|
@@ -53,11 +55,7 @@ const MAX_WAIT_MS = 120000; // 2 minutes max per project
|
|
|
53
55
|
* GET /api/update/check-version
|
|
54
56
|
* Queries npm registry for the latest version. Returns { current, latest, updateAvailable }.
|
|
55
57
|
*/
|
|
56
|
-
router.get('/check-version', async (
|
|
57
|
-
if (!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
58
|
-
res.status(403).json({ error: 'Admin only' });
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
58
|
+
router.get('/check-version', async (_req, res) => {
|
|
61
59
|
try {
|
|
62
60
|
const pkgPath = path.join(__dirname, '../../../package.json');
|
|
63
61
|
const current = JSON.parse(fs.readFileSync(pkgPath, 'utf-8')).version || '0.0.0';
|
|
@@ -80,11 +78,7 @@ router.get('/check-version', async (req, res) => {
|
|
|
80
78
|
* GET /api/update/check-running
|
|
81
79
|
* Returns list of running projects so the frontend can warn the user.
|
|
82
80
|
*/
|
|
83
|
-
router.get('/check-running', (
|
|
84
|
-
if (!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
85
|
-
res.status(403).json({ error: 'Admin only' });
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
81
|
+
router.get('/check-running', (_req, res) => {
|
|
88
82
|
const projects = (0, config_1.getProjects)();
|
|
89
83
|
const running = projects.filter((p) => p.status === 'running' && terminal_manager_1.terminalManager.hasTerminal(p.id));
|
|
90
84
|
res.json({
|
|
@@ -99,11 +93,7 @@ router.get('/check-running', (req, res) => {
|
|
|
99
93
|
* 2. Wait until Claude goes idle (no PTY output for IDLE_THRESHOLD_MS)
|
|
100
94
|
* Returns per-project status.
|
|
101
95
|
*/
|
|
102
|
-
router.post('/prepare', async (
|
|
103
|
-
if (!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
104
|
-
res.status(403).json({ error: 'Admin only' });
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
96
|
+
router.post('/prepare', async (_req, res) => {
|
|
107
97
|
const projects = (0, config_1.getProjects)();
|
|
108
98
|
const running = projects.filter((p) => p.status === 'running' && terminal_manager_1.terminalManager.hasTerminal(p.id));
|
|
109
99
|
if (running.length === 0) {
|
|
@@ -186,11 +176,7 @@ let updateInProgress = false;
|
|
|
186
176
|
* Admin-only. Spawns a detached updater agent, then shuts down the server.
|
|
187
177
|
* The agent waits for exit, runs npm install -g, and restarts ccweb.
|
|
188
178
|
*/
|
|
189
|
-
router.post('/execute', (
|
|
190
|
-
if (!(0, config_1.isAdminUser)(req.user?.username)) {
|
|
191
|
-
res.status(403).json({ error: 'Admin only' });
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
179
|
+
router.post('/execute', (_req, res) => {
|
|
194
180
|
if (updateInProgress) {
|
|
195
181
|
res.status(409).json({ error: 'Update already in progress' });
|
|
196
182
|
return;
|
|
@@ -222,21 +208,27 @@ const ACCESS_MODE = ${JSON.stringify(accessMode)};
|
|
|
222
208
|
const STATUS_FILE = ${JSON.stringify(UPDATE_STATUS_FILE)};
|
|
223
209
|
const PREV_VERSION = ${JSON.stringify(previousVersion)};
|
|
224
210
|
const PKG = '@tom2012/cc-web';
|
|
211
|
+
// Pinned registry (defence against tampered ~/.npmrc / rogue mirrors).
|
|
212
|
+
const REGISTRY = 'https://registry.npmjs.org';
|
|
225
213
|
|
|
226
214
|
function writeStatus(obj) {
|
|
227
215
|
try { fs.writeFileSync(STATUS_FILE, JSON.stringify(obj, null, 2)); } catch(e) { console.error('writeStatus failed:', e); }
|
|
228
216
|
}
|
|
229
217
|
|
|
230
|
-
// 1. Wait for server to exit (max 30s)
|
|
218
|
+
// 1. Wait for server to exit (max 30s).
|
|
219
|
+
// Use Atomics.wait on a dummy buffer as a reliable synchronous sleep — the prior
|
|
220
|
+
// spawnSync('sleep', ['0.5']) approach forked 60 processes per wait, failed
|
|
221
|
+
// silently when sleep was missing, and in error cases exited the loop in < 30ms.
|
|
222
|
+
const _sleepView = new Int32Array(new SharedArrayBuffer(4));
|
|
223
|
+
function sleepSync(ms) { Atomics.wait(_sleepView, 0, 0, ms); }
|
|
231
224
|
function isAlive(pid) { try { process.kill(pid, 0); return true; } catch { return false; } }
|
|
232
225
|
const os = require('os');
|
|
233
226
|
const HOME = os.homedir();
|
|
234
227
|
try { process.chdir(HOME); } catch (e) { /* already chdir'd via spawn cwd */ }
|
|
235
228
|
|
|
236
|
-
const { spawnSync: _sleep } = require('child_process');
|
|
237
229
|
let waited = 0;
|
|
238
230
|
while (isAlive(SERVER_PID) && waited < 30000) {
|
|
239
|
-
|
|
231
|
+
sleepSync(500);
|
|
240
232
|
waited += 500;
|
|
241
233
|
}
|
|
242
234
|
if (isAlive(SERVER_PID)) {
|
|
@@ -244,13 +236,13 @@ if (isAlive(SERVER_PID)) {
|
|
|
244
236
|
process.exit(1);
|
|
245
237
|
}
|
|
246
238
|
|
|
247
|
-
// 2. npm install
|
|
239
|
+
// 2. npm install (registry pinned)
|
|
248
240
|
let newVersion = PREV_VERSION;
|
|
249
241
|
let installOk = false;
|
|
250
242
|
try {
|
|
251
|
-
console.log('Running npm install -g ' + PKG + '@latest
|
|
252
|
-
execSync('npm install -g ' + PKG + '@latest --include=dev', { timeout: 300000, stdio: 'inherit', cwd: HOME });
|
|
253
|
-
try { newVersion = execSync('npm info ' + PKG + ' version', { encoding: 'utf-8', cwd: HOME }).trim(); } catch {}
|
|
243
|
+
console.log('Running npm install -g ' + PKG + '@latest --registry=' + REGISTRY);
|
|
244
|
+
execSync('npm install -g ' + PKG + '@latest --include=dev --registry=' + REGISTRY, { timeout: 300000, stdio: 'inherit', cwd: HOME });
|
|
245
|
+
try { newVersion = execSync('npm info ' + PKG + ' version --registry=' + REGISTRY, { encoding: 'utf-8', cwd: HOME }).trim(); } catch {}
|
|
254
246
|
console.log('Update complete: ' + PREV_VERSION + ' -> ' + newVersion);
|
|
255
247
|
installOk = true;
|
|
256
248
|
} catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/routes/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA2C;AAC3C,iDAAsC;AACtC,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AAEzB,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/routes/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* SessionManager — reads conversation history directly from
|
|
3
|
-
* native JSONL files
|
|
2
|
+
* SessionManager — reads conversation history directly from the CLI's
|
|
3
|
+
* native JSONL files (e.g. ~/.claude/projects/{encoded-path}/{uuid}.jsonl).
|
|
4
4
|
*
|
|
5
|
-
* No PTY parsing, no ANSI stripping, no heuristics
|
|
5
|
+
* No PTY parsing, no ANSI stripping, no heuristics. The JSONL is the single
|
|
6
|
+
* source of truth; ccweb maintains no separate conversation store.
|
|
6
7
|
*/
|
|
7
8
|
import { EventEmitter } from 'events';
|
|
8
9
|
import type { CliTool } from './types';
|
|
9
|
-
export interface SessionMessage {
|
|
10
|
-
role: 'user' | 'assistant';
|
|
11
|
-
content: string;
|
|
12
|
-
timestamp: string;
|
|
13
|
-
}
|
|
14
|
-
export interface Session {
|
|
15
|
-
id: string;
|
|
16
|
-
projectId: string;
|
|
17
|
-
startedAt: string;
|
|
18
|
-
messages: SessionMessage[];
|
|
19
|
-
}
|
|
20
10
|
export interface ChatBlockItem {
|
|
21
11
|
type: 'text' | 'thinking' | 'tool_use' | 'tool_result';
|
|
22
12
|
content: string;
|
|
@@ -46,13 +36,45 @@ declare class SessionManager extends EventEmitter {
|
|
|
46
36
|
getAllSemanticStatus(): Record<string, SemanticStatus>;
|
|
47
37
|
/** Return the JSONL file path currently being tailed for this project. */
|
|
48
38
|
getJsonlPath(projectId: string): string | null;
|
|
49
|
-
/** Return all parsed ChatBlocks from the
|
|
39
|
+
/** Return all parsed ChatBlocks from the project's latest JSONL file.
|
|
40
|
+
*
|
|
41
|
+
* Resolution order:
|
|
42
|
+
* 1. Active watcher already has `jsonlPath` discovered via hooks → use it.
|
|
43
|
+
* 2. Watcher exists but hasn't discovered the file yet → lazily scan the
|
|
44
|
+
* adapter's session dir, pick the latest JSONL, cache on the watcher.
|
|
45
|
+
* 3. No watcher (stopped project, user just navigated in) → resolve
|
|
46
|
+
* project config on-the-fly and pick the latest JSONL. Do NOT
|
|
47
|
+
* persist to `this.watchers` because a watcher without a PTY
|
|
48
|
+
* would drift (no hooks, no triggerRead).
|
|
49
|
+
*
|
|
50
|
+
* This indirection exists because chat history has to be loadable without
|
|
51
|
+
* a hook ever firing (e.g. immediately after ccweb restart — triggerRead
|
|
52
|
+
* only runs when Claude Code's hooks call `/api/hooks`).
|
|
53
|
+
*/
|
|
50
54
|
getChatHistory(projectId: string): ChatBlock[];
|
|
55
|
+
/** Parse a JSONL/JSON session file into ChatBlocks with stable ids. */
|
|
56
|
+
private parseJsonlFile;
|
|
57
|
+
/** Find the latest JSONL file for a project (single source of truth for
|
|
58
|
+
* both chat-history HTTP and hook-driven tail paths).
|
|
59
|
+
*
|
|
60
|
+
* Strategy: pick the newest file (by mtime) in the adapter's session dir.
|
|
61
|
+
* For adapters that store sessions in a shared tree (e.g. Codex's
|
|
62
|
+
* date-partitioned dir), use `getSessionFilesForProject` to scope by cwd.
|
|
63
|
+
*
|
|
64
|
+
* Deliberately has NO startedAt/recency filter — historical requirement
|
|
65
|
+
* was for "the file THIS session is writing", but that caused HTTP and
|
|
66
|
+
* WS paths to disagree on which file to read, breaking block-id dedup.
|
|
67
|
+
* Using "newest" works because Claude --continue updates the mtime of
|
|
68
|
+
* the continued file, and any new file it creates has the highest mtime.
|
|
69
|
+
* The caller (triggerRead) handles mid-session file switches by re-
|
|
70
|
+
* checking on each call.
|
|
71
|
+
*/
|
|
72
|
+
private findLatestJsonlForProject;
|
|
51
73
|
registerChatListener(projectId: string, cb: (msg: ChatBlock) => void): void;
|
|
52
74
|
unregisterChatListener(projectId: string, cb: (msg: ChatBlock) => void): void;
|
|
53
|
-
/** Call when a new PTY starts for a project
|
|
75
|
+
/** Call when a new PTY starts for a project. Registers a watcher so that
|
|
76
|
+
* subsequent hook-driven `triggerRead()` calls can tail the JSONL. */
|
|
54
77
|
startSession(projectId: string, folderPath: string, cliTool?: CliTool): void;
|
|
55
|
-
private pruneOldSessions;
|
|
56
78
|
/** Stop the session poller for a project (public for cleanup on terminal stop) */
|
|
57
79
|
stopWatcherForProject(projectId: string): void;
|
|
58
80
|
private stopWatcher;
|
|
@@ -60,33 +82,19 @@ declare class SessionManager extends EventEmitter {
|
|
|
60
82
|
* Updates semantic status directly from env var — does NOT read JSONL
|
|
61
83
|
* (JSONL has not been written yet at this point). */
|
|
62
84
|
handleHookPreTool(projectId: string, toolName: string): void;
|
|
63
|
-
/** Called by hooks route on PostToolUse/Stop.
|
|
64
|
-
*
|
|
85
|
+
/** Called by hooks route on PostToolUse/Stop. Discovers the latest JSONL
|
|
86
|
+
* file if not already cached, detects mid-session file switches (e.g.
|
|
87
|
+
* Claude --continue creating a fresh JSONL), then reads new content and
|
|
88
|
+
* emits block events to chat listeners. */
|
|
65
89
|
triggerRead(projectId: string): void;
|
|
66
90
|
/** Called by hooks route on Stop — clears semantic status before reading final text. */
|
|
67
91
|
clearSemanticStatus(projectId: string): void;
|
|
68
|
-
/** Find the newest session file created after startedAt in the tool's session dir */
|
|
69
|
-
private findJsonl;
|
|
70
92
|
/** Read new data from the session file and extract messages */
|
|
71
93
|
private readNewLines;
|
|
72
94
|
/** Read whole-file JSON session (Gemini etc.) — re-parse on each trigger, diff against last known state */
|
|
73
95
|
private readWholeFileSession;
|
|
74
96
|
/** Incremental JSONL reading (Claude, Codex) */
|
|
75
97
|
private readJsonlIncremental;
|
|
76
|
-
private appendMessages;
|
|
77
|
-
/** Overwrite all messages (for whole-file JSON tools that re-parse the entire session) */
|
|
78
|
-
private overwriteMessages;
|
|
79
|
-
/** Resolve folderPath for a project — from active watcher or project config */
|
|
80
|
-
private resolveFolderPath;
|
|
81
|
-
/** Read session files from a directory */
|
|
82
|
-
private readSessionsFromDir;
|
|
83
|
-
listSessions(projectId: string): (Omit<Session, 'messages'> & {
|
|
84
|
-
messageCount: number;
|
|
85
|
-
isCurrent: boolean;
|
|
86
|
-
})[];
|
|
87
|
-
/** Validate sessionId to prevent path traversal */
|
|
88
|
-
private isValidSessionId;
|
|
89
|
-
getSession(projectId: string, sessionId: string): Session | null;
|
|
90
98
|
}
|
|
91
99
|
export declare const sessionManager: SessionManager;
|
|
92
100
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../src/session-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,CAAC;IACvD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB;;;2BAGuB;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAWD,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AAE7E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAeD,cAAM,cAAe,SAAQ,YAAY;IACvC,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,aAAa,CAAoD;IACzE,OAAO,CAAC,cAAc,CAAqC;;IAM3D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAI3D,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC;IAQtD,0EAA0E;IAC1E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI9C;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE;IA0B9C,uEAAuE;IACvE,OAAO,CAAC,cAAc;IA2BtB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,yBAAyB;IA6BjC,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAK3E,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,GAAG,IAAI;IAO7E;2EACuE;IACvE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,OAAkB,GAAG,IAAI;IAYtF,kFAAkF;IAClF,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAI9C,OAAO,CAAC,WAAW;IAKnB;;0DAEsD;IACtD,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAU5D;;;gDAG4C;IAC5C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAiDpC,wFAAwF;IACxF,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAM5C,+DAA+D;IAC/D,OAAO,CAAC,YAAY;IAepB,2GAA2G;IAC3G,OAAO,CAAC,oBAAoB;IAmC5B,gDAAgD;IAChD,OAAO,CAAC,oBAAoB;CAgD7B;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|