@diggerhq/anyware 0.7.14 → 0.7.16
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/claude/claudeArgs.d.ts +30 -0
- package/dist/claude/claudeArgs.d.ts.map +1 -0
- package/dist/claude/claudeArgs.js +206 -0
- package/dist/claude/claudeArgs.js.map +1 -0
- package/dist/claude/claudeLocalLauncher.d.ts +7 -1
- package/dist/claude/claudeLocalLauncher.d.ts.map +1 -1
- package/dist/claude/claudeLocalLauncher.js +9 -2
- package/dist/claude/claudeLocalLauncher.js.map +1 -1
- package/dist/claude/claudeRemoteLauncher.d.ts +5 -1
- package/dist/claude/claudeRemoteLauncher.d.ts.map +1 -1
- package/dist/claude/claudeRemoteLauncher.js +5 -1
- package/dist/claude/claudeRemoteLauncher.js.map +1 -1
- package/dist/claude/loop.d.ts +3 -0
- package/dist/claude/loop.d.ts.map +1 -1
- package/dist/claude/loop.js +9 -2
- package/dist/claude/loop.js.map +1 -1
- package/dist/claude/sessionScanner.d.ts +2 -0
- package/dist/claude/sessionScanner.d.ts.map +1 -1
- package/dist/claude/sessionScanner.js +9 -0
- package/dist/claude/sessionScanner.js.map +1 -1
- package/dist/main.js +45 -4
- package/dist/main.js.map +1 -1
- package/dist/ui/statusBar.d.ts +51 -0
- package/dist/ui/statusBar.d.ts.map +1 -0
- package/dist/ui/statusBar.js +107 -0
- package/dist/ui/statusBar.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code argument validation
|
|
3
|
+
* Defines valid arguments that can be passed through to Claude Code
|
|
4
|
+
*/
|
|
5
|
+
export declare const CLAUDE_FLAG_ARGS: Set<string>;
|
|
6
|
+
export declare const CLAUDE_VALUE_ARGS: Set<string>;
|
|
7
|
+
export declare const ANYWARE_HANDLED_ARGS: Set<string>;
|
|
8
|
+
export declare const ALL_CLAUDE_ARGS: Set<string>;
|
|
9
|
+
export interface ValidationResult {
|
|
10
|
+
valid: boolean;
|
|
11
|
+
errors: string[];
|
|
12
|
+
warnings: string[];
|
|
13
|
+
validArgs: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validate Claude Code arguments
|
|
17
|
+
* @param args Array of arguments to validate
|
|
18
|
+
* @param allowHandledArgs If true, allows anyware-handled args (they'll pass through)
|
|
19
|
+
* @returns Validation result with errors, warnings, and filtered valid args
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateClaudeArgs(args: string[], allowHandledArgs?: boolean): ValidationResult;
|
|
22
|
+
/**
|
|
23
|
+
* Format validation errors for display
|
|
24
|
+
*/
|
|
25
|
+
export declare function formatValidationErrors(result: ValidationResult): string;
|
|
26
|
+
/**
|
|
27
|
+
* Get help text showing valid Claude Code arguments
|
|
28
|
+
*/
|
|
29
|
+
export declare function getClaudeArgsHelp(): string;
|
|
30
|
+
//# sourceMappingURL=claudeArgs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeArgs.d.ts","sourceRoot":"","sources":["../../src/claude/claudeArgs.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,gBAAgB,aAoB3B,CAAC;AAGH,eAAO,MAAM,iBAAiB,aA0B5B,CAAC;AAGH,eAAO,MAAM,oBAAoB,aAO/B,CAAC;AAGH,eAAO,MAAM,eAAe,aAG1B,CAAC;AAEH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,UAAQ,GAAG,gBAAgB,CAwD7F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAmBvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA6C1C"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code argument validation
|
|
3
|
+
* Defines valid arguments that can be passed through to Claude Code
|
|
4
|
+
*/
|
|
5
|
+
// Arguments that take no value (flags)
|
|
6
|
+
export const CLAUDE_FLAG_ARGS = new Set([
|
|
7
|
+
'--debug',
|
|
8
|
+
'-d',
|
|
9
|
+
'--verbose',
|
|
10
|
+
'--print',
|
|
11
|
+
'-p',
|
|
12
|
+
'--include-partial-messages',
|
|
13
|
+
'--mcp-debug',
|
|
14
|
+
'--dangerously-skip-permissions',
|
|
15
|
+
'--allow-dangerously-skip-permissions',
|
|
16
|
+
'--replay-user-messages',
|
|
17
|
+
'--continue',
|
|
18
|
+
'-c',
|
|
19
|
+
'--fork-session',
|
|
20
|
+
'--no-session-persistence',
|
|
21
|
+
'--ide',
|
|
22
|
+
'--strict-mcp-config',
|
|
23
|
+
'--disable-slash-commands',
|
|
24
|
+
'--chrome',
|
|
25
|
+
'--no-chrome',
|
|
26
|
+
]);
|
|
27
|
+
// Arguments that require a value
|
|
28
|
+
export const CLAUDE_VALUE_ARGS = new Set([
|
|
29
|
+
'--output-format',
|
|
30
|
+
'--json-schema',
|
|
31
|
+
'--input-format',
|
|
32
|
+
'--max-budget-usd',
|
|
33
|
+
'--allowedTools',
|
|
34
|
+
'--allowed-tools',
|
|
35
|
+
'--tools',
|
|
36
|
+
'--disallowedTools',
|
|
37
|
+
'--disallowed-tools',
|
|
38
|
+
'--mcp-config',
|
|
39
|
+
'--system-prompt',
|
|
40
|
+
'--append-system-prompt',
|
|
41
|
+
'--permission-mode',
|
|
42
|
+
'--resume',
|
|
43
|
+
'-r',
|
|
44
|
+
'--model',
|
|
45
|
+
'--agent',
|
|
46
|
+
'--betas',
|
|
47
|
+
'--fallback-model',
|
|
48
|
+
'--settings',
|
|
49
|
+
'--add-dir',
|
|
50
|
+
'--session-id',
|
|
51
|
+
'--agents',
|
|
52
|
+
'--setting-sources',
|
|
53
|
+
'--plugin-dir',
|
|
54
|
+
]);
|
|
55
|
+
// Arguments that anyware handles specially and should be filtered
|
|
56
|
+
export const ANYWARE_HANDLED_ARGS = new Set([
|
|
57
|
+
'--model', // anyware handles model via its own flag
|
|
58
|
+
'--resume', // anyware handles resume
|
|
59
|
+
'-r',
|
|
60
|
+
'--continue', // anyware handles continue
|
|
61
|
+
'-c',
|
|
62
|
+
'--settings', // anyware injects its own settings for hooks
|
|
63
|
+
]);
|
|
64
|
+
// All valid Claude args
|
|
65
|
+
export const ALL_CLAUDE_ARGS = new Set([
|
|
66
|
+
...CLAUDE_FLAG_ARGS,
|
|
67
|
+
...CLAUDE_VALUE_ARGS,
|
|
68
|
+
]);
|
|
69
|
+
/**
|
|
70
|
+
* Validate Claude Code arguments
|
|
71
|
+
* @param args Array of arguments to validate
|
|
72
|
+
* @param allowHandledArgs If true, allows anyware-handled args (they'll pass through)
|
|
73
|
+
* @returns Validation result with errors, warnings, and filtered valid args
|
|
74
|
+
*/
|
|
75
|
+
export function validateClaudeArgs(args, allowHandledArgs = false) {
|
|
76
|
+
const errors = [];
|
|
77
|
+
const warnings = [];
|
|
78
|
+
const validArgs = [];
|
|
79
|
+
let i = 0;
|
|
80
|
+
while (i < args.length) {
|
|
81
|
+
const arg = args[i];
|
|
82
|
+
// Check if it's a valid flag or value arg
|
|
83
|
+
if (CLAUDE_FLAG_ARGS.has(arg)) {
|
|
84
|
+
// It's a flag - check if anyware handles it
|
|
85
|
+
if (ANYWARE_HANDLED_ARGS.has(arg) && !allowHandledArgs) {
|
|
86
|
+
warnings.push(`'${arg}' is handled by anyware. Use anyware's own option instead.`);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
validArgs.push(arg);
|
|
90
|
+
}
|
|
91
|
+
i++;
|
|
92
|
+
}
|
|
93
|
+
else if (CLAUDE_VALUE_ARGS.has(arg)) {
|
|
94
|
+
// It's a value arg - needs a following value
|
|
95
|
+
if (i + 1 >= args.length) {
|
|
96
|
+
errors.push(`'${arg}' requires a value`);
|
|
97
|
+
i++;
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const value = args[i + 1];
|
|
101
|
+
// Check if the value looks like another flag
|
|
102
|
+
if (value.startsWith('-') && !value.match(/^-?\d/)) {
|
|
103
|
+
errors.push(`'${arg}' requires a value, but got '${value}'`);
|
|
104
|
+
i++;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Check if anyware handles it
|
|
108
|
+
if (ANYWARE_HANDLED_ARGS.has(arg) && !allowHandledArgs) {
|
|
109
|
+
warnings.push(`'${arg}' is handled by anyware. Use anyware's own option instead.`);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
validArgs.push(arg, value);
|
|
113
|
+
}
|
|
114
|
+
i += 2;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else if (arg.startsWith('-')) {
|
|
119
|
+
// Unknown flag/option
|
|
120
|
+
errors.push(`Unknown Claude Code argument: '${arg}'`);
|
|
121
|
+
i++;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Positional argument - Claude accepts a prompt as positional
|
|
125
|
+
validArgs.push(arg);
|
|
126
|
+
i++;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return {
|
|
130
|
+
valid: errors.length === 0,
|
|
131
|
+
errors,
|
|
132
|
+
warnings,
|
|
133
|
+
validArgs,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Format validation errors for display
|
|
138
|
+
*/
|
|
139
|
+
export function formatValidationErrors(result) {
|
|
140
|
+
const lines = [];
|
|
141
|
+
if (result.errors.length > 0) {
|
|
142
|
+
lines.push('Invalid Claude Code arguments:');
|
|
143
|
+
for (const error of result.errors) {
|
|
144
|
+
lines.push(` ✗ ${error}`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
if (result.warnings.length > 0) {
|
|
148
|
+
if (lines.length > 0)
|
|
149
|
+
lines.push('');
|
|
150
|
+
lines.push('Warnings:');
|
|
151
|
+
for (const warning of result.warnings) {
|
|
152
|
+
lines.push(` ⚠ ${warning}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return lines.join('\n');
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get help text showing valid Claude Code arguments
|
|
159
|
+
*/
|
|
160
|
+
export function getClaudeArgsHelp() {
|
|
161
|
+
return `
|
|
162
|
+
Valid Claude Code arguments (pass after --):
|
|
163
|
+
|
|
164
|
+
Flags (no value required):
|
|
165
|
+
--debug, -d Enable debug mode
|
|
166
|
+
--verbose Override verbose mode setting
|
|
167
|
+
--print, -p Print response and exit
|
|
168
|
+
--include-partial-messages
|
|
169
|
+
--dangerously-skip-permissions
|
|
170
|
+
--allow-dangerously-skip-permissions
|
|
171
|
+
--replay-user-messages
|
|
172
|
+
--fork-session Create new session ID when resuming
|
|
173
|
+
--no-session-persistence Disable session persistence
|
|
174
|
+
--ide Auto-connect to IDE
|
|
175
|
+
--strict-mcp-config Only use MCP servers from --mcp-config
|
|
176
|
+
--disable-slash-commands Disable slash commands
|
|
177
|
+
--chrome / --no-chrome Enable/disable Chrome integration
|
|
178
|
+
|
|
179
|
+
Options (require a value):
|
|
180
|
+
--output-format <format> text, json, or stream-json
|
|
181
|
+
--input-format <format> text or stream-json
|
|
182
|
+
--json-schema <schema> JSON Schema for structured output
|
|
183
|
+
--max-budget-usd <amount>
|
|
184
|
+
--allowed-tools <tools> Tools to allow
|
|
185
|
+
--disallowed-tools <tools> Tools to deny
|
|
186
|
+
--tools <tools> Available tools from built-in set
|
|
187
|
+
--mcp-config <config> MCP server configuration
|
|
188
|
+
--system-prompt <prompt>
|
|
189
|
+
--append-system-prompt <prompt>
|
|
190
|
+
--permission-mode <mode> acceptEdits, bypassPermissions, default, delegate, dontAsk, plan
|
|
191
|
+
--agent <agent> Agent for the session
|
|
192
|
+
--betas <betas> Beta headers
|
|
193
|
+
--fallback-model <model>
|
|
194
|
+
--add-dir <dirs> Additional directories
|
|
195
|
+
--session-id <uuid> Specific session ID
|
|
196
|
+
--agents <json> Custom agents JSON
|
|
197
|
+
--setting-sources <sources>
|
|
198
|
+
--plugin-dir <paths> Plugin directories
|
|
199
|
+
|
|
200
|
+
Note: --model, --resume, --continue are handled by anyware directly.
|
|
201
|
+
|
|
202
|
+
Example:
|
|
203
|
+
anyware run -- --permission-mode=bypassPermissions --verbose
|
|
204
|
+
`;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=claudeArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeArgs.js","sourceRoot":"","sources":["../../src/claude/claudeArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import type { Session } from './session.js';
|
|
2
2
|
export type LocalExitReason = 'switch' | 'exit';
|
|
3
|
+
export interface LocalLauncherOptions {
|
|
4
|
+
session: Session;
|
|
5
|
+
onThinkingChange?: (thinking: boolean) => void;
|
|
6
|
+
/** Called when Claude finishes responding (idle state) */
|
|
7
|
+
onIdle?: () => void;
|
|
8
|
+
}
|
|
3
9
|
/**
|
|
4
10
|
* Launch Claude in local mode with session scanning
|
|
5
11
|
* Returns 'switch' if we should switch to remote mode, 'exit' if we should exit
|
|
6
12
|
*/
|
|
7
|
-
export declare function claudeLocalLauncher(
|
|
13
|
+
export declare function claudeLocalLauncher(opts: LocalLauncherOptions): Promise<LocalExitReason>;
|
|
8
14
|
//# sourceMappingURL=claudeLocalLauncher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeLocalLauncher.d.ts","sourceRoot":"","sources":["../../src/claude/claudeLocalLauncher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,
|
|
1
|
+
{"version":3,"file":"claudeLocalLauncher.d.ts","sourceRoot":"","sources":["../../src/claude/claudeLocalLauncher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgL9F"}
|
|
@@ -6,7 +6,8 @@ import { generateHookSettingsFile, cleanupHookSettingsFile } from '../hooks/gene
|
|
|
6
6
|
* Launch Claude in local mode with session scanning
|
|
7
7
|
* Returns 'switch' if we should switch to remote mode, 'exit' if we should exit
|
|
8
8
|
*/
|
|
9
|
-
export async function claudeLocalLauncher(
|
|
9
|
+
export async function claudeLocalLauncher(opts) {
|
|
10
|
+
const { session, onThinkingChange, onIdle } = opts;
|
|
10
11
|
// Variable to hold scanner reference (needed in onHookEvent before scanner is created)
|
|
11
12
|
let scanner = null;
|
|
12
13
|
// Start hook server to receive session notifications from Claude
|
|
@@ -48,6 +49,7 @@ export async function claudeLocalLauncher(session) {
|
|
|
48
49
|
session.sendClaudeEvent(message);
|
|
49
50
|
}
|
|
50
51
|
},
|
|
52
|
+
onIdle,
|
|
51
53
|
});
|
|
52
54
|
// Register callback for when session ID is discovered (from other sources)
|
|
53
55
|
const scannerSessionCallback = (sessionId) => {
|
|
@@ -117,7 +119,12 @@ export async function claudeLocalLauncher(session) {
|
|
|
117
119
|
path: session.path,
|
|
118
120
|
sessionId: session.claudeSessionId,
|
|
119
121
|
onSessionFound: handleSessionStart,
|
|
120
|
-
onThinkingChange: (thinking) =>
|
|
122
|
+
onThinkingChange: (thinking) => {
|
|
123
|
+
session.sendThinking(thinking);
|
|
124
|
+
if (onThinkingChange) {
|
|
125
|
+
onThinkingChange(thinking);
|
|
126
|
+
}
|
|
127
|
+
},
|
|
121
128
|
abort: processAbortController.signal,
|
|
122
129
|
claudeArgs: session.claudeArgs,
|
|
123
130
|
hookSettingsPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeLocalLauncher.js","sourceRoot":"","sources":["../../src/claude/claudeLocalLauncher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAA2B,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"claudeLocalLauncher.js","sourceRoot":"","sources":["../../src/claude/claudeLocalLauncher.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,9 +3,13 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Session } from './session.js';
|
|
5
5
|
export type RemoteExitReason = 'switch' | 'exit';
|
|
6
|
+
export interface RemoteLauncherOptions {
|
|
7
|
+
session: Session;
|
|
8
|
+
onThinkingChange?: (thinking: boolean) => void;
|
|
9
|
+
}
|
|
6
10
|
/**
|
|
7
11
|
* Launch Claude in remote mode
|
|
8
12
|
* Returns 'switch' if we should switch to local mode, 'exit' if we should exit
|
|
9
13
|
*/
|
|
10
|
-
export declare function claudeRemoteLauncher(
|
|
14
|
+
export declare function claudeRemoteLauncher(opts: RemoteLauncherOptions): Promise<RemoteExitReason>;
|
|
11
15
|
//# sourceMappingURL=claudeRemoteLauncher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeRemoteLauncher.d.ts","sourceRoot":"","sources":["../../src/claude/claudeRemoteLauncher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"claudeRemoteLauncher.d.ts","sourceRoot":"","sources":["../../src/claude/claudeRemoteLauncher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAI5C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAChD;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4JjG"}
|
|
@@ -8,7 +8,8 @@ import * as readline from 'node:readline';
|
|
|
8
8
|
* Launch Claude in remote mode
|
|
9
9
|
* Returns 'switch' if we should switch to local mode, 'exit' if we should exit
|
|
10
10
|
*/
|
|
11
|
-
export async function claudeRemoteLauncher(
|
|
11
|
+
export async function claudeRemoteLauncher(opts) {
|
|
12
|
+
const { session, onThinkingChange } = opts;
|
|
12
13
|
let exitReason = null;
|
|
13
14
|
const processAbortController = new AbortController();
|
|
14
15
|
// Setup keyboard listener for switching back to local mode
|
|
@@ -85,6 +86,9 @@ export async function claudeRemoteLauncher(session) {
|
|
|
85
86
|
renderer.clearThinking();
|
|
86
87
|
}
|
|
87
88
|
session.sendThinking(thinking);
|
|
89
|
+
if (onThinkingChange) {
|
|
90
|
+
onThinkingChange(thinking);
|
|
91
|
+
}
|
|
88
92
|
},
|
|
89
93
|
nextMessage: async () => {
|
|
90
94
|
// Wait for next message from queue (includes optional images)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeRemoteLauncher.js","sourceRoot":"","sources":["../../src/claude/claudeRemoteLauncher.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"claudeRemoteLauncher.js","sourceRoot":"","sources":["../../src/claude/claudeRemoteLauncher.ts"],"names":[],"mappings":"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"}
|
package/dist/claude/loop.d.ts
CHANGED
|
@@ -6,6 +6,9 @@ export interface LoopOptions {
|
|
|
6
6
|
session: Session;
|
|
7
7
|
startingMode?: 'local' | 'remote';
|
|
8
8
|
onModeChange?: (mode: 'local' | 'remote') => void;
|
|
9
|
+
onThinkingChange?: (thinking: boolean) => void;
|
|
10
|
+
/** Called when Claude returns to idle state (waiting for input) */
|
|
11
|
+
onIdle?: () => void;
|
|
9
12
|
}
|
|
10
13
|
/**
|
|
11
14
|
* Main loop that switches between local and remote modes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/claude/loop.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/claude/loop.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,KAAK,IAAI,CAAC;IAClD,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,mEAAmE;IACnE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAsB,IAAI,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C3D"}
|
package/dist/claude/loop.js
CHANGED
|
@@ -23,7 +23,11 @@ export async function loop(opts) {
|
|
|
23
23
|
// Send mode change to server
|
|
24
24
|
opts.session.sendModeChange(mode);
|
|
25
25
|
if (mode === 'local') {
|
|
26
|
-
const reason = await claudeLocalLauncher(
|
|
26
|
+
const reason = await claudeLocalLauncher({
|
|
27
|
+
session: opts.session,
|
|
28
|
+
onThinkingChange: opts.onThinkingChange,
|
|
29
|
+
onIdle: opts.onIdle,
|
|
30
|
+
});
|
|
27
31
|
if (reason === 'exit') {
|
|
28
32
|
return;
|
|
29
33
|
}
|
|
@@ -32,7 +36,10 @@ export async function loop(opts) {
|
|
|
32
36
|
continue;
|
|
33
37
|
}
|
|
34
38
|
if (mode === 'remote') {
|
|
35
|
-
const reason = await claudeRemoteLauncher(
|
|
39
|
+
const reason = await claudeRemoteLauncher({
|
|
40
|
+
session: opts.session,
|
|
41
|
+
onThinkingChange: opts.onThinkingChange,
|
|
42
|
+
});
|
|
36
43
|
if (reason === 'exit') {
|
|
37
44
|
return;
|
|
38
45
|
}
|
package/dist/claude/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/claude/loop.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/claude/loop.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAYjE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,IAAiB;IAC1C,IAAI,IAAI,GAAuB,IAAI,CAAC,YAAY,IAAI,OAAO,CAAC;IAE5D,OAAO,IAAI,EAAE,CAAC;QACZ,qBAAqB;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAElC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;gBACvC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;gBACvC,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,wBAAwB;YACxB,IAAI,GAAG,QAAQ,CAAC;YAChB,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;gBACxC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC,CAAC,CAAC;YAEH,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACtB,OAAO;YACT,CAAC;YAED,uBAAuB;YACvB,IAAI,GAAG,OAAO,CAAC;YACf,SAAS;QACX,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -86,6 +86,8 @@ export interface SessionScannerOptions {
|
|
|
86
86
|
sessionId: string | null;
|
|
87
87
|
workingDirectory: string;
|
|
88
88
|
onMessage: (message: RawJSONLines) => void;
|
|
89
|
+
/** Called when Claude finishes responding (assistant message received) */
|
|
90
|
+
onIdle?: () => void;
|
|
89
91
|
}
|
|
90
92
|
export interface SessionScanner {
|
|
91
93
|
cleanup: () => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionScanner.d.ts","sourceRoot":"","sources":["../../src/claude/sessionScanner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAKtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAS9D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionScanner.d.ts","sourceRoot":"","sources":["../../src/claude/sessionScanner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kCAKtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAS9D,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC3C,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAqED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+G/F"}
|
|
@@ -123,6 +123,7 @@ export async function createSessionScanner(opts) {
|
|
|
123
123
|
return;
|
|
124
124
|
}
|
|
125
125
|
const messages = await readSessionLog(projectDir, currentSessionId);
|
|
126
|
+
let sawAssistantMessage = false;
|
|
126
127
|
for (const message of messages) {
|
|
127
128
|
const key = messageKey(message);
|
|
128
129
|
if (processedMessageKeys.has(key)) {
|
|
@@ -130,6 +131,14 @@ export async function createSessionScanner(opts) {
|
|
|
130
131
|
}
|
|
131
132
|
processedMessageKeys.add(key);
|
|
132
133
|
opts.onMessage(message);
|
|
134
|
+
// Track if we processed an assistant message (Claude finished responding)
|
|
135
|
+
if (message.type === 'assistant') {
|
|
136
|
+
sawAssistantMessage = true;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// Notify idle state after processing all messages
|
|
140
|
+
if (sawAssistantMessage && opts.onIdle) {
|
|
141
|
+
opts.onIdle();
|
|
133
142
|
}
|
|
134
143
|
}
|
|
135
144
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionScanner.js","sourceRoot":"","sources":["../../src/claude/sessionScanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,2DAA2D;AAC3D,sEAAsE;AACtE,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;KACrB,CAAC,CAAC,WAAW,EAAE;CACjB,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;KACrB,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IACzB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACtD,iBAAiB;IACjB,sBAAsB;IACtB,mBAAmB;IACnB,oBAAoB;CACrB,CAAC,CAAC;AAIH,2CAA2C;AAC3C,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC;IAC1C,uBAAuB;IACvB,QAAQ;IACR,iBAAiB;CAClB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionScanner.js","sourceRoot":"","sources":["../../src/claude/sessionScanner.ts"],"names":[],"mappings":"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"}
|
package/dist/main.js
CHANGED
|
@@ -9,7 +9,9 @@ import { createSession, endSession } from './api/session.js';
|
|
|
9
9
|
import { loadConfig, saveConfig, clearConfig, isLoggedIn } from './config/config.js';
|
|
10
10
|
import { Session } from './claude/session.js';
|
|
11
11
|
import { loop } from './claude/loop.js';
|
|
12
|
+
import { StatusBar } from './ui/statusBar.js';
|
|
12
13
|
import { checkForUpdate, isUpdateAvailable, performUpdate, checkAndNotify, } from './update/update.js';
|
|
14
|
+
import { validateClaudeArgs, formatValidationErrors, getClaudeArgsHelp, } from './claude/claudeArgs.js';
|
|
13
15
|
const require = createRequire(import.meta.url);
|
|
14
16
|
const { version } = require('../package.json');
|
|
15
17
|
const program = new Command();
|
|
@@ -115,21 +117,46 @@ program
|
|
|
115
117
|
console.log(` LLM URL: ${config.llmUrl}`);
|
|
116
118
|
}
|
|
117
119
|
});
|
|
120
|
+
// Claude args help command
|
|
121
|
+
program
|
|
122
|
+
.command('claude-args')
|
|
123
|
+
.description('Show valid Claude Code arguments that can be passed through')
|
|
124
|
+
.action(() => {
|
|
125
|
+
console.log(getClaudeArgsHelp());
|
|
126
|
+
});
|
|
118
127
|
// Main run command (default)
|
|
119
128
|
program
|
|
120
129
|
.command('run', { isDefault: true })
|
|
121
|
-
.description('Start Claude Code with remote control')
|
|
130
|
+
.description('Start Claude Code with remote control.\n Pass additional Claude Code args after options (e.g., anyware run --verbose)')
|
|
131
|
+
.argument('[claude-args...]', 'Additional Claude Code arguments (run "anyware claude-args" for list)')
|
|
122
132
|
.option('-p, --path <path>', 'Working directory', process.cwd())
|
|
123
133
|
.option('--resume <sessionId>', 'Resume a Claude session')
|
|
124
134
|
.option('--continue', 'Continue the last conversation')
|
|
125
135
|
.option('--remote', 'Start in remote mode')
|
|
126
136
|
.option('-m, --model <model>', 'Model to use via OpenRouter (e.g., anthropic/claude-sonnet-4, openai/gpt-4o)')
|
|
127
|
-
.
|
|
137
|
+
.allowUnknownOption()
|
|
138
|
+
.action(async (claudeArgsFromCommand, options) => {
|
|
128
139
|
// Check login
|
|
129
140
|
if (!isLoggedIn()) {
|
|
130
141
|
console.log('Not logged in. Please run "anyware login" first.');
|
|
131
142
|
process.exit(1);
|
|
132
143
|
}
|
|
144
|
+
// Passthrough args come from variadic argument and any unknown options
|
|
145
|
+
const passthroughArgs = claudeArgsFromCommand;
|
|
146
|
+
// Validate passthrough args if any
|
|
147
|
+
if (passthroughArgs.length > 0) {
|
|
148
|
+
const validation = validateClaudeArgs(passthroughArgs);
|
|
149
|
+
// Show warnings
|
|
150
|
+
if (validation.warnings.length > 0) {
|
|
151
|
+
console.log('\x1b[33m' + formatValidationErrors({ ...validation, errors: [] }) + '\x1b[0m\n');
|
|
152
|
+
}
|
|
153
|
+
// Exit on errors
|
|
154
|
+
if (!validation.valid) {
|
|
155
|
+
console.error('\x1b[31m' + formatValidationErrors(validation) + '\x1b[0m');
|
|
156
|
+
console.log('\nRun "anyware claude-args" to see valid Claude Code arguments.');
|
|
157
|
+
process.exit(1);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
133
160
|
// Check for updates before starting Claude
|
|
134
161
|
// This must happen before Claude takes over stdin/stdout
|
|
135
162
|
await checkAndNotify();
|
|
@@ -147,9 +174,9 @@ program
|
|
|
147
174
|
}
|
|
148
175
|
try {
|
|
149
176
|
// Create server session
|
|
150
|
-
console.log('Creating session...');
|
|
151
177
|
const serverSessionId = await createSession(options.path);
|
|
152
|
-
|
|
178
|
+
// Create and start status bar
|
|
179
|
+
const statusBar = new StatusBar({ sessionId: serverSessionId });
|
|
153
180
|
// Build Claude args
|
|
154
181
|
const claudeArgs = [];
|
|
155
182
|
if (model) {
|
|
@@ -162,6 +189,11 @@ program
|
|
|
162
189
|
if (options.continue) {
|
|
163
190
|
claudeArgs.push('--continue');
|
|
164
191
|
}
|
|
192
|
+
// Add validated passthrough args
|
|
193
|
+
if (passthroughArgs.length > 0) {
|
|
194
|
+
const validation = validateClaudeArgs(passthroughArgs);
|
|
195
|
+
claudeArgs.push(...validation.validArgs);
|
|
196
|
+
}
|
|
165
197
|
// Create session instance
|
|
166
198
|
const session = new Session({
|
|
167
199
|
serverSessionId,
|
|
@@ -172,8 +204,11 @@ program
|
|
|
172
204
|
// Connect to WebSocket
|
|
173
205
|
console.log('Connecting to server...');
|
|
174
206
|
await session.connect();
|
|
207
|
+
// Start status bar after connection
|
|
208
|
+
statusBar.start();
|
|
175
209
|
// Handle cleanup
|
|
176
210
|
const cleanup = async () => {
|
|
211
|
+
statusBar.stop();
|
|
177
212
|
console.log('\nShutting down...');
|
|
178
213
|
session.close();
|
|
179
214
|
await endSession(serverSessionId);
|
|
@@ -185,8 +220,14 @@ program
|
|
|
185
220
|
await loop({
|
|
186
221
|
session,
|
|
187
222
|
startingMode: options.remote ? 'remote' : 'local',
|
|
223
|
+
onModeChange: (mode) => statusBar.setMode(mode),
|
|
224
|
+
onIdle: () => {
|
|
225
|
+
// Redraw status bar when Claude finishes responding
|
|
226
|
+
statusBar.redraw();
|
|
227
|
+
},
|
|
188
228
|
});
|
|
189
229
|
// Cleanup on normal exit
|
|
230
|
+
statusBar.stop();
|
|
190
231
|
session.close();
|
|
191
232
|
await endSession(serverSessionId);
|
|
192
233
|
}
|
package/dist/main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,cAAc,GAEf,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusBar - A status bar that shows at the bottom of the terminal
|
|
3
|
+
*
|
|
4
|
+
* Instead of constantly redrawing (which pollutes scrollback), this version:
|
|
5
|
+
* - Draws once when started
|
|
6
|
+
* - Redraws on explicit triggers (mode change, resize)
|
|
7
|
+
* - Gets overwritten by terminal output (expected behavior)
|
|
8
|
+
* - Reappears when Claude is idle
|
|
9
|
+
*/
|
|
10
|
+
export interface StatusBarOptions {
|
|
11
|
+
sessionId: string;
|
|
12
|
+
sessionUrl?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class StatusBar {
|
|
15
|
+
private sessionId;
|
|
16
|
+
private sessionUrl;
|
|
17
|
+
private mode;
|
|
18
|
+
private connected;
|
|
19
|
+
private started;
|
|
20
|
+
private resizeHandler;
|
|
21
|
+
constructor(opts: StatusBarOptions);
|
|
22
|
+
/**
|
|
23
|
+
* Start the status bar
|
|
24
|
+
*/
|
|
25
|
+
start(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Draw the status bar at the bottom of the terminal
|
|
28
|
+
*/
|
|
29
|
+
private draw;
|
|
30
|
+
/**
|
|
31
|
+
* Build the status bar content string
|
|
32
|
+
*/
|
|
33
|
+
private buildContent;
|
|
34
|
+
/**
|
|
35
|
+
* Update the current mode
|
|
36
|
+
*/
|
|
37
|
+
setMode(mode: 'local' | 'remote'): void;
|
|
38
|
+
/**
|
|
39
|
+
* Update connection status
|
|
40
|
+
*/
|
|
41
|
+
setConnected(connected: boolean): void;
|
|
42
|
+
/**
|
|
43
|
+
* Force an immediate redraw - call this when you know the terminal is stable
|
|
44
|
+
*/
|
|
45
|
+
redraw(): void;
|
|
46
|
+
/**
|
|
47
|
+
* Stop the status bar and clean up
|
|
48
|
+
*/
|
|
49
|
+
stop(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=statusBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusBar.d.ts","sourceRoot":"","sources":["../../src/ui/statusBar.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,aAAa,CAA6B;gBAEtC,IAAI,EAAE,gBAAgB;IAKlC;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,OAAO,CAAC,IAAI;IAsBZ;;OAEG;IACH,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,IAAI;IAKvC;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAKtC;;OAEG;IACH,MAAM,IAAI,IAAI;IAId;;OAEG;IACH,IAAI,IAAI,IAAI;CAqBb"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusBar - A status bar that shows at the bottom of the terminal
|
|
3
|
+
*
|
|
4
|
+
* Instead of constantly redrawing (which pollutes scrollback), this version:
|
|
5
|
+
* - Draws once when started
|
|
6
|
+
* - Redraws on explicit triggers (mode change, resize)
|
|
7
|
+
* - Gets overwritten by terminal output (expected behavior)
|
|
8
|
+
* - Reappears when Claude is idle
|
|
9
|
+
*/
|
|
10
|
+
export class StatusBar {
|
|
11
|
+
sessionId;
|
|
12
|
+
sessionUrl;
|
|
13
|
+
mode = 'local';
|
|
14
|
+
connected = true;
|
|
15
|
+
started = false;
|
|
16
|
+
resizeHandler = null;
|
|
17
|
+
constructor(opts) {
|
|
18
|
+
this.sessionId = opts.sessionId;
|
|
19
|
+
this.sessionUrl = opts.sessionUrl ?? `https://anyware.run/session/${opts.sessionId}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Start the status bar
|
|
23
|
+
*/
|
|
24
|
+
start() {
|
|
25
|
+
if (this.started)
|
|
26
|
+
return;
|
|
27
|
+
this.started = true;
|
|
28
|
+
// Set up resize handler
|
|
29
|
+
this.resizeHandler = () => this.draw();
|
|
30
|
+
process.stdout.on('resize', this.resizeHandler);
|
|
31
|
+
// Initial draw
|
|
32
|
+
this.draw();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Draw the status bar at the bottom of the terminal
|
|
36
|
+
*/
|
|
37
|
+
draw() {
|
|
38
|
+
if (!this.started)
|
|
39
|
+
return;
|
|
40
|
+
if (!process.stdout.isTTY)
|
|
41
|
+
return;
|
|
42
|
+
const cols = process.stdout.columns || 80;
|
|
43
|
+
const rows = process.stdout.rows || 24;
|
|
44
|
+
// Build status bar content
|
|
45
|
+
const content = this.buildContent(cols);
|
|
46
|
+
// Save cursor, move to last line, draw, restore cursor
|
|
47
|
+
const output = '\x1b7' + // Save cursor (DEC)
|
|
48
|
+
`\x1b[${rows};1H` + // Move to last row, column 1
|
|
49
|
+
'\x1b[7m' + // Inverse video
|
|
50
|
+
content +
|
|
51
|
+
'\x1b[0m' + // Reset all attributes
|
|
52
|
+
'\x1b8'; // Restore cursor (DEC)
|
|
53
|
+
process.stdout.write(output);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the status bar content string
|
|
57
|
+
*/
|
|
58
|
+
buildContent(width) {
|
|
59
|
+
// Simple format: "view session at <link>"
|
|
60
|
+
const fullUrl = `https://anyware.run/session/${this.sessionId}`;
|
|
61
|
+
const contentStr = ` view session at ${fullUrl}`;
|
|
62
|
+
return contentStr.padEnd(width, ' ');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Update the current mode
|
|
66
|
+
*/
|
|
67
|
+
setMode(mode) {
|
|
68
|
+
this.mode = mode;
|
|
69
|
+
this.draw();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Update connection status
|
|
73
|
+
*/
|
|
74
|
+
setConnected(connected) {
|
|
75
|
+
this.connected = connected;
|
|
76
|
+
this.draw();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Force an immediate redraw - call this when you know the terminal is stable
|
|
80
|
+
*/
|
|
81
|
+
redraw() {
|
|
82
|
+
this.draw();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Stop the status bar and clean up
|
|
86
|
+
*/
|
|
87
|
+
stop() {
|
|
88
|
+
if (!this.started)
|
|
89
|
+
return;
|
|
90
|
+
this.started = false;
|
|
91
|
+
// Remove resize handler
|
|
92
|
+
if (this.resizeHandler) {
|
|
93
|
+
process.stdout.off('resize', this.resizeHandler);
|
|
94
|
+
this.resizeHandler = null;
|
|
95
|
+
}
|
|
96
|
+
// Clear the status bar line
|
|
97
|
+
if (process.stdout.isTTY) {
|
|
98
|
+
const rows = process.stdout.rows || 24;
|
|
99
|
+
process.stdout.write('\x1b7' + // Save cursor
|
|
100
|
+
`\x1b[${rows};1H` + // Move to last row
|
|
101
|
+
'\x1b[2K' + // Clear entire line
|
|
102
|
+
'\x1b8' // Restore cursor
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=statusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statusBar.js","sourceRoot":"","sources":["../../src/ui/statusBar.ts"],"names":[],"mappings":"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"}
|