@inharness-ai/claude4spec 1.0.4 → 1.0.5
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/CHANGELOG.md +10 -0
- package/dist/bin/c4s/commands/ask.d.ts +13 -0
- package/dist/bin/c4s/commands/ask.js +167 -0
- package/dist/bin/c4s/commands/ask.js.map +1 -0
- package/dist/bin/c4s/errors.d.ts +1 -1
- package/dist/bin/c4s/errors.js.map +1 -1
- package/dist/bin/c4s/project.d.ts +6 -0
- package/dist/bin/c4s/project.js +25 -0
- package/dist/bin/c4s/project.js.map +1 -1
- package/dist/bin/c4s.js +12 -6
- package/dist/bin/c4s.js.map +1 -1
- package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
- package/dist/server/external-skills/brief-implementer-template.js +14 -0
- package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
- package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
- package/dist/server/external-skills/spec-reader-template.js +12 -0
- package/dist/server/external-skills/spec-reader-template.js.map +1 -1
- package/dist/server/index.js +39 -34
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/agent-turn.d.ts +92 -0
- package/dist/server/routes/agent-turn.js +379 -0
- package/dist/server/routes/agent-turn.js.map +1 -0
- package/dist/server/routes/chat.d.ts +2 -30
- package/dist/server/routes/chat.js +33 -396
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/threads.d.ts +2 -2
- package/dist/server/routes/threads.js +51 -1
- package/dist/server/routes/threads.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,10 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import { EventEmitter } from 'node:events';
|
|
3
2
|
import { nanoid } from 'nanoid';
|
|
4
|
-
import {
|
|
5
|
-
import { buildPlanToolsServer } from '../mcp/plan-tools.js';
|
|
6
|
-
import { buildBriefToolsServer } from '../mcp/brief-tools.js';
|
|
7
|
-
import { buildSystemPrompt } from '../services/chat-context.js';
|
|
3
|
+
import { createConsoleObserver, } from '@inharness-ai/agent-adapters';
|
|
8
4
|
import { readConfig } from '../config.js';
|
|
9
|
-
import {
|
|
10
|
-
/** M21 m05ctxreg: tools whitelist per context_type. Brief threads get only
|
|
11
|
-
* brief-tools (per-thread, mounted below) + release-tools (read-only).
|
|
12
|
-
* All other plugin servers (endpoint-tools, dto-tools, ui-view-tools,
|
|
13
|
-
* database-table-tools, plan-tools, reference-tools) are NOT mounted. */
|
|
14
|
-
const BRIEF_ALLOWED_PLUGIN_MCP = new Set(['release-tools']);
|
|
15
|
-
const ALLOWED_MODELS = ['sonnet-4.6', 'opus-4.7', 'haiku-4.5'];
|
|
5
|
+
import { activeAdapters, pendingInputs, cancelPendingForRequest, runAgentTurn, ALLOWED_MODELS, } from './agent-turn.js';
|
|
16
6
|
export function chatRouter(deps) {
|
|
17
7
|
const router = Router();
|
|
18
|
-
// Keyed by threadId — jeden aktywny adapter per watek. Umozliwia dolaczanie
|
|
19
|
-
// klientow do zywego streamu przez GET /api/chat/stream/:threadId oraz
|
|
20
|
-
// zwracanie 409 STREAM_IN_PROGRESS na drugi POST na ten sam watek.
|
|
21
|
-
const activeAdapters = new Map();
|
|
22
|
-
const pendingInputs = new Map();
|
|
23
8
|
const consoleObserver = deps.mode === 'dev'
|
|
24
9
|
? createConsoleObserver({
|
|
25
10
|
thinking: true,
|
|
@@ -28,17 +13,9 @@ export function chatRouter(deps) {
|
|
|
28
13
|
showAdapterReady: true,
|
|
29
14
|
compactAdapterReady: true,
|
|
30
15
|
toolResultMaxLen: 20000,
|
|
31
|
-
sdkConfigExclude: ['mcpServers']
|
|
16
|
+
sdkConfigExclude: ['mcpServers'],
|
|
32
17
|
})
|
|
33
18
|
: null;
|
|
34
|
-
const cancelPendingForRequest = (requestId) => {
|
|
35
|
-
for (const [inputId, pending] of pendingInputs) {
|
|
36
|
-
if (pending.requestIdsForRequest === requestId) {
|
|
37
|
-
pending.reject(new Error('stream aborted'));
|
|
38
|
-
pendingInputs.delete(inputId);
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
19
|
// claude4spec eksponuje wylacznie architekture `claude-code` (lokalny CLI, sesja subskrypcyjna).
|
|
43
20
|
// Endpoint przeniesiony z /api/config (kolizja z M01 app config) na /api/chat/config.
|
|
44
21
|
router.get('/config', (_req, res) => {
|
|
@@ -87,7 +64,6 @@ export function chatRouter(deps) {
|
|
|
87
64
|
if (planModeArg !== undefined && planModeArg !== thread.planMode) {
|
|
88
65
|
thread = deps.chatService.updateThreadSettings(thread.id, { planMode: planModeArg });
|
|
89
66
|
}
|
|
90
|
-
const planMode = thread.planMode;
|
|
91
67
|
// One-stream-per-thread guard. Klient powinien dolaczyc przez GET /api/chat/stream/:threadId
|
|
92
68
|
// albo abortowac poprzedni stream przez POST /api/chat/abort.
|
|
93
69
|
if (activeAdapters.has(thread.id)) {
|
|
@@ -96,10 +72,10 @@ export function chatRouter(deps) {
|
|
|
96
72
|
});
|
|
97
73
|
}
|
|
98
74
|
setupSse(res);
|
|
99
|
-
// clientGone flag: po `
|
|
100
|
-
// przestajemy pisać do res, ale
|
|
101
|
-
//
|
|
102
|
-
//
|
|
75
|
+
// clientGone flag: po `res.on('close')` (np. switch wątku → disconnect SSE)
|
|
76
|
+
// przestajemy pisać do res, ale `runAgentTurn` leci dalej — adapter dożywa
|
|
77
|
+
// do końca, eventy persystują w DB, a kolejny GET resume po powrocie na
|
|
78
|
+
// wątek znajdzie aktywny `activeAdapters[threadId]`.
|
|
103
79
|
let clientGone = false;
|
|
104
80
|
const send = (event, data) => {
|
|
105
81
|
if (clientGone || res.writableEnded || res.destroyed)
|
|
@@ -112,360 +88,43 @@ export function chatRouter(deps) {
|
|
|
112
88
|
clientGone = true;
|
|
113
89
|
}
|
|
114
90
|
};
|
|
115
|
-
|
|
116
|
-
const adapter = createAdapter('claude-code');
|
|
117
|
-
const emitter = new EventEmitter();
|
|
118
|
-
activeAdapters.set(thread.id, { requestId, adapter, emitter });
|
|
119
|
-
// `res.on('close')` (NIE req) — canonical pattern z agent-chat/server/handler.ts:138.
|
|
120
|
-
// req.close odpala dla request stream'a (zamknietego logicznie po express.json body parse),
|
|
121
|
-
// co moglo ustawiac clientGone przedwczesnie i no-opowac wszystkie kolejne send().
|
|
91
|
+
// `res.on('close')` (NIE req) — canonical pattern z agent-chat/server/handler.ts.
|
|
122
92
|
res.on('close', () => {
|
|
123
93
|
clientGone = true;
|
|
124
94
|
});
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
deps.chatService.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
// i wkladamy do system promptu. Skip kosztownych obliczen pageCount/entityCounts
|
|
137
|
-
// (irrelewantne dla brief author).
|
|
138
|
-
let briefSnapshot = null;
|
|
139
|
-
if (isBrief && thread.briefPath) {
|
|
140
|
-
try {
|
|
141
|
-
briefSnapshot = await deps.briefService.getBrief(thread.briefPath);
|
|
142
|
-
}
|
|
143
|
-
catch (err) {
|
|
144
|
-
// Brief plik usuniety/uszkodzony — kontynuujemy bez snapshot, agent dostanie
|
|
145
|
-
// banner przez get_brief tool call.
|
|
146
|
-
console.warn(`[chat] brief read failed for ${thread.briefPath}:`, err.message);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
// M23: dla patch context czytamy snapshot patcha i wkladamy do system promptu.
|
|
150
|
-
let patchSnapshot = null;
|
|
151
|
-
if (isPatch && thread.patchPath) {
|
|
152
|
-
try {
|
|
153
|
-
patchSnapshot = await deps.patchService.getPatch(thread.patchPath);
|
|
154
|
-
}
|
|
155
|
-
catch (err) {
|
|
156
|
-
console.warn(`[chat] patch read failed for ${thread.patchPath}:`, err.message);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
let currentPageBody = null;
|
|
160
|
-
if (!isBrief && currentPage) {
|
|
161
|
-
try {
|
|
162
|
-
const page = await deps.pagesService.read(currentPage);
|
|
163
|
-
currentPageBody = page.body;
|
|
164
|
-
}
|
|
165
|
-
catch {
|
|
166
|
-
currentPageBody = null;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
// Stale-plan reminder MUSI byc sprawdzony PRZED markPlanSeenByThread —
|
|
170
|
-
// ten ostatni bumpuje last_seen_plan_version i zapodaje sygnal "synced".
|
|
171
|
-
const isFirstTurn = !thread.hasSystemPrompt;
|
|
172
|
-
const stalePlanReminder = isBrief ? null : deps.planService.getStalePlanReminder(thread.id);
|
|
173
|
-
const currentPlan = isBrief ? null : deps.planService.getByThread(thread.id);
|
|
174
|
-
// Skill resolution: writing-style (config.writingStyle, M15) ladowany
|
|
175
|
-
// niezaleznie od kontekstu. Dla brief context dokladamy bundled
|
|
176
|
-
// `brief-author` (scope: contextual) — definiuje *gatunek* briefa,
|
|
177
|
-
// writing-style dostarcza metodologie (workflows/brief.md w jego skill'u).
|
|
178
|
-
const writingStyleSkills = deps.skillResolver.resolve();
|
|
179
|
-
const writingStyle = writingStyleSkills[0]
|
|
180
|
-
? {
|
|
181
|
-
slug: writingStyleSkills[0].name,
|
|
182
|
-
title: String(writingStyleSkills[0].metadata?.title ?? writingStyleSkills[0].name),
|
|
183
|
-
}
|
|
184
|
-
: null;
|
|
185
|
-
const inlineSkills = [...writingStyleSkills];
|
|
186
|
-
if (isBrief && deps.skillRegistry.has('brief-author')) {
|
|
187
|
-
const skill = deps.skillRegistry.resolve('brief-author');
|
|
188
|
-
inlineSkills.push({
|
|
189
|
-
name: skill.metadata.slug,
|
|
190
|
-
description: skill.metadata.description,
|
|
191
|
-
content: skill.content,
|
|
192
|
-
files: skill.files,
|
|
193
|
-
metadata: {
|
|
194
|
-
version: skill.metadata.version,
|
|
195
|
-
language: skill.metadata.language,
|
|
196
|
-
title: skill.metadata.title,
|
|
197
|
-
},
|
|
95
|
+
const requestId = nanoid(12);
|
|
96
|
+
const turnThread = thread;
|
|
97
|
+
const onUserInput = (uinput) => {
|
|
98
|
+
send('user_input_request', { type: 'user_input_request', request: uinput });
|
|
99
|
+
deps.chatService.addMessage(turnThread.id, 'user_input_request', JSON.stringify(uinput), null, uinput.requestId);
|
|
100
|
+
return new Promise((resolve, reject) => {
|
|
101
|
+
pendingInputs.set(uinput.requestId, {
|
|
102
|
+
resolve,
|
|
103
|
+
reject,
|
|
104
|
+
requestIdsForRequest: requestId,
|
|
105
|
+
});
|
|
198
106
|
});
|
|
199
|
-
}
|
|
200
|
-
const pageCount = isBrief ? 0 : countPages(await deps.pagesService.listTree());
|
|
201
|
-
const systemPrompt = buildSystemPrompt({
|
|
202
|
-
projectName: readConfig(deps.cwd).name,
|
|
203
|
-
cwd: deps.cwd,
|
|
204
|
-
pagesDir: deps.pagesDir,
|
|
205
|
-
currentPagePath: currentPage,
|
|
206
|
-
currentPageBody,
|
|
207
|
-
pageCount,
|
|
208
|
-
entityCounts: isBrief ? {} : pluginHost.computeEntityCounts(deps.db.handle),
|
|
209
|
-
tagCount: isBrief ? 0 : deps.tagsService.list().length,
|
|
210
|
-
sectionCount: isBrief ? 0 : deps.sectionsService.count(),
|
|
211
|
-
annotations,
|
|
212
|
-
planMode,
|
|
213
|
-
currentPlan,
|
|
214
|
-
planToolsAvailable: !isBrief,
|
|
215
|
-
writingStyle,
|
|
216
|
-
contextType: thread.contextType,
|
|
217
|
-
brief: briefSnapshot,
|
|
218
|
-
patch: patchSnapshot,
|
|
219
|
-
});
|
|
220
|
-
// claude-code CLI po resumeSessionId ignoruje kolejne systemPrompty —
|
|
221
|
-
// wiążący dla audytu jest tylko pierwszy. UPDATE idempotentny (no-op na 2.+ turze).
|
|
222
|
-
deps.chatService.setInitialSystemPrompt(thread.id, systemPrompt);
|
|
223
|
-
// Pierwsza hydratacja currentPlanContext = "agent zobaczyl plan przez systemPrompt".
|
|
224
|
-
// Bumpujemy last_seen_plan_version, zeby pierwsza user message tego watku nie
|
|
225
|
-
// dostala stale-reminderu (currentVersion === lastSeen → no-op w kolejnych turach).
|
|
226
|
-
if (isFirstTurn && currentPlan) {
|
|
227
|
-
deps.planService.markPlanSeenByThread(thread.id);
|
|
228
|
-
}
|
|
229
|
-
let assistantBuf = '';
|
|
230
|
-
let thinkingBuf = '';
|
|
231
|
-
const subagentBuffers = new Map();
|
|
232
|
-
// Anchor dla per-turn usage snapshot (`chat_message.usage_json` na ostatnim rowsie tury).
|
|
233
|
-
// Flushed assistant text to typowy target; w turach tool-only fallback na ostatni tool_result.
|
|
234
|
-
let lastMainAssistantRowId = null;
|
|
235
|
-
let lastToolResultRowId = null;
|
|
236
|
-
// Per-response (non-cumulative) usage z ostatniego main `assistant_message`.
|
|
237
|
-
// `result.usage` jest session-cumulative (suma wszystkich tur) i przy badge "context %"
|
|
238
|
-
// dawalo zawyzone wartosci w dluzszych rozmowach (przekraczajac 100%).
|
|
239
|
-
let lastTurnUsage = null;
|
|
240
|
-
const getSubBuf = (taskId) => {
|
|
241
|
-
let buf = subagentBuffers.get(taskId);
|
|
242
|
-
if (!buf) {
|
|
243
|
-
buf = { text: '', thinking: '' };
|
|
244
|
-
subagentBuffers.set(taskId, buf);
|
|
245
|
-
}
|
|
246
|
-
return buf;
|
|
247
107
|
};
|
|
248
|
-
const flushSubBuf = (taskId) => {
|
|
249
|
-
const buf = subagentBuffers.get(taskId);
|
|
250
|
-
if (!buf)
|
|
251
|
-
return;
|
|
252
|
-
if (buf.text) {
|
|
253
|
-
deps.chatService.addMessage(thread.id, 'assistant', JSON.stringify({ text: buf.text }), null, null, taskId);
|
|
254
|
-
buf.text = '';
|
|
255
|
-
}
|
|
256
|
-
if (buf.thinking) {
|
|
257
|
-
deps.chatService.addMessage(thread.id, 'assistant', JSON.stringify({ text: buf.thinking, thinking: true }), null, null, taskId);
|
|
258
|
-
buf.thinking = '';
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
const flushMainBuf = () => {
|
|
262
|
-
if (assistantBuf) {
|
|
263
|
-
const row = deps.chatService.addMessage(thread.id, 'assistant', JSON.stringify({ text: assistantBuf }));
|
|
264
|
-
lastMainAssistantRowId = row.id;
|
|
265
|
-
assistantBuf = '';
|
|
266
|
-
}
|
|
267
|
-
if (thinkingBuf) {
|
|
268
|
-
deps.chatService.addMessage(thread.id, 'assistant', JSON.stringify({ text: thinkingBuf, thinking: true }));
|
|
269
|
-
thinkingBuf = '';
|
|
270
|
-
}
|
|
271
|
-
};
|
|
272
|
-
// M21 m05ctxreg: per-thread MCP servers depend on context_type.
|
|
273
|
-
// chat → plan-tools; brief → brief-tools (only when briefPath exists).
|
|
274
|
-
const planTools = isBrief
|
|
275
|
-
? null
|
|
276
|
-
: buildPlanToolsServer({
|
|
277
|
-
threadId: thread.id,
|
|
278
|
-
planService: deps.planService,
|
|
279
|
-
});
|
|
280
|
-
const briefTools = isBrief && thread.briefPath
|
|
281
|
-
? buildBriefToolsServer({
|
|
282
|
-
threadId: thread.id,
|
|
283
|
-
briefPath: thread.briefPath,
|
|
284
|
-
briefService: deps.briefService,
|
|
285
|
-
pageVersions: deps.pageVersions,
|
|
286
|
-
})
|
|
287
|
-
: null;
|
|
288
|
-
// Plugin MCP whitelist per context. Brief context exposes only
|
|
289
|
-
// `release-tools` (read-only) from the plugin set; chat context exposes
|
|
290
|
-
// everything. Both per-thread tools (plan-tools / brief-tools) merged below.
|
|
291
|
-
const pluginMcpEntries = pluginHost
|
|
292
|
-
.listMcpServers()
|
|
293
|
-
.filter(({ name }) => (isBrief ? BRIEF_ALLOWED_PLUGIN_MCP.has(name) : true))
|
|
294
|
-
.map(({ name, server }) => [name, server.config]);
|
|
295
|
-
const mcpServers = Object.fromEntries(pluginMcpEntries);
|
|
296
|
-
if (planTools)
|
|
297
|
-
mcpServers['plan-tools'] = planTools.config;
|
|
298
|
-
if (briefTools)
|
|
299
|
-
mcpServers['brief-tools'] = briefTools.config;
|
|
300
108
|
try {
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
const effectivePrompt = stalePlanReminder
|
|
306
|
-
? `${stalePlanReminder}\n\n${prompt}`
|
|
307
|
-
: prompt;
|
|
308
|
-
const stream = adapter.execute({
|
|
309
|
-
prompt: effectivePrompt,
|
|
310
|
-
systemPrompt,
|
|
109
|
+
await runAgentTurn(deps, {
|
|
110
|
+
thread: turnThread,
|
|
111
|
+
prompt,
|
|
112
|
+
annotations,
|
|
311
113
|
model,
|
|
312
|
-
|
|
313
|
-
mcpServers,
|
|
314
|
-
skills: inlineSkills,
|
|
315
|
-
resumeSessionId: thread.lastSessionId ?? undefined,
|
|
114
|
+
currentPage,
|
|
316
115
|
architectureConfig,
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
pendingInputs.set(input.requestId, {
|
|
323
|
-
resolve,
|
|
324
|
-
reject,
|
|
325
|
-
requestIdsForRequest: requestId,
|
|
326
|
-
});
|
|
327
|
-
});
|
|
328
|
-
},
|
|
116
|
+
requestId,
|
|
117
|
+
consoleObserver,
|
|
118
|
+
// Transport SSE — `runAgentTurn` zasila tez emitter dla GET /stream/:threadId.
|
|
119
|
+
onEvent: (event) => send(event.type, event),
|
|
120
|
+
onUserInput,
|
|
329
121
|
});
|
|
330
|
-
const observed = consoleObserver ? observeStream(stream, [consoleObserver]) : stream;
|
|
331
|
-
for await (const event of observed) {
|
|
332
|
-
send(event.type, event);
|
|
333
|
-
emitter.emit('event', event);
|
|
334
|
-
switch (event.type) {
|
|
335
|
-
case 'text_delta':
|
|
336
|
-
if (event.isSubagent && event.subagentTaskId) {
|
|
337
|
-
getSubBuf(event.subagentTaskId).text += event.text;
|
|
338
|
-
}
|
|
339
|
-
else if (!event.isSubagent) {
|
|
340
|
-
assistantBuf += event.text;
|
|
341
|
-
}
|
|
342
|
-
break;
|
|
343
|
-
case 'thinking':
|
|
344
|
-
if (event.isSubagent && event.subagentTaskId) {
|
|
345
|
-
getSubBuf(event.subagentTaskId).thinking += event.text;
|
|
346
|
-
}
|
|
347
|
-
else if (!event.isSubagent) {
|
|
348
|
-
thinkingBuf += event.text;
|
|
349
|
-
}
|
|
350
|
-
break;
|
|
351
|
-
case 'assistant_message': {
|
|
352
|
-
// Per-response (non-cumulative) usage z main agent. Subagenty maja
|
|
353
|
-
// wlasna sesje SDK (osobne okno) — nie wliczamy ich w badge main.
|
|
354
|
-
// Live update do DB — F5 w trakcie tury dostaje aktualny snapshot,
|
|
355
|
-
// i w pelni stream'owanej turze badge progresuje miedzy assistant
|
|
356
|
-
// messages bez czekania na koncowy `result`.
|
|
357
|
-
if (!event.message.subagentTaskId && event.message.usage) {
|
|
358
|
-
lastTurnUsage = event.message.usage;
|
|
359
|
-
deps.chatService.setLastUsage(thread.id, event.message.usage);
|
|
360
|
-
}
|
|
361
|
-
break;
|
|
362
|
-
}
|
|
363
|
-
case 'tool_use': {
|
|
364
|
-
const taskId = event.subagentTaskId ?? null;
|
|
365
|
-
if (taskId)
|
|
366
|
-
flushSubBuf(taskId);
|
|
367
|
-
else
|
|
368
|
-
flushMainBuf();
|
|
369
|
-
// tool_use wstawiane jako 'streaming' — flip na 'complete' nastapi
|
|
370
|
-
// przy parnym tool_result (markToolUseComplete). Finalizer w `finally`
|
|
371
|
-
// zamyka orphany (tool_use bez tool_result, np. przy abortcie).
|
|
372
|
-
deps.chatService.addMessage(thread.id, 'tool_use', JSON.stringify({ input: event.input }), event.toolName, event.toolUseId, taskId, planMode, 'streaming');
|
|
373
|
-
break;
|
|
374
|
-
}
|
|
375
|
-
case 'tool_result': {
|
|
376
|
-
const taskId = event.subagentTaskId ?? null;
|
|
377
|
-
// Najpierw flipuj parne tool_use na 'complete', potem insertuj result.
|
|
378
|
-
// Kolejnosc nie jest krytyczna (idempotentna), ale trzymamy DB spojna w kazdej chwili.
|
|
379
|
-
deps.chatService.markToolUseComplete(thread.id, event.toolUseId);
|
|
380
|
-
const row = deps.chatService.addMessage(thread.id, 'tool_result', JSON.stringify({ summary: event.summary, isError: event.isError }), null, event.toolUseId, taskId);
|
|
381
|
-
if (taskId === null)
|
|
382
|
-
lastToolResultRowId = row.id;
|
|
383
|
-
break;
|
|
384
|
-
}
|
|
385
|
-
case 'subagent_started':
|
|
386
|
-
flushMainBuf();
|
|
387
|
-
deps.chatService.startSubagentTask(thread.id, event.taskId, event.description, event.toolUseId ?? null);
|
|
388
|
-
break;
|
|
389
|
-
case 'subagent_progress':
|
|
390
|
-
deps.chatService.updateSubagentTaskProgress(thread.id, event.taskId, event.description);
|
|
391
|
-
break;
|
|
392
|
-
case 'subagent_completed':
|
|
393
|
-
flushSubBuf(event.taskId);
|
|
394
|
-
deps.chatService.completeSubagentTask(thread.id, event.taskId, event.status, event.summary ?? null);
|
|
395
|
-
break;
|
|
396
|
-
case 'result': {
|
|
397
|
-
// Flush main najpierw — aktualizuje lastMainAssistantRowId; ten id
|
|
398
|
-
// jest anchorem per-turn usage. Subagent bufory flushujemy
|
|
399
|
-
// defensywnie po (zwykle juz flushnieto przy subagent_completed).
|
|
400
|
-
flushMainBuf();
|
|
401
|
-
for (const tid of Array.from(subagentBuffers.keys()))
|
|
402
|
-
flushSubBuf(tid);
|
|
403
|
-
if (event.sessionId)
|
|
404
|
-
deps.chatService.setLastSessionId(thread.id, event.sessionId);
|
|
405
|
-
// event.usage jest session-cumulative — nieuzyteczne dla badge "context %".
|
|
406
|
-
// Bierzemy lastTurnUsage z ostatniego main assistant_message tej tury.
|
|
407
|
-
const turnAnchor = lastMainAssistantRowId ?? lastToolResultRowId;
|
|
408
|
-
if (lastTurnUsage) {
|
|
409
|
-
deps.chatService.setLastUsage(thread.id, lastTurnUsage);
|
|
410
|
-
// Target explicit message id — nie MAX(id), bo subagent bufor flushnal
|
|
411
|
-
// jako ostatni i trafilby tam zamiast na main assistant / tool_result tej tury.
|
|
412
|
-
if (turnAnchor !== null) {
|
|
413
|
-
deps.chatService.attachTurnUsage(thread.id, turnAnchor, lastTurnUsage);
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
// agent-chat 0.1.1: `result.contextSize` to last-turn utilization okna
|
|
417
|
-
// kontekstu (NIE sumować). Trzymamy je oddzielnie od billing-tokens
|
|
418
|
-
// bo cumulative billing > 100% w dłuższych rozmowach.
|
|
419
|
-
if (typeof event.contextSize === 'number') {
|
|
420
|
-
deps.chatService.setLastContextSize(thread.id, event.contextSize);
|
|
421
|
-
if (turnAnchor !== null) {
|
|
422
|
-
deps.chatService.attachTurnContextSize(thread.id, turnAnchor, event.contextSize);
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
break;
|
|
426
|
-
}
|
|
427
|
-
case 'todo_list_updated':
|
|
428
|
-
if (!event.isSubagent) {
|
|
429
|
-
deps.chatService.updateCurrentTodoItems(thread.id, event.items);
|
|
430
|
-
}
|
|
431
|
-
break;
|
|
432
|
-
case 'warning':
|
|
433
|
-
console.warn('[agent warning]', event.message);
|
|
434
|
-
break;
|
|
435
|
-
}
|
|
436
|
-
}
|
|
437
|
-
send('done', {});
|
|
438
122
|
}
|
|
439
|
-
catch
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
else if (err instanceof AdapterTimeoutError)
|
|
443
|
-
send('error', { type: 'error', code: 'TIMEOUT', error: 'Agent took too long to respond' });
|
|
444
|
-
else if (err instanceof AdapterInitError)
|
|
445
|
-
send('error', { type: 'error', code: 'AGENT_UNAVAILABLE', error: 'Claude CLI not found or not logged in. Run `claude login` first.' });
|
|
446
|
-
else
|
|
447
|
-
send('error', { type: 'error', code: 'AGENT_ERROR', error: err instanceof Error ? err.message : String(err) });
|
|
123
|
+
catch {
|
|
124
|
+
// `runAgentTurn` juz wyemitowalo SSE `event: error` — nie propagujemy
|
|
125
|
+
// dalej (response jest SSE; errorHandler probowalby pisac JSON).
|
|
448
126
|
}
|
|
449
127
|
finally {
|
|
450
|
-
try {
|
|
451
|
-
flushMainBuf();
|
|
452
|
-
for (const tid of Array.from(subagentBuffers.keys()))
|
|
453
|
-
flushSubBuf(tid);
|
|
454
|
-
}
|
|
455
|
-
catch (flushErr) {
|
|
456
|
-
console.error('[chat] final flush failed', flushErr);
|
|
457
|
-
}
|
|
458
|
-
// Flipuj wszystkie wiszace rowsy (glownie orphan tool_use przy abortcie/timeoutcie)
|
|
459
|
-
// na 'complete', zeby DB byla spojna niezaleznie od powodu zakonczenia streamu.
|
|
460
|
-
try {
|
|
461
|
-
deps.chatService.finalizeStreamingRows(thread.id);
|
|
462
|
-
}
|
|
463
|
-
catch (finalizeErr) {
|
|
464
|
-
console.error('[chat] finalizeStreamingRows failed', finalizeErr);
|
|
465
|
-
}
|
|
466
|
-
emitter.emit('event', { type: 'done' });
|
|
467
|
-
activeAdapters.delete(thread.id);
|
|
468
|
-
cancelPendingForRequest(requestId);
|
|
469
128
|
if (!res.writableEnded) {
|
|
470
129
|
try {
|
|
471
130
|
res.end();
|
|
@@ -485,7 +144,6 @@ export function chatRouter(deps) {
|
|
|
485
144
|
if (typeof requestId !== 'string')
|
|
486
145
|
return res.status(400).json({ error: { code: 'VALIDATION', message: 'requestId required' } });
|
|
487
146
|
// activeAdapters jest keyed by threadId, wiec szukamy wartosci z matching requestId.
|
|
488
|
-
// O(N) po liczbie aktywnych watkow — akceptowalne na lokalnym tool.
|
|
489
147
|
let found = null;
|
|
490
148
|
for (const entry of activeAdapters.values()) {
|
|
491
149
|
if (entry.requestId === requestId) {
|
|
@@ -500,8 +158,7 @@ export function chatRouter(deps) {
|
|
|
500
158
|
res.json({ data: { aborted: true } });
|
|
501
159
|
});
|
|
502
160
|
// Abort per threadId — uzywany gdy klient podlaczyl sie tylko przez resume SSE
|
|
503
|
-
//
|
|
504
|
-
// tura per threadId, wiec threadId jest jednoznacznym kluczem.
|
|
161
|
+
// i nie zna requestId. Jest jedna aktywna tura per threadId.
|
|
505
162
|
router.post('/abort/:threadId', (req, res) => {
|
|
506
163
|
const { threadId } = req.params;
|
|
507
164
|
const active = activeAdapters.get(threadId);
|
|
@@ -512,9 +169,6 @@ export function chatRouter(deps) {
|
|
|
512
169
|
res.json({ data: { aborted: true } });
|
|
513
170
|
});
|
|
514
171
|
// GET /api/chat/stream/:threadId — dolaczenie do zywego streamu po F5 / switch watku.
|
|
515
|
-
// Klient juz ma snapshot historii z GET /api/threads/:id; ten endpoint dostarcza
|
|
516
|
-
// tylko LIVE eventy (bez replay rowsow jako syntetycznych eventow). Jesli adapter
|
|
517
|
-
// juz nie zyje dla tego watku, od razu zwracamy `done` i klient pozostaje z final state.
|
|
518
172
|
router.get('/stream/:threadId', (req, res) => {
|
|
519
173
|
const threadId = req.params.threadId;
|
|
520
174
|
const thread = deps.chatService.getThreadMeta(threadId);
|
|
@@ -522,9 +176,6 @@ export function chatRouter(deps) {
|
|
|
522
176
|
return res.status(404).json({ error: { code: 'NOT_FOUND', message: 'thread not found' } });
|
|
523
177
|
}
|
|
524
178
|
setupSse(res);
|
|
525
|
-
// Identyczny pattern jak w POST — listener emitter'a leci w callstacku POST loopa,
|
|
526
|
-
// wiec throw z res.write propagowalby do emit() i wybijal pętle for-await,
|
|
527
|
-
// czyniąc cleanup w POST destrukcyjnym (finalizeStreamingRows + adapter osierocony).
|
|
528
179
|
let clientGone = false;
|
|
529
180
|
const send = (event, data) => {
|
|
530
181
|
if (clientGone || res.writableEnded || res.destroyed)
|
|
@@ -558,16 +209,12 @@ export function chatRouter(deps) {
|
|
|
558
209
|
}
|
|
559
210
|
}
|
|
560
211
|
catch (listenerErr) {
|
|
561
|
-
// Nigdy nie pozwol propagowac do emitter.emit() w POST loopie.
|
|
562
212
|
active.emitter.off('event', listener);
|
|
563
213
|
clientGone = true;
|
|
564
214
|
console.error('[chat] resume listener error', listenerErr);
|
|
565
215
|
}
|
|
566
216
|
};
|
|
567
217
|
active.emitter.on('event', listener);
|
|
568
|
-
// `res.on('close')` — patrz POST handler. Resume jest GET, ale dla spojnosci
|
|
569
|
-
// i odpornosci uzywamy response-side sygnalu, ktory odpala dokladnie wtedy,
|
|
570
|
-
// gdy klient SSE sie rozlacza.
|
|
571
218
|
res.on('close', () => {
|
|
572
219
|
clientGone = true;
|
|
573
220
|
active.emitter.off('event', listener);
|
|
@@ -605,14 +252,4 @@ function setupSse(res) {
|
|
|
605
252
|
res.setHeader('X-Accel-Buffering', 'no');
|
|
606
253
|
res.flushHeaders();
|
|
607
254
|
}
|
|
608
|
-
function countPages(tree) {
|
|
609
|
-
let n = 0;
|
|
610
|
-
for (const node of tree) {
|
|
611
|
-
if (node.type === 'file')
|
|
612
|
-
n++;
|
|
613
|
-
else if (Array.isArray(node.children))
|
|
614
|
-
n += countPages(node.children);
|
|
615
|
-
}
|
|
616
|
-
return n;
|
|
617
|
-
}
|
|
618
255
|
//# sourceMappingURL=chat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/server/routes/chat.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/server/routes/chat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
import type
|
|
3
|
-
export declare function threadsRouter(
|
|
2
|
+
import { type AgentTurnDeps } from './agent-turn.js';
|
|
3
|
+
export declare function threadsRouter(deps: AgentTurnDeps): Router;
|