@blockrun/franklin 3.15.66 → 3.15.67

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.
@@ -562,9 +562,11 @@ export async function interactiveSession(config, getUserInput, onEvent, onAbortR
562
562
  const totalCleaned = hygieneReport.legacyFilesRemoved +
563
563
  hygieneReport.dataFilesTrimmed +
564
564
  hygieneReport.costLogRowsTrimmed +
565
- hygieneReport.orphanToolResultsRemoved;
565
+ hygieneReport.orphanToolResultsRemoved +
566
+ hygieneReport.brainJunkEntitiesRemoved +
567
+ hygieneReport.oldTasksRemoved;
566
568
  if (totalCleaned > 0) {
567
- logger.info(`[franklin] Data hygiene: ${hygieneReport.legacyFilesRemoved} legacy, ${hygieneReport.dataFilesTrimmed} data files, ${hygieneReport.costLogRowsTrimmed} cost_log rows, ${hygieneReport.orphanToolResultsRemoved} orphan tool-results dirs cleaned`);
569
+ logger.info(`[franklin] Data hygiene: ${hygieneReport.legacyFilesRemoved} legacy, ${hygieneReport.dataFilesTrimmed} data files, ${hygieneReport.costLogRowsTrimmed} cost_log rows, ${hygieneReport.orphanToolResultsRemoved} orphan tool-results dirs, ${hygieneReport.brainJunkEntitiesRemoved} junk brain entities, ${hygieneReport.oldTasksRemoved} expired tasks cleaned`);
568
570
  }
569
571
  persistSessionMeta();
570
572
  // Flush session meta on SIGINT/SIGTERM so mid-stream Ctrl+C doesn't
@@ -40,6 +40,15 @@ export function buildTaskCommand() {
40
40
  console.log('No tasks. Start one via the Task agent tool.');
41
41
  return;
42
42
  }
43
+ // Header row matches `franklin content list` shape — verified
44
+ // 2026-05-05 that task list was emitting bare data rows with no
45
+ // column labels, leaving users to guess at the column meaning
46
+ // (`14h19m` could be elapsed-since-start or since-end). The
47
+ // running-vs-terminal age semantics are documented in 3.15.46;
48
+ // the header makes the column itself self-explanatory.
49
+ const idHeader = 'runId';
50
+ const idWidth = Math.max(idHeader.length, ...tasks.map(t => t.runId.length));
51
+ console.log([idHeader.padEnd(idWidth), 'status'.padEnd(10), ' age', 'label'].join(' '));
43
52
  const now = Date.now();
44
53
  for (const t of tasks) {
45
54
  // For a running task, "age" should mean "how long has this been
@@ -54,7 +63,7 @@ export function buildTaskCommand() {
54
63
  ? (t.endedAt ?? t.lastEventAt ?? t.createdAt)
55
64
  : (t.startedAt ?? t.createdAt);
56
65
  const age = fmtAge(now - ageRefMs);
57
- console.log(`${t.runId} ${t.status.padEnd(10)} ${age.padStart(5)} ${t.label}`);
66
+ console.log(`${t.runId.padEnd(idWidth)} ${t.status.padEnd(10)} ${age.padStart(5)} ${t.label}`);
58
67
  }
59
68
  });
60
69
  cmd
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockrun/franklin",
3
- "version": "3.15.66",
3
+ "version": "3.15.67",
4
4
  "description": "Franklin — The AI agent with a wallet. Spends USDC autonomously to get real work done. Pay per action, no subscriptions.",
5
5
  "type": "module",
6
6
  "exports": {