@agent-relay/wrapper 0.1.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.
- package/dist/__fixtures__/claude-outputs.d.ts +49 -0
- package/dist/__fixtures__/claude-outputs.d.ts.map +1 -0
- package/dist/__fixtures__/claude-outputs.js +443 -0
- package/dist/__fixtures__/claude-outputs.js.map +1 -0
- package/dist/__fixtures__/codex-outputs.d.ts +9 -0
- package/dist/__fixtures__/codex-outputs.d.ts.map +1 -0
- package/dist/__fixtures__/codex-outputs.js +94 -0
- package/dist/__fixtures__/codex-outputs.js.map +1 -0
- package/dist/__fixtures__/gemini-outputs.d.ts +19 -0
- package/dist/__fixtures__/gemini-outputs.d.ts.map +1 -0
- package/dist/__fixtures__/gemini-outputs.js +144 -0
- package/dist/__fixtures__/gemini-outputs.js.map +1 -0
- package/dist/__fixtures__/index.d.ts +68 -0
- package/dist/__fixtures__/index.d.ts.map +1 -0
- package/dist/__fixtures__/index.js +44 -0
- package/dist/__fixtures__/index.js.map +1 -0
- package/dist/auth-detection.d.ts +49 -0
- package/dist/auth-detection.d.ts.map +1 -0
- package/dist/auth-detection.js +199 -0
- package/dist/auth-detection.js.map +1 -0
- package/dist/base-wrapper.d.ts +225 -0
- package/dist/base-wrapper.d.ts.map +1 -0
- package/dist/base-wrapper.js +572 -0
- package/dist/base-wrapper.js.map +1 -0
- package/dist/client.d.ts +254 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +801 -0
- package/dist/client.js.map +1 -0
- package/dist/id-generator.d.ts +35 -0
- package/dist/id-generator.d.ts.map +1 -0
- package/dist/id-generator.js +60 -0
- package/dist/id-generator.js.map +1 -0
- package/dist/idle-detector.d.ts +110 -0
- package/dist/idle-detector.d.ts.map +1 -0
- package/dist/idle-detector.js +304 -0
- package/dist/idle-detector.js.map +1 -0
- package/dist/inbox.d.ts +37 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +73 -0
- package/dist/inbox.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +236 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +1238 -0
- package/dist/parser.js.map +1 -0
- package/dist/prompt-composer.d.ts +67 -0
- package/dist/prompt-composer.d.ts.map +1 -0
- package/dist/prompt-composer.js +168 -0
- package/dist/prompt-composer.js.map +1 -0
- package/dist/relay-pty-orchestrator.d.ts +407 -0
- package/dist/relay-pty-orchestrator.d.ts.map +1 -0
- package/dist/relay-pty-orchestrator.js +1885 -0
- package/dist/relay-pty-orchestrator.js.map +1 -0
- package/dist/shared.d.ts +201 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +341 -0
- package/dist/shared.js.map +1 -0
- package/dist/stuck-detector.d.ts +161 -0
- package/dist/stuck-detector.d.ts.map +1 -0
- package/dist/stuck-detector.js +402 -0
- package/dist/stuck-detector.js.map +1 -0
- package/dist/tmux-resolver.d.ts +55 -0
- package/dist/tmux-resolver.d.ts.map +1 -0
- package/dist/tmux-resolver.js +175 -0
- package/dist/tmux-resolver.js.map +1 -0
- package/dist/tmux-wrapper.d.ts +345 -0
- package/dist/tmux-wrapper.d.ts.map +1 -0
- package/dist/tmux-wrapper.js +1747 -0
- package/dist/tmux-wrapper.js.map +1 -0
- package/dist/trajectory-integration.d.ts +292 -0
- package/dist/trajectory-integration.d.ts.map +1 -0
- package/dist/trajectory-integration.js +979 -0
- package/dist/trajectory-integration.js.map +1 -0
- package/dist/wrapper-types.d.ts +41 -0
- package/dist/wrapper-types.d.ts.map +1 -0
- package/dist/wrapper-types.js +7 -0
- package/dist/wrapper-types.js.map +1 -0
- package/package.json +63 -0
- package/src/__fixtures__/claude-outputs.ts +471 -0
- package/src/__fixtures__/codex-outputs.ts +99 -0
- package/src/__fixtures__/gemini-outputs.ts +151 -0
- package/src/__fixtures__/index.ts +47 -0
- package/src/auth-detection.ts +244 -0
- package/src/base-wrapper.test.ts +540 -0
- package/src/base-wrapper.ts +741 -0
- package/src/client.test.ts +262 -0
- package/src/client.ts +984 -0
- package/src/id-generator.test.ts +71 -0
- package/src/id-generator.ts +69 -0
- package/src/idle-detector.test.ts +390 -0
- package/src/idle-detector.ts +370 -0
- package/src/inbox.test.ts +233 -0
- package/src/inbox.ts +89 -0
- package/src/index.ts +170 -0
- package/src/parser.regression.test.ts +251 -0
- package/src/parser.test.ts +1359 -0
- package/src/parser.ts +1477 -0
- package/src/prompt-composer.test.ts +219 -0
- package/src/prompt-composer.ts +231 -0
- package/src/relay-pty-orchestrator.test.ts +1027 -0
- package/src/relay-pty-orchestrator.ts +2270 -0
- package/src/shared.test.ts +221 -0
- package/src/shared.ts +454 -0
- package/src/stuck-detector.test.ts +303 -0
- package/src/stuck-detector.ts +511 -0
- package/src/tmux-resolver.test.ts +104 -0
- package/src/tmux-resolver.ts +207 -0
- package/src/tmux-wrapper.test.ts +316 -0
- package/src/tmux-wrapper.ts +2010 -0
- package/src/trajectory-detection.test.ts +151 -0
- package/src/trajectory-integration.ts +1261 -0
- package/src/wrapper-types.ts +45 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BaseWrapper - Abstract base class for agent wrappers
|
|
3
|
+
*
|
|
4
|
+
* Provides shared functionality between TmuxWrapper and PtyWrapper:
|
|
5
|
+
* - Message queue management and deduplication
|
|
6
|
+
* - Spawn/release command parsing and execution
|
|
7
|
+
* - Continuity integration (agent ID, summary saving)
|
|
8
|
+
* - Relay command handling
|
|
9
|
+
* - Line joining for multi-line commands
|
|
10
|
+
*
|
|
11
|
+
* Subclasses implement:
|
|
12
|
+
* - start() - Initialize and start the agent process
|
|
13
|
+
* - stop() - Stop the agent process
|
|
14
|
+
* - performInjection() - Inject content into the agent
|
|
15
|
+
* - getCleanOutput() - Get cleaned output for parsing
|
|
16
|
+
*/
|
|
17
|
+
import { EventEmitter } from 'node:events';
|
|
18
|
+
import { RelayClient } from './client.js';
|
|
19
|
+
import type { ParsedCommand, ParsedSummary } from './parser.js';
|
|
20
|
+
import type { SendPayload, SendMeta, SpeakOnTrigger, Envelope } from '@agent-relay/protocol/types';
|
|
21
|
+
import type { ChannelMessagePayload } from '@agent-relay/protocol/channels';
|
|
22
|
+
import { type QueuedMessage, type InjectionMetrics, type CliType } from './shared.js';
|
|
23
|
+
import { type ContinuityManager } from '@agent-relay/continuity';
|
|
24
|
+
import { UniversalIdleDetector } from './idle-detector.js';
|
|
25
|
+
import { StuckDetector, type StuckReason } from './stuck-detector.js';
|
|
26
|
+
/**
|
|
27
|
+
* Base configuration shared by all wrapper types
|
|
28
|
+
*/
|
|
29
|
+
export interface BaseWrapperConfig {
|
|
30
|
+
/** Agent name (must be unique) */
|
|
31
|
+
name: string;
|
|
32
|
+
/** Command to execute */
|
|
33
|
+
command: string;
|
|
34
|
+
/** Command arguments */
|
|
35
|
+
args?: string[];
|
|
36
|
+
/** Relay daemon socket path */
|
|
37
|
+
socketPath?: string;
|
|
38
|
+
/** Working directory */
|
|
39
|
+
cwd?: string;
|
|
40
|
+
/** Environment variables */
|
|
41
|
+
env?: Record<string, string>;
|
|
42
|
+
/** Relay prefix pattern (default: '->relay:') */
|
|
43
|
+
relayPrefix?: string;
|
|
44
|
+
/** CLI type (auto-detected if not set) */
|
|
45
|
+
cliType?: CliType;
|
|
46
|
+
/** Dashboard port for spawn/release API */
|
|
47
|
+
dashboardPort?: number;
|
|
48
|
+
/** Callback when spawn command is parsed */
|
|
49
|
+
onSpawn?: (name: string, cli: string, task: string) => Promise<void>;
|
|
50
|
+
/** Callback when release command is parsed */
|
|
51
|
+
onRelease?: (name: string) => Promise<void>;
|
|
52
|
+
/** Agent ID to resume from (for continuity) */
|
|
53
|
+
resumeAgentId?: string;
|
|
54
|
+
/** Stream logs to daemon */
|
|
55
|
+
streamLogs?: boolean;
|
|
56
|
+
/** Task/role description */
|
|
57
|
+
task?: string;
|
|
58
|
+
/** Shadow configuration */
|
|
59
|
+
shadowOf?: string;
|
|
60
|
+
shadowSpeakOn?: SpeakOnTrigger[];
|
|
61
|
+
/** Milliseconds of idle time before injection is allowed (default: 1500) */
|
|
62
|
+
idleBeforeInjectMs?: number;
|
|
63
|
+
/** Confidence threshold for idle detection (0-1, default: 0.7) */
|
|
64
|
+
idleConfidenceThreshold?: number;
|
|
65
|
+
/** Skip initial instruction injection (when using --append-system-prompt) */
|
|
66
|
+
skipInstructions?: boolean;
|
|
67
|
+
/** Skip continuity loading (for spawned agents that don't need session recovery) */
|
|
68
|
+
skipContinuity?: boolean;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Abstract base class for agent wrappers
|
|
72
|
+
*/
|
|
73
|
+
export declare abstract class BaseWrapper extends EventEmitter {
|
|
74
|
+
protected config: BaseWrapperConfig;
|
|
75
|
+
protected client: RelayClient;
|
|
76
|
+
protected relayPrefix: string;
|
|
77
|
+
protected cliType: CliType;
|
|
78
|
+
protected running: boolean;
|
|
79
|
+
protected messageQueue: QueuedMessage[];
|
|
80
|
+
protected sentMessageHashes: Set<string>;
|
|
81
|
+
protected isInjecting: boolean;
|
|
82
|
+
protected receivedMessageIds: Set<string>;
|
|
83
|
+
protected injectionMetrics: InjectionMetrics;
|
|
84
|
+
protected processedSpawnCommands: Set<string>;
|
|
85
|
+
protected processedReleaseCommands: Set<string>;
|
|
86
|
+
protected pendingFencedSpawn: {
|
|
87
|
+
name: string;
|
|
88
|
+
cli: string;
|
|
89
|
+
taskLines: string[];
|
|
90
|
+
} | null;
|
|
91
|
+
protected continuity?: ContinuityManager;
|
|
92
|
+
protected agentId?: string;
|
|
93
|
+
protected processedContinuityCommands: Set<string>;
|
|
94
|
+
protected sessionEndProcessed: boolean;
|
|
95
|
+
protected sessionEndData?: {
|
|
96
|
+
summary?: string;
|
|
97
|
+
completedTasks?: string[];
|
|
98
|
+
};
|
|
99
|
+
protected lastSummaryRawContent: string;
|
|
100
|
+
protected idleDetector: UniversalIdleDetector;
|
|
101
|
+
protected stuckDetector: StuckDetector;
|
|
102
|
+
constructor(config: BaseWrapperConfig);
|
|
103
|
+
/** Start the agent process */
|
|
104
|
+
abstract start(): Promise<void>;
|
|
105
|
+
/** Stop the agent process */
|
|
106
|
+
abstract stop(): Promise<void> | void;
|
|
107
|
+
/** Inject content into the agent */
|
|
108
|
+
protected abstract performInjection(content: string): Promise<void>;
|
|
109
|
+
/** Get cleaned output for parsing */
|
|
110
|
+
protected abstract getCleanOutput(): string;
|
|
111
|
+
get isRunning(): boolean;
|
|
112
|
+
get name(): string;
|
|
113
|
+
getAgentId(): string | undefined;
|
|
114
|
+
getInjectionMetrics(): InjectionMetrics & {
|
|
115
|
+
successRate: number;
|
|
116
|
+
};
|
|
117
|
+
get pendingMessageCount(): number;
|
|
118
|
+
/**
|
|
119
|
+
* Set the PID for process state inspection (Linux only).
|
|
120
|
+
* Call this after the agent process is started.
|
|
121
|
+
*/
|
|
122
|
+
protected setIdleDetectorPid(pid: number): void;
|
|
123
|
+
/**
|
|
124
|
+
* Start stuck detection. Call after the agent process starts.
|
|
125
|
+
*/
|
|
126
|
+
protected startStuckDetection(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Stop stuck detection. Call when the agent process stops.
|
|
129
|
+
*/
|
|
130
|
+
protected stopStuckDetection(): void;
|
|
131
|
+
/**
|
|
132
|
+
* Check if the agent is currently stuck.
|
|
133
|
+
*/
|
|
134
|
+
isStuck(): boolean;
|
|
135
|
+
/**
|
|
136
|
+
* Get the reason for being stuck (if stuck).
|
|
137
|
+
*/
|
|
138
|
+
getStuckReason(): StuckReason | null;
|
|
139
|
+
/**
|
|
140
|
+
* Feed output to the idle and stuck detectors.
|
|
141
|
+
* Call this whenever new output is received from the agent.
|
|
142
|
+
*/
|
|
143
|
+
protected feedIdleDetectorOutput(output: string): void;
|
|
144
|
+
/**
|
|
145
|
+
* Check if the agent is idle and ready for injection.
|
|
146
|
+
* Returns idle state with confidence signals.
|
|
147
|
+
*/
|
|
148
|
+
protected checkIdleForInjection(): {
|
|
149
|
+
isIdle: boolean;
|
|
150
|
+
confidence: number;
|
|
151
|
+
signals: Array<{
|
|
152
|
+
source: string;
|
|
153
|
+
confidence: number;
|
|
154
|
+
}>;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Wait for the agent to become idle.
|
|
158
|
+
* Returns when idle or after timeout.
|
|
159
|
+
*/
|
|
160
|
+
protected waitForIdleState(timeoutMs?: number, pollMs?: number): Promise<{
|
|
161
|
+
isIdle: boolean;
|
|
162
|
+
confidence: number;
|
|
163
|
+
}>;
|
|
164
|
+
/**
|
|
165
|
+
* Handle incoming message from relay
|
|
166
|
+
*/
|
|
167
|
+
protected handleIncomingMessage(from: string, payload: SendPayload, messageId: string, meta?: SendMeta, originalTo?: string): void;
|
|
168
|
+
/**
|
|
169
|
+
* Send an ACK for a sync message after processing completes.
|
|
170
|
+
* @param messageId - The message ID being acknowledged
|
|
171
|
+
* @param sync - Sync metadata from the original message
|
|
172
|
+
* @param response - Response status: 'OK' for success, 'ERROR' for failure
|
|
173
|
+
* @param responseData - Optional structured response data
|
|
174
|
+
*/
|
|
175
|
+
protected sendSyncAck(messageId: string, sync: SendMeta['sync'] | undefined, response: 'OK' | 'ERROR' | string, responseData?: unknown): void;
|
|
176
|
+
/**
|
|
177
|
+
* Handle incoming channel message from relay.
|
|
178
|
+
* Channel messages include a channel indicator so the agent knows to reply to the channel.
|
|
179
|
+
*/
|
|
180
|
+
protected handleIncomingChannelMessage(from: string, channel: string, body: string, envelope: Envelope<ChannelMessagePayload>): void;
|
|
181
|
+
/**
|
|
182
|
+
* Send a relay command via the client
|
|
183
|
+
*/
|
|
184
|
+
protected sendRelayCommand(cmd: ParsedCommand): void;
|
|
185
|
+
/**
|
|
186
|
+
* Parse spawn and release commands from output
|
|
187
|
+
*/
|
|
188
|
+
protected parseSpawnReleaseCommands(content: string): void;
|
|
189
|
+
/**
|
|
190
|
+
* Execute a spawn command
|
|
191
|
+
*/
|
|
192
|
+
protected executeSpawn(name: string, cli: string, task: string): Promise<void>;
|
|
193
|
+
/**
|
|
194
|
+
* Execute a release command
|
|
195
|
+
*/
|
|
196
|
+
protected executeRelease(name: string): Promise<void>;
|
|
197
|
+
/**
|
|
198
|
+
* Initialize agent ID for continuity/resume
|
|
199
|
+
*/
|
|
200
|
+
protected initializeAgentId(): Promise<void>;
|
|
201
|
+
/**
|
|
202
|
+
* Parse continuity commands from output
|
|
203
|
+
*/
|
|
204
|
+
protected parseContinuityCommands(content: string): Promise<void>;
|
|
205
|
+
/**
|
|
206
|
+
* Save a parsed summary to the continuity ledger
|
|
207
|
+
*/
|
|
208
|
+
protected saveSummaryToLedger(summary: ParsedSummary): Promise<void>;
|
|
209
|
+
/**
|
|
210
|
+
* Reset session-specific state for wrapper reuse
|
|
211
|
+
*/
|
|
212
|
+
resetSessionState(): void;
|
|
213
|
+
/**
|
|
214
|
+
* Join continuation lines for multi-line relay/continuity commands.
|
|
215
|
+
* TUIs like Claude Code insert real newlines in output, causing
|
|
216
|
+
* messages to span multiple lines. This joins indented
|
|
217
|
+
* continuation lines back to the command line.
|
|
218
|
+
*/
|
|
219
|
+
protected joinContinuationLines(content: string): string;
|
|
220
|
+
/**
|
|
221
|
+
* Clean up resources
|
|
222
|
+
*/
|
|
223
|
+
protected destroyClient(): void;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=base-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-wrapper.d.ts","sourceRoot":"","sources":["../src/base-wrapper.ts"],"names":[],"mappings":"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"}
|