github-issue-tower-defence-management 1.136.0 → 1.137.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 (29) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +7 -0
  3. package/bin/adapter/entry-points/cli/index.js +24 -0
  4. package/bin/adapter/entry-points/cli/index.js.map +1 -1
  5. package/bin/adapter/repositories/NodeTmuxSessionRepository.js +51 -6
  6. package/bin/adapter/repositories/NodeTmuxSessionRepository.js.map +1 -1
  7. package/bin/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.js +10 -0
  8. package/bin/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.js.map +1 -0
  9. package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js +1 -1
  10. package/bin/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/adapter/entry-points/cli/index.test.ts +118 -1
  13. package/src/adapter/entry-points/cli/index.ts +38 -0
  14. package/src/adapter/entry-points/handlers/staleTmuxSessionCleaner.test.ts +2 -2
  15. package/src/adapter/repositories/NodeTmuxSessionRepository.test.ts +78 -18
  16. package/src/adapter/repositories/NodeTmuxSessionRepository.ts +27 -6
  17. package/src/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.test.ts +34 -0
  18. package/src/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.ts +8 -0
  19. package/src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.test.ts +25 -15
  20. package/src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts +1 -1
  21. package/src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts +1 -0
  22. package/src/domain/usecases/intmux/InTmuxByHumanSessionReconcileUseCase.test.ts +1 -0
  23. package/types/adapter/entry-points/cli/index.d.ts.map +1 -1
  24. package/types/adapter/repositories/NodeTmuxSessionRepository.d.ts +4 -2
  25. package/types/adapter/repositories/NodeTmuxSessionRepository.d.ts.map +1 -1
  26. package/types/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.d.ts +2 -0
  27. package/types/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.d.ts.map +1 -0
  28. package/types/domain/usecases/adapter-interfaces/TmuxSessionRepository.d.ts +1 -0
  29. package/types/domain/usecases/adapter-interfaces/TmuxSessionRepository.d.ts.map +1 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,15 @@
