agent-relay 1.2.3 → 1.3.0

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 (200) hide show
  1. package/.trajectories/agent-relay-322-324.md +17 -0
  2. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.json +49 -0
  3. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.md +31 -0
  4. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.json +125 -0
  5. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.md +62 -0
  6. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.json +49 -0
  7. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.md +31 -0
  8. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.json +77 -0
  9. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.md +42 -0
  10. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.json +77 -0
  11. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.md +42 -0
  12. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.json +77 -0
  13. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.md +42 -0
  14. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.json +66 -0
  15. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.md +36 -0
  16. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.json +40 -0
  17. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.md +22 -0
  18. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.json +121 -0
  19. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.md +29 -0
  20. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.json +53 -0
  21. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.md +32 -0
  22. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.json +101 -0
  23. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.md +52 -0
  24. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.json +49 -0
  25. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.md +31 -0
  26. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.json +65 -0
  27. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.md +37 -0
  28. package/.trajectories/completed/2026-01/traj_lq450ly148uw.json +49 -0
  29. package/.trajectories/completed/2026-01/traj_lq450ly148uw.md +31 -0
  30. package/.trajectories/completed/2026-01/traj_multi_server_arch.md +101 -0
  31. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.json +27 -0
  32. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.md +14 -0
  33. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.json +53 -0
  34. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.md +32 -0
  35. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.json +186 -0
  36. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.md +86 -0
  37. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.json +77 -0
  38. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.md +42 -0
  39. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.json +89 -0
  40. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.md +47 -0
  41. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.json +65 -0
  42. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.md +37 -0
  43. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.json +49 -0
  44. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.md +31 -0
  45. package/.trajectories/consolidate-settings-panel.md +24 -0
  46. package/.trajectories/gh-cli-user-token.md +26 -0
  47. package/.trajectories/index.json +155 -1
  48. package/deploy/workspace/codex.config.toml +15 -0
  49. package/deploy/workspace/entrypoint.sh +167 -7
  50. package/deploy/workspace/git-credential-relay +17 -2
  51. package/dist/bridge/spawner.d.ts +7 -0
  52. package/dist/bridge/spawner.js +40 -9
  53. package/dist/bridge/types.d.ts +2 -0
  54. package/dist/cli/index.js +210 -168
  55. package/dist/cloud/api/admin.d.ts +8 -0
  56. package/dist/cloud/api/admin.js +212 -0
  57. package/dist/cloud/api/auth.js +8 -0
  58. package/dist/cloud/api/billing.d.ts +0 -10
  59. package/dist/cloud/api/billing.js +248 -58
  60. package/dist/cloud/api/codex-auth-helper.d.ts +10 -4
  61. package/dist/cloud/api/codex-auth-helper.js +215 -8
  62. package/dist/cloud/api/coordinators.js +402 -0
  63. package/dist/cloud/api/daemons.js +15 -11
  64. package/dist/cloud/api/git.js +104 -17
  65. package/dist/cloud/api/github-app.js +42 -8
  66. package/dist/cloud/api/nango-auth.js +297 -16
  67. package/dist/cloud/api/onboarding.js +97 -33
  68. package/dist/cloud/api/providers.js +12 -16
  69. package/dist/cloud/api/repos.js +200 -124
  70. package/dist/cloud/api/test-helpers.js +40 -0
  71. package/dist/cloud/api/usage.js +13 -0
  72. package/dist/cloud/api/webhooks.js +1 -1
  73. package/dist/cloud/api/workspaces.d.ts +18 -0
  74. package/dist/cloud/api/workspaces.js +945 -15
  75. package/dist/cloud/config.d.ts +8 -0
  76. package/dist/cloud/config.js +15 -0
  77. package/dist/cloud/db/drizzle.d.ts +5 -2
  78. package/dist/cloud/db/drizzle.js +27 -20
  79. package/dist/cloud/db/schema.d.ts +19 -51
  80. package/dist/cloud/db/schema.js +5 -4
  81. package/dist/cloud/index.d.ts +0 -1
  82. package/dist/cloud/index.js +0 -1
  83. package/dist/cloud/provisioner/index.d.ts +93 -1
  84. package/dist/cloud/provisioner/index.js +608 -63
  85. package/dist/cloud/server.js +156 -16
  86. package/dist/cloud/services/compute-enforcement.d.ts +57 -0
  87. package/dist/cloud/services/compute-enforcement.js +175 -0
  88. package/dist/cloud/services/index.d.ts +2 -0
  89. package/dist/cloud/services/index.js +4 -0
  90. package/dist/cloud/services/intro-expiration.d.ts +55 -0
  91. package/dist/cloud/services/intro-expiration.js +211 -0
  92. package/dist/cloud/services/nango.d.ts +14 -0
  93. package/dist/cloud/services/nango.js +74 -14
  94. package/dist/cloud/services/ssh-security.d.ts +31 -0
  95. package/dist/cloud/services/ssh-security.js +63 -0
  96. package/dist/continuity/manager.d.ts +5 -0
  97. package/dist/continuity/manager.js +56 -2
  98. package/dist/daemon/api.d.ts +2 -0
  99. package/dist/daemon/api.js +214 -5
  100. package/dist/daemon/cli-auth.d.ts +13 -1
  101. package/dist/daemon/cli-auth.js +166 -47
  102. package/dist/daemon/connection.d.ts +7 -1
  103. package/dist/daemon/connection.js +15 -0
  104. package/dist/daemon/orchestrator.d.ts +2 -0
  105. package/dist/daemon/orchestrator.js +26 -0
  106. package/dist/daemon/repo-manager.d.ts +116 -0
  107. package/dist/daemon/repo-manager.js +384 -0
  108. package/dist/daemon/router.d.ts +60 -1
  109. package/dist/daemon/router.js +281 -20
  110. package/dist/daemon/user-directory.d.ts +111 -0
  111. package/dist/daemon/user-directory.js +233 -0
  112. package/dist/dashboard/out/404.html +1 -1
  113. package/dist/dashboard/out/_next/static/T1tgCqVWHFIkV7ClEtzD7/_ssgManifest.js +1 -0
  114. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +9 -0
  115. package/dist/dashboard/out/_next/static/chunks/766-b54f0853794b78c3.js +1 -0
  116. package/dist/dashboard/out/_next/static/chunks/83-b51836037078006c.js +1 -0
  117. package/dist/dashboard/out/_next/static/chunks/891-6cd50de1224f70bb.js +1 -0
  118. package/dist/dashboard/out/_next/static/chunks/899-bb19a9b3d9b39ea6.js +1 -0
  119. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-8939b0fc700f7eca.js +1 -0
  120. package/dist/dashboard/out/_next/static/chunks/app/app/page-5af1b6b439858aa6.js +1 -0
  121. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-f45ecbc3e06134fc.js +1 -0
  122. package/dist/dashboard/out/_next/static/chunks/app/history/{page-abb9ab2d329f56e9.js → page-8c8bed33beb2bf1c.js} +1 -1
  123. package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +1 -0
  124. package/dist/dashboard/out/_next/static/chunks/app/login/{page-c22d080201cbd9fb.js → page-16f3b49e55b1e0ed.js} +1 -1
  125. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-ac39dc0cc3c26fa7.js +1 -0
  126. package/dist/dashboard/out/_next/static/chunks/app/{page-77e9c65420a06cfb.js → page-4a5938c18a11a654.js} +1 -1
  127. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-982a7000fee44014.js +1 -0
  128. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ac3a6ac433fd6001.js +1 -0
  129. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-09f9caae98a18c09.js +1 -0
  130. package/dist/dashboard/out/_next/static/chunks/app/signup/{page-68d34f50baa8ab6b.js → page-547dd0ca55ecd0ba.js} +1 -1
  131. package/dist/dashboard/out/_next/static/chunks/{main-ed4e1fb6f29c34cf.js → main-2ee6beb2ae96d210.js} +1 -1
  132. package/dist/dashboard/out/_next/static/chunks/{main-app-6e8e8d3ef4e0192a.js → main-app-5d692157a8eb1fd9.js} +1 -1
  133. package/dist/dashboard/out/_next/static/css/85d2af9c7ac74d62.css +1 -0
  134. package/dist/dashboard/out/_next/static/css/fe4b28883eeff359.css +1 -0
  135. package/dist/dashboard/out/app/onboarding.html +1 -1
  136. package/dist/dashboard/out/app/onboarding.txt +3 -3
  137. package/dist/dashboard/out/app.html +1 -1
  138. package/dist/dashboard/out/app.txt +3 -3
  139. package/dist/dashboard/out/apple-icon.png +0 -0
  140. package/dist/dashboard/out/connect-repos.html +1 -1
  141. package/dist/dashboard/out/connect-repos.txt +3 -3
  142. package/dist/dashboard/out/history.html +1 -1
  143. package/dist/dashboard/out/history.txt +3 -3
  144. package/dist/dashboard/out/index.html +1 -1
  145. package/dist/dashboard/out/index.txt +3 -3
  146. package/dist/dashboard/out/login.html +2 -2
  147. package/dist/dashboard/out/login.txt +3 -3
  148. package/dist/dashboard/out/metrics.html +1 -1
  149. package/dist/dashboard/out/metrics.txt +3 -3
  150. package/dist/dashboard/out/pricing.html +2 -2
  151. package/dist/dashboard/out/pricing.txt +3 -3
  152. package/dist/dashboard/out/providers/setup/claude.html +1 -0
  153. package/dist/dashboard/out/providers/setup/claude.txt +8 -0
  154. package/dist/dashboard/out/providers/setup/codex.html +1 -0
  155. package/dist/dashboard/out/providers/setup/codex.txt +8 -0
  156. package/dist/dashboard/out/providers.html +1 -1
  157. package/dist/dashboard/out/providers.txt +3 -3
  158. package/dist/dashboard/out/signup.html +2 -2
  159. package/dist/dashboard/out/signup.txt +3 -3
  160. package/dist/dashboard-server/server.js +316 -12
  161. package/dist/dashboard-server/user-bridge.d.ts +103 -0
  162. package/dist/dashboard-server/user-bridge.js +189 -0
  163. package/dist/protocol/channels.d.ts +205 -0
  164. package/dist/protocol/channels.js +154 -0
  165. package/dist/protocol/types.d.ts +13 -1
  166. package/dist/resiliency/provider-context.js +2 -0
  167. package/dist/shared/cli-auth-config.d.ts +19 -0
  168. package/dist/shared/cli-auth-config.js +58 -2
  169. package/dist/utils/agent-config.js +1 -1
  170. package/dist/wrapper/auth-detection.d.ts +49 -0
  171. package/dist/wrapper/auth-detection.js +192 -0
  172. package/dist/wrapper/base-wrapper.d.ts +153 -0
  173. package/dist/wrapper/base-wrapper.js +393 -0
  174. package/dist/wrapper/client.d.ts +7 -1
  175. package/dist/wrapper/client.js +3 -0
  176. package/dist/wrapper/index.d.ts +1 -0
  177. package/dist/wrapper/index.js +4 -3
  178. package/dist/wrapper/pty-wrapper.d.ts +62 -84
  179. package/dist/wrapper/pty-wrapper.js +154 -180
  180. package/dist/wrapper/tmux-wrapper.d.ts +41 -66
  181. package/dist/wrapper/tmux-wrapper.js +90 -134
  182. package/package.json +4 -2
  183. package/scripts/postinstall.js +11 -155
  184. package/scripts/test-interactive-terminal.sh +248 -0
  185. package/dist/cloud/vault/index.d.ts +0 -76
  186. package/dist/cloud/vault/index.js +0 -219
  187. package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +0 -1
  188. package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +0 -9
  189. package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +0 -1
  190. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +0 -1
  191. package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +0 -1
  192. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +0 -1
  193. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +0 -1
  194. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +0 -1
  195. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +0 -1
  196. package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +0 -1
  197. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +0 -1
  198. package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +0 -1
  199. package/dist/dashboard/out/_next/static/wPgKJtcOmTFLpUncDg16A/_ssgManifest.js +0 -1
  200. /package/dist/dashboard/out/_next/static/{wPgKJtcOmTFLpUncDg16A → T1tgCqVWHFIkV7ClEtzD7}/_buildManifest.js +0 -0
