@myagentroam/node 0.1.3 → 0.1.4

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 (197) hide show
  1. package/dist/claude-agent-sdk.d.ts +1 -15
  2. package/dist/claude-agent-sdk.js +9 -77
  3. package/dist/claude-agent-sdk.js.map +1 -1
  4. package/dist/codex-app-server.d.ts +4 -0
  5. package/dist/codex-app-server.js +18 -4
  6. package/dist/codex-app-server.js.map +1 -1
  7. package/dist/connector/node-connector-options.d.ts +23 -0
  8. package/dist/connector/node-connector-options.js +2 -0
  9. package/dist/connector/node-connector-options.js.map +1 -0
  10. package/dist/connector/node-operation-router.d.ts +9 -0
  11. package/dist/connector/node-operation-router.js +23 -0
  12. package/dist/connector/node-operation-router.js.map +1 -0
  13. package/dist/connector.d.ts +59 -356
  14. package/dist/connector.js +611 -6175
  15. package/dist/connector.js.map +1 -1
  16. package/dist/control-outbound-scheduler.d.ts +26 -0
  17. package/dist/control-outbound-scheduler.js +122 -0
  18. package/dist/control-outbound-scheduler.js.map +1 -0
  19. package/dist/database.js +1 -1
  20. package/dist/database.js.map +1 -1
  21. package/dist/native-jsonl-reader.d.ts +14 -0
  22. package/dist/native-jsonl-reader.js +98 -0
  23. package/dist/native-jsonl-reader.js.map +1 -0
  24. package/dist/native-session-history.d.ts +22 -3
  25. package/dist/native-session-history.js +275 -156
  26. package/dist/native-session-history.js.map +1 -1
  27. package/dist/runner/abstract-runner.d.ts +148 -0
  28. package/dist/runner/abstract-runner.js +139 -0
  29. package/dist/runner/abstract-runner.js.map +1 -0
  30. package/dist/runner/claude/managed-run-controller.d.ts +52 -0
  31. package/dist/runner/claude/managed-run-controller.js +307 -0
  32. package/dist/runner/claude/managed-run-controller.js.map +1 -0
  33. package/dist/runner/claude-code-runner.d.ts +68 -0
  34. package/dist/runner/claude-code-runner.js +268 -0
  35. package/dist/runner/claude-code-runner.js.map +1 -0
  36. package/dist/runner/codex/conversation-parser.d.ts +61 -0
  37. package/dist/runner/codex/conversation-parser.js +676 -0
  38. package/dist/runner/codex/conversation-parser.js.map +1 -0
  39. package/dist/runner/codex/managed-run-controller.d.ts +79 -0
  40. package/dist/runner/codex/managed-run-controller.js +379 -0
  41. package/dist/runner/codex/managed-run-controller.js.map +1 -0
  42. package/dist/runner/codex-runner.d.ts +81 -0
  43. package/dist/runner/codex-runner.js +342 -0
  44. package/dist/runner/codex-runner.js.map +1 -0
  45. package/dist/runner/fake-test-runner.d.ts +26 -0
  46. package/dist/runner/fake-test-runner.js +48 -0
  47. package/dist/runner/fake-test-runner.js.map +1 -0
  48. package/dist/runner/runner-registry.d.ts +17 -0
  49. package/dist/runner/runner-registry.js +66 -0
  50. package/dist/runner/runner-registry.js.map +1 -0
  51. package/dist/runner-usage.d.ts +2 -2
  52. package/dist/runner-usage.js +3 -5
  53. package/dist/runner-usage.js.map +1 -1
  54. package/dist/runtime-state.js +6 -5
  55. package/dist/runtime-state.js.map +1 -1
  56. package/dist/service/attachment-domain-state.d.ts +5 -0
  57. package/dist/service/attachment-domain-state.js +6 -0
  58. package/dist/service/attachment-domain-state.js.map +1 -0
  59. package/dist/service/conversation-history-service.d.ts +34 -0
  60. package/dist/service/conversation-history-service.js +159 -0
  61. package/dist/service/conversation-history-service.js.map +1 -0
  62. package/dist/service/external-session-resume-service.d.ts +32 -0
  63. package/dist/service/external-session-resume-service.js +99 -0
  64. package/dist/service/external-session-resume-service.js.map +1 -0
  65. package/dist/service/fake-managed-run-service.d.ts +29 -0
  66. package/dist/service/fake-managed-run-service.js +63 -0
  67. package/dist/service/fake-managed-run-service.js.map +1 -0
  68. package/dist/service/managed-runner-session-service.d.ts +10 -0
  69. package/dist/service/managed-runner-session-service.js +31 -0
  70. package/dist/service/managed-runner-session-service.js.map +1 -0
  71. package/dist/service/native-session-projection-service.d.ts +50 -0
  72. package/dist/service/native-session-projection-service.js +268 -0
  73. package/dist/service/native-session-projection-service.js.map +1 -0
  74. package/dist/service/native-session-watch-service.d.ts +37 -0
  75. package/dist/service/native-session-watch-service.js +151 -0
  76. package/dist/service/native-session-watch-service.js.map +1 -0
  77. package/dist/service/node-connection-lifecycle-service.d.ts +37 -0
  78. package/dist/service/node-connection-lifecycle-service.js +84 -0
  79. package/dist/service/node-connection-lifecycle-service.js.map +1 -0
  80. package/dist/service/node-control-channel.d.ts +32 -0
  81. package/dist/service/node-control-channel.js +84 -0
  82. package/dist/service/node-control-channel.js.map +1 -0
  83. package/dist/service/node-control-message-service.d.ts +28 -0
  84. package/dist/service/node-control-message-service.js +105 -0
  85. package/dist/service/node-control-message-service.js.map +1 -0
  86. package/dist/service/node-request-service.d.ts +14 -0
  87. package/dist/service/node-request-service.js +51 -0
  88. package/dist/service/node-request-service.js.map +1 -0
  89. package/dist/service/node-run-event-bridge.d.ts +38 -0
  90. package/dist/service/node-run-event-bridge.js +80 -0
  91. package/dist/service/node-run-event-bridge.js.map +1 -0
  92. package/dist/service/node-terminal-channel.d.ts +29 -0
  93. package/dist/service/node-terminal-channel.js +176 -0
  94. package/dist/service/node-terminal-channel.js.map +1 -0
  95. package/dist/service/node-workspace-coordinator.d.ts +32 -0
  96. package/dist/service/node-workspace-coordinator.js +81 -0
  97. package/dist/service/node-workspace-coordinator.js.map +1 -0
  98. package/dist/service/run-attachment-service.d.ts +37 -0
  99. package/dist/service/run-attachment-service.js +161 -0
  100. package/dist/service/run-attachment-service.js.map +1 -0
  101. package/dist/service/run-domain-state.d.ts +4 -0
  102. package/dist/service/run-domain-state.js +5 -0
  103. package/dist/service/run-domain-state.js.map +1 -0
  104. package/dist/service/run-event-service.d.ts +31 -0
  105. package/dist/service/run-event-service.js +103 -0
  106. package/dist/service/run-event-service.js.map +1 -0
  107. package/dist/service/run-workbench-service.d.ts +27 -0
  108. package/dist/service/run-workbench-service.js +114 -0
  109. package/dist/service/run-workbench-service.js.map +1 -0
  110. package/dist/service/runner-channel-message-service.d.ts +13 -0
  111. package/dist/service/runner-channel-message-service.js +21 -0
  112. package/dist/service/runner-channel-message-service.js.map +1 -0
  113. package/dist/service/runner-interaction-service.d.ts +40 -0
  114. package/dist/service/runner-interaction-service.js +245 -0
  115. package/dist/service/runner-interaction-service.js.map +1 -0
  116. package/dist/service/runner-service.d.ts +43 -0
  117. package/dist/service/runner-service.js +55 -0
  118. package/dist/service/runner-service.js.map +1 -0
  119. package/dist/service/session-catalog-service.d.ts +30 -0
  120. package/dist/service/session-catalog-service.js +145 -0
  121. package/dist/service/session-catalog-service.js.map +1 -0
  122. package/dist/service/session-command-service.d.ts +23 -0
  123. package/dist/service/session-command-service.js +70 -0
  124. package/dist/service/session-command-service.js.map +1 -0
  125. package/dist/service/session-context-service.d.ts +34 -0
  126. package/dist/service/session-context-service.js +88 -0
  127. package/dist/service/session-context-service.js.map +1 -0
  128. package/dist/service/session-domain-state.d.ts +8 -0
  129. package/dist/service/session-domain-state.js +9 -0
  130. package/dist/service/session-domain-state.js.map +1 -0
  131. package/dist/service/session-identity-service.d.ts +24 -0
  132. package/dist/service/session-identity-service.js +87 -0
  133. package/dist/service/session-identity-service.js.map +1 -0
  134. package/dist/service/session-lifecycle-service.d.ts +31 -0
  135. package/dist/service/session-lifecycle-service.js +236 -0
  136. package/dist/service/session-lifecycle-service.js.map +1 -0
  137. package/dist/service/session-message-service.d.ts +33 -0
  138. package/dist/service/session-message-service.js +158 -0
  139. package/dist/service/session-message-service.js.map +1 -0
  140. package/dist/service/session-presentation-service.d.ts +33 -0
  141. package/dist/service/session-presentation-service.js +37 -0
  142. package/dist/service/session-presentation-service.js.map +1 -0
  143. package/dist/service/session-query-service.d.ts +31 -0
  144. package/dist/service/session-query-service.js +78 -0
  145. package/dist/service/session-query-service.js.map +1 -0
  146. package/dist/service/terminal-relay-state.d.ts +6 -0
  147. package/dist/service/terminal-relay-state.js +4 -0
  148. package/dist/service/terminal-relay-state.js.map +1 -0
  149. package/dist/service/terminal-service.d.ts +12 -0
  150. package/dist/service/terminal-service.js +53 -0
  151. package/dist/service/terminal-service.js.map +1 -0
  152. package/dist/service/workbench-event-service.d.ts +21 -0
  153. package/dist/service/workbench-event-service.js +54 -0
  154. package/dist/service/workbench-event-service.js.map +1 -0
  155. package/dist/service/workbench-manifest-service.d.ts +88 -0
  156. package/dist/service/workbench-manifest-service.js +69 -0
  157. package/dist/service/workbench-manifest-service.js.map +1 -0
  158. package/dist/service/workspace-change-service.d.ts +9 -0
  159. package/dist/service/workspace-change-service.js +86 -0
  160. package/dist/service/workspace-change-service.js.map +1 -0
  161. package/dist/service/workspace-domain-state.d.ts +75 -0
  162. package/dist/service/workspace-domain-state.js +41 -0
  163. package/dist/service/workspace-domain-state.js.map +1 -0
  164. package/dist/service/workspace-file-service.d.ts +14 -0
  165. package/dist/service/workspace-file-service.js +77 -0
  166. package/dist/service/workspace-file-service.js.map +1 -0
  167. package/dist/service/workspace-queue-workbench-service.d.ts +55 -0
  168. package/dist/service/workspace-queue-workbench-service.js +227 -0
  169. package/dist/service/workspace-queue-workbench-service.js.map +1 -0
  170. package/dist/service/workspace-service.d.ts +15 -0
  171. package/dist/service/workspace-service.js +54 -0
  172. package/dist/service/workspace-service.js.map +1 -0
  173. package/dist/service/workspace-session-service.d.ts +23 -0
  174. package/dist/service/workspace-session-service.js +140 -0
  175. package/dist/service/workspace-session-service.js.map +1 -0
  176. package/dist/service/workspace-upload-service.d.ts +37 -0
  177. package/dist/service/workspace-upload-service.js +241 -0
  178. package/dist/service/workspace-upload-service.js.map +1 -0
  179. package/dist/service/workspace-watch-service.d.ts +18 -0
  180. package/dist/service/workspace-watch-service.js +121 -0
  181. package/dist/service/workspace-watch-service.js.map +1 -0
  182. package/dist/service/workspace-workbench-service.d.ts +38 -0
  183. package/dist/service/workspace-workbench-service.js +156 -0
  184. package/dist/service/workspace-workbench-service.js.map +1 -0
  185. package/dist/terminal.d.ts +1 -0
  186. package/dist/terminal.js +1 -1
  187. package/dist/terminal.js.map +1 -1
  188. package/dist/util/node-operation-parsers.d.ts +91 -0
  189. package/dist/util/node-operation-parsers.js +380 -0
  190. package/dist/util/node-operation-parsers.js.map +1 -0
  191. package/dist/util/runner-native-session-parsers.d.ts +72 -0
  192. package/dist/util/runner-native-session-parsers.js +337 -0
  193. package/dist/util/runner-native-session-parsers.js.map +1 -0
  194. package/dist/util/secret-environment.d.ts +1 -0
  195. package/dist/util/secret-environment.js +26 -0
  196. package/dist/util/secret-environment.js.map +1 -0
  197. package/package.json +2 -2
