@love-moon/tui-driver 0.2.12 → 0.2.13
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/driver/TuiDriver.d.ts +64 -0
- package/dist/driver/TuiDriver.d.ts.map +1 -1
- package/dist/driver/TuiDriver.js +924 -8
- package/dist/driver/TuiDriver.js.map +1 -1
- package/dist/driver/index.d.ts +2 -1
- package/dist/driver/index.d.ts.map +1 -1
- package/dist/driver/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/pty/PtySession.d.ts +1 -0
- package/dist/pty/PtySession.d.ts.map +1 -1
- package/dist/pty/PtySession.js +9 -0
- package/dist/pty/PtySession.js.map +1 -1
- package/docs/how-to-add-a-new-backend.md +212 -0
- package/package.json +1 -1
- package/src/driver/TuiDriver.ts +1112 -10
- package/src/driver/index.ts +9 -1
- package/src/index.ts +2 -0
- package/src/pty/PtySession.ts +10 -0
- package/test/codex-session-discovery.test.ts +101 -0
- package/test/session-file-extraction.test.ts +257 -0
- package/test/timeout-resolution.test.ts +37 -0
|
@@ -23,6 +23,8 @@ export interface AskResult {
|
|
|
23
23
|
replyInProgress?: boolean;
|
|
24
24
|
statusLine?: string;
|
|
25
25
|
statusDoneLine?: string;
|
|
26
|
+
sessionId?: string;
|
|
27
|
+
sessionFilePath?: string;
|
|
26
28
|
}
|
|
27
29
|
export type HealthReason = "healthy" | "login_required" | "permission_required" | "error_state" | "not_ready" | "process_exited";
|
|
28
30
|
export interface HealthStatus {
|
|
@@ -40,6 +42,18 @@ export interface TuiScreenSignals {
|
|
|
40
42
|
statusLine?: string;
|
|
41
43
|
statusDoneLine?: string;
|
|
42
44
|
}
|
|
45
|
+
export interface TuiSessionInfo {
|
|
46
|
+
backend: string;
|
|
47
|
+
sessionId: string;
|
|
48
|
+
sessionFilePath: string;
|
|
49
|
+
}
|
|
50
|
+
export interface TuiSessionUsageSummary {
|
|
51
|
+
backend: string;
|
|
52
|
+
sessionId: string;
|
|
53
|
+
sessionFilePath: string;
|
|
54
|
+
tokenUsagePercent?: number;
|
|
55
|
+
contextUsagePercent?: number;
|
|
56
|
+
}
|
|
43
57
|
export declare class TuiDriver extends EventEmitter {
|
|
44
58
|
private pty;
|
|
45
59
|
private screen;
|
|
@@ -52,22 +66,69 @@ export declare class TuiDriver extends EventEmitter {
|
|
|
52
66
|
private onSignals?;
|
|
53
67
|
private isBooted;
|
|
54
68
|
private isKilled;
|
|
69
|
+
private sessionCwd;
|
|
70
|
+
private sessionInfo;
|
|
71
|
+
private lastSessionInfo;
|
|
72
|
+
private sessionUsageCache;
|
|
73
|
+
private initialCommand;
|
|
74
|
+
private initialArgs;
|
|
55
75
|
constructor(options: TuiDriverOptions);
|
|
56
76
|
private setupEventHandlers;
|
|
57
77
|
private log;
|
|
58
78
|
get state(): TuiState;
|
|
59
79
|
get running(): boolean;
|
|
80
|
+
getSessionInfo(): TuiSessionInfo | null;
|
|
81
|
+
ensureSessionInfo(timeoutMs?: number): Promise<TuiSessionInfo | null>;
|
|
82
|
+
getSessionUsageSummary(): Promise<TuiSessionUsageSummary | null>;
|
|
60
83
|
boot(): Promise<void>;
|
|
61
84
|
ensureReady(): Promise<void>;
|
|
62
85
|
ask(prompt: string): Promise<AskResult>;
|
|
63
86
|
private prepareTurn;
|
|
64
87
|
private typePrompt;
|
|
65
88
|
private submit;
|
|
89
|
+
private supportsSessionFileTracking;
|
|
90
|
+
private discoverSessionInfo;
|
|
91
|
+
private detectSessionInfoByBackend;
|
|
92
|
+
private detectCodexSessionInfo;
|
|
93
|
+
private detectClaudeSessionInfo;
|
|
94
|
+
private detectCopilotSessionInfo;
|
|
95
|
+
private querySqliteRow;
|
|
96
|
+
private encodeClaudeProjectPath;
|
|
97
|
+
private readWorkspaceYamlValue;
|
|
98
|
+
private pathExists;
|
|
99
|
+
private captureSessionFileCheckpoint;
|
|
100
|
+
private readSessionFileStat;
|
|
101
|
+
private waitForSessionFileGrowth;
|
|
102
|
+
private waitForSessionFileIdle;
|
|
103
|
+
private extractAnswerFromSessionFile;
|
|
104
|
+
private extractSessionUsageSummaryFromJsonLines;
|
|
105
|
+
private extractCodexUsageFromJsonLines;
|
|
106
|
+
private extractClaudeUsageFromJsonLines;
|
|
107
|
+
private extractCopilotUsageFromJsonLines;
|
|
108
|
+
private readNumberPath;
|
|
109
|
+
private normalizePercent;
|
|
110
|
+
private requiresSessionCompletionMarker;
|
|
111
|
+
private hasSessionCompletionMarker;
|
|
112
|
+
private readSessionFileJsonLines;
|
|
113
|
+
private extractAssistantReplyFromJsonLines;
|
|
114
|
+
private hasCodexTaskCompleteFromJsonLines;
|
|
115
|
+
private hasCopilotTurnEndFromJsonLines;
|
|
116
|
+
private extractCodexTaskCompleteMessageFromJsonLines;
|
|
117
|
+
private isCodexTaskCompleteEntry;
|
|
118
|
+
private isCopilotTurnEndEntry;
|
|
119
|
+
private summarizeForLog;
|
|
120
|
+
private extractCodexAssistantText;
|
|
121
|
+
private extractClaudeAssistantText;
|
|
122
|
+
private extractCopilotAssistantText;
|
|
66
123
|
private waitStreamStart;
|
|
67
124
|
private waitStreamEnd;
|
|
68
125
|
private extractAnswer;
|
|
69
126
|
private recovery;
|
|
70
127
|
private restart;
|
|
128
|
+
private resolveRestartSessionInfo;
|
|
129
|
+
private resolveRestartArgs;
|
|
130
|
+
private stripResumeArgs;
|
|
131
|
+
private buildResumeArgsForBackend;
|
|
71
132
|
private captureSnapshot;
|
|
72
133
|
snapshot(): ScreenSnapshot;
|
|
73
134
|
/**
|
|
@@ -86,12 +147,15 @@ export declare class TuiDriver extends EventEmitter {
|
|
|
86
147
|
getSignals(snapshot?: ScreenSnapshot): TuiScreenSignals;
|
|
87
148
|
sendKeys(keys: string[]): Promise<void>;
|
|
88
149
|
write(data: string): Promise<void>;
|
|
150
|
+
forceRestart(): Promise<void>;
|
|
89
151
|
kill(): void;
|
|
90
152
|
private createSessionClosedError;
|
|
91
153
|
private assertAliveOrThrow;
|
|
92
154
|
private sleep;
|
|
93
155
|
private terminateSessionForLoginRequired;
|
|
94
156
|
private resolveTimeout;
|
|
157
|
+
private normalizeTimeoutValue;
|
|
158
|
+
private resolveMaxStageTimeoutMs;
|
|
95
159
|
private waitForScrollbackIdle;
|
|
96
160
|
private findLastMatch;
|
|
97
161
|
private anyAddedLineMatches;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TuiDriver.d.ts","sourceRoot":"","sources":["../../src/driver/TuiDriver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"TuiDriver.d.ts","sourceRoot":"","sources":["../../src/driver/TuiDriver.ts"],"names":[],"mappings":"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"}
|