@rynx-ai/server 0.1.11-beta.34 → 0.1.11-beta.36

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.
@@ -182,6 +182,7 @@ export declare function createControlRouter(opts: {
182
182
  * and (codex-native live mode) bring up + inject into a session's forwarder. */
183
183
  runnerManager?: {
184
184
  stopRunner(localThreadId: string): void;
185
+ terminateLiveSession?(localThreadId: string): Promise<boolean>;
185
186
  interruptLiveSession?(localThreadId: string): Promise<boolean>;
186
187
  ensureLiveSession?(localThreadId: string, opts: {
187
188
  workspace: SessionWorkspaceSnapshot;
@@ -3778,7 +3778,15 @@ export function createControlRouter(opts) {
3778
3778
  ctx.body = { error: "session_resource_cleanup_failed" };
3779
3779
  return;
3780
3780
  }
3781
- runnerManager?.stopRunner(id);
3781
+ if (runnerManager?.terminateLiveSession) {
3782
+ await runnerManager.terminateLiveSession(id).catch((error) => {
3783
+ console.warn(`[control-api] session=${id} live teardown failed during deletion; continuing best-effort: ${error instanceof Error ? error.message : String(error)}`);
3784
+ return false;
3785
+ });
3786
+ }
3787
+ else {
3788
+ runnerManager?.stopRunner(id);
3789
+ }
3782
3790
  sessionBus?.close(id);
3783
3791
  deps.removeSessionMeta(id);
3784
3792
  // Hard-delete the transcript too — the session list is meta ∪ log, so
@@ -96,6 +96,9 @@ export interface MachineSessionRunnerPort {
96
96
  injectMessage(sessionId: string, input: RuntimeUserInput | string, options?: RuntimeTurnOptions): Promise<InjectResult>;
97
97
  updateCollaborationMode?(sessionId: string, mode: SessionCollaborationMode): Promise<void>;
98
98
  stopRunner(sessionId: string): void;
99
+ /** Full native teardown. Completion proves the runner child and its tmux/app-server
100
+ * descendants have exited before durable Session identity is removed. */
101
+ terminateLiveSession?(sessionId: string): Promise<boolean>;
99
102
  resolveInteraction(sessionId: string, interactionId: string, resolution: SessionInteractionResolution): Promise<{
100
103
  disposition: ControlSessionInteractionResolveDisposition;
101
104
  }>;
@@ -1053,7 +1053,19 @@ export class MachineSessionService {
1053
1053
  throw new MachineSessionServiceFailure("failed_precondition", "Session-owned resources could not be fenced before deletion", error instanceof Error ? error.message : String(error));
1054
1054
  }
1055
1055
  this.cancelledPendingDeliveries.add(sessionId);
1056
- this.ports.execution?.runner.stopRunner(sessionId);
1056
+ const runner = this.ports.execution?.runner;
1057
+ if (runner?.terminateLiveSession) {
1058
+ try {
1059
+ await runner.terminateLiveSession(sessionId);
1060
+ }
1061
+ catch (error) {
1062
+ console.warn(`[machine-session] session=${sessionId} live teardown failed during deletion; continuing best-effort: ${error instanceof Error ? error.message : String(error)}`);
1063
+ runner.stopRunner(sessionId);
1064
+ }
1065
+ }
1066
+ else {
1067
+ runner?.stopRunner(sessionId);
1068
+ }
1057
1069
  this.ports.events.close?.(sessionId);
1058
1070
  await this.ports.pendingMessages?.delete(sessionId);
1059
1071
  this.ports.pendingInputs?.deleteSession(sessionId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rynx-ai/server",
3
- "version": "0.1.11-beta.34",
3
+ "version": "0.1.11-beta.36",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/rynx-ai/rynx.git",
@@ -27,15 +27,15 @@
27
27
  "@koa/router": "^15.4.0",
28
28
  "koa": "^3.2.0",
29
29
  "ws": "^8.21.0",
30
- "@rynx-ai/core": "0.1.11-beta.34",
31
- "@rynx-ai/plugin-sdk": "0.1.11-beta.34",
32
- "@rynx-ai/protocol": "0.1.11-beta.34",
33
- "@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.34",
34
- "@rynx-ai/runtime": "0.1.11-beta.34"
30
+ "@rynx-ai/core": "0.1.11-beta.36",
31
+ "@rynx-ai/plugin-sdk": "0.1.11-beta.36",
32
+ "@rynx-ai/protocol": "0.1.11-beta.36",
33
+ "@rynx-ai/remote-runtime-e2ee": "0.1.11-beta.36",
34
+ "@rynx-ai/runtime": "0.1.11-beta.36"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/ws": "^8.18.1",
38
- "@rynx-ai/control-web": "0.1.11-beta.34"
38
+ "@rynx-ai/control-web": "0.1.11-beta.36"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "rm -rf dist && tsc -p tsconfig.json && mkdir -p dist/control-web && cp -R ../control-web/dist/. dist/control-web/",