@loom-framework/backend 0.1.0-alpha.21 → 0.1.0-alpha.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/routes/chat.d.ts.map +1 -1
- package/dist/routes/chat.js +82 -58
- package/dist/routes/chat.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAgC,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAoC1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,QAAQ,CAAC;IACjB,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB;AAyBD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAqON"}
|
package/dist/routes/chat.js
CHANGED
|
@@ -13,8 +13,23 @@
|
|
|
13
13
|
* GET /api/v1/sessions/:id - Load session
|
|
14
14
|
* DELETE /api/v1/sessions/:id - Delete session
|
|
15
15
|
*/
|
|
16
|
-
import { saveUploadedFile } from './upload.js';
|
|
17
16
|
import { resolveButtonPrompt } from '../ai/button-resolver.js';
|
|
17
|
+
import { saveUploadedFile } from './upload.js';
|
|
18
|
+
// ── SSE Helpers ──
|
|
19
|
+
function sendSSE(reply, data) {
|
|
20
|
+
reply.raw.write(`data: ${JSON.stringify(data)}\n\n`);
|
|
21
|
+
}
|
|
22
|
+
function endSSE(reply) {
|
|
23
|
+
reply.raw.write('data: [DONE]\n\n');
|
|
24
|
+
reply.raw.end();
|
|
25
|
+
}
|
|
26
|
+
// ── ID Generators ──
|
|
27
|
+
function generateMessageId() {
|
|
28
|
+
return `msg_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
29
|
+
}
|
|
30
|
+
function generateSessionId() {
|
|
31
|
+
return `session_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
32
|
+
}
|
|
18
33
|
// ── Route Registration ──
|
|
19
34
|
/**
|
|
20
35
|
* Register chat SSE route and session REST routes
|
|
@@ -29,9 +44,10 @@ export function registerChatRoutes(fastify, options) {
|
|
|
29
44
|
if (!content && !button_id) {
|
|
30
45
|
return reply.status(400).send({ error: 'content or button_id is required' });
|
|
31
46
|
}
|
|
32
|
-
//
|
|
33
|
-
const isNewSession = session_id === '__new_session__';
|
|
34
|
-
if (
|
|
47
|
+
// Check if this is a new session (no session_id from frontend)
|
|
48
|
+
const isNewSession = !session_id || session_id === '__new_session__';
|
|
49
|
+
// Generate session_id if needed (will be replaced by Claude Code's session_id if new)
|
|
50
|
+
if (!session_id || session_id === '__new_session__') {
|
|
35
51
|
session_id = generateSessionId();
|
|
36
52
|
}
|
|
37
53
|
// Set SSE headers
|
|
@@ -61,7 +77,8 @@ export function registerChatRoutes(fastify, options) {
|
|
|
61
77
|
// Resolve prompt: AI button or direct content
|
|
62
78
|
let prompt;
|
|
63
79
|
if (button_id) {
|
|
64
|
-
const
|
|
80
|
+
const contextRecord = context;
|
|
81
|
+
const resolved = resolveButtonPrompt(button_id, contextRecord, config);
|
|
65
82
|
if (!resolved) {
|
|
66
83
|
sendSSE(reply, { type: 'error', error: `AI button "${button_id}" not found`, message_id: messageId, session_id });
|
|
67
84
|
endSSE(reply);
|
|
@@ -75,7 +92,7 @@ export function registerChatRoutes(fastify, options) {
|
|
|
75
92
|
prompt = resolved.prompt;
|
|
76
93
|
}
|
|
77
94
|
else {
|
|
78
|
-
prompt = content;
|
|
95
|
+
prompt = content || '';
|
|
79
96
|
}
|
|
80
97
|
// Get or create session
|
|
81
98
|
const session = await sessionManager.getOrCreate(session_id);
|
|
@@ -92,6 +109,7 @@ export function registerChatRoutes(fastify, options) {
|
|
|
92
109
|
let aiContent = '';
|
|
93
110
|
let claudeSessionId;
|
|
94
111
|
let usage;
|
|
112
|
+
let actualSessionId = session_id;
|
|
95
113
|
try {
|
|
96
114
|
for await (const chunk of engine.call(prompt, {
|
|
97
115
|
sessionId: session_id,
|
|
@@ -100,18 +118,31 @@ export function registerChatRoutes(fastify, options) {
|
|
|
100
118
|
})) {
|
|
101
119
|
if (chunk.type === 'content' && chunk.content) {
|
|
102
120
|
aiContent += chunk.content;
|
|
103
|
-
sendSSE(reply, { type: 'content', content: chunk.content, message_id: messageId, session_id });
|
|
121
|
+
sendSSE(reply, { type: 'content', content: chunk.content, message_id: messageId, session_id: actualSessionId });
|
|
104
122
|
}
|
|
105
123
|
else if (chunk.type === 'thinking' && chunk.content) {
|
|
106
|
-
sendSSE(reply, { type: 'thinking', thinking: chunk.content, message_id: messageId, session_id });
|
|
124
|
+
sendSSE(reply, { type: 'thinking', thinking: chunk.content, message_id: messageId, session_id: actualSessionId });
|
|
107
125
|
}
|
|
108
126
|
else if (chunk.type === 'session_info') {
|
|
109
|
-
|
|
127
|
+
// Use Claude Code's session_id as our session_id for new sessions
|
|
128
|
+
if (chunk.sessionId && isNewSession) {
|
|
129
|
+
actualSessionId = chunk.sessionId;
|
|
130
|
+
claudeSessionId = chunk.sessionId;
|
|
131
|
+
}
|
|
132
|
+
else if (chunk.sessionId) {
|
|
133
|
+
claudeSessionId = chunk.sessionId;
|
|
134
|
+
}
|
|
110
135
|
if (chunk.usage)
|
|
111
136
|
usage = chunk.usage;
|
|
137
|
+
// Send session_info to frontend so it can update conversationKey
|
|
138
|
+
sendSSE(reply, {
|
|
139
|
+
type: 'session_info',
|
|
140
|
+
session_id: actualSessionId,
|
|
141
|
+
is_new_session: isNewSession,
|
|
142
|
+
});
|
|
112
143
|
}
|
|
113
144
|
else if (chunk.type === 'error' && chunk.error) {
|
|
114
|
-
sendSSE(reply, { type: 'error', error: chunk.error, message_id: messageId, session_id });
|
|
145
|
+
sendSSE(reply, { type: 'error', error: chunk.error, message_id: messageId, session_id: actualSessionId });
|
|
115
146
|
}
|
|
116
147
|
else if (chunk.type === 'tool_call') {
|
|
117
148
|
sendSSE(reply, {
|
|
@@ -119,7 +150,7 @@ export function registerChatRoutes(fastify, options) {
|
|
|
119
150
|
toolUseId: chunk.toolUseId,
|
|
120
151
|
toolName: chunk.toolName,
|
|
121
152
|
toolInput: chunk.toolInput,
|
|
122
|
-
|
|
153
|
+
tool_status: 'started',
|
|
123
154
|
});
|
|
124
155
|
}
|
|
125
156
|
else if (chunk.type === 'tool_result') {
|
|
@@ -133,8 +164,20 @@ export function registerChatRoutes(fastify, options) {
|
|
|
133
164
|
}
|
|
134
165
|
catch (error) {
|
|
135
166
|
fastify.log.error('AI engine exception: %s', error);
|
|
136
|
-
|
|
137
|
-
|
|
167
|
+
if (logger) {
|
|
168
|
+
logger.log({
|
|
169
|
+
sessionId: actualSessionId,
|
|
170
|
+
messageId,
|
|
171
|
+
timestamp: new Date(startTime).toISOString(),
|
|
172
|
+
prompt,
|
|
173
|
+
response: '',
|
|
174
|
+
duration: Date.now() - startTime,
|
|
175
|
+
mcpCalls: [],
|
|
176
|
+
cliCalls: [],
|
|
177
|
+
error: error instanceof Error ? error.message : String(error),
|
|
178
|
+
}).catch(() => { });
|
|
179
|
+
}
|
|
180
|
+
sendSSE(reply, { type: 'error', error: `Processing error: ${error}`, message_id: messageId, session_id: actualSessionId });
|
|
138
181
|
endSSE(reply);
|
|
139
182
|
return;
|
|
140
183
|
}
|
|
@@ -143,7 +186,7 @@ export function registerChatRoutes(fastify, options) {
|
|
|
143
186
|
type: 'done',
|
|
144
187
|
content: aiContent || '(empty response)',
|
|
145
188
|
message_id: messageId,
|
|
146
|
-
session_id,
|
|
189
|
+
session_id: actualSessionId,
|
|
147
190
|
is_new_session: isNewSession,
|
|
148
191
|
};
|
|
149
192
|
if (claudeSessionId)
|
|
@@ -158,9 +201,32 @@ export function registerChatRoutes(fastify, options) {
|
|
|
158
201
|
content: aiContent || '(empty response)',
|
|
159
202
|
timestamp: new Date().toISOString(),
|
|
160
203
|
};
|
|
161
|
-
|
|
204
|
+
// If session_id changed (from Claude Code), we need to migrate messages
|
|
205
|
+
if (actualSessionId !== session_id) {
|
|
206
|
+
// Create new session with actualSessionId
|
|
207
|
+
await sessionManager.createSession(actualSessionId);
|
|
208
|
+
// Add both messages to new session
|
|
209
|
+
await sessionManager.addMessages(actualSessionId, [userMsg, assistantMsg], claudeSessionId, usage);
|
|
210
|
+
// Delete old session
|
|
211
|
+
await sessionManager.deleteSession(session_id);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
await sessionManager.addMessages(session_id, [assistantMsg], claudeSessionId, usage);
|
|
215
|
+
}
|
|
162
216
|
// Record log
|
|
163
|
-
|
|
217
|
+
if (logger) {
|
|
218
|
+
logger.log({
|
|
219
|
+
sessionId: actualSessionId,
|
|
220
|
+
messageId,
|
|
221
|
+
timestamp: new Date(startTime).toISOString(),
|
|
222
|
+
prompt,
|
|
223
|
+
response: aiContent || '(empty response)',
|
|
224
|
+
duration: Date.now() - startTime,
|
|
225
|
+
usage,
|
|
226
|
+
mcpCalls: [],
|
|
227
|
+
cliCalls: [],
|
|
228
|
+
}).catch(() => { });
|
|
229
|
+
}
|
|
164
230
|
endSSE(reply);
|
|
165
231
|
});
|
|
166
232
|
// GET /api/v1/sessions — List sessions
|
|
@@ -191,46 +257,4 @@ export function registerChatRoutes(fastify, options) {
|
|
|
191
257
|
return reply.send({ success: true });
|
|
192
258
|
});
|
|
193
259
|
}
|
|
194
|
-
// ── SSE Helpers ──
|
|
195
|
-
function sendSSE(reply, event) {
|
|
196
|
-
try {
|
|
197
|
-
reply.raw.write(`data: ${JSON.stringify(event)}\n\n`);
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
// Client may have disconnected
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
function endSSE(reply) {
|
|
204
|
-
try {
|
|
205
|
-
reply.raw.end();
|
|
206
|
-
}
|
|
207
|
-
catch {
|
|
208
|
-
// Already closed
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
function generateMessageId() {
|
|
212
|
-
return `msg_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
213
|
-
}
|
|
214
|
-
function generateSessionId() {
|
|
215
|
-
return `session_${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
216
|
-
}
|
|
217
|
-
function recordLog(logger, sessionId, messageId, prompt, response, startTime, mcpCalls, cliCalls, error, fastify, usage) {
|
|
218
|
-
if (!logger)
|
|
219
|
-
return;
|
|
220
|
-
const logEntry = {
|
|
221
|
-
sessionId,
|
|
222
|
-
messageId,
|
|
223
|
-
timestamp: new Date().toISOString(),
|
|
224
|
-
prompt,
|
|
225
|
-
response,
|
|
226
|
-
duration: Date.now() - startTime,
|
|
227
|
-
usage: usage ? { inputTokens: usage.inputTokens, outputTokens: usage.outputTokens } : undefined,
|
|
228
|
-
mcpCalls,
|
|
229
|
-
cliCalls,
|
|
230
|
-
error,
|
|
231
|
-
};
|
|
232
|
-
logger.log(logEntry).catch((err) => {
|
|
233
|
-
fastify.log.warn('Failed to write interaction log: %s', err);
|
|
234
|
-
});
|
|
235
|
-
}
|
|
236
260
|
//# sourceMappingURL=chat.js.map
|
package/dist/routes/chat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/routes/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA0C/C,oBAAoB;AAEpB,SAAS,OAAO,CAAC,KAAmB,EAAE,IAAkB;IACtD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,MAAM,CAAC,KAAmB;IACjC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAClB,CAAC;AAED,sBAAsB;AAEtB,SAAS,iBAAiB;IACxB,OAAO,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,WAAW,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,2BAA2B;AAE3B;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,OAAyB;IAEzB,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAExE,gDAAgD;IAChD,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,OAAuB,EAAE,KAAmB,EAAE,EAAE;QAClF,MAAM,IAAI,GAAG,OAAO,CAAC,IAAuB,CAAC;QAC7C,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAC1B,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAEpD,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,+DAA+D;QAC/D,MAAM,YAAY,GAAG,CAAC,UAAU,IAAI,UAAU,KAAK,iBAAiB,CAAC;QAErE,sFAAsF;QACtF,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;YACpD,UAAU,GAAG,iBAAiB,EAAE,CAAC;QACnC,CAAC;QAED,kBAAkB;QAClB,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;YACvB,cAAc,EAAE,mBAAmB;YACnC,eAAe,EAAE,UAAU;YAC3B,UAAU,EAAE,YAAY;YACxB,mBAAmB,EAAE,IAAI,EAAE,0BAA0B;SACtD,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,sBAAsB;QACtB,MAAM,aAAa,GAA0C,EAAE,CAAC;QAChE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;oBACjB,IAAI,CAAC;wBACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBACxF,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7D,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC1E,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,MAAc,CAAC;QACnB,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,aAAa,GAAG,OAA6C,CAAC;YACpE,MAAM,QAAQ,GAAG,mBAAmB,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,SAAS,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBAClH,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC5F,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,OAAO,IAAI,EAAE,CAAC;QACzB,CAAC;QAED,wBAAwB;QACxB,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAE7D,8BAA8B;QAC9B,MAAM,OAAO,GAAmB;YAC9B,EAAE,EAAE,SAAS;YACb,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF,CAAC;QACF,MAAM,cAAc,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAExD,mCAAmC;QACnC,IAAI,SAAS,GAAG,EAAE,CAAC;QACnB,IAAI,eAAmC,CAAC;QACxC,IAAI,KAA0B,CAAC;QAC/B,IAAI,eAAe,GAAG,UAAU,CAAC;QAEjC,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC5C,SAAS,EAAE,UAAU;gBACrB,eAAe,EAAE,OAAO,CAAC,eAAe;gBACxC,KAAK,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;aAC5D,CAAC,EAAE,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBAC9C,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC;oBAC3B,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;gBAClH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;oBACtD,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;gBACpH,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;oBACzC,kEAAkE;oBAClE,IAAI,KAAK,CAAC,SAAS,IAAI,YAAY,EAAE,CAAC;wBACpC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;wBAClC,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;oBACpC,CAAC;yBAAM,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;wBAC3B,eAAe,GAAG,KAAK,CAAC,SAAS,CAAC;oBACpC,CAAC;oBACD,IAAI,KAAK,CAAC,KAAK;wBAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;oBAErC,iEAAiE;oBACjE,OAAO,CAAC,KAAK,EAAE;wBACb,IAAI,EAAE,cAAc;wBACpB,UAAU,EAAE,eAAe;wBAC3B,cAAc,EAAE,YAAY;qBAC7B,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBACjD,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC5G,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;oBACtC,OAAO,CAAC,KAAK,EAAE;wBACb,IAAI,EAAE,WAAW;wBACjB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,SAAS,EAAE,KAAK,CAAC,SAAS;wBAC1B,WAAW,EAAE,SAAS;qBACvB,CAAC,CAAC;gBACL,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBACxC,OAAO,CAAC,KAAK,EAAE;wBACb,IAAI,EAAE,aAAa;wBACnB,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;wBAChC,UAAU,EAAE,KAAK,CAAC,UAAU;qBAC7B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,GAAG,CAAC;oBACT,SAAS,EAAE,eAAe;oBAC1B,SAAS;oBACT,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;oBAC5C,MAAM;oBACN,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;oBAChC,QAAQ,EAAE,EAAE;oBACZ,QAAQ,EAAE,EAAE;oBACZ,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,KAAK,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC;YAC3H,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QAED,kBAAkB;QAClB,MAAM,eAAe,GAAoB;YACvC,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,SAAS,IAAI,kBAAkB;YACxC,UAAU,EAAE,SAAS;YACrB,UAAU,EAAE,eAAe;YAC3B,cAAc,EAAE,YAAY;SAC7B,CAAC;QACF,IAAI,eAAe;YAAE,eAAe,CAAC,iBAAiB,GAAG,eAAe,CAAC;QACzE,IAAI,KAAK;YAAE,eAAe,CAAC,KAAK,GAAG,KAAK,CAAC;QACzC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAEhC,mDAAmD;QACnD,MAAM,YAAY,GAAmB;YACnC,EAAE,EAAE,iBAAiB,EAAE;YACvB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,SAAS,IAAI,kBAAkB;YACxC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QAEF,wEAAwE;QACxE,IAAI,eAAe,KAAK,UAAU,EAAE,CAAC;YACnC,0CAA0C;YAC1C,MAAM,cAAc,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YACpD,mCAAmC;YACnC,MAAM,cAAc,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;YACnG,qBAAqB;YACrB,MAAM,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,cAAc,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;QACvF,CAAC;QAED,aAAa;QACb,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC;gBACT,SAAS,EAAE,eAAe;gBAC1B,SAAS;gBACT,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE;gBAC5C,MAAM;gBACN,QAAQ,EAAE,SAAS,IAAI,kBAAkB;gBACzC,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,KAAK;gBACL,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,yCAAyC;IACzC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QACxD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAmC,CAAC;QACzD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,0CAA0C;IAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3D,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,OAAO,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,MAAwB,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO;YAAE,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@loom-framework/backend",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.22",
|
|
4
4
|
"description": "Loom framework backend - AI communication, SSE chat, REST routes",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"lint": "tsc --noEmit"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@loom-framework/core": "^0.1.0-alpha.
|
|
28
|
+
"@loom-framework/core": "^0.1.0-alpha.22",
|
|
29
29
|
"fastify": "^5.2.0",
|
|
30
30
|
"@fastify/cors": "^10.0.0",
|
|
31
31
|
"@fastify/static": "^8.0.0"
|