@@ -1,44 +1,14 @@
1
- import { type NodeCapabilities } from '@myagentroam/protocol';
2
- import { type NodeConfig } from './config.js';
3
- import { FakeRunner, type FakeRunnerStep } from './fake-runner.js';
4
- import { CodexAppServerClient } from './codex-app-server.js';
5
- import { ClaudeAgentSdkAdapter } from './claude-agent-sdk.js';
6
- import { NodeDatabase } from './database.js';
7
- import { TerminalManager } from './terminal.js';
8
- import { RunnerUsageReader } from './runner-usage.js';
1
+ import type { NodeConnectorOptions } from './connector/node-connector-options.js';
2
+ export type { NodeConnectorOptions } from './connector/node-connector-options.js';
3
+ export { nodeConnectEndpoint, validatedCapabilities } from './runner/codex/conversation-parser.js';
9
4
  export declare function nextReconnectDelay(attempt: number): number;
10
- export interface NodeConnectorOptions {
11
- readonly configPath?: string;
12
- readonly config?: NodeConfig;
13
- readonly capabilities?: NodeCapabilities;
14
- /** Test injection only; production probes the local Runner commands. */
15
- readonly capabilityDetector?: () => NodeCapabilities | Promise<NodeCapabilities>;
16
- readonly reconnect?: boolean;
17
- /** Test injection only; production capability reporting remains unchanged. */
18
- readonly fakeRunner?: FakeRunner;
19
- readonly fakeScript?: (input: unknown, runId: string) => readonly FakeRunnerStep[];
20
- readonly codexClient?: CodexAppServerClient;
21
- /** Test injection only; the default uses the official Claude Agent SDK. */
22
- readonly claudeClient?: ClaudeAgentSdkAdapter;
23
- /** Test injection; production opens the SQLite path from NodeConfig. */
24
- readonly database?: NodeDatabase;
25
- /** Test-only override. Production approvals always have a ten-minute expiry. */
26
- readonly claudeApprovalTimeoutMs?: number;
27
- /** Test injection; production uses node-pty/ConPTY through TerminalManager. */
28
- readonly terminalManager?: TerminalManager;
29
- /** Test injection; production reads OAuth credentials only on the local Node. */
30
- readonly runnerUsageReader?: RunnerUsageReader;
31
- }
32
5
  export declare class NodeConnector {
33
- private socket;
34
- private terminalSocket;
35
- private heartbeat;
36
- private capabilityRefreshTimer;
37
- private capabilityRefreshInFlight;
38
- private reconnectTimer;
39
- private terminalReconnectTimer;
40
- private attempts;
41
- private terminalAttempts;
6
+ private readonly controlChannel;
7
+ private readonly controlMessages;
8
+ private readonly nodeRequests;
9
+ private readonly connectionLifecycle;
10
+ /** @internal Existing contract tests inject their socket through this boundary. */
11
+ private set socket(value);
42
12
  private stopped;
43
13
  private config;
44
14
  private readonly capabilitiesProvided;
@@ -47,338 +17,71 @@ export declare class NodeConnector {
47
17
  private readonly configPath;
48
18
  private readonly reconnect;
49
19
  private readonly claudeApprovalTimeoutMs;
50
- private readonly eventBuffer;
51
- /** A global sequence lets one Admin page merge every business callback. */
52
- private workbenchEventSequence;
53
- /** Bounded process-local history used only to bridge a browser reconnect. */
54
- private readonly workbenchEvents;
20
+ private readonly workbenchEventService;
55
21
  private readonly fakeRunner;
56
22
  private readonly fakeScript;
57
- private readonly runSequences;
58
- /** Coalesce token-sized assistant deltas before persisting and relaying them. */
59
- private readonly pendingTextDeltas;
60
- private readonly activeRuns;
61
- private readonly interruptRequestedRuns;
62
- /** Pending turn inputs are memory-only, as are the queue records themselves. */
63
- private readonly queuedRunStarts;
64
- /** Bootstrap IDs never cross HTTP or Workbench event boundaries. */
65
- private readonly bootstrapSessionIds;
66
- private readonly nativeSessionIdentityWaiters;
67
- private readonly nativeSessionStarts;
68
- /** One background Claude control probe per native session; never persisted. */
69
- private readonly pendingClaudeContextReads;
70
- /** A completed probe is kept briefly so the next polling request can render it. */
71
- private readonly completedClaudeContextReads;
72
- /** Session-scoped second-stop windows; sessions in one Workspace are independent. */
73
- private readonly queuePauseWindows;
74
- /** Ephemeral Codex localImage files; never persisted with a Session or Workspace. */
75
- private readonly runAttachmentDirectories;
23
+ private readonly runState;
24
+ private readonly runEventBridge;
25
+ private readonly workspaceCoordinator;
26
+ private readonly sessionState;
27
+ private readonly sessionIdentityService;
28
+ private readonly nativeSessionProjectionService;
29
+ private readonly conversationHistoryService;
30
+ private readonly runnerInteractionService;
31
+ private readonly runnerChannelMessages;
32
+ private readonly managedRunnerSessions;
33
+ private readonly sessionPresentationService;
34
+ private readonly sessionLifecycleService;
35
+ private readonly externalSessionResumeService;
36
+ private readonly sessionMessageService;
37
+ private readonly sessionCatalogService;
38
+ private readonly sessionCommandService;
39
+ private readonly runAttachmentService;
40
+ private readonly terminalChannel;
76
41
  private readonly codexClient;
77
- private readonly codexRuns;
78
- /** App Server turn ID → current-process managed Run; never persisted. */
79
- private readonly managedCodexTurns;
80
- private readonly codexApprovals;
81
- private readonly codexUserInputs;
42
+ private readonly codexRunController;
82
43
  private readonly claudeClient;
83
- private readonly claudeRuns;
84
- /** Native IDs currently associated with a process-local managed Claude session. */
85
- private readonly managedClaudeSessions;
86
- /** Native IDs observed from an SDK-resumed Claude stream, kept process-local. */
87
- private readonly managedClaudeSessionByNativeId;
88
- /** Read-only native discovery cache; never persisted to SQLite. */
89
- private readonly directNativeSessions;
90
- /** Official Codex thread status, refreshed only in process and never persisted. */
91
- private readonly codexExternalActivity;
92
- /** Browser-renewed read-only native-session watches; never persisted. */
93
- private readonly sessionWatches;
94
- /** Maps a direct external projection to its process-local resumed session for message retries. */
95
- private readonly resumedSessionByDirectId;
96
- /** Last rejected explicit takeover reason for an external direct projection. */
97
- private readonly externalResumeFailures;
98
- /** Bounded Runner diagnostic paired with a fixed external resume reason code. */
99
- private readonly externalResumeFailureDetails;
100
- private readonly claudeApprovals;
101
- private readonly claudeUserInputs;
44
+ private readonly claudeRunController;
45
+ private readonly runners;
46
+ private readonly sessionContextService;
47
+ private readonly runWorkbenchService;
48
+ private readonly sessionQueryService;
49
+ private readonly workspaceQueueWorkbenchService;
50
+ private readonly operationRouter;
51
+ private readonly runnerService;
52
+ private readonly workbenchManifestService;
53
+ private readonly terminalService;
54
+ private readonly workspaceService;
102
55
  private readonly commandStates;
103
56
  private readonly runnerUsageReader;
104
- private codexFastEnabled;
105
57
  private readonly terminalManager;
106
- private readonly terminalAttachments;
107
- /** Uploads are process-local like runs; Node restart intentionally cancels them. */
108
- private readonly workspaceUploads;
109
- /** Completed Composer files are process-local references, never SQLite state. */
110
- private readonly composerAttachments;
111
- /** Identical refreshes share one Git scan; separate Workspaces use bounded parallelism. */
112
- private readonly workspaceChangesReads;
113
- private readonly workspaceChangesCache;
114
- private readonly workspaceChangesVersions;
115
- private readonly workspaceFileIndexes;
116
- /** Tab-scoped Workspace observation leases; no state survives a Node restart. */
117
- private readonly workspaceWatches;
118
- private readonly workspaceWatchRevisions;
119
- private readonly workspaceSessionWatchTimers;
120
- private readonly workspaceSessionWatchSignatures;
121
- private readonly workspaceSessionWatchReads;
122
- /** Runner-native session discovery is expensive; cache only its short-lived baseline. */
123
- private readonly workspaceSessionCache;
124
- private readonly workspaceSessionCacheReads;
125
- private readonly workspaceChangesLimiter;
58
+ private readonly workspaceState;
59
+ private readonly workspaceWatchService;
60
+ private readonly workspaceSessionService;
61
+ private readonly workspaceFileService;
62
+ private readonly workspaceUploadService;
63
+ private readonly workspaceChangeService;
64
+ private readonly workspaceWorkbenchService;
126
65
  private database;
127
66
  /** Runtime/session state is intentionally not persisted to Node SQLite. */
128
67
  private readonly runtime;
129
68
  private readonly metrics;
69
+ private readonly runEventService;
70
+ private readonly nativeSessionWatchService;
130
71
  constructor(options?: NodeConnectorOptions);
131
72
  start(): Promise<void>;
132
73
  stop(): void;
133
- private startCapabilityRefresh;
134
- private refreshCapabilities;
135
- private connect;
136
- private scheduleReconnect;
137
- /**
138
- * Terminal bytes never share the control socket. This connection has a
139
- * deliberately tiny local envelope and can only authenticate, bind an
140
- * attachment already authorized on the control channel, or carry terminal
141
- * frames for that binding.
142
- */
143
- private connectTerminal;
144
- private scheduleTerminalReconnect;
145
- private handleTerminalMessage;
146
- private publishTerminalFrame;
147
- private sendTerminalFrame;
148
- private sendTerminal;
149
- private handleMessage;
150
- private connected;
151
- /** Executes only the closed Admin-facing operation set forwarded by Server. */
152
- private handleNodeRequest;
74
+ /** @internal Thin compatibility delegates; all behavior remains in the extracted services. */
75
+ private readonly handleMessage;
76
+ private readonly emitRunEvent;
77
+ private readonly emitConversationItem;
78
+ private readonly emitWorkbenchEvent;
79
+ private readonly discoverWorkspaceSessions;
80
+ private readonly invalidateWorkspaceWatchTopics;
81
+ private readonly reconcilePersistedRuns;
82
+ private readonly startCapabilityRefresh;
83
+ private readonly refreshCapabilities;
153
84
  private executeNodeOperation;
154
- private requireWorkspace;
155
- private parseWorkspaceWatchTopics;
156
- private workspaceWatchKey;
157
- private workspaceWatchSessionHash;
158
- private createWorkspaceWatch;
159
- private renewWorkspaceWatch;
160
- private removeWorkspaceWatch;
161
- private clearWorkspaceWatches;
162
- private ensureWorkspaceSessionWatch;
163
- private stopWorkspaceSessionWatch;
164
- private cachedWorkspaceSessions;
165
- private refreshWorkspaceSessionWatch;
166
- private performWorkspaceSessionWatchRefresh;
167
- private workspaceWatchTopicActive;
168
- private invalidateWorkspaceWatchTopics;
169
- private invalidateWorkspaceChanges;
170
- private listFilesForWorkspace;
171
- private readFileForWorkspace;
172
- private searchFilesForWorkspace;
173
- private workspaceFileIndex;
174
- private preflightWorkspaceUploads;
175
- private createWorkspaceUpload;
176
- private writeWorkspaceUploadChunk;
177
- private workspaceUploadStatus;
178
- private completeWorkspaceUpload;
179
- private cancelWorkspaceUpload;
180
- private requireWorkspaceUpload;
181
- private removeWorkspaceUpload;
182
- private composerAttachmentTarget;
183
- private resolveComposerAttachments;
184
- private currentChangesForWorkspace;
185
- private persistTerminalSession;
186
- /**
187
- * Discovers only the Codex sources that App Server itself identifies as CLI
188
- * or VS Code. Discovery reads native history but never copies it into MAR's
189
- * message table and never grants write control.
190
- */
191
- private discoverCodexSessions;
192
- private directClaudeSessions;
193
- private listDirectNativeSessions;
194
- private discoverWorkspaceSessions;
195
- private resolveDirectNativeSession;
196
- /**
197
- * A rename is Node-local metadata, so an external transcript receives a
198
- * process-local projection without resuming or taking control of its Runner.
199
- */
200
- private createMetadataProjection;
201
- /**
202
- * Native Runner history does not reliably expose the Composer settings that
203
- * should govern MAR's next Turn. A resumed projection therefore keeps an
204
- * already-valid local choice, otherwise takes this Runner's saved Node
205
- * default. Defaults never cross Runner boundaries.
206
- */
207
- private resumedSessionConfiguration;
208
- private ensureResumedSessionConfiguration;
209
- private rememberDirectNativeSessions;
210
- /** Returns exact native IDs of a managed Session, including verified Claude aliases only. */
211
- private nativeSessionIdsForProjection;
212
- /** Clears only projections proven to represent the just-deleted native transcripts. */
213
- private forgetNativeSessionProjection;
214
- private readDirectNativeHistory;
215
- private readConversationHistoryPage;
216
- private conversationHistoryPage;
217
- private readOfficialCodexConversation;
218
- private managedCodexTurn;
219
- private refreshCodexExternalActivity;
220
- private watchNativeSession;
221
- private renewNativeSessionWatch;
222
- private stopNativeSessionWatch;
223
- private refreshWatchedSession;
224
- private performWatchedSessionRefresh;
225
- /**
226
- * Resumes only an externally idle Codex thread. The final official read is
227
- * intentionally adjacent to resume so an external active turn can never be
228
- * raced into a MAR-controlled message.
229
- */
230
- private resumeExternalCodexSession;
231
- /**
232
- * Claude's SDK has no cross-process activity status. A visible CLI history
233
- * is therefore resumable on first message, but only after `sessionInfo`
234
- * verifies the exact native ID and cwd. The map makes retries idempotently
235
- * target the same process-local managed projection.
236
- */
237
- private resumeExternalClaudeSession;
238
- private clearExternalResumeFailure;
239
- private setExternalResumeFailure;
240
- private externalResumeFailure;
241
- private resolveSessionForMessage;
242
- private directNativeSession;
243
- /** A pending Codex rename shields the UI from stale discovery until Runner confirms it. */
244
- private nativeSessionRunnerTitle;
245
- /** Runner-specific title persistence: Codex owns its thread name; Claude metadata is Node-local. */
246
- private renameRunnerSession;
247
- /**
248
- * External sessions are followed from their append-only local transcript.
249
- * A managed active Run is intentionally excluded: its durable projection is
250
- * fed by the Runner event stream and is therefore the live authority.
251
- */
252
- private hasManagedActiveRun;
253
- private syncExternalTranscript;
254
- private startFakeRun;
255
- private startCodexRun;
256
- private startClaudeRun;
257
- private deliverClaudeChannelMessage;
258
- /**
259
- * `STEERED` means that the SDK AsyncIterable consumed the message, rather
260
- * than merely accepting it into a Node-side queue. Reusing a client message
261
- * ID is idempotent and never writes a second input to Claude.
262
- */
263
- private deliverClaudeChannel;
264
- private cancelCodexTurn;
265
- private respondCodexUserInput;
266
- private respondUserInput;
267
- /** Returns true when cancellation already made this Run terminal. */
268
- private completeCancelledRun;
269
- private presentSession;
270
- /**
271
- * Discovery always keeps the native record in the local cache so a stale
272
- * direct ID remains readable, but the response must not reintroduce it in
273
- * the Workbench once this process has already resumed that native session.
274
- */
275
- private presentDiscoveredSessions;
276
- /**
277
- * Claude can report a native session ID distinct from the ID used to start
278
- * a verified resume. Keep that observed ID as a process-local alias of the
279
- * same managed projection, without treating a `conversation_reset` ID as
280
- * an alias.
281
- */
282
- private rememberManagedClaudeNativeSession;
283
- /**
284
- * Refresh the title once this Claude Session's own turn has flushed its
285
- * native transcript. `externalSessionId` originates from that managed
286
- * stream, never from a title-based discovery match.
287
- */
288
- private syncManagedClaudeRunnerTitle;
289
- /**
290
- * Resolves a native discovery record only to its exact managed projection:
291
- * same runner, same Workspace and same native Session ID. Claude's only
292
- * exception is a Session ID observed from that managed SDK resume stream.
293
- * A title is never an identity or matching input.
294
- */
295
- private managedSessionForNativeRecord;
296
- /**
297
- * A custom-title projection can be external, but must still match the same
298
- * native identity so session polling neither restores the old title nor
299
- * inserts a duplicate direct record.
300
- */
301
- private sessionProjectionForNativeRecord;
302
- private isManagedProjectionForNativeRecord;
303
- /**
304
- * Context occupancy is an observed Runner fact. Codex persists its latest
305
- * prompt/window pair in the native transcript; Claude exposes it through
306
- * the official SDK control channel. Neither path estimates tokens in MAR.
307
- */
308
- private readSessionContextUsage;
309
- private probeClaudeContextUsage;
310
- /** Executes only Node-declared interactions; the browser never supplies behavior. */
311
- private executeRunnerCommand;
312
- /** Claude `/compact` is a native SDK command, represented as a Run but never as a user bubble. */
313
- private startClaudeCompaction;
314
- /** Compaction is an App Server Turn, so keep a normal Run lifecycle for the Web spinner. */
315
- private startCodexCompaction;
316
- private runnerProfiles;
317
- private workbenchManifest;
318
- private resumeDelivery;
319
- private requestClaudeApproval;
320
- private requestClaudeUserInput;
321
- /**
322
- * An approval is an individual Runner callback. Keep its exact payload in
323
- * the process-local snapshot and emit a Run event so an already open
324
- * Workbench refreshes immediately instead of waiting for a page reload.
325
- */
326
- private publishApprovalRequest;
327
- private emitRunEvent;
328
- private enqueueTextDelta;
329
- private flushTextDelta;
330
- private emitRunEventNow;
331
- /**
332
- * Browser callbacks are multiplexed on one Admin Workbench connection. The
333
- * Server adds the Node identity and never interprets this business payload.
334
- */
335
- private emitWorkbenchEvent;
336
- private workbenchPayloadSessionId;
337
- private emitWorkspaceQueue;
338
- /** Promote every Connector-owned Session key together with Runtime state. */
339
- private promoteManagedSessionIdentity;
340
- private waitForNativeSessionIdentity;
341
- private rejectBootstrapSessionIdentity;
342
- /**
343
- * Shared replacement primitive for Ctrl+Enter and queue "execute now".
344
- * The queued Run remains authoritative until the interrupted Run emits its
345
- * terminal event and releases the Session lease.
346
- */
347
- private replaceCurrentRunWithQueued;
348
- private dispatchSessionQueue;
349
- /** Let the operation response leave the Node before Runner callbacks can close or flood the socket. */
350
- private scheduleSessionQueueDispatch;
351
- private presentWorkspaceQueue;
352
- private openQueuePauseWindow;
353
- private clearQueuePauseWindow;
354
- private materializeCodexAttachments;
355
- /**
356
- * Non-image Composer files are intentionally Workspace-visible so both
357
- * runners can read the exact bytes with their normal file tools. Unlike
358
- * Codex localImage files, these are not deleted on Run completion.
359
- */
360
- private persistNonImageAttachments;
361
- private cleanupRunAttachments;
362
- /** Image bytes never enter conversation history. Keep them Node-local for one hour after Run end. */
363
- private readonly runImageCache;
364
- private cacheRunImages;
365
- private readRunImage;
366
- private expireRunImageCacheAfterTtl;
367
- private clearRunImageCache;
368
- /**
369
- * Only send a bounded, user-readable projection. Raw SDK/JSON-RPC records
370
- * and hidden reasoning must never cross this boundary into the Workbench.
371
- */
372
- private emitConversationItem;
373
- private handleCodexNotification;
374
- private reconcileRuns;
375
- /** A process restart cannot safely reattach a native in-flight SDK stream. */
376
- private reconcilePersistedRuns;
377
- private inspectWorkspace;
378
- private captureRunSnapshot;
379
85
  private send;
380
86
  private sendEnvelope;
381
87
  }
382
- export declare function validatedCapabilities(value: unknown): NodeCapabilities;
383
- export declare function nodeConnectEndpoint(serverUrl: string): string;
384
- export declare function nodeTerminalConnectEndpoint(serverUrl: string): string;