nterminal 1.3.4 → 1.3.6
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/README.md +68 -37
- package/assets/screenshot/accounts.png +0 -0
- package/assets/screenshot/history.png +0 -0
- package/assets/screenshot/mobile-panes.png +0 -0
- package/assets/screenshot/mobile.png +0 -0
- package/assets/screenshot/scr.png +0 -0
- package/assets/screenshot/subagents.png +0 -0
- package/bin/nterminal.js +10 -3
- package/dist/client/assets/MarkdownPreview-B-LrTjTM.js +1 -0
- package/dist/client/assets/{TranscriptMarkdownBody-H8ZsISc6.js → TranscriptMarkdownBody-3aYVmqQz.js} +1 -1
- package/dist/client/assets/index-D3LN5iAH.js +58 -0
- package/dist/client/assets/{index-DxfBq-4P.js → index-Dd_o8KCL.js} +1 -1
- package/dist/client/assets/index-W-zGfY1a.css +1 -0
- package/dist/client/index.html +2 -2
- package/dist/scripts/hooks.js +124 -0
- package/dist/scripts/hooks.js.map +1 -0
- package/dist/server/accounts/accountService.d.ts +23 -1
- package/dist/server/accounts/accountService.js +235 -103
- package/dist/server/accounts/accountService.js.map +1 -1
- package/dist/server/accounts/providerRequests.d.ts +12 -0
- package/dist/server/accounts/providerRequests.js +159 -0
- package/dist/server/accounts/providerRequests.js.map +1 -0
- package/dist/server/agent/agentRoutes.js +11 -0
- package/dist/server/agent/agentRoutes.js.map +1 -1
- package/dist/server/hooks/codexAppServer.d.ts +30 -0
- package/dist/server/hooks/codexAppServer.js +170 -0
- package/dist/server/hooks/codexAppServer.js.map +1 -0
- package/dist/server/hooks/codexTrust.d.ts +72 -0
- package/dist/server/hooks/codexTrust.js +116 -0
- package/dist/server/hooks/codexTrust.js.map +1 -0
- package/dist/server/hooks/helperJournal.d.ts +16 -0
- package/dist/server/hooks/helperJournal.js +74 -0
- package/dist/server/hooks/helperJournal.js.map +1 -0
- package/dist/server/hooks/hookBinding.d.ts +39 -0
- package/dist/server/hooks/hookBinding.js +91 -0
- package/dist/server/hooks/hookBinding.js.map +1 -0
- package/dist/server/hooks/hookFiles.d.ts +24 -0
- package/dist/server/hooks/hookFiles.js +160 -0
- package/dist/server/hooks/hookFiles.js.map +1 -0
- package/dist/server/hooks/hookInstallation.d.ts +108 -0
- package/dist/server/hooks/hookInstallation.js +1074 -0
- package/dist/server/hooks/hookInstallation.js.map +1 -0
- package/dist/server/hooks/hookProcess.d.ts +5 -0
- package/dist/server/hooks/hookProcess.js +85 -0
- package/dist/server/hooks/hookProcess.js.map +1 -0
- package/dist/server/hooks/hookReceiver.d.ts +66 -0
- package/dist/server/hooks/hookReceiver.js +549 -0
- package/dist/server/hooks/hookReceiver.js.map +1 -0
- package/dist/server/hooks/lifecycle.d.ts +40 -0
- package/dist/server/hooks/lifecycle.js +200 -0
- package/dist/server/hooks/lifecycle.js.map +1 -0
- package/dist/server/hooks/publicationLock.d.ts +3 -0
- package/dist/server/hooks/publicationLock.js +137 -0
- package/dist/server/hooks/publicationLock.js.map +1 -0
- package/dist/server/hooks/verifiedLock.d.ts +24 -0
- package/dist/server/hooks/verifiedLock.js +207 -0
- package/dist/server/hooks/verifiedLock.js.map +1 -0
- package/dist/server/http.d.ts +4 -0
- package/dist/server/http.js +6 -0
- package/dist/server/http.js.map +1 -1
- package/dist/server/index.js +71 -2
- package/dist/server/index.js.map +1 -1
- package/dist/server/notifications/agentCompletionMonitor.d.ts +16 -1
- package/dist/server/notifications/agentCompletionMonitor.js +261 -47
- package/dist/server/notifications/agentCompletionMonitor.js.map +1 -1
- package/dist/server/notifications/completionNotificationRouter.d.ts +2 -0
- package/dist/server/notifications/completionNotificationRouter.js +9 -0
- package/dist/server/notifications/completionNotificationRouter.js.map +1 -1
- package/dist/server/routes/accountRoutes.js +11 -0
- package/dist/server/routes/accountRoutes.js.map +1 -1
- package/dist/server/routes/activityRoutes.d.ts +13 -0
- package/dist/server/routes/activityRoutes.js +165 -0
- package/dist/server/routes/activityRoutes.js.map +1 -0
- package/dist/server/routes/agentManagementRoutes.js +8 -1
- package/dist/server/routes/agentManagementRoutes.js.map +1 -1
- package/dist/server/routes/hookRoutes.d.ts +16 -0
- package/dist/server/routes/hookRoutes.js +109 -0
- package/dist/server/routes/hookRoutes.js.map +1 -0
- package/dist/server/routes/terminalRoutes.js +4 -0
- package/dist/server/routes/terminalRoutes.js.map +1 -1
- package/dist/server/routes/transcriptQuery.d.ts +2 -1
- package/dist/server/routes/transcriptQuery.js +3 -1
- package/dist/server/routes/transcriptQuery.js.map +1 -1
- package/dist/server/terminal/PtyAdapter.d.ts +19 -0
- package/dist/server/terminal/PtyAdapter.js.map +1 -1
- package/dist/server/terminal/TerminalManager.d.ts +61 -0
- package/dist/server/terminal/TerminalManager.js +672 -12
- package/dist/server/terminal/TerminalManager.js.map +1 -1
- package/dist/server/terminal/TmuxPtyAdapter.d.ts +14 -2
- package/dist/server/terminal/TmuxPtyAdapter.js +101 -15
- package/dist/server/terminal/TmuxPtyAdapter.js.map +1 -1
- package/dist/server/terminal/activityChannel.d.ts +57 -0
- package/dist/server/terminal/activityChannel.js +166 -0
- package/dist/server/terminal/activityChannel.js.map +1 -0
- package/dist/server/terminal/agentTranscriptStatus.d.ts +12 -0
- package/dist/server/terminal/agentTranscriptStatus.js +78 -7
- package/dist/server/terminal/agentTranscriptStatus.js.map +1 -1
- package/dist/server/terminal/codexTranscriptSource.d.ts +3 -0
- package/dist/server/terminal/codexTranscriptSource.js +99 -39
- package/dist/server/terminal/codexTranscriptSource.js.map +1 -1
- package/dist/server/terminal/subagentSources.js +2 -1
- package/dist/server/terminal/subagentSources.js.map +1 -1
- package/dist/server/terminal/transcriptHeader.d.ts +85 -0
- package/dist/server/terminal/transcriptHeader.js +376 -0
- package/dist/server/terminal/transcriptHeader.js.map +1 -0
- package/dist/server/terminal/transcriptHistory.d.ts +16 -2
- package/dist/server/terminal/transcriptHistory.js +120 -21
- package/dist/server/terminal/transcriptHistory.js.map +1 -1
- package/dist/server/terminal/transcriptStore.d.ts +6 -0
- package/dist/server/terminal/transcriptStore.js +222 -26
- package/dist/server/terminal/transcriptStore.js.map +1 -1
- package/dist/shared/activityProbe.d.ts +10 -0
- package/dist/shared/activityProbe.js +24 -0
- package/dist/shared/activityProbe.js.map +1 -0
- package/dist/shared/protocol.d.ts +45 -0
- package/dist/shared/protocol.js.map +1 -1
- package/dist/shared/types.d.ts +9 -1
- package/docs/features.md +21 -1
- package/docs/provider-hooks.md +340 -0
- package/docs/terminal-history.md +10 -0
- package/package.json +2 -1
- package/scripts/nterminal-hook.cjs +171 -0
- package/scripts/nterminalctl +26 -2
- package/dist/client/assets/MarkdownPreview-DjDO4lEl.js +0 -1
- package/dist/client/assets/index-CIYazAGv.css +0 -1
- package/dist/client/assets/index-DwvLN_WJ.js +0 -56
package/dist/server/http.js
CHANGED
|
@@ -22,9 +22,11 @@ import { registerAgentCodeServerRoutes, registerCodeServerRoutes } from './route
|
|
|
22
22
|
import { registerAgentLinkRoutes } from './routes/agentLinkRoutes.js';
|
|
23
23
|
import { registerAccountRoutes } from './routes/accountRoutes.js';
|
|
24
24
|
import { registerFavoriteRoutes } from './routes/favoriteRoutes.js';
|
|
25
|
+
import { registerHookRoutes } from './routes/hookRoutes.js';
|
|
25
26
|
import { OutboundAgentRegistry } from './agent/outboundAgentRegistry.js';
|
|
26
27
|
import { AuthenticatedSocketRegistry } from './routes/authenticatedSocketRegistry.js';
|
|
27
28
|
import { AccountService } from './accounts/accountService.js';
|
|
29
|
+
import { registerActivityRoutes } from './routes/activityRoutes.js';
|
|
28
30
|
// Browser terminal input and code-server traffic can legitimately exceed the
|
|
29
31
|
// agent-link control protocol's tiny messages, so this remains a shared upper
|
|
30
32
|
// bound. Agent-link authentication runs before upgrade and control handlers
|
|
@@ -69,6 +71,7 @@ export async function buildApp(config, services) {
|
|
|
69
71
|
await registerSecurityRoutes(app, config, services);
|
|
70
72
|
await registerUpdateRoutes(app, config, services);
|
|
71
73
|
await registerAccountRoutes(app, config, { authService: services.authService, accountService });
|
|
74
|
+
await registerHookRoutes(app, config, services);
|
|
72
75
|
await registerFavoriteRoutes(app, config, services);
|
|
73
76
|
await registerTerminalRoutes(app, config, services);
|
|
74
77
|
await registerTerminalLayoutRoutes(app, config, services);
|
|
@@ -78,6 +81,9 @@ export async function buildApp(config, services) {
|
|
|
78
81
|
await registerPushNotificationRoutes(app, config, services);
|
|
79
82
|
await registerClientDiagnosticsRoutes(app, config, services);
|
|
80
83
|
await registerTerminalWebSocket(app, config, services, authenticatedSocketRegistry);
|
|
84
|
+
if (services.activityChannel) {
|
|
85
|
+
await registerActivityRoutes(app, config, { authService: services.authService, activityChannel: services.activityChannel }, authenticatedSocketRegistry);
|
|
86
|
+
}
|
|
81
87
|
await registerAgentLinkRoutes(app, config, { fileStore: services.fileStore, outboundAgentRegistry });
|
|
82
88
|
if (config.role === 'main' && services.codeServerManager) {
|
|
83
89
|
await registerCodeServerRoutes(app, config, {
|
package/dist/server/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,OAAoD,MAAM,SAAS,CAAC;AAC3E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAA0B,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAA0B,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAE,4BAA4B,EAAoC,MAAM,kCAAkC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAA8B,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAA2B,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,6BAA6B,EAAqC,MAAM,mCAAmC,CAAC;AACrH,OAAO,EAAE,+BAA+B,EAAuC,MAAM,qCAAqC,CAAC;AAC3H,OAAO,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,EAAE,8BAA8B,EAAsC,MAAM,oCAAoC,CAAC;AACxH,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAgC,MAAM,8BAA8B,CAAC;AACrI,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAA6B,MAAM,2BAA2B,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAA8B,MAAM,4BAA4B,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/server/http.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -17,6 +17,10 @@ import { OutboundAgentClient } from './agent/outboundAgentClient.js';
|
|
|
17
17
|
import { startEventLoopDelayMonitor } from './eventLoopDelayMonitor.js';
|
|
18
18
|
import { AccountService } from './accounts/accountService.js';
|
|
19
19
|
import { assertNodeRuntime } from '../shared/nodeVersion.js';
|
|
20
|
+
import path from 'node:path';
|
|
21
|
+
import { HookReceiver } from './hooks/hookReceiver.js';
|
|
22
|
+
import { HookInstallation } from './hooks/hookInstallation.js';
|
|
23
|
+
import { TerminalActivityChannel } from './terminal/activityChannel.js';
|
|
20
24
|
async function main() {
|
|
21
25
|
assertNodeRuntime();
|
|
22
26
|
const config = loadConfig(loadDotEnvFile());
|
|
@@ -39,7 +43,20 @@ async function main() {
|
|
|
39
43
|
? null
|
|
40
44
|
: TmuxPtyAdapter.detect(config.tmuxSocket ? { socket: config.tmuxSocket } : undefined);
|
|
41
45
|
const ptyAdapter = tmuxAdapter ?? new NodePtyAdapter();
|
|
46
|
+
const hookInstallation = new HookInstallation({ stateDir: path.dirname(config.statePath), previewMode: config.previewMode ?? false });
|
|
47
|
+
const hookConfigurationCache = new Map();
|
|
42
48
|
const terminalManager = new TerminalManager(config, ptyAdapter, {
|
|
49
|
+
isHookProviderEnabled: async (provider) => {
|
|
50
|
+
if ((hookConfigurationCache.get(provider) ?? 0) > Date.now())
|
|
51
|
+
return true;
|
|
52
|
+
const status = await hookInstallation.status(provider);
|
|
53
|
+
const enabled = status.installed && status.reason !== 'hooks_disabled';
|
|
54
|
+
if (enabled)
|
|
55
|
+
hookConfigurationCache.set(provider, Date.now() + 5_000);
|
|
56
|
+
else
|
|
57
|
+
hookConfigurationCache.delete(provider);
|
|
58
|
+
return enabled;
|
|
59
|
+
},
|
|
43
60
|
onCompletion: (event) => completionNotificationRouter.notifyCompletion({ agentId: null, ...event }),
|
|
44
61
|
onDiagnostic: (diagnostic) => {
|
|
45
62
|
const { error, ...details } = diagnostic;
|
|
@@ -54,12 +71,34 @@ async function main() {
|
|
|
54
71
|
}
|
|
55
72
|
});
|
|
56
73
|
await terminalManager.restoreSessions();
|
|
57
|
-
const
|
|
74
|
+
const activityChannel = new TerminalActivityChannel(terminalManager);
|
|
75
|
+
const hookDiagnosticTimes = new Map();
|
|
76
|
+
const hookReceiver = new HookReceiver({
|
|
77
|
+
stateDir: path.dirname(config.statePath),
|
|
78
|
+
onEvent: event => terminalManager.receiveLifecycle(event),
|
|
79
|
+
onDiagnostic: diagnostic => {
|
|
80
|
+
const now = Date.now();
|
|
81
|
+
if (now - (hookDiagnosticTimes.get(diagnostic.code) ?? 0) < 30_000)
|
|
82
|
+
return;
|
|
83
|
+
hookDiagnosticTimes.set(diagnostic.code, now);
|
|
84
|
+
backgroundErrorLogger?.warn({ code: diagnostic.code }, 'lifecycle hook delivery failed');
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
const accountService = new AccountService(config, terminalManager, {
|
|
88
|
+
onDiagnostic: (event) => {
|
|
89
|
+
if (event.state === 'success')
|
|
90
|
+
backgroundErrorLogger?.info(event, 'account token refreshed');
|
|
91
|
+
else
|
|
92
|
+
backgroundErrorLogger?.warn(event, 'account token refresh deferred or failed');
|
|
93
|
+
}
|
|
94
|
+
});
|
|
58
95
|
const codeServerManager = new CodeServerManager(config, terminalManager);
|
|
59
96
|
const outboundAgentRegistry = new OutboundAgentRegistry();
|
|
60
97
|
const agentCompletionMonitor = config.role === 'main'
|
|
61
98
|
? new AgentCompletionMonitor(store, completionNotificationRouter, {
|
|
62
|
-
resolveAgent: (agent) => outboundAgentRegistry.resolve(agent)
|
|
99
|
+
resolveAgent: (agent) => outboundAgentRegistry.resolve(agent),
|
|
100
|
+
onActivity: (agentId, terminals, initial) => activityChannel.publish(agentId, terminals, initial),
|
|
101
|
+
onRemoveAgent: agentId => activityChannel.removeAgent(agentId)
|
|
63
102
|
})
|
|
64
103
|
: null;
|
|
65
104
|
const app = await buildApp(config, {
|
|
@@ -70,6 +109,24 @@ async function main() {
|
|
|
70
109
|
codeServerManager,
|
|
71
110
|
pushNotificationService,
|
|
72
111
|
clientPresence,
|
|
112
|
+
activityChannel,
|
|
113
|
+
hookInstallation: {
|
|
114
|
+
status: provider => hookInstallation.status(provider),
|
|
115
|
+
install: async (provider) => {
|
|
116
|
+
const result = await hookInstallation.install(provider);
|
|
117
|
+
hookConfigurationCache.delete(provider);
|
|
118
|
+
return result;
|
|
119
|
+
},
|
|
120
|
+
remove: async (provider) => {
|
|
121
|
+
const result = await hookInstallation.remove(provider);
|
|
122
|
+
hookConfigurationCache.delete(provider);
|
|
123
|
+
if (!result.installed && !result.reason)
|
|
124
|
+
terminalManager.invalidateLifecycleHooks(provider);
|
|
125
|
+
return result;
|
|
126
|
+
},
|
|
127
|
+
trustCodexHooks: () => hookInstallation.trustCodexHooks(),
|
|
128
|
+
checkCodexTrust: () => hookInstallation.checkCodexTrust()
|
|
129
|
+
},
|
|
73
130
|
outboundAgentRegistry
|
|
74
131
|
});
|
|
75
132
|
backgroundErrorLogger = app.log;
|
|
@@ -95,6 +152,8 @@ async function main() {
|
|
|
95
152
|
outboundAgentRegistry.dispose();
|
|
96
153
|
codeServerManager.dispose();
|
|
97
154
|
accountService.dispose();
|
|
155
|
+
await hookReceiver.stop();
|
|
156
|
+
activityChannel.dispose();
|
|
98
157
|
await terminalManager.closeAll();
|
|
99
158
|
terminalManager.dispose();
|
|
100
159
|
await app.close();
|
|
@@ -107,6 +166,16 @@ async function main() {
|
|
|
107
166
|
// (uncaught lifecycle, beforeExit). Sync flush so it works during process tear-down.
|
|
108
167
|
process.on('beforeExit', () => store.flushSync());
|
|
109
168
|
await app.listen({ host: config.host, port: config.port });
|
|
169
|
+
try {
|
|
170
|
+
const refreshed = await hookInstallation.refreshManagedHelper();
|
|
171
|
+
if (refreshed.reason && !['not_installed', 'preview_mode'].includes(refreshed.reason)) {
|
|
172
|
+
app.log.warn({ code: refreshed.reason }, 'installed lifecycle helper could not be refreshed');
|
|
173
|
+
}
|
|
174
|
+
await hookReceiver.start();
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
app.log.warn({ code: 'hook_receiver_unavailable' }, 'lifecycle hooks unavailable; transcript detection remains active');
|
|
178
|
+
}
|
|
110
179
|
accountService.start();
|
|
111
180
|
outboundAgentClient?.start();
|
|
112
181
|
agentCompletionMonitor?.start();
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { TerminalSummary } from '../../shared/types.js';
|
|
1
2
|
import type { FileStore, StoredAgent } from '../storage/fileStore.js';
|
|
2
3
|
import type { ResolvedAgent } from '../agent/outboundAgentRegistry.js';
|
|
3
4
|
import type { CompletionNotificationRouter } from './completionNotificationRouter.js';
|
|
5
|
+
import WebSocket, { type ClientOptions } from 'ws';
|
|
4
6
|
export interface AgentCompletionMonitorOptions {
|
|
5
7
|
intervalMs?: number;
|
|
6
8
|
timeoutMs?: number;
|
|
@@ -8,6 +10,10 @@ export interface AgentCompletionMonitorOptions {
|
|
|
8
10
|
maxConcurrentAgents?: number;
|
|
9
11
|
now?: () => number;
|
|
10
12
|
resolveAgent?: (agent: StoredAgent) => ResolvedAgent | null;
|
|
13
|
+
onActivity?: (agentId: string, terminals: TerminalSummary[], initial: boolean) => void;
|
|
14
|
+
/** Forget hub metadata on configuration removal, without publishing exits. */
|
|
15
|
+
onRemoveAgent?: (agentId: string) => void;
|
|
16
|
+
createWebSocket?: (url: string, options: ClientOptions) => WebSocket;
|
|
11
17
|
}
|
|
12
18
|
export declare class AgentCompletionMonitor {
|
|
13
19
|
private readonly store;
|
|
@@ -18,13 +24,22 @@ export declare class AgentCompletionMonitor {
|
|
|
18
24
|
private readonly maxConcurrentAgents;
|
|
19
25
|
private readonly now;
|
|
20
26
|
private readonly resolveAgent;
|
|
27
|
+
private readonly onActivity;
|
|
28
|
+
private readonly onRemoveAgent;
|
|
29
|
+
private readonly createWebSocket;
|
|
21
30
|
private readonly states;
|
|
22
31
|
private timer;
|
|
23
32
|
private inflight;
|
|
33
|
+
private disposed;
|
|
34
|
+
private notifications;
|
|
24
35
|
constructor(store: FileStore, router: CompletionNotificationRouter, options?: AgentCompletionMonitorOptions);
|
|
25
36
|
start(): void;
|
|
26
37
|
dispose(): void;
|
|
27
38
|
pollOnce(): Promise<void>;
|
|
28
|
-
private
|
|
39
|
+
private visitAgent;
|
|
40
|
+
private connectAgent;
|
|
41
|
+
private applyActivity;
|
|
42
|
+
private failed;
|
|
43
|
+
private disconnect;
|
|
29
44
|
private stateFor;
|
|
30
45
|
}
|