tmux-ide 2.9.10 → 2.9.11

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 (42) hide show
  1. package/bin/cli.js +173 -61
  2. package/package.json +1 -1
  3. package/packages/contracts/src/pane-stream.ts +12 -0
  4. package/packages/core/src/terminal-replica-hash-cache.ts +8 -1
  5. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Info.plist +2 -2
  6. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/MacOS/tmux-ide-notifier +0 -0
  7. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Resources/Assets.car +0 -0
  8. package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/_CodeSignature/CodeResources +2 -2
  9. package/packages/daemon/dist/terminal/mirror/mirror-service.js +12 -2
  10. package/packages/daemon/dist/terminal/mirror/session-channel.js +46 -23
  11. package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.js +15 -4
  12. package/packages/daemon/dist/terminal/session-runtime/registry.js +17 -6
  13. package/packages/daemon/dist/terminal/session-runtime/terminal-replica-interpreter.js +95 -36
  14. package/packages/daemon/dist/terminal/session-runtime/terminal-replica-owner.js +6 -0
  15. package/packages/daemon/dist/terminal/session-runtime/transport-binding.js +2 -2
  16. package/packages/daemon/dist/tui/mirror/runtime/application-generation-starter.js +16 -1
  17. package/packages/daemon/dist/tui/mirror/runtime/application-machine-agent-navigation.js +13 -0
  18. package/packages/daemon/dist/tui/mirror/runtime/application-machine-navigation.js +12 -4
  19. package/packages/daemon/dist/tui/mirror/runtime/application-retained-agent.js +18 -0
  20. package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.js +62 -2
  21. package/packages/daemon/dist/tui/mirror/runtime/open-tui-generation-host.js +2 -2
  22. package/packages/daemon/dist/tui/mirror/runtime/runtime-layout-presentation.js +6 -3
  23. package/packages/daemon/dist/tui/mirror/runtime/select-terminal-pane.js +7 -2
  24. package/packages/daemon/dist/tui/mirror/runtime/terminal-selection-waiter.js +36 -0
  25. package/packages/daemon/src/terminal/mirror/mirror-service.ts +19 -2
  26. package/packages/daemon/src/terminal/mirror/session-channel.ts +57 -9
  27. package/packages/daemon/src/terminal/pane-stream/pane-stream-websocket.ts +29 -1
  28. package/packages/daemon/src/terminal/session-runtime/registry.ts +23 -3
  29. package/packages/daemon/src/terminal/session-runtime/terminal-replica-interpreter.ts +102 -44
  30. package/packages/daemon/src/terminal/session-runtime/terminal-replica-owner.ts +7 -0
  31. package/packages/daemon/src/terminal/session-runtime/transport-binding.ts +3 -0
  32. package/packages/daemon/src/tui/mirror/open-tui-workspace-runtime-port.ts +2 -0
  33. package/packages/daemon/src/tui/mirror/runtime/application-generation-starter.ts +17 -1
  34. package/packages/daemon/src/tui/mirror/runtime/application-machine-agent-navigation.ts +15 -0
  35. package/packages/daemon/src/tui/mirror/runtime/application-machine-navigation.ts +18 -4
  36. package/packages/daemon/src/tui/mirror/runtime/application-retained-agent.ts +29 -0
  37. package/packages/daemon/src/tui/mirror/runtime/application-terminal-interaction-controller.ts +63 -2
  38. package/packages/daemon/src/tui/mirror/runtime/open-tui-generation-host.ts +2 -2
  39. package/packages/daemon/src/tui/mirror/runtime/runtime-layout-presentation.ts +7 -4
  40. package/packages/daemon/src/tui/mirror/runtime/select-terminal-pane.ts +9 -1
  41. package/packages/daemon/src/tui/mirror/runtime/terminal-selection-waiter.ts +36 -0
  42. package/packages/daemon-client/src/pane-stream-client.ts +17 -0
