baxian 2.0.18 → 2.0.19

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 (33) hide show
  1. package/dist/agent/detect/classify.d.ts +7 -0
  2. package/dist/agent/detect/classify.d.ts.map +1 -0
  3. package/dist/agent/detect/classify.js +42 -0
  4. package/dist/agent/detect/classify.js.map +1 -0
  5. package/dist/agent/detect/gate.d.ts +2 -2
  6. package/dist/agent/detect/gate.d.ts.map +1 -1
  7. package/dist/agent/detect/gate.js +17 -63
  8. package/dist/agent/detect/gate.js.map +1 -1
  9. package/dist/agent/detect/manifest.d.ts +3 -2
  10. package/dist/agent/detect/manifest.d.ts.map +1 -1
  11. package/dist/agent/detect/manifest.js +36 -63
  12. package/dist/agent/detect/manifest.js.map +1 -1
  13. package/dist/agent/detect/manifests/claude-code.json +387 -153
  14. package/dist/agent/detect/manifests/codex.json +137 -63
  15. package/dist/agent/detect/manifests/opencode.json +69 -17
  16. package/dist/agent/detect/manifests/qodercli.json +84 -25
  17. package/dist/agent/detect/region.d.ts +2 -2
  18. package/dist/agent/detect/region.d.ts.map +1 -1
  19. package/dist/agent/detect/region.js +122 -101
  20. package/dist/agent/detect/region.js.map +1 -1
  21. package/dist/agent/manager.d.ts +1 -0
  22. package/dist/agent/manager.d.ts.map +1 -1
  23. package/dist/agent/manager.js +85 -57
  24. package/dist/agent/manager.js.map +1 -1
  25. package/dist/agent/tmux-probe-poller.d.ts +0 -1
  26. package/dist/agent/tmux-probe-poller.d.ts.map +1 -1
  27. package/dist/agent/tmux-probe-poller.js +11 -34
  28. package/dist/agent/tmux-probe-poller.js.map +1 -1
  29. package/dist/agent/tmux.d.ts +3 -14
  30. package/dist/agent/tmux.d.ts.map +1 -1
  31. package/dist/agent/tmux.js +35 -235
  32. package/dist/agent/tmux.js.map +1 -1
  33. package/package.json +1 -1
@@ -5,110 +5,184 @@
5
5
  "id": "osc_title_blocked",
6
6
  "state": "pending",
7
7
  "priority": 1100,
8
- "region": "oscTitle",
8
+ "region": "osc_title",
9
9
  "visibleBlocker": true,
10
- "contains": ["Action Required"]
10
+ "contains": [
11
+ "Action Required"
12
+ ]
11
13
  },
12
14
  {
13
15
  "id": "osc_title_working",
14
16
  "state": "working",
15
17
  "priority": 1050,
16
- "region": "oscTitle",
18
+ "region": "osc_title",
17
19
  "visibleWorking": true,
18
- "regex": ["^[\\u2800-\\u28FF] "]
20
+ "regex": [
21
+ "(?:^| )[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏](?: |$)"
22
+ ]
19
23
  },
20
24
  {
21
25
  "id": "transcript_viewer",
22
26
  "state": "unknown",
23
- "priority": 1200,
24
- "region": "tailNonEmpty(1)",
27
+ "priority": 1000,
28
+ "region": "after_last_prompt_marker",
25
29
  "skipStateUpdate": true,
30
+ "contains": [
31
+ "↑/↓ to scroll",
32
+ "pgup/pgdn to",
33
+ "home/end to jump",
34
+ "q to quit"
35
+ ],
26
36
  "any": [
27
- { "contains": ["↑/↓ to scroll", "q to quit"] },
28
- { "contains": ["esc to edit prev"] },
29
- { "contains": ["esc/← to edit prev"] }
37
+ {
38
+ "contains": [
39
+ "esc to edit prev"
40
+ ]
41
+ },
42
+ {
43
+ "contains": [
44
+ "esc/← to edit prev"
45
+ ]
46
+ }
47
+ ]
48
+ },
49
+ {
50
+ "id": "trust_directory",
51
+ "state": "pending",
52
+ "priority": 950,
53
+ "region": "top_non_empty_lines(20)",
54
+ "visibleBlocker": true,
55
+ "all": [
56
+ {
57
+ "regex": [
58
+ "^> You are in [^\\r\\n]+(?:\\r?\\n|$)"
59
+ ]
60
+ },
61
+ {
62
+ "regex": [
63
+ "(?s)Do\\s+you\\s+trust\\s+the\\s+contents\\s+of\\s+this\\s+directory\\?"
64
+ ]
65
+ }
30
66
  ]
31
67
  },
