@hypercli/hq 0.3.0 → 0.4.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.
Files changed (40) hide show
  1. package/README.md +2 -1
  2. package/dist/commands/hq/launch.d.ts +19 -0
  3. package/dist/commands/hq/launch.d.ts.map +1 -0
  4. package/dist/commands/hq/launch.js +155 -0
  5. package/dist/commands/hq/launch.js.map +1 -0
  6. package/dist/commands/hq/relaunch.d.ts +18 -0
  7. package/dist/commands/hq/relaunch.d.ts.map +1 -0
  8. package/dist/commands/hq/relaunch.js +124 -0
  9. package/dist/commands/hq/relaunch.js.map +1 -0
  10. package/dist/commands/hq/start.d.ts.map +1 -1
  11. package/dist/commands/hq/start.js +10 -8
  12. package/dist/commands/hq/start.js.map +1 -1
  13. package/dist/commands/hq/stop-all.d.ts.map +1 -1
  14. package/dist/commands/hq/stop-all.js +2 -0
  15. package/dist/commands/hq/stop-all.js.map +1 -1
  16. package/dist/commands/hq/stop.d.ts.map +1 -1
  17. package/dist/commands/hq/stop.js +2 -0
  18. package/dist/commands/hq/stop.js.map +1 -1
  19. package/dist/config/schema.d.ts +1 -1
  20. package/dist/config/schema.d.ts.map +1 -1
  21. package/dist/services/claude.d.ts.map +1 -1
  22. package/dist/services/claude.js +1 -0
  23. package/dist/services/claude.js.map +1 -1
  24. package/dist/services/sessions.d.ts +19 -0
  25. package/dist/services/sessions.d.ts.map +1 -0
  26. package/dist/services/sessions.js +51 -0
  27. package/dist/services/sessions.js.map +1 -0
  28. package/dist/utils/banner.js +1 -1
  29. package/dist/utils/banner.js.map +1 -1
  30. package/dist/utils/paths.d.ts +2 -0
  31. package/dist/utils/paths.d.ts.map +1 -1
  32. package/dist/utils/paths.js +2 -0
  33. package/dist/utils/paths.js.map +1 -1
  34. package/help/hq.md +6 -5
  35. package/oclif.manifest.json +118 -61
  36. package/package.json +3 -3
  37. package/dist/commands/hq/spawn.d.ts +0 -21
  38. package/dist/commands/hq/spawn.d.ts.map +0 -1
  39. package/dist/commands/hq/spawn.js +0 -123
  40. package/dist/commands/hq/spawn.js.map +0 -1
package/README.md CHANGED
@@ -9,7 +9,8 @@ Included automatically with `@hypercli/cli`. Can also be installed as a standalo
9
9
  ## Commands
10
10
 
11
11
  - `hyper hq start` — Start the always-on HQ control center
12
- - `hyper hq spawn <project>`Spawn a Claude session for a project
12
+ - `hyper hq launch [project] [path]` Launch a Claude session for a project
13
+ - `hyper hq relaunch <session|project>` — Relaunch a session with --continue
13
14
  - `hyper hq status` — Show running sessions
14
15
  - `hyper hq list` — List available projects
15
16
  - `hyper hq attach` — Attach to a tmux session
