@hypercli/hq 0.1.3 → 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.
Files changed (51) hide show
  1. package/dist/commands/hq/configure/telegram.d.ts +7 -0
  2. package/dist/commands/hq/configure/telegram.d.ts.map +1 -0
  3. package/dist/commands/hq/configure/telegram.js +24 -0
  4. package/dist/commands/hq/configure/telegram.js.map +1 -0
  5. package/dist/commands/hq/setup.d.ts +2 -2
  6. package/dist/commands/hq/setup.d.ts.map +1 -1
  7. package/dist/commands/hq/setup.js +24 -33
  8. package/dist/commands/hq/setup.js.map +1 -1
  9. package/dist/commands/hq/spawn.d.ts +4 -0
  10. package/dist/commands/hq/spawn.d.ts.map +1 -1
  11. package/dist/commands/hq/spawn.js +32 -8
  12. package/dist/commands/hq/spawn.js.map +1 -1
  13. package/dist/commands/hq/start.d.ts +4 -2
  14. package/dist/commands/hq/start.d.ts.map +1 -1
  15. package/dist/commands/hq/start.js +49 -82
  16. package/dist/commands/hq/start.js.map +1 -1
  17. package/dist/commands/hq/status.js +2 -2
  18. package/dist/commands/hq/status.js.map +1 -1
  19. package/dist/commands/hq/stop-all.js +1 -1
  20. package/dist/commands/hq/stop-all.js.map +1 -1
  21. package/dist/config/index.d.ts +5 -0
  22. package/dist/config/index.d.ts.map +1 -1
  23. package/dist/config/index.js +30 -1
  24. package/dist/config/index.js.map +1 -1
  25. package/dist/config/schema.js +2 -2
  26. package/dist/config/schema.js.map +1 -1
  27. package/dist/services/claude.d.ts +17 -3
  28. package/dist/services/claude.d.ts.map +1 -1
  29. package/dist/services/claude.js +25 -13
  30. package/dist/services/claude.js.map +1 -1
  31. package/dist/services/telegram.d.ts +1 -1
  32. package/dist/services/telegram.d.ts.map +1 -1
  33. package/dist/services/telegram.js +3 -16
  34. package/dist/services/telegram.js.map +1 -1
  35. package/dist/services/tmux.d.ts +2 -0
  36. package/dist/services/tmux.d.ts.map +1 -1
  37. package/dist/services/tmux.js +22 -0
  38. package/dist/services/tmux.js.map +1 -1
  39. package/dist/utils/banner.d.ts.map +1 -1
  40. package/dist/utils/banner.js +20 -46
  41. package/dist/utils/banner.js.map +1 -1
  42. package/oclif.manifest.json +88 -27
  43. package/package.json +6 -1
  44. package/dist/config/setup.d.ts +0 -4
  45. package/dist/config/setup.d.ts.map +0 -1
  46. package/dist/config/setup.js +0 -148
  47. package/dist/config/setup.js.map +0 -1
  48. package/dist/utils/trust.d.ts +0 -13
  49. package/dist/utils/trust.d.ts.map +0 -1
  50. package/dist/utils/trust.js +0 -29
  51. package/dist/utils/trust.js.map +0 -1
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export const DEFAULT_CONFIG = {
2
- projects_root: "~/work",
2
+ projects_root: "~/projects",
3
3
  hq: {
4
- name: "hyper-hq",
4
+ name: "Hyper HQ",
5
5
  dir: "./hyper-hq",
6
6
  spawn_mode: "same-dir",
7
7
  capacity: 32,
@@ -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,QAAQ;IACvB,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
+ {"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
- spawnMode?: string;
4
- capacity?: number;
3
+ /** Resume the most recent session in the working directory */
4
+ resume?: boolean;
5
5
  permissionMode?: string;
6
6
  telegramBotToken?: string;
7
- telegramStateDir?: string;
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,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAuClE"}
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"}
@@ -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,25 +22,25 @@ 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
- parts.push("remote-control");
19
- parts.push(`--name '${shellEscape(opts.name)}'`);
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
  }
29
- // Add Telegram channel if bot token is configured
30
- if (opts.telegramBotToken) {
31
- parts.push("--channels plugin:telegram@claude-plugins-official");
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);
32
44
  }
33
45
  // Pipe to log file
34
46
  parts.push(`2>&1 | tee -a '${shellEscape(opts.logFile)}'`);
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAUA,wEAAwE;AACxE,SAAS,WAAW,CAAC,KAAa;IACjC,8DAA8D;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,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;QACzE,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,uBAAuB,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC1E,CAAC;IACF,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7B,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,WAAW,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,qBAAqB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,kDAAkD;IAClD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAClE,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
+ {"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":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,WAAW;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAQrE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,IAAI,CAU/F"}
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
- import { mkdirSync } from "node:fs";
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
- const stateDir = resolve(TELEGRAM_STATE_ROOT, "hq");
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
- const stateDir = resolve(TELEGRAM_STATE_ROOT, projectName);
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":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,MAAM,mBAAmB,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,iCAAiC,CAAC,CAAC;AAElF,MAAM,UAAU,gBAAgB,CAAC,MAAgB;IAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACpD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO;QACN,kBAAkB,EAAE,MAAM,CAAC,QAAQ,CAAC,YAAY;QAChD,kBAAkB,EAAE,QAAQ;KAC5B,CAAC;AACH,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;IAExB,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;IAC3D,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,OAAO;QACN,kBAAkB,EAAE,KAAK;QACzB,kBAAkB,EAAE,QAAQ;KAC5B,CAAC;AACH,CAAC"}
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"}
@@ -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"}
@@ -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":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAwBpD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,QAAQ,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CAChB,GAAG,MAAM,CA4DT"}
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"}
@@ -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
- // Build content rows to determine width
39
- const rows = [
40
- ["Config: ", shorten(CONFIG_PATH)],
41
- ["Projects: ", `${shorten(config.projects_root)} (${projectCount} found)`],
42
- ["Telegram: ", telegramStatus],
43
- null,
44
- ["Session: ", sessionName],
45
- ["Connect: ", connectValue],
46
- null,
47
- ["Commands:", ""],
48
- [" hyper hq list", " List projects"],
49
- [" hyper hq spawn <name>", " Start project session"],
50
- [" hyper hq status", " Show running sessions"],
51
- [" hyper hq attach", " Attach to HQ terminal"],
52
- [" hyper hq config", " Show configuration"],
53
- [" hyper hq stop-all", " Stop everything"],
54
- ];
55
- const title = " Hyper HQ — Claude Code Command Center";
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
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/utils/banner.ts"],"names":[],"mappings":"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"}
@@ -135,11 +135,19 @@
135
135
  "hq:setup": {
136
136
  "aliases": [],
137
137
  "args": {},
138
- "description": "Set up HQ — check dependencies and configure",
138
+ "description": "Set up HQ — configure settings",
139
139
  "examples": [
140
- "<%= config.bin %> <%= command.id %>"
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": true,
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 --spawn-mode worktree",
241
- "<%= config.bin %> hq start --capacity 16"
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
- "spawn-mode": {
259
- "description": "How new sessions are created",
260
- "name": "spawn-mode",
261
- "hasDynamicHelp": false,
262
- "multiple": false,
263
- "options": [
264
- "same-dir",
265
- "worktree",
266
- "session"
267
- ],
268
- "type": "option"
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 sessions",
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
- "capacity": {
284
- "description": "Max concurrent sessions",
285
- "name": "capacity",
286
- "hasDynamicHelp": false,
287
- "multiple": false,
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": true,
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.1.3"
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.1.3",
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": {
@@ -1,4 +0,0 @@
1
- import type { HqConfig } from "./schema.js";
2
- export declare function runSetup(force?: boolean): Promise<HqConfig>;
3
- export declare const runSetupIfNeeded: () => Promise<HqConfig>;
4
- //# sourceMappingURL=setup.d.ts.map
@@ -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"}