@goodandready/dsh-cron 0.1.7 → 0.1.9
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/lib/chat-start.js +2 -1
- package/lib/client.js +41 -11
- package/package.json +1 -1
package/lib/chat-start.js
CHANGED
|
@@ -39,9 +39,10 @@ export async function chatStartHandler(ctx, req, res, parseJsonBody, sendJson, r
|
|
|
39
39
|
const provider = body.provider || defaultSel?.provider;
|
|
40
40
|
const model = body.model || defaultSel?.model;
|
|
41
41
|
|
|
42
|
+
const cwd = process.cwd();
|
|
42
43
|
const handle = await agents.create({
|
|
43
44
|
sessionId: mintSessionId(),
|
|
44
|
-
meta: {},
|
|
45
|
+
meta: { cwd },
|
|
45
46
|
agentOptions: provider && model ? { provider, model } : undefined,
|
|
46
47
|
});
|
|
47
48
|
|
package/lib/client.js
CHANGED
|
@@ -153,16 +153,48 @@ const React = window.React || require('react');
|
|
|
153
153
|
};
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
function openSession(ctx, sessionId) {
|
|
156
|
+
async function openSession(ctx, sessionId) {
|
|
157
157
|
if (!sessionId) return false;
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
158
|
+
const getSessions = () => (ctx && typeof ctx.get === 'function' ? ctx.get('sessions') : (ctx && ctx.sessions));
|
|
159
|
+
let sessions = getSessions();
|
|
160
|
+
|
|
161
|
+
// 1. Попытка вызвать sessions.open(sessionId) немедленно
|
|
162
|
+
if (sessions && typeof sessions.open === 'function') {
|
|
163
|
+
try {
|
|
164
|
+
sessions.open(sessionId);
|
|
165
|
+
return true;
|
|
166
|
+
} catch (e) {}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// 2. Если сессия еще не попала в manager.summaries, обновляем список с бэкенда
|
|
170
|
+
if (sessions && typeof sessions.refresh === 'function') {
|
|
171
|
+
try {
|
|
172
|
+
await sessions.refresh();
|
|
173
|
+
sessions.open(sessionId);
|
|
174
|
+
return true;
|
|
175
|
+
} catch (e) {}
|
|
165
176
|
}
|
|
177
|
+
|
|
178
|
+
// 3. Асинхронные ретраи с интервалом (пока WebSocket/SSE событие добавляет сессию в список)
|
|
179
|
+
for (let i = 0; i < 15; i++) {
|
|
180
|
+
await new Promise(resolve => setTimeout(resolve, 120));
|
|
181
|
+
sessions = getSessions();
|
|
182
|
+
if (sessions && typeof sessions.open === 'function') {
|
|
183
|
+
try {
|
|
184
|
+
sessions.open(sessionId);
|
|
185
|
+
return true;
|
|
186
|
+
} catch (e) {}
|
|
187
|
+
}
|
|
188
|
+
// DOM fallback: клик по сессии в боковой панели, если она уже отрендерилась
|
|
189
|
+
if (typeof document !== 'undefined') {
|
|
190
|
+
const domItem = document.querySelector('[data-session-id="' + sessionId + '"], [role="treeitem"][data-id="' + sessionId + '"], [data-id="' + sessionId + '"]');
|
|
191
|
+
if (domItem) {
|
|
192
|
+
domItem.click();
|
|
193
|
+
return true;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return false;
|
|
166
198
|
}
|
|
167
199
|
|
|
168
200
|
function CronScreen(props) {
|
|
@@ -329,9 +361,7 @@ const React = window.React || require('react');
|
|
|
329
361
|
if (onClose) onClose();
|
|
330
362
|
else toggle.set(false);
|
|
331
363
|
|
|
332
|
-
|
|
333
|
-
alert('Сессия создана (' + data.sessionId + '), перейдите к ней в списке чатов');
|
|
334
|
-
}
|
|
364
|
+
await openSession(ctx, data.sessionId);
|
|
335
365
|
} catch (err) {
|
|
336
366
|
alert('Ошибка запуска: ' + err.message);
|
|
337
367
|
} finally {
|