@studiomopoke/crosschat 1.6.0 → 1.7.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/bin/cli.cjs +1 -0
- package/crosschat.md +5 -2
- package/dashboard/dist/assets/{index-DzcjxzDR.js → index-B-AjVdDr.js} +9 -9
- package/dashboard/dist/assets/index-FgcgW2qC.css +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/hub/agent-connection.d.ts +7 -0
- package/dist/hub/agent-connection.d.ts.map +1 -1
- package/dist/hub/agent-connection.js +29 -0
- package/dist/hub/agent-connection.js.map +1 -1
- package/dist/hub/hub-server.d.ts.map +1 -1
- package/dist/hub/hub-server.js +152 -55
- package/dist/hub/hub-server.js.map +1 -1
- package/dist/hub/protocol.d.ts +14 -2
- package/dist/hub/protocol.d.ts.map +1 -1
- package/dist/hub/protocol.js.map +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +10 -0
- package/dist/lifecycle.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/request-digest.d.ts +4 -0
- package/dist/tools/request-digest.d.ts.map +1 -0
- package/dist/tools/request-digest.js +37 -0
- package/dist/tools/request-digest.js.map +1 -0
- package/package.json +1 -1
- package/dashboard/dist/assets/index-Blgmbgo_.css +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--bg: #0f0f13;--bg-secondary: #1a1a24;--bg-tertiary: #22222e;--text: #c4c4d4;--text-muted: #7a7a8e;--text-bright: #ededf5;--accent: #6c5ce7;--accent-hover: #7d6ff0;--accent-light: rgba(108, 92, 231, .15);--border: #2a2a3a;--success: #2ed573;--danger: #ff4757;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono: "SF Mono", "Fira Code", monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.5}#root{height:100vh;display:flex}button{cursor:pointer;border:none;font-family:var(--sans);font-size:14px}input{font-family:var(--sans);font-size:14px;outline:none}.app{display:flex;width:100%;height:100vh;overflow:hidden}.username-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg);display:flex;align-items:center;justify-content:center}.username-modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:40px;text-align:center;max-width:400px;width:90%}.username-modal h2{color:var(--text-bright);font-size:24px;margin-bottom:8px}.username-modal p{color:var(--text-muted);margin-bottom:24px}.username-modal form{display:flex;gap:8px}.username-modal input{flex:1;padding:10px 14px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:8px;color:var(--text-bright)}.username-modal input:focus{border-color:var(--accent)}.username-modal button{padding:10px 20px;background:var(--accent);color:#fff;border-radius:8px;font-weight:600}.username-modal button:hover:not(:disabled){background:var(--accent-hover)}.username-modal button:disabled{opacity:.5;cursor:not-allowed}.error-banner{position:fixed;top:0;left:0;right:0;background:var(--danger);color:#fff;padding:8px 16px;text-align:center;font-size:14px;cursor:pointer;z-index:100}.sidebar{width:260px;min-width:260px;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;overflow-y:auto}.sidebar-header{padding:20px;border-bottom:1px solid var(--border)}.sidebar-header h1{font-size:18px;font-weight:600;color:var(--text-bright);letter-spacing:0;margin:0}.room-list{list-style:none;flex:1;overflow-y:auto;padding:8px}.room-item{padding:10px 12px;border-radius:6px;cursor:pointer;transition:background .15s;margin-bottom:2px}.room-item:hover{background:var(--bg-tertiary)}.room-item.active{background:var(--accent-light);color:var(--text-bright)}.room-item.empty{color:var(--text-muted);font-style:italic;cursor:default}.room-item.empty:hover{background:none}.room-name{font-size:14px;font-weight:500}.create-room-form{padding:12px;border-top:1px solid var(--border);display:flex;gap:6px}.create-room-form input{flex:1;padding:8px 10px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-bright);font-size:13px}.create-room-form input:focus{border-color:var(--accent)}.create-room-form button{padding:8px 14px;background:var(--accent);color:#fff;border-radius:6px;font-size:16px;font-weight:700;line-height:1}.create-room-form button:hover:not(:disabled){background:var(--accent-hover)}.create-room-form button:disabled{opacity:.4;cursor:not-allowed}.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid var(--border)}.hub-shutdown-btn{width:100%;padding:8px;font-size:12px;font-weight:500;color:var(--text-muted);background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s}.hub-shutdown-btn:hover{color:var(--danger, #ff4757);border-color:#ff475766;background:#ff475714}.peers-bar{padding:12px 16px;border-bottom:1px solid var(--border)}.peers-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px;font-weight:600}.peers-list{display:flex;flex-direction:column;gap:6px}.peer-item{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:6px;transition:background .15s}.peer-item:hover{background:var(--bg-tertiary)}.peer-icon{position:relative;width:32px;height:32px;min-width:32px;border-radius:50%;background:var(--bg-tertiary);border:2px solid var(--border);display:flex;align-items:center;justify-content:center;cursor:default;transition:border-color .15s}.peer-icon.available{border-color:var(--success, #22c55e)}.peer-icon.busy{border-color:var(--warning, #f59e0b)}.peer-icon-letter{font-size:13px;font-weight:700;color:var(--text-bright)}.peer-status-dot{position:absolute;bottom:-1px;right:-1px;width:9px;height:9px;border-radius:50%;border:2px solid var(--bg-secondary)}.peer-status-dot.available{background:var(--success, #22c55e)}.peer-status-dot.busy{background:var(--warning, #f59e0b)}.peer-info{display:flex;flex-direction:column;min-width:0}.peer-name{font-size:13px;font-weight:600;color:var(--text-bright);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.peer-room{font-size:11px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.peer-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px}.peer-badge{position:relative;display:inline-flex;align-items:center;gap:3px;padding:1px 6px;font-size:10px;font-weight:500;border-radius:4px;background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-muted);cursor:default;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.peer-badge-icon{font-size:9px;flex-shrink:0}.peer-badge-label{overflow:hidden;text-overflow:ellipsis}.peer-badge.available .peer-badge-icon{color:var(--success, #22c55e)}.peer-badge.busy .peer-badge-icon{color:var(--warning, #f59e0b)}.peer-badge.dir,.peer-badge.session .peer-badge-icon{color:var(--text-muted)}.peer-badge.task{background:#f59e0b1a;border-color:#f59e0b4d;color:var(--warning, #f59e0b)}.peer-badge-tooltip{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;padding:6px 10px;font-size:11px;font-weight:400;color:var(--text-bright);white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis;z-index:50;pointer-events:none;box-shadow:0 4px 12px #0000004d}.peer-badge-tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:var(--border)}.peer-badge:hover .peer-badge-tooltip{display:block}.message-badges{display:inline-flex;gap:3px;align-items:center;vertical-align:middle;margin-left:4px}.main-content{flex:1;display:flex;flex-direction:column;min-width:0;height:100vh;overflow:hidden}.tab-bar{display:flex;align-items:center;padding:0 24px;border-bottom:1px solid var(--border);background:var(--bg-secondary);min-height:46px}.tab-bar-left{display:flex;gap:0}.tab-item{padding:12px 20px;font-size:14px;font-weight:500;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.tab-item:hover{color:var(--text-bright)}.tab-item.active{color:var(--text-bright);border-bottom-color:var(--accent)}.chat-area{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.chat-area.empty-state{align-items:center;justify-content:center;color:var(--text-muted);font-size:16px}.chat-header{padding:16px 24px;border-bottom:1px solid var(--border)}.chat-header h2{font-size:16px;font-weight:600;color:var(--text-bright);margin:0}.messages{flex:1;overflow-y:auto;padding:16px 24px;display:flex;flex-direction:column;gap:4px}.message{max-width:70%;padding:8px 14px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px 12px 12px;align-self:flex-start}.message.own{background:var(--accent-light);border-color:var(--accent);border-top-left-radius:12px;border-top-right-radius:4px;align-self:flex-end}.message-header{display:flex;gap:8px;align-items:baseline;margin-bottom:2px}.message-author{font-size:13px;font-weight:600;color:var(--accent)}.own .message-author{color:var(--text-bright)}.message-time{font-size:11px;color:var(--text-muted)}.message-text{font-size:14px;color:var(--text-bright);word-break:break-word;white-space:pre-wrap}.reply-btn{font-size:11px;font-weight:500;color:var(--text-muted);background:none;border:none;cursor:pointer;padding:0 4px;transition:color .15s}.reply-btn:hover{color:var(--accent)}.reply-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 24px;background:var(--bg-secondary);border-top:1px solid var(--accent);font-size:13px;color:var(--text-muted)}.reply-bar-text strong{color:var(--accent)}.reply-bar-close{background:none;border:none;color:var(--text-muted);font-size:18px;cursor:pointer;padding:0 4px;line-height:1}.reply-bar-close:hover{color:var(--text-bright)}.mention{color:var(--accent);font-weight:600;background:#6366f11a;padding:1px 4px;border-radius:3px}.mention-here{color:#f59e0b;background:#f59e0b1a}.event-notice{text-align:center;color:var(--text-muted);font-size:12px;padding:4px 0;font-style:italic}.message-form{padding:16px 24px;border-top:1px solid var(--border);display:flex;gap:8px}.message-form input{flex:1;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;color:var(--text-bright);font-size:14px}.message-form input:focus{border-color:var(--accent)}.message-form button{padding:12px 24px;background:var(--accent);color:#fff;border-radius:8px;font-weight:600}.message-form button:hover:not(:disabled){background:var(--accent-hover)}.message-form button:disabled{opacity:.4;cursor:not-allowed}.tasks-panel{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.tasks-filters{display:flex;gap:4px;padding:12px 24px;border-bottom:1px solid var(--border);overflow-x:auto;flex-shrink:0}.tasks-filter-btn{padding:6px 12px;font-size:12px;font-weight:500;color:var(--text-muted);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s;white-space:nowrap}.tasks-filter-btn:hover{color:var(--text-bright);border-color:var(--text-muted)}.tasks-filter-btn.active{color:var(--text-bright);background:var(--accent-light);border-color:var(--accent)}.tasks-list{flex:1;overflow-y:auto;padding:16px 24px;display:flex;flex-direction:column;gap:8px}.tasks-empty{color:var(--text-muted);text-align:center;padding:40px 0;font-size:14px}.task-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;transition:border-color .15s}.task-card:hover{border-color:var(--text-muted)}.task-card.expanded{border-color:var(--accent)}.task-card-header{padding:14px 16px;cursor:pointer}.task-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.task-card-time{font-size:11px;color:var(--text-muted)}.task-card-description{font-size:14px;font-weight:500;color:var(--text-bright);margin-bottom:6px;line-height:1.4;word-break:break-word}.task-card-meta{display:flex;gap:12px;flex-wrap:wrap}.task-meta-item{font-size:12px;color:var(--text-muted)}.task-card-detail{padding:0 16px 14px;border-top:1px solid var(--border);margin-top:0}.task-section-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);font-weight:600;margin-top:12px;margin-bottom:6px}.task-context-text,.task-result-text{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word;background:var(--bg-tertiary);padding:10px 12px;border-radius:6px;border:1px solid var(--border)}.task-loading{color:var(--text-muted);font-size:13px;padding:12px 0}.task-notes{margin-top:4px}.task-note{padding:8px 12px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;margin-bottom:6px}.task-note-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.task-note-author{font-size:12px;font-weight:600;color:var(--accent)}.task-note-time{font-size:11px;color:var(--text-muted)}.task-note-content{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word}.status-badge{display:inline-block;padding:2px 8px;font-size:11px;font-weight:600;border-radius:4px;text-transform:uppercase;letter-spacing:.03em}.status-badge.open{background:#2ed57326;color:#2ed573}.status-badge.claimed{background:#f59e0b26;color:#f59e0b}.status-badge.in_progress{background:#3b82f626;color:#3b82f6}.status-badge.completed{background:#22c55e26;color:#22c55e}.status-badge.failed{background:#ff475726;color:#ff4757}.status-badge.archived{background:#7a7a8e26;color:var(--text-muted)}.filter-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.filter-badge{display:inline-block;padding:2px 6px;font-size:10px;font-weight:500;color:var(--text-muted);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.archive-btn{margin-top:12px;padding:8px 16px;font-size:13px;font-weight:500;color:var(--text-muted);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s}.archive-btn:hover:not(:disabled){color:var(--text-bright);border-color:var(--text-muted)}.archive-btn:disabled{opacity:.4;cursor:not-allowed}.instances-panel{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.instances-header{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;border-bottom:1px solid var(--border);flex-shrink:0}.instances-title{font-size:14px;font-weight:600;color:var(--text-bright)}.instances-add-btn{padding:6px 14px;font-size:12px;font-weight:600;color:var(--accent);background:#6366f11a;border:1px solid rgba(99,102,241,.3);border-radius:6px;cursor:pointer;transition:all .15s}.instances-add-btn:hover{background:#6366f133;border-color:var(--accent)}.instances-error{padding:8px 24px;font-size:13px;color:var(--danger, #ff4757);background:#ff475714;border-bottom:1px solid rgba(255,71,87,.2);cursor:pointer}.instance-form{display:flex;flex-direction:column;gap:8px;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.instance-form input{padding:10px 12px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;color:var(--text-bright);font-size:13px}.instance-form input:focus{border-color:var(--accent)}.instance-form button{align-self:flex-start;padding:8px 18px;background:var(--accent);color:#fff;border-radius:6px;font-size:13px;font-weight:600}.instance-form button:hover:not(:disabled){background:var(--accent-hover)}.instance-form button:disabled{opacity:.4;cursor:not-allowed}.instances-list{flex:1;overflow-y:auto;padding:16px 24px;display:flex;flex-direction:column;gap:8px}.instances-empty{color:var(--text-muted);text-align:center;padding:40px 0;font-size:14px}.instance-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;transition:border-color .15s}.instance-card:hover{border-color:var(--text-muted)}.instance-card-header{padding:14px 16px 10px}.instance-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}.instance-card-name{font-size:14px;font-weight:600;color:var(--text-bright)}.instance-active-indicator{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:500;color:var(--success, #22c55e)}.instance-active-dot{width:7px;height:7px;border-radius:50%;background:var(--success, #22c55e)}.instance-card-path{font-size:12px;font-family:SF Mono,Menlo,Consolas,monospace;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.instance-card-description{font-size:13px;color:var(--text);line-height:1.4}.instance-card-actions{display:flex;gap:8px;padding:0 16px 12px}.instance-launch-btn{padding:6px 16px;font-size:12px;font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:6px;cursor:pointer;transition:all .15s}.instance-launch-btn:hover:not(:disabled){background:var(--accent-hover)}.instance-launch-btn:disabled{opacity:.5;cursor:not-allowed}.instance-remove-btn{padding:6px 12px;font-size:12px;font-weight:500;color:var(--text-muted);background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;transition:all .15s}.instance-remove-btn:hover:not(:disabled){color:var(--danger, #ff4757);border-color:#ff475766;background:#ff475714}.instance-remove-btn:disabled{opacity:.4;cursor:not-allowed}.permission-popups{position:fixed;top:16px;right:16px;z-index:200;display:flex;flex-direction:column;gap:10px;max-width:380px;width:100%;pointer-events:none}.permission-toast{pointer-events:auto;background:var(--bg-secondary);border:1px solid var(--warning, #f59e0b);border-radius:10px;padding:14px 16px;box-shadow:0 8px 24px #0006,0 0 0 1px #f59e0b26;animation:permission-slide-in .3s ease-out}.permission-toast.deciding{opacity:.6;pointer-events:none}@keyframes permission-slide-in{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.permission-toast-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.permission-agent-badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--text-bright)}.permission-agent-letter{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;min-width:22px;border-radius:50%;background:var(--bg-tertiary);border:2px solid var(--warning, #f59e0b);font-size:11px;font-weight:700;color:var(--text-bright)}.permission-tool-badge{display:inline-block;padding:2px 8px;font-size:11px;font-weight:600;border-radius:4px;background:#f59e0b1f;color:var(--warning, #f59e0b);text-transform:uppercase;letter-spacing:.03em}.permission-description{font-size:13px;color:var(--text);margin-bottom:6px;line-height:1.4}.permission-context{margin-bottom:10px}.permission-context code{display:block;font-size:12px;color:var(--text-bright);background:var(--bg-tertiary);border:1px solid var(--border);border-radius:6px;padding:8px 10px;white-space:pre-wrap;word-break:break-all;max-height:80px;overflow-y:auto;font-family:SF Mono,Menlo,Consolas,monospace}.permission-actions{display:flex;gap:8px}.permission-btn{flex:1;padding:8px 0;font-size:13px;font-weight:600;border-radius:6px;cursor:pointer;transition:all .15s;border:1px solid transparent}.permission-btn.allow{background:#22c55e26;color:#22c55e;border-color:#22c55e4d}.permission-btn.allow:hover:not(:disabled){background:#22c55e40;border-color:#22c55e}.permission-btn.deny{background:#ff475726;color:#ff4757;border-color:#ff47574d}.permission-btn.deny:hover:not(:disabled){background:#ff475740;border-color:#ff4757}.permission-btn:disabled{opacity:.4;cursor:not-allowed}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>CrossChat Dashboard</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
8
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-B-AjVdDr.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="/assets/index-FgcgW2qC.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<div id="root"></div>
|
|
@@ -81,6 +81,13 @@ export declare class AgentConnection {
|
|
|
81
81
|
messagesCleared: number;
|
|
82
82
|
tasksArchived: number;
|
|
83
83
|
}>;
|
|
84
|
+
requestDigest(opts?: {
|
|
85
|
+
clearMessages?: boolean;
|
|
86
|
+
}): Promise<{
|
|
87
|
+
taskId: string;
|
|
88
|
+
messageCount: number;
|
|
89
|
+
messagesCleared: boolean;
|
|
90
|
+
}>;
|
|
84
91
|
/** Register a callback invoked for every incoming room message. */
|
|
85
92
|
onMessage(callback: MessageCallback): void;
|
|
86
93
|
/** Register a callback invoked for task lifecycle events. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-connection.d.ts","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-connection.d.ts","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -240,6 +240,26 @@ export class AgentConnection {
|
|
|
240
240
|
});
|
|
241
241
|
});
|
|
242
242
|
}
|
|
243
|
+
requestDigest(opts) {
|
|
244
|
+
const requestId = generateId();
|
|
245
|
+
this.send({
|
|
246
|
+
type: 'agent.requestDigest',
|
|
247
|
+
requestId,
|
|
248
|
+
clearMessages: opts?.clearMessages,
|
|
249
|
+
});
|
|
250
|
+
return new Promise((resolve, reject) => {
|
|
251
|
+
const timer = setTimeout(() => {
|
|
252
|
+
this.pendingRequests.delete(requestId);
|
|
253
|
+
reject(new Error('requestDigest request timed out'));
|
|
254
|
+
}, 10_000);
|
|
255
|
+
timer.unref();
|
|
256
|
+
this.pendingRequests.set(requestId, {
|
|
257
|
+
resolve: resolve,
|
|
258
|
+
reject,
|
|
259
|
+
timer,
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
}
|
|
243
263
|
// ─── Event registration ────────────────────────────────────────
|
|
244
264
|
/** Register a callback invoked for every incoming room message. */
|
|
245
265
|
onMessage(callback) {
|
|
@@ -313,6 +333,15 @@ export class AgentConnection {
|
|
|
313
333
|
}
|
|
314
334
|
break;
|
|
315
335
|
}
|
|
336
|
+
case 'digest.requested': {
|
|
337
|
+
const pending = this.pendingRequests.get(msg.requestId);
|
|
338
|
+
if (pending) {
|
|
339
|
+
clearTimeout(pending.timer);
|
|
340
|
+
this.pendingRequests.delete(msg.requestId);
|
|
341
|
+
pending.resolve({ taskId: msg.taskId, messageCount: msg.messageCount, messagesCleared: msg.messagesCleared });
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
344
|
+
}
|
|
316
345
|
case 'room.joined':
|
|
317
346
|
this.currentRoomId = msg.roomId;
|
|
318
347
|
log(`Joined room "${msg.name}" (${msg.roomId})`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent-connection.js","sourceRoot":"","sources":["../../src/hub/agent-connection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hub-server.d.ts","sourceRoot":"","sources":["../../src/hub/hub-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hub-server.d.ts","sourceRoot":"","sources":["../../src/hub/hub-server.ts"],"names":[],"mappings":"AAkLA;;;;;GAKG;AACH,wBAAsB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CA2qD9C"}
|
package/dist/hub/hub-server.js
CHANGED
|
@@ -19,11 +19,12 @@ const pkg = require('../../package.json');
|
|
|
19
19
|
const CROSSCHAT_DIR = path.join(os.homedir(), '.crosschat');
|
|
20
20
|
const DIGESTS_DIR = path.join(CROSSCHAT_DIR, 'digests');
|
|
21
21
|
const DASHBOARD_LOCK_FILE = path.join(CROSSCHAT_DIR, 'dashboard.lock');
|
|
22
|
-
const
|
|
22
|
+
const INSTANCES_FILE = path.join(CROSSCHAT_DIR, 'instances.json');
|
|
23
23
|
const REGISTER_TIMEOUT_MS = 5_000;
|
|
24
24
|
const HEARTBEAT_INTERVAL_MS = 30_000;
|
|
25
25
|
const PONG_TIMEOUT_MS = 10_000;
|
|
26
26
|
const ROOM_MESSAGE_CAP = 200;
|
|
27
|
+
const IDLE_SHUTDOWN_MS = 5 * 60 * 1000; // 5 minutes with no agents → auto-shutdown
|
|
27
28
|
const PERMISSION_TTL_MS = 10 * 60 * 1000; // 10 minutes for pending permissions
|
|
28
29
|
const PERMISSION_SWEEP_INTERVAL_MS = 60_000;
|
|
29
30
|
const WS_MAX_PAYLOAD = 1 * 1024 * 1024; // 1MB
|
|
@@ -68,10 +69,10 @@ async function removeDashboardLock() {
|
|
|
68
69
|
// Lock file already gone or unreadable
|
|
69
70
|
}
|
|
70
71
|
}
|
|
71
|
-
// ──
|
|
72
|
-
async function
|
|
72
|
+
// ── Instance store helpers ────────────────────────────────────────────
|
|
73
|
+
async function loadInstances() {
|
|
73
74
|
try {
|
|
74
|
-
const data = await fs.readFile(
|
|
75
|
+
const data = await fs.readFile(INSTANCES_FILE, 'utf-8');
|
|
75
76
|
const list = JSON.parse(data);
|
|
76
77
|
return new Map(list.map((p) => [p.id, p]));
|
|
77
78
|
}
|
|
@@ -79,11 +80,11 @@ async function loadProjects() {
|
|
|
79
80
|
return new Map();
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
|
-
async function
|
|
83
|
-
const list = [...
|
|
84
|
-
const tmpPath = `${
|
|
83
|
+
async function persistInstances(instances) {
|
|
84
|
+
const list = [...instances.values()];
|
|
85
|
+
const tmpPath = `${INSTANCES_FILE}.tmp`;
|
|
85
86
|
await fs.writeFile(tmpPath, JSON.stringify(list, null, 2), 'utf-8');
|
|
86
|
-
await fs.rename(tmpPath,
|
|
87
|
+
await fs.rename(tmpPath, INSTANCES_FILE);
|
|
87
88
|
}
|
|
88
89
|
// ── Version from package.json ────────────────────────────────────────
|
|
89
90
|
function getServerVersion() {
|
|
@@ -112,12 +113,14 @@ export async function startHub() {
|
|
|
112
113
|
const browserTokens = new Map(); // session tokens for permission decisions
|
|
113
114
|
const validTokens = new Set(); // fast lookup for REST auth
|
|
114
115
|
const pendingPermissions = new Map();
|
|
115
|
-
const
|
|
116
|
+
const instances = await loadInstances();
|
|
116
117
|
// Initialize TaskManager
|
|
117
118
|
const taskManager = new TaskManager();
|
|
118
119
|
await taskManager.init();
|
|
119
120
|
// Digest tracking: roomId -> taskId of currently active digest task
|
|
120
121
|
const activeDigestTasks = new Map();
|
|
122
|
+
// Idle shutdown: auto-shutdown when no agents are connected for IDLE_SHUTDOWN_MS
|
|
123
|
+
let idleShutdownTimer = null;
|
|
121
124
|
// Ensure digests directory exists
|
|
122
125
|
await fs.mkdir(DIGESTS_DIR, { recursive: true });
|
|
123
126
|
// Seed default rooms
|
|
@@ -142,13 +145,13 @@ export async function startHub() {
|
|
|
142
145
|
function sendError(ws, message, requestId) {
|
|
143
146
|
sendToWs(ws, { type: 'error', message, requestId });
|
|
144
147
|
}
|
|
145
|
-
async function
|
|
148
|
+
async function autoRegisterInstance(cwd) {
|
|
146
149
|
const resolvedPath = path.resolve(cwd);
|
|
147
|
-
// Skip if path has unsafe characters (same check as POST /api/
|
|
150
|
+
// Skip if path has unsafe characters (same check as POST /api/instances)
|
|
148
151
|
if (!/^[a-zA-Z0-9\s/\-_\.~]+$/.test(resolvedPath))
|
|
149
152
|
return;
|
|
150
|
-
// Skip if
|
|
151
|
-
for (const existing of
|
|
153
|
+
// Skip if an instance with this path already exists
|
|
154
|
+
for (const existing of instances.values()) {
|
|
152
155
|
if (existing.path === resolvedPath)
|
|
153
156
|
return;
|
|
154
157
|
}
|
|
@@ -162,15 +165,15 @@ export async function startHub() {
|
|
|
162
165
|
return;
|
|
163
166
|
}
|
|
164
167
|
const dirName = resolvedPath.split('/').filter(Boolean).pop() || 'unknown';
|
|
165
|
-
const
|
|
168
|
+
const instance = {
|
|
166
169
|
id: generateId(),
|
|
167
170
|
name: dirName,
|
|
168
171
|
path: resolvedPath,
|
|
169
172
|
createdAt: new Date().toISOString(),
|
|
170
173
|
};
|
|
171
|
-
|
|
172
|
-
await
|
|
173
|
-
log(`Auto-registered
|
|
174
|
+
instances.set(instance.id, instance);
|
|
175
|
+
await persistInstances(instances);
|
|
176
|
+
log(`Auto-registered instance: ${instance.name} (${instance.path})`);
|
|
174
177
|
}
|
|
175
178
|
function findAgentByWs(ws) {
|
|
176
179
|
for (const agent of agents.values()) {
|
|
@@ -454,6 +457,16 @@ export async function startHub() {
|
|
|
454
457
|
agents.delete(peerId);
|
|
455
458
|
log(`Agent disconnected: ${agent.name} (${peerId})`);
|
|
456
459
|
broadcastToAllBrowsers({ type: 'peerDisconnected', peerId, name: agent.name });
|
|
460
|
+
// Start idle shutdown timer if no agents remain
|
|
461
|
+
if (agents.size === 0 && !idleShutdownTimer) {
|
|
462
|
+
log(`No agents connected — hub will auto-shutdown in ${IDLE_SHUTDOWN_MS / 1000}s`);
|
|
463
|
+
idleShutdownTimer = setTimeout(() => {
|
|
464
|
+
if (agents.size === 0) {
|
|
465
|
+
shutdown('idle (no agents for 5 minutes)');
|
|
466
|
+
}
|
|
467
|
+
}, IDLE_SHUTDOWN_MS);
|
|
468
|
+
idleShutdownTimer.unref();
|
|
469
|
+
}
|
|
457
470
|
}
|
|
458
471
|
// ── Agent message handlers ────────────────────────────────────
|
|
459
472
|
function handleAgentStatus(agent, msg) {
|
|
@@ -713,6 +726,73 @@ export async function startHub() {
|
|
|
713
726
|
});
|
|
714
727
|
log(`Session cleared by ${agent.name}: ${messagesCleared} message(s), ${tasksArchived} task(s) archived`);
|
|
715
728
|
}
|
|
729
|
+
async function handleRequestDigest(agent, msg) {
|
|
730
|
+
const room = rooms.get(agent.currentRoom);
|
|
731
|
+
if (!room || room.messages.length === 0) {
|
|
732
|
+
sendError(agent.ws, 'No messages in room to digest', msg.requestId);
|
|
733
|
+
return;
|
|
734
|
+
}
|
|
735
|
+
// Check if a digest task is already active for this room
|
|
736
|
+
const existingTaskId = activeDigestTasks.get(agent.currentRoom);
|
|
737
|
+
if (existingTaskId) {
|
|
738
|
+
const existingTask = taskManager.get(existingTaskId);
|
|
739
|
+
if (existingTask && (existingTask.status === 'open' || existingTask.status === 'claimed' || existingTask.status === 'in_progress')) {
|
|
740
|
+
sendError(agent.ws, `A digest task is already in progress for this room (task ${existingTaskId})`, msg.requestId);
|
|
741
|
+
return;
|
|
742
|
+
}
|
|
743
|
+
activeDigestTasks.delete(agent.currentRoom);
|
|
744
|
+
}
|
|
745
|
+
// Capture current messages and write to pending digest file
|
|
746
|
+
const messagesToDigest = [...room.messages];
|
|
747
|
+
const pendingPath = path.join(DIGESTS_DIR, `${room.id}.jsonl`);
|
|
748
|
+
const lines = messagesToDigest.map((m) => JSON.stringify(m)).join('\n') + '\n';
|
|
749
|
+
await fs.appendFile(pendingPath, lines, 'utf-8');
|
|
750
|
+
// Optionally clear room messages
|
|
751
|
+
const clearMessages = msg.clearMessages === true;
|
|
752
|
+
if (clearMessages) {
|
|
753
|
+
room.messages = [];
|
|
754
|
+
broadcastToRoomBrowsers(agent.currentRoom, {
|
|
755
|
+
type: 'sessionCleared',
|
|
756
|
+
roomId: agent.currentRoom,
|
|
757
|
+
clearedBy: agent.name,
|
|
758
|
+
messagesCleared: messagesToDigest.length,
|
|
759
|
+
});
|
|
760
|
+
}
|
|
761
|
+
// Create digest task
|
|
762
|
+
let pendingContent;
|
|
763
|
+
try {
|
|
764
|
+
pendingContent = await fs.readFile(pendingPath, 'utf-8');
|
|
765
|
+
}
|
|
766
|
+
catch {
|
|
767
|
+
pendingContent = lines;
|
|
768
|
+
}
|
|
769
|
+
try {
|
|
770
|
+
const task = await taskManager.create({
|
|
771
|
+
roomId: room.id,
|
|
772
|
+
creatorId: agent.peerId,
|
|
773
|
+
creatorName: agent.name,
|
|
774
|
+
description: 'Summarize the following room messages into a digest',
|
|
775
|
+
context: pendingContent,
|
|
776
|
+
});
|
|
777
|
+
activeDigestTasks.set(room.id, task.taskId);
|
|
778
|
+
// Broadcast task creation
|
|
779
|
+
const summary = taskToSummary(task);
|
|
780
|
+
broadcastToRoomAgents(room.id, { type: 'task.created', task: summary });
|
|
781
|
+
broadcastToRoomBrowsers(room.id, { type: 'task.created', task: summary });
|
|
782
|
+
sendToWs(agent.ws, {
|
|
783
|
+
type: 'digest.requested',
|
|
784
|
+
requestId: msg.requestId,
|
|
785
|
+
taskId: task.taskId,
|
|
786
|
+
messageCount: messagesToDigest.length,
|
|
787
|
+
messagesCleared: clearMessages,
|
|
788
|
+
});
|
|
789
|
+
log(`Digest requested by ${agent.name} for room ${room.id}: ${messagesToDigest.length} message(s), task ${task.taskId}`);
|
|
790
|
+
}
|
|
791
|
+
catch (err) {
|
|
792
|
+
logError(`Failed to create digest task for room ${room.id}`, err);
|
|
793
|
+
sendError(agent.ws, 'Failed to create digest task', msg.requestId);
|
|
794
|
+
}
|
|
795
|
+
}
|
|
716
796
|
function handleGetTask(agent, msg) {
|
|
717
797
|
const task = taskManager.get(msg.taskId);
|
|
718
798
|
if (!task) {
|
|
@@ -801,6 +881,9 @@ export async function startHub() {
|
|
|
801
881
|
case 'agent.clearSession':
|
|
802
882
|
await handleClearSession(agent, msg);
|
|
803
883
|
break;
|
|
884
|
+
case 'agent.requestDigest':
|
|
885
|
+
await handleRequestDigest(agent, msg);
|
|
886
|
+
break;
|
|
804
887
|
default:
|
|
805
888
|
sendError(ws, `Unknown message type: ${msg.type}`);
|
|
806
889
|
}
|
|
@@ -1065,10 +1148,10 @@ export async function startHub() {
|
|
|
1065
1148
|
// Clean up after 60 seconds
|
|
1066
1149
|
setTimeout(() => pendingPermissions.delete(permission.id), 60_000);
|
|
1067
1150
|
});
|
|
1068
|
-
// ── REST:
|
|
1069
|
-
app.get('/api/
|
|
1070
|
-
const list = [...
|
|
1071
|
-
// Count active agents whose cwd matches this
|
|
1151
|
+
// ── REST: Instances ──────────────────────────────────────────────
|
|
1152
|
+
app.get('/api/instances', (_req, res) => {
|
|
1153
|
+
const list = [...instances.values()].map((p) => {
|
|
1154
|
+
// Count active agents whose cwd matches this instance path
|
|
1072
1155
|
let activeAgents = 0;
|
|
1073
1156
|
for (const agent of agents.values()) {
|
|
1074
1157
|
if (agent.cwd === p.path)
|
|
@@ -1079,17 +1162,17 @@ export async function startHub() {
|
|
|
1079
1162
|
list.sort((a, b) => a.name.localeCompare(b.name));
|
|
1080
1163
|
res.json(list);
|
|
1081
1164
|
});
|
|
1082
|
-
app.post('/api/
|
|
1083
|
-
const { name, path:
|
|
1165
|
+
app.post('/api/instances', async (req, res) => {
|
|
1166
|
+
const { name, path: instPath, description } = req.body;
|
|
1084
1167
|
if (!name || typeof name !== 'string' || name.trim().length === 0) {
|
|
1085
|
-
res.status(400).json({ error: '
|
|
1168
|
+
res.status(400).json({ error: 'Instance name is required' });
|
|
1086
1169
|
return;
|
|
1087
1170
|
}
|
|
1088
|
-
if (!
|
|
1089
|
-
res.status(400).json({ error: '
|
|
1171
|
+
if (!instPath || typeof instPath !== 'string' || instPath.trim().length === 0) {
|
|
1172
|
+
res.status(400).json({ error: 'Instance path is required' });
|
|
1090
1173
|
return;
|
|
1091
1174
|
}
|
|
1092
|
-
const resolvedPath = path.resolve(
|
|
1175
|
+
const resolvedPath = path.resolve(instPath.trim());
|
|
1093
1176
|
// Validate path contains only safe characters (prevent shell injection in launch)
|
|
1094
1177
|
if (!/^[a-zA-Z0-9\s/\-_\.~]+$/.test(resolvedPath)) {
|
|
1095
1178
|
res.status(400).json({ error: 'Path contains unsupported characters' });
|
|
@@ -1108,51 +1191,51 @@ export async function startHub() {
|
|
|
1108
1191
|
return;
|
|
1109
1192
|
}
|
|
1110
1193
|
// Check for duplicate path
|
|
1111
|
-
for (const existing of
|
|
1194
|
+
for (const existing of instances.values()) {
|
|
1112
1195
|
if (existing.path === resolvedPath) {
|
|
1113
|
-
res.status(409).json({ error: '
|
|
1196
|
+
res.status(409).json({ error: 'An instance with this path is already registered' });
|
|
1114
1197
|
return;
|
|
1115
1198
|
}
|
|
1116
1199
|
}
|
|
1117
|
-
const
|
|
1200
|
+
const instance = {
|
|
1118
1201
|
id: generateId(),
|
|
1119
1202
|
name: name.trim(),
|
|
1120
1203
|
path: resolvedPath,
|
|
1121
1204
|
description: description?.trim() || undefined,
|
|
1122
1205
|
createdAt: new Date().toISOString(),
|
|
1123
1206
|
};
|
|
1124
|
-
|
|
1125
|
-
await
|
|
1126
|
-
log(`
|
|
1127
|
-
res.status(201).json(
|
|
1207
|
+
instances.set(instance.id, instance);
|
|
1208
|
+
await persistInstances(instances);
|
|
1209
|
+
log(`Instance registered: ${instance.name} (${instance.path})`);
|
|
1210
|
+
res.status(201).json(instance);
|
|
1128
1211
|
});
|
|
1129
|
-
app.delete('/api/
|
|
1130
|
-
const
|
|
1131
|
-
if (!
|
|
1132
|
-
res.status(404).json({ error: '
|
|
1212
|
+
app.delete('/api/instances/:id', async (req, res) => {
|
|
1213
|
+
const instance = instances.get(req.params.id);
|
|
1214
|
+
if (!instance) {
|
|
1215
|
+
res.status(404).json({ error: 'Instance not found' });
|
|
1133
1216
|
return;
|
|
1134
1217
|
}
|
|
1135
|
-
|
|
1136
|
-
await
|
|
1137
|
-
log(`
|
|
1218
|
+
instances.delete(req.params.id);
|
|
1219
|
+
await persistInstances(instances);
|
|
1220
|
+
log(`Instance removed: ${instance.name} (${instance.path})`);
|
|
1138
1221
|
res.json({ deleted: true });
|
|
1139
1222
|
});
|
|
1140
|
-
app.post('/api/
|
|
1141
|
-
const
|
|
1142
|
-
if (!
|
|
1143
|
-
res.status(404).json({ error: '
|
|
1223
|
+
app.post('/api/instances/:id/launch', async (req, res) => {
|
|
1224
|
+
const instance = instances.get(req.params.id);
|
|
1225
|
+
if (!instance) {
|
|
1226
|
+
res.status(404).json({ error: 'Instance not found' });
|
|
1144
1227
|
return;
|
|
1145
1228
|
}
|
|
1146
1229
|
// Re-validate directory
|
|
1147
1230
|
try {
|
|
1148
|
-
const stat = await fs.stat(
|
|
1231
|
+
const stat = await fs.stat(instance.path);
|
|
1149
1232
|
if (!stat.isDirectory()) {
|
|
1150
|
-
res.status(400).json({ error: '
|
|
1233
|
+
res.status(400).json({ error: 'Instance directory no longer exists' });
|
|
1151
1234
|
return;
|
|
1152
1235
|
}
|
|
1153
1236
|
}
|
|
1154
1237
|
catch {
|
|
1155
|
-
res.status(400).json({ error: '
|
|
1238
|
+
res.status(400).json({ error: 'Instance directory no longer exists' });
|
|
1156
1239
|
return;
|
|
1157
1240
|
}
|
|
1158
1241
|
if (process.platform !== 'darwin') {
|
|
@@ -1160,15 +1243,21 @@ export async function startHub() {
|
|
|
1160
1243
|
return;
|
|
1161
1244
|
}
|
|
1162
1245
|
// Escape path for AppleScript (replace backslashes and double-quotes)
|
|
1163
|
-
const escapedPath =
|
|
1164
|
-
const agentName = `agent-${
|
|
1246
|
+
const escapedPath = instance.path.replace(/\\/g, '\\\\').replace(/"/g, '\\"');
|
|
1247
|
+
const agentName = `agent-${instance.id.slice(0, 8)}`;
|
|
1165
1248
|
const script = `tell application "Terminal"
|
|
1166
1249
|
activate
|
|
1167
1250
|
do script "cd \\"${escapedPath}\\" && CROSSCHAT_AGENT_NAME=${agentName} claude"
|
|
1168
1251
|
end tell`;
|
|
1169
1252
|
spawn('osascript', ['-e', script], { detached: true, stdio: 'ignore' }).unref();
|
|
1170
|
-
log(`Launched Claude Code in: ${
|
|
1171
|
-
res.json({ launched: true,
|
|
1253
|
+
log(`Launched Claude Code in: ${instance.path}`);
|
|
1254
|
+
res.json({ launched: true, instanceId: instance.id, path: instance.path });
|
|
1255
|
+
});
|
|
1256
|
+
// ── REST: Hub control ──────────────────────────────────────────────
|
|
1257
|
+
app.post('/api/hub/shutdown', (_req, res) => {
|
|
1258
|
+
res.json({ shutting_down: true });
|
|
1259
|
+
// Delay slightly so the response is sent before shutdown
|
|
1260
|
+
setTimeout(() => shutdown('API request'), 100);
|
|
1172
1261
|
});
|
|
1173
1262
|
// ── API 404 — reject unmatched API routes before SPA fallback ──
|
|
1174
1263
|
app.use('/api', (_req, res) => {
|
|
@@ -1257,6 +1346,12 @@ end tell`;
|
|
|
1257
1346
|
agents.delete(msg.peerId);
|
|
1258
1347
|
}
|
|
1259
1348
|
agents.set(msg.peerId, agent);
|
|
1349
|
+
// Cancel idle shutdown — an agent is here
|
|
1350
|
+
if (idleShutdownTimer) {
|
|
1351
|
+
clearTimeout(idleShutdownTimer);
|
|
1352
|
+
idleShutdownTimer = null;
|
|
1353
|
+
log('Idle shutdown cancelled — agent connected');
|
|
1354
|
+
}
|
|
1260
1355
|
sendToWs(ws, {
|
|
1261
1356
|
type: 'registered',
|
|
1262
1357
|
peerId: msg.peerId,
|
|
@@ -1264,9 +1359,9 @@ end tell`;
|
|
|
1264
1359
|
});
|
|
1265
1360
|
log(`Agent registered: ${agent.name} (${agent.peerId}), cwd=${agent.cwd}`);
|
|
1266
1361
|
broadcastToAllBrowsers({ type: 'peerConnected', peer: buildPeerInfo(agent) });
|
|
1267
|
-
// Auto-register agent's working directory as
|
|
1268
|
-
|
|
1269
|
-
logError('Auto-register
|
|
1362
|
+
// Auto-register agent's working directory as an instance
|
|
1363
|
+
autoRegisterInstance(agent.cwd).catch((err) => {
|
|
1364
|
+
logError('Auto-register instance failed', err);
|
|
1270
1365
|
});
|
|
1271
1366
|
}
|
|
1272
1367
|
catch (err) {
|
|
@@ -1462,6 +1557,8 @@ end tell`;
|
|
|
1462
1557
|
// Stop timers
|
|
1463
1558
|
clearInterval(heartbeatInterval);
|
|
1464
1559
|
clearInterval(permissionSweepInterval);
|
|
1560
|
+
if (idleShutdownTimer)
|
|
1561
|
+
clearTimeout(idleShutdownTimer);
|
|
1465
1562
|
// Close all agent WebSocket connections
|
|
1466
1563
|
for (const agent of agents.values()) {
|
|
1467
1564
|
try {
|