jinn-cli 0.1.1 → 0.3.0
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/bin/jimmy.js +1 -1
- package/dist/src/connectors/cron/index.d.ts +21 -0
- package/dist/src/connectors/cron/index.d.ts.map +1 -0
- package/dist/src/connectors/cron/index.js +75 -0
- package/dist/src/connectors/cron/index.js.map +1 -0
- package/dist/src/connectors/slack/index.d.ts +13 -5
- package/dist/src/connectors/slack/index.d.ts.map +1 -1
- package/dist/src/connectors/slack/index.js +80 -3
- package/dist/src/connectors/slack/index.js.map +1 -1
- package/dist/src/connectors/slack/threads.d.ts +14 -1
- package/dist/src/connectors/slack/threads.d.ts.map +1 -1
- package/dist/src/connectors/slack/threads.js +23 -2
- package/dist/src/connectors/slack/threads.js.map +1 -1
- package/dist/src/connectors/slack/threads.test.d.ts +2 -0
- package/dist/src/connectors/slack/threads.test.d.ts.map +1 -0
- package/dist/src/connectors/slack/threads.test.js +45 -0
- package/dist/src/connectors/slack/threads.test.js.map +1 -0
- package/dist/src/cron/runner.d.ts +3 -2
- package/dist/src/cron/runner.d.ts.map +1 -1
- package/dist/src/cron/runner.js +48 -89
- package/dist/src/cron/runner.js.map +1 -1
- package/dist/src/cron/scheduler.d.ts +5 -2
- package/dist/src/cron/scheduler.d.ts.map +1 -1
- package/dist/src/cron/scheduler.js +29 -4
- package/dist/src/cron/scheduler.js.map +1 -1
- package/dist/src/engines/claude.js +1 -1
- package/dist/src/engines/claude.js.map +1 -1
- package/dist/src/engines/codex.js +2 -2
- package/dist/src/engines/codex.js.map +1 -1
- package/dist/src/gateway/api.d.ts.map +1 -1
- package/dist/src/gateway/api.js +58 -26
- package/dist/src/gateway/api.js.map +1 -1
- package/dist/src/gateway/server.d.ts.map +1 -1
- package/dist/src/gateway/server.js +5 -3
- package/dist/src/gateway/server.js.map +1 -1
- package/dist/src/sessions/manager.d.ts +12 -25
- package/dist/src/sessions/manager.d.ts.map +1 -1
- package/dist/src/sessions/manager.js +171 -96
- package/dist/src/sessions/manager.js.map +1 -1
- package/dist/src/sessions/queue.d.ts +5 -0
- package/dist/src/sessions/queue.d.ts.map +1 -1
- package/dist/src/sessions/queue.js +26 -0
- package/dist/src/sessions/queue.js.map +1 -1
- package/dist/src/sessions/queue.test.d.ts +2 -0
- package/dist/src/sessions/queue.test.d.ts.map +1 -0
- package/dist/src/sessions/queue.test.js +28 -0
- package/dist/src/sessions/queue.test.js.map +1 -0
- package/dist/src/sessions/registry.d.ts +12 -1
- package/dist/src/sessions/registry.d.ts.map +1 -1
- package/dist/src/sessions/registry.js +89 -11
- package/dist/src/sessions/registry.js.map +1 -1
- package/dist/src/sessions/registry.test.d.ts +2 -0
- package/dist/src/sessions/registry.test.d.ts.map +1 -0
- package/dist/src/sessions/registry.test.js +41 -0
- package/dist/src/sessions/registry.test.js.map +1 -0
- package/dist/src/shared/types.d.ts +43 -1
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/_next/static/chunks/app/sessions/page-c83c890177c18258.js +1 -0
- package/dist/web/_next/static/chunks/app/settings/page-2583d55551abdf72.js +1 -0
- package/dist/web/chat.html +1 -1
- package/dist/web/chat.txt +1 -1
- package/dist/web/costs.html +2 -2
- package/dist/web/costs.txt +1 -1
- package/dist/web/cron.html +1 -1
- package/dist/web/cron.txt +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +1 -1
- package/dist/web/kanban.html +1 -1
- package/dist/web/kanban.txt +1 -1
- package/dist/web/logs.html +2 -2
- package/dist/web/logs.txt +1 -1
- package/dist/web/org.html +1 -1
- package/dist/web/org.txt +1 -1
- package/dist/web/sessions.html +1 -1
- package/dist/web/sessions.txt +2 -2
- package/dist/web/settings.html +1 -1
- package/dist/web/settings.txt +2 -2
- package/dist/web/skills.html +1 -1
- package/dist/web/skills.txt +1 -1
- package/package.json +9 -8
- package/template/config.default.yaml +5 -2
- package/template/migrations/0.2.0/MIGRATION.md +41 -0
- package/template/migrations/0.2.0/files/config.default.yaml +30 -0
- package/LICENSE +0 -21
- package/dist/web/_next/static/chunks/app/sessions/page-2eef6ac7882a28ba.js +0 -1
- package/dist/web/_next/static/chunks/app/settings/page-4fb01b9b09500170.js +0 -1
- /package/dist/web/_next/static/{vLvOwhC8JocJzSHTHKKOv → jt8R5JvUgfB9CMfFwWFr0}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{vLvOwhC8JocJzSHTHKKOv → jt8R5JvUgfB9CMfFwWFr0}/_ssgManifest.js +0 -0
|
@@ -1,90 +1,102 @@
|
|
|
1
|
-
import { createSession,
|
|
1
|
+
import { createSession, deleteSession, getSessionBySessionKey, insertMessage, updateSession, } from "./registry.js";
|
|
2
2
|
import { buildContext } from "./context.js";
|
|
3
3
|
import { SessionQueue } from "./queue.js";
|
|
4
4
|
import { JINN_HOME } from "../shared/paths.js";
|
|
5
5
|
import { logger } from "../shared/logger.js";
|
|
6
|
+
import { loadJobs } from "../cron/jobs.js";
|
|
7
|
+
import { setCronJobEnabled, triggerCronJob } from "../cron/scheduler.js";
|
|
6
8
|
export class SessionManager {
|
|
7
9
|
config;
|
|
8
10
|
engines;
|
|
9
11
|
connectorNames;
|
|
10
12
|
queue = new SessionQueue();
|
|
13
|
+
connectorProvider = () => new Map();
|
|
11
14
|
constructor(config, engines, connectorNames = []) {
|
|
12
15
|
this.config = config;
|
|
13
16
|
this.engines = engines;
|
|
14
17
|
this.connectorNames = connectorNames;
|
|
15
18
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
setConnectorProvider(provider) {
|
|
20
|
+
this.connectorProvider = provider;
|
|
21
|
+
}
|
|
19
22
|
getEngine(name) {
|
|
20
23
|
return this.engines.get(name);
|
|
21
24
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Get the session queue (used by api.ts for mid-turn handling).
|
|
24
|
-
*/
|
|
25
25
|
getQueue() {
|
|
26
26
|
return this.queue;
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
* Main entry point: route an incoming message to the right session.
|
|
30
|
-
*/
|
|
31
|
-
async route(msg, connector, employee) {
|
|
32
|
-
// Check for commands first
|
|
28
|
+
async route(msg, connector, opts = {}) {
|
|
33
29
|
if (await this.handleCommand(msg, connector))
|
|
34
30
|
return;
|
|
35
|
-
|
|
36
|
-
let session = getSessionBySourceRef(sourceRef);
|
|
31
|
+
let session = getSessionBySessionKey(msg.sessionKey);
|
|
37
32
|
if (!session) {
|
|
38
33
|
session = createSession({
|
|
39
|
-
engine: employee?.engine ?? this.config.engines.default,
|
|
34
|
+
engine: opts.engine ?? opts.employee?.engine ?? this.config.engines.default,
|
|
40
35
|
source: msg.source,
|
|
41
|
-
sourceRef,
|
|
42
|
-
|
|
43
|
-
|
|
36
|
+
sourceRef: msg.sessionKey,
|
|
37
|
+
connector: msg.connector,
|
|
38
|
+
sessionKey: msg.sessionKey,
|
|
39
|
+
replyContext: msg.replyContext,
|
|
40
|
+
messageId: msg.messageId,
|
|
41
|
+
transportMeta: msg.transportMeta,
|
|
42
|
+
employee: opts.employee?.name ?? undefined,
|
|
43
|
+
model: opts.model ?? opts.employee?.model ?? undefined,
|
|
44
|
+
title: opts.title,
|
|
45
|
+
prompt: msg.text,
|
|
44
46
|
portalName: this.config.portal?.portalName,
|
|
45
47
|
});
|
|
46
|
-
logger.info(`Created new session ${session.id} for ${
|
|
48
|
+
logger.info(`Created new session ${session.id} for ${msg.sessionKey}` +
|
|
49
|
+
(opts.employee ? ` (employee: ${opts.employee.name})` : ""));
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
session = updateSession(session.id, {
|
|
53
|
+
replyContext: msg.replyContext,
|
|
54
|
+
messageId: msg.messageId ?? null,
|
|
55
|
+
transportMeta: msg.transportMeta ?? null,
|
|
56
|
+
...(opts.model ? { model: opts.model } : {}),
|
|
57
|
+
}) ?? session;
|
|
47
58
|
}
|
|
48
|
-
const target =
|
|
49
|
-
|
|
50
|
-
thread: msg.thread,
|
|
51
|
-
messageTs: msg.raw?.ts,
|
|
52
|
-
};
|
|
59
|
+
const target = connector.reconstructTarget(msg.replyContext);
|
|
60
|
+
target.messageTs ??= msg.messageId;
|
|
53
61
|
const attachmentPaths = msg.attachments
|
|
54
|
-
.map((
|
|
55
|
-
.filter((
|
|
56
|
-
|
|
57
|
-
if (session.status === "running" && this.queue.isRunning(sourceRef)) {
|
|
62
|
+
.map((attachment) => attachment.localPath)
|
|
63
|
+
.filter((filePath) => !!filePath);
|
|
64
|
+
if (session.status === "running" && this.queue.isRunning(msg.sessionKey) && connector.getCapabilities().reactions) {
|
|
58
65
|
await connector.addReaction(target, "clock1").catch(() => { });
|
|
59
66
|
}
|
|
60
|
-
await this.queue.enqueue(
|
|
67
|
+
await this.queue.enqueue(msg.sessionKey, () => this.runSession(session, msg, attachmentPaths, connector, target, opts.employee));
|
|
61
68
|
}
|
|
62
|
-
|
|
63
|
-
* Run engine for a session, handling reactions and status updates.
|
|
64
|
-
*/
|
|
65
|
-
async runSession(session, prompt, user, attachments, connector, target, employee) {
|
|
69
|
+
async runSession(session, msg, attachments, connector, target, employee) {
|
|
66
70
|
const engine = this.engines.get(session.engine);
|
|
67
71
|
if (!engine) {
|
|
68
72
|
logger.error(`Engine "${session.engine}" not found for session ${session.id}`);
|
|
69
|
-
await connector.
|
|
73
|
+
await connector.replyMessage(target, `Error: engine "${session.engine}" not available.`);
|
|
70
74
|
return;
|
|
71
75
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
insertMessage(session.id, "user", msg.text);
|
|
77
|
+
const capabilities = connector.getCapabilities();
|
|
78
|
+
const decorateMessages = session.source !== "cron";
|
|
79
|
+
if (decorateMessages && capabilities.reactions) {
|
|
80
|
+
await connector.addReaction(target, "eyes").catch(() => { });
|
|
81
|
+
}
|
|
82
|
+
let thinkingTs;
|
|
83
|
+
if (decorateMessages) {
|
|
84
|
+
const placeholderResult = await connector.replyMessage(target, "_Thinking..._").catch(() => undefined);
|
|
85
|
+
thinkingTs = typeof placeholderResult === "string" ? placeholderResult : undefined;
|
|
86
|
+
}
|
|
78
87
|
updateSession(session.id, {
|
|
79
88
|
status: "running",
|
|
89
|
+
replyContext: msg.replyContext,
|
|
90
|
+
messageId: msg.messageId ?? null,
|
|
91
|
+
transportMeta: msg.transportMeta ?? null,
|
|
80
92
|
lastActivity: new Date().toISOString(),
|
|
81
93
|
});
|
|
82
94
|
try {
|
|
83
95
|
const systemPrompt = buildContext({
|
|
84
96
|
source: session.source,
|
|
85
|
-
channel:
|
|
86
|
-
thread:
|
|
87
|
-
user,
|
|
97
|
+
channel: msg.channel,
|
|
98
|
+
thread: msg.thread,
|
|
99
|
+
user: msg.user,
|
|
88
100
|
employee,
|
|
89
101
|
connectors: this.connectorNames,
|
|
90
102
|
config: this.config,
|
|
@@ -94,7 +106,7 @@ export class SessionManager {
|
|
|
94
106
|
? this.config.engines.codex
|
|
95
107
|
: this.config.engines.claude;
|
|
96
108
|
const result = await engine.run({
|
|
97
|
-
prompt,
|
|
109
|
+
prompt: msg.text,
|
|
98
110
|
resumeSessionId: session.engineSessionId ?? undefined,
|
|
99
111
|
systemPrompt,
|
|
100
112
|
cwd: JINN_HOME,
|
|
@@ -105,26 +117,27 @@ export class SessionManager {
|
|
|
105
117
|
attachments: attachments.length > 0 ? attachments : undefined,
|
|
106
118
|
sessionId: session.id,
|
|
107
119
|
});
|
|
108
|
-
// Edit the thinking message with the actual response, or send new if edit fails
|
|
109
120
|
const responseText = result.result?.trim()
|
|
110
121
|
? result.result
|
|
111
122
|
: result.error || "(No response from engine)";
|
|
112
|
-
// Persist assistant response
|
|
113
123
|
insertMessage(session.id, "assistant", responseText);
|
|
114
|
-
if (thinkingTs) {
|
|
115
|
-
await connector.editMessage({
|
|
116
|
-
await connector.
|
|
124
|
+
if (thinkingTs && capabilities.messageEdits) {
|
|
125
|
+
await connector.editMessage({ ...target, messageTs: thinkingTs }, responseText).catch(async () => {
|
|
126
|
+
await connector.replyMessage(target, responseText);
|
|
117
127
|
});
|
|
118
128
|
}
|
|
119
129
|
else {
|
|
120
|
-
await connector.
|
|
130
|
+
await connector.replyMessage(target, responseText);
|
|
131
|
+
}
|
|
132
|
+
if (decorateMessages && capabilities.reactions) {
|
|
133
|
+
await connector.removeReaction(target, "eyes").catch(() => { });
|
|
121
134
|
}
|
|
122
|
-
// Remove eyes reaction
|
|
123
|
-
await connector.removeReaction(target, "eyes").catch(() => { });
|
|
124
|
-
// Update session with engine session id for resume
|
|
125
135
|
updateSession(session.id, {
|
|
126
136
|
engineSessionId: result.sessionId,
|
|
127
|
-
status: "idle",
|
|
137
|
+
status: result.error ? "error" : "idle",
|
|
138
|
+
replyContext: msg.replyContext,
|
|
139
|
+
messageId: msg.messageId ?? null,
|
|
140
|
+
transportMeta: msg.transportMeta ?? null,
|
|
128
141
|
lastActivity: new Date().toISOString(),
|
|
129
142
|
lastError: result.error ?? null,
|
|
130
143
|
});
|
|
@@ -139,70 +152,132 @@ export class SessionManager {
|
|
|
139
152
|
lastActivity: new Date().toISOString(),
|
|
140
153
|
lastError: errMsg,
|
|
141
154
|
});
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
await connector.editMessage({ channel: target.channel, thread: target.thread || target.messageTs, messageTs: thinkingTs }, `Error: ${errMsg}`).catch(() => { });
|
|
155
|
+
if (thinkingTs && capabilities.messageEdits) {
|
|
156
|
+
await connector.editMessage({ ...target, messageTs: thinkingTs }, `Error: ${errMsg}`).catch(() => { });
|
|
145
157
|
}
|
|
146
158
|
else {
|
|
147
|
-
await connector.
|
|
159
|
+
await connector.replyMessage(target, `Error: ${errMsg}`).catch(() => { });
|
|
160
|
+
}
|
|
161
|
+
if (decorateMessages && capabilities.reactions) {
|
|
162
|
+
await connector.removeReaction(target, "eyes").catch(() => { });
|
|
148
163
|
}
|
|
149
|
-
await connector.removeReaction(target, "eyes").catch(() => { });
|
|
150
164
|
}
|
|
151
165
|
}
|
|
152
|
-
/**
|
|
153
|
-
* Handle slash commands. Returns true if a command was handled.
|
|
154
|
-
*/
|
|
155
166
|
async handleCommand(msg, connector) {
|
|
156
167
|
const text = msg.text.trim();
|
|
157
|
-
const target =
|
|
168
|
+
const target = connector.reconstructTarget(msg.replyContext);
|
|
169
|
+
target.messageTs ??= msg.messageId;
|
|
158
170
|
if (text === "/new" || text.startsWith("/new ")) {
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
logger.info(`Session reset for ${sourceRef}`);
|
|
171
|
+
this.resetSession(msg.sessionKey);
|
|
172
|
+
await connector.replyMessage(target, "Session reset. Starting fresh.");
|
|
173
|
+
logger.info(`Session reset for ${msg.sessionKey}`);
|
|
163
174
|
return true;
|
|
164
175
|
}
|
|
165
176
|
if (text === "/status" || text.startsWith("/status ")) {
|
|
166
|
-
const
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
`Session: ${session.id}`,
|
|
171
|
-
`Engine: ${session.engine}`,
|
|
172
|
-
`Status: ${session.status}`,
|
|
173
|
-
`Created: ${session.createdAt}`,
|
|
174
|
-
`Last activity: ${session.lastActivity}`,
|
|
175
|
-
session.lastError ? `Last error: ${session.lastError}` : null,
|
|
176
|
-
]
|
|
177
|
-
.filter(Boolean)
|
|
178
|
-
.join("\n");
|
|
179
|
-
await connector.sendMessage(target, info);
|
|
177
|
+
const session = getSessionBySessionKey(msg.sessionKey);
|
|
178
|
+
if (!session) {
|
|
179
|
+
await connector.replyMessage(target, "No active session for this conversation.");
|
|
180
|
+
return true;
|
|
180
181
|
}
|
|
181
|
-
|
|
182
|
-
|
|
182
|
+
const queueDepth = this.queue.getPendingCount(session.sessionKey);
|
|
183
|
+
const transportState = this.queue.getTransportState(session.sessionKey, session.status);
|
|
184
|
+
const info = [
|
|
185
|
+
`Session: ${session.id}`,
|
|
186
|
+
`Engine: ${session.engine}`,
|
|
187
|
+
`Connector: ${session.connector || session.source}`,
|
|
188
|
+
`Model: ${session.model || this.config.engines[session.engine]?.model || "default"}`,
|
|
189
|
+
`State: ${transportState}`,
|
|
190
|
+
`Queue depth: ${queueDepth}`,
|
|
191
|
+
`Created: ${session.createdAt}`,
|
|
192
|
+
`Last activity: ${session.lastActivity}`,
|
|
193
|
+
session.lastError ? `Last error: ${session.lastError}` : null,
|
|
194
|
+
].filter(Boolean).join("\n");
|
|
195
|
+
await connector.replyMessage(target, info);
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
if (text.startsWith("/model")) {
|
|
199
|
+
const nextModel = text.slice("/model".length).trim();
|
|
200
|
+
if (!nextModel) {
|
|
201
|
+
await connector.replyMessage(target, "Usage: /model <model-name>");
|
|
202
|
+
return true;
|
|
203
|
+
}
|
|
204
|
+
const session = getSessionBySessionKey(msg.sessionKey);
|
|
205
|
+
if (!session) {
|
|
206
|
+
await connector.replyMessage(target, "No active session for this conversation.");
|
|
207
|
+
return true;
|
|
183
208
|
}
|
|
209
|
+
updateSession(session.id, {
|
|
210
|
+
model: nextModel,
|
|
211
|
+
lastActivity: new Date().toISOString(),
|
|
212
|
+
});
|
|
213
|
+
await connector.replyMessage(target, `Model updated to \`${nextModel}\` for this session.`);
|
|
184
214
|
return true;
|
|
185
215
|
}
|
|
216
|
+
if (text === "/doctor" || text.startsWith("/doctor ")) {
|
|
217
|
+
const connectors = Array.from(this.connectorProvider().values());
|
|
218
|
+
const connectorLines = connectors.length > 0
|
|
219
|
+
? connectors.map((candidate) => {
|
|
220
|
+
const health = candidate.getHealth();
|
|
221
|
+
return `- ${candidate.name}: ${health.status}${health.detail ? ` (${health.detail})` : ""}`;
|
|
222
|
+
})
|
|
223
|
+
: ["- none"];
|
|
224
|
+
const info = [
|
|
225
|
+
`Default engine: ${this.config.engines.default}`,
|
|
226
|
+
`Claude: ${this.config.engines.claude.model}`,
|
|
227
|
+
`Codex: ${this.config.engines.codex.model}`,
|
|
228
|
+
"Connectors:",
|
|
229
|
+
...connectorLines,
|
|
230
|
+
].join("\n");
|
|
231
|
+
await connector.replyMessage(target, info);
|
|
232
|
+
return true;
|
|
233
|
+
}
|
|
234
|
+
if (text.startsWith("/cron")) {
|
|
235
|
+
return this.handleCronCommand(text, connector, target);
|
|
236
|
+
}
|
|
186
237
|
return false;
|
|
187
238
|
}
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
*/
|
|
191
|
-
resetSession(sourceRef) {
|
|
192
|
-
const session = getSessionBySourceRef(sourceRef);
|
|
239
|
+
resetSession(sessionKey) {
|
|
240
|
+
const session = getSessionBySessionKey(sessionKey);
|
|
193
241
|
if (session) {
|
|
194
242
|
deleteSession(session.id);
|
|
195
243
|
logger.info(`Deleted session ${session.id}`);
|
|
196
244
|
}
|
|
197
245
|
}
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
246
|
+
async handleCronCommand(text, connector, target) {
|
|
247
|
+
const [_, subcommand = "", ...rest] = text.split(/\s+/);
|
|
248
|
+
const arg = rest.join(" ").trim();
|
|
249
|
+
if (!subcommand || subcommand === "list") {
|
|
250
|
+
const jobs = loadJobs();
|
|
251
|
+
if (jobs.length === 0) {
|
|
252
|
+
await connector.replyMessage(target, "No cron jobs configured.");
|
|
253
|
+
return true;
|
|
254
|
+
}
|
|
255
|
+
const lines = jobs.map((job) => `- ${job.name} (${job.id}) — ${job.enabled ? "enabled" : "disabled"} — ${job.schedule}`);
|
|
256
|
+
await connector.replyMessage(target, ["Cron jobs:", ...lines].join("\n"));
|
|
257
|
+
return true;
|
|
258
|
+
}
|
|
259
|
+
if (subcommand === "run") {
|
|
260
|
+
if (!arg) {
|
|
261
|
+
await connector.replyMessage(target, "Usage: /cron run <job-id-or-name>");
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
const job = await triggerCronJob(arg);
|
|
265
|
+
await connector.replyMessage(target, job ? `Triggered cron job "${job.name}".` : `Cron job "${arg}" not found.`);
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
if (subcommand === "enable" || subcommand === "disable") {
|
|
269
|
+
if (!arg) {
|
|
270
|
+
await connector.replyMessage(target, `Usage: /cron ${subcommand} <job-id-or-name>`);
|
|
271
|
+
return true;
|
|
272
|
+
}
|
|
273
|
+
const job = setCronJobEnabled(arg, subcommand === "enable");
|
|
274
|
+
await connector.replyMessage(target, job
|
|
275
|
+
? `Cron job "${job.name}" ${job.enabled ? "enabled" : "disabled"}.`
|
|
276
|
+
: `Cron job "${arg}" not found.`);
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
await connector.replyMessage(target, "Usage: /cron [list|run|enable|disable] <job-id-or-name>");
|
|
280
|
+
return true;
|
|
206
281
|
}
|
|
207
282
|
}
|
|
208
283
|
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/sessions/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/sessions/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,18 @@ export declare class SessionQueue {
|
|
|
2
2
|
private queues;
|
|
3
3
|
/** Track which sessions are currently running */
|
|
4
4
|
private running;
|
|
5
|
+
/** Track how many tasks exist per session key, including the active one. */
|
|
6
|
+
private pending;
|
|
5
7
|
/**
|
|
6
8
|
* Check if a session is currently running.
|
|
7
9
|
*/
|
|
8
10
|
isRunning(sessionKey: string): boolean;
|
|
11
|
+
getPendingCount(sessionKey: string): number;
|
|
12
|
+
getTransportState(sessionKey: string, status?: "idle" | "running" | "error"): "idle" | "queued" | "running" | "error";
|
|
9
13
|
/**
|
|
10
14
|
* Enqueue a task for a session. Tasks are serialized per session key.
|
|
11
15
|
*/
|
|
12
16
|
enqueue(sessionKey: string, fn: () => Promise<void>): Promise<void>;
|
|
17
|
+
private decrementPending;
|
|
13
18
|
}
|
|
14
19
|
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/sessions/queue.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoC;IAClD,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAqB;
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/sessions/queue.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoC;IAClD,iDAAiD;IACjD,OAAO,CAAC,OAAO,CAAqB;IACpC,4EAA4E;IAC5E,OAAO,CAAC,OAAO,CAA6B;IAE5C;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAItC,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAK3C,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO;IAOrH;;OAEG;IACG,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCzE,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -2,16 +2,32 @@ export class SessionQueue {
|
|
|
2
2
|
queues = new Map();
|
|
3
3
|
/** Track which sessions are currently running */
|
|
4
4
|
running = new Set();
|
|
5
|
+
/** Track how many tasks exist per session key, including the active one. */
|
|
6
|
+
pending = new Map();
|
|
5
7
|
/**
|
|
6
8
|
* Check if a session is currently running.
|
|
7
9
|
*/
|
|
8
10
|
isRunning(sessionKey) {
|
|
9
11
|
return this.running.has(sessionKey);
|
|
10
12
|
}
|
|
13
|
+
getPendingCount(sessionKey) {
|
|
14
|
+
const total = this.pending.get(sessionKey) || 0;
|
|
15
|
+
return this.running.has(sessionKey) ? Math.max(0, total - 1) : total;
|
|
16
|
+
}
|
|
17
|
+
getTransportState(sessionKey, status) {
|
|
18
|
+
if (status === "error")
|
|
19
|
+
return "error";
|
|
20
|
+
if (this.running.has(sessionKey))
|
|
21
|
+
return "running";
|
|
22
|
+
if (this.getPendingCount(sessionKey) > 0)
|
|
23
|
+
return "queued";
|
|
24
|
+
return status === "running" ? "running" : "idle";
|
|
25
|
+
}
|
|
11
26
|
/**
|
|
12
27
|
* Enqueue a task for a session. Tasks are serialized per session key.
|
|
13
28
|
*/
|
|
14
29
|
async enqueue(sessionKey, fn) {
|
|
30
|
+
this.pending.set(sessionKey, (this.pending.get(sessionKey) || 0) + 1);
|
|
15
31
|
const prev = this.queues.get(sessionKey) || Promise.resolve();
|
|
16
32
|
const next = prev.then(async () => {
|
|
17
33
|
this.running.add(sessionKey);
|
|
@@ -20,6 +36,7 @@ export class SessionQueue {
|
|
|
20
36
|
}
|
|
21
37
|
finally {
|
|
22
38
|
this.running.delete(sessionKey);
|
|
39
|
+
this.decrementPending(sessionKey);
|
|
23
40
|
}
|
|
24
41
|
}, async () => {
|
|
25
42
|
this.running.add(sessionKey);
|
|
@@ -28,6 +45,7 @@ export class SessionQueue {
|
|
|
28
45
|
}
|
|
29
46
|
finally {
|
|
30
47
|
this.running.delete(sessionKey);
|
|
48
|
+
this.decrementPending(sessionKey);
|
|
31
49
|
}
|
|
32
50
|
});
|
|
33
51
|
this.queues.set(sessionKey, next);
|
|
@@ -38,5 +56,13 @@ export class SessionQueue {
|
|
|
38
56
|
});
|
|
39
57
|
return next;
|
|
40
58
|
}
|
|
59
|
+
decrementPending(sessionKey) {
|
|
60
|
+
const remaining = (this.pending.get(sessionKey) || 1) - 1;
|
|
61
|
+
if (remaining <= 0) {
|
|
62
|
+
this.pending.delete(sessionKey);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.pending.set(sessionKey, remaining);
|
|
66
|
+
}
|
|
41
67
|
}
|
|
42
68
|
//# sourceMappingURL=queue.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/sessions/queue.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,YAAY;IACf,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,iDAAiD;IACzC,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/sessions/queue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.test.d.ts","sourceRoot":"","sources":["../../../src/sessions/queue.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import test from "node:test";
|
|
2
|
+
import assert from "node:assert/strict";
|
|
3
|
+
import { SessionQueue } from "./queue.js";
|
|
4
|
+
test("SessionQueue tracks queued work behind the active task", async () => {
|
|
5
|
+
const queue = new SessionQueue();
|
|
6
|
+
let releaseFirst;
|
|
7
|
+
const first = queue.enqueue("slack:C123", async () => {
|
|
8
|
+
await new Promise((resolve) => {
|
|
9
|
+
releaseFirst = resolve;
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
while (!queue.isRunning("slack:C123")) {
|
|
13
|
+
await new Promise((resolve) => setTimeout(resolve, 5));
|
|
14
|
+
}
|
|
15
|
+
const second = queue.enqueue("slack:C123", async () => { });
|
|
16
|
+
assert.equal(queue.getPendingCount("slack:C123"), 1);
|
|
17
|
+
assert.equal(queue.getTransportState("slack:C123", "running"), "running");
|
|
18
|
+
releaseFirst?.();
|
|
19
|
+
await first;
|
|
20
|
+
await second;
|
|
21
|
+
assert.equal(queue.getPendingCount("slack:C123"), 0);
|
|
22
|
+
assert.equal(queue.getTransportState("slack:C123", "idle"), "idle");
|
|
23
|
+
});
|
|
24
|
+
test("SessionQueue preserves error transport state", () => {
|
|
25
|
+
const queue = new SessionQueue();
|
|
26
|
+
assert.equal(queue.getTransportState("slack:C123", "error"), "error");
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=queue.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.test.js","sourceRoot":"","sources":["../../../src/sessions/queue.test.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,IAAI,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;IACxE,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,IAAI,YAAsC,CAAC;IAE3C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,YAAY,GAAG,OAAO,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC;IAE1E,YAAY,EAAE,EAAE,CAAC;IACjB,MAAM,KAAK,CAAC;IACZ,MAAM,MAAM,CAAC;IAEb,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IACrD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,8CAA8C,EAAE,GAAG,EAAE;IACxD,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IACjC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
|
-
import type { Session } from '../shared/types.js';
|
|
2
|
+
import type { JsonObject, ReplyContext, Session } from '../shared/types.js';
|
|
3
3
|
export declare function initDb(): Database.Database;
|
|
4
|
+
export declare function migrateSessionsSchema(database: Database.Database): void;
|
|
4
5
|
export interface CreateSessionOpts {
|
|
5
6
|
engine: string;
|
|
6
7
|
source: string;
|
|
7
8
|
sourceRef: string;
|
|
9
|
+
connector?: string | null;
|
|
10
|
+
sessionKey?: string;
|
|
11
|
+
replyContext?: ReplyContext | null;
|
|
12
|
+
messageId?: string;
|
|
13
|
+
transportMeta?: JsonObject | null;
|
|
8
14
|
employee?: string;
|
|
9
15
|
model?: string;
|
|
10
16
|
title?: string;
|
|
@@ -16,9 +22,14 @@ export declare function createSession(opts: CreateSessionOpts & {
|
|
|
16
22
|
}): Session;
|
|
17
23
|
export declare function getSession(id: string): Session | undefined;
|
|
18
24
|
export declare function getSessionBySourceRef(sourceRef: string): Session | undefined;
|
|
25
|
+
export declare function getSessionBySessionKey(sessionKey: string): Session | undefined;
|
|
19
26
|
export interface UpdateSessionFields {
|
|
20
27
|
engineSessionId?: string;
|
|
21
28
|
status?: Session['status'];
|
|
29
|
+
model?: string | null;
|
|
30
|
+
replyContext?: ReplyContext | null;
|
|
31
|
+
messageId?: string | null;
|
|
32
|
+
transportMeta?: JsonObject | null;
|
|
22
33
|
lastActivity?: string;
|
|
23
34
|
lastError?: string | null;
|
|
24
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/sessions/registry.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/sessions/registry.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAGtC,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAgF5E,wBAAgB,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAY1C;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA2BvE;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAiBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAuDzG;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAI1D;AAED,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAE5E;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAI9E;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,GAAG,SAAS,CA2C3F;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,kBAAkB,GAAG,OAAO,EAAE,CAqBnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAO7C;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAIpF;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,EAAE,CAG/D"}
|