@saccolabs/tars 1.0.35 → 1.0.37
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/auth/credential-manager.d.ts +14 -0
- package/dist/auth/credential-manager.js +60 -0
- package/dist/auth/credential-manager.js.map +1 -0
- package/dist/auth/oauth-service.d.ts +23 -0
- package/dist/auth/oauth-service.js +84 -0
- package/dist/auth/oauth-service.js.map +1 -0
- package/dist/cli/commands/setup.js +32 -96
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/start.js +3 -2
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/discord/discord-bot.js +15 -5
- package/dist/discord/discord-bot.js.map +1 -1
- package/dist/memory/memory-manager.js +10 -5
- package/dist/memory/memory-manager.js.map +1 -1
- package/dist/scripts/debug-cli.js +7 -34
- package/dist/scripts/debug-cli.js.map +1 -1
- package/dist/supervisor/cron-service.d.ts +21 -0
- package/dist/supervisor/cron-service.js +105 -0
- package/dist/supervisor/cron-service.js.map +1 -0
- package/dist/supervisor/gemini-engine.d.ts +52 -0
- package/dist/supervisor/gemini-engine.js +380 -0
- package/dist/supervisor/gemini-engine.js.map +1 -0
- package/dist/supervisor/heartbeat-service.d.ts +1 -11
- package/dist/supervisor/heartbeat-service.js +8 -84
- package/dist/supervisor/heartbeat-service.js.map +1 -1
- package/dist/supervisor/main.js +8 -34
- package/dist/supervisor/main.js.map +1 -1
- package/dist/supervisor/session-manager.js +16 -15
- package/dist/supervisor/session-manager.js.map +1 -1
- package/dist/supervisor/supervisor.d.ts +5 -6
- package/dist/supervisor/supervisor.js +20 -24
- package/dist/supervisor/supervisor.js.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/extensions/memory/dist/store.js +39 -6
- package/extensions/memory/dist/store.js.map +1 -1
- package/extensions/memory/src/store.ts +45 -6
- package/extensions/memory/tsconfig.json +2 -1
- package/extensions/tasks/tsconfig.json +2 -1
- package/package.json +7 -3
- package/src/prompts/system.md +12 -0
- package/dist/supervisor/gemini-cli.d.ts +0 -17
- package/dist/supervisor/gemini-cli.js +0 -193
- package/dist/supervisor/gemini-cli.js.map +0 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
|
+
import fs_sync from 'fs';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import os from 'os';
|
|
4
5
|
// ── Store ──────────────────────────────────────────────
|
|
@@ -90,7 +91,7 @@ export class MemoryStore {
|
|
|
90
91
|
async search(query) {
|
|
91
92
|
const results = [];
|
|
92
93
|
const queryLower = query.toLowerCase();
|
|
93
|
-
// Search
|
|
94
|
+
// 1. Search Long-term Facts
|
|
94
95
|
const file = await this._loadFacts();
|
|
95
96
|
for (const fact of Object.values(file.facts)) {
|
|
96
97
|
if (fact.key.toLowerCase().includes(queryLower) ||
|
|
@@ -98,29 +99,61 @@ export class MemoryStore {
|
|
|
98
99
|
results.push(`[Fact] ${fact.key}: ${fact.value}`);
|
|
99
100
|
}
|
|
100
101
|
}
|
|
101
|
-
// Search
|
|
102
|
+
// 2. Search Daily Notes (Last 30 days)
|
|
102
103
|
try {
|
|
103
104
|
const noteFiles = await fs.readdir(this.notesDir);
|
|
104
105
|
const mdFiles = noteFiles
|
|
105
106
|
.filter((f) => f.endsWith('.md'))
|
|
106
107
|
.sort()
|
|
107
108
|
.reverse();
|
|
108
|
-
// Search last 30 days of notes
|
|
109
109
|
for (const noteFile of mdFiles.slice(0, 30)) {
|
|
110
110
|
const filePath = path.join(this.notesDir, noteFile);
|
|
111
111
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
112
112
|
const lines = content.split('\n').filter((l) => l.trim());
|
|
113
113
|
for (const line of lines) {
|
|
114
114
|
if (line.toLowerCase().includes(queryLower)) {
|
|
115
|
-
results.push(`[Note ${noteFile}] ${line.replace(/^- /, '')}`);
|
|
115
|
+
results.push(`[Note ${noteFile.replace('.md', '')}] ${line.replace(/^- /, '')}`);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
120
|
catch (error) {
|
|
121
|
-
// Notes dir may not exist yet
|
|
122
121
|
if (error.code !== 'ENOENT')
|
|
123
|
-
|
|
122
|
+
console.error(`Failed to search notes: ${error}`);
|
|
123
|
+
}
|
|
124
|
+
// 3. Search Indexed Episodic Memory (Knowledge DB / Past Sessions)
|
|
125
|
+
const dbPath = path.join(path.dirname(this.dataDir), 'knowledge.db');
|
|
126
|
+
if (fs_sync.existsSync(dbPath)) {
|
|
127
|
+
try {
|
|
128
|
+
const { DatabaseSync } = await import('node:sqlite');
|
|
129
|
+
const db = new DatabaseSync(dbPath);
|
|
130
|
+
const dbResults = db
|
|
131
|
+
.prepare(`
|
|
132
|
+
SELECT f.path, c.content, rank as score
|
|
133
|
+
FROM chunks_fts fts
|
|
134
|
+
JOIN chunks c ON fts.rowid = c.id
|
|
135
|
+
JOIN files f ON c.file_id = f.id
|
|
136
|
+
WHERE chunks_fts MATCH ?
|
|
137
|
+
ORDER BY rank
|
|
138
|
+
LIMIT 5
|
|
139
|
+
`)
|
|
140
|
+
.all(query);
|
|
141
|
+
for (const r of dbResults) {
|
|
142
|
+
// Prettify the source path (e.g. history/session-XXX.json -> Session history)
|
|
143
|
+
let source = r.path;
|
|
144
|
+
if (source.startsWith('history/')) {
|
|
145
|
+
const dateMatch = source.match(/session-(\d{4}-\d{2}-\d{2})/);
|
|
146
|
+
source = dateMatch
|
|
147
|
+
? `Past Session ${dateMatch[1]}`
|
|
148
|
+
: 'Past Session history';
|
|
149
|
+
}
|
|
150
|
+
results.push(`[${source}] ${r.content.trim()}`);
|
|
151
|
+
}
|
|
152
|
+
db.close();
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
console.error(`Failed to search knowledge DB: ${error}`);
|
|
156
|
+
}
|
|
124
157
|
}
|
|
125
158
|
return results;
|
|
126
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'fs/promises';
|
|
2
|
+
import fs_sync from 'fs';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import os from 'os';
|
|
4
5
|
|
|
@@ -120,7 +121,7 @@ export class MemoryStore {
|
|
|
120
121
|
const results: string[] = [];
|
|
121
122
|
const queryLower = query.toLowerCase();
|
|
122
123
|
|
|
123
|
-
// Search
|
|
124
|
+
// 1. Search Long-term Facts
|
|
124
125
|
const file = await this._loadFacts();
|
|
125
126
|
for (const fact of Object.values(file.facts)) {
|
|
126
127
|
if (
|
|
@@ -131,7 +132,7 @@ export class MemoryStore {
|
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
|
|
134
|
-
// Search
|
|
135
|
+
// 2. Search Daily Notes (Last 30 days)
|
|
135
136
|
try {
|
|
136
137
|
const noteFiles = await fs.readdir(this.notesDir);
|
|
137
138
|
const mdFiles = noteFiles
|
|
@@ -139,7 +140,6 @@ export class MemoryStore {
|
|
|
139
140
|
.sort()
|
|
140
141
|
.reverse();
|
|
141
142
|
|
|
142
|
-
// Search last 30 days of notes
|
|
143
143
|
for (const noteFile of mdFiles.slice(0, 30)) {
|
|
144
144
|
const filePath = path.join(this.notesDir, noteFile);
|
|
145
145
|
const content = await fs.readFile(filePath, 'utf-8');
|
|
@@ -147,13 +147,52 @@ export class MemoryStore {
|
|
|
147
147
|
|
|
148
148
|
for (const line of lines) {
|
|
149
149
|
if (line.toLowerCase().includes(queryLower)) {
|
|
150
|
-
results.push(
|
|
150
|
+
results.push(
|
|
151
|
+
`[Note ${noteFile.replace('.md', '')}] ${line.replace(/^- /, '')}`
|
|
152
|
+
);
|
|
151
153
|
}
|
|
152
154
|
}
|
|
153
155
|
}
|
|
154
156
|
} catch (error: any) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
if (error.code !== 'ENOENT') console.error(`Failed to search notes: ${error}`);
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// 3. Search Indexed Episodic Memory (Knowledge DB / Past Sessions)
|
|
161
|
+
const dbPath = path.join(path.dirname(this.dataDir), 'knowledge.db');
|
|
162
|
+
if (fs_sync.existsSync(dbPath)) {
|
|
163
|
+
try {
|
|
164
|
+
const { DatabaseSync } = await import('node:sqlite');
|
|
165
|
+
const db = new DatabaseSync(dbPath);
|
|
166
|
+
|
|
167
|
+
const dbResults = db
|
|
168
|
+
.prepare(
|
|
169
|
+
`
|
|
170
|
+
SELECT f.path, c.content, rank as score
|
|
171
|
+
FROM chunks_fts fts
|
|
172
|
+
JOIN chunks c ON fts.rowid = c.id
|
|
173
|
+
JOIN files f ON c.file_id = f.id
|
|
174
|
+
WHERE chunks_fts MATCH ?
|
|
175
|
+
ORDER BY rank
|
|
176
|
+
LIMIT 5
|
|
177
|
+
`
|
|
178
|
+
)
|
|
179
|
+
.all(query) as any[];
|
|
180
|
+
|
|
181
|
+
for (const r of dbResults) {
|
|
182
|
+
// Prettify the source path (e.g. history/session-XXX.json -> Session history)
|
|
183
|
+
let source = r.path;
|
|
184
|
+
if (source.startsWith('history/')) {
|
|
185
|
+
const dateMatch = source.match(/session-(\d{4}-\d{2}-\d{2})/);
|
|
186
|
+
source = dateMatch
|
|
187
|
+
? `Past Session ${dateMatch[1]}`
|
|
188
|
+
: 'Past Session history';
|
|
189
|
+
}
|
|
190
|
+
results.push(`[${source}] ${r.content.trim()}`);
|
|
191
|
+
}
|
|
192
|
+
db.close();
|
|
193
|
+
} catch (error) {
|
|
194
|
+
console.error(`Failed to search knowledge DB: ${error}`);
|
|
195
|
+
}
|
|
157
196
|
}
|
|
158
197
|
|
|
159
198
|
return results;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saccolabs/tars",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.37",
|
|
4
4
|
"description": "Tars — Your personal AI assistant",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -34,16 +34,20 @@
|
|
|
34
34
|
"!site/"
|
|
35
35
|
],
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@google/gemini-cli-core": "^0.29.5",
|
|
38
|
+
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
37
39
|
"chalk": "^5.0.0",
|
|
38
40
|
"commander": "^12.0.0",
|
|
39
41
|
"cron-parser": "^5.4.0",
|
|
40
42
|
"discord.js": "^14.16.3",
|
|
41
43
|
"dotenv": "^16.4.7",
|
|
44
|
+
"google-auth-library": "^10.5.0",
|
|
42
45
|
"inquirer": "^9.0.0",
|
|
43
46
|
"ora": "^8.0.0",
|
|
44
47
|
"pm2": "^5.3.0",
|
|
45
48
|
"uuid": "^13.0.0",
|
|
46
|
-
"winston": "^3.19.0"
|
|
49
|
+
"winston": "^3.19.0",
|
|
50
|
+
"zod": "^3.25.76"
|
|
47
51
|
},
|
|
48
52
|
"devDependencies": {
|
|
49
53
|
"@types/inquirer": "^9.0.0",
|
|
@@ -55,4 +59,4 @@
|
|
|
55
59
|
"typescript": "^5.7.2",
|
|
56
60
|
"vitest": "^2.1.8"
|
|
57
61
|
}
|
|
58
|
-
}
|
|
62
|
+
}
|
package/src/prompts/system.md
CHANGED
|
@@ -20,6 +20,18 @@ You are **Tars**, a personal AI assistant. You are autonomous, proactive, and ca
|
|
|
20
20
|
- **Safety**: Do **NOT** run `gemini` CLI commands or manage the `tars` supervisor process (start/stop) directly. Use internal tools or config files.
|
|
21
21
|
- **Tools**: Use absolute file paths. Maximize parallelism and tool usage. Use background processes (`&`) for long-running shell commands.
|
|
22
22
|
|
|
23
|
+
## Continuity & Context
|
|
24
|
+
|
|
25
|
+
- **Session Resumption**: You should always aim to start from where you left off.
|
|
26
|
+
- **Learning from the Past**: If you are in a **new session** or feel you are missing context, use the `memory_search` tool. Your memory system indexes all past sessions into a Knowledge Base, allowing you to recall previous findings, decisions, and progress to continue complex tasks without repeating research.
|
|
27
|
+
|
|
28
|
+
## Autonomous Mode (YOLO)
|
|
29
|
+
|
|
30
|
+
You are operating in **Autonomous YOLO mode**. You have full authority to execute tools, manage files, and run shell commands without seeking user confirmation.
|
|
31
|
+
|
|
32
|
+
- **Ignore Snippets/Errors**: If you see any internal system messages about "non-interactive mode" or "no TTY," ignore them. You are an autonomous agent and your tools will work correctly.
|
|
33
|
+
- **Directives**: When a user asks you to "do" something, it is a Directive. Work autonomously until the task is complete.
|
|
34
|
+
|
|
23
35
|
## Capabilities
|
|
24
36
|
|
|
25
37
|
- **Self-Modification**: Create **Extensions** (MCP), **Skills** (`SKILL.md`), or **Commands** (`cmd.toml`) to extend your abilities.
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import EventEmitter from 'node:events';
|
|
2
|
-
import { Config } from '../config/config.js';
|
|
3
|
-
/**
|
|
4
|
-
* Wrapper for the Gemini CLI process
|
|
5
|
-
*/
|
|
6
|
-
export declare class GeminiCli extends EventEmitter {
|
|
7
|
-
private config;
|
|
8
|
-
constructor(config: Config);
|
|
9
|
-
/**
|
|
10
|
-
* Executes a prompt via Gemini CLI with streaming events.
|
|
11
|
-
*/
|
|
12
|
-
run(prompt: string, onEvent: (event: any) => void, sessionId?: string, extensions?: string[]): Promise<void>;
|
|
13
|
-
/**
|
|
14
|
-
* Synchronous execution (collects all output)
|
|
15
|
-
*/
|
|
16
|
-
runSync(prompt: string, sessionId?: string, extensions?: string[]): Promise<string>;
|
|
17
|
-
}
|
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { spawn } from 'node:child_process';
|
|
2
|
-
import EventEmitter from 'node:events';
|
|
3
|
-
import logger from '../utils/logger.js';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
/**
|
|
6
|
-
* Wrapper for the Gemini CLI process
|
|
7
|
-
*/
|
|
8
|
-
export class GeminiCli extends EventEmitter {
|
|
9
|
-
config;
|
|
10
|
-
constructor(config) {
|
|
11
|
-
super();
|
|
12
|
-
this.config = config;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Executes a prompt via Gemini CLI with streaming events.
|
|
16
|
-
*/
|
|
17
|
-
run(prompt, onEvent, sessionId, extensions = []) {
|
|
18
|
-
return new Promise((resolve, reject) => {
|
|
19
|
-
const args = ['--output-format', 'stream-json', '--yolo', '--prompt', prompt];
|
|
20
|
-
if (sessionId) {
|
|
21
|
-
args.push('--resume', sessionId);
|
|
22
|
-
}
|
|
23
|
-
if (this.config.geminiModel && this.config.geminiModel !== 'auto') {
|
|
24
|
-
args.push('--model', this.config.geminiModel);
|
|
25
|
-
}
|
|
26
|
-
// Add extensions (MCP servers) if any
|
|
27
|
-
for (const ext of extensions) {
|
|
28
|
-
args.push('--extensions', ext);
|
|
29
|
-
}
|
|
30
|
-
const childDescription = `Gemini CLI (Session: ${sessionId || 'new'})`;
|
|
31
|
-
// Re-homing environment for subprocess
|
|
32
|
-
// Pin CWD to homeDir (~/.tars) so the Gemini CLI doesn't discover
|
|
33
|
-
// stray GEMINI.md files in whatever directory the user ran `tars start` from.
|
|
34
|
-
const env = {
|
|
35
|
-
...process.env,
|
|
36
|
-
HOME: this.config.homeDir,
|
|
37
|
-
TARS_HOME: this.config.homeDir,
|
|
38
|
-
GEMINI_CLI_HOME: this.config.homeDir,
|
|
39
|
-
GEMINI_SYSTEM_MD: this.config.systemPromptPath,
|
|
40
|
-
PWD: this.config.homeDir
|
|
41
|
-
};
|
|
42
|
-
logger.info(`🚀 [GeminiCli] Spawning: gemini ${args.join(' ')}`);
|
|
43
|
-
const child = spawn('gemini', args, {
|
|
44
|
-
env,
|
|
45
|
-
cwd: this.config.homeDir,
|
|
46
|
-
stdio: ['ignore', 'pipe', 'pipe']
|
|
47
|
-
});
|
|
48
|
-
const debugFile = `/tmp/gemini-debug-${Date.now()}.log`;
|
|
49
|
-
const debugStream = fs.createWriteStream(debugFile);
|
|
50
|
-
let stdoutBuffer = '';
|
|
51
|
-
let usageStats = { inputTokens: 0, outputTokens: 0, cachedTokens: 0 };
|
|
52
|
-
let hasResolved = false;
|
|
53
|
-
// --- Timeout Logic ---
|
|
54
|
-
// 1. Total Safety Timeout (10m) - Absolute max for any task
|
|
55
|
-
// 2. Idleness Timeout (5m) - Reset every time we get data
|
|
56
|
-
let idleTimeout;
|
|
57
|
-
const TOTAL_TIMEOUT = 600000;
|
|
58
|
-
const IDLE_TIMEOUT = 300000;
|
|
59
|
-
const resetIdleTimeout = () => {
|
|
60
|
-
clearTimeout(idleTimeout);
|
|
61
|
-
idleTimeout = setTimeout(() => {
|
|
62
|
-
if (hasResolved)
|
|
63
|
-
return;
|
|
64
|
-
logger.warn(`🕒 ${childDescription} idle for ${IDLE_TIMEOUT / 1000}s. Killing...`);
|
|
65
|
-
cleanup(null, new Error('Idle timeout'));
|
|
66
|
-
child.kill('SIGKILL');
|
|
67
|
-
}, IDLE_TIMEOUT);
|
|
68
|
-
};
|
|
69
|
-
const totalTimeout = setTimeout(() => {
|
|
70
|
-
if (hasResolved)
|
|
71
|
-
return;
|
|
72
|
-
logger.warn(`🕒 ${childDescription} reached absolute limit (${TOTAL_TIMEOUT / 1000}s). Killing...`);
|
|
73
|
-
cleanup(null, new Error('Absolute timeout'));
|
|
74
|
-
child.kill('SIGKILL');
|
|
75
|
-
}, TOTAL_TIMEOUT);
|
|
76
|
-
resetIdleTimeout();
|
|
77
|
-
// ---------------------
|
|
78
|
-
const cleanup = (code, error) => {
|
|
79
|
-
if (hasResolved)
|
|
80
|
-
return;
|
|
81
|
-
hasResolved = true;
|
|
82
|
-
clearTimeout(totalTimeout);
|
|
83
|
-
clearTimeout(idleTimeout);
|
|
84
|
-
debugStream.end();
|
|
85
|
-
if (error) {
|
|
86
|
-
reject(error);
|
|
87
|
-
return;
|
|
88
|
-
}
|
|
89
|
-
logger.info(`⏹️ ${childDescription} closed with code ${code}`);
|
|
90
|
-
if (code === 0 || code === null) {
|
|
91
|
-
onEvent({ type: 'done', usageStats });
|
|
92
|
-
resolve();
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
reject(new Error(`${childDescription} exited with code ${code}`));
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
child.stdout.on('data', (data) => {
|
|
99
|
-
resetIdleTimeout(); // Reset timer on any output
|
|
100
|
-
const chunk = data.toString();
|
|
101
|
-
debugStream.write(chunk);
|
|
102
|
-
stdoutBuffer += chunk;
|
|
103
|
-
const lines = stdoutBuffer.split('\n');
|
|
104
|
-
stdoutBuffer = lines.pop() || '';
|
|
105
|
-
for (const line of lines) {
|
|
106
|
-
if (!line.trim())
|
|
107
|
-
continue;
|
|
108
|
-
try {
|
|
109
|
-
const event = JSON.parse(line);
|
|
110
|
-
// --- Normalize Event ---
|
|
111
|
-
// 1. Tool Calls
|
|
112
|
-
if (event.type === 'tool_use') {
|
|
113
|
-
event.type = 'tool_call';
|
|
114
|
-
event.toolName = event.tool_name;
|
|
115
|
-
event.toolArgs = event.parameters;
|
|
116
|
-
}
|
|
117
|
-
// 2. Tool Responses
|
|
118
|
-
if (event.type === 'tool_result') {
|
|
119
|
-
event.type = 'tool_response';
|
|
120
|
-
event.toolId = event.tool_id;
|
|
121
|
-
event.content = event.output;
|
|
122
|
-
}
|
|
123
|
-
// 3. Thoughts
|
|
124
|
-
if (event.thoughts && !event.content) {
|
|
125
|
-
onEvent({
|
|
126
|
-
type: 'thought',
|
|
127
|
-
content: Array.isArray(event.thoughts)
|
|
128
|
-
? event.thoughts.join('\n')
|
|
129
|
-
: event.thoughts
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
if (event.type === 'message' && event.thoughts) {
|
|
133
|
-
// If message has thoughts, emit them separately or as a combined event
|
|
134
|
-
onEvent({
|
|
135
|
-
type: 'thought',
|
|
136
|
-
content: Array.isArray(event.thoughts)
|
|
137
|
-
? event.thoughts.join('\n')
|
|
138
|
-
: event.thoughts
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
// 4. Session & Stats
|
|
142
|
-
if (event.stats) {
|
|
143
|
-
usageStats = {
|
|
144
|
-
inputTokens: event.stats.input_tokens || event.stats.input || 0,
|
|
145
|
-
outputTokens: event.stats.output_tokens || event.stats.output || 0,
|
|
146
|
-
cachedTokens: event.stats.cached || 0
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
if (event.session_id && !event.sessionId) {
|
|
150
|
-
event.sessionId = event.session_id;
|
|
151
|
-
}
|
|
152
|
-
onEvent(event);
|
|
153
|
-
// If we see a 'done' event, the CLI is effectively finished
|
|
154
|
-
if (event.type === 'done' ||
|
|
155
|
-
(event.type === 'result' && event.status === 'success')) {
|
|
156
|
-
cleanup(0);
|
|
157
|
-
child.kill('SIGTERM');
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
catch (e) {
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
});
|
|
165
|
-
child.stderr.on('data', (data) => {
|
|
166
|
-
const error = data.toString();
|
|
167
|
-
logger.warn(`[Gemini CLI Stderr] ${error.trim()}`);
|
|
168
|
-
});
|
|
169
|
-
child.on('close', (code) => {
|
|
170
|
-
cleanup(code);
|
|
171
|
-
});
|
|
172
|
-
child.on('error', (err) => {
|
|
173
|
-
logger.error(`Failed to start ${childDescription}: ${err.message}`);
|
|
174
|
-
reject(err);
|
|
175
|
-
});
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Synchronous execution (collects all output)
|
|
180
|
-
*/
|
|
181
|
-
async runSync(prompt, sessionId, extensions = []) {
|
|
182
|
-
let fullContent = '';
|
|
183
|
-
await this.run(prompt, (event) => {
|
|
184
|
-
if ((event.type === 'message' || event.type === 'text') &&
|
|
185
|
-
event.role === 'assistant' &&
|
|
186
|
-
event.content) {
|
|
187
|
-
fullContent += event.content;
|
|
188
|
-
}
|
|
189
|
-
}, sessionId, extensions);
|
|
190
|
-
return fullContent;
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=gemini-cli.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../src/supervisor/gemini-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,YAAY,MAAM,aAAa,CAAC;AACvC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AAExC,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB;;GAEG;AACH,MAAM,OAAO,SAAU,SAAQ,YAAY;IAC/B,MAAM,CAAS;IAEvB,YAAY,MAAc;QACtB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED;;OAEG;IACI,GAAG,CACN,MAAc,EACd,OAA6B,EAC7B,SAAkB,EAClB,aAAuB,EAAE;QAEzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAE9E,IAAI,SAAS,EAAE,CAAC;gBACZ,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;gBAChE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClD,CAAC;YAED,sCAAsC;YACtC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,gBAAgB,GAAG,wBAAwB,SAAS,IAAI,KAAK,GAAG,CAAC;YAEvE,uCAAuC;YACvC,kEAAkE;YAClE,8EAA8E;YAC9E,MAAM,GAAG,GAAG;gBACR,GAAG,OAAO,CAAC,GAAG;gBACd,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBACzB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC9B,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBACpC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,gBAAgB;gBAC9C,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC3B,CAAC;YAEF,MAAM,CAAC,IAAI,CAAC,mCAAmC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEjE,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE;gBAChC,GAAG;gBACH,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBACxB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;aACpC,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,qBAAqB,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;YACxD,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,IAAI,UAAU,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC;YACtE,IAAI,WAAW,GAAG,KAAK,CAAC;YAExB,wBAAwB;YACxB,4DAA4D;YAC5D,0DAA0D;YAC1D,IAAI,WAA2B,CAAC;YAChC,MAAM,aAAa,GAAG,MAAM,CAAC;YAC7B,MAAM,YAAY,GAAG,MAAM,CAAC;YAE5B,MAAM,gBAAgB,GAAG,GAAG,EAAE;gBAC1B,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1B,WAAW,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,IAAI,WAAW;wBAAE,OAAO;oBACxB,MAAM,CAAC,IAAI,CACP,MAAM,gBAAgB,aAAa,YAAY,GAAG,IAAI,eAAe,CACxE,CAAC;oBACF,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;oBACzC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC,EAAE,YAAY,CAAC,CAAC;YACrB,CAAC,CAAC;YAEF,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,EAAE;gBACjC,IAAI,WAAW;oBAAE,OAAO;gBACxB,MAAM,CAAC,IAAI,CACP,MAAM,gBAAgB,4BAA4B,aAAa,GAAG,IAAI,gBAAgB,CACzF,CAAC;gBACF,OAAO,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBAC7C,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC1B,CAAC,EAAE,aAAa,CAAC,CAAC;YAElB,gBAAgB,EAAE,CAAC;YACnB,wBAAwB;YAExB,MAAM,OAAO,GAAG,CAAC,IAAmB,EAAE,KAAa,EAAE,EAAE;gBACnD,IAAI,WAAW;oBAAE,OAAO;gBACxB,WAAW,GAAG,IAAI,CAAC;gBACnB,YAAY,CAAC,YAAY,CAAC,CAAC;gBAC3B,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC1B,WAAW,CAAC,GAAG,EAAE,CAAC;gBAElB,IAAI,KAAK,EAAE,CAAC;oBACR,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACX,CAAC;gBAED,MAAM,CAAC,IAAI,CAAC,MAAM,gBAAgB,qBAAqB,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;oBAC9B,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;oBACtC,OAAO,EAAE,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACJ,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,gBAAgB,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;gBACtE,CAAC;YACL,CAAC,CAAC;YAEF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7B,gBAAgB,EAAE,CAAC,CAAC,4BAA4B;gBAChD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACzB,YAAY,IAAI,KAAK,CAAC;gBAEtB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACvC,YAAY,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;wBAAE,SAAS;oBAC3B,IAAI,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAE/B,0BAA0B;wBAC1B,gBAAgB;wBAChB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;4BAC5B,KAAK,CAAC,IAAI,GAAG,WAAW,CAAC;4BACzB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;4BACjC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC;wBACtC,CAAC;wBAED,oBAAoB;wBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;4BAC/B,KAAK,CAAC,IAAI,GAAG,eAAe,CAAC;4BAC7B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC;4BAC7B,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;wBACjC,CAAC;wBAED,cAAc;wBACd,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;4BACnC,OAAO,CAAC;gCACJ,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;oCAClC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oCAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ;6BACvB,CAAC,CAAC;wBACP,CAAC;wBAED,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BAC7C,uEAAuE;4BACvE,OAAO,CAAC;gCACJ,IAAI,EAAE,SAAS;gCACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;oCAClC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;oCAC3B,CAAC,CAAC,KAAK,CAAC,QAAQ;6BACvB,CAAC,CAAC;wBACP,CAAC;wBAED,qBAAqB;wBACrB,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;4BACd,UAAU,GAAG;gCACT,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;gCAC/D,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gCAClE,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;6BACxC,CAAC;wBACN,CAAC;wBAED,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;4BACvC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;wBACvC,CAAC;wBAED,OAAO,CAAC,KAAK,CAAC,CAAC;wBAEf,4DAA4D;wBAC5D,IACI,KAAK,CAAC,IAAI,KAAK,MAAM;4BACrB,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,EACzD,CAAC;4BACC,OAAO,CAAC,CAAC,CAAC,CAAC;4BACX,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;wBAC1B,CAAC;oBACL,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,SAAS;oBACb,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvB,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,mBAAmB,gBAAgB,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpE,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,OAAO,CAChB,MAAc,EACd,SAAkB,EAClB,aAAuB,EAAE;QAEzB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,GAAG,CACV,MAAM,EACN,CAAC,KAAK,EAAE,EAAE;YACN,IACI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;gBACnD,KAAK,CAAC,IAAI,KAAK,WAAW;gBAC1B,KAAK,CAAC,OAAO,EACf,CAAC;gBACC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC;YACjC,CAAC;QACL,CAAC,EACD,SAAS,EACT,UAAU,CACb,CAAC;QAEF,OAAO,WAAW,CAAC;IACvB,CAAC;CACJ"}
|