@sna-sdk/core 0.8.0 → 0.9.4
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/config.d.ts +48 -0
- package/dist/config.js +40 -0
- package/dist/core/providers/claude-code.js +68 -3
- package/dist/core/providers/types.d.ts +9 -1
- package/dist/electron/index.cjs +1 -0
- package/dist/electron/index.d.ts +5 -0
- package/dist/electron/index.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +5 -1
- package/dist/node/index.cjs +1 -0
- package/dist/scripts/hook.js +17 -14
- package/dist/server/routes/agent.js +37 -14
- package/dist/server/routes/chat.js +2 -1
- package/dist/server/routes/emit.js +4 -2
- package/dist/server/routes/events.js +3 -4
- package/dist/server/session-manager.d.ts +4 -1
- package/dist/server/session-manager.js +18 -17
- package/dist/server/standalone.js +178 -55
- package/dist/server/ws.d.ts +5 -1
- package/dist/server/ws.js +18 -10
- package/package.json +1 -1
package/dist/server/ws.d.ts
CHANGED
|
@@ -28,11 +28,14 @@ import '../core/providers/types.js';
|
|
|
28
28
|
* agent.status { session? }
|
|
29
29
|
* agent.subscribe { session?, since? }
|
|
30
30
|
* agent.unsubscribe { session? }
|
|
31
|
-
* agent.run-once { message, model?, systemPrompt?, permissionMode?, timeout? }
|
|
31
|
+
* agent.run-once { message, model?, systemPrompt?, appendSystemPrompt?, permissionMode?, cwd?, timeout?, provider?, extraArgs? }
|
|
32
32
|
*
|
|
33
33
|
* events.subscribe { since? }
|
|
34
34
|
* events.unsubscribe {}
|
|
35
35
|
* emit { skill, eventType, message, data?, session? }
|
|
36
|
+
* NOTE: WS uses `eventType` (not `type`) because `type` is reserved
|
|
37
|
+
* as the WS protocol routing field. HTTP POST /emit uses `type` instead.
|
|
38
|
+
* WS uses `session` (not `session_id`) consistent with all other WS ops.
|
|
36
39
|
*
|
|
37
40
|
* permission.respond { session?, approved }
|
|
38
41
|
* permission.pending { session? }
|
|
@@ -41,6 +44,7 @@ import '../core/providers/types.js';
|
|
|
41
44
|
*
|
|
42
45
|
* chat.sessions.list {}
|
|
43
46
|
* chat.sessions.create { id?, label?, chatType?, meta? }
|
|
47
|
+
* NOTE: WS uses `chatType` (not `type`) for the same reason as `eventType` above.
|
|
44
48
|
* chat.sessions.remove { session }
|
|
45
49
|
* chat.messages.list { session, since? }
|
|
46
50
|
* chat.messages.create { session, role, content?, skill_name?, meta? }
|
package/dist/server/ws.js
CHANGED
|
@@ -6,6 +6,7 @@ import { runOnce } from "./routes/agent.js";
|
|
|
6
6
|
import { wsReply } from "./api-types.js";
|
|
7
7
|
import { buildHistoryFromDb } from "./history-builder.js";
|
|
8
8
|
import { saveImages } from "./image-store.js";
|
|
9
|
+
import { getConfig } from "../config.js";
|
|
9
10
|
function send(ws, data) {
|
|
10
11
|
if (ws.readyState === ws.OPEN) {
|
|
11
12
|
ws.send(JSON.stringify(data));
|
|
@@ -161,6 +162,7 @@ function handleMessage(ws, msg, sm, state) {
|
|
|
161
162
|
function handleSessionsCreate(ws, msg, sm) {
|
|
162
163
|
try {
|
|
163
164
|
const session = sm.createSession({
|
|
165
|
+
id: msg.id,
|
|
164
166
|
label: msg.label,
|
|
165
167
|
cwd: msg.cwd,
|
|
166
168
|
meta: msg.meta
|
|
@@ -198,11 +200,11 @@ function handleAgentStart(ws, msg, sm) {
|
|
|
198
200
|
cwd: msg.cwd
|
|
199
201
|
});
|
|
200
202
|
if (session.process?.alive && !msg.force) {
|
|
201
|
-
wsReply(ws, msg, { status: "already_running", provider:
|
|
203
|
+
wsReply(ws, msg, { status: "already_running", provider: getConfig().defaultProvider, sessionId: session.id });
|
|
202
204
|
return;
|
|
203
205
|
}
|
|
204
206
|
if (session.process?.alive) session.process.kill();
|
|
205
|
-
const provider = getProvider(msg.provider ??
|
|
207
|
+
const provider = getProvider(msg.provider ?? getConfig().defaultProvider);
|
|
206
208
|
try {
|
|
207
209
|
const db = getDb();
|
|
208
210
|
db.prepare(`INSERT OR IGNORE INTO chat_sessions (id, label, type) VALUES (?, ?, 'main')`).run(sessionId, session.label ?? sessionId);
|
|
@@ -215,9 +217,11 @@ function handleAgentStart(ws, msg, sm) {
|
|
|
215
217
|
}
|
|
216
218
|
} catch {
|
|
217
219
|
}
|
|
218
|
-
const
|
|
219
|
-
const
|
|
220
|
+
const cfg = getConfig();
|
|
221
|
+
const providerName = msg.provider ?? cfg.defaultProvider;
|
|
222
|
+
const model = msg.model ?? cfg.model;
|
|
220
223
|
const permissionMode = msg.permissionMode;
|
|
224
|
+
const configDir = msg.configDir;
|
|
221
225
|
const extraArgs = msg.extraArgs;
|
|
222
226
|
try {
|
|
223
227
|
const proc = provider.spawn({
|
|
@@ -225,12 +229,13 @@ function handleAgentStart(ws, msg, sm) {
|
|
|
225
229
|
prompt: msg.prompt,
|
|
226
230
|
model,
|
|
227
231
|
permissionMode,
|
|
232
|
+
configDir,
|
|
228
233
|
env: { SNA_SESSION_ID: sessionId },
|
|
229
234
|
history: msg.history,
|
|
230
235
|
extraArgs
|
|
231
236
|
});
|
|
232
237
|
sm.setProcess(sessionId, proc);
|
|
233
|
-
sm.saveStartConfig(sessionId, { provider: providerName, model, permissionMode, extraArgs });
|
|
238
|
+
sm.saveStartConfig(sessionId, { provider: providerName, model, permissionMode, configDir, extraArgs });
|
|
234
239
|
wsReply(ws, msg, { status: "started", provider: provider.name, sessionId: session.id });
|
|
235
240
|
} catch (e) {
|
|
236
241
|
replyError(ws, msg, e.message);
|
|
@@ -290,9 +295,10 @@ function handleAgentResume(ws, msg, sm) {
|
|
|
290
295
|
if (history.length === 0 && !msg.prompt) {
|
|
291
296
|
return replyError(ws, msg, "No history in DB \u2014 nothing to resume.");
|
|
292
297
|
}
|
|
293
|
-
const providerName = msg.provider ?? session.lastStartConfig?.provider ??
|
|
294
|
-
const model = msg.model ?? session.lastStartConfig?.model ??
|
|
298
|
+
const providerName = msg.provider ?? session.lastStartConfig?.provider ?? getConfig().defaultProvider;
|
|
299
|
+
const model = msg.model ?? session.lastStartConfig?.model ?? getConfig().model;
|
|
295
300
|
const permissionMode = msg.permissionMode ?? session.lastStartConfig?.permissionMode;
|
|
301
|
+
const configDir = msg.configDir ?? session.lastStartConfig?.configDir;
|
|
296
302
|
const extraArgs = msg.extraArgs ?? session.lastStartConfig?.extraArgs;
|
|
297
303
|
const provider = getProvider(providerName);
|
|
298
304
|
try {
|
|
@@ -301,12 +307,13 @@ function handleAgentResume(ws, msg, sm) {
|
|
|
301
307
|
prompt: msg.prompt,
|
|
302
308
|
model,
|
|
303
309
|
permissionMode,
|
|
310
|
+
configDir,
|
|
304
311
|
env: { SNA_SESSION_ID: sessionId },
|
|
305
312
|
history: history.length > 0 ? history : void 0,
|
|
306
313
|
extraArgs
|
|
307
314
|
});
|
|
308
315
|
sm.setProcess(sessionId, proc, "resumed");
|
|
309
|
-
sm.saveStartConfig(sessionId, { provider: providerName, model, permissionMode, extraArgs });
|
|
316
|
+
sm.saveStartConfig(sessionId, { provider: providerName, model, permissionMode, configDir, extraArgs });
|
|
310
317
|
wsReply(ws, msg, {
|
|
311
318
|
status: "resumed",
|
|
312
319
|
provider: providerName,
|
|
@@ -327,6 +334,7 @@ function handleAgentRestart(ws, msg, sm) {
|
|
|
327
334
|
provider: msg.provider,
|
|
328
335
|
model: msg.model,
|
|
329
336
|
permissionMode: msg.permissionMode,
|
|
337
|
+
configDir: msg.configDir,
|
|
330
338
|
extraArgs: msg.extraArgs
|
|
331
339
|
},
|
|
332
340
|
(cfg) => {
|
|
@@ -336,6 +344,7 @@ function handleAgentRestart(ws, msg, sm) {
|
|
|
336
344
|
cwd: sm.getSession(sessionId).cwd,
|
|
337
345
|
model: cfg.model,
|
|
338
346
|
permissionMode: cfg.permissionMode,
|
|
347
|
+
configDir: cfg.configDir,
|
|
339
348
|
env: { SNA_SESSION_ID: sessionId },
|
|
340
349
|
extraArgs: [...cfg.extraArgs ?? [], ...resumeArgs]
|
|
341
350
|
});
|
|
@@ -474,7 +483,6 @@ function handleAgentUnsubscribe(ws, msg, state) {
|
|
|
474
483
|
state.agentUnsubs.delete(sessionId);
|
|
475
484
|
reply(ws, msg, {});
|
|
476
485
|
}
|
|
477
|
-
const SKILL_POLL_MS = 2e3;
|
|
478
486
|
function handleEventsSubscribe(ws, msg, sm, state) {
|
|
479
487
|
state.skillEventUnsub?.();
|
|
480
488
|
state.skillEventUnsub = null;
|
|
@@ -514,7 +522,7 @@ function handleEventsSubscribe(ws, msg, sm, state) {
|
|
|
514
522
|
}
|
|
515
523
|
} catch {
|
|
516
524
|
}
|
|
517
|
-
},
|
|
525
|
+
}, getConfig().skillPollMs);
|
|
518
526
|
reply(ws, msg, { lastId });
|
|
519
527
|
}
|
|
520
528
|
function handleEventsUnsubscribe(ws, msg, state) {
|