tide-commander 1.82.0 → 1.83.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/assets/{BossLogsModal-c_-m-65A.js → BossLogsModal-Bgg8MqNZ.js} +1 -1
- package/dist/assets/{BossSpawnModal-xoclsIKS.js → BossSpawnModal-SQNEPxH1.js} +1 -1
- package/dist/assets/{ControlsModal-DvbJLRQI.js → ControlsModal-ImEPi76l.js} +1 -1
- package/dist/assets/{DockerLogsModal-BEwlDjvB.js → DockerLogsModal-Cs3jjehG.js} +1 -1
- package/dist/assets/{EmbeddedEditor-Ce0A9MPZ.js → EmbeddedEditor-Cg3lq_Cv.js} +1 -1
- package/dist/assets/{GmailOAuthSetup-CxPmSlXq.js → GmailOAuthSetup-1Gh5-yZt.js} +1 -1
- package/dist/assets/{GoogleOAuthSetup-C5XDtkWo.js → GoogleOAuthSetup-DmXPQyOR.js} +1 -1
- package/dist/assets/{IframeModal-B30rL5T9.js → IframeModal-BEItm7bf.js} +1 -1
- package/dist/assets/{IntegrationsPanel-DOiXFhKJ.js → IntegrationsPanel-epI8eaV_.js} +2 -2
- package/dist/assets/{LogViewerModal-BDDX94V7.js → LogViewerModal-B4ryb52t.js} +1 -1
- package/dist/assets/{MonitoringModal-Bb-ofaiK.js → MonitoringModal-CzUjqD5Y.js} +1 -1
- package/dist/assets/{PM2LogsModal-BbwXHEqR.js → PM2LogsModal-Ex9G2Mly.js} +1 -1
- package/dist/assets/{RestoreArchivedAreaModal-DDndv4rZ.js → RestoreArchivedAreaModal-DIsamY35.js} +1 -1
- package/dist/assets/{Scene2DCanvas-D0mV81Bm.js → Scene2DCanvas-B5VdT-R2.js} +1 -1
- package/dist/assets/{SceneManager-BT7vcVki.js → SceneManager-CgkTa3Uf.js} +1 -1
- package/dist/assets/{SkillsPanel-Db_tfT8F.js → SkillsPanel-DXxAlZbz.js} +1 -1
- package/dist/assets/{SpawnModal-BgBB9Nre.js → SpawnModal-_1Af5rTQ.js} +1 -1
- package/dist/assets/{SubordinateAssignmentModal-CsNUXzAa.js → SubordinateAssignmentModal-CZ1p4KxH.js} +1 -1
- package/dist/assets/{TriggerManagerPanel-DLjvwFj_.js → TriggerManagerPanel-DnOvAQq6.js} +1 -1
- package/dist/assets/{WorkflowEditorPanel-CtWq2X20.js → WorkflowEditorPanel-Dr896thl.js} +1 -1
- package/dist/assets/{index-CeGEneIm.js → index-C70mj1bd.js} +1 -1
- package/dist/assets/{index-dz45uNT2.js → index-CgPa_6TH.js} +1 -1
- package/dist/assets/{index-BKRYCHvF.js → index-CkhtIUBY.js} +1 -1
- package/dist/assets/{index-DjcUPqW1.js → index-CoUtzDXD.js} +1 -1
- package/dist/assets/{index-BWFXqJh3.js → index-DCHHa29_.js} +1 -1
- package/dist/assets/{index-Bx7MluX4.js → index-DVqDWfDB.js} +2 -2
- package/dist/assets/{index-Blb2sMy-.js → index-DvRrAd9Y.js} +1 -1
- package/dist/assets/{index-kLrB6kGv.js → index-OYmdvKdM.js} +3 -3
- package/dist/assets/{index-B-kiGa62.js → index-ave_XgRW.js} +1 -1
- package/dist/assets/{main-C0wLbrjb.js → main-CHfGSVnw.js} +94 -93
- package/dist/assets/main-DmmvYoEs.css +1 -0
- package/dist/assets/{web-CQeInubf.js → web-D1aYcbd6.js} +1 -1
- package/dist/assets/{web-Dpd6fLBM.js → web-rv0WAVTk.js} +1 -1
- package/dist/index.html +2 -2
- package/dist/src/packages/server/claude/runner/internal-events.js +6 -3
- package/dist/src/packages/server/claude/runner/tmux-helper.js +10 -0
- package/dist/src/packages/server/claude/runner/watchdog.js +14 -0
- package/dist/src/packages/server/claude/runner.js +35 -13
- package/dist/src/packages/server/claude/session-loader.js +240 -0
- package/dist/src/packages/server/routes/agents.js +4 -0
- package/dist/src/packages/server/routes/index.js +2 -0
- package/dist/src/packages/server/routes/sessions.js +93 -0
- package/dist/src/packages/server/services/runtime-command-execution.js +13 -0
- package/dist/src/packages/server/services/runtime-service.js +7 -0
- package/dist/src/packages/server/utils/index.js +1 -0
- package/dist/src/packages/server/utils/log-context.js +10 -0
- package/dist/src/packages/server/utils/logger.js +6 -1
- package/dist/src/packages/server/websocket/handlers/agent-handler.js +17 -5
- package/package.json +1 -1
- package/dist/assets/main-DrNeyjdE.css +0 -1
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as path from 'path';
|
|
8
|
+
import { getCurrentAgentId } from './log-context.js';
|
|
8
9
|
const fileLogConfig = {
|
|
9
10
|
enabled: true,
|
|
10
11
|
directory: path.join(process.cwd(), 'logs'),
|
|
@@ -180,6 +181,10 @@ function formatMessage(level, context, message, ...args) {
|
|
|
180
181
|
const timestampStr = `${colors.dim}${timestamp}${colors.reset}`;
|
|
181
182
|
const levelStr = `${color}${colors.bright}${label.padStart(7)}${colors.reset}`;
|
|
182
183
|
const contextStr = `${colors.yellow}[${context}]${colors.reset}`;
|
|
184
|
+
const agentId = getCurrentAgentId();
|
|
185
|
+
const agentStr = agentId
|
|
186
|
+
? ` ${colors.cyan}[agentId=${agentId}]${colors.reset}`
|
|
187
|
+
: '';
|
|
183
188
|
let formattedMessage = message;
|
|
184
189
|
if (args.length > 0) {
|
|
185
190
|
const argsStr = args.map(arg => {
|
|
@@ -195,7 +200,7 @@ function formatMessage(level, context, message, ...args) {
|
|
|
195
200
|
}).join(' ');
|
|
196
201
|
formattedMessage = `${message} ${colors.cyan}${argsStr}${colors.reset}`;
|
|
197
202
|
}
|
|
198
|
-
return `${appName} ${pidStr} - ${timestampStr} ${levelStr} ${contextStr} ${formattedMessage}`;
|
|
203
|
+
return `${appName} ${pidStr} - ${timestampStr} ${levelStr} ${contextStr}${agentStr} ${formattedMessage}`;
|
|
199
204
|
}
|
|
200
205
|
class Logger {
|
|
201
206
|
context;
|
|
@@ -175,6 +175,11 @@ export async function handleClearContext(ctx, payload) {
|
|
|
175
175
|
}
|
|
176
176
|
/**
|
|
177
177
|
* Handle restore_session message - restores a previous session for an agent
|
|
178
|
+
*
|
|
179
|
+
* Optional `cwd` enables cross-project restore from the global Session Finder:
|
|
180
|
+
* if the chosen session lives in a different project directory than the agent
|
|
181
|
+
* currently uses, we update the agent's cwd alongside its sessionId so Claude
|
|
182
|
+
* Code can resolve the JSONL on the next run.
|
|
178
183
|
*/
|
|
179
184
|
export async function handleRestoreSession(ctx, payload) {
|
|
180
185
|
const agent = agentService.getAgent(payload.agentId);
|
|
@@ -182,13 +187,14 @@ export async function handleRestoreSession(ctx, payload) {
|
|
|
182
187
|
ctx.sendError(`Agent not found: ${payload.agentId}`);
|
|
183
188
|
return;
|
|
184
189
|
}
|
|
185
|
-
|
|
190
|
+
const targetCwd = payload.cwd && payload.cwd !== agent.cwd ? payload.cwd : undefined;
|
|
191
|
+
log.log(`Agent ${agent.name}: Restoring session ${payload.sessionId}` +
|
|
192
|
+
(targetCwd ? ` (cwd change: ${agent.cwd} -> ${targetCwd})` : ''));
|
|
186
193
|
// Archive the current session first (if any)
|
|
187
194
|
agentService.archiveCurrentSession(payload.agentId);
|
|
188
195
|
// Stop any running process
|
|
189
196
|
await runtimeService.stopAgent(payload.agentId);
|
|
190
|
-
|
|
191
|
-
agentService.updateAgent(payload.agentId, {
|
|
197
|
+
const updates = {
|
|
192
198
|
status: 'idle',
|
|
193
199
|
currentTask: undefined,
|
|
194
200
|
taskLabel: undefined,
|
|
@@ -197,8 +203,14 @@ export async function handleRestoreSession(ctx, payload) {
|
|
|
197
203
|
tokensUsed: 0,
|
|
198
204
|
contextUsed: 0,
|
|
199
205
|
contextStats: undefined,
|
|
200
|
-
}
|
|
201
|
-
|
|
206
|
+
};
|
|
207
|
+
if (targetCwd) {
|
|
208
|
+
updates.cwd = targetCwd;
|
|
209
|
+
}
|
|
210
|
+
agentService.updateAgent(payload.agentId, updates);
|
|
211
|
+
ctx.sendActivity(payload.agentId, targetCwd
|
|
212
|
+
? `Session restored from ${targetCwd} - will resume on next command`
|
|
213
|
+
: `Session restored - will resume on next command`);
|
|
202
214
|
log.log(`Agent ${agent.name}: Session restored to ${payload.sessionId}`);
|
|
203
215
|
}
|
|
204
216
|
/**
|