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.
- package/bin/cli.js +173 -61
- package/package.json +1 -1
- package/packages/contracts/src/pane-stream.ts +12 -0
- package/packages/core/src/terminal-replica-hash-cache.ts +8 -1
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Info.plist +2 -2
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/MacOS/tmux-ide-notifier +0 -0
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/Resources/Assets.car +0 -0
- package/packages/daemon/dist/native/TmuxIdeNotifier.app/Contents/_CodeSignature/CodeResources +2 -2
- package/packages/daemon/dist/terminal/mirror/mirror-service.js +12 -2
- package/packages/daemon/dist/terminal/mirror/session-channel.js +46 -23
- package/packages/daemon/dist/terminal/pane-stream/pane-stream-websocket.js +15 -4
- package/packages/daemon/dist/terminal/session-runtime/registry.js +17 -6
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-interpreter.js +95 -36
- package/packages/daemon/dist/terminal/session-runtime/terminal-replica-owner.js +6 -0
- package/packages/daemon/dist/terminal/session-runtime/transport-binding.js +2 -2
- package/packages/daemon/dist/tui/mirror/runtime/application-generation-starter.js +16 -1
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-agent-navigation.js +13 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-machine-navigation.js +12 -4
- package/packages/daemon/dist/tui/mirror/runtime/application-retained-agent.js +18 -0
- package/packages/daemon/dist/tui/mirror/runtime/application-terminal-interaction-controller.js +62 -2
- package/packages/daemon/dist/tui/mirror/runtime/open-tui-generation-host.js +2 -2
- package/packages/daemon/dist/tui/mirror/runtime/runtime-layout-presentation.js +6 -3
- package/packages/daemon/dist/tui/mirror/runtime/select-terminal-pane.js +7 -2
- package/packages/daemon/dist/tui/mirror/runtime/terminal-selection-waiter.js +36 -0
- package/packages/daemon/src/terminal/mirror/mirror-service.ts +19 -2
- package/packages/daemon/src/terminal/mirror/session-channel.ts +57 -9
- package/packages/daemon/src/terminal/pane-stream/pane-stream-websocket.ts +29 -1
- package/packages/daemon/src/terminal/session-runtime/registry.ts +23 -3
- package/packages/daemon/src/terminal/session-runtime/terminal-replica-interpreter.ts +102 -44
- package/packages/daemon/src/terminal/session-runtime/terminal-replica-owner.ts +7 -0
- package/packages/daemon/src/terminal/session-runtime/transport-binding.ts +3 -0
- package/packages/daemon/src/tui/mirror/open-tui-workspace-runtime-port.ts +2 -0
- package/packages/daemon/src/tui/mirror/runtime/application-generation-starter.ts +17 -1
- package/packages/daemon/src/tui/mirror/runtime/application-machine-agent-navigation.ts +15 -0
- package/packages/daemon/src/tui/mirror/runtime/application-machine-navigation.ts +18 -4
- package/packages/daemon/src/tui/mirror/runtime/application-retained-agent.ts +29 -0
- package/packages/daemon/src/tui/mirror/runtime/application-terminal-interaction-controller.ts +63 -2
- package/packages/daemon/src/tui/mirror/runtime/open-tui-generation-host.ts +2 -2
- package/packages/daemon/src/tui/mirror/runtime/runtime-layout-presentation.ts +7 -4
- package/packages/daemon/src/tui/mirror/runtime/select-terminal-pane.ts +9 -1
- package/packages/daemon/src/tui/mirror/runtime/terminal-selection-waiter.ts +36 -0
- 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(
|