@hypercli/hq 0.1.4 → 0.2.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/dist/commands/hq/configure/telegram.d.ts +7 -0
- package/dist/commands/hq/configure/telegram.d.ts.map +1 -0
- package/dist/commands/hq/configure/telegram.js +24 -0
- package/dist/commands/hq/configure/telegram.js.map +1 -0
- package/dist/commands/hq/setup.d.ts +2 -2
- package/dist/commands/hq/setup.d.ts.map +1 -1
- package/dist/commands/hq/setup.js +24 -33
- package/dist/commands/hq/setup.js.map +1 -1
- package/dist/commands/hq/spawn.d.ts +4 -0
- package/dist/commands/hq/spawn.d.ts.map +1 -1
- package/dist/commands/hq/spawn.js +32 -8
- package/dist/commands/hq/spawn.js.map +1 -1
- package/dist/commands/hq/start.d.ts +4 -2
- package/dist/commands/hq/start.d.ts.map +1 -1
- package/dist/commands/hq/start.js +49 -82
- package/dist/commands/hq/start.js.map +1 -1
- package/dist/commands/hq/status.js +2 -2
- package/dist/commands/hq/status.js.map +1 -1
- package/dist/commands/hq/stop-all.js +1 -1
- package/dist/commands/hq/stop-all.js.map +1 -1
- package/dist/config/index.d.ts +5 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +30 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.js +2 -2
- package/dist/config/schema.js.map +1 -1
- package/dist/services/claude.d.ts +17 -3
- package/dist/services/claude.d.ts.map +1 -1
- package/dist/services/claude.js +26 -10
- package/dist/services/claude.js.map +1 -1
- package/dist/services/telegram.d.ts +1 -1
- package/dist/services/telegram.d.ts.map +1 -1
- package/dist/services/telegram.js +3 -16
- package/dist/services/telegram.js.map +1 -1
- package/dist/services/tmux.d.ts +2 -0
- package/dist/services/tmux.d.ts.map +1 -1
- package/dist/services/tmux.js +22 -0
- package/dist/services/tmux.js.map +1 -1
- package/dist/utils/banner.d.ts.map +1 -1
- package/dist/utils/banner.js +20 -46
- package/dist/utils/banner.js.map +1 -1
- package/oclif.manifest.json +88 -27
- package/package.json +6 -1
- package/dist/config/setup.d.ts +0 -4
- package/dist/config/setup.d.ts.map +0 -1
- package/dist/config/setup.js +0 -148
- package/dist/config/setup.js.map +0 -1
- package/dist/utils/trust.d.ts +0 -13
- package/dist/utils/trust.d.ts.map +0 -1
- package/dist/utils/trust.js +0 -29
- package/dist/utils/trust.js.map +0 -1
package/dist/config/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
4
|
import { parse as parseTOML } from "smol-toml";
|
|
@@ -55,5 +55,34 @@ export function loadConfig() {
|
|
|
55
55
|
}
|
|
56
56
|
return merged;
|
|
57
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* Update the telegram bot token in hq.toml without destroying comments.
|
|
60
|
+
* Uses regex replacement for surgical update.
|
|
61
|
+
*/
|
|
62
|
+
export function updateConfigTelegram(token) {
|
|
63
|
+
if (!existsSync(CONFIG_PATH)) {
|
|
64
|
+
throw new Error("Config file not found. Run 'hyper hq setup' first.");
|
|
65
|
+
}
|
|
66
|
+
let content = readFileSync(CONFIG_PATH, "utf-8");
|
|
67
|
+
// Check if hq_bot_token line exists (commented or not)
|
|
68
|
+
const tokenRegex = /^[#\s]*hq_bot_token\s*=.*$/m;
|
|
69
|
+
const newLine = `hq_bot_token = "${token}"`;
|
|
70
|
+
if (tokenRegex.test(content)) {
|
|
71
|
+
// Replace existing line (even if commented out)
|
|
72
|
+
content = content.replace(tokenRegex, newLine);
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
// Insert after [telegram] section header
|
|
76
|
+
const telegramSection = /^\[telegram\]\s*$/m;
|
|
77
|
+
if (telegramSection.test(content)) {
|
|
78
|
+
content = content.replace(telegramSection, `[telegram]\n${newLine}`);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
// Append telegram section
|
|
82
|
+
content += `\n[telegram]\n${newLine}\n`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
writeFileSync(CONFIG_PATH, content, { encoding: "utf-8", mode: 0o600 });
|
|
86
|
+
}
|
|
58
87
|
export { CONFIG_PATH };
|
|
59
88
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/config/schema.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,cAAc,GAAa;IACvC,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AA4BA,MAAM,CAAC,MAAM,cAAc,GAAa;IACvC,aAAa,EAAE,YAAY;IAC3B,EAAE,EAAE;QACH,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,YAAY;QACjB,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,EAAE;KACZ;IACD,MAAM,EAAE;QACP,eAAe,EAAE,SAAS;KAC1B;IACD,QAAQ,EAAE;QACT,YAAY,EAAE,EAAE;KAChB;IACD,QAAQ,EAAE,EAAE;CACZ,CAAC"}
|
|
@@ -1,11 +1,25 @@
|
|
|
1
1
|
export interface ClaudeCommandOpts {
|
|
2
2
|
name: string;
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
/** Resume the most recent session in the working directory */
|
|
4
|
+
resume?: boolean;
|
|
5
5
|
permissionMode?: string;
|
|
6
6
|
telegramBotToken?: string;
|
|
7
|
-
|
|
7
|
+
channels?: string[];
|
|
8
|
+
/** Extra args passed through to `claude` verbatim */
|
|
9
|
+
extraArgs?: string[];
|
|
8
10
|
logFile: string;
|
|
9
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Build the command to start an interactive Claude session.
|
|
14
|
+
*
|
|
15
|
+
* Uses `claude` (interactive mode) instead of `claude remote-control` so that:
|
|
16
|
+
* - Channels work (via --channels at launch)
|
|
17
|
+
* - Remote control works (via /remote-control after launch)
|
|
18
|
+
* - Session resume works (via --resume)
|
|
19
|
+
* - Both channels and remote control coexist in the same session
|
|
20
|
+
*
|
|
21
|
+
* The generated CLAUDE.md instructs the session to run `/remote-control <name>`
|
|
22
|
+
* on startup to enable remote access.
|
|
23
|
+
*/
|
|
10
24
|
export declare function buildClaudeCommand(opts: ClaudeCommandOpts): string;
|
|
11
25
|
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CAChB;AAQD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAwClE"}
|
package/dist/services/claude.js
CHANGED
|
@@ -3,6 +3,18 @@ function shellEscape(value) {
|
|
|
3
3
|
// Replace ' with '\'' (end quote, escaped quote, start quote)
|
|
4
4
|
return value.replace(/'/g, "'\\''");
|
|
5
5
|
}
|
|
6
|
+
/**
|
|
7
|
+
* Build the command to start an interactive Claude session.
|
|
8
|
+
*
|
|
9
|
+
* Uses `claude` (interactive mode) instead of `claude remote-control` so that:
|
|
10
|
+
* - Channels work (via --channels at launch)
|
|
11
|
+
* - Remote control works (via /remote-control after launch)
|
|
12
|
+
* - Session resume works (via --resume)
|
|
13
|
+
* - Both channels and remote control coexist in the same session
|
|
14
|
+
*
|
|
15
|
+
* The generated CLAUDE.md instructs the session to run `/remote-control <name>`
|
|
16
|
+
* on startup to enable remote access.
|
|
17
|
+
*/
|
|
6
18
|
export function buildClaudeCommand(opts) {
|
|
7
19
|
const parts = [];
|
|
8
20
|
// CLAUDE_CODE_OAUTH_TOKEN breaks remote-control — it must use interactive auth
|
|
@@ -10,22 +22,26 @@ export function buildClaudeCommand(opts) {
|
|
|
10
22
|
// Environment variables for Telegram
|
|
11
23
|
if (opts.telegramBotToken) {
|
|
12
24
|
parts.push(`TELEGRAM_BOT_TOKEN='${shellEscape(opts.telegramBotToken)}'`);
|
|
13
|
-
if (opts.telegramStateDir) {
|
|
14
|
-
parts.push(`TELEGRAM_STATE_DIR='${shellEscape(opts.telegramStateDir)}'`);
|
|
15
|
-
}
|
|
16
25
|
}
|
|
17
26
|
parts.push("claude");
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (opts.spawnMode) {
|
|
21
|
-
parts.push(`--spawn ${shellEscape(opts.spawnMode)}`);
|
|
22
|
-
}
|
|
23
|
-
if (opts.capacity) {
|
|
24
|
-
parts.push(`--capacity ${opts.capacity}`);
|
|
27
|
+
if (opts.resume) {
|
|
28
|
+
parts.push("--continue");
|
|
25
29
|
}
|
|
30
|
+
parts.push(`--name '${shellEscape(opts.name)}'`);
|
|
26
31
|
if (opts.permissionMode) {
|
|
27
32
|
parts.push(`--permission-mode ${shellEscape(opts.permissionMode)}`);
|
|
28
33
|
}
|
|
34
|
+
// Channels (e.g. Telegram plugin)
|
|
35
|
+
if (opts.channels && opts.channels.length > 0) {
|
|
36
|
+
parts.push("--channels");
|
|
37
|
+
for (const channel of opts.channels) {
|
|
38
|
+
parts.push(`'${shellEscape(channel)}'`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Extra args passed through verbatim
|
|
42
|
+
if (opts.extraArgs && opts.extraArgs.length > 0) {
|
|
43
|
+
parts.push(...opts.extraArgs);
|
|
44
|
+
}
|
|
29
45
|
// Pipe to log file
|
|
30
46
|
parts.push(`2>&1 | tee -a '${shellEscape(opts.logFile)}'`);
|
|
31
47
|
return parts.join(" ");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAYA,wEAAwE;AACxE,SAAS,WAAW,CAAC,KAAa;IACjC,8DAA8D;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAuB;IACzD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,+EAA+E;IAC/E,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE7C,qCAAqC;IACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,qBAAqB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;IACF,CAAC;IAED,qCAAqC;IACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,mBAAmB;IACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { HqConfig } from "../config/schema.js";
|
|
2
|
+
export declare const TELEGRAM_CHANNEL_PLUGIN = "plugin:telegram@claude-plugins-official";
|
|
2
3
|
export interface TelegramEnv {
|
|
3
4
|
TELEGRAM_BOT_TOKEN: string;
|
|
4
|
-
TELEGRAM_STATE_DIR: string;
|
|
5
5
|
}
|
|
6
6
|
export declare function getHqTelegramEnv(config: HqConfig): TelegramEnv | null;
|
|
7
7
|
export declare function getProjectTelegramEnv(projectName: string, config: HqConfig): TelegramEnv | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/services/telegram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/services/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,eAAO,MAAM,uBAAuB,4CAA4C,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAGrE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAI/F"}
|
|
@@ -1,26 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
const TELEGRAM_STATE_ROOT = resolve(homedir(), ".config/hyper/hq-telegram-state");
|
|
1
|
+
export const TELEGRAM_CHANNEL_PLUGIN = "plugin:telegram@claude-plugins-official";
|
|
5
2
|
export function getHqTelegramEnv(config) {
|
|
6
3
|
if (!config.telegram.hq_bot_token)
|
|
7
4
|
return null;
|
|
8
|
-
|
|
9
|
-
mkdirSync(stateDir, { recursive: true });
|
|
10
|
-
return {
|
|
11
|
-
TELEGRAM_BOT_TOKEN: config.telegram.hq_bot_token,
|
|
12
|
-
TELEGRAM_STATE_DIR: stateDir,
|
|
13
|
-
};
|
|
5
|
+
return { TELEGRAM_BOT_TOKEN: config.telegram.hq_bot_token };
|
|
14
6
|
}
|
|
15
7
|
export function getProjectTelegramEnv(projectName, config) {
|
|
16
8
|
const token = config.telegram.project_bots[projectName];
|
|
17
9
|
if (!token)
|
|
18
10
|
return null;
|
|
19
|
-
|
|
20
|
-
mkdirSync(stateDir, { recursive: true });
|
|
21
|
-
return {
|
|
22
|
-
TELEGRAM_BOT_TOKEN: token,
|
|
23
|
-
TELEGRAM_STATE_DIR: stateDir,
|
|
24
|
-
};
|
|
11
|
+
return { TELEGRAM_BOT_TOKEN: token };
|
|
25
12
|
}
|
|
26
13
|
//# sourceMappingURL=telegram.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/services/telegram.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/services/telegram.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,uBAAuB,GAAG,yCAAyC,CAAC;AAMjF,MAAM,UAAU,gBAAgB,CAAC,MAAgB;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB,EAAE,MAAgB;IAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC"}
|
package/dist/services/tmux.d.ts
CHANGED
|
@@ -20,6 +20,8 @@ export declare function createSession(opts: {
|
|
|
20
20
|
export declare function waitAndVerify(name: string, timeoutMs?: number): "running" | "dead";
|
|
21
21
|
export declare function killSession(name: string): boolean;
|
|
22
22
|
export declare function listSessions(prefix?: string): TmuxSession[];
|
|
23
|
+
/** List all HQ-managed tmux sessions (named "Hyper HQ", "hyper-hq", or "hq-*") */
|
|
24
|
+
export declare function listHqSessions(): TmuxSession[];
|
|
23
25
|
export declare function disableRemainOnExit(name: string): void;
|
|
24
26
|
export declare function attachSession(name: string): never;
|
|
25
27
|
//# sourceMappingURL=tmux.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/services/tmux.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAWD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBxF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,SAAS,GAAG,MAAM,CAkBhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAU,GAAG,WAAW,EAAE,CAkB5D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAGjD"}
|
|
1
|
+
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/services/tmux.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CAClB;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAWD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBxF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAO,GAAG,SAAS,GAAG,MAAM,CAkBhF;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjD;AAED,wBAAgB,YAAY,CAAC,MAAM,SAAU,GAAG,WAAW,EAAE,CAkB5D;AAED,kFAAkF;AAClF,wBAAgB,cAAc,IAAI,WAAW,EAAE,CAqB9C;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAEtD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAGjD"}
|
package/dist/services/tmux.js
CHANGED
|
@@ -77,6 +77,28 @@ export function listSessions(prefix = "clint") {
|
|
|
77
77
|
};
|
|
78
78
|
});
|
|
79
79
|
}
|
|
80
|
+
/** List all HQ-managed tmux sessions (named "Hyper HQ", "hyper-hq", or "hq-*") */
|
|
81
|
+
export function listHqSessions() {
|
|
82
|
+
const format = "#{session_name}\t#{session_created_string}\t#{session_windows}\t#{?session_attached,1,0}";
|
|
83
|
+
const result = run(["list-sessions", "-F", format]);
|
|
84
|
+
if (!result.ok)
|
|
85
|
+
return [];
|
|
86
|
+
return result.stdout
|
|
87
|
+
.split("\n")
|
|
88
|
+
.filter((line) => {
|
|
89
|
+
const name = line.split("\t")[0] ?? "";
|
|
90
|
+
return name === "Hyper HQ" || name === "hyper-hq" || name.startsWith("hq-");
|
|
91
|
+
})
|
|
92
|
+
.map((line) => {
|
|
93
|
+
const [name, created, windows, attached] = line.split("\t");
|
|
94
|
+
return {
|
|
95
|
+
name: name,
|
|
96
|
+
created: created,
|
|
97
|
+
windows: Number.parseInt(windows, 10),
|
|
98
|
+
attached: attached === "1",
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
80
102
|
export function disableRemainOnExit(name) {
|
|
81
103
|
run(["set-option", "-t", name, "remain-on-exit", "off"]);
|
|
82
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/services/tmux.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/services/tmux.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CAsCT"}
|
package/dist/utils/banner.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { homedir } from "node:os";
|
|
3
|
+
import { keyValue, panel, styledText } from "@hypercli/ui";
|
|
3
4
|
import { CONFIG_PATH } from "../config/index.js";
|
|
4
5
|
import { listProjects } from "../services/projects.js";
|
|
5
6
|
function shorten(path) {
|
|
@@ -19,10 +20,6 @@ function extractBridgeUrl(logFile) {
|
|
|
19
20
|
catch { }
|
|
20
21
|
return null;
|
|
21
22
|
}
|
|
22
|
-
function pad(label, value, width) {
|
|
23
|
-
const content = ` ${label}${value}`;
|
|
24
|
-
return `║${content.padEnd(width)}║`;
|
|
25
|
-
}
|
|
26
23
|
export function renderBanner(opts) {
|
|
27
24
|
const { config, sessionName, logFile } = opts;
|
|
28
25
|
let projectCount;
|
|
@@ -32,49 +29,26 @@ export function renderBanner(opts) {
|
|
|
32
29
|
catch {
|
|
33
30
|
projectCount = 0;
|
|
34
31
|
}
|
|
35
|
-
const telegramStatus = config.telegram.hq_bot_token ? "enabled" : "disabled";
|
|
32
|
+
const telegramStatus = config.telegram.hq_bot_token ? "enabled (channel plugin)" : "disabled";
|
|
36
33
|
const bridgeUrl = extractBridgeUrl(logFile);
|
|
37
34
|
const connectValue = bridgeUrl ?? `claude.ai/code → ${sessionName}`;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
// Calculate width: widest content + 2 for padding
|
|
57
|
-
let maxContent = title.length;
|
|
58
|
-
for (const row of rows) {
|
|
59
|
-
if (row) {
|
|
60
|
-
const len = ` ${row[0]}${row[1]}`.length;
|
|
61
|
-
if (len > maxContent)
|
|
62
|
-
maxContent = len;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
const w = maxContent + 2; // inner width with padding
|
|
66
|
-
const bar = "═".repeat(w);
|
|
67
|
-
const empty = `║${" ".repeat(w)}║`;
|
|
68
|
-
const lines = ["", `╔${bar}╗`, `║${title.padEnd(w)}║`, `╠${bar}╣`, empty];
|
|
69
|
-
for (const row of rows) {
|
|
70
|
-
if (row === null) {
|
|
71
|
-
lines.push(empty);
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
lines.push(pad(row[0], row[1], w));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
lines.push(empty, `╚${bar}╝`, "");
|
|
78
|
-
return lines.join("\n");
|
|
35
|
+
const info = keyValue([
|
|
36
|
+
{ key: "Config", value: shorten(CONFIG_PATH) },
|
|
37
|
+
{ key: "Projects", value: `${shorten(config.projects_root)} (${projectCount} found)` },
|
|
38
|
+
{ key: "Telegram", value: telegramStatus },
|
|
39
|
+
{ key: "", value: "" },
|
|
40
|
+
{ key: "Session", value: sessionName },
|
|
41
|
+
{ key: "Connect", value: connectValue },
|
|
42
|
+
]);
|
|
43
|
+
const commands = keyValue([
|
|
44
|
+
{ key: "hyper hq list", value: "List projects" },
|
|
45
|
+
{ key: "hyper hq spawn <name>", value: "Start project session" },
|
|
46
|
+
{ key: "hyper hq status", value: "Show running sessions" },
|
|
47
|
+
{ key: "hyper hq attach", value: "Attach to HQ terminal" },
|
|
48
|
+
{ key: "hyper hq config", value: "Show configuration" },
|
|
49
|
+
{ key: "hyper hq stop-all", value: "Stop everything" },
|
|
50
|
+
], { separator: " ", keyStyle: { dim: true } });
|
|
51
|
+
const content = `${info}\n\n${styledText("Commands", { bold: true })}\n${commands}`;
|
|
52
|
+
return `\n${panel(content, { title: "Hyper HQ — Claude Code Command Center", padding: 1 })}\n`;
|
|
79
53
|
}
|
|
80
54
|
//# sourceMappingURL=banner.js.map
|
package/dist/utils/banner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,SAAS,OAAO,CAAC,IAAY;IAC5B,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAChE,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAe;IACxC,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,yGAAyG;QACzG,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QAChF,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,IAAI,CAAC;AACb,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"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"}
|
package/oclif.manifest.json
CHANGED
|
@@ -135,11 +135,19 @@
|
|
|
135
135
|
"hq:setup": {
|
|
136
136
|
"aliases": [],
|
|
137
137
|
"args": {},
|
|
138
|
-
"description": "Set up HQ —
|
|
138
|
+
"description": "Set up HQ — configure settings",
|
|
139
139
|
"examples": [
|
|
140
|
-
"<%= config.bin %>
|
|
140
|
+
"<%= config.bin %> hq setup"
|
|
141
141
|
],
|
|
142
|
-
"flags": {
|
|
142
|
+
"flags": {
|
|
143
|
+
"debug": {
|
|
144
|
+
"char": "d",
|
|
145
|
+
"description": "Enable debug output",
|
|
146
|
+
"name": "debug",
|
|
147
|
+
"allowNo": false,
|
|
148
|
+
"type": "boolean"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
143
151
|
"hasDynamicHelp": false,
|
|
144
152
|
"hiddenAliases": [],
|
|
145
153
|
"id": "hq:setup",
|
|
@@ -170,7 +178,8 @@
|
|
|
170
178
|
"<%= config.bin %> hq spawn my-project",
|
|
171
179
|
"<%= config.bin %> hq spawn my-project --worktree feat-auth",
|
|
172
180
|
"<%= config.bin %> hq spawn my-project --new-worktree feat-login",
|
|
173
|
-
"<%= config.bin %> hq spawn /absolute/path/to/project"
|
|
181
|
+
"<%= config.bin %> hq spawn /absolute/path/to/project",
|
|
182
|
+
"<%= config.bin %> hq spawn my-project -- --dangerously-skip-permissions"
|
|
174
183
|
],
|
|
175
184
|
"flags": {
|
|
176
185
|
"debug": {
|
|
@@ -213,6 +222,24 @@
|
|
|
213
222
|
"hasDynamicHelp": false,
|
|
214
223
|
"multiple": false,
|
|
215
224
|
"type": "option"
|
|
225
|
+
},
|
|
226
|
+
"resume": {
|
|
227
|
+
"description": "Resume the previous session for this project",
|
|
228
|
+
"name": "resume",
|
|
229
|
+
"allowNo": false,
|
|
230
|
+
"type": "boolean"
|
|
231
|
+
},
|
|
232
|
+
"yolo": {
|
|
233
|
+
"description": "Skip all permission checks (alias for -- --dangerously-skip-permissions)",
|
|
234
|
+
"name": "yolo",
|
|
235
|
+
"allowNo": false,
|
|
236
|
+
"type": "boolean"
|
|
237
|
+
},
|
|
238
|
+
"telegram": {
|
|
239
|
+
"description": "Enable Telegram channel (enabled by default when configured)",
|
|
240
|
+
"name": "telegram",
|
|
241
|
+
"allowNo": true,
|
|
242
|
+
"type": "boolean"
|
|
216
243
|
}
|
|
217
244
|
},
|
|
218
245
|
"hasDynamicHelp": false,
|
|
@@ -221,7 +248,7 @@
|
|
|
221
248
|
"pluginAlias": "@hypercli/hq",
|
|
222
249
|
"pluginName": "@hypercli/hq",
|
|
223
250
|
"pluginType": "core",
|
|
224
|
-
"strict":
|
|
251
|
+
"strict": false,
|
|
225
252
|
"enableJsonFlag": false,
|
|
226
253
|
"isESM": true,
|
|
227
254
|
"relativePath": [
|
|
@@ -237,8 +264,10 @@
|
|
|
237
264
|
"description": "Start the HQ session — always-on Claude Code command center",
|
|
238
265
|
"examples": [
|
|
239
266
|
"<%= config.bin %> hq start",
|
|
240
|
-
"<%= config.bin %> hq start --
|
|
241
|
-
"<%= config.bin %> hq start --
|
|
267
|
+
"<%= config.bin %> hq start --yolo",
|
|
268
|
+
"<%= config.bin %> hq start --fresh",
|
|
269
|
+
"<%= config.bin %> hq start --no-telegram",
|
|
270
|
+
"<%= config.bin %> hq start -- --model opus"
|
|
242
271
|
],
|
|
243
272
|
"flags": {
|
|
244
273
|
"debug": {
|
|
@@ -255,20 +284,20 @@
|
|
|
255
284
|
"multiple": false,
|
|
256
285
|
"type": "option"
|
|
257
286
|
},
|
|
258
|
-
"
|
|
259
|
-
"description": "
|
|
260
|
-
"name": "
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
"type": "
|
|
287
|
+
"fresh": {
|
|
288
|
+
"description": "Start a new session instead of resuming the previous one",
|
|
289
|
+
"name": "fresh",
|
|
290
|
+
"allowNo": false,
|
|
291
|
+
"type": "boolean"
|
|
292
|
+
},
|
|
293
|
+
"yolo": {
|
|
294
|
+
"description": "Skip all permission checks (alias for -- --dangerously-skip-permissions)",
|
|
295
|
+
"name": "yolo",
|
|
296
|
+
"allowNo": false,
|
|
297
|
+
"type": "boolean"
|
|
269
298
|
},
|
|
270
299
|
"permission-mode": {
|
|
271
|
-
"description": "Permission mode for
|
|
300
|
+
"description": "Permission mode for the Claude session",
|
|
272
301
|
"name": "permission-mode",
|
|
273
302
|
"hasDynamicHelp": false,
|
|
274
303
|
"multiple": false,
|
|
@@ -280,12 +309,11 @@
|
|
|
280
309
|
],
|
|
281
310
|
"type": "option"
|
|
282
311
|
},
|
|
283
|
-
"
|
|
284
|
-
"description": "
|
|
285
|
-
"name": "
|
|
286
|
-
"
|
|
287
|
-
"
|
|
288
|
-
"type": "option"
|
|
312
|
+
"telegram": {
|
|
313
|
+
"description": "Enable Telegram channel (enabled by default when configured)",
|
|
314
|
+
"name": "telegram",
|
|
315
|
+
"allowNo": true,
|
|
316
|
+
"type": "boolean"
|
|
289
317
|
}
|
|
290
318
|
},
|
|
291
319
|
"hasDynamicHelp": false,
|
|
@@ -294,7 +322,7 @@
|
|
|
294
322
|
"pluginAlias": "@hypercli/hq",
|
|
295
323
|
"pluginName": "@hypercli/hq",
|
|
296
324
|
"pluginType": "core",
|
|
297
|
-
"strict":
|
|
325
|
+
"strict": false,
|
|
298
326
|
"enableJsonFlag": false,
|
|
299
327
|
"isESM": true,
|
|
300
328
|
"relativePath": [
|
|
@@ -413,7 +441,40 @@
|
|
|
413
441
|
"hq",
|
|
414
442
|
"stop.js"
|
|
415
443
|
]
|
|
444
|
+
},
|
|
445
|
+
"hq:configure:telegram": {
|
|
446
|
+
"aliases": [],
|
|
447
|
+
"args": {},
|
|
448
|
+
"description": "Configure Telegram integration for HQ",
|
|
449
|
+
"examples": [
|
|
450
|
+
"<%= config.bin %> hq configure telegram"
|
|
451
|
+
],
|
|
452
|
+
"flags": {
|
|
453
|
+
"debug": {
|
|
454
|
+
"char": "d",
|
|
455
|
+
"description": "Enable debug output",
|
|
456
|
+
"name": "debug",
|
|
457
|
+
"allowNo": false,
|
|
458
|
+
"type": "boolean"
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
"hasDynamicHelp": false,
|
|
462
|
+
"hiddenAliases": [],
|
|
463
|
+
"id": "hq:configure:telegram",
|
|
464
|
+
"pluginAlias": "@hypercli/hq",
|
|
465
|
+
"pluginName": "@hypercli/hq",
|
|
466
|
+
"pluginType": "core",
|
|
467
|
+
"strict": true,
|
|
468
|
+
"enableJsonFlag": false,
|
|
469
|
+
"isESM": true,
|
|
470
|
+
"relativePath": [
|
|
471
|
+
"dist",
|
|
472
|
+
"commands",
|
|
473
|
+
"hq",
|
|
474
|
+
"configure",
|
|
475
|
+
"telegram.js"
|
|
476
|
+
]
|
|
416
477
|
}
|
|
417
478
|
},
|
|
418
|
-
"version": "0.
|
|
479
|
+
"version": "0.2.2"
|
|
419
480
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hypercli/hq",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Claude Code session management for HyperDev — always-on control plane",
|
|
6
6
|
"keywords": [
|
|
@@ -44,6 +44,9 @@
|
|
|
44
44
|
"topics": {
|
|
45
45
|
"hq": {
|
|
46
46
|
"description": "Manage Claude Code sessions with the always-on HQ control center"
|
|
47
|
+
},
|
|
48
|
+
"hq:configure": {
|
|
49
|
+
"description": "Configure individual HQ settings"
|
|
47
50
|
}
|
|
48
51
|
},
|
|
49
52
|
"topicSeparator": " "
|
|
@@ -71,7 +74,9 @@
|
|
|
71
74
|
},
|
|
72
75
|
"dependencies": {
|
|
73
76
|
"@clack/prompts": "^1.1.0",
|
|
77
|
+
"@hypercli/ui": "^0.2.2",
|
|
74
78
|
"@oclif/core": "^4",
|
|
79
|
+
"create-hyper-hq": "workspace:*",
|
|
75
80
|
"smol-toml": "^1"
|
|
76
81
|
},
|
|
77
82
|
"devDependencies": {
|
package/dist/config/setup.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/config/setup.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,wBAAsB,QAAQ,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6K/D;AAGD,eAAO,MAAM,gBAAgB,yBAAwB,CAAC"}
|