32
68
  {
33
69
  "id": "live_strong_blocker",
34
70
  "state": "pending",
35
71
  "priority": 900,
36
- "region": "afterLastPromptMarker",
72
+ "region": "after_last_prompt_marker",
37
73
  "visibleBlocker": true,
38
74
  "any": [
39
- { "contains": ["press enter to confirm or esc to cancel"] },
40
- { "contains": ["enter to submit answer"] },
41
- { "contains": ["enter to submit all"] },
42
- { "contains": ["allow command?"] }
43
- ],
44
- "notAfter": [
45
- { "lineRegex": ["^[ \\t]*(?:[•·][ \\t]+)?Working[ \\t]*\\("] },
46
- { "regex": ["[eE]sc to interru(?:pt|p(?:…|\\.{3})?)"] },
47
- { "lineRegex": ["^[ \\t]*›[ \\t]*$"] },
48
- { "lineRegex": ["^→ [A-Za-z0-9][\\w.-]*(?:\\s+git:\\([^\\s)]+\\))?\\s*$"] },
49
- { "regex": ["(?:^|\\n)› [^\\n]+\\n\\n\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*(?:\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*){0,2}\\s+·[^\\n]*(?:\\n\\s*)?$"] },
50
- { "lineRegex": ["^\\s*permissions:\\s*YOLO mode\\s*$"] }
75
+ {
76
+ "contains": [
77
+ "press enter to confirm or esc to cancel"
78
+ ]
79
+ },
80
+ {
81
+ "contains": [
82
+ "enter to submit answer"
83
+ ]
84
+ },
85
+ {
86
+ "contains": [
87
+ "enter to submit all"
88
+ ]
89
+ },
90
+ {
91
+ "contains": [
92
+ "allow command?"
93
+ ]
94
+ }
51
95
  ]
52
96
  },
53
97
  {
54
98
  "id": "weak_blocker",
55
99
  "state": "pending",
56
100
  "priority": 600,
57
- "region": "whole",
58
- "visibleBlocker": true,
101
+ "region": "whole_recent",
59
102
  "any": [
60
- { "contains": ["[y/n]"] },
61
- { "contains": ["yes (y)"] },
62
- { "contains": ["do you want to"], "any": [{ "contains": ["yes"] }, { "lineRegex": ["^\\s*❯\\s+\\S"] }] },
63
- { "contains": ["would you like to"], "any": [{ "contains": ["yes"] }, { "lineRegex": ["^\\s*❯\\s+\\S"] }] }
64
- ],
65
- "notAfter": [
66
- { "lineRegex": ["^[ \\t]*(?:[•·][ \\t]+)?Working[ \\t]*\\("] },
67
- { "regex": ["[eE]sc to interru(?:pt|p(?:…|\\.{3})?)"] },
68
- { "lineRegex": ["^[ \\t]*›[ \\t]*$"] },
69
- { "lineRegex": ["^→ [A-Za-z0-9][\\w.-]*(?:\\s+git:\\([^\\s)]+\\))?\\s*$"] },
70
- { "regex": ["(?:^|\\n)› [^\\n]+\\n\\n\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*(?:\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*){0,2}\\s+·[^\\n]*(?:\\n\\s*)?$"] },
71
- { "lineRegex": ["^\\s*permissions:\\s*YOLO mode\\s*$"] }
103
+ {
104
+ "contains": [
105
+ "[y/n]"
106
+ ]
107
+ },
108
+ {
109
+ "contains": [
110
+ "yes (y)"
111
+ ]
112
+ },
113
+ {
114
+ "contains": [
115
+ "do you want to"
116
+ ],
117
+ "any": [
118
+ {
119
+ "contains": [
120
+ "yes"
121
+ ]
122
+ },
123
+ {
124
+ "contains": [
125
+ "❯"
126
+ ]
127
+ }
128
+ ]
129
+ },
130
+ {
131
+ "contains": [
132
+ "would you like to"
133
+ ],
134
+ "any": [
135
+ {
136
+ "contains": [
137
+ "yes"
138
+ ]
139
+ },
140
+ {
141
+ "contains": [
142
+ "❯"
143
+ ]
144
+ }
145
+ ]
146
+ }
72
147
  ]
73
148
  },
