truememory-mirror 1.0.5 → 1.0.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/bin/mirror.js +48 -13
- package/package.json +1 -1
package/bin/mirror.js
CHANGED
|
@@ -99,6 +99,33 @@ function clearLine() {
|
|
|
99
99
|
if (!_jsonMode) process.stderr.write('\r\x1b[K');
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
const STATUS_PHRASES = [
|
|
103
|
+
'scanning cognitive patterns',
|
|
104
|
+
'mapping decision architecture',
|
|
105
|
+
'extracting reasoning signatures',
|
|
106
|
+
'profiling communication style',
|
|
107
|
+
'analyzing delegation patterns',
|
|
108
|
+
'detecting stress responses',
|
|
109
|
+
'triangulating identity vectors',
|
|
110
|
+
'calibrating behavioral model',
|
|
111
|
+
'isolating personality markers',
|
|
112
|
+
'decoding problem-solving heuristics',
|
|
113
|
+
'tracing collaboration fingerprint',
|
|
114
|
+
'measuring risk tolerance curves',
|
|
115
|
+
'building predictive scaffolding',
|
|
116
|
+
'consolidating trait matrix',
|
|
117
|
+
'running scenario simulations',
|
|
118
|
+
'resolving cognitive tensions',
|
|
119
|
+
'rendering identity surface',
|
|
120
|
+
'finalizing behavioral predictions',
|
|
121
|
+
];
|
|
122
|
+
|
|
123
|
+
let _phraseIndex = 0;
|
|
124
|
+
|
|
125
|
+
function nextPhrase() {
|
|
126
|
+
return STATUS_PHRASES[_phraseIndex++ % STATUS_PHRASES.length];
|
|
127
|
+
}
|
|
128
|
+
|
|
102
129
|
function progressBar(pct, width = 30) {
|
|
103
130
|
const filled = Math.round(pct * width);
|
|
104
131
|
const empty = width - filled;
|
|
@@ -132,8 +159,13 @@ async function main() {
|
|
|
132
159
|
return;
|
|
133
160
|
}
|
|
134
161
|
|
|
135
|
-
// --- Scan & parse
|
|
136
|
-
|
|
162
|
+
// --- Scan & parse with rotating status ---
|
|
163
|
+
const spinTimer = setInterval(() => {
|
|
164
|
+
clearLine();
|
|
165
|
+
write(` ${DIM}${nextPhrase()}...${R}`);
|
|
166
|
+
}, 1800);
|
|
167
|
+
|
|
168
|
+
write(` ${DIM}${nextPhrase()}...${R}`);
|
|
137
169
|
const sources = await scan(args.source);
|
|
138
170
|
|
|
139
171
|
let claudeSessions = [];
|
|
@@ -161,8 +193,11 @@ async function main() {
|
|
|
161
193
|
}
|
|
162
194
|
}
|
|
163
195
|
|
|
196
|
+
clearInterval(spinTimer);
|
|
197
|
+
|
|
164
198
|
const totalSessions = claudeSessions.length + codexSessions.length;
|
|
165
199
|
if (totalSessions === 0) {
|
|
200
|
+
clearLine();
|
|
166
201
|
write(` no AI conversations found.\n make sure you have Claude Code or Codex CLI installed.\n\n`);
|
|
167
202
|
process.exit(1);
|
|
168
203
|
}
|
|
@@ -183,7 +218,7 @@ async function main() {
|
|
|
183
218
|
}
|
|
184
219
|
|
|
185
220
|
// --- Extract ---
|
|
186
|
-
|
|
221
|
+
clearLine();
|
|
187
222
|
let result;
|
|
188
223
|
try {
|
|
189
224
|
result = await submitForExtraction(payload, args.apiUrl);
|
|
@@ -192,23 +227,23 @@ async function main() {
|
|
|
192
227
|
process.exit(1);
|
|
193
228
|
}
|
|
194
229
|
|
|
195
|
-
// --- Poll ---
|
|
230
|
+
// --- Poll with rotating status ---
|
|
231
|
+
let lastPhraseTick = 0;
|
|
232
|
+
let currentPhrase = nextPhrase();
|
|
233
|
+
|
|
196
234
|
try {
|
|
197
235
|
await pollStatus(result.profile_id, args.apiUrl, (status) => {
|
|
198
236
|
const pct = status.progress || 0;
|
|
199
237
|
const bar = progressBar(pct);
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
detail = `${DIM}building profile${R}`;
|
|
206
|
-
} else if (status.status === 'predicting') {
|
|
207
|
-
detail = `${DIM}running predictions${R}`;
|
|
238
|
+
const now = Date.now();
|
|
239
|
+
|
|
240
|
+
if (now - lastPhraseTick > 2500) {
|
|
241
|
+
currentPhrase = nextPhrase();
|
|
242
|
+
lastPhraseTick = now;
|
|
208
243
|
}
|
|
209
244
|
|
|
210
245
|
clearLine();
|
|
211
|
-
write(` ${bar} ${WHITE}${Math.round(pct * 100)}%${R} ${
|
|
246
|
+
write(` ${bar} ${WHITE}${Math.round(pct * 100)}%${R} ${DIM}${currentPhrase}...${R}`);
|
|
212
247
|
});
|
|
213
248
|
} catch (err) {
|
|
214
249
|
write(`\n\n ✗ extraction failed: ${err.message}\n\n`);
|