imcodes 2026.4.1896-dev.1878 → 2026.4.1898-dev.1880

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.
@@ -1 +1 @@
1
- {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/command-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAA0D,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyBnD,OAAO,EAAsE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAmhB3H,wBAAsB,yBAAyB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtF;AAoID,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAoCxD;AAgHD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CA4R3E;AAw0CD,wBAAsB,sCAAsC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7G;AAwUD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7F;AAED,yFAAyF;AACzF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAStF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAStF;AA6zBD,wBAAgB,qCAAqC,CAAC,IAAI,2CAAgB,4CAEzE;AAED,wBAAgB,+CAA+C,CAAC,QAAQ,kBAAiB,mBAOxF;AAiyBD,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD;AAsVD,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEzD,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAa3E;AAED,gEAAgE;AAChE,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAI5E;AAED,wCAAwC;AACxC,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEtE;AAED,uDAAuD;AACvD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAEhL"}
1
+ {"version":3,"file":"command-handler.d.ts","sourceRoot":"","sources":["../../../src/daemon/command-handler.ts"],"names":[],"mappings":"AAOA,OAAO,EAA0D,KAAK,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvH,OAAO,EAAqC,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyBnD,OAAO,EAAsE,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAmhB3H,wBAAsB,yBAAyB,CAAC,UAAU,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBtF;AAoID,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,wEAAwE;IACxE,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzE,uEAAuE;IACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAcD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAoCxD;AAgHD,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI,CA4R3E;AAw0CD,wBAAsB,sCAAsC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7G;AAwUD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAE7F;AAED,yFAAyF;AACzF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,OAAO,CAStF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,MAAM,CAStF;AAs0BD,wBAAgB,qCAAqC,CAAC,IAAI,2CAAgB,4CAEzE;AAED,wBAAgB,+CAA+C,CAAC,QAAQ,kBAAiB,mBAOxF;AAiyBD,wBAAgB,0BAA0B,IAAI,IAAI,CAcjD;AAsVD,KAAK,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AAEzD,iFAAiF;AACjF,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAa3E;AAED,gEAAgE;AAChE,wBAAgB,2BAA2B,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAI5E;AAED,wCAAwC;AACxC,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,GAAG,MAAM,CAEtE;AAED,uDAAuD;AACvD,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAEhL"}
@@ -10,6 +10,7 @@ import { routeMessage } from '../router/message-router.js';
10
10
  import { terminalStreamer } from './terminal-streamer.js';
11
11
  import { timelineEmitter } from './timeline-emitter.js';
12
12
  import { timelineStore } from './timeline-store.js';
13
+ import { TIMELINE_HISTORY_CONTENT_TYPES, TIMELINE_HISTORY_STATE_TYPES } from '../shared/timeline/types.js';
13
14
  import { emitSessionInlineError } from './session-error.js';
14
15
  import { enqueueResend, getResendEntries, clearResend } from './transport-resend-queue.js';
15
16
  import { startSubSession, stopSubSession, rebuildSubSessions, detectShells, readSubSessionResponse, subSessionName, } from './subsession-manager.js';
@@ -2867,23 +2868,22 @@ async function handleTimelineHistory(cmd, serverLink) {
2867
2868
  const tStart = Date.now();
2868
2869
  let readMs = 0;
2869
2870
  let synthesizeMs = 0;
2870
- // Read generously from disk session.state events are excluded from the limit budget
2871
- // so we need to read more to ensure enough substantive events.
2871
+ // Query content by type instead of over-reading and filtering in JS. SQLite
2872
+ // has (session_id, type, ts) indexes; using them keeps the common path near
2873
+ // O(requested rows) instead of decoding thousands of unrelated state events.
2872
2874
  // Do NOT filter by epoch — history should include events across daemon restarts.
2873
- const readLimit = Math.min(limit * 6, 10000);
2874
2875
  const tRead0 = Date.now();
2875
- const events = await timelineStore.readPreferred(sessionName, { limit: readLimit, afterTs, beforeTs });
2876
+ const substantive = await timelineStore.readByTypesPreferred(sessionName, [...TIMELINE_HISTORY_CONTENT_TYPES], { limit, afterTs, beforeTs });
2877
+ let stateEvents = [];
2878
+ if (substantive.length > 0) {
2879
+ const cutoffTs = substantive[0].ts;
2880
+ const stateAfterTs = afterTs === undefined ? cutoffTs - 1 : Math.max(afterTs, cutoffTs - 1);
2881
+ stateEvents = await timelineStore.readByTypesPreferred(sessionName, [...TIMELINE_HISTORY_STATE_TYPES], { limit: Math.max(limit * 2, 100), afterTs: stateAfterTs, beforeTs });
2882
+ }
2883
+ const events = [...substantive, ...stateEvents].sort((a, b) => a.ts - b.ts);
2876
2884
  readMs = Date.now() - tRead0;
2877
2885
  // Content-aware limit: session.state events don't count toward the budget.
2878
2886
  // This prevents idle↔running oscillation storms from crowding out user.message events.
2879
- const substantive = [];
2880
- const stateEvents = [];
2881
- for (const ev of events) {
2882
- if (ev.type === 'session.state')
2883
- stateEvents.push(ev);
2884
- else
2885
- substantive.push(ev);
2886
- }
2887
2887
  // Trim substantive to the requested limit
2888
2888
  const trimmedSubstantive = substantive.length > limit ? substantive.slice(substantive.length - limit) : substantive;
2889
2889
  // Interleave state events that fall within the trimmed time range