74
149
  {
75
- "id": "working_line",
150
+ "id": "screen_working_fallback",
76
151
  "state": "working",
77
- "priority": 300,
78
- "region": "afterLastPromptMarker",
152
+ "priority": 500,
153
+ "region": "bottom_non_empty_lines(3)",
79
154
  "visibleWorking": true,
80
- "lineRegex": ["^[ \\t]*(?:[•·][ \\t]+)?Working[ \\t]*\\("]
81
- },
82
- {
83
- "id": "esc_to_interrupt_working",
84
- "state": "working",
85
- "priority": 240,
86
- "region": "afterLastPromptMarker",
87
- "regex": ["[eE]sc to interru(?:pt|p(?:…|\\.{3})?)"]
88
- },
89
- {
90
- "id": "codex_idle_prompt",
91
- "state": "idle",
92
- "priority": 150,
93
- "region": "tail(6)",
94
- "visibleIdle": true,
95
- "any": [
96
- { "regex": ["(?:^|\\n)[ \\t]*›[ \\t]*(?:\\n[ \\t]*)*$"] },
97
- { "regex": ["(?:^|\\n)→ [A-Za-z0-9][\\w.-]*(?:[ \\t]+git:\\([^\\s)]+\\))?[ \\t]*(?:\\n[ \\t]*)*$"] },
98
- { "regex": ["(?:^|\\n)› [^\\n]+\\n\\n\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*(?:\\s+[A-Za-z0-9][A-Za-z0-9._:/-]*){0,2}\\s+·[^\\n]*(?:\\n\\s*)?$"] },
99
- { "regex": ["(?:^|\\n)[ \\t]*permissions:[ \\t]*YOLO mode[ \\t]*(?:\\n[ \\t]*)*$"] }
155
+ "lineRegex": [
156
+ "^[•◦]\\s+Working \\([^)]*esc to interrupt\\)(?: · .*)?$"
157
+ ],
158
+ "not": [
159
+ {
160
+ "contains": [
161
+ "■ Conversation interrupted"
162
+ ]
163
+ }
100
164
  ]
101
165
  },
102
166
  {
103
167
  "id": "osc_title_idle",
104
168
  "state": "idle",
105
169
  "priority": 100,
106
- "region": "oscTitle",
170
+ "region": "osc_title",
107
171
  "visibleIdle": true,
108
- "regex": ["\\S"],
172
+ "regex": [
173
+ "\\S"
174
+ ],
109
175
  "not": [
110
- { "regex": ["^[\\u2800-\\u28FF]"] },
111
- { "contains": ["Action Required"] }
176
+ {
177
+ "regex": [
178
+ "(?:^| )[⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏](?: |$)"
179
+ ]
180
+ },
181
+ {
182
+ "contains": [
183
+ "Action Required"
184
+ ]
185
+ }
112
186
  ]
113
187
  }
114
188
  ]
@@ -5,40 +5,92 @@
5
5
  "id": "permission_required",
6
6
  "state": "pending",
7
7
  "priority": 300,
8
- "region": "whole",
8
+ "region": "whole_recent",
9
9
  "visibleBlocker": true,
10
10
  "any": [
11
- { "contains": ["△ Permission required"] },
12
- { "contains": ["Permission required"] },
13
- { "contains": ["Allow once"], "any": [{ "contains": ["Allow always"] }, { "contains": ["Reject"] }] }
11
+ {
12
+ "contains": [
13
+ "△ Permission required"
14
+ ]
15
+ },
16
+ {
17
+ "contains": [
18
+ "esc dismiss"
19
+ ],
20
+ "any": [
21
+ {
22
+ "contains": [
23
+ "enter confirm"
24
+ ]
25
+ },
26
+ {
27
+ "contains": [
28
+ "enter submit"
29
+ ]
30
+ },
31
+ {
32
+ "contains": [
33
+ "enter toggle"
34
+ ]
35
+ }
36
+ ],
37
+ "all": [
38
+ {
39
+ "any": [
40
+ {
41
+ "contains": [
42
+ "↑↓ select"
43
+ ]
44
+ },
45
+ {
46
+ "contains": [
47
+ "⇆ tab"
48
+ ]
49
+ }
50
+ ]
51
+ }
52
+ ]
53
+ }
14
54
  ]
15
55
  },
16
56
  {
17
57
  "id": "interrupt_hint_working",
18
58
  "state": "working",
19
59
  "priority": 110,
20
- "region": "whole",
60
+ "region": "whole_recent",
21
61
  "visibleWorking": true,
22
62
  "any": [
23
- { "regex": ["esc\\s+(?:to\\s+)?interrupt"] },
24
- { "contains": ["ctrl+c to interrupt"] }
63
+ {
64
+ "contains": [
65
+ "esc to interrupt"
66
+ ]
67
+ },
68
+ {
69
+ "contains": [
70
+ "ctrl+c to interrupt"
71
+ ]
72
+ },
73
+ {
74
+ "contains": [
75
+ "press esc to interrupt"
76
+ ]
77
+ },
78
+ {
79
+ "lineRegex": [
80
+ "(?i).*opencode.*esc (again to )?interrupt"
81
+ ]
82
+ }
25
83
  ]
26
84
  },
