tinyagent 1.0.5 → 1.1.2
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/README.md +63 -6
- package/dist/cli.js +8 -28
- package/dist/cli.js.map +1 -1
- package/dist/qr-generator.d.ts.map +1 -1
- package/dist/qr-generator.js +1 -3
- package/dist/qr-generator.js.map +1 -1
- package/dist/shared-types/messages.d.ts +30 -2
- package/dist/shared-types/messages.d.ts.map +1 -1
- package/dist/shared-types/messages.js +4 -0
- package/dist/shared-types/messages.js.map +1 -1
- package/dist/shared-types/session.d.ts +1 -0
- package/dist/shared-types/session.d.ts.map +1 -1
- package/dist/shell-client-v2.d.ts +27 -0
- package/dist/shell-client-v2.d.ts.map +1 -1
- package/dist/shell-client-v2.js +466 -84
- package/dist/shell-client-v2.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ tinyagent my-session
|
|
|
24
24
|
|
|
25
25
|
3. Your local terminal is now accessible from your phone!
|
|
26
26
|
|
|
27
|
-
**Bonus**: If you have Claude CLI installed, it will automatically start Claude for you!
|
|
27
|
+
**Bonus**: If you have Claude CLI installed, it will automatically start Claude for you! Claude will be able to see and interact with your terminal session.
|
|
28
28
|
|
|
29
29
|
## Features
|
|
30
30
|
|
|
@@ -64,24 +64,53 @@ tinyagent --shell /bin/zsh
|
|
|
64
64
|
tinyagent --no-claude
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
-
###
|
|
68
|
-
|
|
67
|
+
### Advanced: Run a server alongside your shell
|
|
68
|
+
```bash
|
|
69
|
+
tinyagent -c "npm run dev" -p 3000
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
This runs a dev server in parallel with your shell session (legacy feature - HTTP tunneling now auto-detects running servers).
|
|
73
|
+
|
|
74
|
+
### All Options:
|
|
75
|
+
- `[sessionId]` - Session ID as first argument (optional, auto-generated if not provided)
|
|
76
|
+
- `--session-id <id>` - Session ID (alternative to positional argument)
|
|
69
77
|
- `-r, --relay <url>` - Relay server URL (default: wss://relay.tinyagent.app)
|
|
70
78
|
- `-s, --shell <shell>` - Shell to use (default: $SHELL or /bin/bash)
|
|
79
|
+
- `-c, --command <cmd>` - Run a server command in parallel (legacy - auto-detection preferred)
|
|
80
|
+
- `-p, --port <port>` - Port for the server command (default: 3000)
|
|
81
|
+
- `--no-tunnel` - Disable localtunnel integration
|
|
71
82
|
- `--no-claude` - Do not auto-start Claude CLI
|
|
72
83
|
- `-v, --verbose` - Show detailed debug output
|
|
84
|
+
- `-V, --version` - Show version number
|
|
85
|
+
- `-h, --help` - Show help
|
|
73
86
|
|
|
74
87
|
## HTTP Tunneling
|
|
75
88
|
|
|
76
|
-
|
|
89
|
+
Tinyagent automatically detects and exposes your local development servers! No configuration needed.
|
|
90
|
+
|
|
91
|
+
When you have servers running on common ports (3000, 3001, 4000, 4200, 5000, 5173, 8000, 8080, 8081, 9000), you'll see:
|
|
77
92
|
|
|
78
93
|
```
|
|
79
|
-
[HTTP] Exposing ports: 3000
|
|
94
|
+
[HTTP] Exposing ports: 3000, 5173
|
|
80
95
|
[HTTP] Access your dev server at:
|
|
81
96
|
https://my-session-3000.tinyagent.app/
|
|
97
|
+
https://my-session-5173.tinyagent.app/
|
|
82
98
|
```
|
|
83
99
|
|
|
84
|
-
|
|
100
|
+
Access your local dev servers from any browser - perfect for testing on mobile devices!
|
|
101
|
+
|
|
102
|
+
## Environment Variables
|
|
103
|
+
|
|
104
|
+
You can set these environment variables to customize default behavior:
|
|
105
|
+
|
|
106
|
+
- `RELAY_URL` - Default relay server URL (instead of using `-r` flag each time)
|
|
107
|
+
- `SHELL` - Default shell to use (automatically detected from your system)
|
|
108
|
+
|
|
109
|
+
Example:
|
|
110
|
+
```bash
|
|
111
|
+
export RELAY_URL=ws://localhost:8080
|
|
112
|
+
tinyagent
|
|
113
|
+
```
|
|
85
114
|
|
|
86
115
|
## Security
|
|
87
116
|
|
|
@@ -89,6 +118,34 @@ You can access your local dev server from any browser using this URL.
|
|
|
89
118
|
- Session IDs are private - only those with the ID can connect
|
|
90
119
|
- Connections are encrypted with WSS (WebSocket Secure)
|
|
91
120
|
|
|
121
|
+
## Troubleshooting
|
|
122
|
+
|
|
123
|
+
### Debug Mode
|
|
124
|
+
If you're experiencing issues, run with verbose output:
|
|
125
|
+
```bash
|
|
126
|
+
tinyagent -v
|
|
127
|
+
# or
|
|
128
|
+
tinyagent --verbose
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
This will show:
|
|
132
|
+
- WebSocket connection details
|
|
133
|
+
- Terminal resize events
|
|
134
|
+
- Input source tracking (local vs mobile)
|
|
135
|
+
- HTTP port detection
|
|
136
|
+
|
|
137
|
+
### Common Issues
|
|
138
|
+
|
|
139
|
+
**Claude not starting automatically?**
|
|
140
|
+
- Make sure Claude CLI is installed and in your PATH
|
|
141
|
+
- Try running `which claude` to verify installation
|
|
142
|
+
- Use `--no-claude` to disable auto-start
|
|
143
|
+
|
|
144
|
+
**Dev server not accessible?**
|
|
145
|
+
- Ensure your server is running on a standard port (3000, 3001, 4000, 4200, 5000, 5173, 8000, 8080, 8081, 9000)
|
|
146
|
+
- Check that the server is bound to `localhost` or `0.0.0.0`, not just `127.0.0.1`
|
|
147
|
+
- Look for the `[HTTP] Exposing ports:` message in the output
|
|
148
|
+
|
|
92
149
|
## Learn More
|
|
93
150
|
|
|
94
151
|
- Website: https://tinyagent.app
|
package/dist/cli.js
CHANGED
|
@@ -7,32 +7,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
const commander_1 = require("commander");
|
|
8
8
|
const chalk_1 = __importDefault(require("chalk"));
|
|
9
9
|
const dotenv_1 = require("dotenv");
|
|
10
|
-
const child_process_1 = require("child_process");
|
|
11
10
|
const shell_client_v2_1 = require("./shell-client-v2");
|
|
12
11
|
const qr_generator_1 = require("./qr-generator");
|
|
13
12
|
(0, dotenv_1.config)();
|
|
14
|
-
// Function to check if Claude is available and start it
|
|
15
|
-
function checkAndStartClaude(sessionId) {
|
|
16
|
-
try {
|
|
17
|
-
// Check if claude command exists
|
|
18
|
-
(0, child_process_1.execSync)('which claude', { stdio: 'ignore' });
|
|
19
|
-
console.log(chalk_1.default.green('\n✓ Claude detected - starting Claude session...'));
|
|
20
|
-
// Start claude in the background
|
|
21
|
-
const claudeProcess = (0, child_process_1.spawn)('claude', [], {
|
|
22
|
-
detached: true,
|
|
23
|
-
stdio: 'ignore'
|
|
24
|
-
});
|
|
25
|
-
claudeProcess.unref();
|
|
26
|
-
console.log(chalk_1.default.gray('Claude is running in the background'));
|
|
27
|
-
console.log(chalk_1.default.yellow(`\nTip: You can now ask Claude to connect to your shell session "${sessionId}"`));
|
|
28
|
-
}
|
|
29
|
-
catch (error) {
|
|
30
|
-
// Claude not found or failed to start - silently continue
|
|
31
|
-
if (process.env.DEBUG || process.argv.includes('--verbose')) {
|
|
32
|
-
console.log(chalk_1.default.gray('Claude not found or could not be started'));
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
13
|
const program = new commander_1.Command();
|
|
37
14
|
program
|
|
38
15
|
.name('tinyagent')
|
|
@@ -47,6 +24,9 @@ program
|
|
|
47
24
|
.option('--no-tunnel', 'Disable tunnel creation')
|
|
48
25
|
.option('--no-claude', 'Do not auto-start Claude')
|
|
49
26
|
.option('-v, --verbose', 'Show detailed debug output')
|
|
27
|
+
.option('--password <password>', 'Password required for mobile clients to connect')
|
|
28
|
+
.option('--resume', 'Resume the last Claude session')
|
|
29
|
+
.option('--continue', 'Continue the last Claude session (alias for --resume)')
|
|
50
30
|
.action(async (sessionIdArg, options) => {
|
|
51
31
|
// Determine session ID from argument or option, or generate one
|
|
52
32
|
let sessionId = sessionIdArg || options.sessionId;
|
|
@@ -65,13 +45,13 @@ program
|
|
|
65
45
|
shell: options.shell,
|
|
66
46
|
serverCommand: options.command,
|
|
67
47
|
serverPort: parseInt(options.port),
|
|
68
|
-
createTunnel: options.tunnel
|
|
48
|
+
createTunnel: options.tunnel,
|
|
49
|
+
autoStartClaude: !options.noClaude,
|
|
50
|
+
password: options.password,
|
|
51
|
+
resumeClaude: options.resume || options.continue,
|
|
52
|
+
verbose: options.verbose
|
|
69
53
|
});
|
|
70
54
|
await client.connect();
|
|
71
|
-
// Auto-start Claude if available and not disabled
|
|
72
|
-
if (!options.noClaude) {
|
|
73
|
-
checkAndStartClaude(sessionId);
|
|
74
|
-
}
|
|
75
55
|
process.on('SIGINT', () => {
|
|
76
56
|
console.log(chalk_1.default.yellow('\nDisconnecting...'));
|
|
77
57
|
client.disconnect();
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,mCAAgC;AAChC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr-generator.d.ts","sourceRoot":"","sources":["../src/qr-generator.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"qr-generator.d.ts","sourceRoot":"","sources":["../src/qr-generator.ts"],"names":[],"mappings":"AAIA,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAS9E"}
|
package/dist/qr-generator.js
CHANGED
|
@@ -42,9 +42,7 @@ function generateConnectionQR(sessionId, relayUrl) {
|
|
|
42
42
|
relayUrl: relayUrl,
|
|
43
43
|
sessionId: sessionId
|
|
44
44
|
});
|
|
45
|
-
console.log('\n📱 Scan this QR code with your mobile app:\n');
|
|
46
45
|
qrcode.generate(connectionUrl, { small: true });
|
|
47
|
-
console.log(
|
|
48
|
-
console.log(`📝 Session ID: ${sessionId}\n`);
|
|
46
|
+
console.log(`${relayUrl} | Session: ${sessionId}`);
|
|
49
47
|
}
|
|
50
48
|
//# sourceMappingURL=qr-generator.js.map
|
package/dist/qr-generator.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qr-generator.js","sourceRoot":"","sources":["../src/qr-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,
|
|
1
|
+
{"version":3,"file":"qr-generator.js","sourceRoot":"","sources":["../src/qr-generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oDASC;AAbD,mDAAmD;AACnD,wDAA0C;AAG1C,SAAgB,oBAAoB,CAAC,SAAiB,EAAE,QAAgB;IACtE,wBAAwB;IACxB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACnC,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,SAAS;KACrB,CAAC,CAAC;IAEH,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,eAAe,SAAS,EAAE,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -13,7 +13,11 @@ export declare enum MessageType {
|
|
|
13
13
|
HOST_CONNECT = "HOST_CONNECT",
|
|
14
14
|
HTTP_REQUEST = "HTTP_REQUEST",
|
|
15
15
|
HTTP_RESPONSE = "HTTP_RESPONSE",
|
|
16
|
-
REGISTER_PORT = "REGISTER_PORT"
|
|
16
|
+
REGISTER_PORT = "REGISTER_PORT",
|
|
17
|
+
CLIENT_COUNT = "CLIENT_COUNT",
|
|
18
|
+
COMMAND_UPDATE = "COMMAND_UPDATE",
|
|
19
|
+
PASSWORD_REQUIRED = "PASSWORD_REQUIRED",
|
|
20
|
+
SESSION_AUTH = "SESSION_AUTH"
|
|
17
21
|
}
|
|
18
22
|
export interface BaseMessage {
|
|
19
23
|
type: MessageType;
|
|
@@ -101,6 +105,30 @@ export interface HttpResponseMessage extends BaseMessage {
|
|
|
101
105
|
export interface RegisterPortMessage extends BaseMessage {
|
|
102
106
|
type: MessageType.REGISTER_PORT;
|
|
103
107
|
ports: number[];
|
|
108
|
+
portActivity?: Record<number, {
|
|
109
|
+
lastAccess?: number;
|
|
110
|
+
requestCount?: number;
|
|
111
|
+
}>;
|
|
112
|
+
}
|
|
113
|
+
export interface ClientCountMessage extends BaseMessage {
|
|
114
|
+
type: MessageType.CLIENT_COUNT;
|
|
115
|
+
count: number;
|
|
116
|
+
clientTypes: {
|
|
117
|
+
mobile: number;
|
|
118
|
+
shell: number;
|
|
119
|
+
host: number;
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export interface CommandUpdateMessage extends BaseMessage {
|
|
123
|
+
type: MessageType.COMMAND_UPDATE;
|
|
124
|
+
command: string;
|
|
125
|
+
}
|
|
126
|
+
export interface PasswordRequiredMessage extends BaseMessage {
|
|
127
|
+
type: MessageType.PASSWORD_REQUIRED;
|
|
128
|
+
}
|
|
129
|
+
export interface SessionAuthMessage extends BaseMessage {
|
|
130
|
+
type: MessageType.SESSION_AUTH;
|
|
131
|
+
password: string;
|
|
104
132
|
}
|
|
105
|
-
export type Message = SessionInitMessage | SessionReadyMessage | SessionErrorMessage | SessionCloseMessage | ShellDataMessage | ShellResizeMessage | TunnelUrlMessage | HeartbeatMessage | CommandMessage | HostRegisterMessage | HostStatusMessage | HostConnectMessage | HttpRequestMessage | HttpResponseMessage | RegisterPortMessage;
|
|
133
|
+
export type Message = SessionInitMessage | SessionReadyMessage | SessionErrorMessage | SessionCloseMessage | ShellDataMessage | ShellResizeMessage | TunnelUrlMessage | HeartbeatMessage | CommandMessage | HostRegisterMessage | HostStatusMessage | HostConnectMessage | HttpRequestMessage | HttpResponseMessage | RegisterPortMessage | ClientCountMessage | CommandUpdateMessage | PasswordRequiredMessage | SessionAuthMessage;
|
|
106
134
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/shared-types/messages.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/shared-types/messages.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,UAAU,eAAe;IACzB,YAAY,iBAAiB;IAC7B,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,aAAa,kBAAkB;IAC/B,WAAW,gBAAgB;IAC3B,YAAY,iBAAiB;IAC7B,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;IACjC,iBAAiB,sBAAsB;IACvC,YAAY,iBAAiB;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;CACjC;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACnD,IAAI,EAAE,WAAW,CAAC,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,cAAe,SAAQ,WAAW;IACjD,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;IAC1B,OAAO,EAAE,cAAc,GAAG,aAAa,GAAG,WAAW,CAAC;IACtD,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,WAAW,CAAC,WAAW,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;KAC5C,CAAC;IACF,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,WAAW,CAAC,aAAa,CAAC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QACX,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,WAAW,CAAC,cAAc,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAwB,SAAQ,WAAW;IAC1D,IAAI,EAAE,WAAW,CAAC,iBAAiB,CAAC;CACrC;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC,YAAY,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,OAAO,GACf,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,gBAAgB,GAChB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,mBAAmB,GACnB,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,uBAAuB,GACvB,kBAAkB,CAAC"}
|
|
@@ -18,5 +18,9 @@ var MessageType;
|
|
|
18
18
|
MessageType["HTTP_REQUEST"] = "HTTP_REQUEST";
|
|
19
19
|
MessageType["HTTP_RESPONSE"] = "HTTP_RESPONSE";
|
|
20
20
|
MessageType["REGISTER_PORT"] = "REGISTER_PORT";
|
|
21
|
+
MessageType["CLIENT_COUNT"] = "CLIENT_COUNT";
|
|
22
|
+
MessageType["COMMAND_UPDATE"] = "COMMAND_UPDATE";
|
|
23
|
+
MessageType["PASSWORD_REQUIRED"] = "PASSWORD_REQUIRED";
|
|
24
|
+
MessageType["SESSION_AUTH"] = "SESSION_AUTH";
|
|
21
25
|
})(MessageType || (exports.MessageType = MessageType = {}));
|
|
22
26
|
//# sourceMappingURL=messages.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/shared-types/messages.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/shared-types/messages.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAoBX;AApBD,WAAY,WAAW;IACrB,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,8CAA+B,CAAA;IAC/B,8CAA+B,CAAA;IAC/B,wCAAyB,CAAA;IACzB,4CAA6B,CAAA;IAC7B,wCAAyB,CAAA;IACzB,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,8CAA+B,CAAA;IAC/B,0CAA2B,CAAA;IAC3B,4CAA6B,CAAA;IAC7B,4CAA6B,CAAA;IAC7B,8CAA+B,CAAA;IAC/B,8CAA+B,CAAA;IAC/B,4CAA6B,CAAA;IAC7B,gDAAiC,CAAA;IACjC,sDAAuC,CAAA;IACvC,4CAA6B,CAAA;AAC/B,CAAC,EApBW,WAAW,2BAAX,WAAW,QAoBtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/shared-types/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/shared-types/session.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B"}
|
|
@@ -5,6 +5,10 @@ interface ShellClientOptions {
|
|
|
5
5
|
serverCommand?: string;
|
|
6
6
|
serverPort?: number;
|
|
7
7
|
createTunnel?: boolean;
|
|
8
|
+
autoStartClaude?: boolean;
|
|
9
|
+
password?: string;
|
|
10
|
+
resumeClaude?: boolean;
|
|
11
|
+
verbose?: boolean;
|
|
8
12
|
}
|
|
9
13
|
export declare class ShellClient {
|
|
10
14
|
private options;
|
|
@@ -20,10 +24,21 @@ export declare class ShellClient {
|
|
|
20
24
|
private terminalBuffer;
|
|
21
25
|
private exposedPorts;
|
|
22
26
|
private lastKnownPorts;
|
|
27
|
+
private portActivity;
|
|
23
28
|
private stdinListener?;
|
|
24
29
|
private lastInputSource;
|
|
25
30
|
private lastInputTime;
|
|
26
31
|
private terminalDimensions;
|
|
32
|
+
private connectedClients;
|
|
33
|
+
private clientTypes;
|
|
34
|
+
private statusLineInterval?;
|
|
35
|
+
private isShowingQR;
|
|
36
|
+
private bufferedOutput;
|
|
37
|
+
private currentCommand;
|
|
38
|
+
private commandCheckInterval?;
|
|
39
|
+
private viewMode;
|
|
40
|
+
private statusBarEnabled;
|
|
41
|
+
private scrollbackMode;
|
|
27
42
|
constructor(options: ShellClientOptions);
|
|
28
43
|
connect(): Promise<void>;
|
|
29
44
|
private handleMessage;
|
|
@@ -39,6 +54,18 @@ export declare class ShellClient {
|
|
|
39
54
|
private isPortActive;
|
|
40
55
|
private setupLocalInput;
|
|
41
56
|
private cleanup;
|
|
57
|
+
private checkAndStartClaude;
|
|
58
|
+
private startStatusLine;
|
|
59
|
+
private setupTerminalWithStatusBar;
|
|
60
|
+
private updateStatusLine;
|
|
61
|
+
private hideQRCode;
|
|
62
|
+
private showQRCode;
|
|
63
|
+
private toggleViewMode;
|
|
64
|
+
private toggleStatusBar;
|
|
65
|
+
private startCommandMonitoring;
|
|
66
|
+
private checkRunningProcess;
|
|
67
|
+
private detectCommand;
|
|
68
|
+
private sendCommandUpdate;
|
|
42
69
|
disconnect(): void;
|
|
43
70
|
}
|
|
44
71
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-client-v2.d.ts","sourceRoot":"","sources":["../src/shell-client-v2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"shell-client-v2.d.ts","sourceRoot":"","sources":["../src/shell-client-v2.ts"],"names":[],"mappings":"AA4BA,UAAU,kBAAkB;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,WAAW;IAgCV,OAAO,CAAC,OAAO;IA/B3B,OAAO,CAAC,EAAE,CAAC,CAAY;IACvB,OAAO,CAAC,UAAU,CAAC,CAAM;IACzB,OAAO,CAAC,aAAa,CAAC,CAAM;IAC5B,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,cAAc,CAAqB;IAC3C,OAAO,CAAC,YAAY,CAAoE;IACxF,OAAO,CAAC,aAAa,CAAC,CAAa;IACnC,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,aAAa,CAAc;IACnC,OAAO,CAAC,kBAAkB,CAGxB;IACF,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,kBAAkB,CAAC,CAAiB;IAC5C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,cAAc,CAAM;IAC5B,OAAO,CAAC,oBAAoB,CAAC,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,gBAAgB,CAAQ;IAChC,OAAO,CAAC,cAAc,CAAS;gBAEX,OAAO,EAAE,kBAAkB;IA+CzC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA8C9B,OAAO,CAAC,aAAa;IA4GrB,OAAO,CAAC,UAAU;YAuHJ,WAAW;IAkCzB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,iBAAiB;YAUX,iBAAiB;IA8L/B,OAAO,CAAC,kBAAkB;YAmBZ,iBAAiB;IAkE/B,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,eAAe;IAsDvB,OAAO,CAAC,OAAO;IAuCf,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,0BAA0B;IAuBlC,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,UAAU;IAqBlB,OAAO,CAAC,UAAU;IAmClB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,mBAAmB;IA6C3B,OAAO,CAAC,aAAa;IAsDrB,OAAO,CAAC,iBAAiB;IAUzB,UAAU,IAAI,IAAI;CAMnB"}
|