@junctionpanel/server 0.1.37 → 0.1.39
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/server/client/daemon-client.d.ts +13 -14
- package/dist/server/client/daemon-client.d.ts.map +1 -1
- package/dist/server/client/daemon-client.js +19 -27
- package/dist/server/client/daemon-client.js.map +1 -1
- package/dist/server/server/daemon-log-tail.d.ts +23 -0
- package/dist/server/server/daemon-log-tail.d.ts.map +1 -0
- package/dist/server/server/daemon-log-tail.js +52 -0
- package/dist/server/server/daemon-log-tail.js.map +1 -0
- package/dist/server/server/session.d.ts +8 -10
- package/dist/server/server/session.d.ts.map +1 -1
- package/dist/server/server/session.js +38 -10
- package/dist/server/server/session.js.map +1 -1
- package/dist/server/server/websocket-server.d.ts +0 -4
- package/dist/server/server/websocket-server.d.ts.map +1 -1
- package/dist/server/server/websocket-server.js +2 -51
- package/dist/server/server/websocket-server.js.map +1 -1
- package/dist/server/shared/messages.d.ts +284 -0
- package/dist/server/shared/messages.d.ts.map +1 -1
- package/dist/server/shared/messages.js +18 -0
- package/dist/server/shared/messages.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { open } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const DEFAULT_DAEMON_LOG_LINES = 200;
|
|
4
|
+
const MAX_DAEMON_LOG_READ_BYTES = 128 * 1024;
|
|
5
|
+
/**
|
|
6
|
+
* Reads the tail of `daemon.log` under the given Junction home directory.
|
|
7
|
+
*
|
|
8
|
+
* The daemon clamps `lines` to a minimum of 1 and a maximum of 200, and will
|
|
9
|
+
* only read a bounded slice from the end of the file to keep websocket payloads
|
|
10
|
+
* predictable.
|
|
11
|
+
*/
|
|
12
|
+
export async function readDaemonLogTail(input) {
|
|
13
|
+
const lines = Math.max(1, Math.min(input.lines ?? DEFAULT_DAEMON_LOG_LINES, DEFAULT_DAEMON_LOG_LINES));
|
|
14
|
+
const logPath = path.join(input.junctionHome, "daemon.log");
|
|
15
|
+
const handle = await open(logPath, "r");
|
|
16
|
+
try {
|
|
17
|
+
const stats = await handle.stat();
|
|
18
|
+
const bytesToRead = Math.min(stats.size, MAX_DAEMON_LOG_READ_BYTES);
|
|
19
|
+
const start = Math.max(0, stats.size - bytesToRead);
|
|
20
|
+
const buffer = Buffer.alloc(bytesToRead);
|
|
21
|
+
let raw = "";
|
|
22
|
+
if (bytesToRead > 0) {
|
|
23
|
+
const { bytesRead } = await handle.read(buffer, 0, bytesToRead, start);
|
|
24
|
+
raw = buffer.subarray(0, bytesRead).toString("utf8");
|
|
25
|
+
}
|
|
26
|
+
let truncated = start > 0;
|
|
27
|
+
if (start > 0) {
|
|
28
|
+
const firstNewline = raw.indexOf("\n");
|
|
29
|
+
if (firstNewline >= 0) {
|
|
30
|
+
raw = raw.slice(firstNewline + 1);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
raw = "";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const allLines = raw.length === 0 ? [] : (raw.endsWith("\n") ? raw.slice(0, -1) : raw).split("\n");
|
|
37
|
+
const selectedLines = allLines.slice(-lines);
|
|
38
|
+
if (selectedLines.length < allLines.length) {
|
|
39
|
+
truncated = true;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
logPath,
|
|
43
|
+
content: selectedLines.join("\n"),
|
|
44
|
+
truncated,
|
|
45
|
+
lineCount: selectedLines.length,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
await handle.close();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=daemon-log-tail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon-log-tail.js","sourceRoot":"","sources":["../../../src/server/daemon-log-tail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,wBAAwB,GAAG,GAAG,CAAA;AACpC,MAAM,yBAAyB,GAAG,GAAG,GAAG,IAAI,CAAA;AAc5C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAGvC;IACC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,CAAC,EACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,wBAAwB,EAAE,wBAAwB,CAAC,CAC5E,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAEvC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC,CAAA;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;QACxC,IAAI,GAAG,GAAG,EAAE,CAAA;QAEZ,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,CAAA;YACtE,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtD,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,GAAG,CAAC,CAAA;QAEzB,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YACtC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACtB,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAA;YACnC,CAAC;iBAAM,CAAC;gBACN,GAAG,GAAG,EAAE,CAAA;YACV,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GACZ,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACnF,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,aAAa,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3C,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC;QAED,OAAO;YACL,OAAO;YACP,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YACjC,SAAS;YACT,SAAS,EAAE,aAAa,CAAC,MAAM;SAChC,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAA;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -8,20 +8,12 @@ import { AgentManager } from './agent/agent-manager.js';
|
|
|
8
8
|
import { AgentStorage } from './agent/agent-storage.js';
|
|
9
9
|
import { DownloadTokenStore } from './file-download/token-store.js';
|
|
10
10
|
import type pino from 'pino';
|
|
11
|
-
export type ClientActivitySnapshot = {
|
|
12
|
-
deviceType: 'web' | 'mobile';
|
|
13
|
-
focusedAgentId: string | null;
|
|
14
|
-
lastActivityAt: Date;
|
|
15
|
-
appVisible: boolean;
|
|
16
|
-
appVisibilityChangedAt: Date;
|
|
17
|
-
};
|
|
18
11
|
export type SessionOptions = {
|
|
19
12
|
clientId: string;
|
|
20
13
|
userId?: string;
|
|
21
14
|
onMessage: (msg: SessionOutboundMessage) => void;
|
|
22
15
|
onBinaryMessage?: (frame: BinaryMuxFrame) => void;
|
|
23
16
|
onLifecycleIntent?: (intent: SessionLifecycleIntent) => void;
|
|
24
|
-
onClientActivityChange?: (activity: ClientActivitySnapshot | null) => void;
|
|
25
17
|
logger: pino.Logger;
|
|
26
18
|
downloadTokenStore: DownloadTokenStore;
|
|
27
19
|
junctionHome: string;
|
|
@@ -53,7 +45,6 @@ export declare class Session {
|
|
|
53
45
|
private readonly onMessage;
|
|
54
46
|
private readonly onBinaryMessage;
|
|
55
47
|
private readonly onLifecycleIntent;
|
|
56
|
-
private readonly onClientActivityChange;
|
|
57
48
|
private readonly sessionLogger;
|
|
58
49
|
private readonly junctionHome;
|
|
59
50
|
private abortController;
|
|
@@ -83,7 +74,13 @@ export declare class Session {
|
|
|
83
74
|
/**
|
|
84
75
|
* Get the client's current activity state
|
|
85
76
|
*/
|
|
86
|
-
getClientActivity():
|
|
77
|
+
getClientActivity(): {
|
|
78
|
+
deviceType: 'web' | 'mobile';
|
|
79
|
+
focusedAgentId: string | null;
|
|
80
|
+
lastActivityAt: Date;
|
|
81
|
+
appVisible: boolean;
|
|
82
|
+
appVisibilityChangedAt: Date;
|
|
83
|
+
} | null;
|
|
87
84
|
/**
|
|
88
85
|
* Send initial state to client after connection
|
|
89
86
|
*/
|
|
@@ -159,6 +156,7 @@ export declare class Session {
|
|
|
159
156
|
private toDaemonMetadata;
|
|
160
157
|
private handleRunDaemonDoctorRequest;
|
|
161
158
|
private handleGetDaemonProviderSettingsRequest;
|
|
159
|
+
private handleGetDaemonLogTailRequest;
|
|
162
160
|
private handleUpdateDaemonProviderSettingsRequest;
|
|
163
161
|
private handleAutoRouteProviderRequest;
|
|
164
162
|
private handleUpdateNotificationRelayConfigRequest;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/server/session.ts"],"names":[],"mappings":"AAQA,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAwB5B,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,eAAe,EAAyB,MAAM,iCAAiC,CAAA;AAE7F,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,yBAAyB,CAAA;AAQhC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAA;AAE9E,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,CAAA;AAE/D,OAAO,EAEL,KAAK,+BAA+B,EACrC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAwCvD,OAAO,EAAE,YAAY,EAA0B,MAAM,0BAA0B,CAAA;AAQ/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AA6CnE,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/server/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,7 @@ import { resolveClientMessageId } from './client-message-id.js';
|
|
|
32
32
|
import { deriveProjectGroupingKey, deriveProjectGroupingName } from '../shared/project-grouping.js';
|
|
33
33
|
import { DEFAULT_DAEMON_PACKAGE_NAME, resolveDaemonPackageVersion, } from './daemon-package-context.js';
|
|
34
34
|
import { runDaemonDoctor } from './daemon-doctor.js';
|
|
35
|
+
import { readDaemonLogTail } from './daemon-log-tail.js';
|
|
35
36
|
import { MANAGED_DAEMON_PROVIDERS, autoRouteProviderExecutable, loadDaemonProviderSettings, saveDaemonProviderExecutablePath, } from './daemon-provider-settings.js';
|
|
36
37
|
import { applyNotificationRelayOwnerLabel, preserveNotificationRelayOwnerLabel, } from './notifications/relay-ownership.js';
|
|
37
38
|
import { saveNotificationRelayConfig } from './notifications/relay-store.js';
|
|
@@ -124,14 +125,13 @@ export class Session {
|
|
|
124
125
|
this.nextTerminalStreamId = 1;
|
|
125
126
|
this.checkoutDiffSubscriptions = new Map();
|
|
126
127
|
this.checkoutDiffTargets = new Map();
|
|
127
|
-
const { clientId, userId, onMessage, onBinaryMessage, onLifecycleIntent,
|
|
128
|
+
const { clientId, userId, onMessage, onBinaryMessage, onLifecycleIntent, logger, downloadTokenStore, junctionHome, agentManager, agentStorage, createAgentMcpTransport, terminalManager, agentProviderRuntimeSettings, } = options;
|
|
128
129
|
this.clientId = clientId;
|
|
129
130
|
this.userId = userId;
|
|
130
131
|
this.sessionId = uuidv4();
|
|
131
132
|
this.onMessage = onMessage;
|
|
132
133
|
this.onBinaryMessage = onBinaryMessage ?? null;
|
|
133
134
|
this.onLifecycleIntent = onLifecycleIntent ?? null;
|
|
134
|
-
this.onClientActivityChange = onClientActivityChange ?? null;
|
|
135
135
|
this.downloadTokenStore = downloadTokenStore;
|
|
136
136
|
this.junctionHome = junctionHome;
|
|
137
137
|
this.agentManager = agentManager;
|
|
@@ -942,6 +942,9 @@ export class Session {
|
|
|
942
942
|
case 'get_daemon_provider_settings_request':
|
|
943
943
|
await this.handleGetDaemonProviderSettingsRequest(msg);
|
|
944
944
|
break;
|
|
945
|
+
case 'get_daemon_log_tail_request':
|
|
946
|
+
await this.handleGetDaemonLogTailRequest(msg);
|
|
947
|
+
break;
|
|
945
948
|
case 'update_daemon_provider_settings_request':
|
|
946
949
|
await this.handleUpdateDaemonProviderSettingsRequest(msg);
|
|
947
950
|
break;
|
|
@@ -1929,6 +1932,39 @@ export class Session {
|
|
|
1929
1932
|
});
|
|
1930
1933
|
}
|
|
1931
1934
|
}
|
|
1935
|
+
async handleGetDaemonLogTailRequest(msg) {
|
|
1936
|
+
try {
|
|
1937
|
+
const result = await readDaemonLogTail({
|
|
1938
|
+
junctionHome: this.junctionHome,
|
|
1939
|
+
lines: msg.lines,
|
|
1940
|
+
});
|
|
1941
|
+
this.emit({
|
|
1942
|
+
type: 'get_daemon_log_tail_response',
|
|
1943
|
+
payload: {
|
|
1944
|
+
logPath: result.logPath,
|
|
1945
|
+
content: result.content,
|
|
1946
|
+
truncated: result.truncated,
|
|
1947
|
+
lineCount: result.lineCount,
|
|
1948
|
+
error: null,
|
|
1949
|
+
requestId: msg.requestId,
|
|
1950
|
+
},
|
|
1951
|
+
});
|
|
1952
|
+
}
|
|
1953
|
+
catch (error) {
|
|
1954
|
+
this.sessionLogger.error({ err: error }, 'Failed to read daemon log tail');
|
|
1955
|
+
this.emit({
|
|
1956
|
+
type: 'get_daemon_log_tail_response',
|
|
1957
|
+
payload: {
|
|
1958
|
+
logPath: null,
|
|
1959
|
+
content: '',
|
|
1960
|
+
truncated: false,
|
|
1961
|
+
lineCount: 0,
|
|
1962
|
+
error: error instanceof Error ? error.message : String(error),
|
|
1963
|
+
requestId: msg.requestId,
|
|
1964
|
+
},
|
|
1965
|
+
});
|
|
1966
|
+
}
|
|
1967
|
+
}
|
|
1932
1968
|
async handleUpdateDaemonProviderSettingsRequest(msg) {
|
|
1933
1969
|
try {
|
|
1934
1970
|
const snapshot = saveDaemonProviderExecutablePath({
|
|
@@ -2396,14 +2432,6 @@ export class Session {
|
|
|
2396
2432
|
appVisible: msg.appVisible,
|
|
2397
2433
|
appVisibilityChangedAt,
|
|
2398
2434
|
};
|
|
2399
|
-
if (this.onClientActivityChange) {
|
|
2400
|
-
try {
|
|
2401
|
-
this.onClientActivityChange(this.clientActivity);
|
|
2402
|
-
}
|
|
2403
|
-
catch (error) {
|
|
2404
|
-
this.sessionLogger.warn({ err: error }, 'onClientActivityChange callback failed');
|
|
2405
|
-
}
|
|
2406
|
-
}
|
|
2407
2435
|
}
|
|
2408
2436
|
/**
|
|
2409
2437
|
* Handle list commands request for an agent
|