@@ -4,49 +4,31 @@
4
4
  * Unlike TmuxWrapper which provides interactive terminal access,
5
5
  * PtyWrapper runs agents headlessly with output capture for logs.
6
6
  * Used for spawned workers that don't need direct user interaction.
7
+ *
8
+ * Extends BaseWrapper for shared message handling, spawn/release,
9
+ * and continuity integration.
7
10
  */
8
- import { EventEmitter } from 'node:events';
9
- import type { ParsedSummary, SessionEndMarker } from './parser.js';
10
- import type { SpeakOnTrigger } from '../protocol/types.js';
11
+ import { BaseWrapper, type BaseWrapperConfig } from './base-wrapper.js';
12
+ import type { ParsedCommand, ParsedSummary, SessionEndMarker } from './parser.js';
13
+ import type { SendPayload, SendMeta } from '../protocol/types.js';
11
14
  import { type LifecycleHooks } from '../hooks/index.js';
12
- import { type InjectionMetrics, type CliType } from './shared.js';
13
- export interface PtyWrapperConfig {
14
- name: string;
15
- command: string;
16
- args?: string[];
17
- socketPath?: string;
18
- cwd?: string;
19
- env?: Record<string, string>;
20
- /** Relay prefix pattern (default: '->relay:') */
21
- relayPrefix?: string;
22
- /** CLI type for special handling (auto-detected from command if not set) */
23
- cliType?: CliType;
15
+ /**
16
+ * PtyWrapper-specific configuration.
17
+ * Extends BaseWrapperConfig with PTY-specific options.
18
+ */
19
+ export interface PtyWrapperConfig extends BaseWrapperConfig {
24
20
  /** Directory to write log files (optional) */
25
21
  logsDir?: string;
26
- /** Dashboard port for spawn/release API calls (enables nested spawning from spawned agents) */
27
- dashboardPort?: number;
28
22
  /** Allow this agent to spawn other agents (default: true for Lead, false for spawned workers) */
29
23
  allowSpawn?: boolean;
30
- /** Callback for spawn commands (fallback if dashboardPort not set) */
31
- onSpawn?: (name: string, cli: string, task: string) => Promise<void>;
32
- /** Callback for release commands (fallback if dashboardPort not set) */
33
- onRelease?: (name: string) => Promise<void>;
34
24
  /** Callback when agent exits */
35
25
  onExit?: (code: number) => void;
36
- /** Primary agent to shadow (if this agent is a shadow) */
37
- shadowOf?: string;
38
- /** When the shadow should speak (default: ['EXPLICIT_ASK']) */
39
- shadowSpeakOn?: SpeakOnTrigger[];
40
- /** Stream output to daemon for dashboard log viewing (default: true) */
41
- streamLogs?: boolean;
42
- /** Task/role description for trajectory tracking */
43
- task?: string;
44
26
  /** Custom lifecycle hooks */
45
27
  hooks?: LifecycleHooks;
46
28
  /** Enable trajectory tracking hooks (default: true if task provided) */
47
29
  trajectoryTracking?: boolean;
48
- /** Resume from a previous agent ID (for crash recovery) */
49
- resumeAgentId?: string;
30
+ /** Interactive mode - disables auto-accept of permission prompts (for auth setup flows) */
31
+ interactive?: boolean;
50
32
  /**
51
33
  * Summary reminder configuration. Set to false to disable.
52
34
  * Default: { intervalMinutes: 15, minOutputs: 50 }
@@ -71,6 +53,12 @@ export interface SessionEndEvent {
71
53
  agentName: string;
72
54
  marker: SessionEndMarker;
73
55
  }
56
+ export interface AuthRevokedEvent {
57
+ agentName: string;
58
+ provider: string;
59
+ message?: string;
60
+ confidence: 'high' | 'medium' | 'low';
61
+ }
74
62
  export interface PtyWrapperEvents {
75
63
  output: (data: string) => void;
76
64
  exit: (code: number) => void;
@@ -80,41 +68,25 @@ export interface PtyWrapperEvents {
80
68
  'summary': (event: SummaryEvent) => void;
81
69
  /** Emitted when agent outputs a [[SESSION_END]] block. Cloud services can handle session closure. */
82
70
  'session-end': (event: SessionEndEvent) => void;
71
+ /** Emitted when auth revocation is detected. Cloud services can handle re-auth flow. */
72
+ 'auth_revoked': (event: AuthRevokedEvent) => void;
83
73
  }
84
- export declare class PtyWrapper extends EventEmitter {
85
- private config;
74
+ export declare class PtyWrapper extends BaseWrapper {
75
+ protected config: PtyWrapperConfig;
86
76
  private ptyProcess?;
87
- private client;
88
- private running;
89
77
  private outputBuffer;
90
78
  private rawBuffer;
91
- private relayPrefix;
92
- private cliType;
93
- private sentMessageHashes;
94
- private receivedMessageIds;
95
- private processedSpawnCommands;
96
- private processedReleaseCommands;
97
- private pendingFencedSpawn;
98
- private messageQueue;
99
- private isInjecting;
100
79
  private readyForMessages;
101
80
  private lastOutputTime;
102
- private injectionMetrics;
103
81
  private logFilePath?;
104
82
  private logStream?;
105
83
  private acceptedPrompts;
106
84
  private hookRegistry;
107
85
  private sessionStartTime;
108
- private continuity?;
109
- private agentId?;
110
- private processedContinuityCommands;
111
- private lastSummaryRawContent;
112
- private sessionEndProcessed;
113
86
  private inThinkingBlock;
114
87
  private lastSummaryTime;
115
88
  private outputsSinceSummary;
116
89
  private detectedTask?;
117
- private sessionEndData?;
118
90
  private instructionsInjected;
119
91
  private continuityInjected;
120
92
  private recentLogChunks;
@@ -122,19 +94,24 @@ export declare class PtyWrapper extends EventEmitter {
122
94
  private static readonly LOG_DEDUP_MAX_SIZE;
123
95
  private lastParsedLength;
124
96
  private lastContinuityParsedLength;
97
+ private authRevoked;
98
+ private lastAuthCheck;
99
+ private readonly AUTH_CHECK_INTERVAL;
125
100
  constructor(config: PtyWrapperConfig);
126
101
  /**
127
- * Start the agent process
102
+ * Inject content into the PTY process.
103
+ * Used by BaseWrapper for message injection.
128
104
  */
129
- start(): Promise<void>;
105
+ protected performInjection(content: string): Promise<void>;
130
106
  /**
131
- * Initialize agent ID for continuity/resume functionality
107
+ * Get cleaned output buffer for command parsing.
108
+ * Strips ANSI codes and returns raw buffer content.
132
109
  */
133
- private initializeAgentId;
110
+ protected getCleanOutput(): string;
134
111
  /**
135
- * Get the current agent ID
112
+ * Start the agent process
136
113
  */
137
- getAgentId(): string | undefined;
114
+ start(): Promise<void>;
138
115
  /**
139
116
  * Inject continuity context from previous session.
140
117
  * Called after agent ID initialization to restore state from ledger.
@@ -150,7 +127,11 @@ export declare class PtyWrapper extends EventEmitter {
150
127
  * ->continuity:uncertain "..." - Mark item as uncertain
151
128
  * ->continuity:handoff <<<...>>> - Create explicit handoff
152
129
  */
153
- private parseContinuityCommands;
130
+ /**
131
+ * Parse continuity commands from output.
132
+ * Overrides BaseWrapper to use client.sendMessage instead of queuing.
133
+ */
134
+ protected parseContinuityCommands(content: string): Promise<void>;
154
135
  /**
155
136
  * Handle output from the process
156
137
  */
@@ -214,9 +195,10 @@ export declare class PtyWrapper extends EventEmitter {
214
195
  */
215
196
  private parseSingleLineMessages;
216
197
  /**
217
- * Send relay command to daemon
198
+ * Send relay command to daemon.
199
+ * Extends BaseWrapper to add PTY-specific logging and hook dispatch.
218
200
  */
219
- private sendRelayCommand;
201
+ protected sendRelayCommand(cmd: ParsedCommand): void;
220
202
  /** Valid CLI types for spawn commands */
221
203
  private static readonly VALID_CLI_TYPES;
222
204
  /** Validate agent name format (PascalCase, alphanumeric, 2-30 chars) */
@@ -237,21 +219,25 @@ export declare class PtyWrapper extends EventEmitter {
237
219
  * - Command must be at start of line (after whitespace)
238
220
  * - Agent name must be PascalCase (e.g., Backend, Frontend, Worker1)
239
221
  * - CLI must be a known type (claude, codex, gemini, etc.)
222
+ *
223
+ * Overrides BaseWrapper to add PTY-specific validation and logging.
240
224
  */
241
- private parseSpawnReleaseCommands;
225
+ protected parseSpawnReleaseCommands(content: string): void;
242
226
  /**
243
- * Execute spawn via API or callback
227
+ * Execute spawn via API or callback.
228
+ * Overrides BaseWrapper to add PTY-specific logging and API path.
244
229
  */
245
- private executeSpawn;
230
+ protected executeSpawn(name: string, cli: string, task: string): Promise<void>;
246
231
  /**
247
- * Execute release via API or callback
232
+ * Execute release via API or callback.
233
+ * Overrides BaseWrapper to add PTY-specific logging and API path.
248
234
  */
249
- private executeRelease;
235
+ protected executeRelease(name: string): Promise<void>;
250
236
  /**
251
- * Handle incoming message from relay
252
- * @param originalTo - The original 'to' field from sender. '*' indicates this was a broadcast message.
237
+ * Handle incoming message from relay.
238
+ * Extends BaseWrapper to add PTY-specific behavior.
253
239
  */
254
- private handleIncomingMessage;
240
+ protected handleIncomingMessage(from: string, payload: SendPayload, messageId: string, meta?: SendMeta, originalTo?: string): void;
255
241
  /**
256
242
  * Wait for output to stabilize before injection.
257
243
  * Returns true if output has been stable for the required duration.
@@ -303,8 +289,6 @@ export declare class PtyWrapper extends EventEmitter {
303
289
  * Close the log file stream
304
290
  */
305
291
  private closeLogStream;
306
- get isRunning(): boolean;
307
- get name(): string;
308
292
  get pid(): number | undefined;
309
293
  get logPath(): string | undefined;
310
294
  /**
@@ -318,11 +302,6 @@ export declare class PtyWrapper extends EventEmitter {
318
302
  * Also updates the local continuity ledger for session recovery.
319
303
  */
320
304
  private checkForSummaryAndEmit;
321
- /**
322
- * Save a parsed summary to the continuity ledger.
323
- * Maps summary fields to ledger fields for session recovery.
324
- */
325
- private saveSummaryToLedger;
326
305
  /**
327
306
  * Check for [[SESSION_END]] blocks and emit 'session-end' event.
328
307
  * Allows cloud services to handle session closure without hardcoding storage.
@@ -330,19 +309,18 @@ export declare class PtyWrapper extends EventEmitter {
330
309
  */
331
310
  private checkForSessionEndAndEmit;
332
311
  /**
333
- * Reset session-specific state for wrapper reuse.
334
- * Call this when starting a new session with the same wrapper instance.
312
+ * Check for auth revocation patterns in output.
313
+ * Detects when the CLI's OAuth session has been revoked (e.g., user logged in elsewhere).
314
+ * Emits 'auth_revoked' event and sends notification to relay daemon.
335
315
  */
336
- resetSessionState(): void;
316
+ private checkAuthRevocation;
337
317
  /**
338
- * Get injection reliability metrics
318
+ * Reset auth state (e.g., after re-authentication)
339
319
  */
340
- getInjectionMetrics(): InjectionMetrics & {
341
- successRate: number;
342
- };
320
+ resetAuthState(): void;
343
321
  /**
344
- * Get count of pending messages in queue
322
+ * Check if auth has been revoked
345
323
  */
346
- get pendingMessageCount(): number;
324
+ isAuthRevoked(): boolean;
347
325
  }
348
326
  //# sourceMappingURL=pty-wrapper.d.ts.map