247-cli 1.4.1 → 1.6.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.
@@ -0,0 +1,23 @@
1
+ export interface InitScriptOptions {
2
+ sessionName: string;
3
+ customEnvVars?: Record<string, string>;
4
+ }
5
+ /**
6
+ * Generates a bash init script for tmux session initialization.
7
+ * This script sets up environment variables and tmux options, then starts an interactive shell.
8
+ */
9
+ export declare function generateInitScript(options: InitScriptOptions): string;
10
+ /**
11
+ * Writes the init script to a temporary file.
12
+ * @returns The path to the created script file.
13
+ */
14
+ export declare function writeInitScript(sessionName: string, content: string): string;
15
+ /**
16
+ * Removes the init script file.
17
+ */
18
+ export declare function cleanupInitScript(sessionName: string): void;
19
+ /**
20
+ * Gets the path where an init script would be written.
21
+ */
22
+ export declare function getInitScriptPath(sessionName: string): string;
23
+ //# sourceMappingURL=init-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-script.d.ts","sourceRoot":"","sources":["../../src/lib/init-script.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA4BrE;AAaD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAO3D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,71 @@
1
+ import * as fs from 'fs';
2
+ import * as os from 'os';
3
+ import * as path from 'path';
4
+ /**
5
+ * Generates a bash init script for tmux session initialization.
6
+ * This script sets up environment variables and tmux options, then starts an interactive shell.
7
+ */
8
+ export function generateInitScript(options) {
9
+ const { sessionName, customEnvVars = {} } = options;
10
+ // Build export statements
11
+ const exports = [`export CLAUDE_TMUX_SESSION="${escapeForBash(sessionName)}"`];
12
+ // Add custom env vars (filter out empty values)
13
+ for (const [key, value] of Object.entries(customEnvVars)) {
14
+ if (value && value.trim() !== '') {
15
+ exports.push(`export ${key}="${escapeForBash(value)}"`);
16
+ }
17
+ }
18
+ return `#!/bin/bash
19
+ # 247 Terminal Init Script - Auto-generated
20
+ # Session: ${sessionName}
21
+ # Generated: ${new Date().toISOString()}
22
+
23
+ # Environment variables
24
+ ${exports.join('\n')}
25
+
26
+ # tmux configuration
27
+ tmux set-option -t "${escapeForBash(sessionName)}" history-limit 10000 2>/dev/null
28
+ tmux set-option -t "${escapeForBash(sessionName)}" mouse on 2>/dev/null
29
+
30
+ # Start interactive shell (replaces this script process)
31
+ exec bash -i
32
+ `;
33
+ }
34
+ /**
35
+ * Escapes a string for safe use in bash double-quoted strings.
36
+ */
37
+ function escapeForBash(value) {
38
+ return value
39
+ .replace(/\\/g, '\\\\')
40
+ .replace(/"/g, '\\"')
41
+ .replace(/\$/g, '\\$')
42
+ .replace(/`/g, '\\`');
43
+ }
44
+ /**
45
+ * Writes the init script to a temporary file.
46
+ * @returns The path to the created script file.
47
+ */
48
+ export function writeInitScript(sessionName, content) {
49
+ const scriptPath = path.join(os.tmpdir(), `247-init-${sessionName}.sh`);
50
+ fs.writeFileSync(scriptPath, content, { mode: 0o755 });
51
+ return scriptPath;
52
+ }
53
+ /**
54
+ * Removes the init script file.
55
+ */
56
+ export function cleanupInitScript(sessionName) {
57
+ const scriptPath = path.join(os.tmpdir(), `247-init-${sessionName}.sh`);
58
+ try {
59
+ fs.unlinkSync(scriptPath);
60
+ }
61
+ catch {
62
+ // Ignore errors (file might already be deleted)
63
+ }
64
+ }
65
+ /**
66
+ * Gets the path where an init script would be written.
67
+ */
68
+ export function getInitScriptPath(sessionName) {
69
+ return path.join(os.tmpdir(), `247-init-${sessionName}.sh`);
70
+ }
71
+ //# sourceMappingURL=init-script.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-script.js","sourceRoot":"","sources":["../../src/lib/init-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAO7B;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA0B;IAC3D,MAAM,EAAE,WAAW,EAAE,aAAa,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IAEpD,0BAA0B;IAC1B,MAAM,OAAO,GAAa,CAAC,+BAA+B,aAAa,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAEzF,gDAAgD;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACzD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO;;aAEI,WAAW;eACT,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;;EAGrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;;sBAGE,aAAa,CAAC,WAAW,CAAC;sBAC1B,aAAa,CAAC,WAAW,CAAC;;;;CAI/C,CAAC;AACF,CAAC;AAED;;GAEG;AACH,SAAS,aAAa,CAAC,KAAa;IAClC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB,EAAE,OAAe;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,WAAW,KAAK,CAAC,CAAC;IACxE,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,WAAW,KAAK,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,gDAAgD;IAClD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,YAAY,WAAW,KAAK,CAAC,CAAC;AAC9D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,IAAI,CAAC;IACf,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,iBAAiB,IAAI,OAAO,CAAC;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACrC;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,QAAQ,CA+JV"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,IAAI,IAAI,IAAI,CAAC;IACb,MAAM,IAAI,IAAI,CAAC;IACf,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,iBAAiB,IAAI,OAAO,CAAC;IAC7B,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;CACrC;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,EACnB,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACzC,QAAQ,CAuJV"}
@@ -1,6 +1,7 @@
1
1
  import * as pty from '@homebridge/node-pty-prebuilt-multiarch';
2
2
  import { exec, execSync } from 'child_process';
3
3
  import { promisify } from 'util';
4
+ import { generateInitScript, writeInitScript, cleanupInitScript } from './lib/init-script';
4
5
  const execAsync = promisify(exec);
5
6
  export function createTerminal(cwd, sessionName, customEnvVars = {}) {
6
7
  // Check if session already exists before spawning
@@ -19,11 +20,21 @@ export function createTerminal(cwd, sessionName, customEnvVars = {}) {
19
20
  }
20
21
  // Use tmux for session persistence
21
22
  // For existing sessions: use attach-session (more reliable)
22
- // For new sessions: use new-session with -A flag
23
- // Note: We DON'T use -e flags here because they pollute tmux's global environment
24
- const tmuxArgs = existingSession
25
- ? ['attach-session', '-t', sessionName]
26
- : ['new-session', '-A', '-s', sessionName, '-c', cwd];
23
+ // For new sessions: use new-session with init script for clean setup
24
+ let tmuxArgs;
25
+ let initScriptPath = null;
26
+ if (existingSession) {
27
+ tmuxArgs = ['attach-session', '-t', sessionName];
28
+ }
29
+ else {
30
+ // Generate and write init script for new sessions
31
+ const scriptContent = generateInitScript({ sessionName, customEnvVars });
32
+ initScriptPath = writeInitScript(sessionName, scriptContent);
33
+ console.log(`[Terminal] Init script written to: ${initScriptPath}`);
34
+ // Spawn tmux with the init script
35
+ // The script exports env vars, configures tmux, then runs exec bash -i
36
+ tmuxArgs = ['new-session', '-s', sessionName, '-c', cwd, `bash --init-file ${initScriptPath}`];
37
+ }
27
38
  console.log(`[Terminal] Spawning: tmux ${tmuxArgs.join(' ')}`);
28
39
  const shell = pty.spawn('tmux', tmuxArgs, {
29
40
  name: 'xterm-256color',
@@ -32,10 +43,8 @@ export function createTerminal(cwd, sessionName, customEnvVars = {}) {
32
43
  cwd,
33
44
  env: {
34
45
  ...process.env,
35
- // Note: customEnvVars are NOT included here to avoid polluting the pty environment
36
- // They will be injected per-session using tmux send-keys
37
46
  TERM: 'xterm-256color',
38
- CLAUDE_TMUX_SESSION: sessionName, // Always set for hook detection
47
+ CLAUDE_TMUX_SESSION: sessionName, // Also set at PTY level for hook detection
39
48
  PATH: `/opt/homebrew/bin:${process.env.PATH}`,
40
49
  // Ensure UTF-8 encoding for proper accent/unicode support
41
50
  LANG: process.env.LANG || 'en_US.UTF-8',
@@ -68,31 +77,21 @@ export function createTerminal(cwd, sessionName, customEnvVars = {}) {
68
77
  readyCallbacks.forEach((cb) => cb());
69
78
  readyCallbacks.length = 0; // Clear the array
70
79
  };
71
- // Configure tmux options and inject environment variables
80
+ // Handle session initialization and readiness
72
81
  if (!existingSession) {
82
+ // For new sessions, the init script handles env vars and tmux config
83
+ // Fire ready callbacks once shell is likely initialized
73
84
  setTimeout(() => {
74
- exec(`tmux set-option -t "${sessionName}" history-limit 10000`);
75
- exec(`tmux set-option -t "${sessionName}" mouse on`);
76
- // ALWAYS inject CLAUDE_TMUX_SESSION into the shell for hook detection
77
- // This is critical for hooks to identify which session they belong to
78
- const baseExport = `export CLAUDE_TMUX_SESSION="${sessionName}"`;
79
- // Add custom environment variables if present (filter out empty values)
80
- const nonEmptyVars = Object.entries(customEnvVars).filter(([, value]) => value && value.trim() !== '');
81
- const allExports = nonEmptyVars.length > 0
82
- ? `${baseExport}; ${nonEmptyVars
83
- .map(([key, value]) => `export ${key}="${value.replace(/"/g, '\\"')}"`)
84
- .join('; ')}`
85
- : baseExport;
86
- console.log(`[Terminal] Injecting CLAUDE_TMUX_SESSION and ${nonEmptyVars.length} custom vars into NEW session '${sessionName}'`);
87
- // Séquences ANSI pour effacer les lignes après exécution
88
- // \033[1A = remonter d'une ligne, \033[2K = effacer la ligne
89
- // On efface 2 lignes: la commande tapée + le prompt précédent
90
- const clearSequence = `printf '\\033[1A\\033[2K\\033[1A\\033[2K'`;
91
- exec(`tmux send-keys -t "${sessionName}" "${allExports}; ${clearSequence}" C-m`, () => {
92
- // Fire ready callbacks after init commands are sent
93
- fireReadyCallbacks();
94
- });
95
- }, 100);
85
+ console.log(`[Terminal] New session '${sessionName}' ready (init script executed)`);
86
+ fireReadyCallbacks();
87
+ }, 150);
88
+ // Cleanup init script after shell has started (give it time to read the file)
89
+ if (initScriptPath) {
90
+ setTimeout(() => {
91
+ cleanupInitScript(sessionName);
92
+ console.log(`[Terminal] Init script cleaned up for '${sessionName}'`);
93
+ }, 5000);
94
+ }
96
95
  }
97
96
  else {
98
97
  // For existing sessions, just ensure mouse is enabled
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../src/terminal.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "247-shared",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "exports": {
package/dist/index.js CHANGED
@@ -15,7 +15,7 @@ const program = new Command();
15
15
  program
16
16
  .name('247')
17
17
  .description('247 - Access Claude Code from anywhere 24/7\nby The Vibe Company')
18
- .version('1.4.1')
18
+ .version('1.6.0')
19
19
  .option('-P, --profile <name>', 'Use a specific profile (dev, prod, etc.)');
20
20
  // Add commands
21
21
  program.addCommand(initCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "247-cli",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "description": "247 - Access Claude Code from anywhere 24/7",
5
5
  "keywords": [
6
6
  "claude",