@redplanethq/corebrain 2.5.12 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +24 -6
- package/dist/cli.js.map +1 -1
- package/dist/commands/gateway/config.d.ts.map +1 -1
- package/dist/commands/gateway/config.js +57 -23
- package/dist/commands/gateway/config.js.map +1 -1
- package/dist/server/tools/coding-tools.d.ts.map +1 -1
- package/dist/server/tools/coding-tools.js +35 -1
- package/dist/server/tools/coding-tools.js.map +1 -1
- package/dist/tui/chat.d.ts +2 -0
- package/dist/tui/chat.d.ts.map +1 -0
- package/dist/tui/chat.js +309 -0
- package/dist/tui/chat.js.map +1 -0
- package/dist/tui/components/conversation-selector.d.ts +28 -0
- package/dist/tui/components/conversation-selector.d.ts.map +1 -0
- package/dist/tui/components/conversation-selector.js +170 -0
- package/dist/tui/components/conversation-selector.js.map +1 -0
- package/dist/tui/components/integrations-view.d.ts +27 -0
- package/dist/tui/components/integrations-view.d.ts.map +1 -0
- package/dist/tui/components/integrations-view.js +169 -0
- package/dist/tui/components/integrations-view.js.map +1 -0
- package/dist/tui/components/reminder-list.d.ts +28 -0
- package/dist/tui/components/reminder-list.d.ts.map +1 -0
- package/dist/tui/components/reminder-list.js +261 -0
- package/dist/tui/components/reminder-list.js.map +1 -0
- package/dist/tui/components/tool-call-item.d.ts +24 -0
- package/dist/tui/components/tool-call-item.d.ts.map +1 -0
- package/dist/tui/components/tool-call-item.js +176 -0
- package/dist/tui/components/tool-call-item.js.map +1 -0
- package/dist/tui/hooks/use-conversation.d.ts +17 -0
- package/dist/tui/hooks/use-conversation.d.ts.map +1 -0
- package/dist/tui/hooks/use-conversation.js +137 -0
- package/dist/tui/hooks/use-conversation.js.map +1 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.d.ts.map +1 -0
- package/dist/tui/index.js +2 -0
- package/dist/tui/index.js.map +1 -0
- package/dist/tui/themes.d.ts +27 -0
- package/dist/tui/themes.d.ts.map +1 -0
- package/dist/tui/themes.js +28 -0
- package/dist/tui/themes.js.map +1 -0
- package/dist/tui/utils/stream.d.ts +121 -0
- package/dist/tui/utils/stream.d.ts.map +1 -0
- package/dist/tui/utils/stream.js +158 -0
- package/dist/tui/utils/stream.js.map +1 -0
- package/dist/tui/utils/tool-names.d.ts +2 -0
- package/dist/tui/utils/tool-names.d.ts.map +1 -0
- package/dist/tui/utils/tool-names.js +18 -0
- package/dist/tui/utils/tool-names.js.map +1 -0
- package/dist/utils/app-bundle.d.ts.map +1 -1
- package/dist/utils/app-bundle.js.map +1 -1
- package/package.json +4 -3
- package/dist/utils/tmux.d.ts +0 -37
- package/dist/utils/tmux.d.ts.map +0 -1
- package/dist/utils/tmux.js +0 -96
- package/dist/utils/tmux.js.map +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { exec } from 'node:child_process';
|
|
3
|
+
// ── Open URL in browser ───────────────────────────────────────────────────────
|
|
4
|
+
export function openBrowser(url) {
|
|
5
|
+
const cmd = process.platform === 'darwin' ? 'open' : process.platform === 'win32' ? 'start' : 'xdg-open';
|
|
6
|
+
exec(`${cmd} "${url}"`);
|
|
7
|
+
}
|
|
8
|
+
export async function fetchIntegrationDefinitions(baseUrl, apiKey) {
|
|
9
|
+
const res = await fetch(`${baseUrl}/api/v1/integration_definitions`, {
|
|
10
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
11
|
+
});
|
|
12
|
+
if (!res.ok)
|
|
13
|
+
throw new Error(`Failed to fetch definitions: ${res.statusText}`);
|
|
14
|
+
const data = (await res.json());
|
|
15
|
+
return data.definitions ?? [];
|
|
16
|
+
}
|
|
17
|
+
export async function fetchIntegrationAccounts(baseUrl, apiKey) {
|
|
18
|
+
const res = await fetch(`${baseUrl}/api/v1/integration_account`, {
|
|
19
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
20
|
+
});
|
|
21
|
+
if (!res.ok)
|
|
22
|
+
throw new Error(`Failed to fetch accounts: ${res.statusText}`);
|
|
23
|
+
const data = (await res.json());
|
|
24
|
+
return data.accounts ?? [];
|
|
25
|
+
}
|
|
26
|
+
export async function connectApiKeyIntegration(baseUrl, apiKey, integrationDefinitionId, key) {
|
|
27
|
+
const res = await fetch(`${baseUrl}/api/v1/integration_account`, {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${apiKey}` },
|
|
30
|
+
body: JSON.stringify({ integrationDefinitionId, apiKey: key }),
|
|
31
|
+
});
|
|
32
|
+
if (!res.ok) {
|
|
33
|
+
const data = (await res.json().catch(() => ({})));
|
|
34
|
+
throw new Error(data.error ?? res.statusText);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
// ── Parse a single SSE line ───────────────────────────────────────────────────
|
|
38
|
+
function parseSSELine(line) {
|
|
39
|
+
const trimmed = line.trim();
|
|
40
|
+
if (trimmed.startsWith('data: ')) {
|
|
41
|
+
return trimmed.slice(6);
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
// ── Stream conversation ───────────────────────────────────────────────────────
|
|
46
|
+
export async function* streamConversation(baseUrl, apiKey, conversationId, message) {
|
|
47
|
+
const response = await fetch(`${baseUrl}/api/v1/conversation`, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: {
|
|
50
|
+
'Content-Type': 'application/json',
|
|
51
|
+
Authorization: `Bearer ${apiKey}`,
|
|
52
|
+
},
|
|
53
|
+
body: JSON.stringify({
|
|
54
|
+
id: conversationId,
|
|
55
|
+
message: {
|
|
56
|
+
id: randomUUID(),
|
|
57
|
+
parts: [{ text: message, type: 'text' }],
|
|
58
|
+
role: 'user',
|
|
59
|
+
},
|
|
60
|
+
source: 'cli',
|
|
61
|
+
}),
|
|
62
|
+
});
|
|
63
|
+
if (!response.ok || !response.body) {
|
|
64
|
+
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
|
|
65
|
+
}
|
|
66
|
+
const reader = response.body.getReader();
|
|
67
|
+
const decoder = new TextDecoder();
|
|
68
|
+
let buffer = '';
|
|
69
|
+
while (true) {
|
|
70
|
+
const { done, value } = await reader.read();
|
|
71
|
+
if (done)
|
|
72
|
+
break;
|
|
73
|
+
buffer += decoder.decode(value, { stream: true });
|
|
74
|
+
const lines = buffer.split('\n');
|
|
75
|
+
buffer = lines.pop() ?? '';
|
|
76
|
+
for (const line of lines) {
|
|
77
|
+
const data = parseSSELine(line);
|
|
78
|
+
if (!data || data === '[DONE]')
|
|
79
|
+
continue;
|
|
80
|
+
try {
|
|
81
|
+
const event = JSON.parse(data);
|
|
82
|
+
yield event;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// ignore malformed lines
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export async function fetchConversations(baseUrl, apiKey, page = 1, limit = 20, source) {
|
|
91
|
+
const params = new URLSearchParams({
|
|
92
|
+
page: String(page),
|
|
93
|
+
limit: String(limit),
|
|
94
|
+
});
|
|
95
|
+
if (source)
|
|
96
|
+
params.set('source', source);
|
|
97
|
+
const response = await fetch(`${baseUrl}/api/v1/conversations?${params.toString()}`, {
|
|
98
|
+
headers: {
|
|
99
|
+
Authorization: `Bearer ${apiKey}`,
|
|
100
|
+
},
|
|
101
|
+
});
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
throw new Error(`Failed to fetch conversations: ${response.statusText}`);
|
|
104
|
+
}
|
|
105
|
+
const data = (await response.json());
|
|
106
|
+
return {
|
|
107
|
+
conversations: data.conversations ?? [],
|
|
108
|
+
hasNext: data.pagination?.hasNext ?? false,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
export async function fetchReminders(baseUrl, apiKey, cursor, isActive, limit = 25) {
|
|
112
|
+
const params = new URLSearchParams({ limit: String(limit) });
|
|
113
|
+
if (cursor)
|
|
114
|
+
params.set('cursor', cursor);
|
|
115
|
+
if (isActive !== undefined)
|
|
116
|
+
params.set('isActive', isActive);
|
|
117
|
+
const response = await fetch(`${baseUrl}/api/v1/reminders?${params.toString()}`, {
|
|
118
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
119
|
+
});
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
throw new Error(`Failed to fetch reminders: ${response.statusText}`);
|
|
122
|
+
}
|
|
123
|
+
const data = (await response.json());
|
|
124
|
+
return {
|
|
125
|
+
reminders: data.reminders ?? [],
|
|
126
|
+
hasMore: data.hasMore ?? false,
|
|
127
|
+
nextCursor: data.nextCursor ?? null,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export async function fetchConversationHistory(baseUrl, apiKey, conversationId) {
|
|
131
|
+
const response = await fetch(`${baseUrl}/api/v1/conversation/${conversationId}`, {
|
|
132
|
+
headers: {
|
|
133
|
+
Authorization: `Bearer ${apiKey}`,
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
if (!response.ok) {
|
|
137
|
+
throw new Error(`Failed to fetch conversation: ${response.statusText}`);
|
|
138
|
+
}
|
|
139
|
+
const data = (await response.json());
|
|
140
|
+
return data.ConversationHistory ?? [];
|
|
141
|
+
}
|
|
142
|
+
// ── Create conversation ───────────────────────────────────────────────────────
|
|
143
|
+
export async function createConversationApi(baseUrl, apiKey, message) {
|
|
144
|
+
const response = await fetch(`${baseUrl}/api/v1/conversation/create`, {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
headers: {
|
|
147
|
+
'Content-Type': 'application/json',
|
|
148
|
+
Authorization: `Bearer ${apiKey}`,
|
|
149
|
+
},
|
|
150
|
+
body: JSON.stringify({ message, source: 'cli' }),
|
|
151
|
+
});
|
|
152
|
+
if (!response.ok) {
|
|
153
|
+
throw new Error(`Failed to create conversation: ${response.statusText}`);
|
|
154
|
+
}
|
|
155
|
+
const data = (await response.json());
|
|
156
|
+
return data.conversationId;
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../../src/tui/utils/stream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../../src/tui/utils/tool-names.ts"],"names":[],"mappings":"AAUA,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO3D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const DISPLAY_NAMES = {
|
|
2
|
+
gather_context: 'Gather context',
|
|
3
|
+
take_action: 'Take action',
|
|
4
|
+
integration_query: 'Integration explorer',
|
|
5
|
+
integration_action: 'Integration explorer',
|
|
6
|
+
memory_search: 'Memory search',
|
|
7
|
+
execute_integration_action: 'Execute action',
|
|
8
|
+
get_integration_actions: 'Get actions',
|
|
9
|
+
};
|
|
10
|
+
export function getToolDisplayName(toolName) {
|
|
11
|
+
if (DISPLAY_NAMES[toolName])
|
|
12
|
+
return DISPLAY_NAMES[toolName];
|
|
13
|
+
if (toolName.startsWith('gateway_')) {
|
|
14
|
+
return 'Sub-agent: ' + toolName.replace('gateway_', '').replace(/_/g, ' ');
|
|
15
|
+
}
|
|
16
|
+
return toolName.replace(/_/g, ' ');
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=tool-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../../src/tui/utils/tool-names.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAA2B;IAC7C,cAAc,EAAE,gBAAgB;IAChC,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,sBAAsB;IACzC,kBAAkB,EAAE,sBAAsB;IAC1C,aAAa,EAAE,eAAe;IAC9B,0BAA0B,EAAE,gBAAgB;IAC5C,uBAAuB,EAAE,aAAa;CACtC,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IAClD,IAAI,aAAa,CAAC,QAAQ,CAAC;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACrC,OAAO,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,
|
|
1
|
+
{"version":3,"file":"app-bundle.d.ts","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAeA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,GACtB,IAAI,CAwDN;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,IAAI,CAejD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAa5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACN,UAAU,EACV,SAAS,EACT,aAAa,EACb,SAAS,EACT,YAAY,GACZ,MAAM,SAAS,CAAC;AACjB,OAAO,EAAC,IAAI,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AACxC,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AAEvC,MAAM,QAAQ,GAAG,sBAAsB,CAAC;AACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AACjD,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,MAAM,UAAU,gBAAgB;IAC/B,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,OAAO,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,oBAAoB;IACnC,OAAO,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"app-bundle.js","sourceRoot":"","sources":["../../src/utils/app-bundle.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@redplanethq/corebrain",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.6.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16"
|
|
@@ -17,7 +17,9 @@
|
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
19
|
"@clack/prompts": "^1.0.1",
|
|
20
|
+
"@mariozechner/pi-tui": "^0.57.1",
|
|
20
21
|
"@mishieck/ink-titled-box": "^0.4.2",
|
|
22
|
+
"chalk": "^5.2.0",
|
|
21
23
|
"dotenv": "^17.2.3",
|
|
22
24
|
"ink": "^6.6.0",
|
|
23
25
|
"ink-select-input": "^6.2.0",
|
|
@@ -28,7 +30,7 @@
|
|
|
28
30
|
"react": "^19.2.4",
|
|
29
31
|
"ws": "^8.18.0",
|
|
30
32
|
"zod": "^4.3.6",
|
|
31
|
-
"@redplanethq/sdk": "0.1.
|
|
33
|
+
"@redplanethq/sdk": "0.1.13"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
34
36
|
"@sindresorhus/tsconfig": "^8.1.0",
|
|
@@ -37,7 +39,6 @@
|
|
|
37
39
|
"@types/ws": "^8.5.13",
|
|
38
40
|
"@vdemedes/prettier-config": "^2.0.1",
|
|
39
41
|
"ava": "^6.4.1",
|
|
40
|
-
"chalk": "^5.2.0",
|
|
41
42
|
"eslint-config-xo-react": "^0.27.0",
|
|
42
43
|
"eslint-plugin-react": "^7.32.2",
|
|
43
44
|
"eslint-plugin-react-hooks": "^4.6.0",
|
package/dist/utils/tmux.d.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Check if tmux is installed and available
|
|
3
|
-
*/
|
|
4
|
-
export declare function isTmuxAvailable(): Promise<boolean>;
|
|
5
|
-
/**
|
|
6
|
-
* Check if a tmux session exists
|
|
7
|
-
*/
|
|
8
|
-
export declare function sessionExists(name: string): Promise<boolean>;
|
|
9
|
-
/**
|
|
10
|
-
* Create a new detached tmux session with a command
|
|
11
|
-
*/
|
|
12
|
-
export declare function createSession(name: string, command: string): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Kill a tmux session
|
|
15
|
-
*/
|
|
16
|
-
export declare function killSession(name: string): Promise<void>;
|
|
17
|
-
/**
|
|
18
|
-
* Get the PID of a tmux session
|
|
19
|
-
*/
|
|
20
|
-
export declare function getSessionPid(name: string): Promise<number | null>;
|
|
21
|
-
/**
|
|
22
|
-
* List all tmux sessions
|
|
23
|
-
*/
|
|
24
|
-
export declare function listSessions(): Promise<string[]>;
|
|
25
|
-
/**
|
|
26
|
-
* Get the content of a tmux pane
|
|
27
|
-
*/
|
|
28
|
-
export declare function getSessionContent(name: string, lines?: number): Promise<string>;
|
|
29
|
-
/**
|
|
30
|
-
* Send keys to a tmux session
|
|
31
|
-
*/
|
|
32
|
-
export declare function sendKeys(name: string, keys: string): Promise<void>;
|
|
33
|
-
/**
|
|
34
|
-
* Check if a process with the given PID is running
|
|
35
|
-
*/
|
|
36
|
-
export declare function isPidRunning(pid: number): boolean;
|
|
37
|
-
//# sourceMappingURL=tmux.d.ts.map
|
package/dist/utils/tmux.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.d.ts","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAOxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOlE;AAED;;GAEG;AACH,wBAAsB,aAAa,CAClC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAEf;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUxE;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOtD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,EACZ,KAAK,SAAM,GACT,OAAO,CAAC,MAAM,CAAC,CASjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQjD"}
|
package/dist/utils/tmux.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { exec } from 'node:child_process';
|
|
2
|
-
import { promisify } from 'node:util';
|
|
3
|
-
const execAsync = promisify(exec);
|
|
4
|
-
/**
|
|
5
|
-
* Check if tmux is installed and available
|
|
6
|
-
*/
|
|
7
|
-
export async function isTmuxAvailable() {
|
|
8
|
-
try {
|
|
9
|
-
await execAsync('which tmux');
|
|
10
|
-
return true;
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
return false;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Check if a tmux session exists
|
|
18
|
-
*/
|
|
19
|
-
export async function sessionExists(name) {
|
|
20
|
-
try {
|
|
21
|
-
await execAsync(`tmux has-session -t ${name} 2>/dev/null`);
|
|
22
|
-
return true;
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Create a new detached tmux session with a command
|
|
30
|
-
*/
|
|
31
|
-
export async function createSession(name, command) {
|
|
32
|
-
await execAsync(`tmux new-session -d -s ${name} '${command}'`);
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Kill a tmux session
|
|
36
|
-
*/
|
|
37
|
-
export async function killSession(name) {
|
|
38
|
-
await execAsync(`tmux kill-session -t ${name}`);
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Get the PID of a tmux session
|
|
42
|
-
*/
|
|
43
|
-
export async function getSessionPid(name) {
|
|
44
|
-
try {
|
|
45
|
-
const { stdout } = await execAsync(`tmux list-panes -t ${name} -F '#{pane_pid}' | head -n 1`);
|
|
46
|
-
const pid = parseInt(stdout.trim(), 10);
|
|
47
|
-
return isNaN(pid) ? null : pid;
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* List all tmux sessions
|
|
55
|
-
*/
|
|
56
|
-
export async function listSessions() {
|
|
57
|
-
try {
|
|
58
|
-
const { stdout } = await execAsync(`tmux list-sessions -F '#{session_name}'`);
|
|
59
|
-
return stdout.trim().split('\n').filter(Boolean);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
return [];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Get the content of a tmux pane
|
|
67
|
-
*/
|
|
68
|
-
export async function getSessionContent(name, lines = 100) {
|
|
69
|
-
try {
|
|
70
|
-
const { stdout } = await execAsync(`tmux capture-pane -t ${name} -p -S -${lines}`);
|
|
71
|
-
return stdout;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
return '';
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Send keys to a tmux session
|
|
79
|
-
*/
|
|
80
|
-
export async function sendKeys(name, keys) {
|
|
81
|
-
await execAsync(`tmux send-keys -t ${name} '${keys}' Enter`);
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Check if a process with the given PID is running
|
|
85
|
-
*/
|
|
86
|
-
export function isPidRunning(pid) {
|
|
87
|
-
try {
|
|
88
|
-
// Sending signal 0 checks if process exists without killing it
|
|
89
|
-
process.kill(pid, 0);
|
|
90
|
-
return true;
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
return false;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=tmux.js.map
|
package/dist/utils/tmux.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tmux.js","sourceRoot":"","sources":["../../src/utils/tmux.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACpC,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC/C,IAAI,CAAC;QACJ,MAAM,SAAS,CAAC,uBAAuB,IAAI,cAAc,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,IAAY,EACZ,OAAe;IAEf,MAAM,SAAS,CAAC,0BAA0B,IAAI,KAAK,OAAO,GAAG,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY;IAC7C,MAAM,SAAS,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAY;IAC/C,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CACjC,sBAAsB,IAAI,+BAA+B,CACzD,CAAC;QACF,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IACjC,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,yCAAyC,CAAC,CAAC;QAC9E,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACtC,IAAY,EACZ,KAAK,GAAG,GAAG;IAEX,IAAI,CAAC;QACJ,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CACjC,wBAAwB,IAAI,WAAW,KAAK,EAAE,CAC9C,CAAC;QACF,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAC;IACX,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAAY;IACxD,MAAM,SAAS,CAAC,qBAAqB,IAAI,KAAK,IAAI,SAAS,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACvC,IAAI,CAAC;QACJ,+DAA+D;QAC/D,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
|