@@ -0,0 +1,19 @@
1
+ import { BaseCommand } from "#lib/base-command";
2
+ export default class Launch extends BaseCommand<typeof Launch> {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ project: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
7
+ path: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ "session-name": import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
9
+ };
10
+ static strict: boolean;
11
+ static flags: {
12
+ "permission-mode": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
+ yolo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ telegram: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
+ };
17
+ run(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/launch.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAgBhD,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,WAAW,CAAC,OAAO,MAAM,CAAC;IAC7D,OAAgB,WAAW,SAA2C;IAEtE,OAAgB,QAAQ,WAMtB;IAEF,OAAgB,IAAI;;;;MAalB;IAEF,OAAgB,MAAM,UAAS;IAE/B,OAAgB,KAAK;;;;;MAenB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAuH1B"}
@@ -0,0 +1,155 @@
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { basename, resolve } from "node:path";
3
+ import * as p from "@clack/prompts";
4
+ import { Args, Flags } from "@oclif/core";
5
+ import { loadConfig } from "#config/index";
6
+ import { BaseCommand } from "#lib/base-command";
7
+ import { buildClaudeCommand } from "#services/claude";
8
+ import { listProjects, resolveProjectDir } from "#services/projects";
9
+ import { recordLaunch } from "#services/sessions";
10
+ import { TELEGRAM_CHANNEL_PLUGIN, getProjectTelegramEnv } from "#services/telegram";
11
+ import * as tmux from "#services/tmux";
12
+ import { sanitizeSessionName } from "#services/tmux";
13
+ import { log } from "#utils/log";
14
+ import { LOG_DIR } from "#utils/paths";
15
+ function formatTimestamp() {
16
+ const now = new Date();
17
+ const pad = (n) => n.toString().padStart(2, "0");
18
+ return `${pad(now.getMonth() + 1)}-${pad(now.getDate())}-${pad(now.getHours())}-${pad(now.getMinutes())}`;
19
+ }
20
+ export default class Launch extends BaseCommand {
21
+ static description = "Launch a Claude session for a project";
22
+ static examples = [
23
+ "<%= config.bin %> hq launch my-project",
24
+ "<%= config.bin %> hq launch my-project src/frontend",
25
+ "<%= config.bin %> hq launch my-project src/frontend my-session",
26
+ "<%= config.bin %> hq launch my-project --yolo",
27
+ "<%= config.bin %> hq launch",
28
+ ];
29
+ static args = {
30
+ project: Args.string({
31
+ description: "Project name (under projects root) or absolute path",
32
+ required: false,
33
+ }),
34
+ path: Args.string({
35
+ description: "Relative path inside the project to use as working directory",
36
+ required: false,
37
+ }),
38
+ "session-name": Args.string({
39
+ description: "Custom session name (default: hq-<project>-MM-DD-HH-mm)",
40
+ required: false,
41
+ }),
42
+ };
43
+ static strict = false;
44
+ static flags = {
45
+ ...BaseCommand.baseFlags,
46
+ "permission-mode": Flags.string({
47
+ description: "Permission mode",
48
+ options: ["default", "acceptEdits", "plan", "bypassPermissions", "auto"],
49
+ }),
50
+ yolo: Flags.boolean({
51
+ description: "Skip all permission checks (sets --permission-mode bypassPermissions)",
52
+ default: false,
53
+ }),
54
+ telegram: Flags.boolean({
55
+ description: "Enable Telegram channel (enabled by default when configured)",
56
+ default: true,
57
+ allowNo: true,
58
+ }),
59
+ };
60
+ async run() {
61
+ const { args, flags, argv } = await this.parse(Launch);
62
+ const extraClaudeArgs = argv;
63
+ const config = loadConfig();
64
+ let projectArg = args.project;
65
+ // Interactive project selection if not provided
66
+ if (!projectArg) {
67
+ const projects = listProjects(config);
68
+ if (projects.length === 0) {
69
+ this.error(`No projects found in ${config.projects_root}`);
70
+ }
71
+ const selected = await p.select({
72
+ message: "Select a project",
73
+ options: projects.map((proj) => ({
74
+ value: proj.name,
75
+ label: proj.name,
76
+ hint: proj.path,
77
+ })),
78
+ maxItems: 15,
79
+ });
80
+ if (p.isCancel(selected)) {
81
+ this.error("Cancelled");
82
+ }
83
+ projectArg = selected;
84
+ }
85
+ const permissionMode = flags.yolo
86
+ ? "bypassPermissions"
87
+ : (flags["permission-mode"] ?? config.claude.permission_mode);
88
+ const projectDir = resolveProjectDir(projectArg, config);
89
+ const projectName = projectArg.startsWith("/") ? basename(projectArg) : projectArg;
90
+ if (!existsSync(projectDir)) {
91
+ this.error(`Directory not found: ${projectDir}`);
92
+ }
93
+ let workDir = projectDir;
94
+ if (args.path) {
95
+ workDir = resolve(projectDir, args.path);
96
+ if (!existsSync(workDir)) {
97
+ this.error(`Path not found: ${workDir}`);
98
+ }
99
+ }
100
+ const sessionName = sanitizeSessionName(args["session-name"] ?? `hq-${projectName}-${formatTimestamp()}`);
101
+ if (tmux.sessionExists(sessionName)) {
102
+ log(`Session '${sessionName}' is already running. Use 'hyper hq attach ${sessionName}' to connect.`);
103
+ return;
104
+ }
105
+ mkdirSync(LOG_DIR, { recursive: true });
106
+ const telegramEnv = flags.telegram ? getProjectTelegramEnv(projectName, config) : null;
107
+ const channels = [];
108
+ if (telegramEnv)
109
+ channels.push(TELEGRAM_CHANNEL_PLUGIN);
110
+ const logFile = resolve(LOG_DIR, `${sessionName}.log`);
111
+ const command = buildClaudeCommand({
112
+ name: sessionName,
113
+ resume: false,
114
+ permissionMode,
115
+ telegramBotToken: telegramEnv?.TELEGRAM_BOT_TOKEN,
116
+ channels,
117
+ extraArgs: extraClaudeArgs,
118
+ });
119
+ log(`Launching Claude session for: ${projectName}`);
120
+ log(`Working directory: ${workDir}`);
121
+ tmux.createSession({ name: sessionName, cwd: workDir, command, logFile });
122
+ if (tmux.waitAndVerify(sessionName) === "dead") {
123
+ this.error(`Session '${sessionName}' exited immediately after starting.
124
+ Check the log for details: ${logFile}
125
+
126
+ Common causes:
127
+ - Claude CLI is not authenticated (run: claude auth login)
128
+ - The claude command is not found (check your PATH)
129
+ - Telegram plugin not installed (run: claude plugin install telegram@claude-plugins-official)`);
130
+ }
131
+ tmux.disableRemainOnExit(sessionName);
132
+ // Record in session history
133
+ recordLaunch({
134
+ sessionName,
135
+ project: projectName,
136
+ path: args.path,
137
+ projectDir,
138
+ workDir,
139
+ permissionMode,
140
+ yolo: flags.yolo,
141
+ telegram: flags.telegram,
142
+ launchedAt: new Date().toISOString(),
143
+ status: "running",
144
+ });
145
+ log("");
146
+ log(`Session '${sessionName}' started`);
147
+ log("Connect via:");
148
+ log(` Web: claude.ai/code → find session '${sessionName}'`);
149
+ log(` Terminal: hyper hq attach ${sessionName}`);
150
+ if (telegramEnv) {
151
+ log(` Telegram: Message the ${projectName} bot`);
152
+ }
153
+ }
154
+ }
155
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/commands/hq/launch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseCommand } from "#lib/base-command";
2
+ export default class Relaunch extends BaseCommand<typeof Relaunch> {
3
+ static description: string;
4
+ static examples: string[];
5
+ static args: {
6
+ target: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ path: import("@oclif/core/interfaces").Arg<string | undefined, Record<string, unknown>>;
8
+ };
9
+ static strict: boolean;
10
+ static flags: {
11
+ "permission-mode": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ yolo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ telegram: import("@oclif/core/interfaces").BooleanFlag<boolean>;
14
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=relaunch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaunch.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/relaunch.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW,CAAC,OAAO,QAAQ,CAAC;IACjE,OAAgB,WAAW,SAAiD;IAE5E,OAAgB,QAAQ,WAKtB;IAEF,OAAgB,IAAI;;;MASlB;IAEF,OAAgB,MAAM,UAAS;IAE/B,OAAgB,KAAK;;;;;MAenB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAyF1B"}
@@ -0,0 +1,124 @@
1
+ import { existsSync, mkdirSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { Args, Flags } from "@oclif/core";
4
+ import { loadConfig } from "#config/index";
5
+ import { BaseCommand } from "#lib/base-command";
6
+ import { buildClaudeCommand } from "#services/claude";
7
+ import { findLatestSession, findSession, recordLaunch, recordStop } from "#services/sessions";
8
+ import { TELEGRAM_CHANNEL_PLUGIN, getProjectTelegramEnv } from "#services/telegram";
9
+ import * as tmux from "#services/tmux";
10
+ import { sanitizeSessionName } from "#services/tmux";
11
+ import { log } from "#utils/log";
12
+ import { LOG_DIR } from "#utils/paths";
13
+ function formatTimestamp() {
14
+ const now = new Date();
15
+ const pad = (n) => n.toString().padStart(2, "0");
16
+ return `${pad(now.getMonth() + 1)}-${pad(now.getDate())}-${pad(now.getHours())}-${pad(now.getMinutes())}`;
17
+ }
18
+ export default class Relaunch extends BaseCommand {
19
+ static description = "Stop and relaunch a session with --continue";
20
+ static examples = [
21
+ "<%= config.bin %> hq relaunch hq-my-project-03-24-10-30",
22
+ "<%= config.bin %> hq relaunch my-project",
23
+ "<%= config.bin %> hq relaunch my-project src/frontend",
24
+ "<%= config.bin %> hq relaunch hq-my-project-03-24-10-30 --yolo",
25
+ ];
26
+ static args = {
27
+ target: Args.string({
28
+ description: "Session name, or project name",
29
+ required: true,
30
+ }),
31
+ path: Args.string({
32
+ description: "Relative path inside the project (when target is a project name)",
33
+ required: false,
34
+ }),
35
+ };
36
+ static strict = false;
37
+ static flags = {
38
+ ...BaseCommand.baseFlags,
39
+ "permission-mode": Flags.string({
40
+ description: "Permission mode",
41
+ options: ["default", "acceptEdits", "plan", "bypassPermissions", "auto"],
42
+ }),
43
+ yolo: Flags.boolean({
44
+ description: "Skip all permission checks (sets --permission-mode bypassPermissions)",
45
+ default: false,
46
+ }),
47
+ telegram: Flags.boolean({
48
+ description: "Enable Telegram channel (enabled by default when configured)",
49
+ default: true,
50
+ allowNo: true,
51
+ }),
52
+ };
53
+ async run() {
54
+ const { args, flags, argv } = await this.parse(Relaunch);
55
+ const extraClaudeArgs = argv;
56
+ const config = loadConfig();
57
+ // Try to find the session — first by exact session name, then by project+path
58
+ let session = findSession(args.target);
59
+ if (!session) {
60
+ session = findLatestSession(args.target, args.path);
61
+ }
62
+ if (!session) {
63
+ this.error(`No session found for '${args.target}'${args.path ? ` with path '${args.path}'` : ""}. Run 'hyper hq status' to see active sessions.`);
64
+ }
65
+ const { project, projectDir, workDir, sessionName: oldSessionName } = session;
66
+ // Stop the old session if it's still running
67
+ if (tmux.sessionExists(oldSessionName)) {
68
+ log(`Stopping session '${oldSessionName}'...`);
69
+ tmux.killSession(oldSessionName);
70
+ }
71
+ recordStop(oldSessionName);
72
+ // Build new session
73
+ const permissionMode = flags.yolo
74
+ ? "bypassPermissions"
75
+ : (flags["permission-mode"] ?? config.claude.permission_mode);
76
+ const newSessionName = sanitizeSessionName(`hq-${project}-${formatTimestamp()}`);
77
+ if (!existsSync(workDir)) {
78
+ this.error(`Working directory no longer exists: ${workDir}`);
79
+ }
80
+ mkdirSync(LOG_DIR, { recursive: true });
81
+ const telegramEnv = flags.telegram ? getProjectTelegramEnv(project, config) : null;
82
+ const channels = [];
83
+ if (telegramEnv)
84
+ channels.push(TELEGRAM_CHANNEL_PLUGIN);
85
+ const logFile = resolve(LOG_DIR, `${newSessionName}.log`);
86
+ const command = buildClaudeCommand({
87
+ name: newSessionName,
88
+ resume: true, // Always --continue for relaunch
89
+ permissionMode,
90
+ telegramBotToken: telegramEnv?.TELEGRAM_BOT_TOKEN,
91
+ channels,
92
+ extraArgs: extraClaudeArgs,
93
+ });
94
+ log(`Relaunching session for: ${project}`);
95
+ log(`Working directory: ${workDir}`);
96
+ tmux.createSession({ name: newSessionName, cwd: workDir, command, logFile });
97
+ if (tmux.waitAndVerify(newSessionName) === "dead") {
98
+ this.error(`Session '${newSessionName}' exited immediately after starting.
99
+ Check the log for details: ${logFile}`);
100
+ }
101
+ tmux.disableRemainOnExit(newSessionName);
102
+ recordLaunch({
103
+ sessionName: newSessionName,
104
+ project,
105
+ path: session.path,
106
+ projectDir,
107
+ workDir,
108
+ permissionMode,
109
+ yolo: flags.yolo,
110
+ telegram: flags.telegram,
111
+ launchedAt: new Date().toISOString(),
112
+ status: "running",
113
+ });
114
+ log("");
115
+ log(`Session '${newSessionName}' started (continuing from '${oldSessionName}')`);
116
+ log("Connect via:");
117
+ log(` Web: claude.ai/code → find session '${newSessionName}'`);
118
+ log(` Terminal: hyper hq attach ${newSessionName}`);
119
+ if (telegramEnv) {
120
+ log(` Telegram: Message the ${project} bot`);
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=relaunch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relaunch.js","sourceRoot":"","sources":["../../../src/commands/hq/relaunch.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/start.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAmChD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC3D,OAAgB,WAAW,SAAiE;IAE5F,OAAgB,QAAQ,WAMtB;IAGF,OAAgB,MAAM,UAAS;IAE/B,OAAgB,KAAK;;;;;;;MAqBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiI1B"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/start.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAmChD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC3D,OAAgB,WAAW,SAAiE;IAE5F,OAAgB,QAAQ,WAMtB;IAGF,OAAgB,MAAM,UAAS;IAE/B,OAAgB,KAAK;;;;;;;MAqBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAmI1B"}
@@ -4,13 +4,13 @@ import { homedir } from "node:os";
4
4
  import { resolve } from "node:path";
5
5
  import * as p from "@clack/prompts";
6
6
  import { Flags } from "@oclif/core";
7
- import { generateHqClaudeMd, generateHqConfigSkill, } from "create-hyper-hq/setup/claude-md";
7
+ import { generateHqClaudeMd, generateHqConfigSkill, generateRenameSessionsSkill, } from "create-hyper-hq/setup/claude-md";
8
8
  import { isWorkspaceTrusted, trustWorkspace } from "create-hyper-hq/setup/trust";
9
9
  import { runConfigWizard } from "create-hyper-hq/setup/wizard";
10
10
  import { configExists, loadConfig } from "#config/index";
11
11
  import { BaseCommand } from "#lib/base-command";
12
12
  import { buildClaudeCommand } from "#services/claude";
13
- import { getHqTelegramEnv, TELEGRAM_CHANNEL_PLUGIN } from "#services/telegram";
13
+ import { TELEGRAM_CHANNEL_PLUGIN, getHqTelegramEnv } from "#services/telegram";
14
14
  import * as tmux from "#services/tmux";
15
15
  import { renderBanner } from "#utils/banner";
16
16
  import { log } from "#utils/log";
@@ -66,7 +66,7 @@ export default class Start extends BaseCommand {
66
66
  }),
67
67
  "permission-mode": Flags.string({
68
68
  description: "Permission mode for the Claude session",
69
- options: ["default", "acceptEdits", "plan", "auto"],
69
+ options: ["default", "acceptEdits", "plan", "bypassPermissions", "auto"],
70
70
  default: undefined,
71
71
  }),
72
72
  telegram: Flags.boolean({
@@ -80,11 +80,9 @@ export default class Start extends BaseCommand {
80
80
  const extraClaudeArgs = argv;
81
81
  const config = await ensureConfig();
82
82
  const sessionName = flags.name ?? config.hq.name;
83
- const permissionMode = flags["permission-mode"] ?? config.claude.permission_mode;
84
- // --yolo injects --dangerously-skip-permissions
85
- if (flags.yolo) {
86
- extraClaudeArgs.push("--dangerously-skip-permissions");
87
- }
83
+ const permissionMode = flags.yolo
84
+ ? "bypassPermissions"
85
+ : (flags["permission-mode"] ?? config.claude.permission_mode);
88
86
  // Suggest global install if not on PATH
89
87
  if (!isHyperOnPath()) {
90
88
  p.log.warning("Hyper CLI is not installed globally. The HQ session won't be able to run hyper commands.\n" +
@@ -110,6 +108,10 @@ export default class Start extends BaseCommand {
110
108
  const skillDir = resolve(hqDir, ".claude", "skills", "hq-config");
111
109
  mkdirSync(skillDir, { recursive: true });
112
110
  writeFileSync(resolve(skillDir, "SKILL.md"), generateHqConfigSkill(), "utf-8");
111
+ // Generate /hq:rename-sessions skill
112
+ const renameSkillDir = resolve(hqDir, ".claude", "skills", "hq-rename-sessions");
113
+ mkdirSync(renameSkillDir, { recursive: true });
114
+ writeFileSync(resolve(renameSkillDir, "SKILL.md"), generateRenameSessionsSkill(), "utf-8");
113
115
  // Ensure workspace trust for both HQ dir and projects root
114
116
  for (const dir of [hqDir, config.projects_root]) {
115
117
  if (!isWorkspaceTrusted(dir)) {
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/hq/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/commands/hq/start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAEN,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,GAC3B,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACxF,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAElG,SAAS,aAAa;IACrB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,YAAY;IAC1B,IAAI,YAAY,EAAE;QAAE,OAAO,UAAU,EAAE,CAAC;IACxC,MAAM,eAAe,EAAE,CAAC;IACxB,OAAO,UAAU,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,mBAAmB;IAC3B,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,gBAAgB,CAAC;IAC5D,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;QAAE,OAAO,qBAAqB,CAAC;IACpE,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,CAAC;QACvE,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9D,OAAO,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,qBAAqB,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,qBAAqB,CAAC;IAC9B,CAAC;AACF,CAAC;AAED,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAyB;IAC3D,MAAM,CAAU,WAAW,GAAG,6DAA6D,CAAC;IAE5F,MAAM,CAAU,QAAQ,GAAG;QAC1B,4BAA4B;QAC5B,mCAAmC;QACnC,oCAAoC;QACpC,0CAA0C;QAC1C,4CAA4C;KAC5C,CAAC;IAEF,sDAAsD;IACtD,MAAM,CAAU,MAAM,GAAG,KAAK,CAAC;IAE/B,MAAM,CAAU,KAAK,GAAG;QACvB,GAAG,WAAW,CAAC,SAAS;QACxB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9E,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE,0DAA0D;YACvE,OAAO,EAAE,KAAK;SACd,CAAC;QACF,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YACnB,WAAW,EAAE,0DAA0D;YACvE,OAAO,EAAE,KAAK;SACd,CAAC;QACF,iBAAiB,EAAE,KAAK,CAAC,MAAM,CAAC;YAC/B,WAAW,EAAE,wCAAwC;YACrD,OAAO,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,CAAC;YACxE,OAAO,EAAE,SAAS;SAClB,CAAC;QACF,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,8DAA8D;YAC3E,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;SACb,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,IAAgB,CAAC;QACzC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;QACjD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI;YAChC,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE/D,wCAAwC;QACxC,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACtB,CAAC,CAAC,GAAG,CAAC,OAAO,CACZ,4FAA4F;gBAC3F,yBAAyB;gBACzB,oCAAoC,CACrC,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC;QAED,iFAAiF;QACjF,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;QAC5C,aAAa,CACZ,YAAY,EACZ,kBAAkB,CAAC;YAClB,YAAY,EAAE,MAAM,CAAC,aAAa;YAClC,WAAW;YACX,UAAU,EAAE,KAAK,CAAC,IAAI;YACtB,aAAa;SACb,CAAC,EACF,OAAO,CACP,CAAC;QAEF,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAClE,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,qBAAqB,EAAE,EAAE,OAAO,CAAC,CAAC;QAE/E,qCAAqC;QACrC,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QACjF,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,aAAa,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,2BAA2B,EAAE,EAAE,OAAO,CAAC,CAAC;QAE3F,2DAA2D;QAC3D,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9B,cAAc,CAAC,GAAG,CAAC,CAAC;gBACpB,GAAG,CAAC,WAAW,GAAG,mBAAmB,CAAC,CAAC;YACxC,CAAC;QACF,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,GAAG,CAAC,YAAY,WAAW,oCAAoC,CAAC,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAExC,oEAAoE;QACpE,MAAM,WAAW,GAChB,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,WAAW;YAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,GAAG,WAAW,MAAM,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,kBAAkB,CAAC;YAClC,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK;YACpB,cAAc;YACd,gBAAgB,EAAE,WAAW,EAAE,kBAAkB;YACjD,QAAQ;YACR,SAAS,EAAE,eAAe;SAC1B,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,KAAK,CAAC;QAElB,GAAG,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;QAE3C,IAAI,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAEjE,+CAA+C;QAC/C,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,MAAM,EAAE,CAAC;YAChD,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC;gBACJ,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAClD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAChF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,SAAS,GAAG,6BAA6B,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;gBAChF,CAAC;YACF,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAEV,IAAI,CAAC,KAAK,CACT,YAAY,WAAW;EACzB,SAAS;YACC,OAAO;;;;;;gGAM6E,CAC5F,CAAC;QACH,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAEtC,yEAAyE;QACzE,uEAAuE;QACvE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,mBAAmB,WAAW,EAAE,CAAC,CAAC;QAE7D,uEAAuE;QACvE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,qDAAqD,CAAC,CAAC;QAElF,sBAAsB;QACtB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;QAElF,2DAA2D;QAC3D,8DAA8D;QAC9D,sDAAsD;QACtD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stop-all.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/stop-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW,CAAC,OAAO,OAAO,CAAC;IAC/D,OAAgB,WAAW,SAAkC;IAE7D,OAAgB,QAAQ,WAAqC;IAEvD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAc1B"}
1
+ {"version":3,"file":"stop-all.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/stop-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAAW,CAAC,OAAO,OAAO,CAAC;IAC/D,OAAgB,WAAW,SAAkC;IAE7D,OAAgB,QAAQ,WAAqC;IAEvD,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAe1B"}
@@ -1,4 +1,5 @@
1
1
  import { BaseCommand } from "#lib/base-command";
2
+ import { recordStop } from "#services/sessions";
2
3
  import * as tmux from "#services/tmux";
3
4
  import { log } from "#utils/log";
4
5
  export default class StopAll extends BaseCommand {
@@ -13,6 +14,7 @@ export default class StopAll extends BaseCommand {
13
14
  }
14
15
  for (const session of sessions) {
15
16
  tmux.killSession(session.name);
17
+ recordStop(session.name);
16
18
  log(`Stopped: ${session.name}`);
17
19
  }
18
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stop-all.js","sourceRoot":"","sources":["../../../src/commands/hq/stop-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAA2B;IAC/D,MAAM,CAAU,WAAW,GAAG,8BAA8B,CAAC;IAE7D,MAAM,CAAU,QAAQ,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7D,KAAK,CAAC,GAAG;QACR,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACnC,OAAO;QACR,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACF,CAAC"}
1
+ {"version":3,"file":"stop-all.js","sourceRoot":"","sources":["../../../src/commands/hq/stop-all.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,WAA2B;IAC/D,MAAM,CAAU,WAAW,GAAG,8BAA8B,CAAC;IAE7D,MAAM,CAAU,QAAQ,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAE7D,KAAK,CAAC,GAAG;QACR,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACnC,OAAO;QACR,CAAC;QAED,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/B,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzB,GAAG,CAAC,YAAY,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACjC,CAAC;IACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIhD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACzD,OAAgB,WAAW,SAAwB;IAEnD,OAAgB,QAAQ,WAAyE;IAEjG,OAAgB,IAAI;;MAKlB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAgB1B"}
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/stop.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKhD,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAW,CAAC,OAAO,IAAI,CAAC;IACzD,OAAgB,WAAW,SAAwB;IAEnD,OAAgB,QAAQ,WAAyE;IAEjG,OAAgB,IAAI;;MAKlB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB1B"}
@@ -1,6 +1,7 @@
1
1
  import { Args } from "@oclif/core";
2
2
  import { configExists, loadConfig } from "#config/index";
3
3
  import { BaseCommand } from "#lib/base-command";
4
+ import { recordStop } from "#services/sessions";
4
5
  import * as tmux from "#services/tmux";
5
6
  import { log } from "#utils/log";
6
7
  export default class Stop extends BaseCommand {
@@ -22,6 +23,7 @@ export default class Stop extends BaseCommand {
22
23
  target = `hq-${target}`;
23
24
  }
24
25
  if (tmux.killSession(target)) {
26
+ recordStop(target);
25
27
  log(`Stopped session: ${target}`);
26
28
  }
27
29
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/hq/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAwB;IACzD,MAAM,CAAU,WAAW,GAAG,oBAAoB,CAAC;IAEnD,MAAM,CAAU,QAAQ,GAAG,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CAAC;IAEjG,MAAM,CAAU,IAAI,GAAG;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,KAAK;SACf,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7D,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,MAAM,aAAa,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../../src/commands/hq/stop.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAEjC,MAAM,CAAC,OAAO,OAAO,IAAK,SAAQ,WAAwB;IACzD,MAAM,CAAU,WAAW,GAAG,oBAAoB,CAAC;IAEnD,MAAM,CAAU,QAAQ,GAAG,CAAC,2BAA2B,EAAE,sCAAsC,CAAC,CAAC;IAEjG,MAAM,CAAU,IAAI,GAAG;QACtB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,gEAAgE;YAC7E,QAAQ,EAAE,KAAK;SACf,CAAC;KACF,CAAC;IAEF,KAAK,CAAC,GAAG;QACR,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAC7D,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACpE,MAAM,GAAG,MAAM,MAAM,EAAE,CAAC;QACzB,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,UAAU,CAAC,MAAM,CAAC,CAAC;YACnB,GAAG,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,YAAY,MAAM,aAAa,CAAC,CAAC;QAC7C,CAAC;IACF,CAAC"}
@@ -5,7 +5,7 @@ export interface HqSessionConfig {
5
5
  capacity: number;
6
6
  }
7
7
  export interface ClaudeConfig {
8
- permission_mode?: "default" | "acceptEdits" | "plan" | "auto";
8
+ permission_mode?: "default" | "acceptEdits" | "plan" | "bypassPermissions" | "auto";
9
9
  }
10
10
  export interface TelegramConfig {
11
11
  hq_bot_token?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC5B,eAAe,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9D;AAED,MAAM,WAAW,cAAc;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,cAAc,EAAE,QAe5B,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC5B,eAAe,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAC;CACpF;AAED,MAAM,WAAW,cAAc;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,eAAe,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC1C;AAED,eAAO,MAAM,cAAc,EAAE,QAe5B,CAAC"}
@@ -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,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;CACrB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAqClE"}
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;CACrB;AAQD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,MAAM,CAuClE"}
@@ -33,6 +33,7 @@ export function buildClaudeCommand(opts) {
33
33
  parts.push(`TELEGRAM_BOT_TOKEN='${shellEscape(opts.telegramBotToken)}'`);
34
34
  }
35
35
  parts.push("claude");
36
+ parts.push("--allow-dangerously-skip-permissions");
36
37
  if (opts.resume) {
37
38
  parts.push("--continue");
38
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAWA,wEAAwE;AACxE,SAAS,WAAW,CAAC,KAAa;IACjC,8DAA8D;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;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,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/services/claude.ts"],"names":[],"mappings":"AAWA,wEAAwE;AACxE,SAAS,WAAW,CAAC,KAAa;IACjC,8DAA8D;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;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,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAEnD,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,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface SessionRecord {
2
+ sessionName: string;
3
+ project: string;
4
+ path?: string;
5
+ projectDir: string;
6
+ workDir: string;
7
+ permissionMode?: string;
8
+ yolo: boolean;
9
+ telegram: boolean;
10
+ launchedAt: string;
11
+ status: "running" | "stopped";
12
+ stoppedAt?: string;
13
+ }
14
+ export declare function loadSessions(): SessionRecord[];
15
+ export declare function recordLaunch(record: SessionRecord): void;
16
+ export declare function recordStop(sessionName: string): void;
17
+ export declare function findSession(sessionName: string): SessionRecord | undefined;
18
+ export declare function findLatestSession(project: string, path?: string): SessionRecord | undefined;
19
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/services/sessions.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAO9C;AAQD,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAWxD;AAED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CASpD;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAG1E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAK3F"}
@@ -0,0 +1,51 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { SESSIONS_FILE } from "#utils/paths";
4
+ export function loadSessions() {
5
+ if (!existsSync(SESSIONS_FILE))
6
+ return [];
7
+ try {
8
+ return JSON.parse(readFileSync(SESSIONS_FILE, "utf-8"));
9
+ }
10
+ catch {
11
+ return [];
12
+ }
13
+ }
14
+ function saveSessions(sessions) {
15
+ const dir = dirname(SESSIONS_FILE);
16
+ mkdirSync(dir, { recursive: true });
17
+ writeFileSync(SESSIONS_FILE, JSON.stringify(sessions, null, 2), "utf-8");
18
+ }
19
+ export function recordLaunch(record) {
20
+ const sessions = loadSessions();
21
+ // Mark any previous session with same name as stopped
22
+ for (const s of sessions) {
23
+ if (s.sessionName === record.sessionName && s.status === "running") {
24
+ s.status = "stopped";
25
+ s.stoppedAt = new Date().toISOString();
26
+ }
27
+ }
28
+ sessions.push(record);
29
+ saveSessions(sessions);
30
+ }
31
+ export function recordStop(sessionName) {
32
+ const sessions = loadSessions();
33
+ for (const s of sessions) {
34
+ if (s.sessionName === sessionName && s.status === "running") {
35
+ s.status = "stopped";
36
+ s.stoppedAt = new Date().toISOString();
37
+ }
38
+ }
39
+ saveSessions(sessions);
40
+ }
41
+ export function findSession(sessionName) {
42
+ const sessions = loadSessions();
43
+ return [...sessions].reverse().find((s) => s.sessionName === sessionName);
44
+ }
45
+ export function findLatestSession(project, path) {
46
+ const sessions = loadSessions();
47
+ return [...sessions]
48
+ .reverse()
49
+ .find((s) => s.project === project && (path === undefined || s.path === path));
50
+ }
51
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/services/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAgB7C,MAAM,UAAU,YAAY;IAC3B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CAAC,QAAyB;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAqB;IACjD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,sDAAsD;IACtD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpE,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;IACF,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,WAAmB;IAC7C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,WAAW,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7D,CAAC,CAAC,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;IACF,CAAC;IACD,YAAY,CAAC,QAAQ,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC9C,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAa;IAC/D,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,OAAO,CAAC,GAAG,QAAQ,CAAC;SAClB,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;AACjF,CAAC"}
@@ -43,7 +43,7 @@ export function renderBanner(opts) {
43
43
  const commands = keyValue([
44
44
  { key: "hyper hq web", value: "Open HQ in claude.ai/code" },
45
45
  { key: "hyper hq list", value: "List projects" },
46
- { key: "hyper hq spawn <name>", value: "Start project session" },
46
+ { key: "hyper hq launch <project>", value: "Launch project session" },
47
47
  { key: "hyper hq status", value: "Show running sessions" },
48
48
  { key: "hyper hq attach", value: "Attach to HQ terminal" },
49
49
  { key: "hyper hq config", value: "Show configuration" },
@@ -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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"}
@@ -1,4 +1,6 @@
1
1
  export declare const HQ_DATA_DIR: string;
2
2
  export declare const LOG_DIR: string;
3
+ export declare const HQ_DIR: string;
4
+ export declare const SESSIONS_FILE: string;
3
5
  export declare function expandHome(p: string): string;
4
6
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,OAAO,QAA+B,CAAC;AAEpD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,QAAsC,CAAC;AAC/D,eAAO,MAAM,OAAO,QAA+B,CAAC;AACpD,eAAO,MAAM,MAAM,QAA6B,CAAC;AACjD,eAAO,MAAM,aAAa,QAAmC,CAAC;AAE9D,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5C"}
@@ -2,6 +2,8 @@ import { homedir } from "node:os";
2
2
  import { resolve } from "node:path";
3
3
  export const HQ_DATA_DIR = resolve(homedir(), ".config/hyper");
4
4
  export const LOG_DIR = resolve(HQ_DATA_DIR, "logs");
5
+ export const HQ_DIR = resolve(HQ_DATA_DIR, "hq");
6
+ export const SESSIONS_FILE = resolve(HQ_DIR, "sessions.json");
5
7
  export function expandHome(p) {
6
8
  if (p.startsWith("~/"))
7
9
  return resolve(homedir(), p.slice(2));
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEpD,MAAM,UAAU,UAAU,CAAC,CAAS;IACnC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACV,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AACpD,MAAM,CAAC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACjD,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE9D,MAAM,UAAU,UAAU,CAAC,CAAS;IACnC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,CAAC;AACV,CAAC"}
package/help/hq.md CHANGED
@@ -15,8 +15,9 @@ Always-on Claude Code command center. Manages persistent Claude sessions via tmu
15
15
  | `hyper hq stop [session]` | Stop an HQ session |
16
16
  | `hyper hq stop-all` | Stop all HQ-managed sessions |
17
17
  | `hyper hq attach [session]` | Attach to an HQ tmux session |
18
- | `hyper hq spawn <project>` | Spawn a Claude session for a project |
19
- | `hyper hq list` | List available projects and their worktrees |
18
+ | `hyper hq launch [project] [path]` | Launch a Claude session for a project |
19
+ | `hyper hq relaunch <session\|project>` | Relaunch a session with --continue |
20
+ | `hyper hq list` | List available projects |
20
21
  | `hyper hq status` | Show running HQ sessions |
21
22
  | `hyper hq config` | Show HQ configuration |
22
23
 
@@ -32,8 +33,8 @@ hyper hq start
32
33
  # 3. Check what projects are available
33
34
  hyper hq list
34
35
 
35
- # 4. Spawn a Claude session for a project
36
- hyper hq spawn my-project
36
+ # 4. Launch a Claude session for a project
37
+ hyper hq launch my-project
37
38
 
38
39
  # 5. Check running sessions
39
40
  hyper hq status
@@ -47,6 +48,6 @@ hyper hq stop-all
47
48
 
48
49
  ## How It Works
49
50
 
50
- HQ runs a persistent Claude Code instance in a tmux session in remote-control server mode. Once started, you can connect to it from claude.ai/code, the Claude mobile app, or via Telegram. From there, you can ask HQ to spawn sessions for any of your projects.
51
+ HQ runs a persistent Claude Code instance in a tmux session in remote-control server mode. Once started, you can connect to it from claude.ai/code, the Claude mobile app, or via Telegram. From there, you can ask HQ to launch sessions for any of your projects.
51
52
 
52
53
  Run `hyper hq <command> --help` for details on any command.
@@ -85,14 +85,32 @@
85
85
  "config.js"
86
86
  ]
87
87
  },
88
- "hq:list": {
88
+ "hq:launch": {
89
89
  "aliases": [],
90
- "args": {},
91
- "description": "List available projects and their worktrees",
90
+ "args": {
91
+ "project": {
92
+ "description": "Project name (under projects root) or absolute path",
93
+ "name": "project",
94
+ "required": false
95
+ },
96
+ "path": {
97
+ "description": "Relative path inside the project to use as working directory",
98
+ "name": "path",
99
+ "required": false
100
+ },
101
+ "session-name": {
102
+ "description": "Custom session name (default: hq-<project>-MM-DD-HH-mm)",
103
+ "name": "session-name",
104
+ "required": false
105
+ }
106
+ },
107
+ "description": "Launch a Claude session for a project",
92
108
  "examples": [
93
- "<%= config.bin %> hq list",
94
- "<%= config.bin %> hq list --json",
95
- "<%= config.bin %> hq list --root /path/to/projects"
109
+ "<%= config.bin %> hq launch my-project",
110
+ "<%= config.bin %> hq launch my-project src/frontend",
111
+ "<%= config.bin %> hq launch my-project src/frontend my-session",
112
+ "<%= config.bin %> hq launch my-project --yolo",
113
+ "<%= config.bin %> hq launch"
96
114
  ],
97
115
  "flags": {
98
116
  "debug": {
@@ -102,42 +120,57 @@
102
120
  "allowNo": false,
103
121
  "type": "boolean"
104
122
  },
105
- "root": {
106
- "description": "Override projects root directory",
107
- "name": "root",
123
+ "permission-mode": {
124
+ "description": "Permission mode",
125
+ "name": "permission-mode",
108
126
  "hasDynamicHelp": false,
109
127
  "multiple": false,
128
+ "options": [
129
+ "default",
130
+ "acceptEdits",
131
+ "plan",
132
+ "bypassPermissions",
133
+ "auto"
134
+ ],
110
135
  "type": "option"
111
136
  },
112
- "json": {
113
- "description": "Output as JSON",
114
- "name": "json",
137
+ "yolo": {
138
+ "description": "Skip all permission checks (sets --permission-mode bypassPermissions)",
139
+ "name": "yolo",
115
140
  "allowNo": false,
116
141
  "type": "boolean"
142
+ },
143
+ "telegram": {
144
+ "description": "Enable Telegram channel (enabled by default when configured)",
145
+ "name": "telegram",
146
+ "allowNo": true,
147
+ "type": "boolean"
117
148
  }
118
149
  },
119
150
  "hasDynamicHelp": false,
120
151
  "hiddenAliases": [],
121
- "id": "hq:list",
152
+ "id": "hq:launch",
122
153
  "pluginAlias": "@hypercli/hq",
123
154
  "pluginName": "@hypercli/hq",
124
155
  "pluginType": "core",
125
- "strict": true,
156
+ "strict": false,
126
157
  "enableJsonFlag": false,
127
158
  "isESM": true,
128
159
  "relativePath": [
129
160
  "dist",
130
161
  "commands",
131
162
  "hq",
132
- "list.js"
163
+ "launch.js"
133
164
  ]
134
165
  },
135
- "hq:setup": {
166
+ "hq:list": {
136
167
  "aliases": [],
137
168
  "args": {},
138
- "description": "Set up HQ configure settings",
169
+ "description": "List available projects and their worktrees",
139
170
  "examples": [
140
- "<%= config.bin %> hq setup"
171
+ "<%= config.bin %> hq list",
172
+ "<%= config.bin %> hq list --json",
173
+ "<%= config.bin %> hq list --root /path/to/projects"
141
174
  ],
142
175
  "flags": {
143
176
  "debug": {
@@ -146,11 +179,24 @@
146
179
  "name": "debug",
147
180
  "allowNo": false,
148
181
  "type": "boolean"
182
+ },
183
+ "root": {
184
+ "description": "Override projects root directory",
185
+ "name": "root",
186
+ "hasDynamicHelp": false,
187
+ "multiple": false,
188
+ "type": "option"
189
+ },
190
+ "json": {
191
+ "description": "Output as JSON",
192
+ "name": "json",
193
+ "allowNo": false,
194
+ "type": "boolean"
149
195
  }
150
196
  },
151
197
  "hasDynamicHelp": false,
152
198
  "hiddenAliases": [],
153
- "id": "hq:setup",
199
+ "id": "hq:list",
154
200
  "pluginAlias": "@hypercli/hq",
155
201
  "pluginName": "@hypercli/hq",
156
202
  "pluginType": "core",
@@ -161,25 +207,29 @@
161
207
  "dist",
162
208
  "commands",
163
209
  "hq",
164
- "setup.js"
210
+ "list.js"
165
211
  ]
166
212
  },
167
- "hq:spawn": {
213
+ "hq:relaunch": {
168
214
  "aliases": [],
169
215
  "args": {
170
- "project": {
171
- "description": "Project name (under projects root) or absolute path",
172
- "name": "project",
216
+ "target": {
217
+ "description": "Session name, or project name",
218
+ "name": "target",
173
219
  "required": true
220
+ },
221
+ "path": {
222
+ "description": "Relative path inside the project (when target is a project name)",
223
+ "name": "path",
224
+ "required": false
174
225
  }
175
226
  },
176
- "description": "Spawn a new Claude session for a project",
227
+ "description": "Stop and relaunch a session with --continue",
177
228
  "examples": [
178
- "<%= config.bin %> hq spawn my-project",
179
- "<%= config.bin %> hq spawn my-project --worktree feat-auth",
180
- "<%= config.bin %> hq spawn my-project --new-worktree feat-login",
181
- "<%= config.bin %> hq spawn /absolute/path/to/project",
182
- "<%= config.bin %> hq spawn my-project -- --dangerously-skip-permissions"
229
+ "<%= config.bin %> hq relaunch hq-my-project-03-24-10-30",
230
+ "<%= config.bin %> hq relaunch my-project",
231
+ "<%= config.bin %> hq relaunch my-project src/frontend",
232
+ "<%= config.bin %> hq relaunch hq-my-project-03-24-10-30 --yolo"
183
233
  ],
184
234
  "flags": {
185
235
  "debug": {
@@ -189,20 +239,6 @@
189
239
  "allowNo": false,
190
240
  "type": "boolean"
191
241
  },
192
- "worktree": {
193
- "description": "Use an existing worktree (branch name)",
194
- "name": "worktree",
195
- "hasDynamicHelp": false,
196
- "multiple": false,
197
- "type": "option"
198
- },
199
- "new-worktree": {
200
- "description": "Create a new worktree via wt switch -c",
201
- "name": "new-worktree",
202
- "hasDynamicHelp": false,
203
- "multiple": false,
204
- "type": "option"
205
- },
206
242
  "permission-mode": {
207
243
  "description": "Permission mode",
208
244
  "name": "permission-mode",
@@ -212,25 +248,13 @@
212
248
  "default",
213
249
  "acceptEdits",
214
250
  "plan",
251
+ "bypassPermissions",
215
252
  "auto"
216
253
  ],
217
254
  "type": "option"
218
255
  },
219
- "name": {
220
- "description": "Custom session name",
221
- "name": "name",
222
- "hasDynamicHelp": false,
223
- "multiple": false,
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
256
  "yolo": {
233
- "description": "Skip all permission checks (alias for -- --dangerously-skip-permissions)",
257
+ "description": "Skip all permission checks (sets --permission-mode bypassPermissions)",
234
258
  "name": "yolo",
235
259
  "allowNo": false,
236
260
  "type": "boolean"
@@ -244,7 +268,7 @@
244
268
  },
245
269
  "hasDynamicHelp": false,
246
270
  "hiddenAliases": [],
247
- "id": "hq:spawn",
271
+ "id": "hq:relaunch",
248
272
  "pluginAlias": "@hypercli/hq",
249
273
  "pluginName": "@hypercli/hq",
250
274
  "pluginType": "core",
@@ -255,7 +279,39 @@
255
279
  "dist",
256
280
  "commands",
257
281
  "hq",
258
- "spawn.js"
282
+ "relaunch.js"
283
+ ]
284
+ },
285
+ "hq:setup": {
286
+ "aliases": [],
287
+ "args": {},
288
+ "description": "Set up HQ — configure settings",
289
+ "examples": [
290
+ "<%= config.bin %> hq setup"
291
+ ],
292
+ "flags": {
293
+ "debug": {
294
+ "char": "d",
295
+ "description": "Enable debug output",
296
+ "name": "debug",
297
+ "allowNo": false,
298
+ "type": "boolean"
299
+ }
300
+ },
301
+ "hasDynamicHelp": false,
302
+ "hiddenAliases": [],
303
+ "id": "hq:setup",
304
+ "pluginAlias": "@hypercli/hq",
305
+ "pluginName": "@hypercli/hq",
306
+ "pluginType": "core",
307
+ "strict": true,
308
+ "enableJsonFlag": false,
309
+ "isESM": true,
310
+ "relativePath": [
311
+ "dist",
312
+ "commands",
313
+ "hq",
314
+ "setup.js"
259
315
  ]
260
316
  },
261
317
  "hq:start": {
@@ -305,6 +361,7 @@
305
361
  "default",
306
362
  "acceptEdits",
307
363
  "plan",
364
+ "bypassPermissions",
308
365
  "auto"
309
366
  ],
310
367
  "type": "option"
@@ -508,5 +565,5 @@
508
565
  ]
509
566
  }
510
567
  },
511
- "version": "0.3.0"
568
+ "version": "0.4.0"
512
569
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hypercli/hq",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "Claude Code session management for HyperDev — always-on control plane",
6
6
  "keywords": [
@@ -74,9 +74,9 @@
74
74
  },
75
75
  "dependencies": {
76
76
  "@clack/prompts": "^1.1.0",
77
- "@hypercli/ui": "^0.3.0",
77
+ "@hypercli/ui": "^0.4.0",
78
78
  "@oclif/core": "^4",
79
- "create-hyper-hq": "^0.3.0",
79
+ "create-hyper-hq": "^0.4.0",
80
80
  "smol-toml": "^1"
81
81
  },
82
82
  "devDependencies": {
@@ -1,21 +0,0 @@
1
- import { BaseCommand } from "#lib/base-command";
2
- export default class Spawn extends BaseCommand<typeof Spawn> {
3
- static description: string;
4
- static examples: string[];
5
- static args: {
6
- project: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
- };
8
- static strict: boolean;
9
- static flags: {
10
- worktree: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- "new-worktree": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- "permission-mode": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- resume: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
- yolo: import("@oclif/core/interfaces").BooleanFlag<boolean>;
16
- telegram: import("@oclif/core/interfaces").BooleanFlag<boolean>;
17
- debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
18
- };
19
- run(): Promise<void>;
20
- }
21
- //# sourceMappingURL=spawn.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../../src/commands/hq/spawn.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAShD,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,WAAW,CAAC,OAAO,KAAK,CAAC;IAC3D,OAAgB,WAAW,SAA8C;IAEzE,OAAgB,QAAQ,WAMtB;IAEF,OAAgB,IAAI;;MAKlB;IAGF,OAAgB,MAAM,UAAS;IAE/B,OAAgB,KAAK;;;;;;;;;MAsBnB;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsF1B"}
@@ -1,123 +0,0 @@
1
- import { existsSync, mkdirSync } from "node:fs";
2
- import { basename, resolve } from "node:path";
3
- import { Args, Flags } from "@oclif/core";
4
- import { loadConfig } from "#config/index";
5
- import { BaseCommand } from "#lib/base-command";
6
- import { buildClaudeCommand } from "#services/claude";
7
- import { createWorktree, findWorktreePath, resolveProjectDir } from "#services/projects";
8
- import { getProjectTelegramEnv, TELEGRAM_CHANNEL_PLUGIN } from "#services/telegram";
9
- import * as tmux from "#services/tmux";
10
- import { sanitizeSessionName } from "#services/tmux";
11
- import { log } from "#utils/log";
12
- import { LOG_DIR } from "#utils/paths";
13
- export default class Spawn extends BaseCommand {
14
- static description = "Spawn a new Claude session for a project";
15
- static examples = [
16
- "<%= config.bin %> hq spawn my-project",
17
- "<%= config.bin %> hq spawn my-project --worktree feat-auth",
18
- "<%= config.bin %> hq spawn my-project --new-worktree feat-login",
19
- "<%= config.bin %> hq spawn /absolute/path/to/project",
20
- "<%= config.bin %> hq spawn my-project -- --dangerously-skip-permissions",
21
- ];
22
- static args = {
23
- project: Args.string({
24
- description: "Project name (under projects root) or absolute path",
25
- required: true,
26
- }),
27
- };
28
- // Allow extra args after -- to pass through to claude
29
- static strict = false;
30
- static flags = {
31
- ...BaseCommand.baseFlags,
32
- worktree: Flags.string({ description: "Use an existing worktree (branch name)" }),
33
- "new-worktree": Flags.string({ description: "Create a new worktree via wt switch -c" }),
34
- "permission-mode": Flags.string({
35
- description: "Permission mode",
36
- options: ["default", "acceptEdits", "plan", "auto"],
37
- }),
38
- name: Flags.string({ description: "Custom session name" }),
39
- resume: Flags.boolean({
40
- description: "Resume the previous session for this project",
41
- default: false,
42
- }),
43
- yolo: Flags.boolean({
44
- description: "Skip all permission checks (alias for -- --dangerously-skip-permissions)",
45
- default: false,
46
- }),
47
- telegram: Flags.boolean({
48
- description: "Enable Telegram channel (enabled by default when configured)",
49
- default: true,
50
- allowNo: true,
51
- }),
52
- };
53
- async run() {
54
- const { args, flags, argv } = await this.parse(Spawn);
55
- const extraClaudeArgs = argv;
56
- const config = loadConfig();
57
- if (flags.yolo) {
58
- extraClaudeArgs.push("--dangerously-skip-permissions");
59
- }
60
- const projectDir = resolveProjectDir(args.project, config);
61
- const projectName = args.project.startsWith("/") ? basename(args.project) : args.project;
62
- if (!existsSync(projectDir)) {
63
- this.error(`Directory not found: ${projectDir}`);
64
- }
65
- let workDir = projectDir;
66
- let branchSuffix = "";
67
- if (flags["new-worktree"]) {
68
- log(`Creating worktree: ${flags["new-worktree"]}`);
69
- workDir = createWorktree(projectDir, flags["new-worktree"]);
70
- branchSuffix = `-${flags["new-worktree"].replace(/\//g, "-")}`;
71
- log(`Worktree created at: ${workDir}`);
72
- }
73
- else if (flags.worktree) {
74
- const wtPath = findWorktreePath(projectDir, flags.worktree);
75
- if (!wtPath) {
76
- this.error(`Worktree '${flags.worktree}' not found in ${projectDir}`);
77
- }
78
- workDir = wtPath;
79
- branchSuffix = `-${flags.worktree.replace(/\//g, "-")}`;
80
- }
81
- const sessionName = sanitizeSessionName(flags.name ?? `hq-${projectName}${branchSuffix}`);
82
- if (tmux.sessionExists(sessionName)) {
83
- log(`Session '${sessionName}' is already running. Use 'hyper hq attach ${projectName}' to connect.`);
84
- return;
85
- }
86
- mkdirSync(LOG_DIR, { recursive: true });
87
- const telegramEnv = flags.telegram ? getProjectTelegramEnv(projectName, config) : null;
88
- const channels = [];
89
- if (telegramEnv)
90
- channels.push(TELEGRAM_CHANNEL_PLUGIN);
91
- const logFile = resolve(LOG_DIR, `${sessionName}.log`);
92
- const command = buildClaudeCommand({
93
- name: sessionName,
94
- resume: flags.resume,
95
- permissionMode: flags["permission-mode"] ?? config.claude.permission_mode,
96
- telegramBotToken: telegramEnv?.TELEGRAM_BOT_TOKEN,
97
- channels,
98
- extraArgs: extraClaudeArgs,
99
- });
100
- log(`Spawning Claude session for: ${projectName}`);
101
- log(`Working directory: ${workDir}`);
102
- tmux.createSession({ name: sessionName, cwd: workDir, command, logFile });
103
- if (tmux.waitAndVerify(sessionName) === "dead") {
104
- this.error(`Session '${sessionName}' exited immediately after starting.
105
- Check the log for details: ${logFile}
106
-
107
- Common causes:
108
- - Claude CLI is not authenticated (run: claude auth login)
109
- - The claude command is not found (check your PATH)
110
- - Telegram plugin not installed (run: claude plugin install telegram@claude-plugins-official)`);
111
- }
112
- tmux.disableRemainOnExit(sessionName);
113
- log("");
114
- log(`Session '${sessionName}' started`);
115
- log("Connect via:");
116
- log(` Web: claude.ai/code → find session '${sessionName}'`);
117
- log(` Terminal: hyper hq attach ${projectName}`);
118
- if (telegramEnv) {
119
- log(` Telegram: Message the ${projectName} bot`);
120
- }
121
- }
122
- }
123
- //# sourceMappingURL=spawn.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../../src/commands/hq/spawn.ts"],"names":[],"mappings":"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"}