@ai-devkit/agent-manager 0.14.0 → 0.16.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.
- package/.eslintrc.json +1 -1
- package/dist/AgentManager.d.ts +14 -12
- package/dist/AgentManager.d.ts.map +1 -1
- package/dist/AgentManager.js +40 -33
- package/dist/AgentManager.js.map +1 -1
- package/dist/adapters/AgentAdapter.js +2 -5
- package/dist/adapters/AgentAdapter.js.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.d.ts +1 -1
- package/dist/adapters/ClaudeCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/ClaudeCodeAdapter.js +29 -63
- package/dist/adapters/ClaudeCodeAdapter.js.map +1 -1
- package/dist/adapters/CodexAdapter.d.ts +5 -2
- package/dist/adapters/CodexAdapter.d.ts.map +1 -1
- package/dist/adapters/CodexAdapter.js +66 -73
- package/dist/adapters/CodexAdapter.js.map +1 -1
- package/dist/adapters/GeminiCliAdapter.d.ts +5 -2
- package/dist/adapters/GeminiCliAdapter.d.ts.map +1 -1
- package/dist/adapters/GeminiCliAdapter.js +63 -70
- package/dist/adapters/GeminiCliAdapter.js.map +1 -1
- package/dist/adapters/OpenCodeAdapter.d.ts +1 -1
- package/dist/adapters/OpenCodeAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenCodeAdapter.js +20 -59
- package/dist/adapters/OpenCodeAdapter.js.map +1 -1
- package/dist/adapters/index.d.ts +6 -6
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +5 -13
- package/dist/adapters/index.js.map +1 -1
- package/dist/index.d.ts +18 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -22
- package/dist/index.js.map +1 -1
- package/dist/terminal/TerminalFocusManager.js +13 -17
- package/dist/terminal/TerminalFocusManager.js.map +1 -1
- package/dist/terminal/TmuxManager.d.ts +28 -0
- package/dist/terminal/TmuxManager.d.ts.map +1 -0
- package/dist/terminal/TmuxManager.js +112 -0
- package/dist/terminal/TmuxManager.js.map +1 -0
- package/dist/terminal/TtyWriter.d.ts +1 -1
- package/dist/terminal/TtyWriter.d.ts.map +1 -1
- package/dist/terminal/TtyWriter.js +11 -15
- package/dist/terminal/TtyWriter.js.map +1 -1
- package/dist/terminal/index.d.ts +4 -4
- package/dist/terminal/index.d.ts.map +1 -1
- package/dist/terminal/index.js +3 -9
- package/dist/terminal/index.js.map +1 -1
- package/dist/utils/AgentRegistry.d.ts +35 -0
- package/dist/utils/AgentRegistry.d.ts.map +1 -0
- package/dist/utils/AgentRegistry.js +114 -0
- package/dist/utils/AgentRegistry.js.map +1 -0
- package/dist/utils/ClaudeSessionParser.d.ts +2 -2
- package/dist/utils/ClaudeSessionParser.d.ts.map +1 -1
- package/dist/utils/ClaudeSessionParser.js +32 -59
- package/dist/utils/ClaudeSessionParser.js.map +1 -1
- package/dist/utils/agents.d.ts +15 -0
- package/dist/utils/agents.d.ts.map +1 -0
- package/dist/utils/agents.js +30 -0
- package/dist/utils/agents.js.map +1 -0
- package/dist/utils/applescript.js +1 -4
- package/dist/utils/applescript.js.map +1 -1
- package/dist/utils/index.d.ts +6 -6
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -15
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/matching.d.ts +2 -2
- package/dist/utils/matching.d.ts.map +1 -1
- package/dist/utils/matching.js +3 -40
- package/dist/utils/matching.js.map +1 -1
- package/dist/utils/process.d.ts +1 -1
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +12 -52
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/session.js +8 -49
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/sortAgents.d.ts +4 -0
- package/dist/utils/sortAgents.d.ts.map +1 -0
- package/dist/utils/sortAgents.js +48 -0
- package/dist/utils/sortAgents.js.map +1 -0
- package/package.json +9 -8
- package/src/AgentManager.ts +53 -28
- package/src/__tests__/AgentManager.test.ts +140 -5
- package/src/__tests__/adapters/ClaudeCodeAdapter.test.ts +45 -44
- package/src/__tests__/adapters/CodexAdapter.test.ts +137 -30
- package/src/__tests__/adapters/GeminiCliAdapter.test.ts +130 -18
- package/src/__tests__/adapters/OpenCodeAdapter.test.ts +23 -21
- package/src/__tests__/terminal/TmuxManager.test.ts +175 -0
- package/src/__tests__/terminal/TtyWriter.test.ts +10 -9
- package/src/__tests__/utils/AgentRegistry.test.ts +223 -0
- package/src/__tests__/utils/ClaudeSessionParser.test.ts +73 -2
- package/src/__tests__/utils/matching.test.ts +4 -4
- package/src/__tests__/utils/process.test.ts +6 -5
- package/src/__tests__/utils/session.test.ts +8 -7
- package/src/adapters/ClaudeCodeAdapter.ts +8 -8
- package/src/adapters/CodexAdapter.ts +51 -12
- package/src/adapters/GeminiCliAdapter.ts +51 -12
- package/src/adapters/OpenCodeAdapter.ts +4 -4
- package/src/adapters/index.ts +6 -6
- package/src/index.ts +19 -11
- package/src/terminal/TerminalFocusManager.ts +2 -2
- package/src/terminal/TmuxManager.ts +118 -0
- package/src/terminal/TtyWriter.ts +3 -3
- package/src/terminal/index.ts +4 -4
- package/src/utils/AgentRegistry.ts +139 -0
- package/src/utils/ClaudeSessionParser.ts +23 -12
- package/src/utils/agents.ts +41 -0
- package/src/utils/index.ts +6 -6
- package/src/utils/matching.ts +2 -2
- package/src/utils/process.ts +1 -1
- package/src/utils/sortAgents.ts +52 -0
- package/tsconfig.json +2 -2
- package/vitest.config.ts +20 -0
- package/jest.config.js +0 -21
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* sessionFilePath encodes "<dbPath>::<sessionId>" so getConversation() can open the right
|
|
11
11
|
* DB row without extending the AgentAdapter interface.
|
|
12
12
|
*/
|
|
13
|
-
import type { AgentAdapter, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions } from './AgentAdapter';
|
|
13
|
+
import type { AgentAdapter, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions } from './AgentAdapter.js';
|
|
14
14
|
export declare class OpenCodeAdapter implements AgentAdapter {
|
|
15
15
|
readonly type: "opencode";
|
|
16
16
|
private static readonly IDLE_THRESHOLD_MINUTES;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/OpenCodeAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,
|
|
1
|
+
{"version":3,"file":"OpenCodeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/OpenCodeAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EACR,YAAY,EACZ,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACtB,MAAM,mBAAmB,CAAC;AAgC3B,qBAAa,eAAgB,YAAW,YAAY;IAChD,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAEpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,EAAE,CAAkC;;IAU5C,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,SAAS,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAMtC,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IA2B1C,eAAe,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,mBAAmB,EAAE;IAiD1F,YAAY,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAwCzE,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,eAAe;IA6DvB,OAAO,CAAC,iBAAiB;IAsBzB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,MAAM;CAUjB"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* OpenCode Adapter
|
|
4
3
|
*
|
|
@@ -11,50 +10,12 @@
|
|
|
11
10
|
* sessionFilePath encodes "<dbPath>::<sessionId>" so getConversation() can open the right
|
|
12
11
|
* DB row without extending the AgentAdapter interface.
|
|
13
12
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
Object.defineProperty(o, k2, desc);
|
|
21
|
-
}) : (function(o, m, k, k2) {
|
|
22
|
-
if (k2 === undefined) k2 = k;
|
|
23
|
-
o[k2] = m[k];
|
|
24
|
-
}));
|
|
25
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
26
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
27
|
-
}) : function(o, v) {
|
|
28
|
-
o["default"] = v;
|
|
29
|
-
});
|
|
30
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
31
|
-
var ownKeys = function(o) {
|
|
32
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
33
|
-
var ar = [];
|
|
34
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
35
|
-
return ar;
|
|
36
|
-
};
|
|
37
|
-
return ownKeys(o);
|
|
38
|
-
};
|
|
39
|
-
return function (mod) {
|
|
40
|
-
if (mod && mod.__esModule) return mod;
|
|
41
|
-
var result = {};
|
|
42
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
43
|
-
__setModuleDefault(result, mod);
|
|
44
|
-
return result;
|
|
45
|
-
};
|
|
46
|
-
})();
|
|
47
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
48
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
49
|
-
};
|
|
50
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
-
exports.OpenCodeAdapter = void 0;
|
|
52
|
-
const fs = __importStar(require("fs"));
|
|
53
|
-
const path = __importStar(require("path"));
|
|
54
|
-
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
55
|
-
const AgentAdapter_1 = require("./AgentAdapter");
|
|
56
|
-
const process_1 = require("../utils/process");
|
|
57
|
-
const matching_1 = require("../utils/matching");
|
|
13
|
+
import * as fs from 'fs';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
import Database from 'better-sqlite3';
|
|
16
|
+
import { AgentStatus } from './AgentAdapter.js';
|
|
17
|
+
import { listAgentProcesses, enrichProcesses } from '../utils/process.js';
|
|
18
|
+
import { generateAgentName } from '../utils/matching.js';
|
|
58
19
|
const SESSION_REF_SEP = '::';
|
|
59
20
|
function encodeSessionRef(dbPath, sessionId) {
|
|
60
21
|
return `${dbPath}${SESSION_REF_SEP}${sessionId}`;
|
|
@@ -65,10 +26,12 @@ function decodeSessionRef(ref) {
|
|
|
65
26
|
return null;
|
|
66
27
|
return { dbPath: ref.slice(0, idx), sessionId: ref.slice(idx + SESSION_REF_SEP.length) };
|
|
67
28
|
}
|
|
68
|
-
class OpenCodeAdapter {
|
|
29
|
+
export class OpenCodeAdapter {
|
|
30
|
+
type = 'opencode';
|
|
31
|
+
static IDLE_THRESHOLD_MINUTES = 5;
|
|
32
|
+
dbPath;
|
|
33
|
+
db = null;
|
|
69
34
|
constructor() {
|
|
70
|
-
this.type = 'opencode';
|
|
71
|
-
this.db = null;
|
|
72
35
|
this.dbPath = OpenCodeAdapter.resolveDbPath();
|
|
73
36
|
const cleanup = () => this.close();
|
|
74
37
|
process.once('exit', cleanup);
|
|
@@ -96,7 +59,7 @@ class OpenCodeAdapter {
|
|
|
96
59
|
return base === 'opencode' || base === 'opencode.exe';
|
|
97
60
|
}
|
|
98
61
|
async detectAgents() {
|
|
99
|
-
const processes =
|
|
62
|
+
const processes = enrichProcesses(listAgentProcesses('opencode'));
|
|
100
63
|
if (processes.length === 0)
|
|
101
64
|
return [];
|
|
102
65
|
const db = this.openDb();
|
|
@@ -277,7 +240,7 @@ class OpenCodeAdapter {
|
|
|
277
240
|
? new Date(stats.lastTimeUpdated)
|
|
278
241
|
: new Date(session.timeCreated);
|
|
279
242
|
return {
|
|
280
|
-
name:
|
|
243
|
+
name: generateAgentName(session.directory || proc.cwd || '', proc.pid),
|
|
281
244
|
type: this.type,
|
|
282
245
|
status: this.determineStatus(stats, lastActive),
|
|
283
246
|
summary: stats.summary || 'OpenCode session active',
|
|
@@ -290,9 +253,9 @@ class OpenCodeAdapter {
|
|
|
290
253
|
}
|
|
291
254
|
mapProcessOnlyAgent(proc) {
|
|
292
255
|
return {
|
|
293
|
-
name:
|
|
256
|
+
name: generateAgentName(proc.cwd || '', proc.pid),
|
|
294
257
|
type: this.type,
|
|
295
|
-
status:
|
|
258
|
+
status: AgentStatus.RUNNING,
|
|
296
259
|
summary: 'OpenCode process running',
|
|
297
260
|
pid: proc.pid,
|
|
298
261
|
projectPath: proc.cwd || '',
|
|
@@ -303,12 +266,12 @@ class OpenCodeAdapter {
|
|
|
303
266
|
determineStatus(stats, lastActive) {
|
|
304
267
|
const ageMin = (Date.now() - lastActive.getTime()) / 60000;
|
|
305
268
|
if (ageMin > OpenCodeAdapter.IDLE_THRESHOLD_MINUTES)
|
|
306
|
-
return
|
|
269
|
+
return AgentStatus.IDLE;
|
|
307
270
|
if (stats.lastRole === 'assistant' && !stats.lastAssistantCompleted)
|
|
308
|
-
return
|
|
271
|
+
return AgentStatus.RUNNING;
|
|
309
272
|
if (stats.lastRole === 'assistant')
|
|
310
|
-
return
|
|
311
|
-
return
|
|
273
|
+
return AgentStatus.WAITING;
|
|
274
|
+
return AgentStatus.RUNNING;
|
|
312
275
|
}
|
|
313
276
|
openDb() {
|
|
314
277
|
if (this.db)
|
|
@@ -316,7 +279,7 @@ class OpenCodeAdapter {
|
|
|
316
279
|
if (!fs.existsSync(this.dbPath))
|
|
317
280
|
return null;
|
|
318
281
|
try {
|
|
319
|
-
this.db = new
|
|
282
|
+
this.db = new Database(this.dbPath, { readonly: true });
|
|
320
283
|
return this.db;
|
|
321
284
|
}
|
|
322
285
|
catch {
|
|
@@ -324,6 +287,4 @@ class OpenCodeAdapter {
|
|
|
324
287
|
}
|
|
325
288
|
}
|
|
326
289
|
}
|
|
327
|
-
exports.OpenCodeAdapter = OpenCodeAdapter;
|
|
328
|
-
OpenCodeAdapter.IDLE_THRESHOLD_MINUTES = 5;
|
|
329
290
|
//# sourceMappingURL=OpenCodeAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/OpenCodeAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OpenCodeAdapter.js","sourceRoot":"","sources":["../../src/adapters/OpenCodeAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { ClaudeCodeAdapter } from './ClaudeCodeAdapter';
|
|
2
|
-
export { CodexAdapter } from './CodexAdapter';
|
|
3
|
-
export { GeminiCliAdapter } from './GeminiCliAdapter';
|
|
4
|
-
export { OpenCodeAdapter } from './OpenCodeAdapter';
|
|
5
|
-
export { AgentStatus } from './AgentAdapter';
|
|
6
|
-
export type { AgentAdapter, AgentType, AgentInfo, ProcessInfo } from './AgentAdapter';
|
|
1
|
+
export { ClaudeCodeAdapter } from './ClaudeCodeAdapter.js';
|
|
2
|
+
export { CodexAdapter } from './CodexAdapter.js';
|
|
3
|
+
export { GeminiCliAdapter } from './GeminiCliAdapter.js';
|
|
4
|
+
export { OpenCodeAdapter } from './OpenCodeAdapter.js';
|
|
5
|
+
export { AgentStatus } from './AgentAdapter.js';
|
|
6
|
+
export type { AgentAdapter, AgentType, AgentInfo, ProcessInfo } from './AgentAdapter.js';
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var CodexAdapter_1 = require("./CodexAdapter");
|
|
7
|
-
Object.defineProperty(exports, "CodexAdapter", { enumerable: true, get: function () { return CodexAdapter_1.CodexAdapter; } });
|
|
8
|
-
var GeminiCliAdapter_1 = require("./GeminiCliAdapter");
|
|
9
|
-
Object.defineProperty(exports, "GeminiCliAdapter", { enumerable: true, get: function () { return GeminiCliAdapter_1.GeminiCliAdapter; } });
|
|
10
|
-
var OpenCodeAdapter_1 = require("./OpenCodeAdapter");
|
|
11
|
-
Object.defineProperty(exports, "OpenCodeAdapter", { enumerable: true, get: function () { return OpenCodeAdapter_1.OpenCodeAdapter; } });
|
|
12
|
-
var AgentAdapter_1 = require("./AgentAdapter");
|
|
13
|
-
Object.defineProperty(exports, "AgentStatus", { enumerable: true, get: function () { return AgentAdapter_1.AgentStatus; } });
|
|
1
|
+
export { ClaudeCodeAdapter } from './ClaudeCodeAdapter.js';
|
|
2
|
+
export { CodexAdapter } from './CodexAdapter.js';
|
|
3
|
+
export { GeminiCliAdapter } from './GeminiCliAdapter.js';
|
|
4
|
+
export { OpenCodeAdapter } from './OpenCodeAdapter.js';
|
|
5
|
+
export { AgentStatus } from './AgentAdapter.js';
|
|
14
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
export { AgentManager } from './AgentManager';
|
|
2
|
-
export { ClaudeCodeAdapter } from './adapters/ClaudeCodeAdapter';
|
|
3
|
-
export { CodexAdapter } from './adapters/CodexAdapter';
|
|
4
|
-
export { GeminiCliAdapter } from './adapters/GeminiCliAdapter';
|
|
5
|
-
export { OpenCodeAdapter } from './adapters/OpenCodeAdapter';
|
|
6
|
-
export { AgentStatus } from './adapters/AgentAdapter';
|
|
7
|
-
export type { AgentAdapter, AgentType, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions, } from './adapters/AgentAdapter';
|
|
8
|
-
export { TerminalFocusManager, TerminalType } from './terminal/TerminalFocusManager';
|
|
9
|
-
export type { TerminalLocation } from './terminal/TerminalFocusManager';
|
|
10
|
-
export { TtyWriter } from './terminal/TtyWriter';
|
|
11
|
-
export { getProcessTty } from './utils/process';
|
|
1
|
+
export { AgentManager } from './AgentManager.js';
|
|
2
|
+
export { ClaudeCodeAdapter } from './adapters/ClaudeCodeAdapter.js';
|
|
3
|
+
export { CodexAdapter } from './adapters/CodexAdapter.js';
|
|
4
|
+
export { GeminiCliAdapter } from './adapters/GeminiCliAdapter.js';
|
|
5
|
+
export { OpenCodeAdapter } from './adapters/OpenCodeAdapter.js';
|
|
6
|
+
export { AgentStatus } from './adapters/AgentAdapter.js';
|
|
7
|
+
export type { AgentAdapter, AgentType, AgentInfo, ProcessInfo, ConversationMessage, SessionSummary, ListSessionsOptions, } from './adapters/AgentAdapter.js';
|
|
8
|
+
export { TerminalFocusManager, TerminalType } from './terminal/TerminalFocusManager.js';
|
|
9
|
+
export type { TerminalLocation } from './terminal/TerminalFocusManager.js';
|
|
10
|
+
export { TtyWriter } from './terminal/TtyWriter.js';
|
|
11
|
+
export { getProcessTty } from './utils/process.js';
|
|
12
|
+
export type { AgentSortKey } from './utils/sortAgents.js';
|
|
13
|
+
export type { ListAgentsOptions } from './AgentManager.js';
|
|
14
|
+
export { AgentRegistry, RenameNotFoundError, RenameConflictError } from './utils/AgentRegistry.js';
|
|
15
|
+
export type { RegistryEntry } from './utils/AgentRegistry.js';
|
|
16
|
+
export { TmuxManager } from './terminal/TmuxManager.js';
|
|
17
|
+
export { AGENTS } from './utils/agents.js';
|
|
18
|
+
export type { AgentConfig, StartableAgentType } from './utils/agents.js';
|
|
12
19
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,YAAY,EACR,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACtB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACxF,YAAY,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACnG,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,23 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Object.defineProperty(exports, "OpenCodeAdapter", { enumerable: true, get: function () { return OpenCodeAdapter_1.OpenCodeAdapter; } });
|
|
14
|
-
var AgentAdapter_1 = require("./adapters/AgentAdapter");
|
|
15
|
-
Object.defineProperty(exports, "AgentStatus", { enumerable: true, get: function () { return AgentAdapter_1.AgentStatus; } });
|
|
16
|
-
var TerminalFocusManager_1 = require("./terminal/TerminalFocusManager");
|
|
17
|
-
Object.defineProperty(exports, "TerminalFocusManager", { enumerable: true, get: function () { return TerminalFocusManager_1.TerminalFocusManager; } });
|
|
18
|
-
Object.defineProperty(exports, "TerminalType", { enumerable: true, get: function () { return TerminalFocusManager_1.TerminalType; } });
|
|
19
|
-
var TtyWriter_1 = require("./terminal/TtyWriter");
|
|
20
|
-
Object.defineProperty(exports, "TtyWriter", { enumerable: true, get: function () { return TtyWriter_1.TtyWriter; } });
|
|
21
|
-
var process_1 = require("./utils/process");
|
|
22
|
-
Object.defineProperty(exports, "getProcessTty", { enumerable: true, get: function () { return process_1.getProcessTty; } });
|
|
1
|
+
export { AgentManager } from './AgentManager.js';
|
|
2
|
+
export { ClaudeCodeAdapter } from './adapters/ClaudeCodeAdapter.js';
|
|
3
|
+
export { CodexAdapter } from './adapters/CodexAdapter.js';
|
|
4
|
+
export { GeminiCliAdapter } from './adapters/GeminiCliAdapter.js';
|
|
5
|
+
export { OpenCodeAdapter } from './adapters/OpenCodeAdapter.js';
|
|
6
|
+
export { AgentStatus } from './adapters/AgentAdapter.js';
|
|
7
|
+
export { TerminalFocusManager, TerminalType } from './terminal/TerminalFocusManager.js';
|
|
8
|
+
export { TtyWriter } from './terminal/TtyWriter.js';
|
|
9
|
+
export { getProcessTty } from './utils/process.js';
|
|
10
|
+
export { AgentRegistry, RenameNotFoundError, RenameConflictError } from './utils/AgentRegistry.js';
|
|
11
|
+
export { TmuxManager } from './terminal/TmuxManager.js';
|
|
12
|
+
export { AGENTS } from './utils/agents.js';
|
|
23
13
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAWzD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAInD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEnG,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
const applescript_1 = require("../utils/applescript");
|
|
8
|
-
const execFileAsync = (0, util_1.promisify)(child_process_1.execFile);
|
|
9
|
-
var TerminalType;
|
|
1
|
+
import { execFile } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
import { getProcessTty } from '../utils/process.js';
|
|
4
|
+
import { escapeAppleScript } from '../utils/applescript.js';
|
|
5
|
+
const execFileAsync = promisify(execFile);
|
|
6
|
+
export var TerminalType;
|
|
10
7
|
(function (TerminalType) {
|
|
11
8
|
TerminalType["TMUX"] = "tmux";
|
|
12
9
|
TerminalType["ITERM2"] = "iterm2";
|
|
13
10
|
TerminalType["TERMINAL_APP"] = "terminal-app";
|
|
14
11
|
TerminalType["UNKNOWN"] = "unknown";
|
|
15
|
-
})(TerminalType || (
|
|
16
|
-
class TerminalFocusManager {
|
|
12
|
+
})(TerminalType || (TerminalType = {}));
|
|
13
|
+
export class TerminalFocusManager {
|
|
17
14
|
/**
|
|
18
15
|
* Find the terminal location (emulator info) for a given process ID
|
|
19
16
|
*/
|
|
20
17
|
async findTerminal(pid) {
|
|
21
|
-
const ttyShort =
|
|
18
|
+
const ttyShort = getProcessTty(pid);
|
|
22
19
|
// If no TTY or invalid, we can't find the terminal
|
|
23
20
|
if (!ttyShort || ttyShort === '?') {
|
|
24
21
|
return null;
|
|
@@ -96,7 +93,7 @@ class TerminalFocusManager {
|
|
|
96
93
|
return null;
|
|
97
94
|
}
|
|
98
95
|
try {
|
|
99
|
-
const escapedTty =
|
|
96
|
+
const escapedTty = escapeAppleScript(tty);
|
|
100
97
|
const script = `
|
|
101
98
|
tell application "iTerm"
|
|
102
99
|
repeat with w in windows
|
|
@@ -133,7 +130,7 @@ class TerminalFocusManager {
|
|
|
133
130
|
return null;
|
|
134
131
|
}
|
|
135
132
|
try {
|
|
136
|
-
const escapedTty =
|
|
133
|
+
const escapedTty = escapeAppleScript(tty);
|
|
137
134
|
const script = `
|
|
138
135
|
tell application "Terminal"
|
|
139
136
|
repeat with w in windows
|
|
@@ -169,7 +166,7 @@ class TerminalFocusManager {
|
|
|
169
166
|
}
|
|
170
167
|
}
|
|
171
168
|
async focusITerm2Session(tty) {
|
|
172
|
-
const escapedTty =
|
|
169
|
+
const escapedTty = escapeAppleScript(tty);
|
|
173
170
|
const script = `
|
|
174
171
|
tell application "iTerm"
|
|
175
172
|
activate
|
|
@@ -189,7 +186,7 @@ class TerminalFocusManager {
|
|
|
189
186
|
return stdout.trim() === "true";
|
|
190
187
|
}
|
|
191
188
|
async focusTerminalAppWindow(tty) {
|
|
192
|
-
const escapedTty =
|
|
189
|
+
const escapedTty = escapeAppleScript(tty);
|
|
193
190
|
const script = `
|
|
194
191
|
tell application "Terminal"
|
|
195
192
|
activate
|
|
@@ -208,5 +205,4 @@ class TerminalFocusManager {
|
|
|
208
205
|
return stdout.trim() === "true";
|
|
209
206
|
}
|
|
210
207
|
}
|
|
211
|
-
exports.TerminalFocusManager = TerminalFocusManager;
|
|
212
208
|
//# sourceMappingURL=TerminalFocusManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TerminalFocusManager.js","sourceRoot":"","sources":["../../src/terminal/TerminalFocusManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TerminalFocusManager.js","sourceRoot":"","sources":["../../src/terminal/TerminalFocusManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare class TmuxManager {
|
|
2
|
+
isAvailable(): Promise<boolean>;
|
|
3
|
+
sessionExists(name: string): Promise<boolean>;
|
|
4
|
+
createSession(name: string, cwd: string): Promise<void>;
|
|
5
|
+
sendKeys(session: string, keys: string): Promise<void>;
|
|
6
|
+
killSession(name: string): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Find the actual agent process PID inside a tmux pane.
|
|
9
|
+
*
|
|
10
|
+
* Strategy: BFS the process tree, return the deepest descendant whose
|
|
11
|
+
* `ps` command line is accepted by `matches`. The caller supplies the
|
|
12
|
+
* matcher so this method has no agent-type knowledge.
|
|
13
|
+
*
|
|
14
|
+
* This handles two real-world process shapes:
|
|
15
|
+
* - Wrapper case: shell → claude-wrapper (matches) → claude (matches, deeper)
|
|
16
|
+
* → returns the deeper one
|
|
17
|
+
* - Subprocess case: shell → claude (matches) → MCP server child (doesn't match)
|
|
18
|
+
* → returns claude, not the subprocess
|
|
19
|
+
*
|
|
20
|
+
* Returns null when no descendant matches yet (agent still starting); the
|
|
21
|
+
* caller's poll loop retries.
|
|
22
|
+
*/
|
|
23
|
+
findAgentPid(session: string, matches: (psCommand: string) => boolean): Promise<number | null>;
|
|
24
|
+
private getPanePid;
|
|
25
|
+
private pgrepChildren;
|
|
26
|
+
private getProcessCommand;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=TmuxManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TmuxManager.d.ts","sourceRoot":"","sources":["../../src/terminal/TmuxManager.ts"],"names":[],"mappings":"AAKA,qBAAa,WAAW;IACd,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS7C,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C;;;;;;;;;;;;;;;OAeG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YA2BtF,UAAU;YAYV,aAAa;YAab,iBAAiB;CASlC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { execFile } from 'child_process';
|
|
2
|
+
import { promisify } from 'util';
|
|
3
|
+
const execFileAsync = promisify(execFile);
|
|
4
|
+
export class TmuxManager {
|
|
5
|
+
async isAvailable() {
|
|
6
|
+
try {
|
|
7
|
+
await execFileAsync('tmux', ['-V']);
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
async sessionExists(name) {
|
|
15
|
+
try {
|
|
16
|
+
await execFileAsync('tmux', ['has-session', '-t', name]);
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async createSession(name, cwd) {
|
|
24
|
+
await execFileAsync('tmux', ['new-session', '-d', '-s', name, '-c', cwd]);
|
|
25
|
+
}
|
|
26
|
+
async sendKeys(session, keys) {
|
|
27
|
+
await execFileAsync('tmux', ['send-keys', '-t', session, keys, 'Enter']);
|
|
28
|
+
}
|
|
29
|
+
async killSession(name) {
|
|
30
|
+
try {
|
|
31
|
+
await execFileAsync('tmux', ['kill-session', '-t', name]);
|
|
32
|
+
}
|
|
33
|
+
catch {
|
|
34
|
+
// Already gone — ignore
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Find the actual agent process PID inside a tmux pane.
|
|
39
|
+
*
|
|
40
|
+
* Strategy: BFS the process tree, return the deepest descendant whose
|
|
41
|
+
* `ps` command line is accepted by `matches`. The caller supplies the
|
|
42
|
+
* matcher so this method has no agent-type knowledge.
|
|
43
|
+
*
|
|
44
|
+
* This handles two real-world process shapes:
|
|
45
|
+
* - Wrapper case: shell → claude-wrapper (matches) → claude (matches, deeper)
|
|
46
|
+
* → returns the deeper one
|
|
47
|
+
* - Subprocess case: shell → claude (matches) → MCP server child (doesn't match)
|
|
48
|
+
* → returns claude, not the subprocess
|
|
49
|
+
*
|
|
50
|
+
* Returns null when no descendant matches yet (agent still starting); the
|
|
51
|
+
* caller's poll loop retries.
|
|
52
|
+
*/
|
|
53
|
+
async findAgentPid(session, matches) {
|
|
54
|
+
const panePid = await this.getPanePid(session);
|
|
55
|
+
if (panePid === null)
|
|
56
|
+
return null;
|
|
57
|
+
const visited = new Set();
|
|
58
|
+
const queue = [panePid];
|
|
59
|
+
let deepestMatch = null;
|
|
60
|
+
while (queue.length > 0) {
|
|
61
|
+
const pid = queue.shift();
|
|
62
|
+
if (visited.has(pid))
|
|
63
|
+
continue;
|
|
64
|
+
visited.add(pid);
|
|
65
|
+
if (pid !== panePid) {
|
|
66
|
+
const command = await this.getProcessCommand(pid);
|
|
67
|
+
if (command && matches(command)) {
|
|
68
|
+
deepestMatch = pid;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const children = await this.pgrepChildren(pid);
|
|
72
|
+
queue.push(...children);
|
|
73
|
+
}
|
|
74
|
+
return deepestMatch;
|
|
75
|
+
}
|
|
76
|
+
async getPanePid(session) {
|
|
77
|
+
try {
|
|
78
|
+
const { stdout } = await execFileAsync('tmux', [
|
|
79
|
+
'list-panes', '-t', session, '-F', '#{pane_pid}',
|
|
80
|
+
]);
|
|
81
|
+
const panePid = parseInt(stdout.trim().split('\n')[0], 10);
|
|
82
|
+
return isNaN(panePid) ? null : panePid;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async pgrepChildren(pid) {
|
|
89
|
+
try {
|
|
90
|
+
const { stdout } = await execFileAsync('pgrep', ['-P', String(pid)]);
|
|
91
|
+
return stdout
|
|
92
|
+
.trim()
|
|
93
|
+
.split('\n')
|
|
94
|
+
.map((s) => parseInt(s, 10))
|
|
95
|
+
.filter((n) => !isNaN(n));
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return [];
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
async getProcessCommand(pid) {
|
|
102
|
+
try {
|
|
103
|
+
const { stdout } = await execFileAsync('ps', ['-p', String(pid), '-o', 'command=']);
|
|
104
|
+
const trimmed = stdout.trim();
|
|
105
|
+
return trimmed || null;
|
|
106
|
+
}
|
|
107
|
+
catch {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=TmuxManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TmuxManager.js","sourceRoot":"","sources":["../../src/terminal/TmuxManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TtyWriter.d.ts","sourceRoot":"","sources":["../../src/terminal/TtyWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TtyWriter.d.ts","sourceRoot":"","sources":["../../src/terminal/TtyWriter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAMlE,qBAAa,SAAS;IAClB;;;;;;;;;;;;;;OAcG;WACU,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;mBAgBxD,WAAW;IAWhC;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;mBAsBb,aAAa;mBAuBb,kBAAkB;CA0D1C"}
|