dsh-ssh-tui 0.5.3 → 0.5.5

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.
Files changed (57) hide show
  1. package/README.en.md +36 -10
  2. package/README.md +21 -12
  3. package/lib/approval-reviewer.js +56 -15
  4. package/lib/approval-reviewer.js.map +1 -1
  5. package/lib/auto-approval.js +251 -35
  6. package/lib/auto-approval.js.map +1 -1
  7. package/lib/copy-text.js +62 -0
  8. package/lib/copy-text.js.map +1 -0
  9. package/lib/dsh-compat.js +142 -1
  10. package/lib/dsh-compat.js.map +1 -1
  11. package/lib/footer.js +337 -0
  12. package/lib/footer.js.map +1 -0
  13. package/lib/i18n/en.js +62 -3
  14. package/lib/i18n/en.js.map +1 -1
  15. package/lib/i18n/zh.js +62 -3
  16. package/lib/i18n/zh.js.map +1 -1
  17. package/lib/index.js +7 -5
  18. package/lib/index.js.map +1 -1
  19. package/lib/json-args.js +30 -0
  20. package/lib/json-args.js.map +1 -0
  21. package/lib/paint.js +288 -0
  22. package/lib/paint.js.map +1 -0
  23. package/lib/picker.js +453 -66
  24. package/lib/picker.js.map +1 -1
  25. package/lib/plan.js +369 -0
  26. package/lib/plan.js.map +1 -0
  27. package/lib/quota.js +408 -0
  28. package/lib/quota.js.map +1 -0
  29. package/lib/session-index.js +80 -0
  30. package/lib/session-index.js.map +1 -0
  31. package/lib/session-list.js +210 -88
  32. package/lib/session-list.js.map +1 -1
  33. package/lib/term-text.js +953 -0
  34. package/lib/term-text.js.map +1 -0
  35. package/lib/tool-present.js +744 -0
  36. package/lib/tool-present.js.map +1 -0
  37. package/lib/transcript-types.js +6 -0
  38. package/lib/transcript-types.js.map +1 -0
  39. package/lib/tui.js +643 -3299
  40. package/lib/tui.js.map +1 -1
  41. package/lib/types/approval-reviewer.d.ts +8 -2
  42. package/lib/types/auto-approval.d.ts +28 -0
  43. package/lib/types/copy-text.d.ts +9 -0
  44. package/lib/types/dsh-compat.d.ts +78 -6
  45. package/lib/types/footer.d.ts +155 -0
  46. package/lib/types/json-args.d.ts +7 -0
  47. package/lib/types/paint.d.ts +80 -0
  48. package/lib/types/picker.d.ts +101 -7
  49. package/lib/types/plan.d.ts +80 -0
  50. package/lib/types/quota.d.ts +94 -0
  51. package/lib/types/session-index.d.ts +32 -0
  52. package/lib/types/session-list.d.ts +35 -2
  53. package/lib/types/term-text.d.ts +149 -0
  54. package/lib/types/tool-present.d.ts +165 -0
  55. package/lib/types/transcript-types.d.ts +152 -0
  56. package/lib/types/tui.d.ts +53 -723
  57. package/package.json +20 -18
@@ -6,8 +6,10 @@
6
6
  import { existsSync } from 'node:fs';
7
7
  import { rm } from 'node:fs/promises';
8
8
  import { dirname, isAbsolute } from 'node:path';
9
+ import { inspectPersistenceSession, listPersistenceHeaders, persistenceLocate, } from './dsh-compat.js';
9
10
  import { t } from './i18n/index.js';
10
11
  import { listAttachableHosts } from './session-lock.js';
12
+ import { indexEntryMatchesStat, loadSessionIndex, PICKER_PRIORITY_COUNT, pruneSessionIndex, saveSessionIndex, sessionArtifactStat, sessionIndexPath, } from './session-index.js';
11
13
  /** Last path segment for the footer chip (`\root\genshin\srv` → `srv`). */