@@ -1,5 +1,7 @@
1
1
  import {
2
2
  PANE_STREAM_ISSUE_PATH,
3
+ PaneStreamInputLifetimeSchemaZ,
4
+ type PaneStreamInputLifetime,
3
5
  PANE_STREAM_PROTOCOL_VERSION,
4
6
  PaneStreamClientFrameSchemaZ,
5
7
  PaneStreamIssueMutationRequestSchemaZ,
@@ -343,6 +345,7 @@ export interface PaneStreamRuntimeClient {
343
345
  readonly effectiveViewerMode: PaneStreamIssueDescriptor["effectiveViewerMode"];
344
346
  readonly authoritySnapshot: SessionRuntimeAuthoritySnapshot | null;
345
347
  readonly connectionClientId: string | null;
348
+ readonly supportsInputLifetime?: boolean;
346
349
  ownsConnectionAuthority(authority: SessionRuntimeAuthorityKind): boolean;
347
350
  connectionAuthorityClientId(authority: SessionRuntimeAuthorityKind): string | null;
348
351
  setPresence(state: SessionRuntimePresenceState): void;
@@ -358,6 +361,7 @@ export interface PaneStreamRuntimeClient {
358
361
  input: SessionRuntimeTerminalInput,
359
362
  performanceTraceId?: string,
360
363
  causalProbe?: CausalCellProbeRequestV1,
364
+ expectedLifetime?: PaneStreamInputLifetime,
361
365
  ): Promise<SessionRuntimeTerminalInputResult>;
362
366
  sendText(pane: string, text: string, performanceTraceId?: string): void;
363
367
  sendKey(pane: string, key: string, performanceTraceId?: string): void;
@@ -984,12 +988,20 @@ export async function connectIssuedPaneStreamRuntimeClient(
984
988
  connectionAuthorityReleases.set(authority, release);
985
989
  return release;
986
990
  };
991
+ let supportsInputLifetime = false;
987
992
  const sendTerminalInput = (
988
993
  target: TerminalReplicaAddress,
989
994
  rawInput: SessionRuntimeTerminalInput,
990
995
  performanceTraceId?: string,
991
996
  causalProbeRequest?: CausalCellProbeRequestV1,
997
+ expectedLifetime?: PaneStreamInputLifetime,
992
998
  ): Promise<SessionRuntimeTerminalInputResult> => {
999
+ if (expectedLifetime && !supportsInputLifetime)
1000
+ return Promise.reject(new Error("Input lifetime capability unavailable"));
1001
+ const lifetime =
1002
+ expectedLifetime === undefined
1003
+ ? undefined
1004
+ : PaneStreamInputLifetimeSchemaZ.parse(expectedLifetime);
993
1005
  const input = SessionRuntimeTerminalInputSchemaZ.parse(rawInput);
994
1006
  const pane = target.semanticPaneId;
995
1007
  if (!descriptor.panes.includes(pane)) {
@@ -1087,6 +1099,7 @@ export async function connectIssuedPaneStreamRuntimeClient(
1087
1099
  seq: sequence,
1088
1100
  ...(performanceTraceId ? { performanceTraceId } : {}),
1089
1101
  ...(causalProbe ? { causalProbe } : {}),
1102
+ ...(lifetime ? { expectedLifetime: lifetime } : {}),
1090
1103
  },
1091
1104
  Boolean(transportStage),
1092
1105
  );
@@ -1285,6 +1298,7 @@ export async function connectIssuedPaneStreamRuntimeClient(
1285
1298
  )
1286
1299
  return fail("Pane-stream peer client identity did not match the redeemed connection");
1287
1300
  connectionClientId = frame.connectionClientId ?? null;
1301
+ supportsInputLifetime = frame.inputLifetime === true;
1288
1302
  verified = true;
1289
1303
  options.onConnectionDiagnostic?.("ready-frame", {
1290
1304
  requestId: descriptor.requestId,
@@ -1553,6 +1567,9 @@ export async function connectIssuedPaneStreamRuntimeClient(
1553
1567
  send({ type: "activity", generation: descriptor.daemonInstanceId, activity }),
1554
1568
  requestAuthority,
1555
1569
  releaseAuthority,
1570
+ get supportsInputLifetime() {
1571
+ return supportsInputLifetime;
1572
+ },
1556
1573
  sendTerminalInput,
1557
1574
  sendText: (pane, text, performanceTraceId) => {
1558
1575
  void sendTerminalInput(