dual-brain 7.1.2 → 7.1.3
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/dual-brain.mjs +3 -18
- package/package.json +1 -1
- package/src/session.mjs +26 -3
package/bin/dual-brain.mjs
CHANGED
|
@@ -734,13 +734,11 @@ async function dashboardScreen(rl, ask) {
|
|
|
734
734
|
}
|
|
735
735
|
|
|
736
736
|
console.log(menu([
|
|
737
|
-
{ key: '
|
|
738
|
-
{ key: 's', label: 'Status — detailed provider info', section: 'Actions' },
|
|
737
|
+
{ key: 's', label: 'Status — detailed provider info', section: 'Info' },
|
|
739
738
|
{ key: 'p', label: 'Profile & preferences', section: 'Settings' },
|
|
740
739
|
{ key: 'a', label: 'Auth management', section: 'Settings' },
|
|
741
|
-
{ key: 'd', label: 'Diagnostics',
|
|
742
|
-
{ key: '
|
|
743
|
-
{ key: 'q', label: 'Exit', section: 'Session' },
|
|
740
|
+
{ key: 'd', label: 'Diagnostics & repair', section: 'Settings' },
|
|
741
|
+
{ key: 'q', label: 'Exit to shell', section: '' },
|
|
744
742
|
]));
|
|
745
743
|
console.log('');
|
|
746
744
|
|
|
@@ -752,18 +750,6 @@ async function dashboardScreen(rl, ask) {
|
|
|
752
750
|
return { next: 'session-detail', session: recentSessions[numChoice - 1] };
|
|
753
751
|
}
|
|
754
752
|
|
|
755
|
-
if (choice === 'g') {
|
|
756
|
-
const taskDesc = (await ask(' Task description: ')).trim();
|
|
757
|
-
if (taskDesc) {
|
|
758
|
-
try {
|
|
759
|
-
await cmdGo([taskDesc]);
|
|
760
|
-
} catch (e) {
|
|
761
|
-
console.error(`Error: ${e.message}`);
|
|
762
|
-
}
|
|
763
|
-
}
|
|
764
|
-
return { next: 'dashboard' };
|
|
765
|
-
}
|
|
766
|
-
|
|
767
753
|
if (choice === 's') {
|
|
768
754
|
await cmdStatus([]);
|
|
769
755
|
await ask('\n Press Enter to return to dashboard...');
|
|
@@ -773,7 +759,6 @@ async function dashboardScreen(rl, ask) {
|
|
|
773
759
|
if (choice === 'p') { return { next: 'profile' }; }
|
|
774
760
|
if (choice === 'a') { return { next: 'auth' }; }
|
|
775
761
|
if (choice === 'd') { return { next: 'diagnostics' }; }
|
|
776
|
-
if (choice === 'c') { return { next: 'repl' }; }
|
|
777
762
|
if (choice === 'q' || choice === 'exit') { return { next: 'exit' }; }
|
|
778
763
|
|
|
779
764
|
// Unknown choice — stay on dashboard
|
package/package.json
CHANGED
package/src/session.mjs
CHANGED
|
@@ -229,11 +229,32 @@ function timeAgo(timestamp) {
|
|
|
229
229
|
*/
|
|
230
230
|
export function importReplitSessions(cwd = process.cwd()) {
|
|
231
231
|
const sessions = [];
|
|
232
|
-
|
|
232
|
+
|
|
233
|
+
// Check multiple possible locations for replit-tools
|
|
234
|
+
const candidates = [
|
|
235
|
+
join(cwd, '.replit-tools', '.claude-persistent'),
|
|
236
|
+
join('/home/runner/workspace', '.replit-tools', '.claude-persistent'),
|
|
237
|
+
];
|
|
238
|
+
// Deduplicate
|
|
239
|
+
const seen = new Set();
|
|
240
|
+
const replitBases = candidates.filter(p => {
|
|
241
|
+
const norm = p.replace(/\/+$/, '');
|
|
242
|
+
if (seen.has(norm)) return false;
|
|
243
|
+
seen.add(norm);
|
|
244
|
+
return true;
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
let replitBase = null;
|
|
248
|
+
for (const candidate of replitBases) {
|
|
249
|
+
if (existsSync(join(candidate, 'history.jsonl'))) {
|
|
250
|
+
replitBase = candidate;
|
|
251
|
+
break;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (!replitBase) return sessions;
|
|
233
255
|
|
|
234
256
|
// Read history.jsonl
|
|
235
257
|
const historyPath = join(replitBase, 'history.jsonl');
|
|
236
|
-
if (!existsSync(historyPath)) return sessions;
|
|
237
258
|
|
|
238
259
|
let lines;
|
|
239
260
|
try {
|
|
@@ -272,7 +293,9 @@ export function importReplitSessions(cwd = process.cwd()) {
|
|
|
272
293
|
}
|
|
273
294
|
|
|
274
295
|
// Read active terminal sessions
|
|
275
|
-
|
|
296
|
+
// Use the same root as replitBase (go up one level from .claude-persistent)
|
|
297
|
+
const replitRoot = join(replitBase, '..');
|
|
298
|
+
const sessionsDir = join(replitRoot, '..', '.claude-sessions');
|
|
276
299
|
const activeSessionIds = new Set();
|
|
277
300
|
if (existsSync(sessionsDir)) {
|
|
278
301
|
try {
|