@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.
Files changed (115) hide show
  1. package/dist/__fixtures__/claude-outputs.d.ts +49 -0
  2. package/dist/__fixtures__/claude-outputs.d.ts.map +1 -0
  3. package/dist/__fixtures__/claude-outputs.js +443 -0
  4. package/dist/__fixtures__/claude-outputs.js.map +1 -0
  5. package/dist/__fixtures__/codex-outputs.d.ts +9 -0
  6. package/dist/__fixtures__/codex-outputs.d.ts.map +1 -0
  7. package/dist/__fixtures__/codex-outputs.js +94 -0
  8. package/dist/__fixtures__/codex-outputs.js.map +1 -0
  9. package/dist/__fixtures__/gemini-outputs.d.ts +19 -0
  10. package/dist/__fixtures__/gemini-outputs.d.ts.map +1 -0
  11. package/dist/__fixtures__/gemini-outputs.js +144 -0
  12. package/dist/__fixtures__/gemini-outputs.js.map +1 -0
  13. package/dist/__fixtures__/index.d.ts +68 -0
  14. package/dist/__fixtures__/index.d.ts.map +1 -0
  15. package/dist/__fixtures__/index.js +44 -0
  16. package/dist/__fixtures__/index.js.map +1 -0
  17. package/dist/auth-detection.d.ts +49 -0
  18. package/dist/auth-detection.d.ts.map +1 -0
  19. package/dist/auth-detection.js +199 -0
  20. package/dist/auth-detection.js.map +1 -0
  21. package/dist/base-wrapper.d.ts +225 -0
  22. package/dist/base-wrapper.d.ts.map +1 -0
  23. package/dist/base-wrapper.js +572 -0
  24. package/dist/base-wrapper.js.map +1 -0
  25. package/dist/client.d.ts +254 -0
  26. package/dist/client.d.ts.map +1 -0
  27. package/dist/client.js +801 -0
  28. package/dist/client.js.map +1 -0
  29. package/dist/id-generator.d.ts +35 -0
  30. package/dist/id-generator.d.ts.map +1 -0
  31. package/dist/id-generator.js +60 -0
  32. package/dist/id-generator.js.map +1 -0
  33. package/dist/idle-detector.d.ts +110 -0
  34. package/dist/idle-detector.d.ts.map +1 -0
  35. package/dist/idle-detector.js +304 -0
  36. package/dist/idle-detector.js.map +1 -0
  37. package/dist/inbox.d.ts +37 -0
  38. package/dist/inbox.d.ts.map +1 -0
  39. package/dist/inbox.js +73 -0
  40. package/dist/inbox.js.map +1 -0
  41. package/dist/index.d.ts +37 -0
  42. package/dist/index.d.ts.map +1 -0
  43. package/dist/index.js +47 -0
  44. package/dist/index.js.map +1 -0
  45. package/dist/parser.d.ts +236 -0
  46. package/dist/parser.d.ts.map +1 -0
  47. package/dist/parser.js +1238 -0
  48. package/dist/parser.js.map +1 -0
  49. package/dist/prompt-composer.d.ts +67 -0
  50. package/dist/prompt-composer.d.ts.map +1 -0
  51. package/dist/prompt-composer.js +168 -0
  52. package/dist/prompt-composer.js.map +1 -0
  53. package/dist/relay-pty-orchestrator.d.ts +407 -0
  54. package/dist/relay-pty-orchestrator.d.ts.map +1 -0
  55. package/dist/relay-pty-orchestrator.js +1885 -0
  56. package/dist/relay-pty-orchestrator.js.map +1 -0
  57. package/dist/shared.d.ts +201 -0
  58. package/dist/shared.d.ts.map +1 -0
  59. package/dist/shared.js +341 -0
  60. package/dist/shared.js.map +1 -0
  61. package/dist/stuck-detector.d.ts +161 -0
  62. package/dist/stuck-detector.d.ts.map +1 -0
  63. package/dist/stuck-detector.js +402 -0
  64. package/dist/stuck-detector.js.map +1 -0
  65. package/dist/tmux-resolver.d.ts +55 -0
  66. package/dist/tmux-resolver.d.ts.map +1 -0
  67. package/dist/tmux-resolver.js +175 -0
  68. package/dist/tmux-resolver.js.map +1 -0
  69. package/dist/tmux-wrapper.d.ts +345 -0
  70. package/dist/tmux-wrapper.d.ts.map +1 -0
  71. package/dist/tmux-wrapper.js +1747 -0
  72. package/dist/tmux-wrapper.js.map +1 -0
  73. package/dist/trajectory-integration.d.ts +292 -0
  74. package/dist/trajectory-integration.d.ts.map +1 -0
  75. package/dist/trajectory-integration.js +979 -0
  76. package/dist/trajectory-integration.js.map +1 -0
  77. package/dist/wrapper-types.d.ts +41 -0
  78. package/dist/wrapper-types.d.ts.map +1 -0
  79. package/dist/wrapper-types.js +7 -0
  80. package/dist/wrapper-types.js.map +1 -0
  81. package/package.json +63 -0
  82. package/src/__fixtures__/claude-outputs.ts +471 -0
  83. package/src/__fixtures__/codex-outputs.ts +99 -0
  84. package/src/__fixtures__/gemini-outputs.ts +151 -0
  85. package/src/__fixtures__/index.ts +47 -0
  86. package/src/auth-detection.ts +244 -0
  87. package/src/base-wrapper.test.ts +540 -0
  88. package/src/base-wrapper.ts +741 -0
  89. package/src/client.test.ts +262 -0
  90. package/src/client.ts +984 -0
  91. package/src/id-generator.test.ts +71 -0
  92. package/src/id-generator.ts +69 -0
  93. package/src/idle-detector.test.ts +390 -0
  94. package/src/idle-detector.ts +370 -0
  95. package/src/inbox.test.ts +233 -0
  96. package/src/inbox.ts +89 -0
  97. package/src/index.ts +170 -0
  98. package/src/parser.regression.test.ts +251 -0
  99. package/src/parser.test.ts +1359 -0
  100. package/src/parser.ts +1477 -0
  101. package/src/prompt-composer.test.ts +219 -0
  102. package/src/prompt-composer.ts +231 -0
  103. package/src/relay-pty-orchestrator.test.ts +1027 -0
  104. package/src/relay-pty-orchestrator.ts +2270 -0
  105. package/src/shared.test.ts +221 -0
  106. package/src/shared.ts +454 -0
  107. package/src/stuck-detector.test.ts +303 -0
  108. package/src/stuck-detector.ts +511 -0
  109. package/src/tmux-resolver.test.ts +104 -0
  110. package/src/tmux-resolver.ts +207 -0
  111. package/src/tmux-wrapper.test.ts +316 -0
  112. package/src/tmux-wrapper.ts +2010 -0
  113. package/src/trajectory-detection.test.ts +151 -0
  114. package/src/trajectory-integration.ts +1261 -0
  115. 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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AA0BzB,MAAM,cAAc,GAAiC;IACnD,YAAY,EAAE,GAAG;IACjB,WAAW,EAAE,KAAK;IAClB,mBAAmB,EAAE,GAAG;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,qBAAqB;IACxB,cAAc,GAAG,CAAC,CAAC;IACnB,YAAY,GAAG,EAAE,CAAC;IAClB,GAAG,GAAkB,IAAI,CAAC;IAC1B,MAAM,CAA+B;IAE7C,YAAY,SAA6B,EAAE;QACzC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC/C,sEAAsE;QACtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,GAAW;QAChB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,IAAI,KAAK,CAAC;QAE3B,sBAAsB;QACtB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACvD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,wBAAwB;QAC9B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,CAAC,+BAA+B;QAC9C,CAAC;QAED,IAAI,CAAC;YACH,4CAA4C;YAC5C,wEAAwE;YACxE,MAAM,QAAQ,GAAG,SAAS,IAAI,CAAC,GAAG,OAAO,CAAC;YAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,uBAAuB;YAEhD,2CAA2C;YAC3C,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBAClB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,uCAAuC;YACpE,CAAC;YAED,qDAAqD;YACrD,MAAM,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG,QAAQ,CAAC;YAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAEzD,0CAA0C;YAC1C,MAAM,iBAAiB,GAAG;gBACxB,YAAY;gBACZ,uBAAuB;gBACvB,WAAW;gBACX,YAAY;gBACZ,0BAA0B;gBAC1B,WAAW;gBACX,SAAS,EAAG,aAAa;gBACzB,kBAAkB,EAAG,iBAAiB;aACvC,CAAC;YAEF,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACnE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,+CAA+C;QAC9D,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,cAAc;QACZ,8DAA8D;QAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QAEjD,6BAA6B;QAC7B,MAAM,kBAAkB,GAAG;YACzB,eAAe;YACf,gBAAgB;YAChB,eAAe;YACf,oBAAoB;YACpB,qBAAqB;YACrB,eAAe;YACf,iBAAiB;YACjB,mBAAmB;YACnB,cAAc;YACd,KAAK;YACL,kBAAkB;YAClB,UAAU;YACV,cAAc;YACd,kBAAkB;YAClB,OAAO,EAAG,eAAe;YACzB,eAAe,EAAG,uBAAuB;YACzC,yBAAyB;YACzB,gBAAgB;YAChB,oBAAoB;SACrB,CAAC;QAEF,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACK,gBAAgB;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAExC,yCAAyC;QACzC,MAAM,cAAc,GAAG;YACrB,WAAW,EAAY,iBAAiB;YACxC,SAAS,EAAc,oBAAoB;YAC3C,OAAO,EAAgB,kBAAkB;YACzC,OAAO,EAAgB,mBAAmB;YAC1C,QAAQ,EAAe,eAAe;YACtC,SAAS,EAAc,sBAAsB;YAC7C,OAAO,EAAgB,gBAAgB;YACvC,OAAO,EAAgB,iBAAiB;YACxC,OAAO,EAAgB,gBAAgB;SACxC,CAAC;QAEF,uCAAuC;QACvC,MAAM,UAAU,GAAG;YACjB,WAAW,EAAY,iCAAiC;YACxD,KAAK,EAAkB,qCAAqC;YAC5D,WAAW,EAAY,sBAAsB;YAC7C,QAAQ,EAAe,aAAa;YACpC,QAAQ,EAAe,eAAe;YACtC,QAAQ,EAAe,aAAa;YACpC,QAAQ,EAAe,oBAAoB;SAC5C,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5B,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,UAAqC,EAAE;QAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;QACpE,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,mDAAmD;QACnD,MAAM,YAAY,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QACrD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;YAC1B,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,eAAe;oBACvB,UAAU,EAAE,IAAI,EAAE,6BAA6B;oBAC/C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,OAAO,EAAE,YAAY,CAAC,KAAK;iBAC5B,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,oDAAoD;gBACpD,OAAO;oBACL,MAAM,EAAE,KAAK;oBACb,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC;4BACR,MAAM,EAAE,eAAe;4BACvB,UAAU,EAAE,IAAI;4BAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;4BACrB,OAAO,EAAE,iBAAiB;yBAC3B,CAAC;oBACF,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QACD,6DAA6D;QAE7D,2BAA2B;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,UAAU,EAAE,CAAC;YAC3B,sDAAsD;YACtD,2DAA2D;YAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,iBAAiB;gBAC7B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,OAAO,EAAE,GAAG,SAAS,IAAI;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,kDAAkD;QAClD,IAAI,SAAS,GAAG,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC;gBACX,MAAM,EAAE,gBAAgB;gBACxB,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QAC5F,CAAC;QAED,kBAAkB;QAClB,wDAAwD;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;QAEhE,OAAO;YACL,MAAM,EAAE,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB;YAC7D,UAAU,EAAE,kBAAkB;YAC9B,OAAO;YACP,YAAY,EAAE,IAAI,CAAC,cAAc,EAAE;SACpC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,EAAE,MAAM,GAAG,GAAG;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;QAChD,CAAC;QAED,iCAAiC;QACjC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACnC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,WAAmB;IAEnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACpD,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,CAAC;QACH,iDAAiD;QACjD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAChC,IAAI,QAAQ,mBAAmB,WAAW,+BAA+B,CAC1E,CAAC;QACF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAA6B,EAAE,EAC/B,UAA+B,EAAE;IAEjC,OAAO,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC3C,CAAC"}
@@ -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"}