1
+ # [1.137.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.136.0...v1.137.0) (2026-07-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **core:** run story-label conversion on incremental-fetch cycles ([#1229](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1229)) ([70bd67e](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/70bd67e79fda10559302ff5d7e821bc730a976bb))
7
+
8
+
9
+ ### Features
10
+
11
+ * **cli:** add killTmuxSession command to cleanly kill a session ([#1271](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1271)) ([52f5c15](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/commit/52f5c15188be756090bc97bb31dd51b529139225)), closes [#1270](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/issues/1270)
12
+
1
13
  # [1.136.0](https://github.com/HiromiShikata/npm-cli-github-issue-tower-defence-management/compare/v1.135.2...v1.136.0) (2026-07-26)
2
14
 
3
15
 
package/README.md CHANGED
@@ -25,6 +25,7 @@ Commands:
25
25
  selectOauthToken [options] Print one rate-limit-aware Claude Code OAuth token to stdout (pipeable; read-only)
26
26
  selectLiveSessionOauthToken [options] Print one Claude Code OAuth token chosen for a new live interactive session (fewest live sessions, then soonest 7d reset; read-only)
27
27
  countInTmuxByHumanSessionsPerToken [options] Print, per OAuth token, the count of live "In Tmux by human" interactive sessions using that token (read-only)
28
+ killTmuxSession [options] Cleanly kill a tmux session by running tmux kill-session and stopping its cl-*.scope systemd --user unit
28
29
  help [command] display help for command
29
30
 
30
31
  Options for schedule:
@@ -80,6 +81,10 @@ Options for countInTmuxByHumanSessionsPerToken:
80
81
  --configFilePath <path> Path to config file for tower defence management (required)
81
82
  --projectUrl <url> GitHub project URL
82
83
  --tokenListJsonPath <path> Path to the JSON array of { name, token } records (falls back to the claudeCodeOauthTokenListJsonPath config value, then to the CLAUDE_CODE_OAUTH_TOKEN_LIST_JSON_PATH environment variable)
84
+
85
+ Options for killTmuxSession:
86
+ --session <name> Name of the tmux session to kill
87
+ --self Terminate the current session by stopping its own cl-*.scope systemd user unit, derived from /proc/self/cgroup
83
88
  ```
84
89
 
85
90
  The `serveWeb` sub-command starts a local HTTP server that serves the TDPM web surface — the console tabs, the dashboard, and the in-tmux-by-human session list. `serveConsole` remains available as a deprecated alias that maps to the same handler, so existing invokers keep working during rollout; new usage should prefer `serveWeb`. One running instance serves every project: the user opens a per-project URL path `/projects/{pjcode}` (or `/projects/{pjcode}/{workflow-blocker|prs|triage|unread|failed-preparation|todo-by-human|todo-by-agent}`) and the bundled UI reads the `pjcode` from its own URL path and loads that project's list data. The server serves the bundled single-page-application `index.html` at `/`, `/index.html`, and every `/projects/{pjcode}` and `/projects/{pjcode}/{tab}` app route. Every response is sent with `Cache-Control: no-store`. Any request path containing a segment that begins with a dot (for example `/.git` or `/.env`) is rejected with HTTP 404. The UI bootstrap assets (HTML and JS) are served without authentication; served `*.json` files and `/api/*` paths require an access token supplied either as the `k` query parameter (`?k=<token>`) or the `X-PV-Token` request header. The access token is read from the `consoleAccessToken` config value and never appears on the command line. When the built UI bundle directory (`ui-dist`) is absent the server still starts and serves a minimal placeholder index for `/`, `/index.html`, and the per-project app routes.
@@ -117,6 +122,8 @@ The `selectLiveSessionOauthToken` sub-command picks a token for a new live inter
117
122
 
118
123
  The `countInTmuxByHumanSessionsPerToken` sub-command reports, per Claude Code OAuth token, how many live interactive sessions running under that token belong to an issue that is currently in the GitHub Project Status `In Tmux by human`. It is read-only: it never starts the proxy, never mutates any cache file, and never writes any token anywhere. It enumerates live interactive sessions by scanning running processes on the local Linux host: for each process under `/proc` it reads the NUL-separated `/proc/<pid>/cmdline` and selects only processes launched for an interactive session, identified by a `--name <issue-url>` argument whose value is an HTTP or HTTPS URL; `Take ownership` background spawns (which have no `--name` argument) are excluded. For each selected process it reads `/proc/<pid>/environ` and takes its `CLAUDE_CODE_OAUTH_TOKEN` and `CLAUDE_CODE_SESSION_ID`; a process missing either is skipped, and a process whose files cannot be read is skipped. It then loads the project's issues with their Status (reusing the same on-disk issue cache the daemon uses), keeps only the sessions whose `--name` issue URL maps to an open issue in Status `In Tmux by human`, and counts the distinct `CLAUDE_CODE_SESSION_ID` values per token so child processes that inherit one session id count once. It writes one tab-separated line per token to stdout in the form `<tokenName>\t<count>` (the token name comes from the token list; the raw token value is never printed), and writes the per-run decision trace to stderr. The token-list path comes from `--tokenListJsonPath`, the `claudeCodeOauthTokenListJsonPath` config value, or the `CLAUDE_CODE_OAUTH_TOKEN_LIST_JSON_PATH` environment variable. Because occupancy is read from `/proc/<pid>/cmdline` and `/proc/<pid>/environ`, this sub-command is Linux-specific.
119
124
 
125
+ The `killTmuxSession` sub-command cleanly kills a tmux session by running `tmux kill-session` together with stopping that session's per-session `cl-*.scope` systemd `--user` unit, consolidating logic that would otherwise need to be hand-written by callers. It takes exactly one of two mutually exclusive options. `--session <name>` kills another named session: it first stops the session's `cl-*.scope` unit (wrapping the `systemctl --user stop` call with `systemctl --user reset-failed` both before and after), then runs `tmux kill-session -t "=<name>"` using the exact-name `=` prefix so a session name that is itself a prefix of another session's name is never matched by mistake. `--self` terminates the current session from inside it: because a live session cannot run `tmux kill-session` on itself without being killed before its own scope-stop step completes, this mode derives the caller's own `cl-*.scope` unit name from `/proc/self/cgroup` and stops only that scope, without calling `tmux kill-session` at all. Neither option may be combined with the other, and providing neither is an error.
126
+
120
127
  ## Example 📖
121
128
 
122
129
  Here's a quick example to illustrate its usage:
@@ -56,6 +56,7 @@ const ApiV3CheerioRestIssueRepository_1 = require("../../repositories/issue/ApiV
56
56
  const LocalStorageCacheRepository_1 = require("../../repositories/LocalStorageCacheRepository");
57
57
  const SystemDateRepository_1 = require("../../repositories/SystemDateRepository");
58
58
  const NodeLocalCommandRunner_1 = require("../../repositories/NodeLocalCommandRunner");
59
+ const NodeTmuxSessionRepository_1 = require("../../repositories/NodeTmuxSessionRepository");
59
60
  const GitHubIssueCommentRepository_1 = require("../../repositories/GitHubIssueCommentRepository");
60
61
  const FetchWebhookRepository_1 = require("../../repositories/FetchWebhookRepository");
61
62
  const RevertOrphanedPreparationUseCase_1 = require("../../../domain/usecases/RevertOrphanedPreparationUseCase");
@@ -590,6 +591,29 @@ exports.program
590
591
  process.stdout.write(`${line}\n`);
591
592
  }
592
593
  });
594
+ exports.program
595
+ .command('killTmuxSession')
596
+ .description('Cleanly kill a tmux session by running tmux kill-session and stopping its cl-*.scope systemd --user unit. Use --session <name> to kill another named session, or --self to terminate the current session from inside it.')
597
+ .option('--session <name>', 'Name of the tmux session to kill')
598
+ .option('--self', 'Terminate the current session by stopping its own cl-*.scope systemd user unit, derived from /proc/self/cgroup')
599
+ .action(async (options) => {
600
+ if (!options.session && !options.self) {
601
+ console.error('Either --session <name> or --self is required');
602
+ process.exit(1);
603
+ }
604
+ if (options.session && options.self) {
605
+ console.error('--session and --self cannot be used together');
606
+ process.exit(1);
607
+ }
608
+ const localCommandRunner = new NodeLocalCommandRunner_1.NodeLocalCommandRunner();
609
+ const tmuxSessionRepository = new NodeTmuxSessionRepository_1.NodeTmuxSessionRepository(localCommandRunner);
610
+ if (options.self) {
611
+ await tmuxSessionRepository.killOwnSession();
612
+ }
613
+ else if (options.session) {
614
+ await tmuxSessionRepository.killSession(options.session);
615
+ }
616
+ });
593
617
  /* istanbul ignore next */
594
618
  if (process.argv && require.main === module) {
595
619
  exports.program.parse(process.argv);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,47 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.NodeTmuxSessionRepository = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
4
39
  const clSessionScopeUnitName_1 = require("./clSessionScopeUnitName");
40
+ const clSessionScopeUnitNameFromCgroupContent_1 = require("./clSessionScopeUnitNameFromCgroupContent");
5
41
  class NodeTmuxSessionRepository {
6
- constructor(localCommandRunner) {
42
+ constructor(localCommandRunner, procDirectory = '/proc') {
7
43
  this.localCommandRunner = localCommandRunner;
44
+ this.procDirectory = procDirectory;
8
45
  this.listLiveSessionNames = async () => {
9
46
  const { stdout, exitCode } = await this.localCommandRunner.runCommand('tmux', ['list-sessions', '-F', '#{session_name}']);
10
47
  if (exitCode !== 0) {
@@ -57,14 +94,22 @@ class NodeTmuxSessionRepository {
57
94
  ]);
58
95
  };
59
96
  this.killSession = async (sessionName) => {
60
- const { stderr, exitCode } = await this.localCommandRunner.runCommand('tmux', ['kill-session', '-t', sessionName]);
97
+ const scopeUnitName = (0, clSessionScopeUnitName_1.clSessionScopeUnitName)(sessionName);
98
+ await this.stopScopeUnit(scopeUnitName);
99
+ const { stderr, exitCode } = await this.localCommandRunner.runCommand('tmux', ['kill-session', '-t', `=${sessionName}`]);
61
100
  if (exitCode !== 0) {
62
101
  throw new Error(`Failed to kill tmux session "${sessionName}": exit code ${exitCode}${stderr ? `: ${stderr}` : ''}`);
63
102
  }
64
- await this.stopClSessionScope(sessionName);
65
103
  };
66
- this.stopClSessionScope = async (sessionName) => {
67
- const scopeUnitName = (0, clSessionScopeUnitName_1.clSessionScopeUnitName)(sessionName);
104
+ this.killOwnSession = async () => {
105
+ const cgroupContent = fs.readFileSync(path.join(this.procDirectory, 'self', 'cgroup'), 'utf8');
106
+ const scopeUnitName = (0, clSessionScopeUnitNameFromCgroupContent_1.clSessionScopeUnitNameFromCgroupContent)(cgroupContent);
107
+ if (scopeUnitName === null) {
108
+ throw new Error('Failed to determine the current cl-*.scope systemd user unit from /proc/self/cgroup');
109
+ }
110
+ await this.stopScopeUnit(scopeUnitName);
111
+ };
112
+ this.stopScopeUnit = async (scopeUnitName) => {
68
113
  await this.localCommandRunner.runCommand('systemctl', [
69
114
  '--user',
70
115
  'reset-failed',
@@ -77,7 +122,7 @@ class NodeTmuxSessionRepository {
77
122
  scopeUnitName,
78
123
  ]);
79
124
  if (exitCode !== 0) {
80
- console.error(`Failed to stop systemd user scope "${scopeUnitName}" for tmux session "${sessionName}": exit code ${exitCode}${stderr ? `: ${stderr}` : ''}`);
125
+ console.error(`Failed to stop systemd user scope "${scopeUnitName}": exit code ${exitCode}${stderr ? `: ${stderr}` : ''}`);
81
126
  }
82
127
  };
83
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTmuxSessionRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NodeTmuxSessionRepository.js","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clSessionScopeUnitNameFromCgroupContent = void 0;
4
+ const CL_SESSION_SCOPE_UNIT_PATTERN = /cl-[A-Za-z0-9._-]+\.scope/;
5
+ const clSessionScopeUnitNameFromCgroupContent = (cgroupContent) => {
6
+ const match = cgroupContent.match(CL_SESSION_SCOPE_UNIT_PATTERN);
7
+ return match ? match[0] : null;
8
+ };
9
+ exports.clSessionScopeUnitNameFromCgroupContent = clSessionScopeUnitNameFromCgroupContent;
10
+ //# sourceMappingURL=clSessionScopeUnitNameFromCgroupContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clSessionScopeUnitNameFromCgroupContent.js","sourceRoot":"","sources":["../../../src/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.ts"],"names":[],"mappings":";;;AAAA,MAAM,6BAA6B,GAAG,2BAA2B,CAAC;AAE3D,MAAM,uCAAuC,GAAG,CACrD,aAAqB,EACN,EAAE;IACjB,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AALW,QAAA,uCAAuC,2CAKlD"}
@@ -6,7 +6,7 @@ class SetWorkflowManagementIssueToStoryUseCase {
6
6
  this.issueRepository = issueRepository;
7
7
  this.run = async (input) => {
8
8
  const story = input.project.story;
9
- if (!story || input.cacheUsed) {
9
+ if (!story) {
10
10
  return;
11
11
  }
12
12
  for (const issue of input.issues) {
@@ -1 +1 @@
1
- {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SetWorkflowManagementIssueToStoryUseCase.js","sourceRoot":"","sources":["../../../src/domain/usecases/SetWorkflowManagementIssueToStoryUseCase.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.136.0",
3
+ "version": "1.137.0",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -1,6 +1,14 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import YAML from 'yaml';
4
+
5
+ jest.mock('fs', () => {
6
+ const actualFs: typeof fs = jest.requireActual('fs');
7
+ return {
8
+ ...actualFs,
9
+ readFileSync: jest.fn(actualFs.readFileSync),
10
+ };
11
+ });
4
12
  import {
5
13
  program,
6
14
  loadConfigFile,
@@ -53,8 +61,14 @@ jest.mock('../../repositories/issue/ApiV3CheerioRestIssueRepository', () => ({
53
61
  getCachedProject: jest.fn().mockResolvedValue(null),
54
62
  })),
55
63
  }));
64
+ const mockRunCommand = jest.fn<
65
+ Promise<{ stdout: string; stderr: string; exitCode: number }>,
66
+ [string, string[]]
67
+ >();
56
68
  jest.mock('../../repositories/NodeLocalCommandRunner', () => ({
57
- NodeLocalCommandRunner: jest.fn().mockImplementation(() => ({})),
69
+ NodeLocalCommandRunner: jest.fn().mockImplementation(() => ({
70
+ runCommand: mockRunCommand,
71
+ })),
58
72
  }));
59
73
  jest.mock('../../repositories/OauthAPIClaudeRepository', () => ({
60
74
  OauthAPIClaudeRepository: jest.fn().mockImplementation(() => ({
@@ -151,6 +165,7 @@ describe('CLI', () => {
151
165
  beforeEach(() => {
152
166
  jest.clearAllMocks();
153
167
  mockFetchReturningReadme(null);
168
+ mockRunCommand.mockResolvedValue({ stdout: '', stderr: '', exitCode: 0 });
154
169
  process.env = { ...originalEnv, GH_TOKEN: 'test-token' };
155
170
  writeConfig(defaultConfig);
156
171
  });
@@ -2142,4 +2157,106 @@ mysteryKey: 'value'
2142
2157
  logSpy.mockRestore();
2143
2158
  });
2144
2159
  });
2160
+
2161
+ describe('killTmuxSession', () => {
2162
+ it('reaches the real repository command sequence to kill a named session via --session', async () => {
2163
+ await program.parseAsync([
2164
+ 'node',
2165
+ 'test',
2166
+ 'killTmuxSession',
2167
+ '--session',
2168
+ 'https_//github_com/owner/repo/issues/9',
2169
+ ]);
2170
+
2171
+ const expectedScopeUnitName =
2172
+ 'cl-https---github-com-owner-repo-issues-9.scope';
2173
+ expect(mockRunCommand.mock.calls).toEqual([
2174
+ ['systemctl', ['--user', 'reset-failed', expectedScopeUnitName]],
2175
+ ['systemctl', ['--user', 'stop', expectedScopeUnitName]],
2176
+ ['systemctl', ['--user', 'reset-failed', expectedScopeUnitName]],
2177
+ [
2178
+ 'tmux',
2179
+ ['kill-session', '-t', '=https_//github_com/owner/repo/issues/9'],
2180
+ ],
2181
+ ]);
2182
+ });
2183
+
2184
+ it('reaches the real repository command sequence to stop its own scope via --self, without calling tmux', async () => {
2185
+ const actualFs = jest.requireActual<typeof fs>('fs');
2186
+ const readFileSyncMock = jest.mocked(fs.readFileSync);
2187
+ readFileSyncMock.mockImplementation(
2188
+ (
2189
+ filePath: Parameters<typeof fs.readFileSync>[0],
2190
+ options: Parameters<typeof fs.readFileSync>[1],
2191
+ ): ReturnType<typeof fs.readFileSync> => {
2192
+ if (filePath === '/proc/self/cgroup') {
2193
+ return '0::/user.slice/user-1000.slice/user@1000.service/app.slice/cl-current-session.scope\n';
2194
+ }
2195
+ return actualFs.readFileSync(filePath, options);
2196
+ },
2197
+ );
2198
+
2199
+ await program.parseAsync(['node', 'test', 'killTmuxSession', '--self']);
2200
+
2201
+ expect(mockRunCommand.mock.calls).toEqual([
2202
+ ['systemctl', ['--user', 'reset-failed', 'cl-current-session.scope']],
2203
+ ['systemctl', ['--user', 'stop', 'cl-current-session.scope']],
2204
+ ['systemctl', ['--user', 'reset-failed', 'cl-current-session.scope']],
2205
+ ]);
2206
+ expect(mockRunCommand.mock.calls.some((call) => call[0] === 'tmux')).toBe(
2207
+ false,
2208
+ );
2209
+
2210
+ readFileSyncMock.mockImplementation(actualFs.readFileSync);
2211
+ });
2212
+
2213
+ it('exits with an error when neither --session nor --self is provided', async () => {
2214
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation();
2215
+ const processExitSpy = jest
2216
+ .spyOn(process, 'exit')
2217
+ .mockImplementation(() => {
2218
+ throw new Error('process.exit called');
2219
+ });
2220
+
2221
+ await expect(
2222
+ program.parseAsync(['node', 'test', 'killTmuxSession']),
2223
+ ).rejects.toThrow('process.exit called');
2224
+
2225
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
2226
+ 'Either --session <name> or --self is required',
2227
+ );
2228
+ expect(processExitSpy).toHaveBeenCalledWith(1);
2229
+
2230
+ consoleErrorSpy.mockRestore();
2231
+ processExitSpy.mockRestore();
2232
+ });
2233
+
2234
+ it('exits with an error when both --session and --self are provided', async () => {
2235
+ const consoleErrorSpy = jest.spyOn(console, 'error').mockImplementation();
2236
+ const processExitSpy = jest
2237
+ .spyOn(process, 'exit')
2238
+ .mockImplementation(() => {
2239
+ throw new Error('process.exit called');
2240
+ });
2241
+
2242
+ await expect(
2243
+ program.parseAsync([
2244
+ 'node',
2245
+ 'test',
2246
+ 'killTmuxSession',
2247
+ '--session',
2248
+ 'some_session',
2249
+ '--self',
2250
+ ]),
2251
+ ).rejects.toThrow('process.exit called');
2252
+
2253
+ expect(consoleErrorSpy).toHaveBeenCalledWith(
2254
+ '--session and --self cannot be used together',
2255
+ );
2256
+ expect(processExitSpy).toHaveBeenCalledWith(1);
2257
+
2258
+ consoleErrorSpy.mockRestore();
2259
+ processExitSpy.mockRestore();
2260
+ });
2261
+ });
2145
2262
  });
@@ -29,6 +29,7 @@ import { LocalStorageCacheRepository } from '../../repositories/LocalStorageCach
29
29
  import { SystemDateRepository } from '../../repositories/SystemDateRepository';
30
30
  import { BaseGitHubRepository } from '../../repositories/BaseGitHubRepository';
31
31
  import { NodeLocalCommandRunner } from '../../repositories/NodeLocalCommandRunner';
32
+ import { NodeTmuxSessionRepository } from '../../repositories/NodeTmuxSessionRepository';
32
33
  import { GitHubIssueCommentRepository } from '../../repositories/GitHubIssueCommentRepository';
33
34
  import { FetchWebhookRepository } from '../../repositories/FetchWebhookRepository';
34
35
  import { RevertOrphanedPreparationUseCase } from '../../../domain/usecases/RevertOrphanedPreparationUseCase';
@@ -124,6 +125,11 @@ type CountInTmuxByHumanSessionsPerTokenOptions = {
124
125
  tokenListJsonPath?: string;
125
126
  };
126
127
 
128
+ type KillTmuxSessionOptions = {
129
+ session?: string;
130
+ self?: boolean;
131
+ };
132
+
127
133
  const buildGithubRepositoryParams = (
128
134
  localStorageRepository: LocalStorageRepository,
129
135
  token: string,
@@ -1028,6 +1034,38 @@ program
1028
1034
  }
1029
1035
  });
1030
1036
 
1037
+ program
1038
+ .command('killTmuxSession')
1039
+ .description(
1040
+ 'Cleanly kill a tmux session by running tmux kill-session and stopping its cl-*.scope systemd --user unit. Use --session <name> to kill another named session, or --self to terminate the current session from inside it.',
1041
+ )
1042
+ .option('--session <name>', 'Name of the tmux session to kill')
1043
+ .option(
1044
+ '--self',
1045
+ 'Terminate the current session by stopping its own cl-*.scope systemd user unit, derived from /proc/self/cgroup',
1046
+ )
1047
+ .action(async (options: KillTmuxSessionOptions) => {
1048
+ if (!options.session && !options.self) {
1049
+ console.error('Either --session <name> or --self is required');
1050
+ process.exit(1);
1051
+ }
1052
+ if (options.session && options.self) {
1053
+ console.error('--session and --self cannot be used together');
1054
+ process.exit(1);
1055
+ }
1056
+
1057
+ const localCommandRunner = new NodeLocalCommandRunner();
1058
+ const tmuxSessionRepository = new NodeTmuxSessionRepository(
1059
+ localCommandRunner,
1060
+ );
1061
+
1062
+ if (options.self) {
1063
+ await tmuxSessionRepository.killOwnSession();
1064
+ } else if (options.session) {
1065
+ await tmuxSessionRepository.killSession(options.session);
1066
+ }
1067
+ });
1068
+
1031
1069
  /* istanbul ignore next */
1032
1070
  if (process.argv && require.main === module) {
1033
1071
  program.parse(process.argv);
@@ -102,7 +102,7 @@ describe('cleanStaleTmuxSessions', () => {
102
102
  expect(killCall?.[1]).toEqual([
103
103
  'kill-session',
104
104
  '-t',
105
- 'https_//github_com/demo/repo/issues/1',
105
+ '=https_//github_com/demo/repo/issues/1',
106
106
  ]);
107
107
  });
108
108
 
@@ -160,6 +160,6 @@ describe('cleanStaleTmuxSessions', () => {
160
160
  (call) => call[0] === 'tmux' && call[1][0] === 'kill-session',
161
161
  );
162
162
  expect(killCalls).toHaveLength(1);
163
- expect(killCalls[0][1]).toEqual(['kill-session', '-t', 'idle_no_task']);
163
+ expect(killCalls[0][1]).toEqual(['kill-session', '-t', '=idle_no_task']);
164
164
  });
165
165
  });
@@ -1,3 +1,6 @@
1
+ import * as fs from 'fs';
2
+ import * as os from 'os';
3
+ import * as path from 'path';
1
4
  import { LocalCommandRunner } from '../../domain/usecases/adapter-interfaces/LocalCommandRunner';
2
5
  import { NodeTmuxSessionRepository } from './NodeTmuxSessionRepository';
3
6
 
@@ -91,7 +94,7 @@ describe('NodeTmuxSessionRepository', () => {
91
94
  });
92
95
 
93
96
  describe('killSession', () => {
94
- it('kills the tmux session by name', async () => {
97
+ it('kills the tmux session by exact name', async () => {
95
98
  const runner = createMockRunner();
96
99
  runner.runCommand.mockResolvedValue({
97
100
  stdout: '',
@@ -102,20 +105,22 @@ describe('NodeTmuxSessionRepository', () => {
102
105
 
103
106
  await repository.killSession('no_task_session');
104
107
 
105
- expect(runner.runCommand.mock.calls[0][0]).toBe('tmux');
106
- expect(runner.runCommand.mock.calls[0][1]).toEqual([
107
- 'kill-session',
108
- '-t',
109
- 'no_task_session',
108
+ const tmuxCall = runner.runCommand.mock.calls.find(
109
+ (call) => call[0] === 'tmux',
110
+ );
111
+ expect(tmuxCall).toEqual([
112
+ 'tmux',
113
+ ['kill-session', '-t', '=no_task_session'],
110
114
  ]);
111
115
  });
112
116
 
113
117
  it('throws when tmux exits non-zero', async () => {
114
118
  const runner = createMockRunner();
115
- runner.runCommand.mockResolvedValue({
116
- stdout: '',
117
- stderr: "can't find session",
118
- exitCode: 1,
119
+ runner.runCommand.mockImplementation(async (program: string) => {
120
+ if (program === 'tmux') {
121
+ return { stdout: '', stderr: "can't find session", exitCode: 1 };
122
+ }
123
+ return { stdout: '', stderr: '', exitCode: 0 };
119
124
  });
120
125
  const repository = new NodeTmuxSessionRepository(runner);
121
126
 
@@ -124,7 +129,7 @@ describe('NodeTmuxSessionRepository', () => {
124
129
  );
125
130
  });
126
131
 
127
- it('stops the systemd user scope for the session after killing it, wrapping the stop with reset-failed', async () => {
132
+ it('stops the systemd user scope for the session before killing it, wrapping the stop with reset-failed', async () => {
128
133
  const runner = createMockRunner();
129
134
  runner.runCommand.mockResolvedValue({
130
135
  stdout: '',
@@ -137,16 +142,14 @@ describe('NodeTmuxSessionRepository', () => {
137
142
 
138
143
  const expectedScopeUnitName =
139
144
  'cl-https---github-com-owner-repo-issues-9.scope';
140
- const calls = runner.runCommand.mock.calls;
141
- expect(calls[0]).toEqual([
142
- 'tmux',
143
- ['kill-session', '-t', 'https_//github_com/owner/repo/issues/9'],
144
- ]);
145
- const systemctlCalls = calls.filter((call) => call[0] === 'systemctl');
146
- expect(systemctlCalls).toEqual([
145
+ expect(runner.runCommand.mock.calls).toEqual([
147
146
  ['systemctl', ['--user', 'reset-failed', expectedScopeUnitName]],
148
147
  ['systemctl', ['--user', 'stop', expectedScopeUnitName]],
149
148
  ['systemctl', ['--user', 'reset-failed', expectedScopeUnitName]],
149
+ [
150
+ 'tmux',
151
+ ['kill-session', '-t', '=https_//github_com/owner/repo/issues/9'],
152
+ ],
150
153
  ]);
151
154
  });
152
155
 
@@ -180,6 +183,63 @@ describe('NodeTmuxSessionRepository', () => {
180
183
  });
181
184
  });
182
185
 
186
+ describe('killOwnSession', () => {
187
+ let procDirectory: string;
188
+
189
+ beforeEach(() => {
190
+ procDirectory = fs.mkdtempSync(
191
+ path.join(os.tmpdir(), 'node-tmux-session-repository-proc-'),
192
+ );
193
+ });
194
+
195
+ afterEach(() => {
196
+ fs.rmSync(procDirectory, { recursive: true, force: true });
197
+ });
198
+
199
+ const writeCgroupContent = (content: string): void => {
200
+ const selfDirectory = path.join(procDirectory, 'self');
201
+ fs.mkdirSync(selfDirectory, { recursive: true });
202
+ fs.writeFileSync(path.join(selfDirectory, 'cgroup'), content);
203
+ };
204
+
205
+ it('stops only the current session scope derived from /proc/self/cgroup, without calling tmux', async () => {
206
+ writeCgroupContent(
207
+ '0::/user.slice/user-1000.slice/user@1000.service/app.slice/cl-leader-session.scope\n',
208
+ );
209
+ const runner = createMockRunner();
210
+ runner.runCommand.mockResolvedValue({
211
+ stdout: '',
212
+ stderr: '',
213
+ exitCode: 0,
214
+ });
215
+ const repository = new NodeTmuxSessionRepository(runner, procDirectory);
216
+
217
+ await repository.killOwnSession();
218
+
219
+ expect(runner.runCommand.mock.calls).toEqual([
220
+ ['systemctl', ['--user', 'reset-failed', 'cl-leader-session.scope']],
221
+ ['systemctl', ['--user', 'stop', 'cl-leader-session.scope']],
222
+ ['systemctl', ['--user', 'reset-failed', 'cl-leader-session.scope']],
223
+ ]);
224
+ expect(
225
+ runner.runCommand.mock.calls.some((call) => call[0] === 'tmux'),
226
+ ).toBe(false);
227
+ });
228
+
229
+ it('throws when no cl-*.scope unit can be found in /proc/self/cgroup', async () => {
230
+ writeCgroupContent(
231
+ '0::/user.slice/user-1000.slice/user@1000.service/app.slice/vte-spawn-abc.scope\n',
232
+ );
233
+ const runner = createMockRunner();
234
+ const repository = new NodeTmuxSessionRepository(runner, procDirectory);
235
+
236
+ await expect(repository.killOwnSession()).rejects.toThrow(
237
+ 'Failed to determine the current cl-*.scope systemd user unit from /proc/self/cgroup',
238
+ );
239
+ expect(runner.runCommand.mock.calls).toHaveLength(0);
240
+ });
241
+ });
242
+
183
243
  describe('listInteractiveProcessCommandLines', () => {
184
244
  it('parses process command lines from ps output', async () => {
185
245
  const runner = createMockRunner();
@@ -1,10 +1,16 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
1
3
  import { LocalCommandRunner } from '../../domain/usecases/adapter-interfaces/LocalCommandRunner';
2
4
  import { TmuxSessionRepository } from '../../domain/usecases/adapter-interfaces/TmuxSessionRepository';
3
5
  import { LiveTmuxSession } from '../../domain/entities/LiveTmuxSession';
4
6
  import { clSessionScopeUnitName } from './clSessionScopeUnitName';
7
+ import { clSessionScopeUnitNameFromCgroupContent } from './clSessionScopeUnitNameFromCgroupContent';
5
8
 
6
9
  export class NodeTmuxSessionRepository implements TmuxSessionRepository {
7
- constructor(private readonly localCommandRunner: LocalCommandRunner) {}
10
+ constructor(
11
+ private readonly localCommandRunner: LocalCommandRunner,
12
+ private readonly procDirectory: string = '/proc',
13
+ ) {}
8
14
 
9
15
  listLiveSessionNames = async (): Promise<string[]> => {
10
16
  const { stdout, exitCode } = await this.localCommandRunner.runCommand(
@@ -75,9 +81,11 @@ export class NodeTmuxSessionRepository implements TmuxSessionRepository {
75
81
  };
76
82
 
77
83
  killSession = async (sessionName: string): Promise<void> => {
84
+ const scopeUnitName = clSessionScopeUnitName(sessionName);
85
+ await this.stopScopeUnit(scopeUnitName);
78
86
  const { stderr, exitCode } = await this.localCommandRunner.runCommand(
79
87
  'tmux',
80
- ['kill-session', '-t', sessionName],
88
+ ['kill-session', '-t', `=${sessionName}`],
81
89
  );
82
90
  if (exitCode !== 0) {
83
91
  throw new Error(
@@ -86,11 +94,24 @@ export class NodeTmuxSessionRepository implements TmuxSessionRepository {
86
94
  }`,
87
95
  );
88
96
  }
89
- await this.stopClSessionScope(sessionName);
90
97
  };
91
98
 
92
- private stopClSessionScope = async (sessionName: string): Promise<void> => {
93
- const scopeUnitName = clSessionScopeUnitName(sessionName);
99
+ killOwnSession = async (): Promise<void> => {
100
+ const cgroupContent = fs.readFileSync(
101
+ path.join(this.procDirectory, 'self', 'cgroup'),
102
+ 'utf8',
103
+ );
104
+ const scopeUnitName =
105
+ clSessionScopeUnitNameFromCgroupContent(cgroupContent);
106
+ if (scopeUnitName === null) {
107
+ throw new Error(
108
+ 'Failed to determine the current cl-*.scope systemd user unit from /proc/self/cgroup',
109
+ );
110
+ }
111
+ await this.stopScopeUnit(scopeUnitName);
112
+ };
113
+
114
+ private stopScopeUnit = async (scopeUnitName: string): Promise<void> => {
94
115
  await this.localCommandRunner.runCommand('systemctl', [
95
116
  '--user',
96
117
  'reset-failed',
@@ -107,7 +128,7 @@ export class NodeTmuxSessionRepository implements TmuxSessionRepository {
107
128
  ]);
108
129
  if (exitCode !== 0) {
109
130
  console.error(
110
- `Failed to stop systemd user scope "${scopeUnitName}" for tmux session "${sessionName}": exit code ${exitCode}${
131
+ `Failed to stop systemd user scope "${scopeUnitName}": exit code ${exitCode}${
111
132
  stderr ? `: ${stderr}` : ''
112
133
  }`,
113
134
  );
@@ -0,0 +1,34 @@
1
+ import { clSessionScopeUnitNameFromCgroupContent } from './clSessionScopeUnitNameFromCgroupContent';
2
+
3
+ describe('clSessionScopeUnitNameFromCgroupContent', () => {
4
+ it('extracts the cl-*.scope unit from a cgroup v2 single-hierarchy line', () => {
5
+ const cgroupContent =
6
+ '0::/user.slice/user-1000.slice/user@1000.service/app.slice/cl-https---github-com-owner-repo-issues-9.scope\n';
7
+
8
+ const result = clSessionScopeUnitNameFromCgroupContent(cgroupContent);
9
+
10
+ expect(result).toBe('cl-https---github-com-owner-repo-issues-9.scope');
11
+ });
12
+
13
+ it('extracts the cl-*.scope unit from a multi-hierarchy cgroup v1 file', () => {
14
+ const cgroupContent = [
15
+ '12:pids:/user.slice/user-1000.slice/user@1000.service/app.slice/cl-leader-session.scope',
16
+ '11:cpu,cpuacct:/user.slice/user-1000.slice/user@1000.service/app.slice/cl-leader-session.scope',
17
+ '0::/user.slice/user-1000.slice/user@1000.service/app.slice/cl-leader-session.scope',
18
+ '',
19
+ ].join('\n');
20
+
21
+ const result = clSessionScopeUnitNameFromCgroupContent(cgroupContent);
22
+
23
+ expect(result).toBe('cl-leader-session.scope');
24
+ });
25
+
26
+ it('returns null when no cl-*.scope unit is present', () => {
27
+ const cgroupContent =
28
+ '0::/user.slice/user-1000.slice/user@1000.service/app.slice/vte-spawn-abc.scope\n';
29
+
30
+ const result = clSessionScopeUnitNameFromCgroupContent(cgroupContent);
31
+
32
+ expect(result).toBeNull();
33
+ });
34
+ });
@@ -0,0 +1,8 @@
1
+ const CL_SESSION_SCOPE_UNIT_PATTERN = /cl-[A-Za-z0-9._-]+\.scope/;
2
+
3
+ export const clSessionScopeUnitNameFromCgroupContent = (
4
+ cgroupContent: string,
5
+ ): string | null => {
6
+ const match = cgroupContent.match(CL_SESSION_SCOPE_UNIT_PATTERN);
7
+ return match ? match[0] : null;
8
+ };
@@ -123,26 +123,36 @@ describe('SetWorkflowManagementIssueToStoryUseCase', () => {
123
123
  expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
124
124
  });
125
125
 
126
- it('should do nothing when cacheUsed is true', async () => {
127
- await useCase.run({
126
+ it('should map story label to matching story when cacheUsed is true', async () => {
127
+ const issue: Issue = {
128
+ ...mock<Issue>(),
129
+ labels: ['story:high-priority'],
130
+ story: null,
131
+ state: 'OPEN',
132
+ nextActionDate: null,
133
+ nextActionHour: null,
134
+ isPr: false,
135
+ };
136
+
137
+ const promise = useCase.run({
128
138
  targetDates: [targetDate],
129
139
  project: basicProject,
130
- issues: [
131
- {
132
- ...mock<Issue>(),
133
- labels: ['story:high-priority'],
134
- story: null,
135
- state: 'OPEN',
136
- nextActionDate: null,
137
- nextActionHour: null,
138
- isPr: false,
139
- },
140
- ],
140
+ issues: [issue],
141
141
  cacheUsed: true,
142
142
  });
143
+ await jest.runAllTimersAsync();
144
+ await promise;
143
145
 
144
- expect(mockIssueRepository.updateStory).not.toHaveBeenCalled();
145
- expect(mockIssueRepository.removeLabel).not.toHaveBeenCalled();
146
+ expect(mockIssueRepository.updateStory.mock.calls).toEqual([
147
+ [
148
+ { ...basicProject, story: basicProject.story },
149
+ issue,
150
+ 'highPriorityId',
151
+ ],
152
+ ]);
153
+ expect(mockIssueRepository.removeLabel.mock.calls).toEqual([
154
+ [issue, 'story:high-priority'],
155
+ ]);
146
156
  });
147
157
 
148
158
  it('should map story label to matching story on non-minute-0 target date', async () => {
@@ -25,7 +25,7 @@ export class SetWorkflowManagementIssueToStoryUseCase {
25
25
  cacheUsed: boolean;
26
26
  }): Promise<void> => {
27
27
  const story = input.project.story;
28
- if (!story || input.cacheUsed) {
28
+ if (!story) {
29
29
  return;
30
30
  }
31
31
  for (const issue of input.issues) {
@@ -10,4 +10,5 @@ export interface TmuxSessionRepository {
10
10
  issueUrl: string,
11
11
  ) => Promise<void>;
12
12
  killSession: (sessionName: string) => Promise<void>;
13
+ killOwnSession: () => Promise<void>;
13
14
  }
@@ -70,6 +70,7 @@ const createFakeTmuxSessionRepository = (state: {
70
70
  launches.push({ sessionName, launcherCommand, issueUrl });
71
71
  },
72
72
  killSession: async () => undefined,
73
+ killOwnSession: async () => undefined,
73
74
  };
74
75
  };
75
76
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAgJzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/adapter/entry-points/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,UAAU,EACV,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAsJzB,eAAO,MAAM,OAAO,SAAgB,CAAC"}
@@ -3,12 +3,14 @@ import { TmuxSessionRepository } from '../../domain/usecases/adapter-interfaces/
3
3
  import { LiveTmuxSession } from '../../domain/entities/LiveTmuxSession';
4
4
  export declare class NodeTmuxSessionRepository implements TmuxSessionRepository {
5
5
  private readonly localCommandRunner;
6
- constructor(localCommandRunner: LocalCommandRunner);
6
+ private readonly procDirectory;
7
+ constructor(localCommandRunner: LocalCommandRunner, procDirectory?: string);
7
8
  listLiveSessionNames: () => Promise<string[]>;
8
9
  listLiveSessionsWithActivity: () => Promise<LiveTmuxSession[]>;
9
10
  listInteractiveProcessCommandLines: () => Promise<string[]>;
10
11
  launchDetachedSession: (sessionName: string, launcherCommand: string, issueUrl: string) => Promise<void>;
11
12
  killSession: (sessionName: string) => Promise<void>;
12
- private stopClSessionScope;
13
+ killOwnSession: () => Promise<void>;
14
+ private stopScopeUnit;
13
15
  }
14
16
  //# sourceMappingURL=NodeTmuxSessionRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"NodeTmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,qBAAa,yBAA0B,YAAW,qBAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,kBAAkB;IAEnE,oBAAoB,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhD;IAEF,4BAA4B,QAAa,OAAO,CAAC,eAAe,EAAE,CAAC,CAkBjE;IAEF,kCAAkC,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAY9D;IAEF,qBAAqB,GACnB,aAAa,MAAM,EACnB,iBAAiB,MAAM,EACvB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAcd;IAEF,WAAW,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CAatD;IAEF,OAAO,CAAC,kBAAkB,CAuBxB;CACH"}
1
+ {"version":3,"file":"NodeTmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/NodeTmuxSessionRepository.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6DAA6D,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,gEAAgE,CAAC;AACvG,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAIxE,qBAAa,yBAA0B,YAAW,qBAAqB;IAEnE,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBADb,kBAAkB,EAAE,kBAAkB,EACtC,aAAa,GAAE,MAAgB;IAGlD,oBAAoB,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAYhD;IAEF,4BAA4B,QAAa,OAAO,CAAC,eAAe,EAAE,CAAC,CAkBjE;IAEF,kCAAkC,QAAa,OAAO,CAAC,MAAM,EAAE,CAAC,CAY9D;IAEF,qBAAqB,GACnB,aAAa,MAAM,EACnB,iBAAiB,MAAM,EACvB,UAAU,MAAM,KACf,OAAO,CAAC,IAAI,CAAC,CAcd;IAEF,WAAW,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC,CActD;IAEF,cAAc,QAAa,OAAO,CAAC,IAAI,CAAC,CAatC;IAEF,OAAO,CAAC,aAAa,CAsBnB;CACH"}
@@ -0,0 +1,2 @@
1
+ export declare const clSessionScopeUnitNameFromCgroupContent: (cgroupContent: string) => string | null;
2
+ //# sourceMappingURL=clSessionScopeUnitNameFromCgroupContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clSessionScopeUnitNameFromCgroupContent.d.ts","sourceRoot":"","sources":["../../../src/adapter/repositories/clSessionScopeUnitNameFromCgroupContent.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uCAAuC,GAClD,eAAe,MAAM,KACpB,MAAM,GAAG,IAGX,CAAC"}
@@ -5,5 +5,6 @@ export interface TmuxSessionRepository {
5
5
  listInteractiveProcessCommandLines: () => Promise<string[]>;
6
6
  launchDetachedSession: (sessionName: string, launcherCommand: string, issueUrl: string) => Promise<void>;
7
7
  killSession: (sessionName: string) => Promise<void>;
8
+ killOwnSession: () => Promise<void>;
8
9
  }
9
10
  //# sourceMappingURL=TmuxSessionRepository.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,4BAA4B,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,kCAAkC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,qBAAqB,EAAE,CACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACrD"}
1
+ {"version":3,"file":"TmuxSessionRepository.d.ts","sourceRoot":"","sources":["../../../../src/domain/usecases/adapter-interfaces/TmuxSessionRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,WAAW,qBAAqB;IACpC,oBAAoB,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,4BAA4B,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,kCAAkC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,qBAAqB,EAAE,CACrB,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,WAAW,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC"}