12
14
  export function sessionCwdLabel(cwd) {
13
15
  const raw = cwd.trim();
@@ -57,18 +59,6 @@ export function formatSessionTime(timestamp) {
57
59
  const pad = (value) => String(value).padStart(2, '0');
58
60
  return `${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`;
59
61
  }
60
- /**
61
- * List the most recent resumable top-level sessions, newest first.
62
- *
63
- * Subagent-owned sessions and the current session are excluded. Sessions
64
- * whose event log cannot be inspected are kept (marked `unreadable`) instead
65
- * of silently disappearing from history; readable sessions with user input
66
- * sort first. The label is the user's first input, falling back to the
67
- * session title and then the id.
68
- * @param persistence - the session persistence service.
69
- * @param currentId - the live session to exclude (empty at launch).
70
- * @returns up to nine candidates in display order.
71
- */
72
62
  /** Whether one durable event is a user-authored message. */
73
63
  function isUserMessageEvent(event) {
74
64
  const candidate = event;
@@ -100,7 +90,7 @@ function isBlankSession(hasUserInput, hasReply) {
100
90
  /** Delete one session's on-disk artifacts (log directory), best effort. */
101
91
  async function pruneSessionArtifacts(persistence, meta) {
102
92
  try {
103
- const location = persistence.locate(meta);
93
+ const location = persistenceLocate(persistence, meta);
104
94
  if (location?.path !== undefined && location.path !== '') {
105
95
  await rm(dirname(location.path), { recursive: true, force: true });
106
96
  }
@@ -111,22 +101,120 @@ async function pruneSessionArtifacts(persistence, meta) {
111
101
  }
112
102
  /** Upper bound on one inspection batch, so the picker never fans out unbounded. */
113
103
  const INSPECT_BATCH_SIZE = 30;
104
+ function toResumable(item) {
105
+ const { hasUserInput: _hasUserInput, hasReply: _hasReply, ...rest } = item;
106
+ return rest;
107
+ }
108
+ function indexFromInspected(item, stat) {
109
+ return {
110
+ id: item.id,
111
+ label: item.label,
112
+ updatedAt: item.updatedAt,
113
+ cwd: item.cwd,
114
+ hasUserInput: item.hasUserInput,
115
+ hasReply: item.hasReply,
116
+ ...(item.unreadable === true ? { unreadable: true } : {}),
117
+ mtimeMs: stat.mtimeMs,
118
+ size: stat.size,
119
+ };
120
+ }
121
+ function inspectedFromIndex(entry) {
122
+ return {
123
+ id: entry.id,
124
+ label: entry.label,
125
+ updatedAt: entry.updatedAt,
126
+ cwd: entry.cwd,
127
+ hasUserInput: entry.hasUserInput,
128
+ hasReply: entry.hasReply,
129
+ ...(entry.unreadable === true ? { unreadable: true } : {}),
130
+ };
131
+ }
132
+ /**
133
+ * List resumable top-level sessions, newest first.
134
+ *
135
+ * Subagent-owned sessions and the current session are excluded. Sessions
136
+ * whose event log cannot be inspected are kept (marked `unreadable`) instead
137
+ * of silently disappearing from history; readable sessions with user input
138
+ * sort first. The label is the persisted title, then the user's first input,
139
+ * then the id.
140
+ * @param persistence - the session persistence service.
141
+ * @param currentId - the live session to exclude (empty at launch).
142
+ * @returns every resumable candidate in display order (attachable live
143
+ * hosts first, then readable logs, then unreadable).
144
+ */
114
145
  export async function listResumableSessions(persistence, currentId, listHosts = listAttachableHosts) {
115
- const headers = await persistence.list();
146
+ const listing = await listResumableSessionsProgressive(persistence, currentId, { listHosts });
147
+ return listing.complete;
148
+ }
149
+ /**
150
+ * List resumable sessions, painting the recent page first.
151
+ *
152
+ * `onUpdate` fires after the priority page (cached + newest logs) and again
153
+ * after each later inspect batch. Unchanged logs reuse `$DSH_HOME/tui-session-index.json`.
154
+ */
155
+ export async function listResumableSessionsProgressive(persistence, currentId, options = {}) {
156
+ const listHosts = options.listHosts ?? listAttachableHosts;
157
+ const indexPath = options.indexPath
158
+ ?? process.env.DSH_TUI_SESSION_INDEX
159
+ ?? sessionIndexPath();
160
+ const priorityCount = options.priorityCount ?? PICKER_PRIORITY_COUNT;
161
+ const headers = await listPersistenceHeaders(persistence);
116
162
  const candidates = headers
117
163
  .filter(meta => meta.id !== currentId
118
164
  && meta.cwd !== undefined
119
165
  && meta.origin !== 'subagent'
120
166
  && (meta.delegationDepth ?? 0) === 0)
121
167
  .sort((a, b) => b.createdAt - a.createdAt);
168
+ const [index, hosts] = await Promise.all([
169
+ loadSessionIndex(indexPath),
170
+ listHosts(),
171
+ ]);
172
+ const keepIds = new Set(candidates.map(meta => String(meta.id)));
173
+ const indexSizeBefore = index.size;
174
+ pruneSessionIndex(index, keepIds);
175
+ let indexDirty = index.size !== indexSizeBefore;
176
+ const sketchFromHeader = (meta) => {
177
+ const cached = index.get(String(meta.id));
178
+ const stat = sessionArtifactStat(persistence, meta);
179
+ if (stat.size > 0 && indexEntryMatchesStat(cached, stat) && cached !== undefined) {
180
+ return inspectedFromIndex(cached);
181
+ }
182
+ return {
183
+ id: meta.id,
184
+ label: cached?.label && cached.label !== '' ? cached.label : meta.id,
185
+ updatedAt: cached?.updatedAt ?? meta.createdAt,
186
+ cwd: meta.cwd ?? cached?.cwd ?? '',
187
+ hasUserInput: cached?.hasUserInput ?? true,
188
+ hasReply: cached?.hasReply ?? true,
189
+ };
190
+ };
191
+ const sketched = candidates.map(meta => toResumable(sketchFromHeader(meta)));
192
+ const sketchedById = new Map(sketched.map(item => [item.id, item]));
193
+ for (const host of hosts) {
194
+ if (host.sessionId === currentId)
195
+ continue;
196
+ const attach = { pid: host.lock.pid, sock: host.sock, state: host.lock.state };
197
+ const existing = sketchedById.get(host.sessionId);
198
+ if (existing !== undefined) {
199
+ existing.attach = attach;
200
+ continue;
201
+ }
202
+ sketched.unshift({
203
+ id: host.sessionId,
204
+ label: host.sessionId,
205
+ updatedAt: Date.parse(host.lock.startedAt) || Date.now(),
206
+ cwd: '',
207
+ attach,
208
+ });
209
+ }
210
+ options.onUpdate?.({ sessions: sketched, pending: true });
122
211
  const inspectCandidate = async (meta) => {
123
212
  try {
124
- const inspection = await persistence.inspect(meta.id);
125
- const firstUserMessage = inspection.events.find((event) => event.type === 'user/message'
126
- && event.data.source.kind === 'user');
213
+ const inspection = await inspectPersistenceSession(persistence, meta.id);
214
+ const firstUserMessage = inspection.events.find(event => isUserMessageEvent(event));
127
215
  const firstUserText = firstUserMessage === undefined
128
216
  ? undefined
129
- : Array.from(firstUserMessage.data.content
217
+ : Array.from((firstUserMessage.data?.content ?? [])
130
218
  .map((block) => {
131
219
  const candidate = block;
132
220
  return candidate.type === 'text' && typeof candidate.text === 'string' ? candidate.text : '';
@@ -141,7 +229,8 @@ export async function listResumableSessions(persistence, currentId, listHosts =
141
229
  const title = titleEvent === undefined
142
230
  ? undefined
143
231
  : titleEvent.data.title;
144
- const updatedAt = inspection.events.at(-1)?.time ?? meta.createdAt;
232
+ const last = inspection.events.at(-1);
233
+ const updatedAt = last?.time ?? meta.createdAt;
145
234
  return {
146
235
  id: meta.id,
147
236
  // The persisted generated title first: the web session list shows the
@@ -174,82 +263,115 @@ export async function listResumableSessions(persistence, currentId, listHosts =
174
263
  };
175
264
  }
176
265
  };
177
- // Headers only carry creation time, so inspect by creation recency until
178
- // nine sessions with real user input are found. Recent empty boot rows (a
179
- // launch that exited before the first message) must not push older real
180
- // conversations out of the fixed window.
181
- const inspected = [];
182
- for (let offset = 0; offset < candidates.length; offset += INSPECT_BATCH_SIZE) {
183
- const batch = candidates.slice(offset, offset + INSPECT_BATCH_SIZE);
184
- const settled = await Promise.all(batch.map(async (meta) => ({ meta, item: await inspectCandidate(meta) })));
185
- for (const { meta, item } of settled) {
186
- // Unreadable logs stay visible regardless; a readable blank (a boot
187
- // that died before any input or reply) gets deleted so the raw id
188
- // never shows up as resumable again.
189
- if (item.unreadable !== true && isBlankSession(item.hasUserInput, item.hasReply)) {
190
- void pruneSessionArtifacts(persistence, meta);
191
- continue;
192
- }
193
- inspected.push(item);
266
+ const resolveCandidate = async (meta) => {
267
+ const stat = sessionArtifactStat(persistence, meta);
268
+ const cached = index.get(String(meta.id));
269
+ // Fingerprint 0/0 means locate/stat failed: never treat that as a hit.
270
+ if (stat.size > 0 && indexEntryMatchesStat(cached, stat) && cached !== undefined) {
271
+ return inspectedFromIndex(cached);
194
272
  }
195
- if (inspected.filter(item => item.hasUserInput).length >= 9)
196
- break;
197
- }
198
- const resumable = inspected.filter(item => item.hasUserInput || item.unreadable === true);
199
- const hosts = await listHosts();
200
- const byId = new Map(resumable.map(item => [item.id, item]));
201
- for (const host of hosts) {
202
- if (host.sessionId === currentId)
203
- continue;
204
- const attach = { pid: host.lock.pid, sock: host.sock, state: host.lock.state };
205
- // A live Host whose session never saw input nor a reply is a crashed
206
- // boot: stop it, remove its artifacts, and keep it out of the picker.
207
- let blankLive = false;
208
- let liveHasUserInput = true;
209
- try {
210
- const inspection = await persistence.inspect(host.sessionId);
211
- const hasInput = inspection.events.some(event => isUserMessageEvent(event));
212
- blankLive = isBlankSession(hasInput, sessionHasReply(inspection.events));
213
- liveHasUserInput = hasInput;
273
+ const item = await inspectCandidate(meta);
274
+ if (item.unreadable !== true && isBlankSession(item.hasUserInput, item.hasReply)) {
275
+ index.delete(String(meta.id));
276
+ indexDirty = true;
277
+ void pruneSessionArtifacts(persistence, meta);
278
+ return undefined;
214
279
  }
215
- catch {
216
- // No durable log: the Host booted and never did anything.
217
- blankLive = true;
218
- liveHasUserInput = false;
280
+ if (stat.size > 0) {
281
+ index.set(String(meta.id), indexFromInspected(item, stat));
282
+ indexDirty = true;
219
283
  }
220
- if (blankLive) {
284
+ return item;
285
+ };
286
+ const inspected = [];
287
+ const blankLiveIds = new Set();
288
+ const extraLive = new Map();
289
+ const mergeHosts = async (items) => {
290
+ const resumable = items.filter(item => item.hasUserInput || item.unreadable === true);
291
+ const byId = new Map(resumable.map(item => [item.id, item]));
292
+ for (const host of hosts) {
293
+ if (host.sessionId === currentId || blankLiveIds.has(host.sessionId))
294
+ continue;
295
+ const attach = { pid: host.lock.pid, sock: host.sock, state: host.lock.state };
296
+ const existing = byId.get(host.sessionId) ?? extraLive.get(host.sessionId);
297
+ if (existing !== undefined) {
298
+ existing.attach = attach;
299
+ if (!byId.has(host.sessionId)) {
300
+ resumable.push(existing);
301
+ byId.set(host.sessionId, existing);
302
+ }
303
+ continue;
304
+ }
305
+ // A live Host whose session never saw input nor a reply is a crashed
306
+ // boot: stop it, remove its artifacts, and keep it out of the picker.
307
+ let blankLive = false;
308
+ let liveHasUserInput = true;
221
309
  try {
222
- process.kill(attach.pid, 'SIGTERM');
310
+ const inspection = await inspectPersistenceSession(persistence, host.sessionId);
311
+ const hasInput = inspection.events.some(event => isUserMessageEvent(event));
312
+ blankLive = isBlankSession(hasInput, sessionHasReply(inspection.events));
313
+ liveHasUserInput = hasInput;
223
314
  }
224
- catch { /* already gone */ }
225
- const header = candidates.find(candidate => candidate.id === host.sessionId);
226
- if (header !== undefined)
227
- void pruneSessionArtifacts(persistence, header);
228
- continue;
315
+ catch {
316
+ blankLive = true;
317
+ liveHasUserInput = false;
318
+ }
319
+ if (blankLive) {
320
+ blankLiveIds.add(host.sessionId);
321
+ try {
322
+ process.kill(attach.pid, 'SIGTERM');
323
+ }
324
+ catch { /* already gone */ }
325
+ const header = candidates.find(candidate => candidate.id === host.sessionId);
326
+ if (header !== undefined)
327
+ void pruneSessionArtifacts(persistence, header);
328
+ continue;
329
+ }
330
+ const injected = {
331
+ id: host.sessionId,
332
+ label: host.sessionId,
333
+ updatedAt: Date.parse(host.lock.startedAt) || Date.now(),
334
+ cwd: '',
335
+ hasUserInput: liveHasUserInput,
336
+ hasReply: true,
337
+ attach,
338
+ };
339
+ extraLive.set(host.sessionId, injected);
340
+ resumable.push(injected);
341
+ byId.set(host.sessionId, injected);
229
342
  }
230
- const existing = byId.get(host.sessionId);
231
- if (existing !== undefined) {
232
- existing.attach = attach;
233
- continue;
343
+ resumable.sort((a, b) => (a.attach === undefined ? 1 : 0) - (b.attach === undefined ? 1 : 0)
344
+ || (a.unreadable === true ? 1 : 0) - (b.unreadable === true ? 1 : 0)
345
+ || b.updatedAt - a.updatedAt);
346
+ return resumable;
347
+ };
348
+ const emit = async (pending) => {
349
+ const listed = (await mergeHosts(inspected)).map(toResumable);
350
+ options.onUpdate?.({ sessions: listed, pending });
351
+ return listed;
352
+ };
353
+ // Newest page first so the picker can paint before older logs are parsed.
354
+ const priority = candidates.slice(0, Math.max(0, priorityCount));
355
+ const rest = candidates.slice(priority.length);
356
+ const first = await Promise.all(priority.map(async (meta) => ({ meta, item: await resolveCandidate(meta) })));
357
+ for (const { item } of first) {
358
+ if (item !== undefined)
359
+ inspected.push(item);
360
+ }
361
+ await emit(rest.length > 0);
362
+ for (let offset = 0; offset < rest.length; offset += INSPECT_BATCH_SIZE) {
363
+ const batch = rest.slice(offset, offset + INSPECT_BATCH_SIZE);
364
+ const settled = await Promise.all(batch.map(async (meta) => ({ meta, item: await resolveCandidate(meta) })));
365
+ for (const { item } of settled) {
366
+ if (item !== undefined)
367
+ inspected.push(item);
234
368
  }
235
- const injected = {
236
- id: host.sessionId,
237
- label: host.sessionId,
238
- updatedAt: Date.parse(host.lock.startedAt) || Date.now(),
239
- cwd: '',
240
- hasUserInput: liveHasUserInput,
241
- hasReply: true,
242
- attach,
243
- };
244
- resumable.push(injected);
245
- byId.set(host.sessionId, injected);
369
+ await emit(offset + INSPECT_BATCH_SIZE < rest.length);
246
370
  }
247
- // Attachable live hosts first, then readable logs, then unreadable.
248
- resumable.sort((a, b) => (a.attach === undefined ? 1 : 0) - (b.attach === undefined ? 1 : 0)
249
- || (a.unreadable === true ? 1 : 0) - (b.unreadable === true ? 1 : 0)
250
- || b.updatedAt - a.updatedAt);
251
- return resumable
252
- .slice(0, 9)
253
- .map(({ hasUserInput: _hasUserInput, ...rest }) => rest);
371
+ const complete = (await mergeHosts(inspected)).map(toResumable);
372
+ if (indexDirty)
373
+ await saveSessionIndex(indexPath, index);
374
+ options.onUpdate?.({ sessions: complete, pending: false });
375
+ return { sessions: complete, pending: false, complete };
254
376
  }
255
377
  //# sourceMappingURL=session-list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-list.js","sourceRoot":"","sources":["../src/session-list.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-list.js","sourceRoot":"","sources":["../src/session-list.ts"],"names":[],"mappings":"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"}