27
85
  {
28
86
  "id": "progress_bar_working",
29
87
  "state": "working",
30
88
  "priority": 100,
31
- "region": "whole",
89
+ "region": "whole_recent",
32
90
  "visibleWorking": true,
33
- "regex": ["(?:■|⬝){4,}"]
34
- },
35
- {
36
- "id": "idle_composer",
37
- "state": "idle",
38
- "priority": 90,
39
- "region": "tail(6)",
40
- "visibleIdle": true,
41
- "contains": ["ctrl+p commands"]
91
+ "regex": [
92
+ "(■|⬝){4,}"
93
+ ]
42
94
  }
43
95
  ]
44
96
  }
@@ -2,48 +2,107 @@
2
2
  "id": "qodercli",
3
3
  "rules": [
4
4
  {
5
- "id": "confirmation_blocker",
5
+ "id": "confirmation_or_input_blocker",
6
6
  "state": "pending",
7
7
  "priority": 300,
8
- "region": "whole",
8
+ "region": "whole_recent",
9
9
  "visibleBlocker": true,
10
10
  "any": [
11
- { "contains": ["Permission Required"] },
12
- { "contains": ["Allow this command to run"] },
13
- { "contains": ["Do you want to allow"] },
14
- { "contains": ["waiting for user confirmation"] },
15
- { "contains": ["awaiting approval"] },
16
- { "contains": ["permission required"] },
17
- { "contains": ["allow once or always?"] },
18
- { "contains": ["asking user"] },
19
- { "contains": ["enter your response"] },
20
- { "contains": ["review your answers:"] },
21
- { "contains": ["shell awaiting input"] }
11
+ {
12
+ "contains": [
13
+ "waiting for user confirmation"
14
+ ],
15
+ "any": [
16
+ {
17
+ "contains": [
18
+ "yes"
19
+ ]
20
+ },
21
+ {
22
+ "contains": [
23
+ "no"
24
+ ]
25
+ },
26
+ {
27
+ "contains": [
28
+ "allow"
29
+ ]
30
+ },
31
+ {
32
+ "contains": [
33
+ "reject"
34
+ ]
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "contains": [
40
+ "awaiting approval"
41
+ ],
42
+ "any": [
43
+ {
44
+ "contains": [
45
+ "allow"
46
+ ]
47
+ },
48
+ {
49
+ "contains": [
50
+ "reject"
51
+ ]
52
+ }
53
+ ]
54
+ },
55
+ {
56
+ "contains": [
57
+ "permission required"
58
+ ]
59
+ },
60
+ {
61
+ "contains": [
62
+ "allow once or always?"
63
+ ]
64
+ },
65
+ {
66
+ "contains": [
67
+ "asking user"
68
+ ]
69
+ },
70
+ {
71
+ "contains": [
72
+ "enter your response"
73
+ ]
74
+ },
75
+ {
76
+ "contains": [
77
+ "review your answers:"
78
+ ]
79
+ },
80
+ {
81
+ "contains": [
82
+ "shell awaiting input"
83
+ ]
84
+ }
22
85
  ]
23
86
  },
24
87
  {
25
88
  "id": "cancel_hint_working",
26
89
  "state": "working",
27
90
  "priority": 100,
28
- "region": "whole",
91
+ "region": "whole_recent",
29
92
  "visibleWorking": true,
30
- "contains": ["(esc to cancel,"]
93
+ "contains": [
94
+ "(esc to cancel,"
95
+ ]
31
96
  },
32
97
  {
33
98
  "id": "spinner_working",
34
99
  "state": "working",
35
100
  "priority": 90,
36
- "region": "whole",
101
+ "region": "whole_recent",
37
102
  "visibleWorking": true,
38
- "lineRegex": ["^\\s*[\\u2800-\\u28FF]\\s+.*[A-Za-z]"]
39
- },
40
- {
41
- "id": "idle_composer",
42
- "state": "idle",
43
- "priority": 80,
44
- "region": "tail(6)",
45
- "visibleIdle": true,
46
- "contains": ["Type your message or @"]
103
+ "lineRegex": [
104
+ "^\\s*[\\u2800-\\u28FF]\\s+.*\\p{Alphabetic}"
105
+ ]
47
106
  }
48
107
  ]
49
108
  }
@@ -1,8 +1,8 @@
1
1
  export interface DetectionInput {
2
2
  screen: string;
3
3
  oscTitle: string;
4
+ oscProgress?: string;
4
5
  }
5
- export declare function isHorizontalRule(line: string): boolean;
6
- export declare function tailNonEmpty(screen: string, count: number): string;
6
+ export declare function isKnownRegion(spec: string): boolean;
7
7
  export declare function extractRegion(input: DetectionInput, spec: string): string;
8
8
  //# sourceMappingURL=region.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CActD;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBlE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CA6EzE"}
1
+ {"version":3,"file":"region.d.ts","sourceRoot":"","sources":["../../../src/agent/detect/region.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA0ID,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzE"}