hammoc 1.1.6 → 1.2.1
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 +8 -2
- package/bin/hammoc.js +12 -0
- package/package.json +3 -3
- package/packages/client/dist/assets/index-Cb8l58mq.js +1451 -0
- package/packages/client/dist/assets/index-Cc_AX5QV.css +32 -0
- package/packages/client/dist/assets/{index-BQASJJka.js → index-G9znBi60.js} +1 -1
- package/packages/client/dist/index.html +2 -2
- package/packages/client/dist/sw.js +1 -1
- package/packages/server/dist/app.d.ts.map +1 -1
- package/packages/server/dist/app.js +3 -0
- package/packages/server/dist/app.js.map +1 -1
- package/packages/server/dist/controllers/queueController.d.ts +1 -0
- package/packages/server/dist/controllers/queueController.d.ts.map +1 -1
- package/packages/server/dist/controllers/queueController.js +12 -0
- package/packages/server/dist/controllers/queueController.js.map +1 -1
- package/packages/server/dist/controllers/serverController.d.ts.map +1 -1
- package/packages/server/dist/controllers/serverController.js +20 -2
- package/packages/server/dist/controllers/serverController.js.map +1 -1
- package/packages/server/dist/controllers/sessionController.d.ts +5 -10
- package/packages/server/dist/controllers/sessionController.d.ts.map +1 -1
- package/packages/server/dist/controllers/sessionController.js +65 -80
- package/packages/server/dist/controllers/sessionController.js.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.d.ts +4 -0
- package/packages/server/dist/handlers/streamCallbacks.d.ts.map +1 -1
- package/packages/server/dist/handlers/streamCallbacks.js +9 -3
- package/packages/server/dist/handlers/streamCallbacks.js.map +1 -1
- package/packages/server/dist/handlers/websocket.d.ts +9 -15
- package/packages/server/dist/handlers/websocket.d.ts.map +1 -1
- package/packages/server/dist/handlers/websocket.js +668 -120
- package/packages/server/dist/handlers/websocket.js.map +1 -1
- package/packages/server/dist/locales/en/server.json +3 -1
- package/packages/server/dist/locales/es/server.json +3 -1
- package/packages/server/dist/locales/ja/server.json +3 -1
- package/packages/server/dist/locales/ko/server.json +3 -1
- package/packages/server/dist/locales/pt/server.json +3 -1
- package/packages/server/dist/locales/zh-CN/server.json +3 -1
- package/packages/server/dist/routes/images.d.ts +7 -0
- package/packages/server/dist/routes/images.d.ts.map +1 -0
- package/packages/server/dist/routes/images.js +51 -0
- package/packages/server/dist/routes/images.js.map +1 -0
- package/packages/server/dist/routes/queue.d.ts.map +1 -1
- package/packages/server/dist/routes/queue.js +2 -1
- package/packages/server/dist/routes/queue.js.map +1 -1
- package/packages/server/dist/routes/sessions.d.ts.map +1 -1
- package/packages/server/dist/routes/sessions.js +2 -3
- package/packages/server/dist/routes/sessions.js.map +1 -1
- package/packages/server/dist/services/chatService.d.ts +2 -0
- package/packages/server/dist/services/chatService.d.ts.map +1 -1
- package/packages/server/dist/services/chatService.js +33 -1
- package/packages/server/dist/services/chatService.js.map +1 -1
- package/packages/server/dist/services/historyParser.d.ts +1 -11
- package/packages/server/dist/services/historyParser.d.ts.map +1 -1
- package/packages/server/dist/services/historyParser.js +148 -182
- package/packages/server/dist/services/historyParser.js.map +1 -1
- package/packages/server/dist/services/imageStorageService.d.ts +28 -0
- package/packages/server/dist/services/imageStorageService.d.ts.map +1 -0
- package/packages/server/dist/services/imageStorageService.js +108 -0
- package/packages/server/dist/services/imageStorageService.js.map +1 -0
- package/packages/server/dist/services/ptyService.d.ts +6 -0
- package/packages/server/dist/services/ptyService.d.ts.map +1 -1
- package/packages/server/dist/services/ptyService.js +59 -0
- package/packages/server/dist/services/ptyService.js.map +1 -1
- package/packages/server/dist/services/queueService.d.ts.map +1 -1
- package/packages/server/dist/services/queueService.js +23 -2
- package/packages/server/dist/services/queueService.js.map +1 -1
- package/packages/server/dist/services/sessionBufferManager.d.ts +26 -0
- package/packages/server/dist/services/sessionBufferManager.d.ts.map +1 -0
- package/packages/server/dist/services/sessionBufferManager.js +113 -0
- package/packages/server/dist/services/sessionBufferManager.js.map +1 -0
- package/packages/server/dist/services/sessionService.d.ts +26 -1
- package/packages/server/dist/services/sessionService.d.ts.map +1 -1
- package/packages/server/dist/services/sessionService.js +168 -39
- package/packages/server/dist/services/sessionService.js.map +1 -1
- package/packages/server/dist/services/summarizeService.d.ts +25 -0
- package/packages/server/dist/services/summarizeService.d.ts.map +1 -0
- package/packages/server/dist/services/summarizeService.js +122 -0
- package/packages/server/dist/services/summarizeService.js.map +1 -0
- package/packages/server/dist/utils/imageUtils.d.ts +11 -0
- package/packages/server/dist/utils/imageUtils.d.ts.map +1 -0
- package/packages/server/dist/utils/imageUtils.js +37 -0
- package/packages/server/dist/utils/imageUtils.js.map +1 -0
- package/packages/server/dist/utils/messageTree.d.ts +56 -0
- package/packages/server/dist/utils/messageTree.d.ts.map +1 -0
- package/packages/server/dist/utils/messageTree.js +370 -0
- package/packages/server/dist/utils/messageTree.js.map +1 -0
- package/packages/server/package.json +3 -1
- package/packages/shared/dist/constants/index.d.ts +3 -0
- package/packages/shared/dist/constants/index.d.ts.map +1 -0
- package/packages/shared/dist/constants/index.js +3 -0
- package/packages/shared/dist/constants/index.js.map +1 -0
- package/packages/shared/dist/constants/messageTree.d.ts +6 -0
- package/packages/shared/dist/constants/messageTree.d.ts.map +1 -0
- package/packages/shared/dist/constants/messageTree.js +7 -0
- package/packages/shared/dist/constants/messageTree.js.map +1 -0
- package/packages/shared/dist/index.d.ts +1 -1
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +1 -1
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/types/history.d.ts +21 -8
- package/packages/shared/dist/types/history.d.ts.map +1 -1
- package/packages/shared/dist/types/message.d.ts +10 -0
- package/packages/shared/dist/types/message.d.ts.map +1 -1
- package/packages/shared/dist/types/message.js.map +1 -1
- package/packages/shared/dist/types/preferences.d.ts +2 -1
- package/packages/shared/dist/types/preferences.d.ts.map +1 -1
- package/packages/shared/dist/types/preferences.js.map +1 -1
- package/packages/shared/dist/types/sdk.d.ts +8 -0
- package/packages/shared/dist/types/sdk.d.ts.map +1 -1
- package/packages/shared/dist/types/sdk.js.map +1 -1
- package/packages/shared/dist/types/session.d.ts +1 -0
- package/packages/shared/dist/types/session.d.ts.map +1 -1
- package/packages/shared/dist/types/session.js.map +1 -1
- package/packages/shared/dist/types/websocket.d.ts +59 -5
- package/packages/shared/dist/types/websocket.d.ts.map +1 -1
- package/scripts/spike-25.9-output.log +47 -0
- package/packages/client/dist/assets/index-Dr2X4keZ.css +0 -32
- package/packages/client/dist/assets/index-zjjTVZ6W.js +0 -1418
|
@@ -103,9 +103,23 @@ function spawnAndExit(mode) {
|
|
|
103
103
|
else {
|
|
104
104
|
command = `"${toUnix(npmPath)}" run ${mode}`;
|
|
105
105
|
}
|
|
106
|
+
// Export all current environment variables so the restarted process
|
|
107
|
+
// inherits them (on Windows, `cmd /c start` + Git Bash loses the parent env).
|
|
108
|
+
// - Filter names to valid bash identifiers (reject e.g. "PROGRAMFILES(X86)")
|
|
109
|
+
// - Use single quotes to prevent bash expansion of $, `, etc.
|
|
110
|
+
const bashSafe = (v) => "'" + v.replace(/'/g, "'\\''") + "'";
|
|
111
|
+
const envExports = Object.entries(process.env)
|
|
112
|
+
.filter(([k, v]) => v !== undefined && k !== 'PATH' && /^[a-zA-Z_][a-zA-Z0-9_]*$/.test(k))
|
|
113
|
+
// Strip \r and other control chars (except \t) that break bash parsing on Windows
|
|
114
|
+
.filter(([, v]) => !/[\x00-\x08\x0b-\x0c\x0e-\x1f]/.test(v))
|
|
115
|
+
.map(([k, v]) => `export ${k}=${bashSafe(v.replace(/\r/g, ''))}`)
|
|
116
|
+
.join('\n');
|
|
106
117
|
fs.writeFileSync(scriptPath, [
|
|
107
118
|
'#!/bin/bash',
|
|
119
|
+
envExports,
|
|
108
120
|
`export PATH="${toUnix(nodeDir)}:$PATH"`,
|
|
121
|
+
// Always propagate the running port even if PORT was not in process.env
|
|
122
|
+
`export PORT=${bashSafe(String(config.server.port))}`,
|
|
109
123
|
'sleep 2',
|
|
110
124
|
`cd "${toUnix(MONOREPO_ROOT)}"`,
|
|
111
125
|
command,
|
|
@@ -132,8 +146,12 @@ function spawnAndExit(mode) {
|
|
|
132
146
|
buildState = { status: 'failed', error: `Spawn failed: ${err.message}` };
|
|
133
147
|
});
|
|
134
148
|
child.unref();
|
|
135
|
-
|
|
136
|
-
|
|
149
|
+
// Wait until the child process is confirmed spawned before exiting.
|
|
150
|
+
// Exiting too early (before detach completes) can kill the child on Windows.
|
|
151
|
+
child.on('spawn', () => {
|
|
152
|
+
console.log('[server] Child process spawned. Exiting old server in 500ms.');
|
|
153
|
+
setTimeout(() => process.exit(0), 500);
|
|
154
|
+
});
|
|
137
155
|
}
|
|
138
156
|
export const serverController = {
|
|
139
157
|
/** GET /api/server/info - server environment info */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverController.js","sourceRoot":"","sources":["../../src/controllers/serverController.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"serverController.js","sourceRoot":"","sources":["../../src/controllers/serverController.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,16 +10,6 @@ export declare const sessionController: {
|
|
|
10
10
|
* List all sessions for a project
|
|
11
11
|
*/
|
|
12
12
|
list(req: Request, res: Response): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* GET /api/projects/:projectSlug/sessions/:sessionId/messages
|
|
15
|
-
* Get session history messages with pagination
|
|
16
|
-
* [Source: Story 3.5 - Task 3]
|
|
17
|
-
*
|
|
18
|
-
* Query params:
|
|
19
|
-
* - limit: number (default: 50, max: 100)
|
|
20
|
-
* - offset: number (default: 0)
|
|
21
|
-
*/
|
|
22
|
-
getMessages(req: Request, res: Response): Promise<void>;
|
|
23
13
|
/**
|
|
24
14
|
* DELETE /api/projects/:projectSlug/sessions/:sessionId
|
|
25
15
|
* Delete a single session
|
|
@@ -35,5 +25,10 @@ export declare const sessionController: {
|
|
|
35
25
|
* Update or remove a session's custom name
|
|
36
26
|
*/
|
|
37
27
|
updateName(req: Request, res: Response): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* POST /api/projects/:projectSlug/sessions/cleanup-phantom
|
|
30
|
+
* Delete phantom sessions (JSONL files with only metadata, no conversation messages)
|
|
31
|
+
*/
|
|
32
|
+
cleanupPhantom(req: Request, res: Response): Promise<void>;
|
|
38
33
|
};
|
|
39
34
|
//# sourceMappingURL=sessionController.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionController.d.ts","sourceRoot":"","sources":["../../src/controllers/sessionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionController.d.ts","sourceRoot":"","sources":["../../src/controllers/sessionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAS5C,eAAO,MAAM,iBAAiB;IAC5B;;;OAGG;cACa,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAuGtD;;;OAGG;gBACe,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxD;;;OAGG;qBACoB,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqC7D;;;OAGG;oBACmB,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC5D;;;OAGG;wBACuB,OAAO,OAAO,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BjE,CAAC"}
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
import { SESSION_ERRORS } from '@hammoc/shared';
|
|
7
7
|
import { sessionService } from '../services/sessionService.js';
|
|
8
8
|
import { projectService } from '../services/projectService.js';
|
|
9
|
-
import {
|
|
10
|
-
|
|
9
|
+
import { createLogger } from '../utils/logger.js';
|
|
10
|
+
const log = createLogger('sessionController');
|
|
11
|
+
import { getActiveStreamSessionIds, getJoinedSessionIdsByProject } from '../handlers/websocket.js';
|
|
11
12
|
export const sessionController = {
|
|
12
13
|
/**
|
|
13
14
|
* GET /api/projects/:projectSlug/sessions
|
|
@@ -59,14 +60,42 @@ export const sessionController = {
|
|
|
59
60
|
// Note: Empty array is a valid response (project exists but no sessions)
|
|
60
61
|
// Mark sessions that have an active background stream + merge session names
|
|
61
62
|
const activeIds = new Set(getActiveStreamSessionIds());
|
|
63
|
+
const joinedIds = getJoinedSessionIdsByProject(projectSlug);
|
|
62
64
|
const sessions = result.sessions;
|
|
63
65
|
const total = result.total;
|
|
66
|
+
// Merge socket-connected sessions that have no JSONL file yet.
|
|
67
|
+
// Only include on the first page (offset=0) and exclude from total/hasMore
|
|
68
|
+
// so pagination math stays consistent across pages.
|
|
69
|
+
const waitingSessions = [];
|
|
70
|
+
if (offset === 0) {
|
|
71
|
+
const now = new Date().toISOString();
|
|
72
|
+
for (const id of joinedIds) {
|
|
73
|
+
if (!sessionService.sessionFileExists(projectSlug, id)) {
|
|
74
|
+
waitingSessions.push({
|
|
75
|
+
sessionId: id,
|
|
76
|
+
firstPrompt: '',
|
|
77
|
+
messageCount: 0,
|
|
78
|
+
created: now,
|
|
79
|
+
modified: now,
|
|
80
|
+
isWaiting: true,
|
|
81
|
+
...(activeIds.has(id) && { isStreaming: true }),
|
|
82
|
+
...(sessionNames[id] && { name: sessionNames[id] }),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// isWaiting: socket-connected and not streaming (applies to all sessions)
|
|
88
|
+
// isStreaming: active stream running (takes priority over isWaiting visually)
|
|
64
89
|
const response = {
|
|
65
|
-
sessions:
|
|
66
|
-
...
|
|
67
|
-
...
|
|
68
|
-
|
|
69
|
-
|
|
90
|
+
sessions: [
|
|
91
|
+
...waitingSessions,
|
|
92
|
+
...sessions.map(s => ({
|
|
93
|
+
...s,
|
|
94
|
+
...(activeIds.has(s.sessionId) && { isStreaming: true }),
|
|
95
|
+
...(joinedIds.has(s.sessionId) && !activeIds.has(s.sessionId) && { isWaiting: true }),
|
|
96
|
+
...(sessionNames[s.sessionId] && { name: sessionNames[s.sessionId] }),
|
|
97
|
+
})),
|
|
98
|
+
],
|
|
70
99
|
total,
|
|
71
100
|
hasMore: limit > 0 ? (offset + sessions.length) < total : false,
|
|
72
101
|
};
|
|
@@ -81,79 +110,6 @@ export const sessionController = {
|
|
|
81
110
|
});
|
|
82
111
|
}
|
|
83
112
|
},
|
|
84
|
-
/**
|
|
85
|
-
* GET /api/projects/:projectSlug/sessions/:sessionId/messages
|
|
86
|
-
* Get session history messages with pagination
|
|
87
|
-
* [Source: Story 3.5 - Task 3]
|
|
88
|
-
*
|
|
89
|
-
* Query params:
|
|
90
|
-
* - limit: number (default: 50, max: 100)
|
|
91
|
-
* - offset: number (default: 0)
|
|
92
|
-
*/
|
|
93
|
-
async getMessages(req, res) {
|
|
94
|
-
const { projectSlug, sessionId } = req.params;
|
|
95
|
-
// Security validation: prevent path traversal
|
|
96
|
-
if (!sessionService.isValidPathParam(projectSlug) || !sessionService.isValidPathParam(sessionId)) {
|
|
97
|
-
res.status(SESSION_ERRORS.INVALID_PATH.httpStatus).json({
|
|
98
|
-
error: {
|
|
99
|
-
code: SESSION_ERRORS.INVALID_PATH.code,
|
|
100
|
-
message: req.t('session.error.invalidPath'),
|
|
101
|
-
},
|
|
102
|
-
});
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
try {
|
|
106
|
-
// Parse and validate query params
|
|
107
|
-
const limit = Math.min(Math.max(parseInt(req.query.limit) || 50, 1), 100);
|
|
108
|
-
const offset = Math.max(parseInt(req.query.offset) || 0, 0);
|
|
109
|
-
// Snapshot stream state atomically BEFORE the async JSONL read.
|
|
110
|
-
// completedBuffer has a 5s TTL — if we read it after the await, it may
|
|
111
|
-
// have expired while streamStartedAt (captured here) still includes its
|
|
112
|
-
// startedAt, causing the JSONL filter to exclude messages that the merge
|
|
113
|
-
// can no longer provide.
|
|
114
|
-
const streamStartedAt = getStreamStartedAt(sessionId);
|
|
115
|
-
const runningStreamStartedAt = getRunningStreamStartedAt(sessionId);
|
|
116
|
-
const completedBuffer = getCompletedBuffer(sessionId);
|
|
117
|
-
const result = await sessionService.getSessionMessages(projectSlug, sessionId, {
|
|
118
|
-
limit,
|
|
119
|
-
offset,
|
|
120
|
-
streamStartedAt,
|
|
121
|
-
runningStreamStartedAt,
|
|
122
|
-
});
|
|
123
|
-
// Return empty messages for non-existent sessions (e.g., pre-allocated UUID with no messages yet)
|
|
124
|
-
const response = result ?? {
|
|
125
|
-
messages: [],
|
|
126
|
-
pagination: { total: 0, limit, offset, hasMore: false },
|
|
127
|
-
lastAgentCommand: null,
|
|
128
|
-
};
|
|
129
|
-
// Merge completed buffer messages when available (stream finished but
|
|
130
|
-
// JSONL may not yet be flushed). Only for the latest page (offset 0).
|
|
131
|
-
if (completedBuffer && offset === 0) {
|
|
132
|
-
const bufferMessages = transformBufferToHistoryMessages(completedBuffer);
|
|
133
|
-
if (bufferMessages.length > 0) {
|
|
134
|
-
const existingIds = new Set(response.messages.map(m => m.id));
|
|
135
|
-
const unique = bufferMessages.filter(m => !existingIds.has(m.id));
|
|
136
|
-
response.messages = [...response.messages, ...unique];
|
|
137
|
-
response.messages.sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime());
|
|
138
|
-
response.pagination.total += unique.length;
|
|
139
|
-
// Re-paginate: keep only latest `limit` messages and recalculate hasMore
|
|
140
|
-
if (response.messages.length > limit) {
|
|
141
|
-
response.messages = response.messages.slice(-limit);
|
|
142
|
-
}
|
|
143
|
-
response.pagination.hasMore = response.pagination.total > response.messages.length;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
res.json(response);
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
res.status(SESSION_ERRORS.SESSION_PARSE_ERROR.httpStatus).json({
|
|
150
|
-
error: {
|
|
151
|
-
code: SESSION_ERRORS.SESSION_PARSE_ERROR.code,
|
|
152
|
-
message: req.t('session.error.parseError'),
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
},
|
|
157
113
|
/**
|
|
158
114
|
* DELETE /api/projects/:projectSlug/sessions/:sessionId
|
|
159
115
|
* Delete a single session
|
|
@@ -254,5 +210,34 @@ export const sessionController = {
|
|
|
254
210
|
});
|
|
255
211
|
}
|
|
256
212
|
},
|
|
213
|
+
/**
|
|
214
|
+
* POST /api/projects/:projectSlug/sessions/cleanup-phantom
|
|
215
|
+
* Delete phantom sessions (JSONL files with only metadata, no conversation messages)
|
|
216
|
+
*/
|
|
217
|
+
async cleanupPhantom(req, res) {
|
|
218
|
+
const { projectSlug } = req.params;
|
|
219
|
+
if (!sessionService.isValidPathParam(projectSlug)) {
|
|
220
|
+
res.status(SESSION_ERRORS.INVALID_PATH.httpStatus).json({
|
|
221
|
+
error: {
|
|
222
|
+
code: SESSION_ERRORS.INVALID_PATH.code,
|
|
223
|
+
message: req.t('session.error.invalidPath'),
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
return;
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
const deleted = await sessionService.cleanupPhantomSessions(projectSlug);
|
|
230
|
+
log.info(`Phantom session cleanup: project=${projectSlug}, deleted=${deleted}`);
|
|
231
|
+
res.json({ deleted });
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
res.status(500).json({
|
|
235
|
+
error: {
|
|
236
|
+
code: 'CLEANUP_ERROR',
|
|
237
|
+
message: req.t('session.error.cleanupError', { defaultValue: 'Failed to clean up phantom sessions' }),
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
},
|
|
257
242
|
};
|
|
258
243
|
//# sourceMappingURL=sessionController.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionController.js","sourceRoot":"","sources":["../../src/controllers/sessionController.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"sessionController.js","sourceRoot":"","sources":["../../src/controllers/sessionController.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,8 +30,12 @@ export interface CallbackBuilderDeps {
|
|
|
30
30
|
notificationService: NotificationRef;
|
|
31
31
|
/** Initial sessionId before SDK resolves the actual one (used as fallback in emit payloads) */
|
|
32
32
|
initialSessionId?: string;
|
|
33
|
+
/** Story 25.7: branch point UUID for edit — included in session:resumed so clients can truncate */
|
|
34
|
+
resumeSessionAt?: string;
|
|
33
35
|
/** Returns current queue progress when running inside queue executor */
|
|
34
36
|
getQueueProgress?: () => QueueProgress | undefined;
|
|
37
|
+
/** Story 25.11: when true, emit 'session:forked' instead of 'session:created'/'session:resumed' */
|
|
38
|
+
isFork?: boolean;
|
|
35
39
|
}
|
|
36
40
|
export interface CallbackBuilderHooks {
|
|
37
41
|
/** Called after SDK resolves session ID. Browser: disk write. Queue: state update. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamCallbacks.d.ts","sourceRoot":"","sources":["../../src/handlers/streamCallbacks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAOZ,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7F,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrD;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,eAAe,CAAC;IACrC,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"streamCallbacks.d.ts","sourceRoot":"","sources":["../../src/handlers/streamCallbacks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,WAAW,EAOZ,MAAM,gBAAgB,CAAC;AAOxB,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7F,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrD;AAID,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,qBAAqB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,mBAAmB,EAAE,eAAe,CAAC;IACrC,+FAA+F;IAC/F,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mGAAmG;IACnG,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wEAAwE;IACxE,gBAAgB,CAAC,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC;IACnD,mGAAmG;IACnG,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;IACnD,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC/C;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,eAAe,CAAC;IAC3B,YAAY,EAAE,YAAY,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,mBAAmB,EACzB,KAAK,CAAC,EAAE,oBAAoB,GAC3B,WAAW,CAyHb"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import { createLogger } from '../utils/logger.js';
|
|
9
9
|
const log = createLogger('streamCallbacks');
|
|
10
10
|
export function buildStreamCallbacks(deps, hooks) {
|
|
11
|
-
const { emit, stream, isResuming, rekeyStream, broadcastStreamChange, notificationService } = deps;
|
|
11
|
+
const { emit, stream, isResuming, resumeSessionAt, rekeyStream, broadcastStreamChange, notificationService, isFork } = deps;
|
|
12
12
|
const activity = hooks?.onCallbackActivity;
|
|
13
13
|
const sessionIdRef = { current: deps.initialSessionId };
|
|
14
14
|
const callbacks = {
|
|
@@ -16,8 +16,14 @@ export function buildStreamCallbacks(deps, hooks) {
|
|
|
16
16
|
log.debug(`Session initialized: ${sid} (model: ${metadata?.model ?? 'unknown'})`);
|
|
17
17
|
sessionIdRef.current = sid;
|
|
18
18
|
rekeyStream(sid);
|
|
19
|
-
if (
|
|
20
|
-
|
|
19
|
+
if (isFork) {
|
|
20
|
+
if (!deps.initialSessionId) {
|
|
21
|
+
log.warn('session:forked emitted without originalSessionId — fork request may be missing sessionId');
|
|
22
|
+
}
|
|
23
|
+
emit('session:forked', { sessionId: sid, originalSessionId: deps.initialSessionId || sid, model: metadata?.model });
|
|
24
|
+
}
|
|
25
|
+
else if (isResuming) {
|
|
26
|
+
emit('session:resumed', { sessionId: sid, model: metadata?.model, ...(resumeSessionAt ? { resumeSessionAt } : {}) });
|
|
21
27
|
}
|
|
22
28
|
else {
|
|
23
29
|
emit('session:created', { sessionId: sid, model: metadata?.model });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamCallbacks.js","sourceRoot":"","sources":["../../src/handlers/streamCallbacks.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"streamCallbacks.js","sourceRoot":"","sources":["../../src/handlers/streamCallbacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { Server as HttpServer } from 'http';
|
|
8
8
|
import { Server as SocketIOServer, Socket } from 'socket.io';
|
|
9
|
-
import type { ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData } from '@hammoc/shared';
|
|
9
|
+
import type { ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData, ChatUsage } from '@hammoc/shared';
|
|
10
10
|
import { ChatService } from '../services/chatService.js';
|
|
11
11
|
type SocketType = Socket<ClientToServerEvents, ServerToClientEvents, InterServerEvents, SocketData>;
|
|
12
12
|
interface PendingPermission {
|
|
@@ -29,6 +29,11 @@ interface ActiveStream {
|
|
|
29
29
|
status: 'running' | 'completed' | 'error';
|
|
30
30
|
startedAt: number;
|
|
31
31
|
chatService?: ChatService;
|
|
32
|
+
resumeSessionAt?: string;
|
|
33
|
+
expectedBranchTotal?: number;
|
|
34
|
+
isFork?: boolean;
|
|
35
|
+
/** Deferred usage data — included in stream:complete-messages after JSONL flush */
|
|
36
|
+
deferredUsage?: ChatUsage;
|
|
32
37
|
}
|
|
33
38
|
/** Get session IDs of all currently running active streams */
|
|
34
39
|
export declare function getActiveStreamSessionIds(): string[];
|
|
@@ -36,19 +41,8 @@ export declare function getActiveStreamSessionIds(): string[];
|
|
|
36
41
|
export declare function getActiveSessionCountsByProject(): Map<string, number>;
|
|
37
42
|
/** Check if a specific session has a running active stream */
|
|
38
43
|
export declare function isSessionStreaming(sessionId: string): boolean;
|
|
39
|
-
/** Get
|
|
40
|
-
|
|
41
|
-
* returns the earlier one so fetchMessages excludes ALL stream-period messages.
|
|
42
|
-
* Both the completed turn and active turn are provided via buffer replay. */
|
|
43
|
-
export declare function getStreamStartedAt(sessionId: string): number | null;
|
|
44
|
-
/** Get start timestamp of the currently running stream only (ignores completed buffers). */
|
|
45
|
-
export declare function getRunningStreamStartedAt(sessionId: string): number | null;
|
|
46
|
-
/** Get the completed buffer for a session (null if none or expired). */
|
|
47
|
-
export declare function getCompletedBuffer(sessionId: string): Array<{
|
|
48
|
-
event: string;
|
|
49
|
-
data: unknown;
|
|
50
|
-
ts: number;
|
|
51
|
-
}> | null;
|
|
44
|
+
/** Get session IDs that have active socket connections for a given project */
|
|
45
|
+
export declare function getJoinedSessionIdsByProject(projectSlug: string): Set<string>;
|
|
52
46
|
/**
|
|
53
47
|
* Create a headless ActiveStream (no attached socket) for queue execution.
|
|
54
48
|
* Returns a buffered emit function and a broadcast function for project room delivery.
|
|
@@ -65,7 +59,7 @@ export declare function createHeadlessStream(sessionId: string, abortController:
|
|
|
65
59
|
export declare function rekeyStream(stream: ActiveStream, newSessionId: string): void;
|
|
66
60
|
/**
|
|
67
61
|
* Mark a stream as completed and broadcast stream-change.
|
|
68
|
-
*
|
|
62
|
+
* Story 27.1: Re-parses JSONL → replaces buffer → broadcasts stream:complete-messages.
|
|
69
63
|
*/
|
|
70
64
|
export declare function finalizeStream(sessionId: string): Promise<void>;
|
|
71
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/handlers/websocket.ts"],"names":[],"mappings":"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"}
|