koneck 2.21.1 → 2.23.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.
@@ -0,0 +1,280 @@
1
+ import fs from 'fs';
2
+ import fsp from 'fs/promises';
3
+ import net from 'net';
4
+ import os from 'os';
5
+ import path from 'path';
6
+ import crypto from 'crypto';
7
+ const ROOT = path.join(os.homedir(), '.koneck', 'sessions');
8
+ const REGISTRY = path.join(ROOT, 'registry.json');
9
+ const HEARTBEAT_STALE_MS = 90_000;
10
+ function ensureRoot() {
11
+ fs.mkdirSync(ROOT, { recursive: true, mode: 0o700 });
12
+ }
13
+ /** Repository name if the cwd is inside one, else the directory's own name. */
14
+ export function repoNameFor(cwd) {
15
+ let dir = path.resolve(cwd);
16
+ const root = path.parse(dir).root;
17
+ while (true) {
18
+ if (fs.existsSync(path.join(dir, '.git')))
19
+ return path.basename(dir);
20
+ if (dir === root)
21
+ break;
22
+ dir = path.dirname(dir);
23
+ }
24
+ return path.basename(path.resolve(cwd));
25
+ }
26
+ /** A process that no longer exists, or has stopped beating, is not a session. */
27
+ export function isAlive(record) {
28
+ try {
29
+ process.kill(record.pid, 0); // signal 0 tests existence without touching the process
30
+ }
31
+ catch {
32
+ return false;
33
+ }
34
+ return Date.now() - Date.parse(record.heartbeat) < HEARTBEAT_STALE_MS;
35
+ }
36
+ function readRegistry() {
37
+ try {
38
+ const raw = fs.readFileSync(REGISTRY, 'utf-8');
39
+ const parsed = JSON.parse(raw);
40
+ return parsed && typeof parsed === 'object' ? parsed : {};
41
+ }
42
+ catch {
43
+ return {}; // absent or malformed: start clean rather than fail a session's startup
44
+ }
45
+ }
46
+ function writeRegistry(all) {
47
+ ensureRoot();
48
+ // Written via a temp file and renamed so a reader never sees a half-written registry.
49
+ const tmp = REGISTRY + `.${process.pid}.tmp`;
50
+ fs.writeFileSync(tmp, JSON.stringify(all, null, 2) + '\n', { mode: 0o600 });
51
+ fs.renameSync(tmp, REGISTRY);
52
+ }
53
+ /** Every live session, with dead ones pruned from the registry as a side effect. */
54
+ export function listSessions() {
55
+ const all = readRegistry();
56
+ const live = {};
57
+ let pruned = false;
58
+ for (const [id, rec] of Object.entries(all)) {
59
+ if (isAlive(rec))
60
+ live[id] = rec;
61
+ else {
62
+ pruned = true;
63
+ fs.rmSync(rec.socketPath, { force: true });
64
+ }
65
+ }
66
+ if (pruned) {
67
+ try {
68
+ writeRegistry(live);
69
+ }
70
+ catch { /* best effort */ }
71
+ }
72
+ return Object.values(live).sort((a, b) => a.startedAt.localeCompare(b.startedAt));
73
+ }
74
+ /**
75
+ * Finds the session a target refers to. Accepted, in order of specificity: `#id`, an exact id, an
76
+ * exact repo or directory name, then a unique prefix match. Ambiguity is reported rather than
77
+ * guessed — sending work to the wrong repository is worse than being asked to be specific.
78
+ */
79
+ export function resolveTarget(target, selfId) {
80
+ const others = listSessions().filter(s => s.id !== selfId);
81
+ if (others.length === 0)
82
+ return { ok: false, error: 'no other KONECK sessions are running' };
83
+ const q = target.replace(/^#/, '').toLowerCase();
84
+ const exact = others.filter(s => s.id.toLowerCase() === q ||
85
+ s.repoName.toLowerCase() === q ||
86
+ path.basename(s.cwd).toLowerCase() === q);
87
+ if (exact.length === 1)
88
+ return { ok: true, session: exact[0] };
89
+ if (exact.length > 1) {
90
+ return { ok: false, error: `"${target}" matches ${exact.length} sessions — use an id: ${exact.map(s => '#' + s.id).join(', ')}` };
91
+ }
92
+ const partial = others.filter(s => s.id.toLowerCase().startsWith(q) ||
93
+ s.repoName.toLowerCase().includes(q) ||
94
+ s.cwd.toLowerCase().includes(q));
95
+ if (partial.length === 1)
96
+ return { ok: true, session: partial[0] };
97
+ if (partial.length > 1) {
98
+ return { ok: false, error: `"${target}" is ambiguous: ${partial.map(s => s.repoName + ' #' + s.id).join(', ')}` };
99
+ }
100
+ return {
101
+ ok: false,
102
+ error: `no session matches "${target}". Running: ${others.map(s => s.repoName).join(', ')}`,
103
+ };
104
+ }
105
+ /**
106
+ * Registers this session and starts listening. Failure is non-fatal: messaging is a convenience,
107
+ * and a session that cannot open a socket should still be a working agent.
108
+ */
109
+ export function startBus(opts, handlers) {
110
+ try {
111
+ ensureRoot();
112
+ const socketPath = path.join(ROOT, `${opts.id}.sock`);
113
+ fs.rmSync(socketPath, { force: true }); // a leftover from a crash would block bind
114
+ const record = {
115
+ id: opts.id,
116
+ pid: process.pid,
117
+ cwd: path.resolve(opts.cwd),
118
+ repoName: repoNameFor(opts.cwd),
119
+ socketPath,
120
+ authToken: crypto.randomBytes(24).toString('hex'),
121
+ startedAt: new Date().toISOString(),
122
+ heartbeat: new Date().toISOString(),
123
+ status: 'idle',
124
+ model: opts.model,
125
+ provider: opts.provider,
126
+ };
127
+ const server = net.createServer(socket => {
128
+ let buf = '';
129
+ socket.on('data', chunk => {
130
+ buf += chunk.toString('utf-8');
131
+ const nl = buf.indexOf('\n');
132
+ if (nl === -1)
133
+ return; // one JSON message per line
134
+ const line = buf.slice(0, nl);
135
+ buf = buf.slice(nl + 1);
136
+ let msg;
137
+ try {
138
+ msg = JSON.parse(line);
139
+ }
140
+ catch {
141
+ socket.end(JSON.stringify({ ok: false, error: 'malformed message' }) + '\n');
142
+ return;
143
+ }
144
+ // The token is what stops an unrelated local process from driving an agent that can
145
+ // write files and run commands. Compared in constant time out of habit, not paranoia.
146
+ const expected = Buffer.from(record.authToken);
147
+ const given = Buffer.from(String(msg.token ?? ''));
148
+ const authed = given.length === expected.length && crypto.timingSafeEqual(given, expected);
149
+ if (!authed) {
150
+ socket.end(JSON.stringify({ ok: false, error: 'unauthorized' }) + '\n');
151
+ return;
152
+ }
153
+ if (msg.kind === 'ping') {
154
+ socket.end(JSON.stringify({ ok: true }) + '\n');
155
+ return;
156
+ }
157
+ if (msg.kind === 'send') {
158
+ handlers.onSend(msg.from, msg.payload);
159
+ socket.end(JSON.stringify({ ok: true }) + '\n'); // queued, not completed
160
+ return;
161
+ }
162
+ if (msg.kind === 'ask') {
163
+ handlers.onAsk(msg.from, msg.question)
164
+ .then(answer => socket.end(JSON.stringify({ ok: true, answer }) + '\n'))
165
+ .catch((e) => socket.end(JSON.stringify({
166
+ ok: false, error: e instanceof Error ? e.message : String(e),
167
+ }) + '\n'));
168
+ return;
169
+ }
170
+ socket.end(JSON.stringify({ ok: false, error: 'unknown message kind' }) + '\n');
171
+ });
172
+ socket.on('error', () => { });
173
+ });
174
+ server.listen(socketPath, () => { try {
175
+ fs.chmodSync(socketPath, 0o600);
176
+ }
177
+ catch { /* ignore */ } });
178
+ server.on('error', () => { });
179
+ const all = readRegistry();
180
+ all[record.id] = record;
181
+ writeRegistry(all);
182
+ const beat = setInterval(() => {
183
+ record.heartbeat = new Date().toISOString();
184
+ try {
185
+ const reg = readRegistry();
186
+ reg[record.id] = record;
187
+ writeRegistry(reg);
188
+ }
189
+ catch { /* a missed beat is recoverable; a crash here is not */ }
190
+ }, 20_000);
191
+ beat.unref();
192
+ const close = () => {
193
+ clearInterval(beat);
194
+ try {
195
+ server.close();
196
+ }
197
+ catch { /* ignore */ }
198
+ fs.rmSync(socketPath, { force: true });
199
+ try {
200
+ const reg = readRegistry();
201
+ delete reg[record.id];
202
+ writeRegistry(reg);
203
+ }
204
+ catch { /* ignore */ }
205
+ };
206
+ process.once('exit', close);
207
+ return {
208
+ record,
209
+ setStatus(status) {
210
+ record.status = status;
211
+ try {
212
+ const reg = readRegistry();
213
+ if (reg[record.id]) {
214
+ reg[record.id] = record;
215
+ writeRegistry(reg);
216
+ }
217
+ }
218
+ catch { /* status is advisory */ }
219
+ },
220
+ close,
221
+ };
222
+ }
223
+ catch {
224
+ return null;
225
+ }
226
+ }
227
+ /** Sends one message to a session and waits for its reply. */
228
+ export function deliver(to, message, timeoutMs = 120_000) {
229
+ return new Promise(resolve => {
230
+ let settled = false;
231
+ const done = (r) => { if (!settled) {
232
+ settled = true;
233
+ resolve(r);
234
+ } };
235
+ const socket = net.createConnection(to.socketPath);
236
+ const timer = setTimeout(() => {
237
+ socket.destroy();
238
+ done({ ok: false, error: `${to.repoName} did not reply within ${Math.round(timeoutMs / 1000)}s` });
239
+ }, timeoutMs);
240
+ timer.unref();
241
+ let buf = '';
242
+ socket.on('connect', () => socket.write(JSON.stringify(message) + '\n'));
243
+ socket.on('data', chunk => {
244
+ buf += chunk.toString('utf-8');
245
+ const nl = buf.indexOf('\n');
246
+ if (nl === -1)
247
+ return;
248
+ clearTimeout(timer);
249
+ try {
250
+ done(JSON.parse(buf.slice(0, nl)));
251
+ }
252
+ catch {
253
+ done({ ok: false, error: 'unreadable reply' });
254
+ }
255
+ socket.end();
256
+ });
257
+ socket.on('error', (e) => {
258
+ clearTimeout(timer);
259
+ // A dead socket file means the session went away between listing and sending.
260
+ done({ ok: false, error: `cannot reach ${to.repoName}: ${e.message}` });
261
+ });
262
+ socket.on('close', () => { clearTimeout(timer); done({ ok: false, error: 'connection closed with no reply' }); });
263
+ });
264
+ }
265
+ /** Removes sockets and registry entries for sessions that are no longer running. */
266
+ export async function pruneDead() {
267
+ const before = Object.keys(readRegistry()).length;
268
+ const after = listSessions().length;
269
+ try {
270
+ const files = await fsp.readdir(ROOT);
271
+ const live = new Set(listSessions().map(s => path.basename(s.socketPath)));
272
+ for (const f of files) {
273
+ if (f.endsWith('.sock') && !live.has(f))
274
+ await fsp.rm(path.join(ROOT, f), { force: true });
275
+ }
276
+ }
277
+ catch { /* nothing to prune */ }
278
+ return before - after;
279
+ }
280
+ //# sourceMappingURL=session-bus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-bus.js","sourceRoot":"","sources":["../src/session-bus.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koneck",
3
- "version": "2.21.1",
3
+ "version": "2.23.0",
4
4
  "description": "Kinetically Orchestrated Neural Execution Engine for Code",
5
5
  "type": "module",
6
6
  "bin": {