@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 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monotonic ID Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates unique, lexicographically sortable IDs that are faster than UUID v4.
|
|
5
|
+
*
|
|
6
|
+
* Format: <timestamp-base36>-<counter-base36>-<nodeId>
|
|
7
|
+
* Example: "lxyz5g8-0001-7d2a"
|
|
8
|
+
*
|
|
9
|
+
* Properties:
|
|
10
|
+
* - Lexicographically sortable by time
|
|
11
|
+
* - Unique across processes (node prefix)
|
|
12
|
+
* - ~16x faster than UUID v4
|
|
13
|
+
* - Shorter (20-24 chars vs 36 chars)
|
|
14
|
+
*/
|
|
15
|
+
export declare class IdGenerator {
|
|
16
|
+
private counter;
|
|
17
|
+
private readonly prefix;
|
|
18
|
+
private lastTs;
|
|
19
|
+
constructor(nodeId?: string);
|
|
20
|
+
/**
|
|
21
|
+
* Generate a unique, monotonically increasing ID.
|
|
22
|
+
*/
|
|
23
|
+
next(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Generate a short ID (just timestamp + counter, no node prefix).
|
|
26
|
+
* Use when you don't need cross-process uniqueness.
|
|
27
|
+
*/
|
|
28
|
+
short(): string;
|
|
29
|
+
}
|
|
30
|
+
export declare const idGen: IdGenerator;
|
|
31
|
+
/**
|
|
32
|
+
* Generate a unique ID (drop-in replacement for uuid()).
|
|
33
|
+
*/
|
|
34
|
+
export declare function generateId(): string;
|
|
35
|
+
//# sourceMappingURL=id-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.d.ts","sourceRoot":"","sources":["../src/id-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAAK;gBAEP,MAAM,CAAC,EAAE,MAAM;IAK3B;;OAEG;IACH,IAAI,IAAI,MAAM;IAcd;;;OAGG;IACH,KAAK,IAAI,MAAM;CAYhB;AAGD,eAAO,MAAM,KAAK,aAAoB,CAAC;AAEvC;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monotonic ID Generator
|
|
3
|
+
*
|
|
4
|
+
* Generates unique, lexicographically sortable IDs that are faster than UUID v4.
|
|
5
|
+
*
|
|
6
|
+
* Format: <timestamp-base36>-<counter-base36>-<nodeId>
|
|
7
|
+
* Example: "lxyz5g8-0001-7d2a"
|
|
8
|
+
*
|
|
9
|
+
* Properties:
|
|
10
|
+
* - Lexicographically sortable by time
|
|
11
|
+
* - Unique across processes (node prefix)
|
|
12
|
+
* - ~16x faster than UUID v4
|
|
13
|
+
* - Shorter (20-24 chars vs 36 chars)
|
|
14
|
+
*/
|
|
15
|
+
export class IdGenerator {
|
|
16
|
+
counter = 0;
|
|
17
|
+
prefix;
|
|
18
|
+
lastTs = 0;
|
|
19
|
+
constructor(nodeId) {
|
|
20
|
+
// Use process ID + random suffix for uniqueness across processes
|
|
21
|
+
this.prefix = nodeId ?? `${process.pid.toString(36)}${Math.random().toString(36).slice(2, 6)}`;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generate a unique, monotonically increasing ID.
|
|
25
|
+
*/
|
|
26
|
+
next() {
|
|
27
|
+
const now = Date.now();
|
|
28
|
+
// Reset counter if timestamp changed
|
|
29
|
+
if (now !== this.lastTs) {
|
|
30
|
+
this.lastTs = now;
|
|
31
|
+
this.counter = 0;
|
|
32
|
+
}
|
|
33
|
+
const ts = now.toString(36);
|
|
34
|
+
const seq = (this.counter++).toString(36).padStart(4, '0');
|
|
35
|
+
return `${ts}-${seq}-${this.prefix}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate a short ID (just timestamp + counter, no node prefix).
|
|
39
|
+
* Use when you don't need cross-process uniqueness.
|
|
40
|
+
*/
|
|
41
|
+
short() {
|
|
42
|
+
const now = Date.now();
|
|
43
|
+
if (now !== this.lastTs) {
|
|
44
|
+
this.lastTs = now;
|
|
45
|
+
this.counter = 0;
|
|
46
|
+
}
|
|
47
|
+
const ts = now.toString(36);
|
|
48
|
+
const seq = (this.counter++).toString(36).padStart(4, '0');
|
|
49
|
+
return `${ts}-${seq}`;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Singleton instance for the process
|
|
53
|
+
export const idGen = new IdGenerator();
|
|
54
|
+
/**
|
|
55
|
+
* Generate a unique ID (drop-in replacement for uuid()).
|
|
56
|
+
*/
|
|
57
|
+
export function generateId() {
|
|
58
|
+
return idGen.next();
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=id-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-generator.js","sourceRoot":"","sources":["../src/id-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,OAAO,WAAW;IACd,OAAO,GAAG,CAAC,CAAC;IACH,MAAM,CAAS;IACxB,MAAM,GAAG,CAAC,CAAC;IAEnB,YAAY,MAAe;QACzB,iEAAiE;QACjE,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACjG,CAAC;IAED;;OAEG;IACH,IAAI;QACF,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,qCAAqC;QACrC,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACnB,CAAC;QAED,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,OAAO,GAAG,EAAE,IAAI,GAAG,EAAE,CAAC;IACxB,CAAC;CACF;AAED,qCAAqC;AACrC,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UniversalIdleDetector - Detect when an agent is waiting for input
|
|
3
|
+
*
|
|
4
|
+
* Works across all CLI tools (Claude, Codex, Gemini, Aider, etc.) by combining:
|
|
5
|
+
* 1. Process state inspection via /proc/{pid}/stat (Linux, 95% confidence)
|
|
6
|
+
* 2. Output silence analysis (cross-platform, 60-80% confidence)
|
|
7
|
+
* 3. Natural ending detection (heuristic, 60% confidence)
|
|
8
|
+
*
|
|
9
|
+
* The hybrid approach ensures reliable idle detection regardless of CLI type.
|
|
10
|
+
*/
|
|
11
|
+
export interface IdleSignal {
|
|
12
|
+
source: 'process_state' | 'output_silence' | 'natural_ending';
|
|
13
|
+
confidence: number;
|
|
14
|
+
timestamp: number;
|
|
15
|
+
details?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface IdleResult {
|
|
18
|
+
isIdle: boolean;
|
|
19
|
+
confidence: number;
|
|
20
|
+
signals: IdleSignal[];
|
|
21
|
+
/** True if agent appears to be in an editor mode (vim INSERT, etc.) */
|
|
22
|
+
inEditorMode?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface IdleDetectorConfig {
|
|
25
|
+
/** Minimum silence duration to consider for idle (ms) */
|
|
26
|
+
minSilenceMs?: number;
|
|
27
|
+
/** Output buffer size limit */
|
|
28
|
+
bufferLimit?: number;
|
|
29
|
+
/** Confidence threshold for idle detection (0-1) */
|
|
30
|
+
confidenceThreshold?: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Universal idle detector for any CLI-based agent.
|
|
34
|
+
*/
|
|
35
|
+
export declare class UniversalIdleDetector {
|
|
36
|
+
private lastOutputTime;
|
|
37
|
+
private outputBuffer;
|
|
38
|
+
private pid;
|
|
39
|
+
private config;
|
|
40
|
+
constructor(config?: IdleDetectorConfig);
|
|
41
|
+
/**
|
|
42
|
+
* Set the PID of the agent process to monitor.
|
|
43
|
+
* Required for Linux process state inspection.
|
|
44
|
+
*/
|
|
45
|
+
setPid(pid: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get the current PID being monitored.
|
|
48
|
+
*/
|
|
49
|
+
getPid(): number | null;
|
|
50
|
+
/**
|
|
51
|
+
* Process output chunk from the agent.
|
|
52
|
+
* Call this for every output received from the agent process.
|
|
53
|
+
*/
|
|
54
|
+
onOutput(chunk: string): void;
|
|
55
|
+
/**
|
|
56
|
+
* Check if the agent process is blocked on read (waiting for input).
|
|
57
|
+
* This is the most reliable signal - the OS knows when a process is waiting.
|
|
58
|
+
*
|
|
59
|
+
* Linux-only; returns null on other platforms.
|
|
60
|
+
*/
|
|
61
|
+
private isProcessWaitingForInput;
|
|
62
|
+
/**
|
|
63
|
+
* Get milliseconds since last output.
|
|
64
|
+
*/
|
|
65
|
+
private getOutputSilenceMs;
|
|
66
|
+
/**
|
|
67
|
+
* Check if the agent is in an editor mode (vim INSERT, REPLACE, etc.).
|
|
68
|
+
* When in editor mode, message injection should be delayed.
|
|
69
|
+
*/
|
|
70
|
+
isInEditorMode(): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Check if the last output ends "naturally" (complete thought vs mid-sentence).
|
|
73
|
+
* Helps distinguish between pauses in output and waiting for input.
|
|
74
|
+
*/
|
|
75
|
+
private hasNaturalEnding;
|
|
76
|
+
/**
|
|
77
|
+
* Determine if the agent is idle and ready for input.
|
|
78
|
+
* Combines multiple signals for reliability across all CLI types.
|
|
79
|
+
*/
|
|
80
|
+
checkIdle(options?: {
|
|
81
|
+
minSilenceMs?: number;
|
|
82
|
+
}): IdleResult;
|
|
83
|
+
/**
|
|
84
|
+
* Wait for idle state with timeout.
|
|
85
|
+
* Returns the idle result when achieved or after timeout.
|
|
86
|
+
*/
|
|
87
|
+
waitForIdle(timeoutMs?: number, pollMs?: number): Promise<IdleResult>;
|
|
88
|
+
/**
|
|
89
|
+
* Reset state (call when agent starts new response).
|
|
90
|
+
*/
|
|
91
|
+
reset(): void;
|
|
92
|
+
/**
|
|
93
|
+
* Get time since last output in milliseconds.
|
|
94
|
+
*/
|
|
95
|
+
getTimeSinceLastOutput(): number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get the PID of a process running in a tmux pane.
|
|
99
|
+
* Uses tmux list-panes with format specifier.
|
|
100
|
+
*/
|
|
101
|
+
export declare function getTmuxPanePid(tmuxPath: string, sessionName: string): Promise<number | null>;
|
|
102
|
+
/**
|
|
103
|
+
* Create an idle detector configured for the current platform.
|
|
104
|
+
* On non-Linux platforms, process state inspection is unavailable but
|
|
105
|
+
* output silence analysis still works.
|
|
106
|
+
*/
|
|
107
|
+
export declare function createIdleDetector(config?: IdleDetectorConfig, options?: {
|
|
108
|
+
quiet?: boolean;
|
|
109
|
+
}): UniversalIdleDetector;
|
|
110
|
+
//# sourceMappingURL=idle-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle-detector.d.ts","sourceRoot":"","sources":["../src/idle-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,uEAAuE;IACvE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAQD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,MAAM,CAA+B;gBAEjC,MAAM,GAAE,kBAAuB;IAM3C;;;OAGG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIzB;;OAEG;IACH,MAAM,IAAI,MAAM,GAAG,IAAI;IAIvB;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAU7B;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAyChC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;;OAGG;IACH,cAAc,IAAI,OAAO;IA8BzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IA4CxB;;;OAGG;IACH,SAAS,CAAC,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,UAAU;IAyE9D;;;OAGG;IACG,WAAW,CAAC,SAAS,SAAQ,EAAE,MAAM,SAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAevE;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,sBAAsB,IAAI,MAAM;CAGjC;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAexB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,GAAE,kBAAuB,EAC/B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAChC,qBAAqB,CAEvB"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UniversalIdleDetector - Detect when an agent is waiting for input
|
|
3
|
+
*
|
|
4
|
+
* Works across all CLI tools (Claude, Codex, Gemini, Aider, etc.) by combining:
|
|
5
|
+
* 1. Process state inspection via /proc/{pid}/stat (Linux, 95% confidence)
|
|
6
|
+
* 2. Output silence analysis (cross-platform, 60-80% confidence)
|
|
7
|
+
* 3. Natural ending detection (heuristic, 60% confidence)
|
|
8
|
+
*
|
|
9
|
+
* The hybrid approach ensures reliable idle detection regardless of CLI type.
|
|
10
|
+
*/
|
|
11
|
+
import fs from 'node:fs';
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
minSilenceMs: 500,
|
|
14
|
+
bufferLimit: 10000,
|
|
15
|
+
confidenceThreshold: 0.7,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Universal idle detector for any CLI-based agent.
|
|
19
|
+
*/
|
|
20
|
+
export class UniversalIdleDetector {
|
|
21
|
+
lastOutputTime = 0;
|
|
22
|
+
outputBuffer = '';
|
|
23
|
+
pid = null;
|
|
24
|
+
config;
|
|
25
|
+
constructor(config = {}) {
|
|
26
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
27
|
+
// Initialize lastOutputTime to now to avoid immediate false positives
|
|
28
|
+
this.lastOutputTime = Date.now();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Set the PID of the agent process to monitor.
|
|
32
|
+
* Required for Linux process state inspection.
|
|
33
|
+
*/
|
|
34
|
+
setPid(pid) {
|
|
35
|
+
this.pid = pid;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get the current PID being monitored.
|
|
39
|
+
*/
|
|
40
|
+
getPid() {
|
|
41
|
+
return this.pid;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Process output chunk from the agent.
|
|
45
|
+
* Call this for every output received from the agent process.
|
|
46
|
+
*/
|
|
47
|
+
onOutput(chunk) {
|
|
48
|
+
this.lastOutputTime = Date.now();
|
|
49
|
+
this.outputBuffer += chunk;
|
|
50
|
+
// Keep buffer bounded
|
|
51
|
+
if (this.outputBuffer.length > this.config.bufferLimit) {
|
|
52
|
+
this.outputBuffer = this.outputBuffer.slice(-Math.floor(this.config.bufferLimit / 2));
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if the agent process is blocked on read (waiting for input).
|
|
57
|
+
* This is the most reliable signal - the OS knows when a process is waiting.
|
|
58
|
+
*
|
|
59
|
+
* Linux-only; returns null on other platforms.
|
|
60
|
+
*/
|
|
61
|
+
isProcessWaitingForInput() {
|
|
62
|
+
if (process.platform !== 'linux' || !this.pid) {
|
|
63
|
+
return null; // Can't determine on non-Linux
|
|
64
|
+
}
|
|
65
|
+
try {
|
|
66
|
+
// Check process state from /proc/{pid}/stat
|
|
67
|
+
// State codes: R=running, S=sleeping, D=disk sleep, Z=zombie, T=stopped
|
|
68
|
+
const statPath = `/proc/${this.pid}/stat`;
|
|
69
|
+
const stat = fs.readFileSync(statPath, 'utf-8');
|
|
70
|
+
const fields = stat.split(' ');
|
|
71
|
+
const state = fields[2]; // Third field is state
|
|
72
|
+
// S (sleeping) often means waiting for I/O
|
|
73
|
+
if (state !== 'S') {
|
|
74
|
+
return { waiting: false }; // Running or other state = not waiting
|
|
75
|
+
}
|
|
76
|
+
// More precise: check what the process is blocked on
|
|
77
|
+
const wchanPath = `/proc/${this.pid}/wchan`;
|
|
78
|
+
const wchan = fs.readFileSync(wchanPath, 'utf-8').trim();
|
|
79
|
+
// Common wait channels for terminal input
|
|
80
|
+
const inputWaitChannels = [
|
|
81
|
+
'wait_woken',
|
|
82
|
+
'poll_schedule_timeout',
|
|
83
|
+
'do_select',
|
|
84
|
+
'n_tty_read',
|
|
85
|
+
'unix_stream_read_generic',
|
|
86
|
+
'pipe_read',
|
|
87
|
+
'ep_poll', // epoll wait
|
|
88
|
+
'futex_wait_queue', // sometimes seen
|
|
89
|
+
];
|
|
90
|
+
const isWaiting = inputWaitChannels.some(ch => wchan.includes(ch));
|
|
91
|
+
return { waiting: isWaiting, wchan };
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null; // Process may have exited or permission denied
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get milliseconds since last output.
|
|
99
|
+
*/
|
|
100
|
+
getOutputSilenceMs() {
|
|
101
|
+
return Date.now() - this.lastOutputTime;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if the agent is in an editor mode (vim INSERT, REPLACE, etc.).
|
|
105
|
+
* When in editor mode, message injection should be delayed.
|
|
106
|
+
*/
|
|
107
|
+
isInEditorMode() {
|
|
108
|
+
// Check the last portion of output for editor mode indicators
|
|
109
|
+
const lastOutput = this.outputBuffer.slice(-500);
|
|
110
|
+
// Vim/Neovim mode indicators
|
|
111
|
+
const editorModePatterns = [
|
|
112
|
+
/-- INSERT --/i,
|
|
113
|
+
/-- REPLACE --/i,
|
|
114
|
+
/-- VISUAL --/i,
|
|
115
|
+
/-- VISUAL LINE --/i,
|
|
116
|
+
/-- VISUAL BLOCK --/i,
|
|
117
|
+
/-- SELECT --/i,
|
|
118
|
+
/-- TERMINAL --/i,
|
|
119
|
+
// Emacs indicators
|
|
120
|
+
/\*\*\* Emacs/,
|
|
121
|
+
/M-x/,
|
|
122
|
+
// nano indicators
|
|
123
|
+
/GNU nano/,
|
|
124
|
+
/\^G Get Help/,
|
|
125
|
+
// less/more pager
|
|
126
|
+
/:\s*$/, // Pager prompt
|
|
127
|
+
/lines \d+-\d+/, // Pager line indicator
|
|
128
|
+
// Git interactive rebase
|
|
129
|
+
/pick [a-f0-9]+/,
|
|
130
|
+
/# Rebase [a-f0-9]+/,
|
|
131
|
+
];
|
|
132
|
+
return editorModePatterns.some(pattern => pattern.test(lastOutput));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Check if the last output ends "naturally" (complete thought vs mid-sentence).
|
|
136
|
+
* Helps distinguish between pauses in output and waiting for input.
|
|
137
|
+
*/
|
|
138
|
+
hasNaturalEnding() {
|
|
139
|
+
const lastChars = this.outputBuffer.slice(-100).trim();
|
|
140
|
+
if (lastChars.length === 0)
|
|
141
|
+
return true;
|
|
142
|
+
// Positive signals: output ended cleanly
|
|
143
|
+
const naturalEndings = [
|
|
144
|
+
/[.!?]\s*$/, // Sentence ended
|
|
145
|
+
/```\s*$/, // Code block closed
|
|
146
|
+
/\n\n$/, // Paragraph break
|
|
147
|
+
/>\s*$/, // Prompt character
|
|
148
|
+
/\$\s*$/, // Shell prompt
|
|
149
|
+
/>>>\s*$/, // Python/Aider prompt
|
|
150
|
+
/❯\s*$/, // Fancy prompts
|
|
151
|
+
/λ\s*$/, // Lambda prompts
|
|
152
|
+
/→\s*$/, // Arrow prompts
|
|
153
|
+
];
|
|
154
|
+
// Negative signals: output mid-thought
|
|
155
|
+
const midThought = [
|
|
156
|
+
/[,;:]\s*$/, // Comma, semicolon = more coming
|
|
157
|
+
/\w$/, // Ended mid-word (no trailing space)
|
|
158
|
+
/[-–—]\s*$/, // Dash = continuation
|
|
159
|
+
/\(\s*$/, // Open paren
|
|
160
|
+
/\[\s*$/, // Open bracket
|
|
161
|
+
/\{\s*$/, // Open brace
|
|
162
|
+
/\\\s*$/, // Line continuation
|
|
163
|
+
];
|
|
164
|
+
for (const pattern of midThought) {
|
|
165
|
+
if (pattern.test(lastChars)) {
|
|
166
|
+
return false;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const pattern of naturalEndings) {
|
|
170
|
+
if (pattern.test(lastChars)) {
|
|
171
|
+
return true;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
// Default: assume natural if no negative signals and some silence
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Determine if the agent is idle and ready for input.
|
|
179
|
+
* Combines multiple signals for reliability across all CLI types.
|
|
180
|
+
*/
|
|
181
|
+
checkIdle(options = {}) {
|
|
182
|
+
const minSilence = options.minSilenceMs ?? this.config.minSilenceMs;
|
|
183
|
+
const signals = [];
|
|
184
|
+
// Signal 1: Process state (most reliable on Linux)
|
|
185
|
+
const processState = this.isProcessWaitingForInput();
|
|
186
|
+
if (processState !== null) {
|
|
187
|
+
if (processState.waiting) {
|
|
188
|
+
signals.push({
|
|
189
|
+
source: 'process_state',
|
|
190
|
+
confidence: 0.95, // Very high - OS-level truth
|
|
191
|
+
timestamp: Date.now(),
|
|
192
|
+
details: processState.wchan,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
// Process is actively running - definitely not idle
|
|
197
|
+
return {
|
|
198
|
+
isIdle: false,
|
|
199
|
+
confidence: 0.95,
|
|
200
|
+
signals: [{
|
|
201
|
+
source: 'process_state',
|
|
202
|
+
confidence: 0.95,
|
|
203
|
+
timestamp: Date.now(),
|
|
204
|
+
details: 'process running',
|
|
205
|
+
}],
|
|
206
|
+
inEditorMode: this.isInEditorMode(),
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
// processState === null means we can't determine (non-Linux)
|
|
211
|
+
// Signal 2: Output silence
|
|
212
|
+
const silenceMs = this.getOutputSilenceMs();
|
|
213
|
+
if (silenceMs > minSilence) {
|
|
214
|
+
// Confidence scales with silence duration (up to 0.8)
|
|
215
|
+
// 500ms = 0.13, 1000ms = 0.27, 2000ms = 0.53, 3000ms = 0.8
|
|
216
|
+
const silenceConfidence = Math.min(silenceMs / 3000, 0.8);
|
|
217
|
+
signals.push({
|
|
218
|
+
source: 'output_silence',
|
|
219
|
+
confidence: silenceConfidence,
|
|
220
|
+
timestamp: Date.now(),
|
|
221
|
+
details: `${silenceMs}ms`,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
// Signal 3: Natural ending (only if some silence)
|
|
225
|
+
if (silenceMs > 200 && this.hasNaturalEnding()) {
|
|
226
|
+
signals.push({
|
|
227
|
+
source: 'natural_ending',
|
|
228
|
+
confidence: 0.6,
|
|
229
|
+
timestamp: Date.now(),
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
// No signals = not idle
|
|
233
|
+
if (signals.length === 0) {
|
|
234
|
+
return { isIdle: false, confidence: 0, signals: [], inEditorMode: this.isInEditorMode() };
|
|
235
|
+
}
|
|
236
|
+
// Combine signals
|
|
237
|
+
// Use max confidence, boosted if multiple signals agree
|
|
238
|
+
const maxConfidence = Math.max(...signals.map(s => s.confidence));
|
|
239
|
+
const boost = signals.length > 1 ? 0.1 : 0;
|
|
240
|
+
const combinedConfidence = Math.min(maxConfidence + boost, 1.0);
|
|
241
|
+
return {
|
|
242
|
+
isIdle: combinedConfidence >= this.config.confidenceThreshold,
|
|
243
|
+
confidence: combinedConfidence,
|
|
244
|
+
signals,
|
|
245
|
+
inEditorMode: this.isInEditorMode(),
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Wait for idle state with timeout.
|
|
250
|
+
* Returns the idle result when achieved or after timeout.
|
|
251
|
+
*/
|
|
252
|
+
async waitForIdle(timeoutMs = 30000, pollMs = 200) {
|
|
253
|
+
const startTime = Date.now();
|
|
254
|
+
while (Date.now() - startTime < timeoutMs) {
|
|
255
|
+
const result = this.checkIdle();
|
|
256
|
+
if (result.isIdle) {
|
|
257
|
+
return result;
|
|
258
|
+
}
|
|
259
|
+
await new Promise(r => setTimeout(r, pollMs));
|
|
260
|
+
}
|
|
261
|
+
// Timeout - return current state
|
|
262
|
+
return this.checkIdle();
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Reset state (call when agent starts new response).
|
|
266
|
+
*/
|
|
267
|
+
reset() {
|
|
268
|
+
this.outputBuffer = '';
|
|
269
|
+
this.lastOutputTime = Date.now();
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Get time since last output in milliseconds.
|
|
273
|
+
*/
|
|
274
|
+
getTimeSinceLastOutput() {
|
|
275
|
+
return this.getOutputSilenceMs();
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Get the PID of a process running in a tmux pane.
|
|
280
|
+
* Uses tmux list-panes with format specifier.
|
|
281
|
+
*/
|
|
282
|
+
export async function getTmuxPanePid(tmuxPath, sessionName) {
|
|
283
|
+
const { exec } = await import('node:child_process');
|
|
284
|
+
const { promisify } = await import('node:util');
|
|
285
|
+
const execAsync = promisify(exec);
|
|
286
|
+
try {
|
|
287
|
+
// Get the PID of the command running in the pane
|
|
288
|
+
const { stdout } = await execAsync(`"${tmuxPath}" list-panes -t ${sessionName} -F "#{pane_pid}" 2>/dev/null`);
|
|
289
|
+
const pid = parseInt(stdout.trim(), 10);
|
|
290
|
+
return isNaN(pid) ? null : pid;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Create an idle detector configured for the current platform.
|
|
298
|
+
* On non-Linux platforms, process state inspection is unavailable but
|
|
299
|
+
* output silence analysis still works.
|
|
300
|
+
*/
|
|
301
|
+
export function createIdleDetector(config = {}, options = {}) {
|
|
302
|
+
return new UniversalIdleDetector(config);
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=idle-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idle-detector.js","sourceRoot":"","sources":["../src/idle-detector.ts"],"names":[],"mappings":"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"}
|
package/dist/inbox.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File-based Inbox Manager
|
|
3
|
+
* Writes incoming messages to a file that the CLI agent reads itself.
|
|
4
|
+
*/
|
|
5
|
+
export declare const DEFAULT_INBOX_DIR = "/tmp/agent-relay";
|
|
6
|
+
export interface InboxConfig {
|
|
7
|
+
agentName: string;
|
|
8
|
+
inboxDir: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class InboxManager {
|
|
11
|
+
private config;
|
|
12
|
+
private inboxPath;
|
|
13
|
+
constructor(config: Partial<InboxConfig> & {
|
|
14
|
+
agentName: string;
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Initialize inbox directory and file.
|
|
18
|
+
*/
|
|
19
|
+
init(): void;
|
|
20
|
+
/**
|
|
21
|
+
* Get the inbox file path (for telling the agent where to read).
|
|
22
|
+
*/
|
|
23
|
+
getInboxPath(): string;
|
|
24
|
+
/**
|
|
25
|
+
* Add a message to the inbox.
|
|
26
|
+
*/
|
|
27
|
+
addMessage(from: string, body: string): void;
|
|
28
|
+
/**
|
|
29
|
+
* Clear the inbox.
|
|
30
|
+
*/
|
|
31
|
+
clear(): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check if inbox has messages.
|
|
34
|
+
*/
|
|
35
|
+
hasMessages(): boolean;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=inbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../src/inbox.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,eAAO,MAAM,iBAAiB,qBAAqB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE;IAQhE;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwB5C;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,WAAW,IAAI,OAAO;CAKvB"}
|